* Get field values for a cron part
(field: string, min: number, max: number)
| 128 | * Get field values for a cron part |
| 129 | */ |
| 130 | function getFieldValues(field: string, min: number, max: number): number[] { |
| 131 | if (field === '*') { |
| 132 | return Array.from({ length: max - min + 1 }, (_, i) => min + i); |
| 133 | } |
| 134 | |
| 135 | if (field.includes('/')) { |
| 136 | const [range, step] = field.split('/'); |
| 137 | const stepNum = parseInt(step); |
| 138 | const start = range === '*' ? min : parseInt(range); |
| 139 | const values: number[] = []; |
| 140 | for (let i = start; i <= max; i += stepNum) { |
| 141 | values.push(i); |
| 142 | } |
| 143 | return values; |
| 144 | } |
| 145 | |
| 146 | if (field.includes('-')) { |
| 147 | const [start, end] = field.split('-').map(Number); |
| 148 | return Array.from({ length: end - start + 1 }, (_, i) => start + i); |
| 149 | } |
| 150 | |
| 151 | if (field.includes(',')) { |
| 152 | return field.split(',').map(Number); |
| 153 | } |
| 154 | |
| 155 | return [parseInt(field)]; |
| 156 | } |
| 157 | |
| 158 | /** |
| 159 | * Check if a date matches the cron expression |