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 +6 -8
- package/dist/croner.min.js +1 -1
- package/dist/croner.min.js.map +1 -1
- package/dist/croner.min.mjs +1 -1
- package/dist/croner.min.mjs.map +1 -1
- package/package.json +3 -3
- package/src/croner.js +2 -5
- package/src/date.js +4 -3
- package/types/date.d.ts +2 -1
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
|
-
|
|
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,
|
|
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;
|
package/dist/croner.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(global,factory){typeof exports==="object"&&typeof module!=="undefined"?module.exports=factory():typeof define==="function"&&define.amd?define(factory):(global=typeof globalThis!=="undefined"?globalThis:global||self,global.Cron=factory())})(this,function(){"use strict";function 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});
|
package/dist/croner.min.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["dist/croner.cjs"],"names":["global","factory","exports","module","define","amd","globalThis","self","Cron","this","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","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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"}
|
package/dist/croner.min.mjs
CHANGED
|
@@ -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};
|
package/dist/croner.min.mjs.map
CHANGED
|
@@ -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.
|
|
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
|
-
|
|
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,
|
|
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()
|