croner 4.0.72 → 4.0.76

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 CHANGED
@@ -1,12 +1,12 @@
1
1
  <p align="center">
2
- <img src="https://cdn.jsdelivr.net/gh/hexagon/croner@master/croner.png" alt="Croner" width="150" height="108"><br>
2
+ <img src="https://cdn.jsdelivr.net/gh/hexagon/croner@master/croner.png" alt="Croner" width="150" height="150"><br>
3
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
  ![Node.js CI](https://github.com/Hexagon/croner/workflows/Node.js%20CI/badge.svg?branch=master) [![npm version](https://badge.fury.io/js/croner.svg)](https://badge.fury.io/js/croner) [![Codacy Badge](https://app.codacy.com/project/badge/Grade/4978bdbf495941c087ecb32b120f28ff)](https://www.codacy.com/gh/Hexagon/croner/dashboard?utm_source=github.com&amp;utm_medium=referral&amp;utm_content=Hexagon/croner&amp;utm_campaign=Badge_Grade)
9
- [![MIT License](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/Hexagon/croner/blob/master/LICENSE) [![jsdelivr](https://data.jsdelivr.com/v1/package/npm/croner/badge?style=rounded)](https://www.jsdelivr.com/package/npm/croner)
9
+ [![MIT License](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/Hexagon/croner/blob/master/LICENSE) [![jsdelivr](https://data.jsdelivr.com/v1/package/gh/hexagon/croner/badge?style=rounded)](https://www.jsdelivr.com/package/gh/hexagon/croner)
10
10
 
11
11
  * Trigger functions in JavaScript using [Cron](https://en.wikipedia.org/wiki/Cron#CRON_expression) syntax
12
12
  * Pause, resume or stop execution efter a task is scheduled
@@ -42,6 +42,8 @@ More [examples](#examples)...
42
42
 
43
43
  ```npm install croner --save```
44
44
 
45
+ JavaScript
46
+
45
47
  ```javascript
46
48
  // ESM Import ...
47
49
  import Cron from "croner";
@@ -50,12 +52,25 @@ import Cron from "croner";
50
52
  const Cron = require("croner");
51
53
  ```
52
54
 
55
+ TypeScript
56
+
57
+ *Note that only default export is available in Node.js TypeScript, as the commonjs module is used internally.*
58
+
59
+ ```typescript
60
+ import Cron from "croner";
61
+
62
+ const scheduler : Cron = new Cron("* * * * * *", () => {
63
+ console.log("This will run every second.");
64
+ });
65
+ ```
66
+
67
+
53
68
  ### Deno
54
69
 
55
70
  JavaScript
56
71
 
57
72
  ```javascript
58
- import Cron from "https://cdn.jsdelivr.net/npm/croner@4/mod.ts";
73
+ import Cron from "https://cdn.jsdelivr.net/gh/hexagon/croner@4/src/croner.js";
59
74
 
60
75
  Cron("* * * * * *", () => {
61
76
  console.log("This will run every second.");
@@ -65,9 +80,9 @@ Cron("* * * * * *", () => {
65
80
  TypeScript
66
81
 
67
82
  ```typescript
68
- import { Cron } from "https://cdn.jsdelivr.net/npm/croner@4/mod.ts";
83
+ import { Cron } from "https://cdn.jsdelivr.net/gh/hexagon/croner@4/src/croner.js";
69
84
 
70
- let scheduler : Cron = new Cron("* * * * * *", {}, () => {
85
+ const _scheduler : Cron = new Cron("* * * * * *", () => {
71
86
  console.log("This will run every second.");
72
87
  });
73
88
  ```
@@ -120,7 +135,7 @@ job.schedule(() => {});
120
135
  // States
121
136
  let nextRun = job.next( /*optional*/ previousRun ); // Get a Date object representing next run
122
137
  let prevRun = job.previous( );
123
- let msToNext = job.msToNext( /*optional*/ previosRun ); // Milliseconds left to next execution
138
+ let msToNext = job.msToNext( /*optional*/ previousRun ); // Milliseconds left to next execution
124
139
  let isRunning = job.running();
125
140
 
126
141
  // Control scheduled execution
@@ -135,6 +150,7 @@ job.stop();
135
150
  | Key | Default value | Data type | Remarks |
136
151
  |--------------|----------------|----------------|---------------------------------------|
137
152
  | maxRuns | Infinite | Number | |
153
+ | catch | false | Boolean | Catch and ignore unhandled errors in triggered function |
138
154
  | timezone | undefined | String | Timezone in Europe/Stockholm format |
139
155
  | startAt | undefined | String | ISO 8601 formatted datetime (2021-10-17T23:43:00)<br>in local or specified timezone |
140
156
  | stopAt | undefined | String | ISO 8601 formatted datetime (2021-10-17T23:43:00)<br>in local or specified timezone |
@@ -170,9 +186,10 @@ job.stop();
170
186
  #### Expressions
171
187
  ```javascript
172
188
  // Run a function according to pattern
173
- Cron('0-4 */5 1,2,3 * JAN-MAR SAT', function () {
174
- console.log('This will run the first five seconds every fifth minute');
175
- console.log('of hour 1,2 and 3 every saturday in January to March.');
189
+ Cron('15-45/10 */5 1,2,3 * JAN-MAR SAT', function () {
190
+ console.log('This will run every tenth second between second 15-45');
191
+ console.log('every fifth minute of hour 1,2 and 3');
192
+ console.log('every saturday in January to March.');
176
193
  });
177
194
  ```
178
195
 
package/croner.png CHANGED
Binary file
package/dist/croner.cjs CHANGED
@@ -52,7 +52,7 @@
52
52
  * Sets internals using a Date
53
53
  * @private
54
54
  *
55
- * @param {date} date - Input date
55
+ * @param {Date} date - Input date
56
56
  * @param {boolean} fromLocal - Target already in local time
57
57
  */
58
58
  CronDate.prototype.fromDate = function (date, fromLocal) {
@@ -91,7 +91,7 @@
91
91
  * Reset internal parameters (seconds, minutes, hours) that may have exceeded their ranges
92
92
  * @private
93
93
  *
94
- * @param {date} date - Input date
94
+ * @param {Date} date - Input date
95
95
  */
96
96
  CronDate.prototype.apply = function () {
97
97
  let newDate = new Date(this.years, this.months, this.days, this.hours, this.minutes, this.seconds, this.milliseconds);
@@ -109,7 +109,7 @@
109
109
  * Sets internals by parsing a string
110
110
  * @private
111
111
  *
112
- * @param {date} date - Input date
112
+ * @param {Date} date - Input date
113
113
  */
114
114
  CronDate.prototype.fromString = function (str) {
115
115
 
@@ -250,7 +250,7 @@
250
250
  * @public
251
251
  *
252
252
  * @param {boolean} internal - If this is an internal call
253
- * @returns {date}
253
+ * @returns {Date}
254
254
  */
255
255
  CronDate.prototype.getDate = function (internal) {
256
256
  let targetDate = new Date(this.years, this.months, this.days, this.hours, this.minutes, this.seconds, this.milliseconds);
@@ -267,7 +267,7 @@
267
267
  * @public
268
268
  *
269
269
  * @param {boolean} internal - If this is an internal call
270
- * @returns {date}
270
+ * @returns {Date}
271
271
  */
272
272
  CronDate.prototype.getTime = function (internal) {
273
273
  return this.getDate(internal).getTime();
@@ -393,37 +393,45 @@
393
393
  * @param {CronPatternPart} type - Seconds/minutes etc
394
394
  * @param {string} conf - Current pattern part - *, 0-1 etc
395
395
  * @param {CronIndexOffset} valueIndexOffset
396
+ * @param {boolean} [recursed] - Is this a recursed call
396
397
  */
397
- CronPattern.prototype.partToArray = function (type, conf, valueIndexOffset) {
398
+ CronPattern.prototype.partToArray = function (type, conf, valueIndexOffset, recursed) {
398
399
 
399
- let i,
400
- split,
401
- arr = this[type];
400
+ const arr = this[type];
402
401
 
403
402
  // First off, handle wildcard
404
403
  if( conf === "*" ) {
405
- for( i = 0; i < arr.length; i++ ) {
404
+ for( let i = 0; i < arr.length; i++ ) {
406
405
  arr[i] = 1;
407
406
  }
408
407
  return;
409
408
  }
410
409
 
411
410
  // Handle separated entries (,) by recursion
412
- split = conf.split(",");
411
+ const split = conf.split(",");
413
412
  if( split.length > 1 ) {
414
- for( i = 0; i < split.length; i++ ) {
415
- this.partToArray(type, split[i], valueIndexOffset);
413
+ for( let i = 0; i < split.length; i++ ) {
414
+ this.partToArray(type, split[i], valueIndexOffset, true);
416
415
  }
417
416
 
418
- // Handle range (-)
417
+ // Handle range with stepping (x-y/z)
418
+ } else if( conf.indexOf("-") !== -1 && conf.indexOf("/") !== -1 ) {
419
+ if (recursed) throw new Error("CronPattern: Range with stepping cannot coexist with ,");
420
+
421
+ this.handleRangeWithStepping(conf, type, valueIndexOffset);
422
+
423
+ // Handle range
419
424
  } else if( conf.indexOf("-") !== -1 ) {
425
+ if (recursed) throw new Error("CronPattern: Range with stepping cannot coexist with ,");
426
+
420
427
  this.handleRange(conf, type, valueIndexOffset);
421
428
 
422
- // Handle stepping (/)
429
+ // Handle stepping
423
430
  } else if( conf.indexOf("/") !== -1 ) {
431
+ if (recursed) throw new Error("CronPattern: Range with stepping cannot coexist with ,");
432
+
424
433
  this.handleStepping(conf, type, valueIndexOffset);
425
434
 
426
- // Handle pure number
427
435
  } else {
428
436
  this.handleNumber(conf, type, valueIndexOffset);
429
437
  }
@@ -437,7 +445,7 @@
437
445
  * @param {string[]} parts - Each part split as strings
438
446
  */
439
447
  CronPattern.prototype.throwAtIllegalCharacters = function (parts) {
440
- let reValidCron = /[^/*0-9,-]+/;
448
+ const reValidCron = /[^/*0-9,-]+/;
441
449
  for(let i = 0; i < parts.length; i++) {
442
450
  if( reValidCron.test(parts[i]) ) {
443
451
  throw new TypeError("CronPattern: configuration entry " + i + " (" + parts[i] + ") contains illegal characters.");
@@ -463,6 +471,38 @@
463
471
  this[type][i] = 1;
464
472
  };
465
473
 
474
+ /**
475
+ * Take care of ranges with stepping (e.g. 3-23/5)
476
+ * @private
477
+ *
478
+ * @param {string} conf - Current part, expected to be a string like 3-23/5
479
+ * @param {string} type - One of "seconds", "minutes" etc
480
+ * @param {number} valueIndexOffset - -1 for day of month, and month, as they start at 1. 0 for seconds, hours, minutes
481
+ */
482
+ CronPattern.prototype.handleRangeWithStepping = function (conf, type, valueIndexOffset) {
483
+ let matches = conf.match(/^(\d+)-(\d+)\/(\d+)$/);
484
+
485
+ if( matches === null ) throw new TypeError("CronPattern: Syntax error, illegal range with stepping: '" + conf + "'");
486
+
487
+ let [, lower, upper, steps] = matches;
488
+ lower = parseInt(lower, 10) + valueIndexOffset;
489
+ upper = parseInt(upper, 10) + valueIndexOffset;
490
+ steps = parseInt(steps, 10) + valueIndexOffset;
491
+
492
+ if( isNaN(lower) ) throw new TypeError("CronPattern: Syntax error, illegal lower range (NaN)");
493
+ if( isNaN(upper) ) throw new TypeError("CronPattern: Syntax error, illegal upper range (NaN)");
494
+ if( isNaN(steps) ) throw new TypeError("CronPattern: Syntax error, illegal stepping: (NaN)");
495
+
496
+ if( steps === 0 ) throw new TypeError("CronPattern: Syntax error, illegal stepping: 0");
497
+ if( steps > this[type].length ) throw new TypeError("CronPattern: Syntax error, steps cannot be greater than maximum value of part ("+this[type].length+")");
498
+
499
+ if( lower < 0 || upper >= this[type].length ) throw new TypeError("CronPattern: Value out of range: '" + conf + "'");
500
+ if( lower > upper ) throw new TypeError("CronPattern: From value is larger than to value: '" + conf + "'");
501
+
502
+ for (let i = lower; i <= upper; i += steps) {
503
+ this[type][(i + valueIndexOffset)] = 1;
504
+ }
505
+ };
466
506
 
467
507
  /**
468
508
  * Take care of ranges (e.g. 1-20)
@@ -473,13 +513,13 @@
473
513
  * @param {number} valueIndexOffset - -1 for day of month, and month, as they start at 1. 0 for seconds, hours, minutes
474
514
  */
475
515
  CronPattern.prototype.handleRange = function (conf, type, valueIndexOffset) {
476
- let split = conf.split("-");
516
+ const split = conf.split("-");
477
517
 
478
518
  if( split.length !== 2 ) {
479
519
  throw new TypeError("CronPattern: Syntax error, illegal range: '" + conf + "'");
480
520
  }
481
521
 
482
- let lower = parseInt(split[0], 10) + valueIndexOffset,
522
+ const lower = parseInt(split[0], 10) + valueIndexOffset,
483
523
  upper = parseInt(split[1], 10) + valueIndexOffset;
484
524
 
485
525
  if( isNaN(lower) ) {
@@ -513,23 +553,24 @@
513
553
  */
514
554
  CronPattern.prototype.handleStepping = function (conf, type, valueIndexOffset) {
515
555
 
516
- let split = conf.split("/");
556
+ const split = conf.split("/");
517
557
 
518
558
  if( split.length !== 2 ) {
519
559
  throw new TypeError("CronPattern: Syntax error, illegal stepping: '" + conf + "'");
520
560
  }
521
561
 
562
+ let start = 0;
522
563
  if( split[0] !== "*" ) {
523
- throw new TypeError("CronPattern: Syntax error, left part of / needs to be * : '" + conf + "'");
564
+ start = parseInt(split[0], 10);
524
565
  }
525
566
 
526
- let steps = parseInt(split[1], 10);
567
+ const steps = parseInt(split[1], 10);
527
568
 
528
569
  if( isNaN(steps) ) throw new TypeError("CronPattern: Syntax error, illegal stepping: (NaN)");
529
570
  if( steps === 0 ) throw new TypeError("CronPattern: Syntax error, illegal stepping: 0");
530
571
  if( steps > this[type].length ) throw new TypeError("CronPattern: Syntax error, steps cannot be greater than maximum value of part ("+this[type].length+")");
531
572
 
532
- for( let i = 0; i < this[type].length; i+= steps ) {
573
+ for( let i = start; i < this[type].length; i+= steps ) {
533
574
  this[type][(i + valueIndexOffset)] = 1;
534
575
  }
535
576
  };
@@ -612,9 +653,10 @@
612
653
  * @typedef {Object} CronOptions - Cron scheduler options
613
654
  * @property {boolean} [paused] - Job is paused
614
655
  * @property {boolean} [kill] - Job is about to be killed or killed
656
+ * @property {boolean} [catch] - Continue exection even if a unhandled error is thrown by triggered function
615
657
  * @property {number} [maxRuns] - Maximum nuber of executions
616
- * @property {string | date} [startAt] - When to start running
617
- * @property {string | date} [stopAt] - When to stop running
658
+ * @property {string | Date} [startAt] - When to start running
659
+ * @property {string | Date} [stopAt] - When to stop running
618
660
  * @property {string} [timezone] - Time zone in Europe/Stockholm format
619
661
  */
620
662
 
@@ -688,6 +730,7 @@
688
730
  // Keep options, or set defaults
689
731
  options.paused = (options.paused === void 0) ? false : options.paused;
690
732
  options.maxRuns = (options.maxRuns === void 0) ? Infinity : options.maxRuns;
733
+ options.catch = (options.catch === void 0) ? false : options.catch;
691
734
  options.kill = false;
692
735
 
693
736
  // startAt is set, validate it
@@ -704,8 +747,8 @@
704
747
  /**
705
748
  * Find next runtime, based on supplied date. Strips milliseconds.
706
749
  *
707
- * @param {date} [prev] - Input pattern
708
- * @returns {date | null} - Next run time
750
+ * @param {Date} [prev] - Input pattern
751
+ * @returns {Date | null} - Next run time
709
752
  */
710
753
  Cron.prototype.next = function (prev) {
711
754
  prev = new CronDate(prev, this.options.timezone);
@@ -729,7 +772,7 @@
729
772
  * Return previous run time
730
773
  * @public
731
774
  *
732
- * @returns {date | null} - Previous run time
775
+ * @returns {Date | null} - Previous run time
733
776
  */
734
777
  Cron.prototype.previous = function () {
735
778
  return this.previousrun ? this.previousrun.getDate() : null;
@@ -768,7 +811,7 @@
768
811
  * Returns number of milliseconds to next run
769
812
  * @public
770
813
  *
771
- * @param {date} [prev] - Starting date, defaults to now
814
+ * @param {Date} [prev] - Starting date, defaults to now
772
815
  * @returns {number | null}
773
816
  */
774
817
  Cron.prototype.msToNext = function (prev) {
@@ -850,7 +893,16 @@
850
893
 
851
894
  if ( !self.options.paused ) {
852
895
  self.options.maxRuns--;
853
- self.fn(self);
896
+
897
+ if (self.options.catch) {
898
+ try {
899
+ self.fn(self);
900
+ } catch (_e) {
901
+ // Throw it away
902
+ }
903
+ } else {
904
+ self.fn(self);
905
+ }
854
906
  }
855
907
 
856
908
  self.previousrun = new CronDate(void 0, self.options.timezone);
@@ -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){let i,split,arr=this[type];if(conf==="*"){for(i=0;i<arr.length;i++){arr[i]=1}return}split=conf.split(",");if(split.length>1){for(i=0;i<split.length;i++){this.partToArray(type,split[i],valueIndexOffset)}}else if(conf.indexOf("-")!==-1){this.handleRange(conf,type,valueIndexOffset)}else if(conf.indexOf("/")!==-1){this.handleStepping(conf,type,valueIndexOffset)}else{this.handleNumber(conf,type,valueIndexOffset)}};CronPattern.prototype.throwAtIllegalCharacters=function(parts){let 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.handleRange=function(conf,type,valueIndexOffset){let split=conf.split("-");if(split.length!==2){throw new TypeError("CronPattern: Syntax error, illegal range: '"+conf+"'")}let 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){let split=conf.split("/");if(split.length!==2){throw new TypeError("CronPattern: Syntax error, illegal stepping: '"+conf+"'")}if(split[0]!=="*"){throw new TypeError("CronPattern: Syntax error, left part of / needs to be * : '"+conf+"'")}let 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=0;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.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--;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(){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 +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","arr","indexOf","handleRange","handleStepping","handleNumber","reValidCron","test","lower","upper","steps","maxDelay","Math","pow","options","func","processOptions","fn","schedule","paused","maxRuns","Infinity","kill","startAt","stopAt","next","prev","_next","running","msLeft","msToNext","previousrun","previous","nextRun","stop","currentTimeout","clearTimeout","pause","resume","waitMs","_maxDelay","setTimeout"],"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","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 +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){let i,split,arr=this[type];if(conf==="*"){for(i=0;i<arr.length;i++){arr[i]=1}return}split=conf.split(",");if(split.length>1){for(i=0;i<split.length;i++){this.partToArray(type,split[i],valueIndexOffset)}}else if(conf.indexOf("-")!==-1){this.handleRange(conf,type,valueIndexOffset)}else if(conf.indexOf("/")!==-1){this.handleStepping(conf,type,valueIndexOffset)}else{this.handleNumber(conf,type,valueIndexOffset)}};CronPattern.prototype.throwAtIllegalCharacters=function(parts){let 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.handleRange=function(conf,type,valueIndexOffset){let split=conf.split("-");if(split.length!==2){throw new TypeError("CronPattern: Syntax error, illegal range: '"+conf+"'")}let 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){let split=conf.split("/");if(split.length!==2){throw new TypeError("CronPattern: Syntax error, illegal stepping: '"+conf+"'")}if(split[0]!=="*"){throw new TypeError("CronPattern: Syntax error, left part of / needs to be * : '"+conf+"'")}let 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=0;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.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--;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(){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 +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","arr","indexOf","handleRange","handleStepping","handleNumber","reValidCron","test","lower","upper","steps","maxDelay","Math","pow","Cron","options","func","processOptions","fn","schedule","paused","maxRuns","Infinity","kill","startAt","stopAt","next","prev","_next","running","msLeft","msToNext","previousrun","previous","nextRun","stop","currentTimeout","clearTimeout","pause","resume","waitMs","_maxDelay","setTimeout"],"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","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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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "croner",
3
- "version": "4.0.72",
4
- "description": "Trigger functions in javascript using Cron syntax. No deps. All features.",
3
+ "version": "4.0.76",
4
+ "description": "Trigger functions in javascript using Cron syntax. No dependencies.",
5
5
  "author": "Hexagon <github.com/hexagon>",
6
6
  "homepage": "https://hexagon.github.io/croner",
7
7
  "contributors": [
@@ -21,10 +21,8 @@
21
21
  "dist/*",
22
22
  "src/*",
23
23
  "types/*",
24
- "dist-legacy/*",
25
24
  "SECURITY.md",
26
- "croner.png",
27
- "mod.ts"
25
+ "croner.png"
28
26
  ],
29
27
  "keywords": [
30
28
  "cron",
@@ -53,7 +51,7 @@
53
51
  "main": "./dist/croner.cjs",
54
52
  "browser": "./dist/croner.min.js",
55
53
  "module": "./src/croner.js",
56
- "types": "types/croner.d.ts",
54
+ "types": "types/croner.single.d.ts",
57
55
  "exports": {
58
56
  ".": {
59
57
  "import": "./src/croner.js",
package/src/croner.js CHANGED
@@ -34,9 +34,10 @@ import { CronPattern } from "./pattern.js";
34
34
  * @typedef {Object} CronOptions - Cron scheduler options
35
35
  * @property {boolean} [paused] - Job is paused
36
36
  * @property {boolean} [kill] - Job is about to be killed or killed
37
+ * @property {boolean} [catch] - Continue exection even if a unhandled error is thrown by triggered function
37
38
  * @property {number} [maxRuns] - Maximum nuber of executions
38
- * @property {string | date} [startAt] - When to start running
39
- * @property {string | date} [stopAt] - When to stop running
39
+ * @property {string | Date} [startAt] - When to start running
40
+ * @property {string | Date} [stopAt] - When to stop running
40
41
  * @property {string} [timezone] - Time zone in Europe/Stockholm format
41
42
  */
42
43
 
@@ -110,6 +111,7 @@ Cron.prototype.processOptions = function (options) {
110
111
  // Keep options, or set defaults
111
112
  options.paused = (options.paused === void 0) ? false : options.paused;
112
113
  options.maxRuns = (options.maxRuns === void 0) ? Infinity : options.maxRuns;
114
+ options.catch = (options.catch === void 0) ? false : options.catch;
113
115
  options.kill = false;
114
116
 
115
117
  // startAt is set, validate it
@@ -126,8 +128,8 @@ Cron.prototype.processOptions = function (options) {
126
128
  /**
127
129
  * Find next runtime, based on supplied date. Strips milliseconds.
128
130
  *
129
- * @param {date} [prev] - Input pattern
130
- * @returns {date | null} - Next run time
131
+ * @param {Date} [prev] - Input pattern
132
+ * @returns {Date | null} - Next run time
131
133
  */
132
134
  Cron.prototype.next = function (prev) {
133
135
  prev = new CronDate(prev, this.options.timezone);
@@ -151,7 +153,7 @@ Cron.prototype.running = function () {
151
153
  * Return previous run time
152
154
  * @public
153
155
  *
154
- * @returns {date | null} - Previous run time
156
+ * @returns {Date | null} - Previous run time
155
157
  */
156
158
  Cron.prototype.previous = function () {
157
159
  return this.previousrun ? this.previousrun.getDate() : null;
@@ -190,7 +192,7 @@ Cron.prototype._next = function (prev) {
190
192
  * Returns number of milliseconds to next run
191
193
  * @public
192
194
  *
193
- * @param {date} [prev] - Starting date, defaults to now
195
+ * @param {Date} [prev] - Starting date, defaults to now
194
196
  * @returns {number | null}
195
197
  */
196
198
  Cron.prototype.msToNext = function (prev) {
@@ -272,7 +274,16 @@ Cron.prototype.schedule = function (func) {
272
274
 
273
275
  if ( !self.options.paused ) {
274
276
  self.options.maxRuns--;
275
- self.fn(self);
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
+ }
276
287
  }
277
288
 
278
289
  self.previousrun = new CronDate(void 0, self.options.timezone);
package/src/date.js CHANGED
@@ -28,7 +28,7 @@ function CronDate (date, timezone) {
28
28
  * Sets internals using a Date
29
29
  * @private
30
30
  *
31
- * @param {date} date - Input date
31
+ * @param {Date} date - Input date
32
32
  * @param {boolean} fromLocal - Target already in local time
33
33
  */
34
34
  CronDate.prototype.fromDate = function (date, fromLocal) {
@@ -67,7 +67,7 @@ CronDate.prototype.fromCronDate = function (date) {
67
67
  * Reset internal parameters (seconds, minutes, hours) that may have exceeded their ranges
68
68
  * @private
69
69
  *
70
- * @param {date} date - Input date
70
+ * @param {Date} date - Input date
71
71
  */
72
72
  CronDate.prototype.apply = function () {
73
73
  let newDate = new Date(this.years, this.months, this.days, this.hours, this.minutes, this.seconds, this.milliseconds);
@@ -85,7 +85,7 @@ CronDate.prototype.apply = function () {
85
85
  * Sets internals by parsing a string
86
86
  * @private
87
87
  *
88
- * @param {date} date - Input date
88
+ * @param {Date} date - Input date
89
89
  */
90
90
  CronDate.prototype.fromString = function (str) {
91
91
 
@@ -226,7 +226,7 @@ CronDate.prototype.increment = function (pattern, rerun) {
226
226
  * @public
227
227
  *
228
228
  * @param {boolean} internal - If this is an internal call
229
- * @returns {date}
229
+ * @returns {Date}
230
230
  */
231
231
  CronDate.prototype.getDate = function (internal) {
232
232
  let targetDate = new Date(this.years, this.months, this.days, this.hours, this.minutes, this.seconds, this.milliseconds);
@@ -243,7 +243,7 @@ CronDate.prototype.getDate = function (internal) {
243
243
  * @public
244
244
  *
245
245
  * @param {boolean} internal - If this is an internal call
246
- * @returns {date}
246
+ * @returns {Date}
247
247
  */
248
248
  CronDate.prototype.getTime = function (internal) {
249
249
  return this.getDate(internal).getTime();
package/src/pattern.js CHANGED
@@ -86,37 +86,45 @@ CronPattern.prototype.parse = function () {
86
86
  * @param {CronPatternPart} type - Seconds/minutes etc
87
87
  * @param {string} conf - Current pattern part - *, 0-1 etc
88
88
  * @param {CronIndexOffset} valueIndexOffset
89
+ * @param {boolean} [recursed] - Is this a recursed call
89
90
  */
90
- CronPattern.prototype.partToArray = function (type, conf, valueIndexOffset) {
91
+ CronPattern.prototype.partToArray = function (type, conf, valueIndexOffset, recursed) {
91
92
 
92
- let i,
93
- split,
94
- arr = this[type];
93
+ const arr = this[type];
95
94
 
96
95
  // First off, handle wildcard
97
96
  if( conf === "*" ) {
98
- for( i = 0; i < arr.length; i++ ) {
97
+ for( let i = 0; i < arr.length; i++ ) {
99
98
  arr[i] = 1;
100
99
  }
101
100
  return;
102
101
  }
103
102
 
104
103
  // Handle separated entries (,) by recursion
105
- split = conf.split(",");
104
+ const split = conf.split(",");
106
105
  if( split.length > 1 ) {
107
- for( i = 0; i < split.length; i++ ) {
108
- this.partToArray(type, split[i], valueIndexOffset);
106
+ for( let i = 0; i < split.length; i++ ) {
107
+ this.partToArray(type, split[i], valueIndexOffset, true);
109
108
  }
110
109
 
111
- // Handle range (-)
110
+ // Handle range with stepping (x-y/z)
111
+ } else if( conf.indexOf("-") !== -1 && conf.indexOf("/") !== -1 ) {
112
+ if (recursed) throw new Error("CronPattern: Range with stepping cannot coexist with ,");
113
+
114
+ this.handleRangeWithStepping(conf, type, valueIndexOffset);
115
+
116
+ // Handle range
112
117
  } else if( conf.indexOf("-") !== -1 ) {
118
+ if (recursed) throw new Error("CronPattern: Range with stepping cannot coexist with ,");
119
+
113
120
  this.handleRange(conf, type, valueIndexOffset);
114
121
 
115
- // Handle stepping (/)
122
+ // Handle stepping
116
123
  } else if( conf.indexOf("/") !== -1 ) {
124
+ if (recursed) throw new Error("CronPattern: Range with stepping cannot coexist with ,");
125
+
117
126
  this.handleStepping(conf, type, valueIndexOffset);
118
127
 
119
- // Handle pure number
120
128
  } else {
121
129
  this.handleNumber(conf, type, valueIndexOffset);
122
130
  }
@@ -130,7 +138,7 @@ CronPattern.prototype.partToArray = function (type, conf, valueIndexOffset) {
130
138
  * @param {string[]} parts - Each part split as strings
131
139
  */
132
140
  CronPattern.prototype.throwAtIllegalCharacters = function (parts) {
133
- let reValidCron = /[^/*0-9,-]+/;
141
+ const reValidCron = /[^/*0-9,-]+/;
134
142
  for(let i = 0; i < parts.length; i++) {
135
143
  if( reValidCron.test(parts[i]) ) {
136
144
  throw new TypeError("CronPattern: configuration entry " + i + " (" + parts[i] + ") contains illegal characters.");
@@ -156,6 +164,38 @@ CronPattern.prototype.handleNumber = function (conf, type, valueIndexOffset) {
156
164
  this[type][i] = 1;
157
165
  };
158
166
 
167
+ /**
168
+ * Take care of ranges with stepping (e.g. 3-23/5)
169
+ * @private
170
+ *
171
+ * @param {string} conf - Current part, expected to be a string like 3-23/5
172
+ * @param {string} type - One of "seconds", "minutes" etc
173
+ * @param {number} valueIndexOffset - -1 for day of month, and month, as they start at 1. 0 for seconds, hours, minutes
174
+ */
175
+ CronPattern.prototype.handleRangeWithStepping = function (conf, type, valueIndexOffset) {
176
+ let matches = conf.match(/^(\d+)-(\d+)\/(\d+)$/);
177
+
178
+ if( matches === null ) throw new TypeError("CronPattern: Syntax error, illegal range with stepping: '" + conf + "'");
179
+
180
+ let [, lower, upper, steps] = matches;
181
+ lower = parseInt(lower, 10) + valueIndexOffset;
182
+ upper = parseInt(upper, 10) + valueIndexOffset;
183
+ steps = parseInt(steps, 10) + valueIndexOffset;
184
+
185
+ if( isNaN(lower) ) throw new TypeError("CronPattern: Syntax error, illegal lower range (NaN)");
186
+ if( isNaN(upper) ) throw new TypeError("CronPattern: Syntax error, illegal upper range (NaN)");
187
+ if( isNaN(steps) ) throw new TypeError("CronPattern: Syntax error, illegal stepping: (NaN)");
188
+
189
+ if( steps === 0 ) throw new TypeError("CronPattern: Syntax error, illegal stepping: 0");
190
+ if( steps > this[type].length ) throw new TypeError("CronPattern: Syntax error, steps cannot be greater than maximum value of part ("+this[type].length+")");
191
+
192
+ if( lower < 0 || upper >= this[type].length ) throw new TypeError("CronPattern: Value out of range: '" + conf + "'");
193
+ if( lower > upper ) throw new TypeError("CronPattern: From value is larger than to value: '" + conf + "'");
194
+
195
+ for (let i = lower; i <= upper; i += steps) {
196
+ this[type][(i + valueIndexOffset)] = 1;
197
+ }
198
+ };
159
199
 
160
200
  /**
161
201
  * Take care of ranges (e.g. 1-20)
@@ -166,13 +206,13 @@ CronPattern.prototype.handleNumber = function (conf, type, valueIndexOffset) {
166
206
  * @param {number} valueIndexOffset - -1 for day of month, and month, as they start at 1. 0 for seconds, hours, minutes
167
207
  */
168
208
  CronPattern.prototype.handleRange = function (conf, type, valueIndexOffset) {
169
- let split = conf.split("-");
209
+ const split = conf.split("-");
170
210
 
171
211
  if( split.length !== 2 ) {
172
212
  throw new TypeError("CronPattern: Syntax error, illegal range: '" + conf + "'");
173
213
  }
174
214
 
175
- let lower = parseInt(split[0], 10) + valueIndexOffset,
215
+ const lower = parseInt(split[0], 10) + valueIndexOffset,
176
216
  upper = parseInt(split[1], 10) + valueIndexOffset;
177
217
 
178
218
  if( isNaN(lower) ) {
@@ -206,23 +246,24 @@ CronPattern.prototype.handleRange = function (conf, type, valueIndexOffset) {
206
246
  */
207
247
  CronPattern.prototype.handleStepping = function (conf, type, valueIndexOffset) {
208
248
 
209
- let split = conf.split("/");
249
+ const split = conf.split("/");
210
250
 
211
251
  if( split.length !== 2 ) {
212
252
  throw new TypeError("CronPattern: Syntax error, illegal stepping: '" + conf + "'");
213
253
  }
214
254
 
255
+ let start = 0;
215
256
  if( split[0] !== "*" ) {
216
- throw new TypeError("CronPattern: Syntax error, left part of / needs to be * : '" + conf + "'");
257
+ start = parseInt(split[0], 10);
217
258
  }
218
259
 
219
- let steps = parseInt(split[1], 10);
260
+ const steps = parseInt(split[1], 10);
220
261
 
221
262
  if( isNaN(steps) ) throw new TypeError("CronPattern: Syntax error, illegal stepping: (NaN)");
222
263
  if( steps === 0 ) throw new TypeError("CronPattern: Syntax error, illegal stepping: 0");
223
264
  if( steps > this[type].length ) throw new TypeError("CronPattern: Syntax error, steps cannot be greater than maximum value of part ("+this[type].length+")");
224
265
 
225
- for( let i = 0; i < this[type].length; i+= steps ) {
266
+ for( let i = start; i < this[type].length; i+= steps ) {
226
267
  this[type][(i + valueIndexOffset)] = 1;
227
268
  }
228
269
  };
@@ -11,6 +11,10 @@ export type CronOptions = {
11
11
  * - Job is about to be killed or killed
12
12
  */
13
13
  kill?: boolean;
14
+ /**
15
+ * - Continue exection even if a unhandled error is thrown by triggered function
16
+ */
17
+ catch?: boolean;
14
18
  /**
15
19
  * - Maximum nuber of executions
16
20
  */
@@ -18,11 +22,11 @@ export type CronOptions = {
18
22
  /**
19
23
  * - When to start running
20
24
  */
21
- startAt?: string | any;
25
+ startAt?: string | Date;
22
26
  /**
23
27
  * - When to stop running
24
28
  */
25
- stopAt?: string | any;
29
+ stopAt?: string | Date;
26
30
  /**
27
31
  * - Time zone in Europe/Stockholm format
28
32
  */
@@ -58,10 +62,10 @@ export class Cron {
58
62
  /**
59
63
  * Find next runtime, based on supplied date. Strips milliseconds.
60
64
  *
61
- * @param {date} [prev] - Input pattern
62
- * @returns {date | null} - Next run time
65
+ * @param {Date} [prev] - Input pattern
66
+ * @returns {Date | null} - Next run time
63
67
  */
64
- next(prev?: any): any | null;
68
+ next(prev?: Date): Date | null;
65
69
  /**
66
70
  * Is running?
67
71
  * @public
@@ -73,18 +77,18 @@ export class Cron {
73
77
  * Return previous run time
74
78
  * @public
75
79
  *
76
- * @returns {date | null} - Previous run time
80
+ * @returns {Date | null} - Previous run time
77
81
  */
78
- public previous(): any | null;
82
+ public previous(): Date | null;
79
83
  private _next;
80
84
  /**
81
85
  * Returns number of milliseconds to next run
82
86
  * @public
83
87
  *
84
- * @param {date} [prev] - Starting date, defaults to now
88
+ * @param {Date} [prev] - Starting date, defaults to now
85
89
  * @returns {number | null}
86
90
  */
87
- public msToNext(prev?: any): number | null;
91
+ public msToNext(prev?: Date): number | null;
88
92
  /**
89
93
  * Stop execution
90
94
  * @public
@@ -41,16 +41,16 @@ export class CronDate {
41
41
  * @public
42
42
  *
43
43
  * @param {boolean} internal - If this is an internal call
44
- * @returns {date}
44
+ * @returns {Date}
45
45
  */
46
- public getDate(internal: boolean): any;
46
+ public getDate(internal: boolean): Date;
47
47
  /**
48
48
  * Convert current state back to a javascript Date() and return UTC milliseconds
49
49
  * @public
50
50
  *
51
51
  * @param {boolean} internal - If this is an internal call
52
- * @returns {date}
52
+ * @returns {Date}
53
53
  */
54
- public getTime(internal: boolean): any;
54
+ public getTime(internal: boolean): Date;
55
55
  private parseISOLocal;
56
56
  }
@@ -57,6 +57,7 @@ export class CronPattern {
57
57
  private partToArray;
58
58
  private throwAtIllegalCharacters;
59
59
  private handleNumber;
60
+ private handleRangeWithStepping;
60
61
  private handleRange;
61
62
  private handleStepping;
62
63
  private replaceAlphaDays;
File without changes
package/mod.ts DELETED
@@ -1,3 +0,0 @@
1
- import { Cron } from "./src/croner.js";
2
- export { Cron };
3
- export default Cron;
package/types/mod.d.ts DELETED
@@ -1,3 +0,0 @@
1
- import { Cron } from "./src/croner.js";
2
- export { Cron };
3
- export default Cron;