croner 4.0.76 → 4.0.77
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +44 -22
- package/dist/croner.cjs +75 -79
- package/dist/croner.min.js +1 -1
- package/dist/croner.min.js.map +1 -1
- package/dist/croner.min.mjs +1 -1
- package/dist/croner.min.mjs.map +1 -1
- package/package.json +1 -1
- package/src/croner.js +42 -44
- package/src/date.js +32 -33
- package/src/pattern.js +3 -4
- package/types/croner.d.ts +7 -0
package/README.md
CHANGED
|
@@ -1,36 +1,37 @@
|
|
|
1
1
|
<p align="center">
|
|
2
|
-
<img src="
|
|
3
|
-
Trigger functions in
|
|
2
|
+
<img src="/croner.png" alt="Croner" width="150" height="150"><br>
|
|
3
|
+
Trigger functions in JavaScript using Cron syntax.<br><br>Try it live on <a href="https://jsfiddle.net/hexag0n/hoa8kwsb/">jsfiddle</a>.<br>
|
|
4
4
|
</p>
|
|
5
5
|
|
|
6
6
|
# Croner
|
|
7
7
|
|
|
8
8
|
 [](https://badge.fury.io/js/croner) [](https://www.codacy.com/gh/Hexagon/croner/dashboard?utm_source=github.com&utm_medium=referral&utm_content=Hexagon/croner&utm_campaign=Badge_Grade)
|
|
9
9
|
[](https://github.com/Hexagon/croner/blob/master/LICENSE) [](https://www.jsdelivr.com/package/gh/hexagon/croner)
|
|
10
|
+
[](https://discord.gg/VgpuJ48K8K)
|
|
10
11
|
|
|
11
|
-
* Trigger functions in JavaScript using [Cron](https://en.wikipedia.org/wiki/Cron#CRON_expression) syntax
|
|
12
|
-
* Pause, resume or stop execution
|
|
12
|
+
* Trigger functions in JavaScript using [Cron](https://en.wikipedia.org/wiki/Cron#CRON_expression) syntax.
|
|
13
|
+
* Pause, resume or stop execution after a task is scheduled.
|
|
13
14
|
* Find first date of next month, find date of next tuesday, etc.
|
|
14
|
-
* Works in Node.js >=4.0 (both require and import)
|
|
15
|
-
* Works in Deno >=1.16
|
|
15
|
+
* Works in Node.js >=4.0 (both require and import).
|
|
16
|
+
* Works in Deno >=1.16.
|
|
16
17
|
* Works in browsers as standalone, UMD or ES-module.
|
|
17
|
-
* **Experimental feature:** Schedule in specific target timezones
|
|
18
|
-
* Includes [TypeScript](https://www.typescriptlang.org/) typings
|
|
18
|
+
* **Experimental feature:** Schedule in specific target timezones.
|
|
19
|
+
* Includes [TypeScript](https://www.typescriptlang.org/) typings.
|
|
19
20
|
|
|
20
21
|
Quick examples:
|
|
21
22
|
|
|
22
23
|
```javascript
|
|
23
|
-
// Run a function at the interval
|
|
24
|
-
|
|
24
|
+
// Run a function at the interval defined by a cron expression
|
|
25
|
+
const job = Cron('* * * * * *', () => {
|
|
25
26
|
console.log('This will run every second');
|
|
26
27
|
});
|
|
27
28
|
|
|
28
29
|
// What date is next sunday?
|
|
29
|
-
|
|
30
|
+
const nextSunday = Cron('0 0 0 * * 7').next();
|
|
30
31
|
console.log(nextSunday.toLocaleDateString());
|
|
31
32
|
|
|
32
33
|
// How many days left to christmas eve?
|
|
33
|
-
|
|
34
|
+
const msLeft = Cron('59 59 23 24 DEC *').next() - new Date();
|
|
34
35
|
console.log(Math.floor(msLeft/1000/3600/24) + " days left to next christmas eve");
|
|
35
36
|
```
|
|
36
37
|
|
|
@@ -64,7 +65,6 @@ const scheduler : Cron = new Cron("* * * * * *", () => {
|
|
|
64
65
|
});
|
|
65
66
|
```
|
|
66
67
|
|
|
67
|
-
|
|
68
68
|
### Deno
|
|
69
69
|
|
|
70
70
|
JavaScript
|
|
@@ -127,16 +127,16 @@ Cron takes three arguments
|
|
|
127
127
|
* scheduled function (optional)
|
|
128
128
|
|
|
129
129
|
```javascript
|
|
130
|
-
|
|
130
|
+
const job = Cron("* * * * * *" , /*optional*/ { maxRuns: 1 } , /*optional*/ () => {} );
|
|
131
131
|
|
|
132
132
|
// If function is omitted in constructor, it can be scheduled later
|
|
133
|
-
job.schedule(() => {});
|
|
133
|
+
job.schedule((/* optional */ job, /* optional */ context) => {});
|
|
134
134
|
|
|
135
135
|
// States
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
136
|
+
const nextRun = job.next( /*optional*/ previousRun ); // Get a Date object representing next run
|
|
137
|
+
const prevRun = job.previous( );
|
|
138
|
+
const msToNext = job.msToNext( /*optional*/ previousRun ); // Milliseconds left to next execution
|
|
139
|
+
const isRunning = job.running();
|
|
140
140
|
|
|
141
141
|
// Control scheduled execution
|
|
142
142
|
job.pause();
|
|
@@ -155,6 +155,7 @@ job.stop();
|
|
|
155
155
|
| startAt | undefined | String | ISO 8601 formatted datetime (2021-10-17T23:43:00)<br>in local or specified timezone |
|
|
156
156
|
| stopAt | undefined | String | ISO 8601 formatted datetime (2021-10-17T23:43:00)<br>in local or specified timezone |
|
|
157
157
|
| paused | false | Boolean | If the job should be paused from start. |
|
|
158
|
+
| context | undefined | Any | Passed as the second parameter to triggered function |
|
|
158
159
|
|
|
159
160
|
#### Pattern
|
|
160
161
|
|
|
@@ -196,7 +197,7 @@ Cron('15-45/10 */5 1,2,3 * JAN-MAR SAT', function () {
|
|
|
196
197
|
#### Find dates
|
|
197
198
|
```javascript
|
|
198
199
|
// Find next month
|
|
199
|
-
|
|
200
|
+
const nextMonth = Cron('0 0 0 1 * *').next(),
|
|
200
201
|
nextSunday = Cron('0 0 0 * * 7').next(),
|
|
201
202
|
nextSat29feb = Cron("0 0 0 29 2 6").next();
|
|
202
203
|
|
|
@@ -208,7 +209,7 @@ console.log("Next saturday at 29th of february: " + nextSat29feb.toLocaleDateSt
|
|
|
208
209
|
#### With options
|
|
209
210
|
```javascript
|
|
210
211
|
|
|
211
|
-
|
|
212
|
+
const job = Cron(
|
|
212
213
|
'* * * * *',
|
|
213
214
|
{
|
|
214
215
|
maxRuns: Infinity,
|
|
@@ -224,7 +225,7 @@ var job = Cron(
|
|
|
224
225
|
|
|
225
226
|
#### Job controls
|
|
226
227
|
```javascript
|
|
227
|
-
|
|
228
|
+
const job = Cron('* * * * * *', (self) => {
|
|
228
229
|
console.log('This will run every second. Pause on second 10. Resume on second 15. And quit on second 20.');
|
|
229
230
|
console.log('Current second: ', new Date().getSeconds());
|
|
230
231
|
console.log('Previous run: ' + self.previous());
|
|
@@ -236,6 +237,27 @@ Cron('15 * * * * *', {maxRuns: 1}, () => job.resume());
|
|
|
236
237
|
Cron('20 * * * * *', {maxRuns: 1}, () => job.stop());
|
|
237
238
|
```
|
|
238
239
|
|
|
240
|
+
#### Passing a context
|
|
241
|
+
```javascript
|
|
242
|
+
const data = {
|
|
243
|
+
what: "stuff"
|
|
244
|
+
};
|
|
245
|
+
|
|
246
|
+
Cron('* * * * * *', { context: data }, (_self, context) => {
|
|
247
|
+
console.log('This will print stuff: ' + context.what);
|
|
248
|
+
});
|
|
249
|
+
|
|
250
|
+
Cron('*/5 * * * * *', { context: data }, (self, context) => {
|
|
251
|
+
console.log('After this, other stuff will be printed instead');
|
|
252
|
+
context.what = "other stuff";
|
|
253
|
+
self.stop();
|
|
254
|
+
});
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
## Contributing
|
|
258
|
+
|
|
259
|
+
See [Contribution Guide](/CONTRIBUTING.md)
|
|
260
|
+
|
|
239
261
|
## License
|
|
240
262
|
|
|
241
263
|
MIT
|
package/dist/croner.cjs
CHANGED
|
@@ -94,7 +94,7 @@
|
|
|
94
94
|
* @param {Date} date - Input date
|
|
95
95
|
*/
|
|
96
96
|
CronDate.prototype.apply = function () {
|
|
97
|
-
|
|
97
|
+
const newDate = new Date(this.years, this.months, this.days, this.hours, this.minutes, this.seconds, this.milliseconds);
|
|
98
98
|
|
|
99
99
|
this.milliseconds = newDate.getMilliseconds();
|
|
100
100
|
this.seconds = newDate.getSeconds();
|
|
@@ -113,7 +113,7 @@
|
|
|
113
113
|
*/
|
|
114
114
|
CronDate.prototype.fromString = function (str) {
|
|
115
115
|
|
|
116
|
-
|
|
116
|
+
const parsedDate = this.parseISOLocal(str);
|
|
117
117
|
|
|
118
118
|
// Throw if we did get an invalid date
|
|
119
119
|
if( isNaN(parsedDate) ) {
|
|
@@ -139,9 +139,8 @@
|
|
|
139
139
|
|
|
140
140
|
this.milliseconds = 0;
|
|
141
141
|
|
|
142
|
-
|
|
143
|
-
origTime =
|
|
144
|
-
|
|
142
|
+
const
|
|
143
|
+
origTime = this.getTime(),
|
|
145
144
|
|
|
146
145
|
/**
|
|
147
146
|
* Find next
|
|
@@ -154,14 +153,14 @@
|
|
|
154
153
|
* @returns {boolean}
|
|
155
154
|
*
|
|
156
155
|
*/
|
|
157
|
-
findNext =
|
|
156
|
+
findNext = (target, pattern, offset, override) => {
|
|
158
157
|
|
|
159
|
-
|
|
158
|
+
const startPos = (override === void 0) ? this[target] + offset : 0 + offset;
|
|
160
159
|
|
|
161
160
|
for( let i = startPos; i < pattern[target].length; i++ ) {
|
|
162
161
|
|
|
163
162
|
if( pattern[target][i] ) {
|
|
164
|
-
|
|
163
|
+
this[target] = i-offset;
|
|
165
164
|
return true;
|
|
166
165
|
}
|
|
167
166
|
}
|
|
@@ -169,7 +168,7 @@
|
|
|
169
168
|
|
|
170
169
|
},
|
|
171
170
|
|
|
172
|
-
resetPrevious =
|
|
171
|
+
resetPrevious = () => {
|
|
173
172
|
// Now when we have gone to next minute, we have to set seconds to the first match
|
|
174
173
|
// Now we are at 00:01:05 following the same example.
|
|
175
174
|
//
|
|
@@ -195,17 +194,17 @@
|
|
|
195
194
|
// Third item is an offset. if months is handled 0-11 in js date object, and we get 1-12
|
|
196
195
|
// from pattern. Offset should be -1
|
|
197
196
|
// ]
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
doing = 0;
|
|
197
|
+
const toDo = [
|
|
198
|
+
["seconds", "minutes", 0],
|
|
199
|
+
["minutes", "hours", 0],
|
|
200
|
+
["hours", "days", 0],
|
|
201
|
+
["days", "months", -1],
|
|
202
|
+
["months", "years", 0]
|
|
203
|
+
];
|
|
206
204
|
|
|
207
205
|
// Ok, we're working our way trough the toDo array, top to bottom
|
|
208
206
|
// If we reach 5, work is done
|
|
207
|
+
let doing = 0;
|
|
209
208
|
while(doing < 5) {
|
|
210
209
|
|
|
211
210
|
// findNext sets the current member to next match in pattern
|
|
@@ -236,9 +235,9 @@
|
|
|
236
235
|
}
|
|
237
236
|
|
|
238
237
|
// If anything changed, recreate this CronDate and run again without incrementing
|
|
239
|
-
if (origTime !=
|
|
240
|
-
|
|
241
|
-
return
|
|
238
|
+
if (origTime != this.getTime()) {
|
|
239
|
+
this.apply();
|
|
240
|
+
return this.increment(pattern, true);
|
|
242
241
|
} else {
|
|
243
242
|
return this;
|
|
244
243
|
}
|
|
@@ -253,11 +252,11 @@
|
|
|
253
252
|
* @returns {Date}
|
|
254
253
|
*/
|
|
255
254
|
CronDate.prototype.getDate = function (internal) {
|
|
256
|
-
|
|
255
|
+
const targetDate = new Date(this.years, this.months, this.days, this.hours, this.minutes, this.seconds, this.milliseconds);
|
|
257
256
|
if (internal || !this.timezone) {
|
|
258
257
|
return targetDate;
|
|
259
258
|
} else {
|
|
260
|
-
|
|
259
|
+
const offset = convertTZ(targetDate, this.timezone).getTime()-targetDate.getTime();
|
|
261
260
|
return new Date(targetDate.getTime()-offset);
|
|
262
261
|
}
|
|
263
262
|
};
|
|
@@ -277,25 +276,25 @@
|
|
|
277
276
|
* Takes a iso 8001 local date time string and creates a Date object
|
|
278
277
|
* @private
|
|
279
278
|
*
|
|
280
|
-
* @param {string}
|
|
279
|
+
* @param {string} dateTimeString - an ISO 8001 format date and time string
|
|
281
280
|
* with all components, e.g. 2015-11-24T19:40:00
|
|
282
281
|
* @returns {Date|number} - Date instance from parsing the string. May be NaN.
|
|
283
282
|
*/
|
|
284
|
-
CronDate.prototype.parseISOLocal = function (
|
|
285
|
-
|
|
283
|
+
CronDate.prototype.parseISOLocal = function (dateTimeString) {
|
|
284
|
+
const dateTimeStringSplit = dateTimeString.split(/\D/);
|
|
286
285
|
|
|
287
286
|
// Check for completeness
|
|
288
|
-
if (
|
|
287
|
+
if (dateTimeStringSplit.length < 6) {
|
|
289
288
|
return NaN;
|
|
290
289
|
}
|
|
291
290
|
|
|
292
|
-
|
|
293
|
-
year = parseInt(
|
|
294
|
-
month = parseInt(
|
|
295
|
-
day = parseInt(
|
|
296
|
-
hour = parseInt(
|
|
297
|
-
minute = parseInt(
|
|
298
|
-
second = parseInt(
|
|
291
|
+
const
|
|
292
|
+
year = parseInt(dateTimeStringSplit[0], 10),
|
|
293
|
+
month = parseInt(dateTimeStringSplit[1], 10),
|
|
294
|
+
day = parseInt(dateTimeStringSplit[2], 10),
|
|
295
|
+
hour = parseInt(dateTimeStringSplit[3], 10),
|
|
296
|
+
minute = parseInt(dateTimeStringSplit[4], 10),
|
|
297
|
+
second = parseInt(dateTimeStringSplit[5], 10);
|
|
299
298
|
|
|
300
299
|
// Check parts for numeric
|
|
301
300
|
if( isNaN(year) || isNaN(month) || isNaN(day) || isNaN(hour) || isNaN(minute) || isNaN(second) ) {
|
|
@@ -351,7 +350,7 @@
|
|
|
351
350
|
}
|
|
352
351
|
|
|
353
352
|
// Split configuration on whitespace
|
|
354
|
-
|
|
353
|
+
const parts = this.pattern.trim().replace(/\s+/g, " ").split(" ");
|
|
355
354
|
|
|
356
355
|
// Validite number of configuration entries
|
|
357
356
|
if( parts.length < 5 || parts.length > 6 ) {
|
|
@@ -363,7 +362,6 @@
|
|
|
363
362
|
parts.unshift("0");
|
|
364
363
|
}
|
|
365
364
|
|
|
366
|
-
|
|
367
365
|
// Replace alpha representations
|
|
368
366
|
parts[4] = this.replaceAlphaMonths(parts[4]);
|
|
369
367
|
parts[5] = this.replaceAlphaDays(parts[5]);
|
|
@@ -462,7 +460,7 @@
|
|
|
462
460
|
* @param {number} valueIndexOffset - -1 for day of month, and month, as they start at 1. 0 for seconds, hours, minutes
|
|
463
461
|
*/
|
|
464
462
|
CronPattern.prototype.handleNumber = function (conf, type, valueIndexOffset) {
|
|
465
|
-
|
|
463
|
+
const i = (parseInt(conf, 10) + valueIndexOffset);
|
|
466
464
|
|
|
467
465
|
if( i < 0 || i >= this[type].length ) {
|
|
468
466
|
throw new TypeError("CronPattern: " + type + " value out of range: '" + conf + "'");
|
|
@@ -480,7 +478,7 @@
|
|
|
480
478
|
* @param {number} valueIndexOffset - -1 for day of month, and month, as they start at 1. 0 for seconds, hours, minutes
|
|
481
479
|
*/
|
|
482
480
|
CronPattern.prototype.handleRangeWithStepping = function (conf, type, valueIndexOffset) {
|
|
483
|
-
|
|
481
|
+
const matches = conf.match(/^(\d+)-(\d+)\/(\d+)$/);
|
|
484
482
|
|
|
485
483
|
if( matches === null ) throw new TypeError("CronPattern: Syntax error, illegal range with stepping: '" + conf + "'");
|
|
486
484
|
|
|
@@ -658,6 +656,7 @@
|
|
|
658
656
|
* @property {string | Date} [startAt] - When to start running
|
|
659
657
|
* @property {string | Date} [stopAt] - When to stop running
|
|
660
658
|
* @property {string} [timezone] - Time zone in Europe/Stockholm format
|
|
659
|
+
* @property {?} [context] - Used to pass any object to scheduled function
|
|
661
660
|
*/
|
|
662
661
|
|
|
663
662
|
/**
|
|
@@ -682,15 +681,14 @@
|
|
|
682
681
|
* @returns {Cron}
|
|
683
682
|
*/
|
|
684
683
|
function Cron (pattern, options, func) {
|
|
685
|
-
|
|
686
|
-
|
|
684
|
+
|
|
687
685
|
// Optional "new" keyword
|
|
688
686
|
if( !(this instanceof Cron) ) {
|
|
689
687
|
return new Cron(pattern, options, func);
|
|
690
688
|
}
|
|
691
689
|
|
|
692
690
|
/** @type {CronPattern} */
|
|
693
|
-
|
|
691
|
+
this.pattern = new CronPattern(pattern);
|
|
694
692
|
|
|
695
693
|
// Make options optional
|
|
696
694
|
if( typeof options === "function" ) {
|
|
@@ -752,7 +750,7 @@
|
|
|
752
750
|
*/
|
|
753
751
|
Cron.prototype.next = function (prev) {
|
|
754
752
|
prev = new CronDate(prev, this.options.timezone);
|
|
755
|
-
|
|
753
|
+
const next = this._next(prev);
|
|
756
754
|
return next ? next.getDate() : null;
|
|
757
755
|
};
|
|
758
756
|
|
|
@@ -763,8 +761,8 @@
|
|
|
763
761
|
* @returns {boolean} - Running or not
|
|
764
762
|
*/
|
|
765
763
|
Cron.prototype.running = function () {
|
|
766
|
-
|
|
767
|
-
|
|
764
|
+
const msLeft = this.msToNext(this.previousrun);
|
|
765
|
+
const running = !this.options.paused && this.fn !== void 0;
|
|
768
766
|
return msLeft !== null && running;
|
|
769
767
|
};
|
|
770
768
|
|
|
@@ -793,7 +791,7 @@
|
|
|
793
791
|
}
|
|
794
792
|
|
|
795
793
|
// Calculate next run
|
|
796
|
-
|
|
794
|
+
const nextRun = new CronDate(prev, this.options.timezone).increment(this.pattern);
|
|
797
795
|
|
|
798
796
|
if ((nextRun === null) ||
|
|
799
797
|
(this.options.maxRuns <= 0) ||
|
|
@@ -816,7 +814,7 @@
|
|
|
816
814
|
*/
|
|
817
815
|
Cron.prototype.msToNext = function (prev) {
|
|
818
816
|
prev = new CronDate(prev, this.options.timezone);
|
|
819
|
-
|
|
817
|
+
const next = this._next(prev);
|
|
820
818
|
if( next ) {
|
|
821
819
|
return (next.getTime(true) - prev.getTime(true));
|
|
822
820
|
} else {
|
|
@@ -865,55 +863,53 @@
|
|
|
865
863
|
*/
|
|
866
864
|
Cron.prototype.schedule = function (func) {
|
|
867
865
|
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
866
|
+
// Update function if passed
|
|
867
|
+
if (func) {
|
|
868
|
+
this.fn = func;
|
|
869
|
+
}
|
|
872
870
|
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
871
|
+
// Get ms to next run, bail out early if waitMs is null (no next run)
|
|
872
|
+
let waitMs = this.msToNext(this.previousrun);
|
|
873
|
+
if ( waitMs === null ) return this;
|
|
874
|
+
|
|
875
|
+
// Prioritize context before closure,
|
|
876
|
+
// to allow testing of maximum delay.
|
|
877
|
+
const _maxDelay = this.maxDelay || maxDelay;
|
|
876
878
|
|
|
877
879
|
// setTimeout cant handle more than Math.pow(2, 32 - 1) - 1 ms
|
|
878
880
|
if( waitMs > _maxDelay ) {
|
|
879
881
|
waitMs = _maxDelay;
|
|
880
882
|
}
|
|
881
883
|
|
|
882
|
-
//
|
|
883
|
-
|
|
884
|
-
self.fn = func;
|
|
885
|
-
}
|
|
886
|
-
|
|
887
|
-
// All ok, go go!
|
|
888
|
-
if ( waitMs !== null ) {
|
|
889
|
-
self.currentTimeout = setTimeout(function () {
|
|
884
|
+
// Ok, go!
|
|
885
|
+
const go = () => {
|
|
890
886
|
|
|
891
|
-
|
|
892
|
-
if( waitMs !== _maxDelay ) {
|
|
887
|
+
if( waitMs !== _maxDelay && !this.options.paused ) {
|
|
893
888
|
|
|
894
|
-
|
|
895
|
-
self.options.maxRuns--;
|
|
889
|
+
this.options.maxRuns--;
|
|
896
890
|
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
} else {
|
|
904
|
-
self.fn(self);
|
|
905
|
-
}
|
|
891
|
+
// Always catch errors, but only re-throw if options.catch is not set
|
|
892
|
+
if (this.options.catch) {
|
|
893
|
+
try {
|
|
894
|
+
this.fn(this, this.options.context);
|
|
895
|
+
} catch (_e) {
|
|
896
|
+
// Ignore
|
|
906
897
|
}
|
|
907
|
-
|
|
908
|
-
|
|
898
|
+
} else {
|
|
899
|
+
this.fn(this, this.options.context);
|
|
909
900
|
}
|
|
910
901
|
|
|
911
|
-
|
|
912
|
-
self.schedule();
|
|
902
|
+
this.previousrun = new CronDate(void 0, this.options.timezone);
|
|
913
903
|
|
|
914
|
-
}
|
|
915
|
-
|
|
904
|
+
}
|
|
905
|
+
|
|
906
|
+
// Recurse
|
|
907
|
+
this.schedule();
|
|
916
908
|
|
|
909
|
+
};
|
|
910
|
+
|
|
911
|
+
this.currentTimeout = setTimeout(go, waitMs );
|
|
912
|
+
|
|
917
913
|
return this;
|
|
918
914
|
|
|
919
915
|
};
|
package/dist/croner.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(global,factory){typeof exports==="object"&&typeof module!=="undefined"?module.exports=factory():typeof define==="function"&&define.amd?define(factory):(global=typeof globalThis!=="undefined"?globalThis:global||self,global.Cron=factory())})(this,function(){"use strict";function convertTZ(date,tzString){return new Date(date.toLocaleString("en-US",{timeZone:tzString}))}function CronDate(date,timezone){this.timezone=timezone;if(date&&date instanceof Date){this.fromDate(date)}else if(date===void 0){this.fromDate(new Date)}else if(date&&typeof date==="string"){this.fromString(date)}else if(date instanceof CronDate){this.fromCronDate(date)}else{throw new TypeError("CronDate: Invalid type ("+typeof date+") passed as parameter to CronDate constructor")}}CronDate.prototype.fromDate=function(date,fromLocal){if(this.timezone&&!fromLocal){date=convertTZ(date,this.timezone)}this.milliseconds=date.getMilliseconds();this.seconds=date.getSeconds();this.minutes=date.getMinutes();this.hours=date.getHours();this.days=date.getDate();this.months=date.getMonth();this.years=date.getFullYear()};CronDate.prototype.fromCronDate=function(date){this.timezone=date.timezone;this.milliseconds=date.milliseconds;this.seconds=date.seconds;this.minutes=date.minutes;this.hours=date.hours;this.days=date.days;this.months=date.months;this.years=date.years};CronDate.prototype.apply=function(){let newDate=new Date(this.years,this.months,this.days,this.hours,this.minutes,this.seconds,this.milliseconds);this.milliseconds=newDate.getMilliseconds();this.seconds=newDate.getSeconds();this.minutes=newDate.getMinutes();this.hours=newDate.getHours();this.days=newDate.getDate();this.months=newDate.getMonth();this.years=newDate.getFullYear()};CronDate.prototype.fromString=function(str){let parsedDate=this.parseISOLocal(str);if(isNaN(parsedDate)){throw new TypeError("CronDate: Provided string value for CronDate could not be parsed as date.")}this.fromDate(parsedDate,true)};CronDate.prototype.increment=function(pattern,rerun){if(!rerun){this.seconds+=1}this.milliseconds=0;let self=this,origTime=self.getTime(),findNext=function(target,pattern,offset,override){let startPos=override===void 0?self[target]+offset:0+offset;for(let i=startPos;i<pattern[target].length;i++){if(pattern[target][i]){self[target]=i-offset;return true}}return false},resetPrevious=function(){while(doing>=0){findNext(toDo[doing][0],pattern,toDo[doing][2],0);doing--}};let toDo=[["seconds","minutes",0],["minutes","hours",0],["hours","days",0],["days","months",-1],["months","years",0]],doing=0;while(doing<5){if(!findNext(toDo[doing][0],pattern,toDo[doing][2])){this[toDo[doing][1]]++;resetPrevious()}if(this.years>=4e3){return null}doing++}while(!pattern.daysOfWeek[this.getDate(true).getDay()]){this.days+=1;doing=2;resetPrevious()}if(origTime!=self.getTime()){self.apply();return self.increment(pattern,true)}else{return this}};CronDate.prototype.getDate=function(internal){let targetDate=new Date(this.years,this.months,this.days,this.hours,this.minutes,this.seconds,this.milliseconds);if(internal||!this.timezone){return targetDate}else{let offset=convertTZ(targetDate,this.timezone).getTime()-targetDate.getTime();return new Date(targetDate.getTime()-offset)}};CronDate.prototype.getTime=function(internal){return this.getDate(internal).getTime()};CronDate.prototype.parseISOLocal=function(s){let b=s.split(/\D/);if(b.length<6){return NaN}let year=parseInt(b[0],10),month=parseInt(b[1],10),day=parseInt(b[2],10),hour=parseInt(b[3],10),minute=parseInt(b[4],10),second=parseInt(b[5],10);if(isNaN(year)||isNaN(month)||isNaN(day)||isNaN(hour)||isNaN(minute)||isNaN(second)){return NaN}else{return new Date(year,month-1,day,hour,minute,second)}};function CronPattern(pattern){this.pattern=pattern;this.seconds=Array(60).fill(0);this.minutes=Array(60).fill(0);this.hours=Array(24).fill(0);this.days=Array(31).fill(0);this.months=Array(12).fill(0);this.daysOfWeek=Array(8).fill(0);this.parse()}CronPattern.prototype.parse=function(){if(!(typeof this.pattern==="string"||this.pattern.constructor===String)){throw new TypeError("CronPattern: Pattern has to be of type string.")}let parts=this.pattern.trim().replace(/\s+/g," ").split(" ");if(parts.length<5||parts.length>6){throw new TypeError("CronPattern: invalid configuration format ('"+this.pattern+"'), exacly five or six space separated parts required.")}if(parts.length===5){parts.unshift("0")}parts[4]=this.replaceAlphaMonths(parts[4]);parts[5]=this.replaceAlphaDays(parts[5]);this.throwAtIllegalCharacters(parts);this.partToArray("seconds",parts[0],0);this.partToArray("minutes",parts[1],0);this.partToArray("hours",parts[2],0);this.partToArray("days",parts[3],-1);this.partToArray("months",parts[4],-1);this.partToArray("daysOfWeek",parts[5],0);if(this.daysOfWeek[7]){this.daysOfWeek[0]=1}};CronPattern.prototype.partToArray=function(type,conf,valueIndexOffset,recursed){const arr=this[type];if(conf==="*"){for(let i=0;i<arr.length;i++){arr[i]=1}return}const split=conf.split(",");if(split.length>1){for(let i=0;i<split.length;i++){this.partToArray(type,split[i],valueIndexOffset,true)}}else if(conf.indexOf("-")!==-1&&conf.indexOf("/")!==-1){if(recursed)throw new Error("CronPattern: Range with stepping cannot coexist with ,");this.handleRangeWithStepping(conf,type,valueIndexOffset)}else if(conf.indexOf("-")!==-1){if(recursed)throw new Error("CronPattern: Range with stepping cannot coexist with ,");this.handleRange(conf,type,valueIndexOffset)}else if(conf.indexOf("/")!==-1){if(recursed)throw new Error("CronPattern: Range with stepping cannot coexist with ,");this.handleStepping(conf,type,valueIndexOffset)}else{this.handleNumber(conf,type,valueIndexOffset)}};CronPattern.prototype.throwAtIllegalCharacters=function(parts){const reValidCron=/[^/*0-9,-]+/;for(let i=0;i<parts.length;i++){if(reValidCron.test(parts[i])){throw new TypeError("CronPattern: configuration entry "+i+" ("+parts[i]+") contains illegal characters.")}}};CronPattern.prototype.handleNumber=function(conf,type,valueIndexOffset){let i=parseInt(conf,10)+valueIndexOffset;if(i<0||i>=this[type].length){throw new TypeError("CronPattern: "+type+" value out of range: '"+conf+"'")}this[type][i]=1};CronPattern.prototype.handleRangeWithStepping=function(conf,type,valueIndexOffset){let matches=conf.match(/^(\d+)-(\d+)\/(\d+)$/);if(matches===null)throw new TypeError("CronPattern: Syntax error, illegal range with stepping: '"+conf+"'");let[,lower,upper,steps]=matches;lower=parseInt(lower,10)+valueIndexOffset;upper=parseInt(upper,10)+valueIndexOffset;steps=parseInt(steps,10)+valueIndexOffset;if(isNaN(lower))throw new TypeError("CronPattern: Syntax error, illegal lower range (NaN)");if(isNaN(upper))throw new TypeError("CronPattern: Syntax error, illegal upper range (NaN)");if(isNaN(steps))throw new TypeError("CronPattern: Syntax error, illegal stepping: (NaN)");if(steps===0)throw new TypeError("CronPattern: Syntax error, illegal stepping: 0");if(steps>this[type].length)throw new TypeError("CronPattern: Syntax error, steps cannot be greater than maximum value of part ("+this[type].length+")");if(lower<0||upper>=this[type].length)throw new TypeError("CronPattern: Value out of range: '"+conf+"'");if(lower>upper)throw new TypeError("CronPattern: From value is larger than to value: '"+conf+"'");for(let i=lower;i<=upper;i+=steps){this[type][i+valueIndexOffset]=1}};CronPattern.prototype.handleRange=function(conf,type,valueIndexOffset){const split=conf.split("-");if(split.length!==2){throw new TypeError("CronPattern: Syntax error, illegal range: '"+conf+"'")}const lower=parseInt(split[0],10)+valueIndexOffset,upper=parseInt(split[1],10)+valueIndexOffset;if(isNaN(lower)){throw new TypeError("CronPattern: Syntax error, illegal lower range (NaN)")}else if(isNaN(upper)){throw new TypeError("CronPattern: Syntax error, illegal upper range (NaN)")}if(lower<0||upper>=this[type].length){throw new TypeError("CronPattern: Value out of range: '"+conf+"'")}if(lower>upper){throw new TypeError("CronPattern: From value is larger than to value: '"+conf+"'")}for(let i=lower;i<=upper;i++){this[type][i+valueIndexOffset]=1}};CronPattern.prototype.handleStepping=function(conf,type,valueIndexOffset){const split=conf.split("/");if(split.length!==2){throw new TypeError("CronPattern: Syntax error, illegal stepping: '"+conf+"'")}let start=0;if(split[0]!=="*"){start=parseInt(split[0],10)}const steps=parseInt(split[1],10);if(isNaN(steps))throw new TypeError("CronPattern: Syntax error, illegal stepping: (NaN)");if(steps===0)throw new TypeError("CronPattern: Syntax error, illegal stepping: 0");if(steps>this[type].length)throw new TypeError("CronPattern: Syntax error, steps cannot be greater than maximum value of part ("+this[type].length+")");for(let i=start;i<this[type].length;i+=steps){this[type][i+valueIndexOffset]=1}};CronPattern.prototype.replaceAlphaDays=function(conf){return conf.replace(/sun/gi,"0").replace(/mon/gi,"1").replace(/tue/gi,"2").replace(/wed/gi,"3").replace(/thu/gi,"4").replace(/fri/gi,"5").replace(/sat/gi,"6")};CronPattern.prototype.replaceAlphaMonths=function(conf){return conf.replace(/jan/gi,"1").replace(/feb/gi,"2").replace(/mar/gi,"3").replace(/apr/gi,"4").replace(/may/gi,"5").replace(/jun/gi,"6").replace(/jul/gi,"7").replace(/aug/gi,"8").replace(/sep/gi,"9").replace(/oct/gi,"10").replace(/nov/gi,"11").replace(/dec/gi,"12")};const maxDelay=Math.pow(2,32-1)-1;function Cron(pattern,options,func){let self=this;if(!(this instanceof Cron)){return new Cron(pattern,options,func)}self.pattern=new CronPattern(pattern);if(typeof options==="function"){func=options;options=void 0}this.options=this.processOptions(options);if(func!==void 0){this.fn=func;this.schedule()}return this}Cron.prototype.processOptions=function(options){if(options===void 0){options={}}options.paused=options.paused===void 0?false:options.paused;options.maxRuns=options.maxRuns===void 0?Infinity:options.maxRuns;options.catch=options.catch===void 0?false:options.catch;options.kill=false;if(options.startAt){options.startAt=new CronDate(options.startAt,options.timezone)}if(options.stopAt){options.stopAt=new CronDate(options.stopAt,options.timezone)}return options};Cron.prototype.next=function(prev){prev=new CronDate(prev,this.options.timezone);let next=this._next(prev);return next?next.getDate():null};Cron.prototype.running=function(){let msLeft=this.msToNext(this.previousrun);let running=!this.options.paused&&this.fn!==void 0;return msLeft!==null&&running};Cron.prototype.previous=function(){return this.previousrun?this.previousrun.getDate():null};Cron.prototype._next=function(prev){if(this.options.startAt&&prev&&prev.getTime(true)<this.options.startAt.getTime(true)){prev=new CronDate(this.options.startAt,this.options.timezone)}let nextRun=new CronDate(prev,this.options.timezone).increment(this.pattern);if(nextRun===null||this.options.maxRuns<=0||this.options.kill||this.options.stopAt&&nextRun.getTime(true)>=this.options.stopAt.getTime(true)){return null}else{return nextRun}};Cron.prototype.msToNext=function(prev){prev=new CronDate(prev,this.options.timezone);let next=this._next(prev);if(next){return next.getTime(true)-prev.getTime(true)}else{return null}};Cron.prototype.stop=function(){this.options.kill=true;if(this.currentTimeout){clearTimeout(this.currentTimeout)}};Cron.prototype.pause=function(){return(this.options.paused=true)&&!this.options.kill};Cron.prototype.resume=function(){return!(this.options.paused=false)&&!this.options.kill};Cron.prototype.schedule=function(func){let self=this,waitMs=this.msToNext(self.previousrun),_maxDelay=self.maxDelay||maxDelay;if(waitMs>_maxDelay){waitMs=_maxDelay}if(func){self.fn=func}if(waitMs!==null){self.currentTimeout=setTimeout(function(){if(waitMs!==_maxDelay){if(!self.options.paused){self.options.maxRuns--;if(self.options.catch){try{self.fn(self)}catch(_e){}}else{self.fn(self)}}self.previousrun=new CronDate(void 0,self.options.timezone)}self.schedule()},waitMs)}return this};return Cron});
|
|
1
|
+
(function(global,factory){typeof exports==="object"&&typeof module!=="undefined"?module.exports=factory():typeof define==="function"&&define.amd?define(factory):(global=typeof globalThis!=="undefined"?globalThis:global||self,global.Cron=factory())})(this,function(){"use strict";function convertTZ(date,tzString){return new Date(date.toLocaleString("en-US",{timeZone:tzString}))}function CronDate(date,timezone){this.timezone=timezone;if(date&&date instanceof Date){this.fromDate(date)}else if(date===void 0){this.fromDate(new Date)}else if(date&&typeof date==="string"){this.fromString(date)}else if(date instanceof CronDate){this.fromCronDate(date)}else{throw new TypeError("CronDate: Invalid type ("+typeof date+") passed as parameter to CronDate constructor")}}CronDate.prototype.fromDate=function(date,fromLocal){if(this.timezone&&!fromLocal){date=convertTZ(date,this.timezone)}this.milliseconds=date.getMilliseconds();this.seconds=date.getSeconds();this.minutes=date.getMinutes();this.hours=date.getHours();this.days=date.getDate();this.months=date.getMonth();this.years=date.getFullYear()};CronDate.prototype.fromCronDate=function(date){this.timezone=date.timezone;this.milliseconds=date.milliseconds;this.seconds=date.seconds;this.minutes=date.minutes;this.hours=date.hours;this.days=date.days;this.months=date.months;this.years=date.years};CronDate.prototype.apply=function(){const newDate=new Date(this.years,this.months,this.days,this.hours,this.minutes,this.seconds,this.milliseconds);this.milliseconds=newDate.getMilliseconds();this.seconds=newDate.getSeconds();this.minutes=newDate.getMinutes();this.hours=newDate.getHours();this.days=newDate.getDate();this.months=newDate.getMonth();this.years=newDate.getFullYear()};CronDate.prototype.fromString=function(str){const parsedDate=this.parseISOLocal(str);if(isNaN(parsedDate)){throw new TypeError("CronDate: Provided string value for CronDate could not be parsed as date.")}this.fromDate(parsedDate,true)};CronDate.prototype.increment=function(pattern,rerun){if(!rerun){this.seconds+=1}this.milliseconds=0;const origTime=this.getTime(),findNext=(target,pattern,offset,override)=>{const startPos=override===void 0?this[target]+offset:0+offset;for(let i=startPos;i<pattern[target].length;i++){if(pattern[target][i]){this[target]=i-offset;return true}}return false},resetPrevious=()=>{while(doing>=0){findNext(toDo[doing][0],pattern,toDo[doing][2],0);doing--}};const toDo=[["seconds","minutes",0],["minutes","hours",0],["hours","days",0],["days","months",-1],["months","years",0]];let doing=0;while(doing<5){if(!findNext(toDo[doing][0],pattern,toDo[doing][2])){this[toDo[doing][1]]++;resetPrevious()}if(this.years>=4e3){return null}doing++}while(!pattern.daysOfWeek[this.getDate(true).getDay()]){this.days+=1;doing=2;resetPrevious()}if(origTime!=this.getTime()){this.apply();return this.increment(pattern,true)}else{return this}};CronDate.prototype.getDate=function(internal){const targetDate=new Date(this.years,this.months,this.days,this.hours,this.minutes,this.seconds,this.milliseconds);if(internal||!this.timezone){return targetDate}else{const offset=convertTZ(targetDate,this.timezone).getTime()-targetDate.getTime();return new Date(targetDate.getTime()-offset)}};CronDate.prototype.getTime=function(internal){return this.getDate(internal).getTime()};CronDate.prototype.parseISOLocal=function(dateTimeString){const dateTimeStringSplit=dateTimeString.split(/\D/);if(dateTimeStringSplit.length<6){return NaN}const year=parseInt(dateTimeStringSplit[0],10),month=parseInt(dateTimeStringSplit[1],10),day=parseInt(dateTimeStringSplit[2],10),hour=parseInt(dateTimeStringSplit[3],10),minute=parseInt(dateTimeStringSplit[4],10),second=parseInt(dateTimeStringSplit[5],10);if(isNaN(year)||isNaN(month)||isNaN(day)||isNaN(hour)||isNaN(minute)||isNaN(second)){return NaN}else{return new Date(year,month-1,day,hour,minute,second)}};function CronPattern(pattern){this.pattern=pattern;this.seconds=Array(60).fill(0);this.minutes=Array(60).fill(0);this.hours=Array(24).fill(0);this.days=Array(31).fill(0);this.months=Array(12).fill(0);this.daysOfWeek=Array(8).fill(0);this.parse()}CronPattern.prototype.parse=function(){if(!(typeof this.pattern==="string"||this.pattern.constructor===String)){throw new TypeError("CronPattern: Pattern has to be of type string.")}const parts=this.pattern.trim().replace(/\s+/g," ").split(" ");if(parts.length<5||parts.length>6){throw new TypeError("CronPattern: invalid configuration format ('"+this.pattern+"'), exacly five or six space separated parts required.")}if(parts.length===5){parts.unshift("0")}parts[4]=this.replaceAlphaMonths(parts[4]);parts[5]=this.replaceAlphaDays(parts[5]);this.throwAtIllegalCharacters(parts);this.partToArray("seconds",parts[0],0);this.partToArray("minutes",parts[1],0);this.partToArray("hours",parts[2],0);this.partToArray("days",parts[3],-1);this.partToArray("months",parts[4],-1);this.partToArray("daysOfWeek",parts[5],0);if(this.daysOfWeek[7]){this.daysOfWeek[0]=1}};CronPattern.prototype.partToArray=function(type,conf,valueIndexOffset,recursed){const arr=this[type];if(conf==="*"){for(let i=0;i<arr.length;i++){arr[i]=1}return}const split=conf.split(",");if(split.length>1){for(let i=0;i<split.length;i++){this.partToArray(type,split[i],valueIndexOffset,true)}}else if(conf.indexOf("-")!==-1&&conf.indexOf("/")!==-1){if(recursed)throw new Error("CronPattern: Range with stepping cannot coexist with ,");this.handleRangeWithStepping(conf,type,valueIndexOffset)}else if(conf.indexOf("-")!==-1){if(recursed)throw new Error("CronPattern: Range with stepping cannot coexist with ,");this.handleRange(conf,type,valueIndexOffset)}else if(conf.indexOf("/")!==-1){if(recursed)throw new Error("CronPattern: Range with stepping cannot coexist with ,");this.handleStepping(conf,type,valueIndexOffset)}else{this.handleNumber(conf,type,valueIndexOffset)}};CronPattern.prototype.throwAtIllegalCharacters=function(parts){const reValidCron=/[^/*0-9,-]+/;for(let i=0;i<parts.length;i++){if(reValidCron.test(parts[i])){throw new TypeError("CronPattern: configuration entry "+i+" ("+parts[i]+") contains illegal characters.")}}};CronPattern.prototype.handleNumber=function(conf,type,valueIndexOffset){const i=parseInt(conf,10)+valueIndexOffset;if(i<0||i>=this[type].length){throw new TypeError("CronPattern: "+type+" value out of range: '"+conf+"'")}this[type][i]=1};CronPattern.prototype.handleRangeWithStepping=function(conf,type,valueIndexOffset){const matches=conf.match(/^(\d+)-(\d+)\/(\d+)$/);if(matches===null)throw new TypeError("CronPattern: Syntax error, illegal range with stepping: '"+conf+"'");let[,lower,upper,steps]=matches;lower=parseInt(lower,10)+valueIndexOffset;upper=parseInt(upper,10)+valueIndexOffset;steps=parseInt(steps,10)+valueIndexOffset;if(isNaN(lower))throw new TypeError("CronPattern: Syntax error, illegal lower range (NaN)");if(isNaN(upper))throw new TypeError("CronPattern: Syntax error, illegal upper range (NaN)");if(isNaN(steps))throw new TypeError("CronPattern: Syntax error, illegal stepping: (NaN)");if(steps===0)throw new TypeError("CronPattern: Syntax error, illegal stepping: 0");if(steps>this[type].length)throw new TypeError("CronPattern: Syntax error, steps cannot be greater than maximum value of part ("+this[type].length+")");if(lower<0||upper>=this[type].length)throw new TypeError("CronPattern: Value out of range: '"+conf+"'");if(lower>upper)throw new TypeError("CronPattern: From value is larger than to value: '"+conf+"'");for(let i=lower;i<=upper;i+=steps){this[type][i+valueIndexOffset]=1}};CronPattern.prototype.handleRange=function(conf,type,valueIndexOffset){const split=conf.split("-");if(split.length!==2){throw new TypeError("CronPattern: Syntax error, illegal range: '"+conf+"'")}const lower=parseInt(split[0],10)+valueIndexOffset,upper=parseInt(split[1],10)+valueIndexOffset;if(isNaN(lower)){throw new TypeError("CronPattern: Syntax error, illegal lower range (NaN)")}else if(isNaN(upper)){throw new TypeError("CronPattern: Syntax error, illegal upper range (NaN)")}if(lower<0||upper>=this[type].length){throw new TypeError("CronPattern: Value out of range: '"+conf+"'")}if(lower>upper){throw new TypeError("CronPattern: From value is larger than to value: '"+conf+"'")}for(let i=lower;i<=upper;i++){this[type][i+valueIndexOffset]=1}};CronPattern.prototype.handleStepping=function(conf,type,valueIndexOffset){const split=conf.split("/");if(split.length!==2){throw new TypeError("CronPattern: Syntax error, illegal stepping: '"+conf+"'")}let start=0;if(split[0]!=="*"){start=parseInt(split[0],10)}const steps=parseInt(split[1],10);if(isNaN(steps))throw new TypeError("CronPattern: Syntax error, illegal stepping: (NaN)");if(steps===0)throw new TypeError("CronPattern: Syntax error, illegal stepping: 0");if(steps>this[type].length)throw new TypeError("CronPattern: Syntax error, steps cannot be greater than maximum value of part ("+this[type].length+")");for(let i=start;i<this[type].length;i+=steps){this[type][i+valueIndexOffset]=1}};CronPattern.prototype.replaceAlphaDays=function(conf){return conf.replace(/sun/gi,"0").replace(/mon/gi,"1").replace(/tue/gi,"2").replace(/wed/gi,"3").replace(/thu/gi,"4").replace(/fri/gi,"5").replace(/sat/gi,"6")};CronPattern.prototype.replaceAlphaMonths=function(conf){return conf.replace(/jan/gi,"1").replace(/feb/gi,"2").replace(/mar/gi,"3").replace(/apr/gi,"4").replace(/may/gi,"5").replace(/jun/gi,"6").replace(/jul/gi,"7").replace(/aug/gi,"8").replace(/sep/gi,"9").replace(/oct/gi,"10").replace(/nov/gi,"11").replace(/dec/gi,"12")};const maxDelay=Math.pow(2,32-1)-1;function Cron(pattern,options,func){if(!(this instanceof Cron)){return new Cron(pattern,options,func)}this.pattern=new CronPattern(pattern);if(typeof options==="function"){func=options;options=void 0}this.options=this.processOptions(options);if(func!==void 0){this.fn=func;this.schedule()}return this}Cron.prototype.processOptions=function(options){if(options===void 0){options={}}options.paused=options.paused===void 0?false:options.paused;options.maxRuns=options.maxRuns===void 0?Infinity:options.maxRuns;options.catch=options.catch===void 0?false:options.catch;options.kill=false;if(options.startAt){options.startAt=new CronDate(options.startAt,options.timezone)}if(options.stopAt){options.stopAt=new CronDate(options.stopAt,options.timezone)}return options};Cron.prototype.next=function(prev){prev=new CronDate(prev,this.options.timezone);const next=this._next(prev);return next?next.getDate():null};Cron.prototype.running=function(){const msLeft=this.msToNext(this.previousrun);const running=!this.options.paused&&this.fn!==void 0;return msLeft!==null&&running};Cron.prototype.previous=function(){return this.previousrun?this.previousrun.getDate():null};Cron.prototype._next=function(prev){if(this.options.startAt&&prev&&prev.getTime(true)<this.options.startAt.getTime(true)){prev=new CronDate(this.options.startAt,this.options.timezone)}const nextRun=new CronDate(prev,this.options.timezone).increment(this.pattern);if(nextRun===null||this.options.maxRuns<=0||this.options.kill||this.options.stopAt&&nextRun.getTime(true)>=this.options.stopAt.getTime(true)){return null}else{return nextRun}};Cron.prototype.msToNext=function(prev){prev=new CronDate(prev,this.options.timezone);const next=this._next(prev);if(next){return next.getTime(true)-prev.getTime(true)}else{return null}};Cron.prototype.stop=function(){this.options.kill=true;if(this.currentTimeout){clearTimeout(this.currentTimeout)}};Cron.prototype.pause=function(){return(this.options.paused=true)&&!this.options.kill};Cron.prototype.resume=function(){return!(this.options.paused=false)&&!this.options.kill};Cron.prototype.schedule=function(func){if(func){this.fn=func}let waitMs=this.msToNext(this.previousrun);if(waitMs===null)return this;const _maxDelay=this.maxDelay||maxDelay;if(waitMs>_maxDelay){waitMs=_maxDelay}const go=()=>{if(waitMs!==_maxDelay&&!this.options.paused){this.options.maxRuns--;if(this.options.catch){try{this.fn(this,this.options.context)}catch(_e){}}else{this.fn(this,this.options.context)}this.previousrun=new CronDate(void 0,this.options.timezone)}this.schedule()};this.currentTimeout=setTimeout(go,waitMs);return this};return Cron});
|
package/dist/croner.min.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["dist/croner.cjs"],"names":["global","factory","exports","module","define","amd","globalThis","self","Cron","this","convertTZ","date","tzString","Date","toLocaleString","timeZone","CronDate","timezone","fromDate","fromString","fromCronDate","TypeError","prototype","fromLocal","milliseconds","getMilliseconds","seconds","getSeconds","minutes","getMinutes","hours","getHours","days","getDate","months","getMonth","years","getFullYear","apply","let","newDate","str","parsedDate","parseISOLocal","isNaN","increment","pattern","rerun","origTime","getTime","findNext","target","offset","override","startPos","i","length","resetPrevious","doing","toDo","daysOfWeek","getDay","internal","targetDate","s","b","split","NaN","year","parseInt","month","day","hour","minute","second","CronPattern","Array","fill","parse","constructor","String","parts","trim","replace","unshift","replaceAlphaMonths","replaceAlphaDays","throwAtIllegalCharacters","partToArray","type","conf","valueIndexOffset","recursed","arr","indexOf","Error","handleRangeWithStepping","handleRange","handleStepping","handleNumber","reValidCron","test","matches","match","lower","upper","steps","start","maxDelay","Math","pow","options","func","processOptions","fn","schedule","paused","maxRuns","Infinity","catch","kill","startAt","stopAt","next","prev","_next","running","msLeft","msToNext","previousrun","previous","nextRun","stop","currentTimeout","clearTimeout","pause","resume","waitMs","_maxDelay","setTimeout","_e"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["dist/croner.cjs"],"names":["global","factory","exports","module","define","amd","globalThis","self","Cron","this","convertTZ","date","tzString","Date","toLocaleString","timeZone","CronDate","timezone","fromDate","fromString","fromCronDate","TypeError","prototype","fromLocal","milliseconds","getMilliseconds","seconds","getSeconds","minutes","getMinutes","hours","getHours","days","getDate","months","getMonth","years","getFullYear","apply","newDate","str","parsedDate","parseISOLocal","isNaN","increment","pattern","rerun","origTime","getTime","findNext","target","offset","override","startPos","let","i","length","resetPrevious","doing","toDo","daysOfWeek","getDay","internal","targetDate","dateTimeString","dateTimeStringSplit","split","NaN","year","parseInt","month","day","hour","minute","second","CronPattern","Array","fill","parse","constructor","String","parts","trim","replace","unshift","replaceAlphaMonths","replaceAlphaDays","throwAtIllegalCharacters","partToArray","type","conf","valueIndexOffset","recursed","arr","indexOf","Error","handleRangeWithStepping","handleRange","handleStepping","handleNumber","reValidCron","test","matches","match","lower","upper","steps","start","maxDelay","Math","pow","options","func","processOptions","fn","schedule","paused","maxRuns","Infinity","catch","kill","startAt","stopAt","next","prev","_next","running","msLeft","msToNext","previousrun","previous","nextRun","stop","currentTimeout","clearTimeout","pause","resume","waitMs","_maxDelay","go","context","_e","setTimeout"],"mappings":"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"}
|
package/dist/croner.min.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
function convertTZ(date,tzString){return new Date(date.toLocaleString("en-US",{timeZone:tzString}))}function CronDate(date,timezone){this.timezone=timezone;if(date&&date instanceof Date){this.fromDate(date)}else if(date===void 0){this.fromDate(new Date)}else if(date&&typeof date==="string"){this.fromString(date)}else if(date instanceof CronDate){this.fromCronDate(date)}else{throw new TypeError("CronDate: Invalid type ("+typeof date+") passed as parameter to CronDate constructor")}}CronDate.prototype.fromDate=function(date,fromLocal){if(this.timezone&&!fromLocal){date=convertTZ(date,this.timezone)}this.milliseconds=date.getMilliseconds();this.seconds=date.getSeconds();this.minutes=date.getMinutes();this.hours=date.getHours();this.days=date.getDate();this.months=date.getMonth();this.years=date.getFullYear()};CronDate.prototype.fromCronDate=function(date){this.timezone=date.timezone;this.milliseconds=date.milliseconds;this.seconds=date.seconds;this.minutes=date.minutes;this.hours=date.hours;this.days=date.days;this.months=date.months;this.years=date.years};CronDate.prototype.apply=function(){let newDate=new Date(this.years,this.months,this.days,this.hours,this.minutes,this.seconds,this.milliseconds);this.milliseconds=newDate.getMilliseconds();this.seconds=newDate.getSeconds();this.minutes=newDate.getMinutes();this.hours=newDate.getHours();this.days=newDate.getDate();this.months=newDate.getMonth();this.years=newDate.getFullYear()};CronDate.prototype.fromString=function(str){let parsedDate=this.parseISOLocal(str);if(isNaN(parsedDate)){throw new TypeError("CronDate: Provided string value for CronDate could not be parsed as date.")}this.fromDate(parsedDate,true)};CronDate.prototype.increment=function(pattern,rerun){if(!rerun){this.seconds+=1}this.milliseconds=0;let self=this,origTime=self.getTime(),findNext=function(target,pattern,offset,override){let startPos=override===void 0?self[target]+offset:0+offset;for(let i=startPos;i<pattern[target].length;i++){if(pattern[target][i]){self[target]=i-offset;return true}}return false},resetPrevious=function(){while(doing>=0){findNext(toDo[doing][0],pattern,toDo[doing][2],0);doing--}};let toDo=[["seconds","minutes",0],["minutes","hours",0],["hours","days",0],["days","months",-1],["months","years",0]],doing=0;while(doing<5){if(!findNext(toDo[doing][0],pattern,toDo[doing][2])){this[toDo[doing][1]]++;resetPrevious()}if(this.years>=4e3){return null}doing++}while(!pattern.daysOfWeek[this.getDate(true).getDay()]){this.days+=1;doing=2;resetPrevious()}if(origTime!=self.getTime()){self.apply();return self.increment(pattern,true)}else{return this}};CronDate.prototype.getDate=function(internal){let targetDate=new Date(this.years,this.months,this.days,this.hours,this.minutes,this.seconds,this.milliseconds);if(internal||!this.timezone){return targetDate}else{let offset=convertTZ(targetDate,this.timezone).getTime()-targetDate.getTime();return new Date(targetDate.getTime()-offset)}};CronDate.prototype.getTime=function(internal){return this.getDate(internal).getTime()};CronDate.prototype.parseISOLocal=function(s){let b=s.split(/\D/);if(b.length<6){return NaN}let year=parseInt(b[0],10),month=parseInt(b[1],10),day=parseInt(b[2],10),hour=parseInt(b[3],10),minute=parseInt(b[4],10),second=parseInt(b[5],10);if(isNaN(year)||isNaN(month)||isNaN(day)||isNaN(hour)||isNaN(minute)||isNaN(second)){return NaN}else{return new Date(year,month-1,day,hour,minute,second)}};function CronPattern(pattern){this.pattern=pattern;this.seconds=Array(60).fill(0);this.minutes=Array(60).fill(0);this.hours=Array(24).fill(0);this.days=Array(31).fill(0);this.months=Array(12).fill(0);this.daysOfWeek=Array(8).fill(0);this.parse()}CronPattern.prototype.parse=function(){if(!(typeof this.pattern==="string"||this.pattern.constructor===String)){throw new TypeError("CronPattern: Pattern has to be of type string.")}let parts=this.pattern.trim().replace(/\s+/g," ").split(" ");if(parts.length<5||parts.length>6){throw new TypeError("CronPattern: invalid configuration format ('"+this.pattern+"'), exacly five or six space separated parts required.")}if(parts.length===5){parts.unshift("0")}parts[4]=this.replaceAlphaMonths(parts[4]);parts[5]=this.replaceAlphaDays(parts[5]);this.throwAtIllegalCharacters(parts);this.partToArray("seconds",parts[0],0);this.partToArray("minutes",parts[1],0);this.partToArray("hours",parts[2],0);this.partToArray("days",parts[3],-1);this.partToArray("months",parts[4],-1);this.partToArray("daysOfWeek",parts[5],0);if(this.daysOfWeek[7]){this.daysOfWeek[0]=1}};CronPattern.prototype.partToArray=function(type,conf,valueIndexOffset,recursed){const arr=this[type];if(conf==="*"){for(let i=0;i<arr.length;i++){arr[i]=1}return}const split=conf.split(",");if(split.length>1){for(let i=0;i<split.length;i++){this.partToArray(type,split[i],valueIndexOffset,true)}}else if(conf.indexOf("-")!==-1&&conf.indexOf("/")!==-1){if(recursed)throw new Error("CronPattern: Range with stepping cannot coexist with ,");this.handleRangeWithStepping(conf,type,valueIndexOffset)}else if(conf.indexOf("-")!==-1){if(recursed)throw new Error("CronPattern: Range with stepping cannot coexist with ,");this.handleRange(conf,type,valueIndexOffset)}else if(conf.indexOf("/")!==-1){if(recursed)throw new Error("CronPattern: Range with stepping cannot coexist with ,");this.handleStepping(conf,type,valueIndexOffset)}else{this.handleNumber(conf,type,valueIndexOffset)}};CronPattern.prototype.throwAtIllegalCharacters=function(parts){const reValidCron=/[^/*0-9,-]+/;for(let i=0;i<parts.length;i++){if(reValidCron.test(parts[i])){throw new TypeError("CronPattern: configuration entry "+i+" ("+parts[i]+") contains illegal characters.")}}};CronPattern.prototype.handleNumber=function(conf,type,valueIndexOffset){let i=parseInt(conf,10)+valueIndexOffset;if(i<0||i>=this[type].length){throw new TypeError("CronPattern: "+type+" value out of range: '"+conf+"'")}this[type][i]=1};CronPattern.prototype.handleRangeWithStepping=function(conf,type,valueIndexOffset){let matches=conf.match(/^(\d+)-(\d+)\/(\d+)$/);if(matches===null)throw new TypeError("CronPattern: Syntax error, illegal range with stepping: '"+conf+"'");let[,lower,upper,steps]=matches;lower=parseInt(lower,10)+valueIndexOffset;upper=parseInt(upper,10)+valueIndexOffset;steps=parseInt(steps,10)+valueIndexOffset;if(isNaN(lower))throw new TypeError("CronPattern: Syntax error, illegal lower range (NaN)");if(isNaN(upper))throw new TypeError("CronPattern: Syntax error, illegal upper range (NaN)");if(isNaN(steps))throw new TypeError("CronPattern: Syntax error, illegal stepping: (NaN)");if(steps===0)throw new TypeError("CronPattern: Syntax error, illegal stepping: 0");if(steps>this[type].length)throw new TypeError("CronPattern: Syntax error, steps cannot be greater than maximum value of part ("+this[type].length+")");if(lower<0||upper>=this[type].length)throw new TypeError("CronPattern: Value out of range: '"+conf+"'");if(lower>upper)throw new TypeError("CronPattern: From value is larger than to value: '"+conf+"'");for(let i=lower;i<=upper;i+=steps){this[type][i+valueIndexOffset]=1}};CronPattern.prototype.handleRange=function(conf,type,valueIndexOffset){const split=conf.split("-");if(split.length!==2){throw new TypeError("CronPattern: Syntax error, illegal range: '"+conf+"'")}const lower=parseInt(split[0],10)+valueIndexOffset,upper=parseInt(split[1],10)+valueIndexOffset;if(isNaN(lower)){throw new TypeError("CronPattern: Syntax error, illegal lower range (NaN)")}else if(isNaN(upper)){throw new TypeError("CronPattern: Syntax error, illegal upper range (NaN)")}if(lower<0||upper>=this[type].length){throw new TypeError("CronPattern: Value out of range: '"+conf+"'")}if(lower>upper){throw new TypeError("CronPattern: From value is larger than to value: '"+conf+"'")}for(let i=lower;i<=upper;i++){this[type][i+valueIndexOffset]=1}};CronPattern.prototype.handleStepping=function(conf,type,valueIndexOffset){const split=conf.split("/");if(split.length!==2){throw new TypeError("CronPattern: Syntax error, illegal stepping: '"+conf+"'")}let start=0;if(split[0]!=="*"){start=parseInt(split[0],10)}const steps=parseInt(split[1],10);if(isNaN(steps))throw new TypeError("CronPattern: Syntax error, illegal stepping: (NaN)");if(steps===0)throw new TypeError("CronPattern: Syntax error, illegal stepping: 0");if(steps>this[type].length)throw new TypeError("CronPattern: Syntax error, steps cannot be greater than maximum value of part ("+this[type].length+")");for(let i=start;i<this[type].length;i+=steps){this[type][i+valueIndexOffset]=1}};CronPattern.prototype.replaceAlphaDays=function(conf){return conf.replace(/sun/gi,"0").replace(/mon/gi,"1").replace(/tue/gi,"2").replace(/wed/gi,"3").replace(/thu/gi,"4").replace(/fri/gi,"5").replace(/sat/gi,"6")};CronPattern.prototype.replaceAlphaMonths=function(conf){return conf.replace(/jan/gi,"1").replace(/feb/gi,"2").replace(/mar/gi,"3").replace(/apr/gi,"4").replace(/may/gi,"5").replace(/jun/gi,"6").replace(/jul/gi,"7").replace(/aug/gi,"8").replace(/sep/gi,"9").replace(/oct/gi,"10").replace(/nov/gi,"11").replace(/dec/gi,"12")};const maxDelay=Math.pow(2,32-1)-1;function Cron(pattern,options,func){let self=this;if(!(this instanceof Cron)){return new Cron(pattern,options,func)}self.pattern=new CronPattern(pattern);if(typeof options==="function"){func=options;options=void 0}this.options=this.processOptions(options);if(func!==void 0){this.fn=func;this.schedule()}return this}Cron.prototype.processOptions=function(options){if(options===void 0){options={}}options.paused=options.paused===void 0?false:options.paused;options.maxRuns=options.maxRuns===void 0?Infinity:options.maxRuns;options.catch=options.catch===void 0?false:options.catch;options.kill=false;if(options.startAt){options.startAt=new CronDate(options.startAt,options.timezone)}if(options.stopAt){options.stopAt=new CronDate(options.stopAt,options.timezone)}return options};Cron.prototype.next=function(prev){prev=new CronDate(prev,this.options.timezone);let next=this._next(prev);return next?next.getDate():null};Cron.prototype.running=function(){let msLeft=this.msToNext(this.previousrun);let running=!this.options.paused&&this.fn!==void 0;return msLeft!==null&&running};Cron.prototype.previous=function(){return this.previousrun?this.previousrun.getDate():null};Cron.prototype._next=function(prev){if(this.options.startAt&&prev&&prev.getTime(true)<this.options.startAt.getTime(true)){prev=new CronDate(this.options.startAt,this.options.timezone)}let nextRun=new CronDate(prev,this.options.timezone).increment(this.pattern);if(nextRun===null||this.options.maxRuns<=0||this.options.kill||this.options.stopAt&&nextRun.getTime(true)>=this.options.stopAt.getTime(true)){return null}else{return nextRun}};Cron.prototype.msToNext=function(prev){prev=new CronDate(prev,this.options.timezone);let next=this._next(prev);if(next){return next.getTime(true)-prev.getTime(true)}else{return null}};Cron.prototype.stop=function(){this.options.kill=true;if(this.currentTimeout){clearTimeout(this.currentTimeout)}};Cron.prototype.pause=function(){return(this.options.paused=true)&&!this.options.kill};Cron.prototype.resume=function(){return!(this.options.paused=false)&&!this.options.kill};Cron.prototype.schedule=function(func){let self=this,waitMs=this.msToNext(self.previousrun),_maxDelay=self.maxDelay||maxDelay;if(waitMs>_maxDelay){waitMs=_maxDelay}if(func){self.fn=func}if(waitMs!==null){self.currentTimeout=setTimeout(function(){if(waitMs!==_maxDelay){if(!self.options.paused){self.options.maxRuns--;if(self.options.catch){try{self.fn(self)}catch(_e){}}else{self.fn(self)}}self.previousrun=new CronDate(void 0,self.options.timezone)}self.schedule()},waitMs)}return this};export{Cron,Cron as default};
|
|
1
|
+
function convertTZ(date,tzString){return new Date(date.toLocaleString("en-US",{timeZone:tzString}))}function CronDate(date,timezone){this.timezone=timezone;if(date&&date instanceof Date){this.fromDate(date)}else if(date===void 0){this.fromDate(new Date)}else if(date&&typeof date==="string"){this.fromString(date)}else if(date instanceof CronDate){this.fromCronDate(date)}else{throw new TypeError("CronDate: Invalid type ("+typeof date+") passed as parameter to CronDate constructor")}}CronDate.prototype.fromDate=function(date,fromLocal){if(this.timezone&&!fromLocal){date=convertTZ(date,this.timezone)}this.milliseconds=date.getMilliseconds();this.seconds=date.getSeconds();this.minutes=date.getMinutes();this.hours=date.getHours();this.days=date.getDate();this.months=date.getMonth();this.years=date.getFullYear()};CronDate.prototype.fromCronDate=function(date){this.timezone=date.timezone;this.milliseconds=date.milliseconds;this.seconds=date.seconds;this.minutes=date.minutes;this.hours=date.hours;this.days=date.days;this.months=date.months;this.years=date.years};CronDate.prototype.apply=function(){const newDate=new Date(this.years,this.months,this.days,this.hours,this.minutes,this.seconds,this.milliseconds);this.milliseconds=newDate.getMilliseconds();this.seconds=newDate.getSeconds();this.minutes=newDate.getMinutes();this.hours=newDate.getHours();this.days=newDate.getDate();this.months=newDate.getMonth();this.years=newDate.getFullYear()};CronDate.prototype.fromString=function(str){const parsedDate=this.parseISOLocal(str);if(isNaN(parsedDate)){throw new TypeError("CronDate: Provided string value for CronDate could not be parsed as date.")}this.fromDate(parsedDate,true)};CronDate.prototype.increment=function(pattern,rerun){if(!rerun){this.seconds+=1}this.milliseconds=0;const origTime=this.getTime(),findNext=(target,pattern,offset,override)=>{const startPos=override===void 0?this[target]+offset:0+offset;for(let i=startPos;i<pattern[target].length;i++){if(pattern[target][i]){this[target]=i-offset;return true}}return false},resetPrevious=()=>{while(doing>=0){findNext(toDo[doing][0],pattern,toDo[doing][2],0);doing--}};const toDo=[["seconds","minutes",0],["minutes","hours",0],["hours","days",0],["days","months",-1],["months","years",0]];let doing=0;while(doing<5){if(!findNext(toDo[doing][0],pattern,toDo[doing][2])){this[toDo[doing][1]]++;resetPrevious()}if(this.years>=4e3){return null}doing++}while(!pattern.daysOfWeek[this.getDate(true).getDay()]){this.days+=1;doing=2;resetPrevious()}if(origTime!=this.getTime()){this.apply();return this.increment(pattern,true)}else{return this}};CronDate.prototype.getDate=function(internal){const targetDate=new Date(this.years,this.months,this.days,this.hours,this.minutes,this.seconds,this.milliseconds);if(internal||!this.timezone){return targetDate}else{const offset=convertTZ(targetDate,this.timezone).getTime()-targetDate.getTime();return new Date(targetDate.getTime()-offset)}};CronDate.prototype.getTime=function(internal){return this.getDate(internal).getTime()};CronDate.prototype.parseISOLocal=function(dateTimeString){const dateTimeStringSplit=dateTimeString.split(/\D/);if(dateTimeStringSplit.length<6){return NaN}const year=parseInt(dateTimeStringSplit[0],10),month=parseInt(dateTimeStringSplit[1],10),day=parseInt(dateTimeStringSplit[2],10),hour=parseInt(dateTimeStringSplit[3],10),minute=parseInt(dateTimeStringSplit[4],10),second=parseInt(dateTimeStringSplit[5],10);if(isNaN(year)||isNaN(month)||isNaN(day)||isNaN(hour)||isNaN(minute)||isNaN(second)){return NaN}else{return new Date(year,month-1,day,hour,minute,second)}};function CronPattern(pattern){this.pattern=pattern;this.seconds=Array(60).fill(0);this.minutes=Array(60).fill(0);this.hours=Array(24).fill(0);this.days=Array(31).fill(0);this.months=Array(12).fill(0);this.daysOfWeek=Array(8).fill(0);this.parse()}CronPattern.prototype.parse=function(){if(!(typeof this.pattern==="string"||this.pattern.constructor===String)){throw new TypeError("CronPattern: Pattern has to be of type string.")}const parts=this.pattern.trim().replace(/\s+/g," ").split(" ");if(parts.length<5||parts.length>6){throw new TypeError("CronPattern: invalid configuration format ('"+this.pattern+"'), exacly five or six space separated parts required.")}if(parts.length===5){parts.unshift("0")}parts[4]=this.replaceAlphaMonths(parts[4]);parts[5]=this.replaceAlphaDays(parts[5]);this.throwAtIllegalCharacters(parts);this.partToArray("seconds",parts[0],0);this.partToArray("minutes",parts[1],0);this.partToArray("hours",parts[2],0);this.partToArray("days",parts[3],-1);this.partToArray("months",parts[4],-1);this.partToArray("daysOfWeek",parts[5],0);if(this.daysOfWeek[7]){this.daysOfWeek[0]=1}};CronPattern.prototype.partToArray=function(type,conf,valueIndexOffset,recursed){const arr=this[type];if(conf==="*"){for(let i=0;i<arr.length;i++){arr[i]=1}return}const split=conf.split(",");if(split.length>1){for(let i=0;i<split.length;i++){this.partToArray(type,split[i],valueIndexOffset,true)}}else if(conf.indexOf("-")!==-1&&conf.indexOf("/")!==-1){if(recursed)throw new Error("CronPattern: Range with stepping cannot coexist with ,");this.handleRangeWithStepping(conf,type,valueIndexOffset)}else if(conf.indexOf("-")!==-1){if(recursed)throw new Error("CronPattern: Range with stepping cannot coexist with ,");this.handleRange(conf,type,valueIndexOffset)}else if(conf.indexOf("/")!==-1){if(recursed)throw new Error("CronPattern: Range with stepping cannot coexist with ,");this.handleStepping(conf,type,valueIndexOffset)}else{this.handleNumber(conf,type,valueIndexOffset)}};CronPattern.prototype.throwAtIllegalCharacters=function(parts){const reValidCron=/[^/*0-9,-]+/;for(let i=0;i<parts.length;i++){if(reValidCron.test(parts[i])){throw new TypeError("CronPattern: configuration entry "+i+" ("+parts[i]+") contains illegal characters.")}}};CronPattern.prototype.handleNumber=function(conf,type,valueIndexOffset){const i=parseInt(conf,10)+valueIndexOffset;if(i<0||i>=this[type].length){throw new TypeError("CronPattern: "+type+" value out of range: '"+conf+"'")}this[type][i]=1};CronPattern.prototype.handleRangeWithStepping=function(conf,type,valueIndexOffset){const matches=conf.match(/^(\d+)-(\d+)\/(\d+)$/);if(matches===null)throw new TypeError("CronPattern: Syntax error, illegal range with stepping: '"+conf+"'");let[,lower,upper,steps]=matches;lower=parseInt(lower,10)+valueIndexOffset;upper=parseInt(upper,10)+valueIndexOffset;steps=parseInt(steps,10)+valueIndexOffset;if(isNaN(lower))throw new TypeError("CronPattern: Syntax error, illegal lower range (NaN)");if(isNaN(upper))throw new TypeError("CronPattern: Syntax error, illegal upper range (NaN)");if(isNaN(steps))throw new TypeError("CronPattern: Syntax error, illegal stepping: (NaN)");if(steps===0)throw new TypeError("CronPattern: Syntax error, illegal stepping: 0");if(steps>this[type].length)throw new TypeError("CronPattern: Syntax error, steps cannot be greater than maximum value of part ("+this[type].length+")");if(lower<0||upper>=this[type].length)throw new TypeError("CronPattern: Value out of range: '"+conf+"'");if(lower>upper)throw new TypeError("CronPattern: From value is larger than to value: '"+conf+"'");for(let i=lower;i<=upper;i+=steps){this[type][i+valueIndexOffset]=1}};CronPattern.prototype.handleRange=function(conf,type,valueIndexOffset){const split=conf.split("-");if(split.length!==2){throw new TypeError("CronPattern: Syntax error, illegal range: '"+conf+"'")}const lower=parseInt(split[0],10)+valueIndexOffset,upper=parseInt(split[1],10)+valueIndexOffset;if(isNaN(lower)){throw new TypeError("CronPattern: Syntax error, illegal lower range (NaN)")}else if(isNaN(upper)){throw new TypeError("CronPattern: Syntax error, illegal upper range (NaN)")}if(lower<0||upper>=this[type].length){throw new TypeError("CronPattern: Value out of range: '"+conf+"'")}if(lower>upper){throw new TypeError("CronPattern: From value is larger than to value: '"+conf+"'")}for(let i=lower;i<=upper;i++){this[type][i+valueIndexOffset]=1}};CronPattern.prototype.handleStepping=function(conf,type,valueIndexOffset){const split=conf.split("/");if(split.length!==2){throw new TypeError("CronPattern: Syntax error, illegal stepping: '"+conf+"'")}let start=0;if(split[0]!=="*"){start=parseInt(split[0],10)}const steps=parseInt(split[1],10);if(isNaN(steps))throw new TypeError("CronPattern: Syntax error, illegal stepping: (NaN)");if(steps===0)throw new TypeError("CronPattern: Syntax error, illegal stepping: 0");if(steps>this[type].length)throw new TypeError("CronPattern: Syntax error, steps cannot be greater than maximum value of part ("+this[type].length+")");for(let i=start;i<this[type].length;i+=steps){this[type][i+valueIndexOffset]=1}};CronPattern.prototype.replaceAlphaDays=function(conf){return conf.replace(/sun/gi,"0").replace(/mon/gi,"1").replace(/tue/gi,"2").replace(/wed/gi,"3").replace(/thu/gi,"4").replace(/fri/gi,"5").replace(/sat/gi,"6")};CronPattern.prototype.replaceAlphaMonths=function(conf){return conf.replace(/jan/gi,"1").replace(/feb/gi,"2").replace(/mar/gi,"3").replace(/apr/gi,"4").replace(/may/gi,"5").replace(/jun/gi,"6").replace(/jul/gi,"7").replace(/aug/gi,"8").replace(/sep/gi,"9").replace(/oct/gi,"10").replace(/nov/gi,"11").replace(/dec/gi,"12")};const maxDelay=Math.pow(2,32-1)-1;function Cron(pattern,options,func){if(!(this instanceof Cron)){return new Cron(pattern,options,func)}this.pattern=new CronPattern(pattern);if(typeof options==="function"){func=options;options=void 0}this.options=this.processOptions(options);if(func!==void 0){this.fn=func;this.schedule()}return this}Cron.prototype.processOptions=function(options){if(options===void 0){options={}}options.paused=options.paused===void 0?false:options.paused;options.maxRuns=options.maxRuns===void 0?Infinity:options.maxRuns;options.catch=options.catch===void 0?false:options.catch;options.kill=false;if(options.startAt){options.startAt=new CronDate(options.startAt,options.timezone)}if(options.stopAt){options.stopAt=new CronDate(options.stopAt,options.timezone)}return options};Cron.prototype.next=function(prev){prev=new CronDate(prev,this.options.timezone);const next=this._next(prev);return next?next.getDate():null};Cron.prototype.running=function(){const msLeft=this.msToNext(this.previousrun);const running=!this.options.paused&&this.fn!==void 0;return msLeft!==null&&running};Cron.prototype.previous=function(){return this.previousrun?this.previousrun.getDate():null};Cron.prototype._next=function(prev){if(this.options.startAt&&prev&&prev.getTime(true)<this.options.startAt.getTime(true)){prev=new CronDate(this.options.startAt,this.options.timezone)}const nextRun=new CronDate(prev,this.options.timezone).increment(this.pattern);if(nextRun===null||this.options.maxRuns<=0||this.options.kill||this.options.stopAt&&nextRun.getTime(true)>=this.options.stopAt.getTime(true)){return null}else{return nextRun}};Cron.prototype.msToNext=function(prev){prev=new CronDate(prev,this.options.timezone);const next=this._next(prev);if(next){return next.getTime(true)-prev.getTime(true)}else{return null}};Cron.prototype.stop=function(){this.options.kill=true;if(this.currentTimeout){clearTimeout(this.currentTimeout)}};Cron.prototype.pause=function(){return(this.options.paused=true)&&!this.options.kill};Cron.prototype.resume=function(){return!(this.options.paused=false)&&!this.options.kill};Cron.prototype.schedule=function(func){if(func){this.fn=func}let waitMs=this.msToNext(this.previousrun);if(waitMs===null)return this;const _maxDelay=this.maxDelay||maxDelay;if(waitMs>_maxDelay){waitMs=_maxDelay}const go=()=>{if(waitMs!==_maxDelay&&!this.options.paused){this.options.maxRuns--;if(this.options.catch){try{this.fn(this,this.options.context)}catch(_e){}}else{this.fn(this,this.options.context)}this.previousrun=new CronDate(void 0,this.options.timezone)}this.schedule()};this.currentTimeout=setTimeout(go,waitMs);return this};export{Cron,Cron as default};
|
package/dist/croner.min.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["dist/croner.mjs"],"names":["convertTZ","date","tzString","Date","toLocaleString","timeZone","CronDate","timezone","this","fromDate","fromString","fromCronDate","TypeError","prototype","fromLocal","milliseconds","getMilliseconds","seconds","getSeconds","minutes","getMinutes","hours","getHours","days","getDate","months","getMonth","years","getFullYear","apply","let","newDate","str","parsedDate","parseISOLocal","isNaN","increment","pattern","rerun","self","origTime","getTime","findNext","target","offset","override","startPos","i","length","resetPrevious","doing","toDo","daysOfWeek","getDay","internal","targetDate","s","b","split","NaN","year","parseInt","month","day","hour","minute","second","CronPattern","Array","fill","parse","constructor","String","parts","trim","replace","unshift","replaceAlphaMonths","replaceAlphaDays","throwAtIllegalCharacters","partToArray","type","conf","valueIndexOffset","recursed","arr","indexOf","Error","handleRangeWithStepping","handleRange","handleStepping","handleNumber","reValidCron","test","matches","match","lower","upper","steps","start","maxDelay","Math","pow","Cron","options","func","processOptions","fn","schedule","paused","maxRuns","Infinity","catch","kill","startAt","stopAt","next","prev","_next","running","msLeft","msToNext","previousrun","previous","nextRun","stop","currentTimeout","clearTimeout","pause","resume","waitMs","_maxDelay","setTimeout","_e"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["dist/croner.mjs"],"names":["convertTZ","date","tzString","Date","toLocaleString","timeZone","CronDate","timezone","this","fromDate","fromString","fromCronDate","TypeError","prototype","fromLocal","milliseconds","getMilliseconds","seconds","getSeconds","minutes","getMinutes","hours","getHours","days","getDate","months","getMonth","years","getFullYear","apply","newDate","str","parsedDate","parseISOLocal","isNaN","increment","pattern","rerun","origTime","getTime","findNext","target","offset","override","startPos","let","i","length","resetPrevious","doing","toDo","daysOfWeek","getDay","internal","targetDate","dateTimeString","dateTimeStringSplit","split","NaN","year","parseInt","month","day","hour","minute","second","CronPattern","Array","fill","parse","constructor","String","parts","trim","replace","unshift","replaceAlphaMonths","replaceAlphaDays","throwAtIllegalCharacters","partToArray","type","conf","valueIndexOffset","recursed","arr","indexOf","Error","handleRangeWithStepping","handleRange","handleStepping","handleNumber","reValidCron","test","matches","match","lower","upper","steps","start","maxDelay","Math","pow","Cron","options","func","processOptions","fn","schedule","paused","maxRuns","Infinity","catch","kill","startAt","stopAt","next","prev","_next","running","msLeft","msToNext","previousrun","previous","nextRun","stop","currentTimeout","clearTimeout","pause","resume","waitMs","_maxDelay","go","context","_e","setTimeout"],"mappings":"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"}
|
package/package.json
CHANGED
package/src/croner.js
CHANGED
|
@@ -39,6 +39,7 @@ import { CronPattern } from "./pattern.js";
|
|
|
39
39
|
* @property {string | Date} [startAt] - When to start running
|
|
40
40
|
* @property {string | Date} [stopAt] - When to stop running
|
|
41
41
|
* @property {string} [timezone] - Time zone in Europe/Stockholm format
|
|
42
|
+
* @property {?} [context] - Used to pass any object to scheduled function
|
|
42
43
|
*/
|
|
43
44
|
|
|
44
45
|
/**
|
|
@@ -63,15 +64,14 @@ const maxDelay = Math.pow(2, 32 - 1) - 1;
|
|
|
63
64
|
* @returns {Cron}
|
|
64
65
|
*/
|
|
65
66
|
function Cron (pattern, options, func) {
|
|
66
|
-
|
|
67
|
-
|
|
67
|
+
|
|
68
68
|
// Optional "new" keyword
|
|
69
69
|
if( !(this instanceof Cron) ) {
|
|
70
70
|
return new Cron(pattern, options, func);
|
|
71
71
|
}
|
|
72
72
|
|
|
73
73
|
/** @type {CronPattern} */
|
|
74
|
-
|
|
74
|
+
this.pattern = new CronPattern(pattern);
|
|
75
75
|
|
|
76
76
|
// Make options optional
|
|
77
77
|
if( typeof options === "function" ) {
|
|
@@ -133,7 +133,7 @@ Cron.prototype.processOptions = function (options) {
|
|
|
133
133
|
*/
|
|
134
134
|
Cron.prototype.next = function (prev) {
|
|
135
135
|
prev = new CronDate(prev, this.options.timezone);
|
|
136
|
-
|
|
136
|
+
const next = this._next(prev);
|
|
137
137
|
return next ? next.getDate() : null;
|
|
138
138
|
};
|
|
139
139
|
|
|
@@ -144,8 +144,8 @@ Cron.prototype.next = function (prev) {
|
|
|
144
144
|
* @returns {boolean} - Running or not
|
|
145
145
|
*/
|
|
146
146
|
Cron.prototype.running = function () {
|
|
147
|
-
|
|
148
|
-
|
|
147
|
+
const msLeft = this.msToNext(this.previousrun);
|
|
148
|
+
const running = !this.options.paused && this.fn !== void 0;
|
|
149
149
|
return msLeft !== null && running;
|
|
150
150
|
};
|
|
151
151
|
|
|
@@ -174,7 +174,7 @@ Cron.prototype._next = function (prev) {
|
|
|
174
174
|
}
|
|
175
175
|
|
|
176
176
|
// Calculate next run
|
|
177
|
-
|
|
177
|
+
const nextRun = new CronDate(prev, this.options.timezone).increment(this.pattern);
|
|
178
178
|
|
|
179
179
|
if ((nextRun === null) ||
|
|
180
180
|
(this.options.maxRuns <= 0) ||
|
|
@@ -197,7 +197,7 @@ Cron.prototype._next = function (prev) {
|
|
|
197
197
|
*/
|
|
198
198
|
Cron.prototype.msToNext = function (prev) {
|
|
199
199
|
prev = new CronDate(prev, this.options.timezone);
|
|
200
|
-
|
|
200
|
+
const next = this._next(prev);
|
|
201
201
|
if( next ) {
|
|
202
202
|
return (next.getTime(true) - prev.getTime(true));
|
|
203
203
|
} else {
|
|
@@ -246,55 +246,53 @@ Cron.prototype.resume = function () {
|
|
|
246
246
|
*/
|
|
247
247
|
Cron.prototype.schedule = function (func) {
|
|
248
248
|
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
249
|
+
// Update function if passed
|
|
250
|
+
if (func) {
|
|
251
|
+
this.fn = func;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
// Get ms to next run, bail out early if waitMs is null (no next run)
|
|
255
|
+
let waitMs = this.msToNext(this.previousrun);
|
|
256
|
+
if ( waitMs === null ) return this;
|
|
253
257
|
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
258
|
+
// Prioritize context before closure,
|
|
259
|
+
// to allow testing of maximum delay.
|
|
260
|
+
const _maxDelay = this.maxDelay || maxDelay;
|
|
257
261
|
|
|
258
262
|
// setTimeout cant handle more than Math.pow(2, 32 - 1) - 1 ms
|
|
259
263
|
if( waitMs > _maxDelay ) {
|
|
260
264
|
waitMs = _maxDelay;
|
|
261
265
|
}
|
|
262
266
|
|
|
263
|
-
//
|
|
264
|
-
|
|
265
|
-
self.fn = func;
|
|
266
|
-
}
|
|
267
|
+
// Ok, go!
|
|
268
|
+
const go = () => {
|
|
267
269
|
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
// Are we running? If waitMs is maxed out, this is a blank run
|
|
273
|
-
if( waitMs !== _maxDelay ) {
|
|
274
|
-
|
|
275
|
-
if ( !self.options.paused ) {
|
|
276
|
-
self.options.maxRuns--;
|
|
277
|
-
|
|
278
|
-
if (self.options.catch) {
|
|
279
|
-
try {
|
|
280
|
-
self.fn(self);
|
|
281
|
-
} catch (_e) {
|
|
282
|
-
// Throw it away
|
|
283
|
-
}
|
|
284
|
-
} else {
|
|
285
|
-
self.fn(self);
|
|
286
|
-
}
|
|
287
|
-
}
|
|
270
|
+
if( waitMs !== _maxDelay && !this.options.paused ) {
|
|
271
|
+
|
|
272
|
+
this.options.maxRuns--;
|
|
288
273
|
|
|
289
|
-
|
|
274
|
+
// Always catch errors, but only re-throw if options.catch is not set
|
|
275
|
+
if (this.options.catch) {
|
|
276
|
+
try {
|
|
277
|
+
this.fn(this, this.options.context);
|
|
278
|
+
} catch (_e) {
|
|
279
|
+
// Ignore
|
|
280
|
+
}
|
|
281
|
+
} else {
|
|
282
|
+
this.fn(this, this.options.context);
|
|
290
283
|
}
|
|
291
284
|
|
|
292
|
-
|
|
293
|
-
self.schedule();
|
|
285
|
+
this.previousrun = new CronDate(void 0, this.options.timezone);
|
|
294
286
|
|
|
295
|
-
}
|
|
296
|
-
}
|
|
287
|
+
}
|
|
297
288
|
|
|
289
|
+
// Recurse
|
|
290
|
+
this.schedule();
|
|
291
|
+
|
|
292
|
+
};
|
|
293
|
+
|
|
294
|
+
this.currentTimeout = setTimeout(go, waitMs );
|
|
295
|
+
|
|
298
296
|
return this;
|
|
299
297
|
|
|
300
298
|
};
|
package/src/date.js
CHANGED
|
@@ -70,7 +70,7 @@ CronDate.prototype.fromCronDate = function (date) {
|
|
|
70
70
|
* @param {Date} date - Input date
|
|
71
71
|
*/
|
|
72
72
|
CronDate.prototype.apply = function () {
|
|
73
|
-
|
|
73
|
+
const newDate = new Date(this.years, this.months, this.days, this.hours, this.minutes, this.seconds, this.milliseconds);
|
|
74
74
|
|
|
75
75
|
this.milliseconds = newDate.getMilliseconds();
|
|
76
76
|
this.seconds = newDate.getSeconds();
|
|
@@ -89,7 +89,7 @@ CronDate.prototype.apply = function () {
|
|
|
89
89
|
*/
|
|
90
90
|
CronDate.prototype.fromString = function (str) {
|
|
91
91
|
|
|
92
|
-
|
|
92
|
+
const parsedDate = this.parseISOLocal(str);
|
|
93
93
|
|
|
94
94
|
// Throw if we did get an invalid date
|
|
95
95
|
if( isNaN(parsedDate) ) {
|
|
@@ -115,9 +115,8 @@ CronDate.prototype.increment = function (pattern, rerun) {
|
|
|
115
115
|
|
|
116
116
|
this.milliseconds = 0;
|
|
117
117
|
|
|
118
|
-
|
|
119
|
-
origTime =
|
|
120
|
-
|
|
118
|
+
const
|
|
119
|
+
origTime = this.getTime(),
|
|
121
120
|
|
|
122
121
|
/**
|
|
123
122
|
* Find next
|
|
@@ -130,14 +129,14 @@ CronDate.prototype.increment = function (pattern, rerun) {
|
|
|
130
129
|
* @returns {boolean}
|
|
131
130
|
*
|
|
132
131
|
*/
|
|
133
|
-
findNext =
|
|
132
|
+
findNext = (target, pattern, offset, override) => {
|
|
134
133
|
|
|
135
|
-
|
|
134
|
+
const startPos = (override === void 0) ? this[target] + offset : 0 + offset;
|
|
136
135
|
|
|
137
136
|
for( let i = startPos; i < pattern[target].length; i++ ) {
|
|
138
137
|
|
|
139
138
|
if( pattern[target][i] ) {
|
|
140
|
-
|
|
139
|
+
this[target] = i-offset;
|
|
141
140
|
return true;
|
|
142
141
|
}
|
|
143
142
|
}
|
|
@@ -145,7 +144,7 @@ CronDate.prototype.increment = function (pattern, rerun) {
|
|
|
145
144
|
|
|
146
145
|
},
|
|
147
146
|
|
|
148
|
-
resetPrevious =
|
|
147
|
+
resetPrevious = () => {
|
|
149
148
|
// Now when we have gone to next minute, we have to set seconds to the first match
|
|
150
149
|
// Now we are at 00:01:05 following the same example.
|
|
151
150
|
//
|
|
@@ -171,17 +170,17 @@ CronDate.prototype.increment = function (pattern, rerun) {
|
|
|
171
170
|
// Third item is an offset. if months is handled 0-11 in js date object, and we get 1-12
|
|
172
171
|
// from pattern. Offset should be -1
|
|
173
172
|
// ]
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
doing = 0;
|
|
173
|
+
const toDo = [
|
|
174
|
+
["seconds", "minutes", 0],
|
|
175
|
+
["minutes", "hours", 0],
|
|
176
|
+
["hours", "days", 0],
|
|
177
|
+
["days", "months", -1],
|
|
178
|
+
["months", "years", 0]
|
|
179
|
+
];
|
|
182
180
|
|
|
183
181
|
// Ok, we're working our way trough the toDo array, top to bottom
|
|
184
182
|
// If we reach 5, work is done
|
|
183
|
+
let doing = 0;
|
|
185
184
|
while(doing < 5) {
|
|
186
185
|
|
|
187
186
|
// findNext sets the current member to next match in pattern
|
|
@@ -212,9 +211,9 @@ CronDate.prototype.increment = function (pattern, rerun) {
|
|
|
212
211
|
}
|
|
213
212
|
|
|
214
213
|
// If anything changed, recreate this CronDate and run again without incrementing
|
|
215
|
-
if (origTime !=
|
|
216
|
-
|
|
217
|
-
return
|
|
214
|
+
if (origTime != this.getTime()) {
|
|
215
|
+
this.apply();
|
|
216
|
+
return this.increment(pattern, true);
|
|
218
217
|
} else {
|
|
219
218
|
return this;
|
|
220
219
|
}
|
|
@@ -229,11 +228,11 @@ CronDate.prototype.increment = function (pattern, rerun) {
|
|
|
229
228
|
* @returns {Date}
|
|
230
229
|
*/
|
|
231
230
|
CronDate.prototype.getDate = function (internal) {
|
|
232
|
-
|
|
231
|
+
const targetDate = new Date(this.years, this.months, this.days, this.hours, this.minutes, this.seconds, this.milliseconds);
|
|
233
232
|
if (internal || !this.timezone) {
|
|
234
233
|
return targetDate;
|
|
235
234
|
} else {
|
|
236
|
-
|
|
235
|
+
const offset = convertTZ(targetDate, this.timezone).getTime()-targetDate.getTime();
|
|
237
236
|
return new Date(targetDate.getTime()-offset);
|
|
238
237
|
}
|
|
239
238
|
};
|
|
@@ -253,25 +252,25 @@ CronDate.prototype.getTime = function (internal) {
|
|
|
253
252
|
* Takes a iso 8001 local date time string and creates a Date object
|
|
254
253
|
* @private
|
|
255
254
|
*
|
|
256
|
-
* @param {string}
|
|
255
|
+
* @param {string} dateTimeString - an ISO 8001 format date and time string
|
|
257
256
|
* with all components, e.g. 2015-11-24T19:40:00
|
|
258
257
|
* @returns {Date|number} - Date instance from parsing the string. May be NaN.
|
|
259
258
|
*/
|
|
260
|
-
CronDate.prototype.parseISOLocal = function (
|
|
261
|
-
|
|
259
|
+
CronDate.prototype.parseISOLocal = function (dateTimeString) {
|
|
260
|
+
const dateTimeStringSplit = dateTimeString.split(/\D/);
|
|
262
261
|
|
|
263
262
|
// Check for completeness
|
|
264
|
-
if (
|
|
263
|
+
if (dateTimeStringSplit.length < 6) {
|
|
265
264
|
return NaN;
|
|
266
265
|
}
|
|
267
266
|
|
|
268
|
-
|
|
269
|
-
year = parseInt(
|
|
270
|
-
month = parseInt(
|
|
271
|
-
day = parseInt(
|
|
272
|
-
hour = parseInt(
|
|
273
|
-
minute = parseInt(
|
|
274
|
-
second = parseInt(
|
|
267
|
+
const
|
|
268
|
+
year = parseInt(dateTimeStringSplit[0], 10),
|
|
269
|
+
month = parseInt(dateTimeStringSplit[1], 10),
|
|
270
|
+
day = parseInt(dateTimeStringSplit[2], 10),
|
|
271
|
+
hour = parseInt(dateTimeStringSplit[3], 10),
|
|
272
|
+
minute = parseInt(dateTimeStringSplit[4], 10),
|
|
273
|
+
second = parseInt(dateTimeStringSplit[5], 10);
|
|
275
274
|
|
|
276
275
|
// Check parts for numeric
|
|
277
276
|
if( isNaN(year) || isNaN(month) || isNaN(day) || isNaN(hour) || isNaN(minute) || isNaN(second) ) {
|
package/src/pattern.js
CHANGED
|
@@ -44,7 +44,7 @@ CronPattern.prototype.parse = function () {
|
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
// Split configuration on whitespace
|
|
47
|
-
|
|
47
|
+
const parts = this.pattern.trim().replace(/\s+/g, " ").split(" ");
|
|
48
48
|
|
|
49
49
|
// Validite number of configuration entries
|
|
50
50
|
if( parts.length < 5 || parts.length > 6 ) {
|
|
@@ -56,7 +56,6 @@ CronPattern.prototype.parse = function () {
|
|
|
56
56
|
parts.unshift("0");
|
|
57
57
|
}
|
|
58
58
|
|
|
59
|
-
|
|
60
59
|
// Replace alpha representations
|
|
61
60
|
parts[4] = this.replaceAlphaMonths(parts[4]);
|
|
62
61
|
parts[5] = this.replaceAlphaDays(parts[5]);
|
|
@@ -155,7 +154,7 @@ CronPattern.prototype.throwAtIllegalCharacters = function (parts) {
|
|
|
155
154
|
* @param {number} valueIndexOffset - -1 for day of month, and month, as they start at 1. 0 for seconds, hours, minutes
|
|
156
155
|
*/
|
|
157
156
|
CronPattern.prototype.handleNumber = function (conf, type, valueIndexOffset) {
|
|
158
|
-
|
|
157
|
+
const i = (parseInt(conf, 10) + valueIndexOffset);
|
|
159
158
|
|
|
160
159
|
if( i < 0 || i >= this[type].length ) {
|
|
161
160
|
throw new TypeError("CronPattern: " + type + " value out of range: '" + conf + "'");
|
|
@@ -173,7 +172,7 @@ CronPattern.prototype.handleNumber = function (conf, type, valueIndexOffset) {
|
|
|
173
172
|
* @param {number} valueIndexOffset - -1 for day of month, and month, as they start at 1. 0 for seconds, hours, minutes
|
|
174
173
|
*/
|
|
175
174
|
CronPattern.prototype.handleRangeWithStepping = function (conf, type, valueIndexOffset) {
|
|
176
|
-
|
|
175
|
+
const matches = conf.match(/^(\d+)-(\d+)\/(\d+)$/);
|
|
177
176
|
|
|
178
177
|
if( matches === null ) throw new TypeError("CronPattern: Syntax error, illegal range with stepping: '" + conf + "'");
|
|
179
178
|
|
package/types/croner.d.ts
CHANGED
|
@@ -31,6 +31,10 @@ export type CronOptions = {
|
|
|
31
31
|
* - Time zone in Europe/Stockholm format
|
|
32
32
|
*/
|
|
33
33
|
timezone?: string;
|
|
34
|
+
/**
|
|
35
|
+
* - Used to pass any object to scheduled function
|
|
36
|
+
*/
|
|
37
|
+
context?: unknown;
|
|
34
38
|
};
|
|
35
39
|
/**
|
|
36
40
|
* Cron entrypoint
|
|
@@ -116,5 +120,8 @@ export class Cron {
|
|
|
116
120
|
* @returns {Cron}
|
|
117
121
|
*/
|
|
118
122
|
public schedule(func: Function): Cron;
|
|
123
|
+
previousrun: CronDate;
|
|
124
|
+
currentTimeout: number;
|
|
119
125
|
}
|
|
120
126
|
import { CronPattern } from "./pattern.js";
|
|
127
|
+
import { CronDate } from "./date.js";
|