croner 4.3.17 → 4.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -222,8 +222,6 @@ The expressions of Croner are very similar to the ones of Vixie Cron, with a few
222
222
 
223
223
  * Croner also allow you to pass a javascript Date object, or a ISO 8601 formatted string, as a pattern. The scheduled function will trigger once at the specified date/time. If you use a timezone different from local, you pass ISO 8601 local time in target location, and specify timezone using the options (2nd parameter).
224
224
 
225
- * **Important**: Croner does not take care of runs missed during daytime savings time (DST) shifts. E.g.: If the clock shifts från 23:59:59 to 01:00:00 a job scheduled between 00:00:00 and 00:59:59 that day would be missed. This might change in a future major release. Current state at [#132](https://github.com/Hexagon/croner/issues/132).
226
-
227
225
  ```javascript
228
226
  // ┌──────────────── (optional) second (0 - 59)
229
227
  // │ ┌────────────── minute (0 - 59)
package/dist/croner.cjs CHANGED
@@ -16,12 +16,56 @@
16
16
  * (for example) will return local time in new york, but getUTCHours()
17
17
  * will return something irrelevant.
18
18
  *
19
- * @param {Date} date - Input date
19
+ * @param {date} date - Input date
20
20
  * @param {string} tzString - Timezone string in Europe/Stockholm format
21
- * @returns {Date}
21
+ * @param {boolean} [reverse] - Reverse operation
22
+ * @returns {date}
22
23
  */
23
- function CronTZ(date, tzString) {
24
- return new Date(date.toLocaleString("en-US", {timeZone: tzString}));
24
+ function CronTZ(date, tzString, reverse) {
25
+ if (reverse) {
26
+ return CronFromTZ(date, tzString);
27
+ } else {
28
+ return new Date(date.toLocaleString("sv-SE", {timeZone: tzString}));
29
+ }
30
+ }
31
+
32
+ /**
33
+ * Reverse of CronTZ
34
+ *
35
+ * @param {date} date - Input (tainted) date
36
+ * @param {string} tzString - Timezone string in Europe/Stockholm format
37
+ * @returns {date}
38
+ */
39
+ function CronFromTZ(sourceDate, tzString) {
40
+
41
+ // Try using target offset
42
+ const
43
+ targetPlus = new Date(sourceDate.toLocaleString("sv-SE", {timeZone: tzString})),
44
+ offset = sourceDate.getTime() - targetPlus.getTime();
45
+
46
+ let testOffset = 0,
47
+ iterations = 0,
48
+ closestAfter = -Infinity;
49
+
50
+ while (iterations++ < 2) {
51
+ const
52
+ testTarget = new Date(sourceDate.getTime() + offset - testOffset),
53
+ test = new Date(testTarget.toLocaleString("sv-SE", {timeZone: tzString}));
54
+
55
+ testOffset = test.getTime() - sourceDate.getTime();
56
+
57
+ if (testOffset === 0) {
58
+ return testTarget;
59
+ } else {
60
+ if (testOffset < 0 && testOffset > closestAfter) {
61
+ closestAfter = testOffset;
62
+ }
63
+ }
64
+
65
+ }
66
+
67
+ return new Date(sourceDate.getTime() + offset - closestAfter);
68
+
25
69
  }
26
70
 
27
71
  /**
@@ -366,8 +410,7 @@
366
410
  if (internal || !this.timezone) {
367
411
  return targetDate;
368
412
  } else {
369
- const offset = CronTZ(targetDate, this.timezone).getTime()-targetDate.getTime();
370
- return new Date(targetDate.getTime()-offset);
413
+ return CronTZ(targetDate, this.timezone, true);
371
414
  }
372
415
  };
373
416
 
@@ -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,10);options.kill=false;if(options.startAt){options.startAt=new CronDate(options.startAt,options.timezone)}if(options.stopAt){options.stopAt=new CronDate(options.stopAt,options.timezone)}if(options.interval!==null){if(isNaN(options.interval)){throw new Error("CronOptions: Supplied value for interval is not a number")}else if(options.interval<0){throw new Error("CronOptions: Supplied value for interval can not be negative")}}return options}function CronDate(date,timezone){this.timezone=timezone;if(date&&date instanceof Date){if(!isNaN(date)){this.fromDate(date)}else{throw new TypeError("CronDate: Invalid date passed as parameter to CronDate constructor")}}else if(date===void 0){this.fromDate(new Date)}else if(date&&typeof date==="string"){this.fromString(date)}else if(date instanceof CronDate){this.fromCronDate(date)}else{throw new TypeError("CronDate: Invalid type ("+typeof date+") passed as parameter to CronDate constructor")}}CronDate.prototype.fromDate=function(date){if(this.timezone){date=CronTZ(date,this.timezone)}this.milliseconds=date.getMilliseconds();this.seconds=date.getSeconds();this.minutes=date.getMinutes();this.hours=date.getHours();this.days=date.getDate();this.months=date.getMonth();this.years=date.getFullYear()};CronDate.prototype.fromCronDate=function(date){this.timezone=date.timezone;this.milliseconds=date.milliseconds;this.seconds=date.seconds;this.minutes=date.minutes;this.hours=date.hours;this.days=date.days;this.months=date.months;this.years=date.years};CronDate.prototype.apply=function(){const newDate=new Date(this.years,this.months,this.days,this.hours,this.minutes,this.seconds,this.milliseconds);this.milliseconds=newDate.getMilliseconds();this.seconds=newDate.getSeconds();this.minutes=newDate.getMinutes();this.hours=newDate.getHours();this.days=newDate.getDate();this.months=newDate.getMonth();this.years=newDate.getFullYear()};CronDate.prototype.fromString=function(str){const parsedDate=this.parseISOLocal(str);if(isNaN(parsedDate)){throw new TypeError("CronDate: Provided string value for CronDate could not be parsed as date.")}this.fromDate(parsedDate)};CronDate.prototype.increment=function(pattern,options,hasPreviousRun){if(options.interval>1&&hasPreviousRun){this.seconds+=options.interval}else{this.seconds+=1}this.milliseconds=0;this.apply();const findNext=(target,pattern,offset,override)=>{const startPos=override===void 0?this[target]+offset:0;for(let i=startPos;i<pattern[target].length;i++){let match=pattern[target][i];if(target==="days"){const targetDate=this.getDate(true);targetDate.setDate(i-offset);if(pattern.lastDayOfMonth){const 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){const currentValue=this[toDo[doing][0]];if(!findNext(toDo[doing][0],pattern,toDo[doing][2])){this[toDo[doing][1]]++;resetPrevious(0);this.apply()}else if(currentValue!==this[toDo[doing][0]]){resetPrevious(-1)}if(this.years>=4e3){return null}doing++}return this};CronDate.prototype.getDate=function(internal){const targetDate=new Date(this.years,this.months,this.days,this.hours,this.minutes,this.seconds,this.milliseconds);if(internal||!this.timezone){return targetDate}else{const offset=CronTZ(targetDate,this.timezone).getTime()-targetDate.getTime();return new Date(targetDate.getTime()-offset)}};CronDate.prototype.getTime=function(internal){return this.getDate(internal).getTime()};CronDate.prototype.parseISOLocal=function(dateTimeString){const dateTimeStringSplit=dateTimeString.split(/\D/);if(dateTimeStringSplit.length<6){return NaN}const year=parseInt(dateTimeStringSplit[0],10),month=parseInt(dateTimeStringSplit[1],10),day=parseInt(dateTimeStringSplit[2],10),hour=parseInt(dateTimeStringSplit[3],10),minute=parseInt(dateTimeStringSplit[4],10),second=parseInt(dateTimeStringSplit[5],10);if(isNaN(year)||isNaN(month)||isNaN(day)||isNaN(hour)||isNaN(minute)||isNaN(second)){return NaN}else{let generatedDate;if(dateTimeString.indexOf("Z")>0){generatedDate=new Date(Date.UTC(year,month-1,day,hour,minute,second));if(year==generatedDate.getUTCFullYear()&&month==generatedDate.getUTCMonth()+1&&day==generatedDate.getUTCDate()&&hour==generatedDate.getUTCHours()&&minute==generatedDate.getUTCMinutes()&&second==generatedDate.getUTCSeconds()){return generatedDate}else{return NaN}}else{generatedDate=new Date(year,month-1,day,hour,minute,second);if(year==generatedDate.getFullYear()&&month==generatedDate.getMonth()+1&&day==generatedDate.getDate()&&hour==generatedDate.getHours()&&minute==generatedDate.getMinutes()&&second==generatedDate.getSeconds()){return generatedDate}else{return NaN}}}};function CronPattern(pattern,timezone){this.pattern=pattern;this.timezone=timezone;this.seconds=Array(60).fill(0);this.minutes=Array(60).fill(0);this.hours=Array(24).fill(0);this.days=Array(31).fill(0);this.months=Array(12).fill(0);this.daysOfWeek=Array(8).fill(0);this.lastDayOfMonth=false;this.starDayOfMonth=false;this.starDayOfWeek=false;this.parse()}CronPattern.prototype.parse=function(){if(!(typeof this.pattern==="string"||this.pattern.constructor===String)){throw new TypeError("CronPattern: Pattern has to be of type string.")}this.pattern=this.handleNicknames(this.pattern);const parts=this.pattern.trim().replace(/\s+/g," ").split(" ");if(parts.length<5||parts.length>6){throw new TypeError("CronPattern: invalid configuration format ('"+this.pattern+"'), exacly five or six space separated parts required.")}if(parts.length===5){parts.unshift("0")}if(parts[3].indexOf("L")>=0){parts[3]=parts[3].replace("L","");this.lastDayOfMonth=true}if(parts[3].toUpperCase()=="*"){this.starDayOfMonth=true}parts[4]=this.replaceAlphaMonths(parts[4]);parts[5]=this.replaceAlphaDays(parts[5]);if(parts[5].toUpperCase()=="*"){this.starDayOfWeek=true}const 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){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)}}else if(conf.indexOf("-")!==-1&&conf.indexOf("/")!==-1){this.handleRangeWithStepping(conf,type,valueIndexOffset)}else if(conf.indexOf("-")!==-1){this.handleRange(conf,type,valueIndexOffset)}else if(conf.indexOf("/")!==-1){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,"-7").replace(/sun/gi,"0").replace(/mon/gi,"1").replace(/tue/gi,"2").replace(/wed/gi,"3").replace(/thu/gi,"4").replace(/fri/gi,"5").replace(/sat/gi,"6")};CronPattern.prototype.replaceAlphaMonths=function(conf){return conf.replace(/jan/gi,"1").replace(/feb/gi,"2").replace(/mar/gi,"3").replace(/apr/gi,"4").replace(/may/gi,"5").replace(/jun/gi,"6").replace(/jul/gi,"7").replace(/aug/gi,"8").replace(/sep/gi,"9").replace(/oct/gi,"10").replace(/nov/gi,"11").replace(/dec/gi,"12")};CronPattern.prototype.handleNicknames=function(pattern){const cleanPattern=pattern.trim().toLowerCase();if(cleanPattern==="@yearly"||cleanPattern==="@annually"){return"0 0 1 1 *"}else if(cleanPattern==="@monthly"){return"0 0 1 * *"}else if(cleanPattern==="@weekly"){return"0 0 * * 0"}else if(cleanPattern==="@daily"){return"0 0 * * *"}else if(cleanPattern==="@hourly"){return"0 * * * *"}else{return pattern}};const maxDelay=Math.pow(2,32-1)-1;function Cron(pattern,fnOrOptions1,fnOrOptions2){if(!(this instanceof Cron)){return new Cron(pattern,fnOrOptions1,fnOrOptions2)}let options,func;if(typeof fnOrOptions1==="function"){func=fnOrOptions1}else if(typeof fnOrOptions1==="object"){options=fnOrOptions1}else if(fnOrOptions1!==void 0){throw new Error("Cron: Invalid argument passed for optionsIn. Should be one of function, or object (options).")}if(typeof fnOrOptions2==="function"){func=fnOrOptions2}else if(typeof fnOrOptions2==="object"){options=fnOrOptions2}else if(fnOrOptions2!==void 0){throw new Error("Cron: Invalid argument passed for funcIn. Should be one of function, or object (options).")}this.options=CronOptions(options);this.once=void 0;this.pattern=void 0;if(pattern&&(pattern instanceof Date||typeof pattern==="string"&&pattern.indexOf(":")>0)){this.once=new CronDate(pattern,this.options.timezone)}else{this.pattern=new CronPattern(pattern,this.options.timezone)}if(func!==void 0){this.fn=func;this.schedule()}return this}Cron.prototype.next=function(prev){const next=this._next(prev);return next?next.getDate():null};Cron.prototype.enumerate=function(n,previous){const enumeration=[];let prev=previous||this.previousrun;while(n--&&(prev=this.next(prev))){enumeration.push(prev)}return enumeration};Cron.prototype.running=function(){const msLeft=this.msToNext(this.previousrun);const running=!this.options.paused&&this.fn!==void 0;return msLeft!==null&&running};Cron.prototype.previous=function(){return this.previousrun?this.previousrun.getDate():null};Cron.prototype.msToNext=function(prev){const next=this._next(prev||this.previousrun);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,partial){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(partial?partial:this.previousrun);const target=this.next(partial?partial:this.previousrun);if(waitMs===null)return this;if(waitMs>maxDelay){waitMs=maxDelay}this.currentTimeout=setTimeout(()=>{const now=new Date;if(waitMs!==maxDelay&&!this.options.paused&&now.getTime()>=target){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()}else{this.schedule(undefined,now)}},waitMs);return this};Cron.prototype._next=function(prev){const hasPreviousRun=prev||this.previousrun?true:false;prev=new CronDate(prev,this.options.timezone);if(this.options.startAt&&prev&&prev.getTime(true)<this.options.startAt.getTime(true)){prev=this.options.startAt}const nextRun=this.once||new CronDate(prev,this.options.timezone).increment(this.pattern,this.options,hasPreviousRun);if(this.once&&this.once.getTime(true)<=prev.getTime(true)){return null}else if(nextRun===null||this.options.maxRuns<=0||this.options.kill||this.options.stopAt&&nextRun.getTime(true)>=this.options.stopAt.getTime(true)){return null}else{return nextRun}};Cron.Cron=Cron;Cron.Cron=Cron;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,reverse){if(reverse){return CronFromTZ(date,tzString)}else{return new Date(date.toLocaleString("sv-SE",{timeZone:tzString}))}}function CronFromTZ(sourceDate,tzString){const targetPlus=new Date(sourceDate.toLocaleString("sv-SE",{timeZone:tzString})),offset=sourceDate.getTime()-targetPlus.getTime();let testOffset=0,iterations=0,closestAfter=-Infinity;while(iterations++<2){const testTarget=new Date(sourceDate.getTime()+offset-testOffset),test=new Date(testTarget.toLocaleString("sv-SE",{timeZone:tzString}));testOffset=test.getTime()-sourceDate.getTime();if(testOffset===0){return testTarget}else{if(testOffset<0&&testOffset>closestAfter){closestAfter=testOffset}}}return new Date(sourceDate.getTime()+offset-closestAfter)}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,10);options.kill=false;if(options.startAt){options.startAt=new CronDate(options.startAt,options.timezone)}if(options.stopAt){options.stopAt=new CronDate(options.stopAt,options.timezone)}if(options.interval!==null){if(isNaN(options.interval)){throw new Error("CronOptions: Supplied value for interval is not a number")}else if(options.interval<0){throw new Error("CronOptions: Supplied value for interval can not be negative")}}return options}function CronDate(date,timezone){this.timezone=timezone;if(date&&date instanceof Date){if(!isNaN(date)){this.fromDate(date)}else{throw new TypeError("CronDate: Invalid date passed as parameter to CronDate constructor")}}else if(date===void 0){this.fromDate(new Date)}else if(date&&typeof date==="string"){this.fromString(date)}else if(date instanceof CronDate){this.fromCronDate(date)}else{throw new TypeError("CronDate: Invalid type ("+typeof date+") passed as parameter to CronDate constructor")}}CronDate.prototype.fromDate=function(date){if(this.timezone){date=CronTZ(date,this.timezone)}this.milliseconds=date.getMilliseconds();this.seconds=date.getSeconds();this.minutes=date.getMinutes();this.hours=date.getHours();this.days=date.getDate();this.months=date.getMonth();this.years=date.getFullYear()};CronDate.prototype.fromCronDate=function(date){this.timezone=date.timezone;this.milliseconds=date.milliseconds;this.seconds=date.seconds;this.minutes=date.minutes;this.hours=date.hours;this.days=date.days;this.months=date.months;this.years=date.years};CronDate.prototype.apply=function(){const newDate=new Date(this.years,this.months,this.days,this.hours,this.minutes,this.seconds,this.milliseconds);this.milliseconds=newDate.getMilliseconds();this.seconds=newDate.getSeconds();this.minutes=newDate.getMinutes();this.hours=newDate.getHours();this.days=newDate.getDate();this.months=newDate.getMonth();this.years=newDate.getFullYear()};CronDate.prototype.fromString=function(str){const parsedDate=this.parseISOLocal(str);if(isNaN(parsedDate)){throw new TypeError("CronDate: Provided string value for CronDate could not be parsed as date.")}this.fromDate(parsedDate)};CronDate.prototype.increment=function(pattern,options,hasPreviousRun){if(options.interval>1&&hasPreviousRun){this.seconds+=options.interval}else{this.seconds+=1}this.milliseconds=0;this.apply();const findNext=(target,pattern,offset,override)=>{const startPos=override===void 0?this[target]+offset:0;for(let i=startPos;i<pattern[target].length;i++){let match=pattern[target][i];if(target==="days"){const targetDate=this.getDate(true);targetDate.setDate(i-offset);if(pattern.lastDayOfMonth){const 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){const currentValue=this[toDo[doing][0]];if(!findNext(toDo[doing][0],pattern,toDo[doing][2])){this[toDo[doing][1]]++;resetPrevious(0);this.apply()}else if(currentValue!==this[toDo[doing][0]]){resetPrevious(-1)}if(this.years>=4e3){return null}doing++}return this};CronDate.prototype.getDate=function(internal){const targetDate=new Date(this.years,this.months,this.days,this.hours,this.minutes,this.seconds,this.milliseconds);if(internal||!this.timezone){return targetDate}else{return CronTZ(targetDate,this.timezone,true)}};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}const 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){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)}}else if(conf.indexOf("-")!==-1&&conf.indexOf("/")!==-1){this.handleRangeWithStepping(conf,type,valueIndexOffset)}else if(conf.indexOf("-")!==-1){this.handleRange(conf,type,valueIndexOffset)}else if(conf.indexOf("/")!==-1){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,"-7").replace(/sun/gi,"0").replace(/mon/gi,"1").replace(/tue/gi,"2").replace(/wed/gi,"3").replace(/thu/gi,"4").replace(/fri/gi,"5").replace(/sat/gi,"6")};CronPattern.prototype.replaceAlphaMonths=function(conf){return conf.replace(/jan/gi,"1").replace(/feb/gi,"2").replace(/mar/gi,"3").replace(/apr/gi,"4").replace(/may/gi,"5").replace(/jun/gi,"6").replace(/jul/gi,"7").replace(/aug/gi,"8").replace(/sep/gi,"9").replace(/oct/gi,"10").replace(/nov/gi,"11").replace(/dec/gi,"12")};CronPattern.prototype.handleNicknames=function(pattern){const cleanPattern=pattern.trim().toLowerCase();if(cleanPattern==="@yearly"||cleanPattern==="@annually"){return"0 0 1 1 *"}else if(cleanPattern==="@monthly"){return"0 0 1 * *"}else if(cleanPattern==="@weekly"){return"0 0 * * 0"}else if(cleanPattern==="@daily"){return"0 0 * * *"}else if(cleanPattern==="@hourly"){return"0 * * * *"}else{return pattern}};const maxDelay=Math.pow(2,32-1)-1;function Cron(pattern,fnOrOptions1,fnOrOptions2){if(!(this instanceof Cron)){return new Cron(pattern,fnOrOptions1,fnOrOptions2)}let options,func;if(typeof fnOrOptions1==="function"){func=fnOrOptions1}else if(typeof fnOrOptions1==="object"){options=fnOrOptions1}else if(fnOrOptions1!==void 0){throw new Error("Cron: Invalid argument passed for optionsIn. Should be one of function, or object (options).")}if(typeof fnOrOptions2==="function"){func=fnOrOptions2}else if(typeof fnOrOptions2==="object"){options=fnOrOptions2}else if(fnOrOptions2!==void 0){throw new Error("Cron: Invalid argument passed for funcIn. Should be one of function, or object (options).")}this.options=CronOptions(options);this.once=void 0;this.pattern=void 0;if(pattern&&(pattern instanceof Date||typeof pattern==="string"&&pattern.indexOf(":")>0)){this.once=new CronDate(pattern,this.options.timezone)}else{this.pattern=new CronPattern(pattern,this.options.timezone)}if(func!==void 0){this.fn=func;this.schedule()}return this}Cron.prototype.next=function(prev){const next=this._next(prev);return next?next.getDate():null};Cron.prototype.enumerate=function(n,previous){const enumeration=[];let prev=previous||this.previousrun;while(n--&&(prev=this.next(prev))){enumeration.push(prev)}return enumeration};Cron.prototype.running=function(){const msLeft=this.msToNext(this.previousrun);const running=!this.options.paused&&this.fn!==void 0;return msLeft!==null&&running};Cron.prototype.previous=function(){return this.previousrun?this.previousrun.getDate():null};Cron.prototype.msToNext=function(prev){const next=this._next(prev||this.previousrun);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,partial){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(partial?partial:this.previousrun);const target=this.next(partial?partial:this.previousrun);if(waitMs===null)return this;if(waitMs>maxDelay){waitMs=maxDelay}this.currentTimeout=setTimeout(()=>{const now=new Date;if(waitMs!==maxDelay&&!this.options.paused&&now.getTime()>=target){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()}else{this.schedule(undefined,now)}},waitMs);return this};Cron.prototype._next=function(prev){const hasPreviousRun=prev||this.previousrun?true:false;prev=new CronDate(prev,this.options.timezone);if(this.options.startAt&&prev&&prev.getTime(true)<this.options.startAt.getTime(true)){prev=this.options.startAt}const nextRun=this.once||new CronDate(prev,this.options.timezone).increment(this.pattern,this.options,hasPreviousRun);if(this.once&&this.once.getTime(true)<=prev.getTime(true)){return null}else if(nextRun===null||this.options.maxRuns<=0||this.options.kill||this.options.stopAt&&nextRun.getTime(true)>=this.options.stopAt.getTime(true)){return null}else{return nextRun}};Cron.Cron=Cron;Cron.Cron=Cron;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","hasPreviousRun","findNext","target","offset","override","startPos","let","i","length","match","targetDate","setDate","lastDayOfMonth","targetDateCopy","dowMatch","daysOfWeek","getDay","starDayOfWeek","starDayOfMonth","resetPrevious","doing","toDo","currentValue","internal","getTime","dateTimeString","dateTimeStringSplit","split","NaN","year","month","day","hour","minute","second","generatedDate","indexOf","UTC","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","CronPattern","Array","fill","parse","constructor","String","handleNicknames","parts","trim","replace","unshift","toUpperCase","replaceAlphaMonths","replaceAlphaDays","initDate","throwAtIllegalCharacters","partToArray","type","conf","valueIndexOffset","arr","handleRangeWithStepping","handleRange","handleStepping","handleNumber","reValidCron","test","matches","lower","upper","steps","start","cleanPattern","toLowerCase","maxDelay","Math","pow","fnOrOptions1","fnOrOptions2","func","once","fn","schedule","next","prev","_next","enumerate","n","previous","enumeration","previousrun","push","running","msLeft","msToNext","stop","currentTimeout","clearTimeout","pause","resume","partial","waitMs","setTimeout","now","context","_e","undefined","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","reverse","CronFromTZ","Date","toLocaleString","timeZone","sourceDate","targetPlus","offset","getTime","let","testOffset","iterations","closestAfter","Infinity","testTarget","test","CronOptions","options","legacyMode","paused","maxRuns","catch","interval","parseInt","kill","startAt","CronDate","timezone","stopAt","isNaN","Error","fromDate","TypeError","fromString","fromCronDate","prototype","milliseconds","getMilliseconds","seconds","getSeconds","minutes","getMinutes","hours","getHours","days","getDate","months","getMonth","years","getFullYear","apply","newDate","str","parsedDate","parseISOLocal","increment","pattern","hasPreviousRun","findNext","target","override","startPos","i","length","match","targetDate","setDate","lastDayOfMonth","targetDateCopy","dowMatch","daysOfWeek","getDay","starDayOfWeek","starDayOfMonth","resetPrevious","doing","toDo","currentValue","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","arr","handleRangeWithStepping","handleRange","handleStepping","handleNumber","reValidCron","matches","lower","upper","steps","start","cleanPattern","toLowerCase","maxDelay","Math","pow","fnOrOptions1","fnOrOptions2","func","once","fn","schedule","next","prev","_next","enumerate","n","previous","enumeration","previousrun","push","running","msLeft","msToNext","stop","currentTimeout","clearTimeout","pause","resume","partial","waitMs","setTimeout","now","context","_e","undefined","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,10);options.kill=false;if(options.startAt){options.startAt=new CronDate(options.startAt,options.timezone)}if(options.stopAt){options.stopAt=new CronDate(options.stopAt,options.timezone)}if(options.interval!==null){if(isNaN(options.interval)){throw new Error("CronOptions: Supplied value for interval is not a number")}else if(options.interval<0){throw new Error("CronOptions: Supplied value for interval can not be negative")}}return options}function CronDate(date,timezone){this.timezone=timezone;if(date&&date instanceof Date){if(!isNaN(date)){this.fromDate(date)}else{throw new TypeError("CronDate: Invalid date passed as parameter to CronDate constructor")}}else if(date===void 0){this.fromDate(new Date)}else if(date&&typeof date==="string"){this.fromString(date)}else if(date instanceof CronDate){this.fromCronDate(date)}else{throw new TypeError("CronDate: Invalid type ("+typeof date+") passed as parameter to CronDate constructor")}}CronDate.prototype.fromDate=function(date){if(this.timezone){date=CronTZ(date,this.timezone)}this.milliseconds=date.getMilliseconds();this.seconds=date.getSeconds();this.minutes=date.getMinutes();this.hours=date.getHours();this.days=date.getDate();this.months=date.getMonth();this.years=date.getFullYear()};CronDate.prototype.fromCronDate=function(date){this.timezone=date.timezone;this.milliseconds=date.milliseconds;this.seconds=date.seconds;this.minutes=date.minutes;this.hours=date.hours;this.days=date.days;this.months=date.months;this.years=date.years};CronDate.prototype.apply=function(){const newDate=new Date(this.years,this.months,this.days,this.hours,this.minutes,this.seconds,this.milliseconds);this.milliseconds=newDate.getMilliseconds();this.seconds=newDate.getSeconds();this.minutes=newDate.getMinutes();this.hours=newDate.getHours();this.days=newDate.getDate();this.months=newDate.getMonth();this.years=newDate.getFullYear()};CronDate.prototype.fromString=function(str){const parsedDate=this.parseISOLocal(str);if(isNaN(parsedDate)){throw new TypeError("CronDate: Provided string value for CronDate could not be parsed as date.")}this.fromDate(parsedDate)};CronDate.prototype.increment=function(pattern,options,hasPreviousRun){if(options.interval>1&&hasPreviousRun){this.seconds+=options.interval}else{this.seconds+=1}this.milliseconds=0;this.apply();const findNext=(target,pattern,offset,override)=>{const startPos=override===void 0?this[target]+offset:0;for(let i=startPos;i<pattern[target].length;i++){let match=pattern[target][i];if(target==="days"){const targetDate=this.getDate(true);targetDate.setDate(i-offset);if(pattern.lastDayOfMonth){const 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){const currentValue=this[toDo[doing][0]];if(!findNext(toDo[doing][0],pattern,toDo[doing][2])){this[toDo[doing][1]]++;resetPrevious(0);this.apply()}else if(currentValue!==this[toDo[doing][0]]){resetPrevious(-1)}if(this.years>=4e3){return null}doing++}return this};CronDate.prototype.getDate=function(internal){const targetDate=new Date(this.years,this.months,this.days,this.hours,this.minutes,this.seconds,this.milliseconds);if(internal||!this.timezone){return targetDate}else{const offset=CronTZ(targetDate,this.timezone).getTime()-targetDate.getTime();return new Date(targetDate.getTime()-offset)}};CronDate.prototype.getTime=function(internal){return this.getDate(internal).getTime()};CronDate.prototype.parseISOLocal=function(dateTimeString){const dateTimeStringSplit=dateTimeString.split(/\D/);if(dateTimeStringSplit.length<6){return NaN}const year=parseInt(dateTimeStringSplit[0],10),month=parseInt(dateTimeStringSplit[1],10),day=parseInt(dateTimeStringSplit[2],10),hour=parseInt(dateTimeStringSplit[3],10),minute=parseInt(dateTimeStringSplit[4],10),second=parseInt(dateTimeStringSplit[5],10);if(isNaN(year)||isNaN(month)||isNaN(day)||isNaN(hour)||isNaN(minute)||isNaN(second)){return NaN}else{let generatedDate;if(dateTimeString.indexOf("Z")>0){generatedDate=new Date(Date.UTC(year,month-1,day,hour,minute,second));if(year==generatedDate.getUTCFullYear()&&month==generatedDate.getUTCMonth()+1&&day==generatedDate.getUTCDate()&&hour==generatedDate.getUTCHours()&&minute==generatedDate.getUTCMinutes()&&second==generatedDate.getUTCSeconds()){return generatedDate}else{return NaN}}else{generatedDate=new Date(year,month-1,day,hour,minute,second);if(year==generatedDate.getFullYear()&&month==generatedDate.getMonth()+1&&day==generatedDate.getDate()&&hour==generatedDate.getHours()&&minute==generatedDate.getMinutes()&&second==generatedDate.getSeconds()){return generatedDate}else{return NaN}}}};function CronPattern(pattern,timezone){this.pattern=pattern;this.timezone=timezone;this.seconds=Array(60).fill(0);this.minutes=Array(60).fill(0);this.hours=Array(24).fill(0);this.days=Array(31).fill(0);this.months=Array(12).fill(0);this.daysOfWeek=Array(8).fill(0);this.lastDayOfMonth=false;this.starDayOfMonth=false;this.starDayOfWeek=false;this.parse()}CronPattern.prototype.parse=function(){if(!(typeof this.pattern==="string"||this.pattern.constructor===String)){throw new TypeError("CronPattern: Pattern has to be of type string.")}this.pattern=this.handleNicknames(this.pattern);const parts=this.pattern.trim().replace(/\s+/g," ").split(" ");if(parts.length<5||parts.length>6){throw new TypeError("CronPattern: invalid configuration format ('"+this.pattern+"'), exacly five or six space separated parts required.")}if(parts.length===5){parts.unshift("0")}if(parts[3].indexOf("L")>=0){parts[3]=parts[3].replace("L","");this.lastDayOfMonth=true}if(parts[3].toUpperCase()=="*"){this.starDayOfMonth=true}parts[4]=this.replaceAlphaMonths(parts[4]);parts[5]=this.replaceAlphaDays(parts[5]);if(parts[5].toUpperCase()=="*"){this.starDayOfWeek=true}const 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){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)}}else if(conf.indexOf("-")!==-1&&conf.indexOf("/")!==-1){this.handleRangeWithStepping(conf,type,valueIndexOffset)}else if(conf.indexOf("-")!==-1){this.handleRange(conf,type,valueIndexOffset)}else if(conf.indexOf("/")!==-1){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,"-7").replace(/sun/gi,"0").replace(/mon/gi,"1").replace(/tue/gi,"2").replace(/wed/gi,"3").replace(/thu/gi,"4").replace(/fri/gi,"5").replace(/sat/gi,"6")};CronPattern.prototype.replaceAlphaMonths=function(conf){return conf.replace(/jan/gi,"1").replace(/feb/gi,"2").replace(/mar/gi,"3").replace(/apr/gi,"4").replace(/may/gi,"5").replace(/jun/gi,"6").replace(/jul/gi,"7").replace(/aug/gi,"8").replace(/sep/gi,"9").replace(/oct/gi,"10").replace(/nov/gi,"11").replace(/dec/gi,"12")};CronPattern.prototype.handleNicknames=function(pattern){const cleanPattern=pattern.trim().toLowerCase();if(cleanPattern==="@yearly"||cleanPattern==="@annually"){return"0 0 1 1 *"}else if(cleanPattern==="@monthly"){return"0 0 1 * *"}else if(cleanPattern==="@weekly"){return"0 0 * * 0"}else if(cleanPattern==="@daily"){return"0 0 * * *"}else if(cleanPattern==="@hourly"){return"0 * * * *"}else{return pattern}};const maxDelay=Math.pow(2,32-1)-1;function Cron(pattern,fnOrOptions1,fnOrOptions2){if(!(this instanceof Cron)){return new Cron(pattern,fnOrOptions1,fnOrOptions2)}let options,func;if(typeof fnOrOptions1==="function"){func=fnOrOptions1}else if(typeof fnOrOptions1==="object"){options=fnOrOptions1}else if(fnOrOptions1!==void 0){throw new Error("Cron: Invalid argument passed for optionsIn. Should be one of function, or object (options).")}if(typeof fnOrOptions2==="function"){func=fnOrOptions2}else if(typeof fnOrOptions2==="object"){options=fnOrOptions2}else if(fnOrOptions2!==void 0){throw new Error("Cron: Invalid argument passed for funcIn. Should be one of function, or object (options).")}this.options=CronOptions(options);this.once=void 0;this.pattern=void 0;if(pattern&&(pattern instanceof Date||typeof pattern==="string"&&pattern.indexOf(":")>0)){this.once=new CronDate(pattern,this.options.timezone)}else{this.pattern=new CronPattern(pattern,this.options.timezone)}if(func!==void 0){this.fn=func;this.schedule()}return this}Cron.prototype.next=function(prev){const next=this._next(prev);return next?next.getDate():null};Cron.prototype.enumerate=function(n,previous){const enumeration=[];let prev=previous||this.previousrun;while(n--&&(prev=this.next(prev))){enumeration.push(prev)}return enumeration};Cron.prototype.running=function(){const msLeft=this.msToNext(this.previousrun);const running=!this.options.paused&&this.fn!==void 0;return msLeft!==null&&running};Cron.prototype.previous=function(){return this.previousrun?this.previousrun.getDate():null};Cron.prototype.msToNext=function(prev){const next=this._next(prev||this.previousrun);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,partial){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(partial?partial:this.previousrun);const target=this.next(partial?partial:this.previousrun);if(waitMs===null)return this;if(waitMs>maxDelay){waitMs=maxDelay}this.currentTimeout=setTimeout(()=>{const now=new Date;if(waitMs!==maxDelay&&!this.options.paused&&now.getTime()>=target){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()}else{this.schedule(undefined,now)}},waitMs);return this};Cron.prototype._next=function(prev){const hasPreviousRun=prev||this.previousrun?true:false;prev=new CronDate(prev,this.options.timezone);if(this.options.startAt&&prev&&prev.getTime(true)<this.options.startAt.getTime(true)){prev=this.options.startAt}const nextRun=this.once||new CronDate(prev,this.options.timezone).increment(this.pattern,this.options,hasPreviousRun);if(this.once&&this.once.getTime(true)<=prev.getTime(true)){return null}else if(nextRun===null||this.options.maxRuns<=0||this.options.kill||this.options.stopAt&&nextRun.getTime(true)>=this.options.stopAt.getTime(true)){return null}else{return nextRun}};Cron.Cron=Cron;export{Cron,Cron as default};
1
+ function CronTZ(date,tzString,reverse){if(reverse){return CronFromTZ(date,tzString)}else{return new Date(date.toLocaleString("sv-SE",{timeZone:tzString}))}}function CronFromTZ(sourceDate,tzString){const targetPlus=new Date(sourceDate.toLocaleString("sv-SE",{timeZone:tzString})),offset=sourceDate.getTime()-targetPlus.getTime();let testOffset=0,iterations=0,closestAfter=-Infinity;while(iterations++<2){const testTarget=new Date(sourceDate.getTime()+offset-testOffset),test=new Date(testTarget.toLocaleString("sv-SE",{timeZone:tzString}));testOffset=test.getTime()-sourceDate.getTime();if(testOffset===0){return testTarget}else{if(testOffset<0&&testOffset>closestAfter){closestAfter=testOffset}}}return new Date(sourceDate.getTime()+offset-closestAfter)}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,10);options.kill=false;if(options.startAt){options.startAt=new CronDate(options.startAt,options.timezone)}if(options.stopAt){options.stopAt=new CronDate(options.stopAt,options.timezone)}if(options.interval!==null){if(isNaN(options.interval)){throw new Error("CronOptions: Supplied value for interval is not a number")}else if(options.interval<0){throw new Error("CronOptions: Supplied value for interval can not be negative")}}return options}function CronDate(date,timezone){this.timezone=timezone;if(date&&date instanceof Date){if(!isNaN(date)){this.fromDate(date)}else{throw new TypeError("CronDate: Invalid date passed as parameter to CronDate constructor")}}else if(date===void 0){this.fromDate(new Date)}else if(date&&typeof date==="string"){this.fromString(date)}else if(date instanceof CronDate){this.fromCronDate(date)}else{throw new TypeError("CronDate: Invalid type ("+typeof date+") passed as parameter to CronDate constructor")}}CronDate.prototype.fromDate=function(date){if(this.timezone){date=CronTZ(date,this.timezone)}this.milliseconds=date.getMilliseconds();this.seconds=date.getSeconds();this.minutes=date.getMinutes();this.hours=date.getHours();this.days=date.getDate();this.months=date.getMonth();this.years=date.getFullYear()};CronDate.prototype.fromCronDate=function(date){this.timezone=date.timezone;this.milliseconds=date.milliseconds;this.seconds=date.seconds;this.minutes=date.minutes;this.hours=date.hours;this.days=date.days;this.months=date.months;this.years=date.years};CronDate.prototype.apply=function(){const newDate=new Date(this.years,this.months,this.days,this.hours,this.minutes,this.seconds,this.milliseconds);this.milliseconds=newDate.getMilliseconds();this.seconds=newDate.getSeconds();this.minutes=newDate.getMinutes();this.hours=newDate.getHours();this.days=newDate.getDate();this.months=newDate.getMonth();this.years=newDate.getFullYear()};CronDate.prototype.fromString=function(str){const parsedDate=this.parseISOLocal(str);if(isNaN(parsedDate)){throw new TypeError("CronDate: Provided string value for CronDate could not be parsed as date.")}this.fromDate(parsedDate)};CronDate.prototype.increment=function(pattern,options,hasPreviousRun){if(options.interval>1&&hasPreviousRun){this.seconds+=options.interval}else{this.seconds+=1}this.milliseconds=0;this.apply();const findNext=(target,pattern,offset,override)=>{const startPos=override===void 0?this[target]+offset:0;for(let i=startPos;i<pattern[target].length;i++){let match=pattern[target][i];if(target==="days"){const targetDate=this.getDate(true);targetDate.setDate(i-offset);if(pattern.lastDayOfMonth){const 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){const currentValue=this[toDo[doing][0]];if(!findNext(toDo[doing][0],pattern,toDo[doing][2])){this[toDo[doing][1]]++;resetPrevious(0);this.apply()}else if(currentValue!==this[toDo[doing][0]]){resetPrevious(-1)}if(this.years>=4e3){return null}doing++}return this};CronDate.prototype.getDate=function(internal){const targetDate=new Date(this.years,this.months,this.days,this.hours,this.minutes,this.seconds,this.milliseconds);if(internal||!this.timezone){return targetDate}else{return CronTZ(targetDate,this.timezone,true)}};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}const 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){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)}}else if(conf.indexOf("-")!==-1&&conf.indexOf("/")!==-1){this.handleRangeWithStepping(conf,type,valueIndexOffset)}else if(conf.indexOf("-")!==-1){this.handleRange(conf,type,valueIndexOffset)}else if(conf.indexOf("/")!==-1){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,"-7").replace(/sun/gi,"0").replace(/mon/gi,"1").replace(/tue/gi,"2").replace(/wed/gi,"3").replace(/thu/gi,"4").replace(/fri/gi,"5").replace(/sat/gi,"6")};CronPattern.prototype.replaceAlphaMonths=function(conf){return conf.replace(/jan/gi,"1").replace(/feb/gi,"2").replace(/mar/gi,"3").replace(/apr/gi,"4").replace(/may/gi,"5").replace(/jun/gi,"6").replace(/jul/gi,"7").replace(/aug/gi,"8").replace(/sep/gi,"9").replace(/oct/gi,"10").replace(/nov/gi,"11").replace(/dec/gi,"12")};CronPattern.prototype.handleNicknames=function(pattern){const cleanPattern=pattern.trim().toLowerCase();if(cleanPattern==="@yearly"||cleanPattern==="@annually"){return"0 0 1 1 *"}else if(cleanPattern==="@monthly"){return"0 0 1 * *"}else if(cleanPattern==="@weekly"){return"0 0 * * 0"}else if(cleanPattern==="@daily"){return"0 0 * * *"}else if(cleanPattern==="@hourly"){return"0 * * * *"}else{return pattern}};const maxDelay=Math.pow(2,32-1)-1;function Cron(pattern,fnOrOptions1,fnOrOptions2){if(!(this instanceof Cron)){return new Cron(pattern,fnOrOptions1,fnOrOptions2)}let options,func;if(typeof fnOrOptions1==="function"){func=fnOrOptions1}else if(typeof fnOrOptions1==="object"){options=fnOrOptions1}else if(fnOrOptions1!==void 0){throw new Error("Cron: Invalid argument passed for optionsIn. Should be one of function, or object (options).")}if(typeof fnOrOptions2==="function"){func=fnOrOptions2}else if(typeof fnOrOptions2==="object"){options=fnOrOptions2}else if(fnOrOptions2!==void 0){throw new Error("Cron: Invalid argument passed for funcIn. Should be one of function, or object (options).")}this.options=CronOptions(options);this.once=void 0;this.pattern=void 0;if(pattern&&(pattern instanceof Date||typeof pattern==="string"&&pattern.indexOf(":")>0)){this.once=new CronDate(pattern,this.options.timezone)}else{this.pattern=new CronPattern(pattern,this.options.timezone)}if(func!==void 0){this.fn=func;this.schedule()}return this}Cron.prototype.next=function(prev){const next=this._next(prev);return next?next.getDate():null};Cron.prototype.enumerate=function(n,previous){const enumeration=[];let prev=previous||this.previousrun;while(n--&&(prev=this.next(prev))){enumeration.push(prev)}return enumeration};Cron.prototype.running=function(){const msLeft=this.msToNext(this.previousrun);const running=!this.options.paused&&this.fn!==void 0;return msLeft!==null&&running};Cron.prototype.previous=function(){return this.previousrun?this.previousrun.getDate():null};Cron.prototype.msToNext=function(prev){const next=this._next(prev||this.previousrun);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,partial){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(partial?partial:this.previousrun);const target=this.next(partial?partial:this.previousrun);if(waitMs===null)return this;if(waitMs>maxDelay){waitMs=maxDelay}this.currentTimeout=setTimeout(()=>{const now=new Date;if(waitMs!==maxDelay&&!this.options.paused&&now.getTime()>=target){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()}else{this.schedule(undefined,now)}},waitMs);return this};Cron.prototype._next=function(prev){const hasPreviousRun=prev||this.previousrun?true:false;prev=new CronDate(prev,this.options.timezone);if(this.options.startAt&&prev&&prev.getTime(true)<this.options.startAt.getTime(true)){prev=this.options.startAt}const nextRun=this.once||new CronDate(prev,this.options.timezone).increment(this.pattern,this.options,hasPreviousRun);if(this.once&&this.once.getTime(true)<=prev.getTime(true)){return null}else if(nextRun===null||this.options.maxRuns<=0||this.options.kill||this.options.stopAt&&nextRun.getTime(true)>=this.options.stopAt.getTime(true)){return null}else{return nextRun}};Cron.Cron=Cron;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","hasPreviousRun","findNext","target","offset","override","startPos","let","i","length","match","targetDate","setDate","lastDayOfMonth","targetDateCopy","dowMatch","daysOfWeek","getDay","starDayOfWeek","starDayOfMonth","resetPrevious","doing","toDo","currentValue","internal","getTime","dateTimeString","dateTimeStringSplit","split","NaN","year","month","day","hour","minute","second","generatedDate","indexOf","UTC","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","CronPattern","Array","fill","parse","constructor","String","handleNicknames","parts","trim","replace","unshift","toUpperCase","replaceAlphaMonths","replaceAlphaDays","initDate","throwAtIllegalCharacters","partToArray","type","conf","valueIndexOffset","arr","handleRangeWithStepping","handleRange","handleStepping","handleNumber","reValidCron","test","matches","lower","upper","steps","start","cleanPattern","toLowerCase","maxDelay","Math","pow","Cron","fnOrOptions1","fnOrOptions2","func","once","fn","schedule","next","prev","_next","enumerate","n","previous","enumeration","previousrun","push","running","msLeft","msToNext","stop","currentTimeout","clearTimeout","pause","resume","partial","waitMs","setTimeout","now","context","_e","undefined","nextRun"],"mappings":"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"}
1
+ {"version":3,"sources":["dist/croner.mjs"],"names":["CronTZ","date","tzString","reverse","CronFromTZ","Date","toLocaleString","timeZone","sourceDate","targetPlus","offset","getTime","let","testOffset","iterations","closestAfter","Infinity","testTarget","test","CronOptions","options","legacyMode","paused","maxRuns","catch","interval","parseInt","kill","startAt","CronDate","timezone","stopAt","isNaN","Error","this","fromDate","TypeError","fromString","fromCronDate","prototype","milliseconds","getMilliseconds","seconds","getSeconds","minutes","getMinutes","hours","getHours","days","getDate","months","getMonth","years","getFullYear","apply","newDate","str","parsedDate","parseISOLocal","increment","pattern","hasPreviousRun","findNext","target","override","startPos","i","length","match","targetDate","setDate","lastDayOfMonth","targetDateCopy","dowMatch","daysOfWeek","getDay","starDayOfWeek","starDayOfMonth","resetPrevious","doing","toDo","currentValue","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","arr","handleRangeWithStepping","handleRange","handleStepping","handleNumber","reValidCron","matches","lower","upper","steps","start","cleanPattern","toLowerCase","maxDelay","Math","pow","Cron","fnOrOptions1","fnOrOptions2","func","once","fn","schedule","next","prev","_next","enumerate","n","previous","enumeration","previousrun","push","running","msLeft","msToNext","stop","currentTimeout","clearTimeout","pause","resume","partial","waitMs","setTimeout","now","context","_e","undefined","nextRun"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "croner",
3
- "version": "4.3.17",
3
+ "version": "4.4.0",
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",
package/src/date.js CHANGED
@@ -289,8 +289,7 @@ CronDate.prototype.getDate = function (internal) {
289
289
  if (internal || !this.timezone) {
290
290
  return targetDate;
291
291
  } else {
292
- const offset = CronTZ(targetDate, this.timezone).getTime()-targetDate.getTime();
293
- return new Date(targetDate.getTime()-offset);
292
+ return CronTZ(targetDate, this.timezone, true);
294
293
  }
295
294
  };
296
295
 
package/src/tz.js CHANGED
@@ -10,12 +10,56 @@
10
10
  * (for example) will return local time in new york, but getUTCHours()
11
11
  * will return something irrelevant.
12
12
  *
13
- * @param {Date} date - Input date
13
+ * @param {date} date - Input date
14
14
  * @param {string} tzString - Timezone string in Europe/Stockholm format
15
- * @returns {Date}
15
+ * @param {boolean} [reverse] - Reverse operation
16
+ * @returns {date}
16
17
  */
17
- function CronTZ(date, tzString) {
18
- return new Date(date.toLocaleString("en-US", {timeZone: tzString}));
18
+ function CronTZ(date, tzString, reverse) {
19
+ if (reverse) {
20
+ return CronFromTZ(date, tzString);
21
+ } else {
22
+ return new Date(date.toLocaleString("sv-SE", {timeZone: tzString}));
23
+ }
19
24
  }
20
25
 
21
- export { CronTZ };
26
+ /**
27
+ * Reverse of CronTZ
28
+ *
29
+ * @param {date} date - Input (tainted) date
30
+ * @param {string} tzString - Timezone string in Europe/Stockholm format
31
+ * @returns {date}
32
+ */
33
+ function CronFromTZ(sourceDate, tzString) {
34
+
35
+ // Try using target offset
36
+ const
37
+ targetPlus = new Date(sourceDate.toLocaleString("sv-SE", {timeZone: tzString})),
38
+ offset = sourceDate.getTime() - targetPlus.getTime();
39
+
40
+ let testOffset = 0,
41
+ iterations = 0,
42
+ closestAfter = -Infinity;
43
+
44
+ while (iterations++ < 2) {
45
+ const
46
+ testTarget = new Date(sourceDate.getTime() + offset - testOffset),
47
+ test = new Date(testTarget.toLocaleString("sv-SE", {timeZone: tzString}));
48
+
49
+ testOffset = test.getTime() - sourceDate.getTime();
50
+
51
+ if (testOffset === 0) {
52
+ return testTarget;
53
+ } else {
54
+ if (testOffset < 0 && testOffset > closestAfter) {
55
+ closestAfter = testOffset;
56
+ }
57
+ }
58
+
59
+ }
60
+
61
+ return new Date(sourceDate.getTime() + offset - closestAfter);
62
+
63
+ }
64
+
65
+ export { CronTZ };
package/types/tz.d.ts CHANGED
@@ -10,8 +10,9 @@
10
10
  * (for example) will return local time in new york, but getUTCHours()
11
11
  * will return something irrelevant.
12
12
  *
13
- * @param {Date} date - Input date
13
+ * @param {date} date - Input date
14
14
  * @param {string} tzString - Timezone string in Europe/Stockholm format
15
- * @returns {Date}
15
+ * @param {boolean} [reverse] - Reverse operation
16
+ * @returns {date}
16
17
  */
17
- export function CronTZ(date: Date, tzString: string): Date;
18
+ export function CronTZ(date: any, tzString: string, reverse?: boolean): any;