croner 4.3.1 → 4.3.4

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/dist/croner.cjs CHANGED
@@ -191,27 +191,21 @@
191
191
  *
192
192
  * @param {string} pattern - The pattern used to increment current state
193
193
  * @param {CronOptions} options - Cron options used for incrementing
194
- * @param {boolean} [rerun=false] - If this is an internal incremental run
194
+ * @param {boolean} [hasPreviousRun] - If this run should adhere to minimum interval
195
195
  * @return {CronDate|null} - Returns itself for chaining, or null if increment wasnt possible
196
196
  */
197
- CronDate.prototype.increment = function (pattern, options, rerun) {
197
+ CronDate.prototype.increment = function (pattern, options, hasPreviousRun) {
198
198
 
199
- // Always add one second, or minimum interval
200
- if (!rerun) {
201
- if (options.interval > 1) {
202
- this.seconds += options.interval;
203
- } else {
204
- this.seconds += 1;
205
- }
199
+ // Always add one second, or minimum interval, then clear milliseconds and apply changes if seconds has gotten out of bounds
200
+ if (options.interval > 1 && hasPreviousRun) {
201
+ this.seconds += options.interval;
202
+ } else {
203
+ this.seconds += 1;
206
204
  }
207
-
208
- this.apply();
209
-
210
205
  this.milliseconds = 0;
206
+ this.apply();
211
207
 
212
208
  const
213
-
214
- origTime = this.getTime(),
215
209
 
216
210
  /**
217
211
  * Find next
@@ -335,6 +329,9 @@
335
329
  // Reset current level and previous levels
336
330
  resetPrevious(0);
337
331
 
332
+ // Apply changes if any value has gotten out of bounds
333
+ this.apply();
334
+
338
335
  // If pattern provided a match, but changed current value ...
339
336
  } else if (currentValue !== this[toDo[doing][0]]) {
340
337
 
@@ -347,19 +344,13 @@
347
344
  if (this.years >= 4000) {
348
345
  return null;
349
346
  }
350
-
347
+
351
348
  // Gp down, seconds -> minutes -> hours -> days -> months -> year
352
349
  doing++;
353
350
  }
354
351
 
355
352
  // If anything changed, recreate this CronDate and run again without incrementing
356
- this.default = false;
357
- if (origTime != this.getTime()) {
358
- this.apply();
359
- return this.increment(pattern, options, true);
360
- } else {
361
- return this;
362
- }
353
+ return this;
363
354
 
364
355
  };
365
356
 
@@ -884,21 +875,34 @@
884
875
  *
885
876
  * @constructor
886
877
  * @param {string|Date} pattern - Input pattern, input date, or input ISO 8601 time string
887
- * @param {CronOptions|Function} [options] - Options
888
- * @param {Function} [func] - Function to be run each iteration of pattern
878
+ * @param {CronOptions|Function} [fnOrOptions1] - Options or function to be run each iteration of pattern
879
+ * @param {CronOptions|Function} [fnOrOptions2] - Options or function to be run each iteration of pattern
889
880
  * @returns {Cron}
890
881
  */
891
- function Cron (pattern, options, func) {
882
+ function Cron (pattern, fnOrOptions1, fnOrOptions2) {
892
883
 
893
884
  // Optional "new" keyword
894
885
  if( !(this instanceof Cron) ) {
895
- return new Cron(pattern, options, func);
886
+ return new Cron(pattern, fnOrOptions1, fnOrOptions2);
896
887
  }
897
888
 
898
- // Make options optional
899
- if( typeof options === "function" ) {
900
- func = options;
901
- options = void 0;
889
+ // Make options and func optional and interchangable
890
+ let options, func;
891
+
892
+ if( typeof fnOrOptions1 === "function" ) {
893
+ func = fnOrOptions1;
894
+ } else if( typeof fnOrOptions1 === "object" ) {
895
+ options = fnOrOptions1;
896
+ } else if( fnOrOptions1 !== void 0) {
897
+ throw new Error("Cron: Invalid argument passed for optionsIn. Should be one of function, or object (options).");
898
+ }
899
+
900
+ if( typeof fnOrOptions2 === "function" ) {
901
+ func = fnOrOptions2;
902
+ } else if( typeof fnOrOptions2 === "object" ) {
903
+ options = fnOrOptions2;
904
+ } else if( fnOrOptions2 !== void 0) {
905
+ throw new Error("Cron: Invalid argument passed for funcIn. Should be one of function, or object (options).");
902
906
  }
903
907
 
904
908
  /** @type {CronOptions} */
@@ -948,8 +952,9 @@
948
952
  */
949
953
  Cron.prototype.enumerate = function (n, previous) {
950
954
  const enumeration = [];
951
- while(n-- && (previous = this.next(previous))) {
952
- enumeration.push(previous);
955
+ let prev = previous || this.previousrun;
956
+ while(n-- && (prev = this.next(prev))) {
957
+ enumeration.push(prev);
953
958
  }
954
959
 
955
960
  return enumeration;
@@ -1100,10 +1105,7 @@
1100
1105
  */
1101
1106
  Cron.prototype._next = function (prev) {
1102
1107
 
1103
- // Use actual previous run if not supplied
1104
- prev = prev || this.previousrun;
1105
-
1106
- const hasPreviousRun = prev ? true : false;
1108
+ const hasPreviousRun = (prev || this.previousrun) ? true : false;
1107
1109
 
1108
1110
  // Ensure previous run is a CronDate
1109
1111
  prev = new CronDate(prev, this.options.timezone);
@@ -1115,7 +1117,7 @@
1115
1117
 
1116
1118
  // Calculate next run according to pattern or one-off timestamp, pass actual previous run to increment
1117
1119
  const
1118
- nextRun = this.once || new CronDate(prev, this.options.timezone).increment(this.pattern, this.options, !hasPreviousRun);
1120
+ nextRun = this.once || new CronDate(prev, this.options.timezone).increment(this.pattern, this.options, hasPreviousRun);
1119
1121
 
1120
1122
  if (this.once && this.once.getTime(true) <= prev.getTime(true)) {
1121
1123
  return null;
@@ -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 CronTZ(date,tzString){return new Date(date.toLocaleString("en-US",{timeZone:tzString}))}function CronOptions(options){if(options===void 0){options={}}options.legacyMode=options.legacyMode===void 0?false:options.legacyMode;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.interval=options.interval===void 0?0:parseInt(options.interval);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)}if(options.interval!==null){if(isNaN(options.interval)){throw new Error("CronOptions: Supplied value for interval is not a number")}else if(options.interval<0){throw new Error("CronOptions: Supplied value for interval can not be negative")}}return options}function CronDate(date,timezone){this.timezone=timezone;if(date&&date instanceof Date){if(!isNaN(date)){this.fromDate(date)}else{throw new TypeError("CronDate: Invalid date passed as parameter to CronDate constructor")}}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){if(this.timezone){date=CronTZ(date,this.timezone)}this.milliseconds=date.getMilliseconds();this.seconds=date.getSeconds();this.minutes=date.getMinutes();this.hours=date.getHours();this.days=date.getDate();this.months=date.getMonth();this.years=date.getFullYear()};CronDate.prototype.fromCronDate=function(date){this.timezone=date.timezone;this.milliseconds=date.milliseconds;this.seconds=date.seconds;this.minutes=date.minutes;this.hours=date.hours;this.days=date.days;this.months=date.months;this.years=date.years};CronDate.prototype.apply=function(){const newDate=new Date(this.years,this.months,this.days,this.hours,this.minutes,this.seconds,this.milliseconds);this.milliseconds=newDate.getMilliseconds();this.seconds=newDate.getSeconds();this.minutes=newDate.getMinutes();this.hours=newDate.getHours();this.days=newDate.getDate();this.months=newDate.getMonth();this.years=newDate.getFullYear()};CronDate.prototype.fromString=function(str){const parsedDate=this.parseISOLocal(str);if(isNaN(parsedDate)){throw new TypeError("CronDate: Provided string value for CronDate could not be parsed as date.")}this.fromDate(parsedDate)};CronDate.prototype.increment=function(pattern,options,rerun){if(!rerun){if(options.interval>1){this.seconds+=options.interval}else{this.seconds+=1}}this.apply();this.milliseconds=0;const origTime=this.getTime(),findNext=(target,pattern,offset,override)=>{const startPos=override===void 0?this[target]+offset:0;for(let i=startPos;i<pattern[target].length;i++){let match=pattern[target][i];if(target==="days"){let targetDate=this.getDate(true);targetDate.setDate(i-offset);if(pattern.lastDayOfMonth){let targetDateCopy=new Date(targetDate);targetDateCopy.setDate(i-offset+1);if(targetDateCopy.getMonth()!==this.months){match=true}}const dowMatch=pattern.daysOfWeek[targetDate.getDay()];if(options.legacyMode){if(!pattern.starDayOfWeek&&pattern.starDayOfMonth){match=dowMatch}else if(!pattern.starDayOfWeek&&!pattern.starDayOfMonth){match=match||dowMatch}}else{match=match&&dowMatch}}if(match){this[target]=i-offset;return true}}return false},resetPrevious=offset=>{while(doing+offset>=0){findNext(toDo[doing+offset][0],pattern,toDo[doing+offset][2],0);doing--}};const toDo=[["seconds","minutes",0],["minutes","hours",0],["hours","days",0],["days","months",-1],["months","years",0]];let doing=0;while(doing<5){let currentValue=this[toDo[doing][0]];if(!findNext(toDo[doing][0],pattern,toDo[doing][2])){this[toDo[doing][1]]++;resetPrevious(0)}else if(currentValue!==this[toDo[doing][0]]){resetPrevious(-1)}if(this.years>=4e3){return null}doing++}this.default=false;if(origTime!=this.getTime()){this.apply();return this.increment(pattern,options,true)}else{return this}};CronDate.prototype.getDate=function(internal){const targetDate=new Date(this.years,this.months,this.days,this.hours,this.minutes,this.seconds,this.milliseconds);if(internal||!this.timezone){return targetDate}else{const offset=CronTZ(targetDate,this.timezone).getTime()-targetDate.getTime();return new Date(targetDate.getTime()-offset)}};CronDate.prototype.getTime=function(internal){return this.getDate(internal).getTime()};CronDate.prototype.parseISOLocal=function(dateTimeString){const dateTimeStringSplit=dateTimeString.split(/\D/);if(dateTimeStringSplit.length<6){return NaN}const year=parseInt(dateTimeStringSplit[0],10),month=parseInt(dateTimeStringSplit[1],10),day=parseInt(dateTimeStringSplit[2],10),hour=parseInt(dateTimeStringSplit[3],10),minute=parseInt(dateTimeStringSplit[4],10),second=parseInt(dateTimeStringSplit[5],10);if(isNaN(year)||isNaN(month)||isNaN(day)||isNaN(hour)||isNaN(minute)||isNaN(second)){return NaN}else{let generatedDate;if(dateTimeString.indexOf("Z")>0){generatedDate=new Date(Date.UTC(year,month-1,day,hour,minute,second));if(year==generatedDate.getUTCFullYear()&&month==generatedDate.getUTCMonth()+1&&day==generatedDate.getUTCDate()&&hour==generatedDate.getUTCHours()&&minute==generatedDate.getUTCMinutes()&&second==generatedDate.getUTCSeconds()){return generatedDate}else{return NaN}}else{generatedDate=new Date(year,month-1,day,hour,minute,second);if(year==generatedDate.getFullYear()&&month==generatedDate.getMonth()+1&&day==generatedDate.getDate()&&hour==generatedDate.getHours()&&minute==generatedDate.getMinutes()&&second==generatedDate.getSeconds()){return generatedDate}else{return NaN}}}};function CronPattern(pattern,timezone){this.pattern=pattern;this.timezone=timezone;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.lastDayOfMonth=false;this.starDayOfMonth=false;this.starDayOfWeek=false;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.")}this.pattern=this.handleNicknames(this.pattern);const parts=this.pattern.trim().replace(/\s+/g," ").split(" ");if(parts.length<5||parts.length>6){throw new TypeError("CronPattern: invalid configuration format ('"+this.pattern+"'), exacly five or six space separated parts required.")}if(parts.length===5){parts.unshift("0")}if(parts[3].indexOf("L")>=0){parts[3]=parts[3].replace("L","");this.lastDayOfMonth=true}if(parts[3].toUpperCase()=="*"){this.starDayOfMonth=true}parts[4]=this.replaceAlphaMonths(parts[4]);parts[5]=this.replaceAlphaDays(parts[5]);if(parts[5].toUpperCase()=="*"){this.starDayOfWeek=true}let initDate=new CronDate(new Date,this.timezone).getDate(true);parts[0]=parts[0].replace("?",initDate.getSeconds());parts[1]=parts[1].replace("?",initDate.getMinutes());parts[2]=parts[2].replace("?",initDate.getHours());parts[3]=parts[3].replace("?",initDate.getDate());parts[4]=parts[4].replace("?",initDate.getMonth()+1);parts[5]=parts[5].replace("?",initDate.getDay());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 if(conf!==""){this.handleNumber(conf,type,valueIndexOffset)}};CronPattern.prototype.throwAtIllegalCharacters=function(parts){const reValidCron=/[^/*0-9,-]+/;for(let i=0;i<parts.length;i++){if(reValidCron.test(parts[i])){throw new TypeError("CronPattern: configuration entry "+i+" ("+parts[i]+") contains illegal characters.")}}};CronPattern.prototype.handleNumber=function(conf,type,valueIndexOffset){const i=parseInt(conf,10)+valueIndexOffset;if(isNaN(i)){throw new TypeError("CronPattern: "+type+" is not a number: '"+conf+"'")}if(i<0||i>=this[type].length){throw new TypeError("CronPattern: "+type+" value out of range: '"+conf+"'")}this[type][i]=1};CronPattern.prototype.handleRangeWithStepping=function(conf,type,valueIndexOffset){const matches=conf.match(/^(\d+)-(\d+)\/(\d+)$/);if(matches===null)throw new TypeError("CronPattern: Syntax error, illegal range with stepping: '"+conf+"'");let[,lower,upper,steps]=matches;lower=parseInt(lower,10)+valueIndexOffset;upper=parseInt(upper,10)+valueIndexOffset;steps=parseInt(steps,10);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]=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]=1}};CronPattern.prototype.handleStepping=function(conf,type){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]=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")};CronPattern.prototype.handleNicknames=function(pattern){const cleanPattern=pattern.trim().toLowerCase();if(cleanPattern==="@yearly"||cleanPattern==="@annually"){return"0 0 1 1 *"}else if(cleanPattern==="@monthly"){return"0 0 1 * *"}else if(cleanPattern==="@weekly"){return"0 0 * * 0"}else if(cleanPattern==="@daily"){return"0 0 * * *"}else if(cleanPattern==="@hourly"){return"0 * * * *"}else{return pattern}};const maxDelay=Math.pow(2,32-1)-1;function Cron(pattern,options,func){if(!(this instanceof Cron)){return new Cron(pattern,options,func)}if(typeof options==="function"){func=options;options=void 0}this.options=CronOptions(options);this.once=void 0;this.pattern=void 0;if(pattern&&(pattern instanceof Date||typeof pattern==="string"&&pattern.indexOf(":")>0)){this.once=new CronDate(pattern,this.options.timezone)}else{this.pattern=new CronPattern(pattern,this.options.timezone)}if(func!==void 0){this.fn=func;this.schedule()}return this}Cron.prototype.next=function(prev){const next=this._next(prev);return next?next.getDate():null};Cron.prototype.enumerate=function(n,previous){const enumeration=[];while(n--&&(previous=this.next(previous))){enumeration.push(previous)}return enumeration};Cron.prototype.running=function(){const msLeft=this.msToNext(this.previousrun);const running=!this.options.paused&&this.fn!==void 0;return msLeft!==null&&running};Cron.prototype.previous=function(){return this.previousrun?this.previousrun.getDate():null};Cron.prototype.msToNext=function(prev){const next=this._next(prev);prev=new CronDate(prev,this.options.timezone);if(next){return next.getTime(true)-prev.getTime(true)}else{return null}};Cron.prototype.stop=function(){this.options.kill=true;if(this.currentTimeout){clearTimeout(this.currentTimeout)}};Cron.prototype.pause=function(){return(this.options.paused=true)&&!this.options.kill};Cron.prototype.resume=function(){return!(this.options.paused=false)&&!this.options.kill};Cron.prototype.schedule=function(func){if(func&&this.fn){throw new Error("Cron: It is not allowed to schedule two functions using the same Croner instance.")}else if(func){this.fn=func}let waitMs=this.msToNext(this.previousrun);if(waitMs===null)return this;if(waitMs>maxDelay){waitMs=maxDelay}this.currentTimeout=setTimeout(()=>{if(waitMs!==maxDelay&&!this.options.paused){this.options.maxRuns--;if(this.options.catch){try{this.fn(this,this.options.context)}catch(_e){}}else{this.fn(this,this.options.context)}this.previousrun=new CronDate(void 0,this.options.timezone)}this.schedule()},waitMs);return this};Cron.prototype._next=function(prev){prev=prev||this.previousrun;const hasPreviousRun=prev?true:false;prev=new CronDate(prev,this.options.timezone);if(this.options.startAt&&prev&&prev.getTime(true)<this.options.startAt.getTime(true)){prev=this.options.startAt}const nextRun=this.once||new CronDate(prev,this.options.timezone).increment(this.pattern,this.options,!hasPreviousRun);if(this.once&&this.once.getTime(true)<=prev.getTime(true)){return null}else 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}};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 CronTZ(date,tzString){return new Date(date.toLocaleString("en-US",{timeZone:tzString}))}function CronOptions(options){if(options===void 0){options={}}options.legacyMode=options.legacyMode===void 0?false:options.legacyMode;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.interval=options.interval===void 0?0:parseInt(options.interval);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)}if(options.interval!==null){if(isNaN(options.interval)){throw new Error("CronOptions: Supplied value for interval is not a number")}else if(options.interval<0){throw new Error("CronOptions: Supplied value for interval can not be negative")}}return options}function CronDate(date,timezone){this.timezone=timezone;if(date&&date instanceof Date){if(!isNaN(date)){this.fromDate(date)}else{throw new TypeError("CronDate: Invalid date passed as parameter to CronDate constructor")}}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){if(this.timezone){date=CronTZ(date,this.timezone)}this.milliseconds=date.getMilliseconds();this.seconds=date.getSeconds();this.minutes=date.getMinutes();this.hours=date.getHours();this.days=date.getDate();this.months=date.getMonth();this.years=date.getFullYear()};CronDate.prototype.fromCronDate=function(date){this.timezone=date.timezone;this.milliseconds=date.milliseconds;this.seconds=date.seconds;this.minutes=date.minutes;this.hours=date.hours;this.days=date.days;this.months=date.months;this.years=date.years};CronDate.prototype.apply=function(){const newDate=new Date(this.years,this.months,this.days,this.hours,this.minutes,this.seconds,this.milliseconds);this.milliseconds=newDate.getMilliseconds();this.seconds=newDate.getSeconds();this.minutes=newDate.getMinutes();this.hours=newDate.getHours();this.days=newDate.getDate();this.months=newDate.getMonth();this.years=newDate.getFullYear()};CronDate.prototype.fromString=function(str){const parsedDate=this.parseISOLocal(str);if(isNaN(parsedDate)){throw new TypeError("CronDate: Provided string value for CronDate could not be parsed as date.")}this.fromDate(parsedDate)};CronDate.prototype.increment=function(pattern,options,hasPreviousRun){if(options.interval>1&&hasPreviousRun){this.seconds+=options.interval}else{this.seconds+=1}this.milliseconds=0;this.apply();const findNext=(target,pattern,offset,override)=>{const startPos=override===void 0?this[target]+offset:0;for(let i=startPos;i<pattern[target].length;i++){let match=pattern[target][i];if(target==="days"){let targetDate=this.getDate(true);targetDate.setDate(i-offset);if(pattern.lastDayOfMonth){let targetDateCopy=new Date(targetDate);targetDateCopy.setDate(i-offset+1);if(targetDateCopy.getMonth()!==this.months){match=true}}const dowMatch=pattern.daysOfWeek[targetDate.getDay()];if(options.legacyMode){if(!pattern.starDayOfWeek&&pattern.starDayOfMonth){match=dowMatch}else if(!pattern.starDayOfWeek&&!pattern.starDayOfMonth){match=match||dowMatch}}else{match=match&&dowMatch}}if(match){this[target]=i-offset;return true}}return false},resetPrevious=offset=>{while(doing+offset>=0){findNext(toDo[doing+offset][0],pattern,toDo[doing+offset][2],0);doing--}};const toDo=[["seconds","minutes",0],["minutes","hours",0],["hours","days",0],["days","months",-1],["months","years",0]];let doing=0;while(doing<5){let currentValue=this[toDo[doing][0]];if(!findNext(toDo[doing][0],pattern,toDo[doing][2])){this[toDo[doing][1]]++;resetPrevious(0);this.apply()}else if(currentValue!==this[toDo[doing][0]]){resetPrevious(-1)}if(this.years>=4e3){return null}doing++}return this};CronDate.prototype.getDate=function(internal){const targetDate=new Date(this.years,this.months,this.days,this.hours,this.minutes,this.seconds,this.milliseconds);if(internal||!this.timezone){return targetDate}else{const offset=CronTZ(targetDate,this.timezone).getTime()-targetDate.getTime();return new Date(targetDate.getTime()-offset)}};CronDate.prototype.getTime=function(internal){return this.getDate(internal).getTime()};CronDate.prototype.parseISOLocal=function(dateTimeString){const dateTimeStringSplit=dateTimeString.split(/\D/);if(dateTimeStringSplit.length<6){return NaN}const year=parseInt(dateTimeStringSplit[0],10),month=parseInt(dateTimeStringSplit[1],10),day=parseInt(dateTimeStringSplit[2],10),hour=parseInt(dateTimeStringSplit[3],10),minute=parseInt(dateTimeStringSplit[4],10),second=parseInt(dateTimeStringSplit[5],10);if(isNaN(year)||isNaN(month)||isNaN(day)||isNaN(hour)||isNaN(minute)||isNaN(second)){return NaN}else{let generatedDate;if(dateTimeString.indexOf("Z")>0){generatedDate=new Date(Date.UTC(year,month-1,day,hour,minute,second));if(year==generatedDate.getUTCFullYear()&&month==generatedDate.getUTCMonth()+1&&day==generatedDate.getUTCDate()&&hour==generatedDate.getUTCHours()&&minute==generatedDate.getUTCMinutes()&&second==generatedDate.getUTCSeconds()){return generatedDate}else{return NaN}}else{generatedDate=new Date(year,month-1,day,hour,minute,second);if(year==generatedDate.getFullYear()&&month==generatedDate.getMonth()+1&&day==generatedDate.getDate()&&hour==generatedDate.getHours()&&minute==generatedDate.getMinutes()&&second==generatedDate.getSeconds()){return generatedDate}else{return NaN}}}};function CronPattern(pattern,timezone){this.pattern=pattern;this.timezone=timezone;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.lastDayOfMonth=false;this.starDayOfMonth=false;this.starDayOfWeek=false;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.")}this.pattern=this.handleNicknames(this.pattern);const parts=this.pattern.trim().replace(/\s+/g," ").split(" ");if(parts.length<5||parts.length>6){throw new TypeError("CronPattern: invalid configuration format ('"+this.pattern+"'), exacly five or six space separated parts required.")}if(parts.length===5){parts.unshift("0")}if(parts[3].indexOf("L")>=0){parts[3]=parts[3].replace("L","");this.lastDayOfMonth=true}if(parts[3].toUpperCase()=="*"){this.starDayOfMonth=true}parts[4]=this.replaceAlphaMonths(parts[4]);parts[5]=this.replaceAlphaDays(parts[5]);if(parts[5].toUpperCase()=="*"){this.starDayOfWeek=true}let initDate=new CronDate(new Date,this.timezone).getDate(true);parts[0]=parts[0].replace("?",initDate.getSeconds());parts[1]=parts[1].replace("?",initDate.getMinutes());parts[2]=parts[2].replace("?",initDate.getHours());parts[3]=parts[3].replace("?",initDate.getDate());parts[4]=parts[4].replace("?",initDate.getMonth()+1);parts[5]=parts[5].replace("?",initDate.getDay());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 if(conf!==""){this.handleNumber(conf,type,valueIndexOffset)}};CronPattern.prototype.throwAtIllegalCharacters=function(parts){const reValidCron=/[^/*0-9,-]+/;for(let i=0;i<parts.length;i++){if(reValidCron.test(parts[i])){throw new TypeError("CronPattern: configuration entry "+i+" ("+parts[i]+") contains illegal characters.")}}};CronPattern.prototype.handleNumber=function(conf,type,valueIndexOffset){const i=parseInt(conf,10)+valueIndexOffset;if(isNaN(i)){throw new TypeError("CronPattern: "+type+" is not a number: '"+conf+"'")}if(i<0||i>=this[type].length){throw new TypeError("CronPattern: "+type+" value out of range: '"+conf+"'")}this[type][i]=1};CronPattern.prototype.handleRangeWithStepping=function(conf,type,valueIndexOffset){const matches=conf.match(/^(\d+)-(\d+)\/(\d+)$/);if(matches===null)throw new TypeError("CronPattern: Syntax error, illegal range with stepping: '"+conf+"'");let[,lower,upper,steps]=matches;lower=parseInt(lower,10)+valueIndexOffset;upper=parseInt(upper,10)+valueIndexOffset;steps=parseInt(steps,10);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]=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]=1}};CronPattern.prototype.handleStepping=function(conf,type){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]=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")};CronPattern.prototype.handleNicknames=function(pattern){const cleanPattern=pattern.trim().toLowerCase();if(cleanPattern==="@yearly"||cleanPattern==="@annually"){return"0 0 1 1 *"}else if(cleanPattern==="@monthly"){return"0 0 1 * *"}else if(cleanPattern==="@weekly"){return"0 0 * * 0"}else if(cleanPattern==="@daily"){return"0 0 * * *"}else if(cleanPattern==="@hourly"){return"0 * * * *"}else{return pattern}};const maxDelay=Math.pow(2,32-1)-1;function Cron(pattern,fnOrOptions1,fnOrOptions2){if(!(this instanceof Cron)){return new Cron(pattern,fnOrOptions1,fnOrOptions2)}let options,func;if(typeof fnOrOptions1==="function"){func=fnOrOptions1}else if(typeof fnOrOptions1==="object"){options=fnOrOptions1}else if(fnOrOptions1!==void 0){throw new Error("Cron: Invalid argument passed for optionsIn. Should be one of function, or object (options).")}if(typeof fnOrOptions2==="function"){func=fnOrOptions2}else if(typeof fnOrOptions2==="object"){options=fnOrOptions2}else if(fnOrOptions2!==void 0){throw new Error("Cron: Invalid argument passed for funcIn. Should be one of function, or object (options).")}this.options=CronOptions(options);this.once=void 0;this.pattern=void 0;if(pattern&&(pattern instanceof Date||typeof pattern==="string"&&pattern.indexOf(":")>0)){this.once=new CronDate(pattern,this.options.timezone)}else{this.pattern=new CronPattern(pattern,this.options.timezone)}if(func!==void 0){this.fn=func;this.schedule()}return this}Cron.prototype.next=function(prev){const next=this._next(prev);return next?next.getDate():null};Cron.prototype.enumerate=function(n,previous){const enumeration=[];let prev=previous||this.previousrun;while(n--&&(prev=this.next(prev))){enumeration.push(prev)}return enumeration};Cron.prototype.running=function(){const msLeft=this.msToNext(this.previousrun);const running=!this.options.paused&&this.fn!==void 0;return msLeft!==null&&running};Cron.prototype.previous=function(){return this.previousrun?this.previousrun.getDate():null};Cron.prototype.msToNext=function(prev){const next=this._next(prev);prev=new CronDate(prev,this.options.timezone);if(next){return next.getTime(true)-prev.getTime(true)}else{return null}};Cron.prototype.stop=function(){this.options.kill=true;if(this.currentTimeout){clearTimeout(this.currentTimeout)}};Cron.prototype.pause=function(){return(this.options.paused=true)&&!this.options.kill};Cron.prototype.resume=function(){return!(this.options.paused=false)&&!this.options.kill};Cron.prototype.schedule=function(func){if(func&&this.fn){throw new Error("Cron: It is not allowed to schedule two functions using the same Croner instance.")}else if(func){this.fn=func}let waitMs=this.msToNext(this.previousrun);if(waitMs===null)return this;if(waitMs>maxDelay){waitMs=maxDelay}this.currentTimeout=setTimeout(()=>{if(waitMs!==maxDelay&&!this.options.paused){this.options.maxRuns--;if(this.options.catch){try{this.fn(this,this.options.context)}catch(_e){}}else{this.fn(this,this.options.context)}this.previousrun=new CronDate(void 0,this.options.timezone)}this.schedule()},waitMs);return this};Cron.prototype._next=function(prev){const hasPreviousRun=prev||this.previousrun?true:false;prev=new CronDate(prev,this.options.timezone);if(this.options.startAt&&prev&&prev.getTime(true)<this.options.startAt.getTime(true)){prev=this.options.startAt}const nextRun=this.once||new CronDate(prev,this.options.timezone).increment(this.pattern,this.options,hasPreviousRun);if(this.once&&this.once.getTime(true)<=prev.getTime(true)){return null}else 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}};return Cron});
@@ -1 +1 @@
1
- {"version":3,"sources":["dist/croner.cjs"],"names":["global","factory","exports","module","define","amd","globalThis","self","Cron","this","CronTZ","date","tzString","Date","toLocaleString","timeZone","CronOptions","options","legacyMode","paused","maxRuns","Infinity","catch","interval","parseInt","kill","startAt","CronDate","timezone","stopAt","isNaN","Error","fromDate","TypeError","fromString","fromCronDate","prototype","milliseconds","getMilliseconds","seconds","getSeconds","minutes","getMinutes","hours","getHours","days","getDate","months","getMonth","years","getFullYear","apply","newDate","str","parsedDate","parseISOLocal","increment","pattern","rerun","origTime","getTime","findNext","target","offset","override","startPos","let","i","length","match","targetDate","setDate","lastDayOfMonth","targetDateCopy","dowMatch","daysOfWeek","getDay","starDayOfWeek","starDayOfMonth","resetPrevious","doing","toDo","currentValue","default","internal","dateTimeString","dateTimeStringSplit","split","NaN","year","month","day","hour","minute","second","generatedDate","indexOf","UTC","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","CronPattern","Array","fill","parse","constructor","String","handleNicknames","parts","trim","replace","unshift","toUpperCase","replaceAlphaMonths","replaceAlphaDays","initDate","throwAtIllegalCharacters","partToArray","type","conf","valueIndexOffset","recursed","arr","handleRangeWithStepping","handleRange","handleStepping","handleNumber","reValidCron","test","matches","lower","upper","steps","start","cleanPattern","toLowerCase","maxDelay","Math","pow","func","once","fn","schedule","next","prev","_next","enumerate","n","previous","enumeration","push","running","msLeft","msToNext","previousrun","stop","currentTimeout","clearTimeout","pause","resume","waitMs","setTimeout","context","_e","hasPreviousRun","nextRun"],"mappings":"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"}
1
+ {"version":3,"sources":["dist/croner.cjs"],"names":["global","factory","exports","module","define","amd","globalThis","self","Cron","this","CronTZ","date","tzString","Date","toLocaleString","timeZone","CronOptions","options","legacyMode","paused","maxRuns","Infinity","catch","interval","parseInt","kill","startAt","CronDate","timezone","stopAt","isNaN","Error","fromDate","TypeError","fromString","fromCronDate","prototype","milliseconds","getMilliseconds","seconds","getSeconds","minutes","getMinutes","hours","getHours","days","getDate","months","getMonth","years","getFullYear","apply","newDate","str","parsedDate","parseISOLocal","increment","pattern","hasPreviousRun","findNext","target","offset","override","startPos","let","i","length","match","targetDate","setDate","lastDayOfMonth","targetDateCopy","dowMatch","daysOfWeek","getDay","starDayOfWeek","starDayOfMonth","resetPrevious","doing","toDo","currentValue","internal","getTime","dateTimeString","dateTimeStringSplit","split","NaN","year","month","day","hour","minute","second","generatedDate","indexOf","UTC","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","CronPattern","Array","fill","parse","constructor","String","handleNicknames","parts","trim","replace","unshift","toUpperCase","replaceAlphaMonths","replaceAlphaDays","initDate","throwAtIllegalCharacters","partToArray","type","conf","valueIndexOffset","recursed","arr","handleRangeWithStepping","handleRange","handleStepping","handleNumber","reValidCron","test","matches","lower","upper","steps","start","cleanPattern","toLowerCase","maxDelay","Math","pow","fnOrOptions1","fnOrOptions2","func","once","fn","schedule","next","prev","_next","enumerate","n","previous","enumeration","previousrun","push","running","msLeft","msToNext","stop","currentTimeout","clearTimeout","pause","resume","waitMs","setTimeout","context","_e","nextRun"],"mappings":"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"}
@@ -1 +1 @@
1
- function CronTZ(date,tzString){return new Date(date.toLocaleString("en-US",{timeZone:tzString}))}function CronOptions(options){if(options===void 0){options={}}options.legacyMode=options.legacyMode===void 0?false:options.legacyMode;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.interval=options.interval===void 0?0:parseInt(options.interval);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)}if(options.interval!==null){if(isNaN(options.interval)){throw new Error("CronOptions: Supplied value for interval is not a number")}else if(options.interval<0){throw new Error("CronOptions: Supplied value for interval can not be negative")}}return options}function CronDate(date,timezone){this.timezone=timezone;if(date&&date instanceof Date){if(!isNaN(date)){this.fromDate(date)}else{throw new TypeError("CronDate: Invalid date passed as parameter to CronDate constructor")}}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){if(this.timezone){date=CronTZ(date,this.timezone)}this.milliseconds=date.getMilliseconds();this.seconds=date.getSeconds();this.minutes=date.getMinutes();this.hours=date.getHours();this.days=date.getDate();this.months=date.getMonth();this.years=date.getFullYear()};CronDate.prototype.fromCronDate=function(date){this.timezone=date.timezone;this.milliseconds=date.milliseconds;this.seconds=date.seconds;this.minutes=date.minutes;this.hours=date.hours;this.days=date.days;this.months=date.months;this.years=date.years};CronDate.prototype.apply=function(){const newDate=new Date(this.years,this.months,this.days,this.hours,this.minutes,this.seconds,this.milliseconds);this.milliseconds=newDate.getMilliseconds();this.seconds=newDate.getSeconds();this.minutes=newDate.getMinutes();this.hours=newDate.getHours();this.days=newDate.getDate();this.months=newDate.getMonth();this.years=newDate.getFullYear()};CronDate.prototype.fromString=function(str){const parsedDate=this.parseISOLocal(str);if(isNaN(parsedDate)){throw new TypeError("CronDate: Provided string value for CronDate could not be parsed as date.")}this.fromDate(parsedDate)};CronDate.prototype.increment=function(pattern,options,rerun){if(!rerun){if(options.interval>1){this.seconds+=options.interval}else{this.seconds+=1}}this.apply();this.milliseconds=0;const origTime=this.getTime(),findNext=(target,pattern,offset,override)=>{const startPos=override===void 0?this[target]+offset:0;for(let i=startPos;i<pattern[target].length;i++){let match=pattern[target][i];if(target==="days"){let targetDate=this.getDate(true);targetDate.setDate(i-offset);if(pattern.lastDayOfMonth){let targetDateCopy=new Date(targetDate);targetDateCopy.setDate(i-offset+1);if(targetDateCopy.getMonth()!==this.months){match=true}}const dowMatch=pattern.daysOfWeek[targetDate.getDay()];if(options.legacyMode){if(!pattern.starDayOfWeek&&pattern.starDayOfMonth){match=dowMatch}else if(!pattern.starDayOfWeek&&!pattern.starDayOfMonth){match=match||dowMatch}}else{match=match&&dowMatch}}if(match){this[target]=i-offset;return true}}return false},resetPrevious=offset=>{while(doing+offset>=0){findNext(toDo[doing+offset][0],pattern,toDo[doing+offset][2],0);doing--}};const toDo=[["seconds","minutes",0],["minutes","hours",0],["hours","days",0],["days","months",-1],["months","years",0]];let doing=0;while(doing<5){let currentValue=this[toDo[doing][0]];if(!findNext(toDo[doing][0],pattern,toDo[doing][2])){this[toDo[doing][1]]++;resetPrevious(0)}else if(currentValue!==this[toDo[doing][0]]){resetPrevious(-1)}if(this.years>=4e3){return null}doing++}this.default=false;if(origTime!=this.getTime()){this.apply();return this.increment(pattern,options,true)}else{return this}};CronDate.prototype.getDate=function(internal){const targetDate=new Date(this.years,this.months,this.days,this.hours,this.minutes,this.seconds,this.milliseconds);if(internal||!this.timezone){return targetDate}else{const offset=CronTZ(targetDate,this.timezone).getTime()-targetDate.getTime();return new Date(targetDate.getTime()-offset)}};CronDate.prototype.getTime=function(internal){return this.getDate(internal).getTime()};CronDate.prototype.parseISOLocal=function(dateTimeString){const dateTimeStringSplit=dateTimeString.split(/\D/);if(dateTimeStringSplit.length<6){return NaN}const year=parseInt(dateTimeStringSplit[0],10),month=parseInt(dateTimeStringSplit[1],10),day=parseInt(dateTimeStringSplit[2],10),hour=parseInt(dateTimeStringSplit[3],10),minute=parseInt(dateTimeStringSplit[4],10),second=parseInt(dateTimeStringSplit[5],10);if(isNaN(year)||isNaN(month)||isNaN(day)||isNaN(hour)||isNaN(minute)||isNaN(second)){return NaN}else{let generatedDate;if(dateTimeString.indexOf("Z")>0){generatedDate=new Date(Date.UTC(year,month-1,day,hour,minute,second));if(year==generatedDate.getUTCFullYear()&&month==generatedDate.getUTCMonth()+1&&day==generatedDate.getUTCDate()&&hour==generatedDate.getUTCHours()&&minute==generatedDate.getUTCMinutes()&&second==generatedDate.getUTCSeconds()){return generatedDate}else{return NaN}}else{generatedDate=new Date(year,month-1,day,hour,minute,second);if(year==generatedDate.getFullYear()&&month==generatedDate.getMonth()+1&&day==generatedDate.getDate()&&hour==generatedDate.getHours()&&minute==generatedDate.getMinutes()&&second==generatedDate.getSeconds()){return generatedDate}else{return NaN}}}};function CronPattern(pattern,timezone){this.pattern=pattern;this.timezone=timezone;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.lastDayOfMonth=false;this.starDayOfMonth=false;this.starDayOfWeek=false;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.")}this.pattern=this.handleNicknames(this.pattern);const parts=this.pattern.trim().replace(/\s+/g," ").split(" ");if(parts.length<5||parts.length>6){throw new TypeError("CronPattern: invalid configuration format ('"+this.pattern+"'), exacly five or six space separated parts required.")}if(parts.length===5){parts.unshift("0")}if(parts[3].indexOf("L")>=0){parts[3]=parts[3].replace("L","");this.lastDayOfMonth=true}if(parts[3].toUpperCase()=="*"){this.starDayOfMonth=true}parts[4]=this.replaceAlphaMonths(parts[4]);parts[5]=this.replaceAlphaDays(parts[5]);if(parts[5].toUpperCase()=="*"){this.starDayOfWeek=true}let initDate=new CronDate(new Date,this.timezone).getDate(true);parts[0]=parts[0].replace("?",initDate.getSeconds());parts[1]=parts[1].replace("?",initDate.getMinutes());parts[2]=parts[2].replace("?",initDate.getHours());parts[3]=parts[3].replace("?",initDate.getDate());parts[4]=parts[4].replace("?",initDate.getMonth()+1);parts[5]=parts[5].replace("?",initDate.getDay());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 if(conf!==""){this.handleNumber(conf,type,valueIndexOffset)}};CronPattern.prototype.throwAtIllegalCharacters=function(parts){const reValidCron=/[^/*0-9,-]+/;for(let i=0;i<parts.length;i++){if(reValidCron.test(parts[i])){throw new TypeError("CronPattern: configuration entry "+i+" ("+parts[i]+") contains illegal characters.")}}};CronPattern.prototype.handleNumber=function(conf,type,valueIndexOffset){const i=parseInt(conf,10)+valueIndexOffset;if(isNaN(i)){throw new TypeError("CronPattern: "+type+" is not a number: '"+conf+"'")}if(i<0||i>=this[type].length){throw new TypeError("CronPattern: "+type+" value out of range: '"+conf+"'")}this[type][i]=1};CronPattern.prototype.handleRangeWithStepping=function(conf,type,valueIndexOffset){const matches=conf.match(/^(\d+)-(\d+)\/(\d+)$/);if(matches===null)throw new TypeError("CronPattern: Syntax error, illegal range with stepping: '"+conf+"'");let[,lower,upper,steps]=matches;lower=parseInt(lower,10)+valueIndexOffset;upper=parseInt(upper,10)+valueIndexOffset;steps=parseInt(steps,10);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]=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]=1}};CronPattern.prototype.handleStepping=function(conf,type){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]=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")};CronPattern.prototype.handleNicknames=function(pattern){const cleanPattern=pattern.trim().toLowerCase();if(cleanPattern==="@yearly"||cleanPattern==="@annually"){return"0 0 1 1 *"}else if(cleanPattern==="@monthly"){return"0 0 1 * *"}else if(cleanPattern==="@weekly"){return"0 0 * * 0"}else if(cleanPattern==="@daily"){return"0 0 * * *"}else if(cleanPattern==="@hourly"){return"0 * * * *"}else{return pattern}};const maxDelay=Math.pow(2,32-1)-1;function Cron(pattern,options,func){if(!(this instanceof Cron)){return new Cron(pattern,options,func)}if(typeof options==="function"){func=options;options=void 0}this.options=CronOptions(options);this.once=void 0;this.pattern=void 0;if(pattern&&(pattern instanceof Date||typeof pattern==="string"&&pattern.indexOf(":")>0)){this.once=new CronDate(pattern,this.options.timezone)}else{this.pattern=new CronPattern(pattern,this.options.timezone)}if(func!==void 0){this.fn=func;this.schedule()}return this}Cron.prototype.next=function(prev){const next=this._next(prev);return next?next.getDate():null};Cron.prototype.enumerate=function(n,previous){const enumeration=[];while(n--&&(previous=this.next(previous))){enumeration.push(previous)}return enumeration};Cron.prototype.running=function(){const msLeft=this.msToNext(this.previousrun);const running=!this.options.paused&&this.fn!==void 0;return msLeft!==null&&running};Cron.prototype.previous=function(){return this.previousrun?this.previousrun.getDate():null};Cron.prototype.msToNext=function(prev){const next=this._next(prev);prev=new CronDate(prev,this.options.timezone);if(next){return next.getTime(true)-prev.getTime(true)}else{return null}};Cron.prototype.stop=function(){this.options.kill=true;if(this.currentTimeout){clearTimeout(this.currentTimeout)}};Cron.prototype.pause=function(){return(this.options.paused=true)&&!this.options.kill};Cron.prototype.resume=function(){return!(this.options.paused=false)&&!this.options.kill};Cron.prototype.schedule=function(func){if(func&&this.fn){throw new Error("Cron: It is not allowed to schedule two functions using the same Croner instance.")}else if(func){this.fn=func}let waitMs=this.msToNext(this.previousrun);if(waitMs===null)return this;if(waitMs>maxDelay){waitMs=maxDelay}this.currentTimeout=setTimeout(()=>{if(waitMs!==maxDelay&&!this.options.paused){this.options.maxRuns--;if(this.options.catch){try{this.fn(this,this.options.context)}catch(_e){}}else{this.fn(this,this.options.context)}this.previousrun=new CronDate(void 0,this.options.timezone)}this.schedule()},waitMs);return this};Cron.prototype._next=function(prev){prev=prev||this.previousrun;const hasPreviousRun=prev?true:false;prev=new CronDate(prev,this.options.timezone);if(this.options.startAt&&prev&&prev.getTime(true)<this.options.startAt.getTime(true)){prev=this.options.startAt}const nextRun=this.once||new CronDate(prev,this.options.timezone).increment(this.pattern,this.options,!hasPreviousRun);if(this.once&&this.once.getTime(true)<=prev.getTime(true)){return null}else 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}};export{Cron,Cron as default};
1
+ function CronTZ(date,tzString){return new Date(date.toLocaleString("en-US",{timeZone:tzString}))}function CronOptions(options){if(options===void 0){options={}}options.legacyMode=options.legacyMode===void 0?false:options.legacyMode;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.interval=options.interval===void 0?0:parseInt(options.interval);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)}if(options.interval!==null){if(isNaN(options.interval)){throw new Error("CronOptions: Supplied value for interval is not a number")}else if(options.interval<0){throw new Error("CronOptions: Supplied value for interval can not be negative")}}return options}function CronDate(date,timezone){this.timezone=timezone;if(date&&date instanceof Date){if(!isNaN(date)){this.fromDate(date)}else{throw new TypeError("CronDate: Invalid date passed as parameter to CronDate constructor")}}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){if(this.timezone){date=CronTZ(date,this.timezone)}this.milliseconds=date.getMilliseconds();this.seconds=date.getSeconds();this.minutes=date.getMinutes();this.hours=date.getHours();this.days=date.getDate();this.months=date.getMonth();this.years=date.getFullYear()};CronDate.prototype.fromCronDate=function(date){this.timezone=date.timezone;this.milliseconds=date.milliseconds;this.seconds=date.seconds;this.minutes=date.minutes;this.hours=date.hours;this.days=date.days;this.months=date.months;this.years=date.years};CronDate.prototype.apply=function(){const newDate=new Date(this.years,this.months,this.days,this.hours,this.minutes,this.seconds,this.milliseconds);this.milliseconds=newDate.getMilliseconds();this.seconds=newDate.getSeconds();this.minutes=newDate.getMinutes();this.hours=newDate.getHours();this.days=newDate.getDate();this.months=newDate.getMonth();this.years=newDate.getFullYear()};CronDate.prototype.fromString=function(str){const parsedDate=this.parseISOLocal(str);if(isNaN(parsedDate)){throw new TypeError("CronDate: Provided string value for CronDate could not be parsed as date.")}this.fromDate(parsedDate)};CronDate.prototype.increment=function(pattern,options,hasPreviousRun){if(options.interval>1&&hasPreviousRun){this.seconds+=options.interval}else{this.seconds+=1}this.milliseconds=0;this.apply();const findNext=(target,pattern,offset,override)=>{const startPos=override===void 0?this[target]+offset:0;for(let i=startPos;i<pattern[target].length;i++){let match=pattern[target][i];if(target==="days"){let targetDate=this.getDate(true);targetDate.setDate(i-offset);if(pattern.lastDayOfMonth){let targetDateCopy=new Date(targetDate);targetDateCopy.setDate(i-offset+1);if(targetDateCopy.getMonth()!==this.months){match=true}}const dowMatch=pattern.daysOfWeek[targetDate.getDay()];if(options.legacyMode){if(!pattern.starDayOfWeek&&pattern.starDayOfMonth){match=dowMatch}else if(!pattern.starDayOfWeek&&!pattern.starDayOfMonth){match=match||dowMatch}}else{match=match&&dowMatch}}if(match){this[target]=i-offset;return true}}return false},resetPrevious=offset=>{while(doing+offset>=0){findNext(toDo[doing+offset][0],pattern,toDo[doing+offset][2],0);doing--}};const toDo=[["seconds","minutes",0],["minutes","hours",0],["hours","days",0],["days","months",-1],["months","years",0]];let doing=0;while(doing<5){let currentValue=this[toDo[doing][0]];if(!findNext(toDo[doing][0],pattern,toDo[doing][2])){this[toDo[doing][1]]++;resetPrevious(0);this.apply()}else if(currentValue!==this[toDo[doing][0]]){resetPrevious(-1)}if(this.years>=4e3){return null}doing++}return this};CronDate.prototype.getDate=function(internal){const targetDate=new Date(this.years,this.months,this.days,this.hours,this.minutes,this.seconds,this.milliseconds);if(internal||!this.timezone){return targetDate}else{const offset=CronTZ(targetDate,this.timezone).getTime()-targetDate.getTime();return new Date(targetDate.getTime()-offset)}};CronDate.prototype.getTime=function(internal){return this.getDate(internal).getTime()};CronDate.prototype.parseISOLocal=function(dateTimeString){const dateTimeStringSplit=dateTimeString.split(/\D/);if(dateTimeStringSplit.length<6){return NaN}const year=parseInt(dateTimeStringSplit[0],10),month=parseInt(dateTimeStringSplit[1],10),day=parseInt(dateTimeStringSplit[2],10),hour=parseInt(dateTimeStringSplit[3],10),minute=parseInt(dateTimeStringSplit[4],10),second=parseInt(dateTimeStringSplit[5],10);if(isNaN(year)||isNaN(month)||isNaN(day)||isNaN(hour)||isNaN(minute)||isNaN(second)){return NaN}else{let generatedDate;if(dateTimeString.indexOf("Z")>0){generatedDate=new Date(Date.UTC(year,month-1,day,hour,minute,second));if(year==generatedDate.getUTCFullYear()&&month==generatedDate.getUTCMonth()+1&&day==generatedDate.getUTCDate()&&hour==generatedDate.getUTCHours()&&minute==generatedDate.getUTCMinutes()&&second==generatedDate.getUTCSeconds()){return generatedDate}else{return NaN}}else{generatedDate=new Date(year,month-1,day,hour,minute,second);if(year==generatedDate.getFullYear()&&month==generatedDate.getMonth()+1&&day==generatedDate.getDate()&&hour==generatedDate.getHours()&&minute==generatedDate.getMinutes()&&second==generatedDate.getSeconds()){return generatedDate}else{return NaN}}}};function CronPattern(pattern,timezone){this.pattern=pattern;this.timezone=timezone;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.lastDayOfMonth=false;this.starDayOfMonth=false;this.starDayOfWeek=false;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.")}this.pattern=this.handleNicknames(this.pattern);const parts=this.pattern.trim().replace(/\s+/g," ").split(" ");if(parts.length<5||parts.length>6){throw new TypeError("CronPattern: invalid configuration format ('"+this.pattern+"'), exacly five or six space separated parts required.")}if(parts.length===5){parts.unshift("0")}if(parts[3].indexOf("L")>=0){parts[3]=parts[3].replace("L","");this.lastDayOfMonth=true}if(parts[3].toUpperCase()=="*"){this.starDayOfMonth=true}parts[4]=this.replaceAlphaMonths(parts[4]);parts[5]=this.replaceAlphaDays(parts[5]);if(parts[5].toUpperCase()=="*"){this.starDayOfWeek=true}let initDate=new CronDate(new Date,this.timezone).getDate(true);parts[0]=parts[0].replace("?",initDate.getSeconds());parts[1]=parts[1].replace("?",initDate.getMinutes());parts[2]=parts[2].replace("?",initDate.getHours());parts[3]=parts[3].replace("?",initDate.getDate());parts[4]=parts[4].replace("?",initDate.getMonth()+1);parts[5]=parts[5].replace("?",initDate.getDay());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 if(conf!==""){this.handleNumber(conf,type,valueIndexOffset)}};CronPattern.prototype.throwAtIllegalCharacters=function(parts){const reValidCron=/[^/*0-9,-]+/;for(let i=0;i<parts.length;i++){if(reValidCron.test(parts[i])){throw new TypeError("CronPattern: configuration entry "+i+" ("+parts[i]+") contains illegal characters.")}}};CronPattern.prototype.handleNumber=function(conf,type,valueIndexOffset){const i=parseInt(conf,10)+valueIndexOffset;if(isNaN(i)){throw new TypeError("CronPattern: "+type+" is not a number: '"+conf+"'")}if(i<0||i>=this[type].length){throw new TypeError("CronPattern: "+type+" value out of range: '"+conf+"'")}this[type][i]=1};CronPattern.prototype.handleRangeWithStepping=function(conf,type,valueIndexOffset){const matches=conf.match(/^(\d+)-(\d+)\/(\d+)$/);if(matches===null)throw new TypeError("CronPattern: Syntax error, illegal range with stepping: '"+conf+"'");let[,lower,upper,steps]=matches;lower=parseInt(lower,10)+valueIndexOffset;upper=parseInt(upper,10)+valueIndexOffset;steps=parseInt(steps,10);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]=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]=1}};CronPattern.prototype.handleStepping=function(conf,type){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]=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")};CronPattern.prototype.handleNicknames=function(pattern){const cleanPattern=pattern.trim().toLowerCase();if(cleanPattern==="@yearly"||cleanPattern==="@annually"){return"0 0 1 1 *"}else if(cleanPattern==="@monthly"){return"0 0 1 * *"}else if(cleanPattern==="@weekly"){return"0 0 * * 0"}else if(cleanPattern==="@daily"){return"0 0 * * *"}else if(cleanPattern==="@hourly"){return"0 * * * *"}else{return pattern}};const maxDelay=Math.pow(2,32-1)-1;function Cron(pattern,fnOrOptions1,fnOrOptions2){if(!(this instanceof Cron)){return new Cron(pattern,fnOrOptions1,fnOrOptions2)}let options,func;if(typeof fnOrOptions1==="function"){func=fnOrOptions1}else if(typeof fnOrOptions1==="object"){options=fnOrOptions1}else if(fnOrOptions1!==void 0){throw new Error("Cron: Invalid argument passed for optionsIn. Should be one of function, or object (options).")}if(typeof fnOrOptions2==="function"){func=fnOrOptions2}else if(typeof fnOrOptions2==="object"){options=fnOrOptions2}else if(fnOrOptions2!==void 0){throw new Error("Cron: Invalid argument passed for funcIn. Should be one of function, or object (options).")}this.options=CronOptions(options);this.once=void 0;this.pattern=void 0;if(pattern&&(pattern instanceof Date||typeof pattern==="string"&&pattern.indexOf(":")>0)){this.once=new CronDate(pattern,this.options.timezone)}else{this.pattern=new CronPattern(pattern,this.options.timezone)}if(func!==void 0){this.fn=func;this.schedule()}return this}Cron.prototype.next=function(prev){const next=this._next(prev);return next?next.getDate():null};Cron.prototype.enumerate=function(n,previous){const enumeration=[];let prev=previous||this.previousrun;while(n--&&(prev=this.next(prev))){enumeration.push(prev)}return enumeration};Cron.prototype.running=function(){const msLeft=this.msToNext(this.previousrun);const running=!this.options.paused&&this.fn!==void 0;return msLeft!==null&&running};Cron.prototype.previous=function(){return this.previousrun?this.previousrun.getDate():null};Cron.prototype.msToNext=function(prev){const next=this._next(prev);prev=new CronDate(prev,this.options.timezone);if(next){return next.getTime(true)-prev.getTime(true)}else{return null}};Cron.prototype.stop=function(){this.options.kill=true;if(this.currentTimeout){clearTimeout(this.currentTimeout)}};Cron.prototype.pause=function(){return(this.options.paused=true)&&!this.options.kill};Cron.prototype.resume=function(){return!(this.options.paused=false)&&!this.options.kill};Cron.prototype.schedule=function(func){if(func&&this.fn){throw new Error("Cron: It is not allowed to schedule two functions using the same Croner instance.")}else if(func){this.fn=func}let waitMs=this.msToNext(this.previousrun);if(waitMs===null)return this;if(waitMs>maxDelay){waitMs=maxDelay}this.currentTimeout=setTimeout(()=>{if(waitMs!==maxDelay&&!this.options.paused){this.options.maxRuns--;if(this.options.catch){try{this.fn(this,this.options.context)}catch(_e){}}else{this.fn(this,this.options.context)}this.previousrun=new CronDate(void 0,this.options.timezone)}this.schedule()},waitMs);return this};Cron.prototype._next=function(prev){const hasPreviousRun=prev||this.previousrun?true:false;prev=new CronDate(prev,this.options.timezone);if(this.options.startAt&&prev&&prev.getTime(true)<this.options.startAt.getTime(true)){prev=this.options.startAt}const nextRun=this.once||new CronDate(prev,this.options.timezone).increment(this.pattern,this.options,hasPreviousRun);if(this.once&&this.once.getTime(true)<=prev.getTime(true)){return null}else 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}};export{Cron,Cron as default};
@@ -1 +1 @@
1
- {"version":3,"sources":["dist/croner.mjs"],"names":["CronTZ","date","tzString","Date","toLocaleString","timeZone","CronOptions","options","legacyMode","paused","maxRuns","Infinity","catch","interval","parseInt","kill","startAt","CronDate","timezone","stopAt","isNaN","Error","this","fromDate","TypeError","fromString","fromCronDate","prototype","milliseconds","getMilliseconds","seconds","getSeconds","minutes","getMinutes","hours","getHours","days","getDate","months","getMonth","years","getFullYear","apply","newDate","str","parsedDate","parseISOLocal","increment","pattern","rerun","origTime","getTime","findNext","target","offset","override","startPos","let","i","length","match","targetDate","setDate","lastDayOfMonth","targetDateCopy","dowMatch","daysOfWeek","getDay","starDayOfWeek","starDayOfMonth","resetPrevious","doing","toDo","currentValue","default","internal","dateTimeString","dateTimeStringSplit","split","NaN","year","month","day","hour","minute","second","generatedDate","indexOf","UTC","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","CronPattern","Array","fill","parse","constructor","String","handleNicknames","parts","trim","replace","unshift","toUpperCase","replaceAlphaMonths","replaceAlphaDays","initDate","throwAtIllegalCharacters","partToArray","type","conf","valueIndexOffset","recursed","arr","handleRangeWithStepping","handleRange","handleStepping","handleNumber","reValidCron","test","matches","lower","upper","steps","start","cleanPattern","toLowerCase","maxDelay","Math","pow","Cron","func","once","fn","schedule","next","prev","_next","enumerate","n","previous","enumeration","push","running","msLeft","msToNext","previousrun","stop","currentTimeout","clearTimeout","pause","resume","waitMs","setTimeout","context","_e","hasPreviousRun","nextRun"],"mappings":"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"}
1
+ {"version":3,"sources":["dist/croner.mjs"],"names":["CronTZ","date","tzString","Date","toLocaleString","timeZone","CronOptions","options","legacyMode","paused","maxRuns","Infinity","catch","interval","parseInt","kill","startAt","CronDate","timezone","stopAt","isNaN","Error","this","fromDate","TypeError","fromString","fromCronDate","prototype","milliseconds","getMilliseconds","seconds","getSeconds","minutes","getMinutes","hours","getHours","days","getDate","months","getMonth","years","getFullYear","apply","newDate","str","parsedDate","parseISOLocal","increment","pattern","hasPreviousRun","findNext","target","offset","override","startPos","let","i","length","match","targetDate","setDate","lastDayOfMonth","targetDateCopy","dowMatch","daysOfWeek","getDay","starDayOfWeek","starDayOfMonth","resetPrevious","doing","toDo","currentValue","internal","getTime","dateTimeString","dateTimeStringSplit","split","NaN","year","month","day","hour","minute","second","generatedDate","indexOf","UTC","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","CronPattern","Array","fill","parse","constructor","String","handleNicknames","parts","trim","replace","unshift","toUpperCase","replaceAlphaMonths","replaceAlphaDays","initDate","throwAtIllegalCharacters","partToArray","type","conf","valueIndexOffset","recursed","arr","handleRangeWithStepping","handleRange","handleStepping","handleNumber","reValidCron","test","matches","lower","upper","steps","start","cleanPattern","toLowerCase","maxDelay","Math","pow","Cron","fnOrOptions1","fnOrOptions2","func","once","fn","schedule","next","prev","_next","enumerate","n","previous","enumeration","previousrun","push","running","msLeft","msToNext","stop","currentTimeout","clearTimeout","pause","resume","waitMs","setTimeout","context","_e","nextRun"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "croner",
3
- "version": "4.3.1",
3
+ "version": "4.3.4",
4
4
  "description": "Trigger functions and/or evaluate cron expressions in JavaScript. No dependencies. Most features. All environmens.",
5
5
  "author": "Hexagon <github.com/hexagon>",
6
6
  "homepage": "https://hexagon.github.io/croner",
@@ -38,11 +38,11 @@
38
38
  ],
39
39
  "scripts": {
40
40
  "test": "uvu test test.croner.js",
41
- "test:dist": "uvu test/js && npm run test:ts",
41
+ "test:dist": "uvu test/node/js && npm run test:ts",
42
42
  "test:coverage": "c8 --include=src npm test",
43
43
  "test:lint": "eslint ./**/*.js ./**/*.cjs",
44
44
  "test:lint:fix": "eslint --fix ./**/*.js ./**/*.cjs",
45
- "test:ts": "tsc --noEmit ./test/ts/basics.ts",
45
+ "test:ts": "tsc --noEmit ./test/node/ts/basics.ts",
46
46
  "build": "npm update && npm run build:precleanup && npm run test:lint && npm run build:typings && npm run build:dist && npm run build:minify && npm run build:cleanup && npm run test:coverage && npm run test:dist",
47
47
  "build:ci": "npm run test:lint && npm run build:typings && npm run build:dist && npm run build:minify && npm run build:cleanup && npm run test:coverage && npm run test:dist",
48
48
  "build:precleanup": "(rm -rf types/* || del /Q types\\*) && (rm -rf dist/* || del /Q dist\\*)",
package/src/croner.js CHANGED
@@ -48,21 +48,34 @@ const maxDelay = Math.pow(2, 32 - 1) - 1;
48
48
  *
49
49
  * @constructor
50
50
  * @param {string|Date} pattern - Input pattern, input date, or input ISO 8601 time string
51
- * @param {CronOptions|Function} [options] - Options
52
- * @param {Function} [func] - Function to be run each iteration of pattern
51
+ * @param {CronOptions|Function} [fnOrOptions1] - Options or function to be run each iteration of pattern
52
+ * @param {CronOptions|Function} [fnOrOptions2] - Options or function to be run each iteration of pattern
53
53
  * @returns {Cron}
54
54
  */
55
- function Cron (pattern, options, func) {
55
+ function Cron (pattern, fnOrOptions1, fnOrOptions2) {
56
56
 
57
57
  // Optional "new" keyword
58
58
  if( !(this instanceof Cron) ) {
59
- return new Cron(pattern, options, func);
59
+ return new Cron(pattern, fnOrOptions1, fnOrOptions2);
60
60
  }
61
61
 
62
- // Make options optional
63
- if( typeof options === "function" ) {
64
- func = options;
65
- options = void 0;
62
+ // Make options and func optional and interchangable
63
+ let options, func;
64
+
65
+ if( typeof fnOrOptions1 === "function" ) {
66
+ func = fnOrOptions1;
67
+ } else if( typeof fnOrOptions1 === "object" ) {
68
+ options = fnOrOptions1;
69
+ } else if( fnOrOptions1 !== void 0) {
70
+ throw new Error("Cron: Invalid argument passed for optionsIn. Should be one of function, or object (options).");
71
+ }
72
+
73
+ if( typeof fnOrOptions2 === "function" ) {
74
+ func = fnOrOptions2;
75
+ } else if( typeof fnOrOptions2 === "object" ) {
76
+ options = fnOrOptions2;
77
+ } else if( fnOrOptions2 !== void 0) {
78
+ throw new Error("Cron: Invalid argument passed for funcIn. Should be one of function, or object (options).");
66
79
  }
67
80
 
68
81
  /** @type {CronOptions} */
@@ -112,8 +125,9 @@ Cron.prototype.next = function (prev) {
112
125
  */
113
126
  Cron.prototype.enumerate = function (n, previous) {
114
127
  const enumeration = [];
115
- while(n-- && (previous = this.next(previous))) {
116
- enumeration.push(previous);
128
+ let prev = previous || this.previousrun;
129
+ while(n-- && (prev = this.next(prev))) {
130
+ enumeration.push(prev);
117
131
  }
118
132
 
119
133
  return enumeration;
@@ -264,10 +278,7 @@ Cron.prototype.schedule = function (func) {
264
278
  */
265
279
  Cron.prototype._next = function (prev) {
266
280
 
267
- // Use actual previous run if not supplied
268
- prev = prev || this.previousrun;
269
-
270
- const hasPreviousRun = prev ? true : false;
281
+ const hasPreviousRun = (prev || this.previousrun) ? true : false;
271
282
 
272
283
  // Ensure previous run is a CronDate
273
284
  prev = new CronDate(prev, this.options.timezone);
@@ -279,7 +290,7 @@ Cron.prototype._next = function (prev) {
279
290
 
280
291
  // Calculate next run according to pattern or one-off timestamp, pass actual previous run to increment
281
292
  const
282
- nextRun = this.once || new CronDate(prev, this.options.timezone).increment(this.pattern, this.options, !hasPreviousRun);
293
+ nextRun = this.once || new CronDate(prev, this.options.timezone).increment(this.pattern, this.options, hasPreviousRun);
283
294
 
284
295
  if (this.once && this.once.getTime(true) <= prev.getTime(true)) {
285
296
  return null;
package/src/date.js CHANGED
@@ -111,27 +111,21 @@ CronDate.prototype.fromString = function (str) {
111
111
  *
112
112
  * @param {string} pattern - The pattern used to increment current state
113
113
  * @param {CronOptions} options - Cron options used for incrementing
114
- * @param {boolean} [rerun=false] - If this is an internal incremental run
114
+ * @param {boolean} [hasPreviousRun] - If this run should adhere to minimum interval
115
115
  * @return {CronDate|null} - Returns itself for chaining, or null if increment wasnt possible
116
116
  */
117
- CronDate.prototype.increment = function (pattern, options, rerun) {
117
+ CronDate.prototype.increment = function (pattern, options, hasPreviousRun) {
118
118
 
119
- // Always add one second, or minimum interval
120
- if (!rerun) {
121
- if (options.interval > 1) {
122
- this.seconds += options.interval;
123
- } else {
124
- this.seconds += 1;
125
- }
119
+ // Always add one second, or minimum interval, then clear milliseconds and apply changes if seconds has gotten out of bounds
120
+ if (options.interval > 1 && hasPreviousRun) {
121
+ this.seconds += options.interval;
122
+ } else {
123
+ this.seconds += 1;
126
124
  }
127
-
128
- this.apply();
129
-
130
125
  this.milliseconds = 0;
126
+ this.apply();
131
127
 
132
128
  const
133
-
134
- origTime = this.getTime(),
135
129
 
136
130
  /**
137
131
  * Find next
@@ -255,6 +249,9 @@ CronDate.prototype.increment = function (pattern, options, rerun) {
255
249
  // Reset current level and previous levels
256
250
  resetPrevious(0);
257
251
 
252
+ // Apply changes if any value has gotten out of bounds
253
+ this.apply();
254
+
258
255
  // If pattern provided a match, but changed current value ...
259
256
  } else if (currentValue !== this[toDo[doing][0]]) {
260
257
 
@@ -267,19 +264,13 @@ CronDate.prototype.increment = function (pattern, options, rerun) {
267
264
  if (this.years >= 4000) {
268
265
  return null;
269
266
  }
270
-
267
+
271
268
  // Gp down, seconds -> minutes -> hours -> days -> months -> year
272
269
  doing++;
273
270
  }
274
271
 
275
272
  // If anything changed, recreate this CronDate and run again without incrementing
276
- this.default = false;
277
- if (origTime != this.getTime()) {
278
- this.apply();
279
- return this.increment(pattern, options, true);
280
- } else {
281
- return this;
282
- }
273
+ return this;
283
274
 
284
275
  };
285
276
 
package/types/croner.d.ts CHANGED
@@ -4,22 +4,22 @@ export default Cron;
4
4
  *
5
5
  * @constructor
6
6
  * @param {string|Date} pattern - Input pattern, input date, or input ISO 8601 time string
7
- * @param {CronOptions|Function} [options] - Options
8
- * @param {Function} [func] - Function to be run each iteration of pattern
7
+ * @param {CronOptions|Function} [fnOrOptions1] - Options or function to be run each iteration of pattern
8
+ * @param {CronOptions|Function} [fnOrOptions2] - Options or function to be run each iteration of pattern
9
9
  * @returns {Cron}
10
10
  */
11
- export function Cron(pattern: string | Date, options?: CronOptions | Function, func?: Function): Cron;
11
+ export function Cron(pattern: string | Date, fnOrOptions1?: CronOptions | Function, fnOrOptions2?: CronOptions | Function): Cron;
12
12
  export class Cron {
13
13
  /**
14
14
  * Cron entrypoint
15
15
  *
16
16
  * @constructor
17
17
  * @param {string|Date} pattern - Input pattern, input date, or input ISO 8601 time string
18
- * @param {CronOptions|Function} [options] - Options
19
- * @param {Function} [func] - Function to be run each iteration of pattern
18
+ * @param {CronOptions|Function} [fnOrOptions1] - Options or function to be run each iteration of pattern
19
+ * @param {CronOptions|Function} [fnOrOptions2] - Options or function to be run each iteration of pattern
20
20
  * @returns {Cron}
21
21
  */
22
- constructor(pattern: string | Date, options?: CronOptions | Function, func?: Function);
22
+ constructor(pattern: string | Date, fnOrOptions1?: CronOptions | Function, fnOrOptions2?: CronOptions | Function);
23
23
  /** @type {CronOptions} */
24
24
  options: CronOptions;
25
25
  once: CronDate;
package/types/date.d.ts CHANGED
@@ -33,11 +33,10 @@ export class CronDate {
33
33
  *
34
34
  * @param {string} pattern - The pattern used to increment current state
35
35
  * @param {CronOptions} options - Cron options used for incrementing
36
- * @param {boolean} [rerun=false] - If this is an internal incremental run
36
+ * @param {boolean} [hasPreviousRun] - If this run should adhere to minimum interval
37
37
  * @return {CronDate|null} - Returns itself for chaining, or null if increment wasnt possible
38
38
  */
39
- public increment(pattern: string, options: CronOptions, rerun?: boolean): CronDate | null;
40
- default: boolean;
39
+ public increment(pattern: string, options: CronOptions, hasPreviousRun?: boolean): CronDate | null;
41
40
  /**
42
41
  * Convert current state back to a javascript Date()
43
42
  * @public