croner 4.0.75 → 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
@@ -15,7 +15,7 @@
15
15
  * Works in Deno >=1.16
16
16
  * Works in browsers as standalone, UMD or ES-module.
17
17
  * **Experimental feature:** Schedule in specific target timezones
18
- * Includes [TypeScript](https://www.typescriptlang.org/) typings, see Usage/Typescript
18
+ * Includes [TypeScript](https://www.typescriptlang.org/) typings
19
19
 
20
20
  Quick examples:
21
21
 
@@ -135,7 +135,7 @@ job.schedule(() => {});
135
135
  // States
136
136
  let nextRun = job.next( /*optional*/ previousRun ); // Get a Date object representing next run
137
137
  let prevRun = job.previous( );
138
- let msToNext = job.msToNext( /*optional*/ previosRun ); // Milliseconds left to next execution
138
+ let msToNext = job.msToNext( /*optional*/ previousRun ); // Milliseconds left to next execution
139
139
  let isRunning = job.running();
140
140
 
141
141
  // Control scheduled execution
@@ -186,9 +186,10 @@ job.stop();
186
186
  #### Expressions
187
187
  ```javascript
188
188
  // Run a function according to pattern
189
- Cron('0-4 */5 1,2,3 * JAN-MAR SAT', function () {
190
- console.log('This will run the first five seconds every fifth minute');
191
- 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.');
192
193
  });
193
194
  ```
194
195
 
package/croner.png CHANGED
Binary file
package/dist/croner.cjs CHANGED
@@ -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
  };
@@ -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.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(){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","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","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":"CAAA,SAAWA,OAAQC,gBACXC,UAAY,iBAAmBC,SAAW,YAAcA,OAAOD,QAAUD,iBACzEG,SAAW,YAAcA,OAAOC,IAAMD,OAAOH,UACnDD,cAAgBM,aAAe,YAAcA,WAAaN,QAAUO,KAAMP,OAAOQ,KAAOP,YAH1F,CAIGQ,KAAM,wBAkBR,SAASC,UAAUC,KAAMC,UACxB,OAAO,IAAIC,KAAKF,KAAKG,eAAe,QAAS,CAACC,SAAUH,YAUzD,SAASI,SAAUL,KAAMM,UAExBR,KAAKQ,SAAWA,SAEhB,GAAIN,MAAQA,gBAAgBE,KAAM,CACjCJ,KAAKS,SAASP,WACR,GAAIA,YAAc,EAAG,CAC3BF,KAAKS,SAAS,IAAIL,WACZ,GAAIF,aAAeA,OAAS,SAAU,CAC5CF,KAAKU,WAAWR,WACV,GAAIA,gBAAgBK,SAAU,CACpCP,KAAKW,aAAaT,UACZ,CACN,MAAM,IAAIU,UAAU,kCAAoCV,KAAO,kDAWjEK,SAASM,UAAUJ,SAAW,SAAUP,KAAMY,WAE7C,GAAId,KAAKQ,WAAaM,UAAW,CAChCZ,KAAOD,UAAUC,KAAMF,KAAKQ,UAG7BR,KAAKe,aAAeb,KAAKc,kBACzBhB,KAAKiB,QAAUf,KAAKgB,aACpBlB,KAAKmB,QAAUjB,KAAKkB,aACpBpB,KAAKqB,MAAQnB,KAAKoB,WAClBtB,KAAKuB,KAAOrB,KAAKsB,UACjBxB,KAAKyB,OAAUvB,KAAKwB,WACpB1B,KAAK2B,MAAQzB,KAAK0B,eASnBrB,SAASM,UAAUF,aAAe,SAAUT,MAC3CF,KAAKQ,SAAWN,KAAKM,SACrBR,KAAKe,aAAeb,KAAKa,aACzBf,KAAKiB,QAAUf,KAAKe,QACpBjB,KAAKmB,QAAUjB,KAAKiB,QACpBnB,KAAKqB,MAAQnB,KAAKmB,MAClBrB,KAAKuB,KAAOrB,KAAKqB,KACjBvB,KAAKyB,OAAUvB,KAAKuB,OACpBzB,KAAK2B,MAAQzB,KAAKyB,OASnBpB,SAASM,UAAUgB,MAAQ,WAC1BC,IAAIC,QAAU,IAAI3B,KAAKJ,KAAK2B,MAAO3B,KAAKyB,OAAQzB,KAAKuB,KAAMvB,KAAKqB,MAAOrB,KAAKmB,QAASnB,KAAKiB,QAASjB,KAAKe,cAExGf,KAAKe,aAAegB,QAAQf,kBAC5BhB,KAAKiB,QAAUc,QAAQb,aACvBlB,KAAKmB,QAAUY,QAAQX,aACvBpB,KAAKqB,MAAQU,QAAQT,WACrBtB,KAAKuB,KAAOQ,QAAQP,UACpBxB,KAAKyB,OAAUM,QAAQL,WACvB1B,KAAK2B,MAAQI,QAAQH,eAStBrB,SAASM,UAAUH,WAAa,SAAUsB,KAEzCF,IAAIG,WAAajC,KAAKkC,cAAcF,KAGpC,GAAIG,MAAMF,YAAc,CACvB,MAAM,IAAIrB,UAAU,6EAGrBZ,KAAKS,SAASwB,WAAY,OAW3B1B,SAASM,UAAUuB,UAAY,SAAUC,QAASC,OAEjD,IAAKA,MAAO,CACXtC,KAAKiB,SAAW,EAGjBjB,KAAKe,aAAe,EAEpBe,IAAIhC,KAAOE,KACVuC,SAAWzC,KAAK0C,UAchBC,SAAW,SAAUC,OAAQL,QAASM,OAAQC,UAE7Cd,IAAIe,SAAYD,gBAAkB,EAAK9C,KAAK4C,QAAUC,OAAS,EAAIA,OAEnE,IAAKb,IAAIgB,EAAID,SAAUC,EAAIT,QAAQK,QAAQK,OAAQD,IAAM,CAExD,GAAIT,QAAQK,QAAQI,GAAK,CACxBhD,KAAK4C,QAAUI,EAAEH,OACjB,OAAO,MAGT,OAAO,OAIRK,cAAgB,WAKf,MAAMC,OAAS,EAAG,CAOjBR,SAASS,KAAKD,OAAO,GAAIZ,QAASa,KAAKD,OAAO,GAAI,GAGlDA,UAWHnB,IAAIoB,KAAO,CACT,CAAC,UAAW,UAAW,GACvB,CAAC,UAAW,QAAS,GACrB,CAAC,QAAS,OAAQ,GAClB,CAAC,OAAQ,UAAW,GACpB,CAAC,SAAU,QAAS,IAErBD,MAAQ,EAIT,MAAMA,MAAQ,EAAG,CAOhB,IAAIR,SAASS,KAAKD,OAAO,GAAIZ,QAASa,KAAKD,OAAO,IAAK,CACtDjD,KAAKkD,KAAKD,OAAO,MACjBD,gBAID,GAAIhD,KAAK2B,OAAS,IAAM,CACvB,OAAO,KAIRsB,QAKD,OAAQZ,QAAQc,WAAWnD,KAAKwB,QAAQ,MAAM4B,UAAW,CACxDpD,KAAKuB,MAAQ,EACb0B,MAAQ,EACRD,gBAID,GAAIT,UAAYzC,KAAK0C,UAAW,CAC/B1C,KAAK+B,QACL,OAAO/B,KAAKsC,UAAUC,QAAS,UACzB,CACN,OAAOrC,OAYTO,SAASM,UAAUW,QAAU,SAAU6B,UACtCvB,IAAIwB,WAAa,IAAIlD,KAAKJ,KAAK2B,MAAO3B,KAAKyB,OAAQzB,KAAKuB,KAAMvB,KAAKqB,MAAOrB,KAAKmB,QAASnB,KAAKiB,QAASjB,KAAKe,cAC3G,GAAIsC,WAAarD,KAAKQ,SAAU,CAC/B,OAAO8C,eACD,CACNxB,IAAIa,OAAS1C,UAAUqD,WAAYtD,KAAKQ,UAAUgC,UAAUc,WAAWd,UACvE,OAAO,IAAIpC,KAAKkD,WAAWd,UAAUG,UAWvCpC,SAASM,UAAU2B,QAAU,SAAUa,UACtC,OAAOrD,KAAKwB,QAAQ6B,UAAUb,WAW/BjC,SAASM,UAAUqB,cAAgB,SAAUqB,GAC5CzB,IAAI0B,EAAID,EAAEE,MAAM,MAGhB,GAAID,EAAET,OAAS,EAAG,CACjB,OAAOW,IAGR5B,IACC6B,KAAOC,SAASJ,EAAE,GAAI,IACtBK,MAAQD,SAASJ,EAAE,GAAI,IACvBM,IAAMF,SAASJ,EAAE,GAAI,IACrBO,KAAOH,SAASJ,EAAE,GAAI,IACtBQ,OAASJ,SAASJ,EAAE,GAAI,IACxBS,OAASL,SAASJ,EAAE,GAAI,IAGzB,GAAIrB,MAAMwB,OAASxB,MAAM0B,QAAU1B,MAAM2B,MAAQ3B,MAAM4B,OAAS5B,MAAM6B,SAAW7B,MAAM8B,QAAU,CAChG,OAAOP,QACD,CACN,OAAO,IAAItD,KAAKuD,KAAME,MAAM,EAAGC,IAAKC,KAAMC,OAAQC,UAuBpD,SAASC,YAAa7B,SAErBrC,KAAKqC,QAAYA,QAEjBrC,KAAKiB,QAAiBkD,MAAM,IAAIC,KAAK,GACrCpE,KAAKmB,QAAiBgD,MAAM,IAAIC,KAAK,GACrCpE,KAAKqB,MAAiB8C,MAAM,IAAIC,KAAK,GACrCpE,KAAKuB,KAAiB4C,MAAM,IAAIC,KAAK,GACrCpE,KAAKyB,OAAiB0C,MAAM,IAAIC,KAAK,GACrCpE,KAAKmD,WAAiBgB,MAAM,GAAGC,KAAK,GAEpCpE,KAAKqE,QAQNH,YAAYrD,UAAUwD,MAAQ,WAG7B,YAAarE,KAAKqC,UAAY,UAAYrC,KAAKqC,QAAQiC,cAAgBC,QAAU,CAChF,MAAM,IAAI3D,UAAU,kDAIrBkB,IAAI0C,MAAQxE,KAAKqC,QAAQoC,OAAOC,QAAQ,OAAQ,KAAKjB,MAAM,KAG3D,GAAIe,MAAMzB,OAAS,GAAKyB,MAAMzB,OAAS,EAAI,CAC1C,MAAM,IAAInC,UAAU,+CAAiDZ,KAAKqC,QAAU,0DAIrF,GAAImC,MAAMzB,SAAW,EAAG,CACvByB,MAAMG,QAAQ,KAKfH,MAAM,GAAKxE,KAAK4E,mBAAmBJ,MAAM,IACzCA,MAAM,GAAKxE,KAAK6E,iBAAiBL,MAAM,IAGvCxE,KAAK8E,yBAAyBN,OAG9BxE,KAAK+E,YAAY,UAAcP,MAAM,GAAI,GACzCxE,KAAK+E,YAAY,UAAcP,MAAM,GAAI,GACzCxE,KAAK+E,YAAY,QAAcP,MAAM,GAAI,GACzCxE,KAAK+E,YAAY,OAAcP,MAAM,IAAK,GAC1CxE,KAAK+E,YAAY,SAAcP,MAAM,IAAK,GAC1CxE,KAAK+E,YAAY,aAAcP,MAAM,GAAI,GAGzC,GAAIxE,KAAKmD,WAAW,GAAK,CACxBnD,KAAKmD,WAAW,GAAK,IAcvBe,YAAYrD,UAAUkE,YAAc,SAAUC,KAAMC,KAAMC,iBAAkBC,UAE3E,MAAMC,IAAMpF,KAAKgF,MAGjB,GAAIC,OAAS,IAAM,CAClB,IAAKnD,IAAIgB,EAAI,EAAGA,EAAIsC,IAAIrC,OAAQD,IAAM,CACrCsC,IAAItC,GAAK,EAEV,OAID,MAAMW,MAAQwB,KAAKxB,MAAM,KACzB,GAAIA,MAAMV,OAAS,EAAI,CACtB,IAAKjB,IAAIgB,EAAI,EAAGA,EAAIW,MAAMV,OAAQD,IAAM,CACvC9C,KAAK+E,YAAYC,KAAMvB,MAAMX,GAAIoC,iBAAkB,YAI9C,GAAID,KAAKI,QAAQ,QAAU,GAAKJ,KAAKI,QAAQ,QAAU,EAAI,CACjE,GAAIF,SAAU,MAAM,IAAIG,MAAM,0DAE9BtF,KAAKuF,wBAAwBN,KAAMD,KAAME,uBAGnC,GAAID,KAAKI,QAAQ,QAAU,EAAI,CACrC,GAAIF,SAAU,MAAM,IAAIG,MAAM,0DAE9BtF,KAAKwF,YAAYP,KAAMD,KAAME,uBAGvB,GAAID,KAAKI,QAAQ,QAAU,EAAI,CACrC,GAAIF,SAAU,MAAM,IAAIG,MAAM,0DAE9BtF,KAAKyF,eAAeR,KAAMD,KAAME,sBAE1B,CACNlF,KAAK0F,aAAaT,KAAMD,KAAME,oBAWhChB,YAAYrD,UAAUiE,yBAA2B,SAAUN,OAC1D,MAAMmB,YAAc,cACpB,IAAI7D,IAAIgB,EAAI,EAAGA,EAAI0B,MAAMzB,OAAQD,IAAK,CACrC,GAAI6C,YAAYC,KAAKpB,MAAM1B,IAAM,CAChC,MAAM,IAAIlC,UAAU,oCAAsCkC,EAAI,KAAO0B,MAAM1B,GAAK,qCAanFoB,YAAYrD,UAAU6E,aAAe,SAAUT,KAAMD,KAAME,kBAC1DpD,IAAIgB,EAAKc,SAASqB,KAAM,IAAMC,iBAE9B,GAAIpC,EAAI,GAAKA,GAAK9C,KAAKgF,MAAMjC,OAAS,CACrC,MAAM,IAAInC,UAAU,gBAAkBoE,KAAO,yBAA2BC,KAAO,KAGhFjF,KAAKgF,MAAMlC,GAAK,GAWjBoB,YAAYrD,UAAU0E,wBAA0B,SAAUN,KAAMD,KAAME,kBACrEpD,IAAI+D,QAAUZ,KAAKa,MAAM,wBAEzB,GAAID,UAAY,KAAO,MAAM,IAAIjF,UAAU,4DAA8DqE,KAAO,KAEhHnD,GAAI,CAAC,CAAEiE,MAAOC,MAAOC,OAASJ,QAC9BE,MAAQnC,SAASmC,MAAO,IAAMb,iBAC9Bc,MAAQpC,SAASoC,MAAO,IAAMd,iBAC9Be,MAAQrC,SAASqC,MAAO,IAAMf,iBAE9B,GAAI/C,MAAM4D,OAAS,MAAM,IAAInF,UAAU,wDACvC,GAAIuB,MAAM6D,OAAS,MAAM,IAAIpF,UAAU,wDACvC,GAAIuB,MAAM8D,OAAS,MAAM,IAAIrF,UAAU,sDAEvC,GAAIqF,QAAU,EAAI,MAAM,IAAIrF,UAAU,kDACtC,GAAIqF,MAAQjG,KAAKgF,MAAMjC,OAAS,MAAM,IAAInC,UAAU,kFAAkFZ,KAAKgF,MAAMjC,OAAO,KAExJ,GAAIgD,MAAQ,GAAKC,OAAShG,KAAKgF,MAAMjC,OAAS,MAAM,IAAInC,UAAU,qCAAuCqE,KAAO,KAChH,GAAIc,MAAQC,MAAQ,MAAM,IAAIpF,UAAU,qDAAuDqE,KAAO,KAEtG,IAAKnD,IAAIgB,EAAIiD,MAAOjD,GAAKkD,MAAOlD,GAAKmD,MAAO,CAC3CjG,KAAKgF,MAAOlC,EAAIoC,kBAAqB,IAYvChB,YAAYrD,UAAU2E,YAAc,SAAUP,KAAMD,KAAME,kBACzD,MAAMzB,MAAQwB,KAAKxB,MAAM,KAEzB,GAAIA,MAAMV,SAAW,EAAI,CACxB,MAAM,IAAInC,UAAU,8CAAgDqE,KAAO,KAG5E,MAAMc,MAAQnC,SAASH,MAAM,GAAI,IAAMyB,iBACtCc,MAAQpC,SAASH,MAAM,GAAI,IAAMyB,iBAElC,GAAI/C,MAAM4D,OAAS,CAClB,MAAM,IAAInF,UAAU,6DACd,GAAIuB,MAAM6D,OAAS,CACzB,MAAM,IAAIpF,UAAU,wDAIrB,GAAImF,MAAQ,GAAKC,OAAShG,KAAKgF,MAAMjC,OAAS,CAC7C,MAAM,IAAInC,UAAU,qCAAuCqE,KAAO,KAInE,GAAIc,MAAQC,MAAQ,CACnB,MAAM,IAAIpF,UAAU,qDAAuDqE,KAAO,KAGnF,IAAKnD,IAAIgB,EAAIiD,MAAOjD,GAAKkD,MAAOlD,IAAM,CACrC9C,KAAKgF,MAAOlC,EAAIoC,kBAAqB,IAYvChB,YAAYrD,UAAU4E,eAAiB,SAAUR,KAAMD,KAAME,kBAE5D,MAAMzB,MAAQwB,KAAKxB,MAAM,KAEzB,GAAIA,MAAMV,SAAW,EAAI,CACxB,MAAM,IAAInC,UAAU,iDAAmDqE,KAAO,KAG/EnD,IAAIoE,MAAQ,EACZ,GAAIzC,MAAM,KAAO,IAAM,CACtByC,MAAQtC,SAASH,MAAM,GAAI,IAG5B,MAAMwC,MAAQrC,SAASH,MAAM,GAAI,IAEjC,GAAItB,MAAM8D,OAAS,MAAM,IAAIrF,UAAU,sDACvC,GAAIqF,QAAU,EAAI,MAAM,IAAIrF,UAAU,kDACtC,GAAIqF,MAAQjG,KAAKgF,MAAMjC,OAAS,MAAM,IAAInC,UAAU,kFAAkFZ,KAAKgF,MAAMjC,OAAO,KAExJ,IAAKjB,IAAIgB,EAAIoD,MAAOpD,EAAI9C,KAAKgF,MAAMjC,OAAQD,GAAImD,MAAQ,CACtDjG,KAAKgF,MAAOlC,EAAIoC,kBAAqB,IAavChB,YAAYrD,UAAUgE,iBAAmB,SAAUI,MAClD,OAAOA,KACLP,QAAQ,QAAS,KACjBA,QAAQ,QAAS,KACjBA,QAAQ,QAAS,KACjBA,QAAQ,QAAS,KACjBA,QAAQ,QAAS,KACjBA,QAAQ,QAAS,KACjBA,QAAQ,QAAS,MAWpBR,YAAYrD,UAAU+D,mBAAqB,SAAUK,MACpD,OAAOA,KACLP,QAAQ,QAAS,KACjBA,QAAQ,QAAS,KACjBA,QAAQ,QAAS,KACjBA,QAAQ,QAAS,KACjBA,QAAQ,QAAS,KACjBA,QAAQ,QAAS,KACjBA,QAAQ,QAAS,KACjBA,QAAQ,QAAS,KACjBA,QAAQ,QAAS,KACjBA,QAAQ,QAAS,MACjBA,QAAQ,QAAS,MACjBA,QAAQ,QAAS,OAsDpB,MAAMyB,SAAWC,KAAKC,IAAI,EAAG,GAAK,GAAK,EAWvC,SAAStG,KAAMsC,QAASiE,QAASC,MAChCzE,IAAIhC,KAAOE,KAGX,KAAMA,gBAAgBD,MAAQ,CAC7B,OAAO,IAAIA,KAAKsC,QAASiE,QAASC,MAInCzG,KAAKuC,QAAU,IAAI6B,YAAY7B,SAG/B,UAAWiE,UAAY,WAAa,CACnCC,KAAOD,QACPA,aAAe,EAIhBtG,KAAKsG,QAAUtG,KAAKwG,eAAeF,SAKnC,GAAIC,YAAc,EAAI,CACrBvG,KAAKyG,GAAKF,KACVvG,KAAK0G,WAGN,OAAO1G,KAWRD,KAAKc,UAAU2F,eAAiB,SAAUF,SAGzC,GAAIA,eAAiB,EAAG,CACvBA,QAAU,GAIXA,QAAQK,OAAUL,QAAQK,cAAgB,EAAK,MAAQL,QAAQK,OAC/DL,QAAQM,QAAWN,QAAQM,eAAiB,EAAKC,SAAWP,QAAQM,QACpEN,QAAQQ,MAASR,QAAQQ,aAAe,EAAK,MAAQR,QAAQQ,MAC7DR,QAAQS,KAAO,MAGf,GAAIT,QAAQU,QAAU,CACrBV,QAAQU,QAAU,IAAIzG,SAAS+F,QAAQU,QAASV,QAAQ9F,UAEzD,GAAI8F,QAAQW,OAAS,CACpBX,QAAQW,OAAS,IAAI1G,SAAS+F,QAAQW,OAAQX,QAAQ9F,UAGvD,OAAO8F,SASRvG,KAAKc,UAAUqG,KAAO,SAAUC,MAC/BA,KAAO,IAAI5G,SAAS4G,KAAMnH,KAAKsG,QAAQ9F,UACvCsB,IAAIoF,KAAOlH,KAAKoH,MAAMD,MACtB,OAAOD,KAAOA,KAAK1F,UAAY,MAShCzB,KAAKc,UAAUwG,QAAU,WACxBvF,IAAIwF,OAAStH,KAAKuH,SAASvH,KAAKwH,aAChC1F,IAAIuF,SAAWrH,KAAKsG,QAAQK,QAAU3G,KAAKyG,UAAY,EACvD,OAAOa,SAAW,MAAQD,SAS3BtH,KAAKc,UAAU4G,SAAW,WACzB,OAAOzH,KAAKwH,YAAcxH,KAAKwH,YAAYhG,UAAY,MAUxDzB,KAAKc,UAAUuG,MAAQ,SAAUD,MAGhC,GAAInH,KAAKsG,QAAQU,SAAWG,MAAQA,KAAK3E,QAAQ,MAAQxC,KAAKsG,QAAQU,QAAQxE,QAAQ,MAAQ,CAC7F2E,KAAO,IAAI5G,SAASP,KAAKsG,QAAQU,QAAShH,KAAKsG,QAAQ9F,UAIxDsB,IAAI4F,QAAU,IAAInH,SAAS4G,KAAMnH,KAAKsG,QAAQ9F,UAAU4B,UAAUpC,KAAKqC,SAEvE,GAAKqF,UAAY,MACf1H,KAAKsG,QAAQM,SAAW,GACxB5G,KAAKsG,QAAY,MACjBtG,KAAKsG,QAAQW,QAAUS,QAAQlF,QAAQ,OAASxC,KAAKsG,QAAQW,OAAOzE,QAAQ,MAAS,CACtF,OAAO,SACD,CAEN,OAAOkF,UAYT3H,KAAKc,UAAU0G,SAAW,SAAUJ,MACnCA,KAAO,IAAI5G,SAAS4G,KAAMnH,KAAKsG,QAAQ9F,UACvCsB,IAAIoF,KAAOlH,KAAKoH,MAAMD,MACtB,GAAID,KAAO,CACV,OAAQA,KAAK1E,QAAQ,MAAQ2E,KAAK3E,QAAQ,UACpC,CACN,OAAO,OAQTzC,KAAKc,UAAU8G,KAAO,WACrB3H,KAAKsG,QAAQS,KAAO,KAEpB,GAAI/G,KAAK4H,eAAiB,CACzBC,aAAc7H,KAAK4H,kBAUrB7H,KAAKc,UAAUiH,MAAQ,WACtB,OAAQ9H,KAAKsG,QAAQK,OAAS,QAAU3G,KAAKsG,QAAQS,MAStDhH,KAAKc,UAAUkH,OAAS,WACvB,QAAS/H,KAAKsG,QAAQK,OAAS,SAAW3G,KAAKsG,QAAQS,MAUxDhH,KAAKc,UAAU6F,SAAW,SAAUH,MAEnCzE,IAAIhC,KAAOE,KAGVgI,OAAShI,KAAKuH,SAASzH,KAAK0H,aAI5BS,UAAYnI,KAAKqG,UAAYA,SAG9B,GAAI6B,OAASC,UAAY,CACxBD,OAASC,UAIV,GAAI1B,KAAM,CACTzG,KAAK2G,GAAKF,KAIX,GAAMyB,SAAW,KAAO,CACvBlI,KAAK8H,eAAiBM,WAAW,WAGhC,GAAIF,SAAWC,UAAY,CAE1B,IAAMnI,KAAKwG,QAAQK,OAAS,CAC3B7G,KAAKwG,QAAQM,UAEb,GAAI9G,KAAKwG,QAAQQ,MAAO,CACvB,IACChH,KAAK2G,GAAG3G,MACP,MAAOqI,UAGH,CACNrI,KAAK2G,GAAG3G,OAIVA,KAAK0H,YAAc,IAAIjH,cAAc,EAAGT,KAAKwG,QAAQ9F,UAItDV,KAAK4G,YAEHsB,QAGJ,OAAOhI,MAIR,OAAOD"}
@@ -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.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(){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","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","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.75",
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,7 +21,6 @@
21
21
  "dist/*",
22
22
  "src/*",
23
23
  "types/*",
24
- "dist-legacy/*",
25
24
  "SECURITY.md",
26
25
  "croner.png"
27
26
  ],
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
  };
@@ -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;