croner 4.3.1 → 4.3.2

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
@@ -192,13 +192,14 @@
192
192
  * @param {string} pattern - The pattern used to increment current state
193
193
  * @param {CronOptions} options - Cron options used for incrementing
194
194
  * @param {boolean} [rerun=false] - If this is an internal incremental run
195
+ * @param {boolean} [hasPreviousRun] - If this run should adhere to minimum interval
195
196
  * @return {CronDate|null} - Returns itself for chaining, or null if increment wasnt possible
196
197
  */
197
- CronDate.prototype.increment = function (pattern, options, rerun) {
198
+ CronDate.prototype.increment = function (pattern, options, rerun, hasPreviousRun) {
198
199
 
199
200
  // Always add one second, or minimum interval
200
201
  if (!rerun) {
201
- if (options.interval > 1) {
202
+ if (options.interval > 1 && hasPreviousRun) {
202
203
  this.seconds += options.interval;
203
204
  } else {
204
205
  this.seconds += 1;
@@ -356,7 +357,7 @@
356
357
  this.default = false;
357
358
  if (origTime != this.getTime()) {
358
359
  this.apply();
359
- return this.increment(pattern, options, true);
360
+ return this.increment(pattern, options, true, hasPreviousRun);
360
361
  } else {
361
362
  return this;
362
363
  }
@@ -1100,10 +1101,7 @@
1100
1101
  */
1101
1102
  Cron.prototype._next = function (prev) {
1102
1103
 
1103
- // Use actual previous run if not supplied
1104
- prev = prev || this.previousrun;
1105
-
1106
- const hasPreviousRun = prev ? true : false;
1104
+ const hasPreviousRun = (prev || this.previousrun) ? true : false;
1107
1105
 
1108
1106
  // Ensure previous run is a CronDate
1109
1107
  prev = new CronDate(prev, this.options.timezone);
@@ -1115,7 +1113,7 @@
1115
1113
 
1116
1114
  // Calculate next run according to pattern or one-off timestamp, pass actual previous run to increment
1117
1115
  const
1118
- nextRun = this.once || new CronDate(prev, this.options.timezone).increment(this.pattern, this.options, !hasPreviousRun);
1116
+ nextRun = this.once || new CronDate(prev, this.options.timezone).increment(this.pattern, this.options, false, hasPreviousRun);
1119
1117
 
1120
1118
  if (this.once && this.once.getTime(true) <= prev.getTime(true)) {
1121
1119
  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,rerun,hasPreviousRun){if(!rerun){if(options.interval>1&&hasPreviousRun){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,hasPreviousRun)}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){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,false,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":"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,OAAOC,KAAMC,UACrB,OAAO,IAAIC,KAAKF,KAAKG,eAAe,QAAS,CAACC,SAAUH,YAwBzD,SAASI,YAAYC,SAGpB,GAAIA,eAAiB,EAAG,CACvBA,QAAU,GAIXA,QAAQC,WAAcD,QAAQC,kBAAoB,EAAK,MAAQD,QAAQC,WACvED,QAAQE,OAAUF,QAAQE,cAAgB,EAAK,MAAQF,QAAQE,OAC/DF,QAAQG,QAAWH,QAAQG,eAAiB,EAAKC,SAAWJ,QAAQG,QACpEH,QAAQK,MAASL,QAAQK,aAAe,EAAK,MAAQL,QAAQK,MAC7DL,QAAQM,SAAYN,QAAQM,gBAAkB,EAAK,EAAIC,SAASP,QAAQM,UACxEN,QAAQQ,KAAO,MAGf,GAAIR,QAAQS,QAAU,CACrBT,QAAQS,QAAU,IAAIC,SAASV,QAAQS,QAAST,QAAQW,UAEzD,GAAIX,QAAQY,OAAS,CACpBZ,QAAQY,OAAS,IAAIF,SAASV,QAAQY,OAAQZ,QAAQW,UAIvD,GAAIX,QAAQM,WAAa,KAAM,CAC9B,GAAIO,MAAMb,QAAQM,UAAW,CAC5B,MAAM,IAAIQ,MAAM,iEACV,GAAId,QAAQM,SAAW,EAAG,CAChC,MAAM,IAAIQ,MAAM,iEAIlB,OAAOd,QAWR,SAASU,SAAUhB,KAAMiB,UAExBnB,KAAKmB,SAAWA,SAEhB,GAAIjB,MAAQA,gBAAgBE,KAAM,CACjC,IAAKiB,MAAMnB,MAAO,CACjBF,KAAKuB,SAASrB,UACR,CACN,MAAM,IAAIsB,UAAU,4EAEf,GAAItB,YAAc,EAAG,CAC3BF,KAAKuB,SAAS,IAAInB,WACZ,GAAIF,aAAeA,OAAS,SAAU,CAC5CF,KAAKyB,WAAWvB,WACV,GAAIA,gBAAgBgB,SAAU,CACpClB,KAAK0B,aAAaxB,UACZ,CACN,MAAM,IAAIsB,UAAU,kCAAoCtB,KAAO,kDAWjEgB,SAASS,UAAUJ,SAAW,SAAUrB,MAEvC,GAAIF,KAAKmB,SAAU,CAClBjB,KAAOD,OAAOC,KAAMF,KAAKmB,UAG1BnB,KAAK4B,aAAe1B,KAAK2B,kBACzB7B,KAAK8B,QAAU5B,KAAK6B,aACpB/B,KAAKgC,QAAU9B,KAAK+B,aACpBjC,KAAKkC,MAAQhC,KAAKiC,WAClBnC,KAAKoC,KAAOlC,KAAKmC,UACjBrC,KAAKsC,OAAUpC,KAAKqC,WACpBvC,KAAKwC,MAAQtC,KAAKuC,eAUnBvB,SAASS,UAAUD,aAAe,SAAUxB,MAC3CF,KAAKmB,SAAWjB,KAAKiB,SACrBnB,KAAK4B,aAAe1B,KAAK0B,aACzB5B,KAAK8B,QAAU5B,KAAK4B,QACpB9B,KAAKgC,QAAU9B,KAAK8B,QACpBhC,KAAKkC,MAAQhC,KAAKgC,MAClBlC,KAAKoC,KAAOlC,KAAKkC,KACjBpC,KAAKsC,OAASpC,KAAKoC,OACnBtC,KAAKwC,MAAQtC,KAAKsC,OASnBtB,SAASS,UAAUe,MAAQ,WAC1B,MAAMC,QAAU,IAAIvC,KAAKJ,KAAKwC,MAAOxC,KAAKsC,OAAQtC,KAAKoC,KAAMpC,KAAKkC,MAAOlC,KAAKgC,QAAShC,KAAK8B,QAAS9B,KAAK4B,cAE1G5B,KAAK4B,aAAee,QAAQd,kBAC5B7B,KAAK8B,QAAUa,QAAQZ,aACvB/B,KAAKgC,QAAUW,QAAQV,aACvBjC,KAAKkC,MAAQS,QAAQR,WACrBnC,KAAKoC,KAAOO,QAAQN,UACpBrC,KAAKsC,OAAUK,QAAQJ,WACvBvC,KAAKwC,MAAQG,QAAQF,eAStBvB,SAASS,UAAUF,WAAa,SAAUmB,KAEzC,MAAMC,WAAa7C,KAAK8C,cAAcF,KAGtC,GAAIvB,MAAMwB,YAAc,CACvB,MAAM,IAAIrB,UAAU,6EAGrBxB,KAAKuB,SAASsB,aAYf3B,SAASS,UAAUoB,UAAY,SAAUC,QAASxC,QAASyC,OAG1D,IAAKA,MAAO,CACX,GAAIzC,QAAQM,SAAW,EAAG,CACzBd,KAAK8B,SAAWtB,QAAQM,aAClB,CACNd,KAAK8B,SAAW,GAIlB9B,KAAK0C,QAEL1C,KAAK4B,aAAe,EAEpB,MAECsB,SAAWlD,KAAKmD,UAahBC,SAAW,CAACC,OAAQL,QAASM,OAAQC,YAEpC,MAAMC,SAAYD,gBAAkB,EAAKvD,KAAKqD,QAAUC,OAAS,EAEjE,IAAKG,IAAIC,EAAIF,SAAUE,EAAIV,QAAQK,QAAQM,OAAQD,IAAM,CAGxDD,IAAIG,MAAQZ,QAAQK,QAAQK,GAG5B,GAAIL,SAAW,OAAQ,CAGtBI,IAAII,WAAa7D,KAAKqC,QAAQ,MAC9BwB,WAAWC,QAAQJ,EAAEJ,QAGrB,GAAIN,QAAQe,eAAgB,CAI3BN,IAAIO,eAAiB,IAAI5D,KAAKyD,YAC9BG,eAAeF,QAAQJ,EAAEJ,OAAO,GAGhC,GAAIU,eAAezB,aAAevC,KAAKsC,OAAQ,CAC9CsB,MAAQ,MAOV,MAAMK,SAAWjB,QAAQkB,WAAWL,WAAWM,UAC/C,GAAI3D,QAAQC,WAAY,CACvB,IAAKuC,QAAQoB,eAAiBpB,QAAQqB,eAAgB,CACrDT,MAAQK,cACF,IAAKjB,QAAQoB,gBAAkBpB,QAAQqB,eAAgB,CAC7DT,MAAQA,OAASK,cAEZ,CAENL,MAAQA,OAASK,UAKnB,GAAIL,MAAO,CACV5D,KAAKqD,QAAUK,EAAEJ,OACjB,OAAO,MAIT,OAAO,OAIRgB,cAAgB,SAKf,MAAMC,MAAQjB,QAAU,EAAG,CAO1BF,SAASoB,KAAKD,MAAQjB,QAAQ,GAAIN,QAASwB,KAAKD,MAAQjB,QAAQ,GAAI,GAGpEiB,UAWH,MAAMC,KAAO,CACZ,CAAC,UAAW,UAAW,GACvB,CAAC,UAAW,QAAS,GACrB,CAAC,QAAS,OAAQ,GAClB,CAAC,OAAQ,UAAW,GACpB,CAAC,SAAU,QAAS,IAKrBf,IAAIc,MAAQ,EACZ,MAAMA,MAAQ,EAAG,CAOhBd,IAAIgB,aAAezE,KAAKwE,KAAKD,OAAO,IAGpC,IAAInB,SAASoB,KAAKD,OAAO,GAAIvB,QAASwB,KAAKD,OAAO,IAAK,CAEtDvE,KAAKwE,KAAKD,OAAO,MAGjBD,cAAc,QAGR,GAAIG,eAAiBzE,KAAKwE,KAAKD,OAAO,IAAK,CAGjDD,eAAe,GAKhB,GAAItE,KAAKwC,OAAS,IAAM,CACvB,OAAO,KAIR+B,QAIDvE,KAAK0E,QAAU,MACf,GAAIxB,UAAYlD,KAAKmD,UAAW,CAC/BnD,KAAK0C,QACL,OAAO1C,KAAK+C,UAAUC,QAASxC,QAAS,UAClC,CACN,OAAOR,OAYTkB,SAASS,UAAUU,QAAU,SAAUsC,UACtC,MAAMd,WAAa,IAAIzD,KAAKJ,KAAKwC,MAAOxC,KAAKsC,OAAQtC,KAAKoC,KAAMpC,KAAKkC,MAAOlC,KAAKgC,QAAShC,KAAK8B,QAAS9B,KAAK4B,cAC7G,GAAI+C,WAAa3E,KAAKmB,SAAU,CAC/B,OAAO0C,eACD,CACN,MAAMP,OAASrD,OAAO4D,WAAY7D,KAAKmB,UAAUgC,UAAUU,WAAWV,UACtE,OAAO,IAAI/C,KAAKyD,WAAWV,UAAUG,UAWvCpC,SAASS,UAAUwB,QAAU,SAAUwB,UACtC,OAAO3E,KAAKqC,QAAQsC,UAAUxB,WAW/BjC,SAASS,UAAUmB,cAAgB,SAAU8B,gBAC5C,MAAMC,oBAAsBD,eAAeE,MAAM,MAGjD,GAAID,oBAAoBlB,OAAS,EAAG,CACnC,OAAOoB,IAGR,MACCC,KAAOjE,SAAS8D,oBAAoB,GAAI,IACxCI,MAAQlE,SAAS8D,oBAAoB,GAAI,IACzCK,IAAMnE,SAAS8D,oBAAoB,GAAI,IACvCM,KAAOpE,SAAS8D,oBAAoB,GAAI,IACxCO,OAASrE,SAAS8D,oBAAoB,GAAI,IAC1CQ,OAAStE,SAAS8D,oBAAoB,GAAI,IAG3C,GAAIxD,MAAM2D,OAAS3D,MAAM4D,QAAU5D,MAAM6D,MAAQ7D,MAAM8D,OAAS9D,MAAM+D,SAAW/D,MAAMgE,QAAU,CAChG,OAAON,QACD,CACNtB,IAAI6B,cAGJ,GAAKV,eAAeW,QAAQ,KAAO,EAAI,CAGtCD,cAAgB,IAAIlF,KAAKA,KAAKoF,IAAIR,KAAMC,MAAM,EAAGC,IAAKC,KAAMC,OAAQC,SAGpE,GAAIL,MAAQM,cAAcG,kBACtBR,OAASK,cAAcI,cAAc,GACrCR,KAAOI,cAAcK,cACrBR,MAAQG,cAAcM,eACtBR,QAAUE,cAAcO,iBACxBR,QAAUC,cAAcQ,gBAAiB,CAC5C,OAAOR,kBACD,CACN,OAAOP,SAEF,CAGNO,cAAgB,IAAIlF,KAAK4E,KAAMC,MAAM,EAAGC,IAAKC,KAAMC,OAAQC,QAG3D,GAAIL,MAAQM,cAAc7C,eACtBwC,OAASK,cAAc/C,WAAW,GAClC2C,KAAOI,cAAcjD,WACrB8C,MAAQG,cAAcnD,YACtBiD,QAAUE,cAAcrD,cACxBoD,QAAUC,cAAcvD,aAAc,CACzC,OAAOuD,kBACD,CACN,OAAOP,QA0BX,SAASgB,YAAa/C,QAAS7B,UAE9BnB,KAAKgD,QAAYA,QACjBhD,KAAKmB,SAAYA,SAEjBnB,KAAK8B,QAAiBkE,MAAM,IAAIC,KAAK,GACrCjG,KAAKgC,QAAiBgE,MAAM,IAAIC,KAAK,GACrCjG,KAAKkC,MAAiB8D,MAAM,IAAIC,KAAK,GACrCjG,KAAKoC,KAAiB4D,MAAM,IAAIC,KAAK,GACrCjG,KAAKsC,OAAiB0D,MAAM,IAAIC,KAAK,GACrCjG,KAAKkE,WAAiB8B,MAAM,GAAGC,KAAK,GAEpCjG,KAAK+D,eAAiB,MACtB/D,KAAKqE,eAAiB,MACtBrE,KAAKoE,cAAiB,MAEtBpE,KAAKkG,QAQNH,YAAYpE,UAAUuE,MAAQ,WAG7B,YAAalG,KAAKgD,UAAY,UAAYhD,KAAKgD,QAAQmD,cAAgBC,QAAU,CAChF,MAAM,IAAI5E,UAAU,kDAIrBxB,KAAKgD,QAAUhD,KAAKqG,gBAAgBrG,KAAKgD,SAGzC,MAAMsD,MAAQtG,KAAKgD,QAAQuD,OAAOC,QAAQ,OAAQ,KAAK1B,MAAM,KAG7D,GAAIwB,MAAM3C,OAAS,GAAK2C,MAAM3C,OAAS,EAAI,CAC1C,MAAM,IAAInC,UAAU,+CAAiDxB,KAAKgD,QAAU,0DAIrF,GAAIsD,MAAM3C,SAAW,EAAG,CACvB2C,MAAMG,QAAQ,KAKf,GAAGH,MAAM,GAAGf,QAAQ,MAAQ,EAAG,CAC9Be,MAAM,GAAKA,MAAM,GAAGE,QAAQ,IAAI,IAChCxG,KAAK+D,eAAiB,KAIvB,GAAGuC,MAAM,GAAGI,eAAiB,IAAK,CACjC1G,KAAKqE,eAAiB,KAIvBiC,MAAM,GAAKtG,KAAK2G,mBAAmBL,MAAM,IACzCA,MAAM,GAAKtG,KAAK4G,iBAAiBN,MAAM,IAGvC,GAAGA,MAAM,GAAGI,eAAiB,IAAK,CACjC1G,KAAKoE,cAAgB,KAItBX,IAAIoD,SAAW,IAAI3F,SAAS,IAAId,KAAOJ,KAAKmB,UAAUkB,QAAQ,MAE9DiE,MAAM,GAAKA,MAAM,GAAGE,QAAQ,IAAKK,SAAS9E,cAC1CuE,MAAM,GAAKA,MAAM,GAAGE,QAAQ,IAAKK,SAAS5E,cAC1CqE,MAAM,GAAKA,MAAM,GAAGE,QAAQ,IAAKK,SAAS1E,YAC1CmE,MAAM,GAAKA,MAAM,GAAGE,QAAQ,IAAKK,SAASxE,WAC1CiE,MAAM,GAAKA,MAAM,GAAGE,QAAQ,IAAKK,SAAStE,WAAW,GACrD+D,MAAM,GAAKA,MAAM,GAAGE,QAAQ,IAAKK,SAAS1C,UAG1CnE,KAAK8G,yBAAyBR,OAG9BtG,KAAK+G,YAAY,UAAcT,MAAM,GAAI,GACzCtG,KAAK+G,YAAY,UAAcT,MAAM,GAAI,GACzCtG,KAAK+G,YAAY,QAAcT,MAAM,GAAI,GACzCtG,KAAK+G,YAAY,OAAcT,MAAM,IAAK,GAC1CtG,KAAK+G,YAAY,SAAcT,MAAM,IAAK,GAC1CtG,KAAK+G,YAAY,aAAcT,MAAM,GAAI,GAGzC,GAAItG,KAAKkE,WAAW,GAAK,CACxBlE,KAAKkE,WAAW,GAAK,IAcvB6B,YAAYpE,UAAUoF,YAAc,SAAUC,KAAMC,KAAMC,iBAAkBC,UAE3E,MAAMC,IAAMpH,KAAKgH,MAGjB,GAAIC,OAAS,IAAM,CAClB,IAAKxD,IAAIC,EAAI,EAAGA,EAAI0D,IAAIzD,OAAQD,IAAM,CACrC0D,IAAI1D,GAAK,EAEV,OAID,MAAMoB,MAAQmC,KAAKnC,MAAM,KACzB,GAAIA,MAAMnB,OAAS,EAAI,CACtB,IAAKF,IAAIC,EAAI,EAAGA,EAAIoB,MAAMnB,OAAQD,IAAM,CACvC1D,KAAK+G,YAAYC,KAAMlC,MAAMpB,GAAIwD,iBAAkB,YAI9C,GAAID,KAAK1B,QAAQ,QAAU,GAAK0B,KAAK1B,QAAQ,QAAU,EAAI,CACjE,GAAI4B,SAAU,MAAM,IAAI7F,MAAM,0DAE9BtB,KAAKqH,wBAAwBJ,KAAMD,KAAME,uBAGnC,GAAID,KAAK1B,QAAQ,QAAU,EAAI,CACrC,GAAI4B,SAAU,MAAM,IAAI7F,MAAM,0DAE9BtB,KAAKsH,YAAYL,KAAMD,KAAME,uBAGvB,GAAID,KAAK1B,QAAQ,QAAU,EAAI,CACrC,GAAI4B,SAAU,MAAM,IAAI7F,MAAM,0DAE9BtB,KAAKuH,eAAeN,KAAMD,KAAME,uBAG1B,GAAID,OAAS,GAAK,CACxBjH,KAAKwH,aAAaP,KAAMD,KAAME,oBAWhCnB,YAAYpE,UAAUmF,yBAA2B,SAAUR,OAC1D,MAAMmB,YAAc,cACpB,IAAIhE,IAAIC,EAAI,EAAGA,EAAI4C,MAAM3C,OAAQD,IAAK,CACrC,GAAI+D,YAAYC,KAAKpB,MAAM5C,IAAM,CAChC,MAAM,IAAIlC,UAAU,oCAAsCkC,EAAI,KAAO4C,MAAM5C,GAAK,qCAanFqC,YAAYpE,UAAU6F,aAAe,SAAUP,KAAMD,KAAME,kBAC1D,MAAMxD,EAAK3C,SAASkG,KAAM,IAAMC,iBAEhC,GAAI7F,MAAMqC,GAAK,CACd,MAAM,IAAIlC,UAAU,gBAAkBwF,KAAO,sBAAwBC,KAAO,KAG7E,GAAIvD,EAAI,GAAKA,GAAK1D,KAAKgH,MAAMrD,OAAS,CACrC,MAAM,IAAInC,UAAU,gBAAkBwF,KAAO,yBAA2BC,KAAO,KAGhFjH,KAAKgH,MAAMtD,GAAK,GAWjBqC,YAAYpE,UAAU0F,wBAA0B,SAAUJ,KAAMD,KAAME,kBACrE,MAAMS,QAAUV,KAAKrD,MAAM,wBAE3B,GAAI+D,UAAY,KAAO,MAAM,IAAInG,UAAU,4DAA8DyF,KAAO,KAEhHxD,GAAI,CAAC,CAAEmE,MAAOC,MAAOC,OAASH,QAC9BC,MAAQ7G,SAAS6G,MAAO,IAAMV,iBAC9BW,MAAQ9G,SAAS8G,MAAO,IAAMX,iBAC9BY,MAAQ/G,SAAS+G,MAAO,IAExB,GAAIzG,MAAMuG,OAAS,MAAM,IAAIpG,UAAU,wDACvC,GAAIH,MAAMwG,OAAS,MAAM,IAAIrG,UAAU,wDACvC,GAAIH,MAAMyG,OAAS,MAAM,IAAItG,UAAU,sDAEvC,GAAIsG,QAAU,EAAI,MAAM,IAAItG,UAAU,kDACtC,GAAIsG,MAAQ9H,KAAKgH,MAAMrD,OAAS,MAAM,IAAInC,UAAU,kFAAkFxB,KAAKgH,MAAMrD,OAAO,KAExJ,GAAIiE,MAAQ,GAAKC,OAAS7H,KAAKgH,MAAMrD,OAAS,MAAM,IAAInC,UAAU,qCAAuCyF,KAAO,KAChH,GAAIW,MAAQC,MAAQ,MAAM,IAAIrG,UAAU,qDAAuDyF,KAAO,KAEtG,IAAKxD,IAAIC,EAAIkE,MAAOlE,GAAKmE,MAAOnE,GAAKoE,MAAO,CAC3C9H,KAAKgH,MAAMtD,GAAK,IAYlBqC,YAAYpE,UAAU2F,YAAc,SAAUL,KAAMD,KAAME,kBACzD,MAAMpC,MAAQmC,KAAKnC,MAAM,KAEzB,GAAIA,MAAMnB,SAAW,EAAI,CACxB,MAAM,IAAInC,UAAU,8CAAgDyF,KAAO,KAG5E,MAAMW,MAAQ7G,SAAS+D,MAAM,GAAI,IAAMoC,iBACtCW,MAAQ9G,SAAS+D,MAAM,GAAI,IAAMoC,iBAElC,GAAI7F,MAAMuG,OAAS,CAClB,MAAM,IAAIpG,UAAU,6DACd,GAAIH,MAAMwG,OAAS,CACzB,MAAM,IAAIrG,UAAU,wDAIrB,GAAIoG,MAAQ,GAAKC,OAAS7H,KAAKgH,MAAMrD,OAAS,CAC7C,MAAM,IAAInC,UAAU,qCAAuCyF,KAAO,KAInE,GAAIW,MAAQC,MAAQ,CACnB,MAAM,IAAIrG,UAAU,qDAAuDyF,KAAO,KAGnF,IAAKxD,IAAIC,EAAIkE,MAAOlE,GAAKmE,MAAOnE,IAAM,CACrC1D,KAAKgH,MAAMtD,GAAK,IAWlBqC,YAAYpE,UAAU4F,eAAiB,SAAUN,KAAMD,MAEtD,MAAMlC,MAAQmC,KAAKnC,MAAM,KAEzB,GAAIA,MAAMnB,SAAW,EAAI,CACxB,MAAM,IAAInC,UAAU,iDAAmDyF,KAAO,KAG/ExD,IAAIsE,MAAQ,EACZ,GAAIjD,MAAM,KAAO,IAAM,CACtBiD,MAAQhH,SAAS+D,MAAM,GAAI,IAG5B,MAAMgD,MAAQ/G,SAAS+D,MAAM,GAAI,IAEjC,GAAIzD,MAAMyG,OAAS,MAAM,IAAItG,UAAU,sDACvC,GAAIsG,QAAU,EAAI,MAAM,IAAItG,UAAU,kDACtC,GAAIsG,MAAQ9H,KAAKgH,MAAMrD,OAAS,MAAM,IAAInC,UAAU,kFAAkFxB,KAAKgH,MAAMrD,OAAO,KAExJ,IAAKF,IAAIC,EAAIqE,MAAOrE,EAAI1D,KAAKgH,MAAMrD,OAAQD,GAAIoE,MAAQ,CACtD9H,KAAKgH,MAAMtD,GAAK,IAalBqC,YAAYpE,UAAUiF,iBAAmB,SAAUK,MAClD,OAAOA,KACLT,QAAQ,QAAS,KACjBA,QAAQ,QAAS,KACjBA,QAAQ,QAAS,KACjBA,QAAQ,QAAS,KACjBA,QAAQ,QAAS,KACjBA,QAAQ,QAAS,KACjBA,QAAQ,QAAS,MAWpBT,YAAYpE,UAAUgF,mBAAqB,SAAUM,MACpD,OAAOA,KACLT,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,OAWpBT,YAAYpE,UAAU0E,gBAAkB,SAAUrD,SAEjD,MAAMgF,aAAehF,QAAQuD,OAAO0B,cACpC,GAAID,eAAiB,WAAaA,eAAiB,YAAa,CAC/D,MAAO,iBACD,GAAIA,eAAiB,WAAY,CACvC,MAAQ,iBACF,GAAIA,eAAiB,UAAW,CACtC,MAAO,iBACD,GAAIA,eAAiB,SAAU,CACrC,MAAO,iBACD,GAAIA,eAAiB,UAAW,CACtC,MAAO,gBACD,CACN,OAAOhF,UA4CT,MAAMkF,SAAWC,KAAKC,IAAI,EAAG,GAAK,GAAK,EAWvC,SAASrI,KAAMiD,QAASxC,QAAS6H,MAGhC,KAAMrI,gBAAgBD,MAAQ,CAC7B,OAAO,IAAIA,KAAKiD,QAASxC,QAAS6H,MAInC,UAAW7H,UAAY,WAAa,CACnC6H,KAAO7H,QACPA,aAAe,EAIhBR,KAAKQ,QAAUD,YAAYC,SAG3BR,KAAKsI,UAAY,EAGjBtI,KAAKgD,aAAe,EAIpB,GAAIA,UAAYA,mBAAmB5C,aAAiB4C,UAAY,UAAaA,QAAQuC,QAAQ,KAAO,GAAK,CACxGvF,KAAKsI,KAAO,IAAIpH,SAAS8B,QAAShD,KAAKQ,QAAQW,cACzC,CACNnB,KAAKgD,QAAU,IAAI+C,YAAY/C,QAAShD,KAAKQ,QAAQW,UAItD,GAAIkH,YAAc,EAAI,CACrBrI,KAAKuI,GAAKF,KACVrI,KAAKwI,WAGN,OAAOxI,KAURD,KAAK4B,UAAU8G,KAAO,SAAUC,MAC/B,MAAMD,KAAOzI,KAAK2I,MAAMD,MACxB,OAAOD,KAAOA,KAAKpG,UAAY,MAUhCtC,KAAK4B,UAAUiH,UAAY,SAAUC,EAAGC,UACvC,MAAMC,YAAc,GACpB,MAAMF,MAAQC,SAAW9I,KAAKyI,KAAKK,WAAY,CAC9CC,YAAYC,KAAKF,UAGlB,OAAOC,aASRhJ,KAAK4B,UAAUsH,QAAU,WACxB,MAAMC,OAASlJ,KAAKmJ,SAASnJ,KAAKoJ,aAClC,MAAMH,SAAWjJ,KAAKQ,QAAQE,QAAUV,KAAKuI,UAAY,EACzD,OAAOW,SAAW,MAAQD,SAS3BlJ,KAAK4B,UAAUmH,SAAW,WACzB,OAAO9I,KAAKoJ,YAAcpJ,KAAKoJ,YAAY/G,UAAY,MAUxDtC,KAAK4B,UAAUwH,SAAW,SAAUT,MAGnC,MAAMD,KAAOzI,KAAK2I,MAAMD,MAGxBA,KAAO,IAAIxH,SAASwH,KAAM1I,KAAKQ,QAAQW,UAEvC,GAAIsH,KAAO,CACV,OAAQA,KAAKtF,QAAQ,MAAQuF,KAAKvF,QAAQ,UACpC,CACN,OAAO,OAQTpD,KAAK4B,UAAU0H,KAAO,WACrBrJ,KAAKQ,QAAQQ,KAAO,KAEpB,GAAIhB,KAAKsJ,eAAiB,CACzBC,aAAcvJ,KAAKsJ,kBAUrBvJ,KAAK4B,UAAU6H,MAAQ,WACtB,OAAQxJ,KAAKQ,QAAQE,OAAS,QAAUV,KAAKQ,QAAQQ,MAStDjB,KAAK4B,UAAU8H,OAAS,WACvB,QAASzJ,KAAKQ,QAAQE,OAAS,SAAWV,KAAKQ,QAAQQ,MAUxDjB,KAAK4B,UAAU6G,SAAW,SAAUH,MAGnC,GAAIA,MAAQrI,KAAKuI,GAAI,CACpB,MAAM,IAAIjH,MAAM,0FAGV,GAAI+G,KAAM,CAChBrI,KAAKuI,GAAKF,KAIX5E,IAAIiG,OAAS1J,KAAKmJ,SAASnJ,KAAKoJ,aAChC,GAAMM,SAAW,KAAQ,OAAO1J,KAGhC,GAAI0J,OAASxB,SAAW,CACvBwB,OAASxB,SAIVlI,KAAKsJ,eAAiBK,WAAW,KAEhC,GAAID,SAAWxB,WAAalI,KAAKQ,QAAQE,OAAS,CAEjDV,KAAKQ,QAAQG,UAGb,GAAIX,KAAKQ,QAAQK,MAAO,CACvB,IACCb,KAAKuI,GAAGvI,KAAMA,KAAKQ,QAAQoJ,SAC1B,MAAOC,UAGH,CACN7J,KAAKuI,GAAGvI,KAAMA,KAAKQ,QAAQoJ,SAI5B5J,KAAKoJ,YAAc,IAAIlI,cAAc,EAAGlB,KAAKQ,QAAQW,UAKtDnB,KAAKwI,YAEHkB,QAEH,OAAO1J,MAYRD,KAAK4B,UAAUgH,MAAQ,SAAUD,MAGhCA,KAAOA,MAAQ1I,KAAKoJ,YAEpB,MAAMU,eAAiBpB,KAAO,KAAO,MAGrCA,KAAO,IAAIxH,SAASwH,KAAM1I,KAAKQ,QAAQW,UAGvC,GAAInB,KAAKQ,QAAQS,SAAWyH,MAAQA,KAAKvF,QAAQ,MAAQnD,KAAKQ,QAAQS,QAAQkC,QAAQ,MAAQ,CAC7FuF,KAAO1I,KAAKQ,QAAQS,QAIrB,MACC8I,QAAU/J,KAAKsI,MAAQ,IAAIpH,SAASwH,KAAM1I,KAAKQ,QAAQW,UAAU4B,UAAU/C,KAAKgD,QAAShD,KAAKQ,SAAUsJ,gBAEzG,GAAI9J,KAAKsI,MAAQtI,KAAKsI,KAAKnF,QAAQ,OAASuF,KAAKvF,QAAQ,MAAO,CAC/D,OAAO,UAED,GAAK4G,UAAY,MACtB/J,KAAKQ,QAAQG,SAAW,GACxBX,KAAKQ,QAAY,MACjBR,KAAKQ,QAAQY,QAAU2I,QAAQ5G,QAAQ,OAASnD,KAAKQ,QAAQY,OAAO+B,QAAQ,MAAS,CACtF,OAAO,SAED,CAEN,OAAO4G,UAMT,OAAOhK"}
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","hasPreviousRun","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","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,rerun,hasPreviousRun){if(!rerun){if(options.interval>1&&hasPreviousRun){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,hasPreviousRun)}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){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,false,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","rerun","hasPreviousRun","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","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.2",
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
@@ -264,10 +264,7 @@ Cron.prototype.schedule = function (func) {
264
264
  */
265
265
  Cron.prototype._next = function (prev) {
266
266
 
267
- // Use actual previous run if not supplied
268
- prev = prev || this.previousrun;
269
-
270
- const hasPreviousRun = prev ? true : false;
267
+ const hasPreviousRun = (prev || this.previousrun) ? true : false;
271
268
 
272
269
  // Ensure previous run is a CronDate
273
270
  prev = new CronDate(prev, this.options.timezone);
@@ -279,7 +276,7 @@ Cron.prototype._next = function (prev) {
279
276
 
280
277
  // Calculate next run according to pattern or one-off timestamp, pass actual previous run to increment
281
278
  const
282
- nextRun = this.once || new CronDate(prev, this.options.timezone).increment(this.pattern, this.options, !hasPreviousRun);
279
+ nextRun = this.once || new CronDate(prev, this.options.timezone).increment(this.pattern, this.options, false, hasPreviousRun);
283
280
 
284
281
  if (this.once && this.once.getTime(true) <= prev.getTime(true)) {
285
282
  return null;
package/src/date.js CHANGED
@@ -112,13 +112,14 @@ CronDate.prototype.fromString = function (str) {
112
112
  * @param {string} pattern - The pattern used to increment current state
113
113
  * @param {CronOptions} options - Cron options used for incrementing
114
114
  * @param {boolean} [rerun=false] - If this is an internal incremental run
115
+ * @param {boolean} [hasPreviousRun] - If this run should adhere to minimum interval
115
116
  * @return {CronDate|null} - Returns itself for chaining, or null if increment wasnt possible
116
117
  */
117
- CronDate.prototype.increment = function (pattern, options, rerun) {
118
+ CronDate.prototype.increment = function (pattern, options, rerun, hasPreviousRun) {
118
119
 
119
120
  // Always add one second, or minimum interval
120
121
  if (!rerun) {
121
- if (options.interval > 1) {
122
+ if (options.interval > 1 && hasPreviousRun) {
122
123
  this.seconds += options.interval;
123
124
  } else {
124
125
  this.seconds += 1;
@@ -276,7 +277,7 @@ CronDate.prototype.increment = function (pattern, options, rerun) {
276
277
  this.default = false;
277
278
  if (origTime != this.getTime()) {
278
279
  this.apply();
279
- return this.increment(pattern, options, true);
280
+ return this.increment(pattern, options, true, hasPreviousRun);
280
281
  } else {
281
282
  return this;
282
283
  }
package/types/date.d.ts CHANGED
@@ -34,9 +34,10 @@ export class CronDate {
34
34
  * @param {string} pattern - The pattern used to increment current state
35
35
  * @param {CronOptions} options - Cron options used for incrementing
36
36
  * @param {boolean} [rerun=false] - If this is an internal incremental run
37
+ * @param {boolean} [hasPreviousRun] - If this run should adhere to minimum interval
37
38
  * @return {CronDate|null} - Returns itself for chaining, or null if increment wasnt possible
38
39
  */
39
- public increment(pattern: string, options: CronOptions, rerun?: boolean): CronDate | null;
40
+ public increment(pattern: string, options: CronOptions, rerun?: boolean, hasPreviousRun?: boolean): CronDate | null;
40
41
  default: boolean;
41
42
  /**
42
43
  * Convert current state back to a javascript Date()