Comparing version 4.0.64 to 4.0.65
@@ -1,1 +0,1 @@ | ||
(function(global,factory){typeof exports==="object"&&typeof module!=="undefined"?module.exports=factory():typeof define==="function"&&define.amd?define(factory):(global=typeof globalThis!=="undefined"?globalThis:global||self,global.Cron=factory())})(this,function(){"use strict";function convertTZ(date,tzString){return new Date(date.toLocaleString("en-US",{timeZone:tzString}))}function CronDate(date,timezone){this.timezone=timezone;if(date&&date instanceof Date){this.fromDate(date)}else if(date===void 0){this.fromDate(new Date)}else if(date&&typeof date==="string"){this.fromString(date)}else if(date instanceof CronDate){this.fromCronDate(date)}else{throw new TypeError("CronDate: Invalid type ("+typeof date+") passed as parameter to CronDate constructor")}}CronDate.prototype.fromDate=function(date,fromLocal){if(this.timezone){let originalUTCms=date.getTime(),convertedDate=convertTZ(date,this.timezone);if(!fromLocal){date=convertedDate}this.UTCmsOffset=convertedDate.getTime()-originalUTCms}else{this.UTCmsOffset=0}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.UTCmsOffset=date.UTCmsOffset;this.timezone=date.timezone;let newDate=new Date(date.years,date.months,date.days,date.hours,date.minutes,date.seconds,date.milliseconds);this.milliseconds=newDate.getMilliseconds();this.seconds=newDate.getSeconds();this.minutes=newDate.getMinutes();this.hours=newDate.getHours();this.days=newDate.getDate();this.months=newDate.getMonth();this.years=newDate.getFullYear()};CronDate.prototype.fromString=function(str){let parsedDateUTCms=this.parseISOLocal(str);if(isNaN(parsedDateUTCms)){throw new TypeError("CronDate: Provided string value for CronDate could not be parsed as date.")}this.fromDate(new Date(parsedDateUTCms),true)};CronDate.prototype.increment=function(pattern,rerun){if(!rerun){this.seconds+=1}let origTime=this.getTime();this.milliseconds=0;let self=this,findNext=function(target,pattern,offset,override){let startPos=override===void 0?self[target]+offset:0+offset;for(let i=startPos;i<pattern[target].length;i++){if(pattern[target][i]){self[target]=i-offset;return true}}return false},resetPrevious=function(){while(doing>=0){findNext(toDo[doing][0],pattern,toDo[doing][2],0);doing--}};let toDo=[["seconds","minutes",0],["minutes","hours",0],["hours","days",0],["days","months",-1],["months","years",0]],doing=0;while(doing<5){if(!findNext(toDo[doing][0],pattern,toDo[doing][2])){this[toDo[doing][1]]++;resetPrevious()}doing++}while(!pattern.daysOfWeek[this.getDate(true).getDay()]){this.days+=1;doing=2;resetPrevious()}if(origTime!=self.getTime()){self=new CronDate(self);if(this.years>=4e3){return null}else{return self.increment(pattern,true)}}else{return this}};CronDate.prototype.getDate=function(internal){let offset=internal?0:this.UTCmsOffset;return new Date(this.years,this.months,this.days,this.hours,this.minutes,this.seconds,this.milliseconds-offset)};CronDate.prototype.getTime=function(internal){let offset=internal?0:this.UTCmsOffset;return new Date(this.years,this.months,this.days,this.hours,this.minutes,this.seconds,this.milliseconds-offset).getTime()};CronDate.prototype.parseISOLocal=function(s){let b=s.split(/\D/);if(b.length<6){return NaN}let year=parseInt(b[0],10),month=parseInt(b[1],10),day=parseInt(b[2],10),hour=parseInt(b[3],10),minute=parseInt(b[4],10),second=parseInt(b[5],10);if(isNaN(year)||isNaN(month)||isNaN(day)||isNaN(hour)||isNaN(minute)||isNaN(second)){return NaN}else{return new Date(year,month-1,day,hour,minute,second)}};function CronPattern(pattern){this.pattern=pattern;this.seconds=Array(60).fill(0);this.minutes=Array(60).fill(0);this.hours=Array(24).fill(0);this.days=Array(31).fill(0);this.months=Array(12).fill(0);this.daysOfWeek=Array(8).fill(0);this.parse()}CronPattern.prototype.parse=function(){if(!(typeof this.pattern==="string"||this.pattern.constructor===String)){throw new TypeError("CronPattern: Pattern has to be of type string.")}let parts=this.pattern.trim().replace(/\s+/g," ").split(" ");if(parts.length<5||parts.length>6){throw new TypeError("CronPattern: invalid configuration format ('"+this.pattern+"'), exacly five or six space separated parts required.")}if(parts.length===5){parts.unshift("0")}parts[4]=this.replaceAlphaMonths(parts[4]);parts[5]=this.replaceAlphaDays(parts[5]);this.throwAtIllegalCharacters(parts);this.partToArray("seconds",parts[0],0);this.partToArray("minutes",parts[1],0);this.partToArray("hours",parts[2],0);this.partToArray("days",parts[3],-1);this.partToArray("months",parts[4],-1);this.partToArray("daysOfWeek",parts[5],0);if(this.daysOfWeek[7]){this.daysOfWeek[0]=1}};CronPattern.prototype.partToArray=function(type,conf,valueIndexOffset){let i,split,arr=this[type];if(conf==="*"){for(i=0;i<arr.length;i++){arr[i]=1}return}split=conf.split(",");if(split.length>1){for(i=0;i<split.length;i++){this.partToArray(type,split[i],valueIndexOffset)}}else if(conf.indexOf("-")!==-1){this.handleRange(conf,type,valueIndexOffset)}else if(conf.indexOf("/")!==-1){this.handleStepping(conf,type,valueIndexOffset)}else{this.handleNumber(conf,type,valueIndexOffset)}};CronPattern.prototype.throwAtIllegalCharacters=function(parts){let reValidCron=/[^/*0-9,-]+/;for(let i=0;i<parts.length;i++){if(reValidCron.test(parts[i])){throw new TypeError("CronPattern: configuration entry "+i+" ("+parts[i]+") contains illegal characters.")}}};CronPattern.prototype.handleNumber=function(conf,type,valueIndexOffset){let i=parseInt(conf,10)+valueIndexOffset;if(i<0||i>=this[type].length){throw new TypeError("CronPattern: "+type+" value out of range: '"+conf+"'")}this[type][i]=1};CronPattern.prototype.handleRange=function(conf,type,valueIndexOffset){let split=conf.split("-");if(split.length!==2){throw new TypeError("CronPattern: Syntax error, illegal range: '"+conf+"'")}let lower=parseInt(split[0],10)+valueIndexOffset,upper=parseInt(split[1],10)+valueIndexOffset;if(isNaN(lower)){throw new TypeError("CronPattern: Syntax error, illegal lower range (NaN)")}else if(isNaN(upper)){throw new TypeError("CronPattern: Syntax error, illegal upper range (NaN)")}if(lower<0||upper>=this[type].length){throw new TypeError("CronPattern: Value out of range: '"+conf+"'")}if(lower>upper){throw new TypeError("CronPattern: From value is larger than to value: '"+conf+"'")}for(let i=lower;i<=upper;i++){this[type][i+valueIndexOffset]=1}};CronPattern.prototype.handleStepping=function(conf,type,valueIndexOffset){let split=conf.split("/");if(split.length!==2){throw new TypeError("CronPattern: Syntax error, illegal stepping: '"+conf+"'")}if(split[0]!=="*"){throw new TypeError("CronPattern: Syntax error, left part of / needs to be * : '"+conf+"'")}let steps=parseInt(split[1],10);if(isNaN(steps))throw new TypeError("CronPattern: Syntax error, illegal stepping: (NaN)");if(steps===0)throw new TypeError("CronPattern: Syntax error, illegal stepping: 0");if(steps>this[type].length)throw new TypeError("CronPattern: Syntax error, steps cannot be greater than maximum value of part ("+this[type].length+")");for(let i=0;i<this[type].length;i+=steps){this[type][i+valueIndexOffset]=1}};CronPattern.prototype.replaceAlphaDays=function(conf){return conf.replace(/sun/gi,"0").replace(/mon/gi,"1").replace(/tue/gi,"2").replace(/wed/gi,"3").replace(/thu/gi,"4").replace(/fri/gi,"5").replace(/sat/gi,"6")};CronPattern.prototype.replaceAlphaMonths=function(conf){return conf.replace(/jan/gi,"1").replace(/feb/gi,"2").replace(/mar/gi,"3").replace(/apr/gi,"4").replace(/may/gi,"5").replace(/jun/gi,"6").replace(/jul/gi,"7").replace(/aug/gi,"8").replace(/sep/gi,"9").replace(/oct/gi,"10").replace(/nov/gi,"11").replace(/dec/gi,"12")};const maxDelay=Math.pow(2,32-1)-1;function Cron(pattern,options,fn){let self=this;if(!(this instanceof Cron)){return new Cron(pattern,options,fn)}self.pattern=new CronPattern(pattern);if(typeof options==="function"){fn=options;options=void 0}this.options=this.processOptions(options);if(fn!==void 0){this.schedule(fn)}return this}Cron.prototype.processOptions=function(options){if(options===void 0){options={}}options.paused=options.paused===void 0?false:options.paused;options.maxRuns=options.maxRuns===void 0?Infinity:options.maxRuns;options.kill=false;if(options.startAt){options.startAt=new CronDate(options.startAt,options.timezone)}if(options.stopAt){options.stopAt=new CronDate(options.stopAt,options.timezone)}return options};Cron.prototype.next=function(prev){prev=new CronDate(prev,this.options.timezone);let next=this._next(prev);return next?next.getDate():null};Cron.prototype.previous=function(){return this.previousrun?this.previousrun.getDate():null};Cron.prototype._next=function(prev){if(this.options.startAt&&prev&&prev.getTime(true)<this.options.startAt.getTime(true)){prev=new CronDate(this.options.startAt,this.options.timezone)}let nextRun=new CronDate(prev,this.options.timezone).increment(this.pattern);if(nextRun===null||this.options.maxRuns<=0||this.options.kill||this.options.stopAt&&nextRun.getTime(true)>=this.options.stopAt.getTime(true)){return null}else{return nextRun}};Cron.prototype.msToNext=function(prev){prev=new CronDate(prev,this.options.timezone);let next=this._next(prev);if(next){return next.getTime(true)-prev.getTime(true)}else{return null}};Cron.prototype.stop=function(){this.options.kill=true;if(this.currentTimeout){clearTimeout(this.currentTimeout)}};Cron.prototype.pause=function(){return(this.options.paused=true)&&!this.options.kill};Cron.prototype.resume=function(){return!(this.options.paused=false)&&!this.options.kill};Cron.prototype.schedule=function(func){let self=this,waitMs=this.msToNext(self.previousrun),_maxDelay=self.maxDelay||maxDelay;if(waitMs>_maxDelay){waitMs=_maxDelay}if(waitMs!==null){self.currentTimeout=setTimeout(function(){if(waitMs!==_maxDelay){if(!self.options.paused){self.options.maxRuns--;func()}self.previousrun=new CronDate(void 0,self.options.timezone)}self.schedule(func)},waitMs)}return this};return Cron}); | ||
(function(global,factory){typeof exports==="object"&&typeof module!=="undefined"?module.exports=factory():typeof define==="function"&&define.amd?define(factory):(global=typeof globalThis!=="undefined"?globalThis:global||self,global.Cron=factory())})(this,function(){"use strict";function convertTZ(date,tzString){return new Date(date.toLocaleString("en-US",{timeZone:tzString}))}function CronDate(date,timezone){this.timezone=timezone;if(date&&date instanceof Date){this.fromDate(date)}else if(date===void 0){this.fromDate(new Date)}else if(date&&typeof date==="string"){this.fromString(date)}else if(date instanceof CronDate){this.fromCronDate(date)}else{throw new TypeError("CronDate: Invalid type ("+typeof date+") passed as parameter to CronDate constructor")}}CronDate.prototype.fromDate=function(date,fromLocal){if(this.timezone){let originalUTCms=date.getTime(),convertedDate=convertTZ(date,this.timezone);if(!fromLocal){date=convertedDate}this.UTCmsOffset=convertedDate.getTime()-originalUTCms}else{this.UTCmsOffset=0}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.UTCmsOffset=date.UTCmsOffset;this.timezone=date.timezone;let newDate=new Date(date.years,date.months,date.days,date.hours,date.minutes,date.seconds,date.milliseconds);this.milliseconds=newDate.getMilliseconds();this.seconds=newDate.getSeconds();this.minutes=newDate.getMinutes();this.hours=newDate.getHours();this.days=newDate.getDate();this.months=newDate.getMonth();this.years=newDate.getFullYear()};CronDate.prototype.fromString=function(str){let parsedDateUTCms=this.parseISOLocal(str);if(isNaN(parsedDateUTCms)){throw new TypeError("CronDate: Provided string value for CronDate could not be parsed as date.")}this.fromDate(new Date(parsedDateUTCms),true)};CronDate.prototype.increment=function(pattern,rerun){if(!rerun){this.seconds+=1}let origTime=this.getTime();this.milliseconds=0;let self=this,findNext=function(target,pattern,offset,override){let startPos=override===void 0?self[target]+offset:0+offset;for(let i=startPos;i<pattern[target].length;i++){if(pattern[target][i]){self[target]=i-offset;return true}}return false},resetPrevious=function(){while(doing>=0){findNext(toDo[doing][0],pattern,toDo[doing][2],0);doing--}};let toDo=[["seconds","minutes",0],["minutes","hours",0],["hours","days",0],["days","months",-1],["months","years",0]],doing=0;while(doing<5){if(!findNext(toDo[doing][0],pattern,toDo[doing][2])){this[toDo[doing][1]]++;resetPrevious()}doing++}while(!pattern.daysOfWeek[this.getDate(true).getDay()]){this.days+=1;doing=2;resetPrevious()}if(origTime!=self.getTime()){self=new CronDate(self);if(this.years>=4e3){return null}else{return self.increment(pattern,true)}}else{return this}};CronDate.prototype.getDate=function(internal){let offset=internal?0:this.UTCmsOffset;return new Date(this.years,this.months,this.days,this.hours,this.minutes,this.seconds,this.milliseconds-offset)};CronDate.prototype.getTime=function(internal){let offset=internal?0:this.UTCmsOffset;return new Date(this.years,this.months,this.days,this.hours,this.minutes,this.seconds,this.milliseconds-offset).getTime()};CronDate.prototype.parseISOLocal=function(s){let b=s.split(/\D/);if(b.length<6){return NaN}let year=parseInt(b[0],10),month=parseInt(b[1],10),day=parseInt(b[2],10),hour=parseInt(b[3],10),minute=parseInt(b[4],10),second=parseInt(b[5],10);if(isNaN(year)||isNaN(month)||isNaN(day)||isNaN(hour)||isNaN(minute)||isNaN(second)){return NaN}else{return new Date(year,month-1,day,hour,minute,second)}};function CronPattern(pattern){this.pattern=pattern;this.seconds=Array(60).fill(0);this.minutes=Array(60).fill(0);this.hours=Array(24).fill(0);this.days=Array(31).fill(0);this.months=Array(12).fill(0);this.daysOfWeek=Array(8).fill(0);this.parse()}CronPattern.prototype.parse=function(){if(!(typeof this.pattern==="string"||this.pattern.constructor===String)){throw new TypeError("CronPattern: Pattern has to be of type string.")}let parts=this.pattern.trim().replace(/\s+/g," ").split(" ");if(parts.length<5||parts.length>6){throw new TypeError("CronPattern: invalid configuration format ('"+this.pattern+"'), exacly five or six space separated parts required.")}if(parts.length===5){parts.unshift("0")}parts[4]=this.replaceAlphaMonths(parts[4]);parts[5]=this.replaceAlphaDays(parts[5]);this.throwAtIllegalCharacters(parts);this.partToArray("seconds",parts[0],0);this.partToArray("minutes",parts[1],0);this.partToArray("hours",parts[2],0);this.partToArray("days",parts[3],-1);this.partToArray("months",parts[4],-1);this.partToArray("daysOfWeek",parts[5],0);if(this.daysOfWeek[7]){this.daysOfWeek[0]=1}};CronPattern.prototype.partToArray=function(type,conf,valueIndexOffset){let i,split,arr=this[type];if(conf==="*"){for(i=0;i<arr.length;i++){arr[i]=1}return}split=conf.split(",");if(split.length>1){for(i=0;i<split.length;i++){this.partToArray(type,split[i],valueIndexOffset)}}else if(conf.indexOf("-")!==-1){this.handleRange(conf,type,valueIndexOffset)}else if(conf.indexOf("/")!==-1){this.handleStepping(conf,type,valueIndexOffset)}else{this.handleNumber(conf,type,valueIndexOffset)}};CronPattern.prototype.throwAtIllegalCharacters=function(parts){let reValidCron=/[^/*0-9,-]+/;for(let i=0;i<parts.length;i++){if(reValidCron.test(parts[i])){throw new TypeError("CronPattern: configuration entry "+i+" ("+parts[i]+") contains illegal characters.")}}};CronPattern.prototype.handleNumber=function(conf,type,valueIndexOffset){let i=parseInt(conf,10)+valueIndexOffset;if(i<0||i>=this[type].length){throw new TypeError("CronPattern: "+type+" value out of range: '"+conf+"'")}this[type][i]=1};CronPattern.prototype.handleRange=function(conf,type,valueIndexOffset){let split=conf.split("-");if(split.length!==2){throw new TypeError("CronPattern: Syntax error, illegal range: '"+conf+"'")}let lower=parseInt(split[0],10)+valueIndexOffset,upper=parseInt(split[1],10)+valueIndexOffset;if(isNaN(lower)){throw new TypeError("CronPattern: Syntax error, illegal lower range (NaN)")}else if(isNaN(upper)){throw new TypeError("CronPattern: Syntax error, illegal upper range (NaN)")}if(lower<0||upper>=this[type].length){throw new TypeError("CronPattern: Value out of range: '"+conf+"'")}if(lower>upper){throw new TypeError("CronPattern: From value is larger than to value: '"+conf+"'")}for(let i=lower;i<=upper;i++){this[type][i+valueIndexOffset]=1}};CronPattern.prototype.handleStepping=function(conf,type,valueIndexOffset){let split=conf.split("/");if(split.length!==2){throw new TypeError("CronPattern: Syntax error, illegal stepping: '"+conf+"'")}if(split[0]!=="*"){throw new TypeError("CronPattern: Syntax error, left part of / needs to be * : '"+conf+"'")}let steps=parseInt(split[1],10);if(isNaN(steps))throw new TypeError("CronPattern: Syntax error, illegal stepping: (NaN)");if(steps===0)throw new TypeError("CronPattern: Syntax error, illegal stepping: 0");if(steps>this[type].length)throw new TypeError("CronPattern: Syntax error, steps cannot be greater than maximum value of part ("+this[type].length+")");for(let i=0;i<this[type].length;i+=steps){this[type][i+valueIndexOffset]=1}};CronPattern.prototype.replaceAlphaDays=function(conf){return conf.replace(/sun/gi,"0").replace(/mon/gi,"1").replace(/tue/gi,"2").replace(/wed/gi,"3").replace(/thu/gi,"4").replace(/fri/gi,"5").replace(/sat/gi,"6")};CronPattern.prototype.replaceAlphaMonths=function(conf){return conf.replace(/jan/gi,"1").replace(/feb/gi,"2").replace(/mar/gi,"3").replace(/apr/gi,"4").replace(/may/gi,"5").replace(/jun/gi,"6").replace(/jul/gi,"7").replace(/aug/gi,"8").replace(/sep/gi,"9").replace(/oct/gi,"10").replace(/nov/gi,"11").replace(/dec/gi,"12")};const maxDelay=Math.pow(2,32-1)-1;function Cron(pattern,options,fn){let self=this;if(!(this instanceof Cron)){return new Cron(pattern,options,fn)}self.pattern=new CronPattern(pattern);if(typeof options==="function"){fn=options;options=void 0}this.options=this.processOptions(options);if(fn!==void 0){this.fn=fn;this.schedule()}return this}Cron.prototype.processOptions=function(options){if(options===void 0){options={}}options.paused=options.paused===void 0?false:options.paused;options.maxRuns=options.maxRuns===void 0?Infinity:options.maxRuns;options.kill=false;if(options.startAt){options.startAt=new CronDate(options.startAt,options.timezone)}if(options.stopAt){options.stopAt=new CronDate(options.stopAt,options.timezone)}return options};Cron.prototype.next=function(prev){prev=new CronDate(prev,this.options.timezone);let next=this._next(prev);return next?next.getDate():null};Cron.prototype.running=function(){let msLeft=this.msToNext(this.previousrun);let running=!this.options.paused&&this.fn!==void 0;return msLeft!==null&&running};Cron.prototype.previous=function(){return this.previousrun?this.previousrun.getDate():null};Cron.prototype._next=function(prev){if(this.options.startAt&&prev&&prev.getTime(true)<this.options.startAt.getTime(true)){prev=new CronDate(this.options.startAt,this.options.timezone)}let nextRun=new CronDate(prev,this.options.timezone).increment(this.pattern);if(nextRun===null||this.options.maxRuns<=0||this.options.kill||this.options.stopAt&&nextRun.getTime(true)>=this.options.stopAt.getTime(true)){return null}else{return nextRun}};Cron.prototype.msToNext=function(prev){prev=new CronDate(prev,this.options.timezone);let next=this._next(prev);if(next){return next.getTime(true)-prev.getTime(true)}else{return null}};Cron.prototype.stop=function(){this.options.kill=true;if(this.currentTimeout){clearTimeout(this.currentTimeout)}};Cron.prototype.pause=function(){return(this.options.paused=true)&&!this.options.kill};Cron.prototype.resume=function(){return!(this.options.paused=false)&&!this.options.kill};Cron.prototype.schedule=function(func){let self=this,waitMs=this.msToNext(self.previousrun),_maxDelay=self.maxDelay||maxDelay;if(waitMs>_maxDelay){waitMs=_maxDelay}if(func){self.fn=func}if(waitMs!==null){self.currentTimeout=setTimeout(function(){if(waitMs!==_maxDelay){if(!self.options.paused){self.options.maxRuns--;self.fn()}self.previousrun=new CronDate(void 0,self.options.timezone)}self.schedule()},waitMs)}return this};return Cron}); |
{ | ||
"name": "croner", | ||
"version": "4.0.64", | ||
"version": "4.0.65", | ||
"description": "Trigger functions in javascript using Cron syntax. No deps. All features.", | ||
@@ -24,3 +24,4 @@ "author": "Hexagon <github.com/hexagon>", | ||
"dist-legacy/*", | ||
"SECURITY.md" | ||
"SECURITY.md", | ||
"croner.png" | ||
], | ||
@@ -46,3 +47,4 @@ "keywords": [ | ||
"build:typings": "tsc", | ||
"build:cleanup": "(rm dist/croner.mjs || del dist\\croner.mjs)" | ||
"build:cleanup": "(rm dist/croner.mjs || del dist\\croner.mjs)", | ||
"build:docs": "jsdoc -d ./docs/ README.md ./src/croner.js ./src/date.js ./src/pattern.js ./src/timezone.js" | ||
}, | ||
@@ -69,2 +71,3 @@ "type": "module", | ||
"eslint": "^8.1.0", | ||
"jsdoc": "^3.6.7", | ||
"rollup": "^2.58.3", | ||
@@ -71,0 +74,0 @@ "typescript": "^4.4.4", |
<p align="center"> | ||
<img src="https://cdn.jsdelivr.net/gh/hexagon/croner@master/docs/croner.png" alt="Croner" width="150" height="108"><br> | ||
<img src="https://cdn.jsdelivr.net/gh/hexagon/croner@master/croner.png" alt="Croner" width="150" height="108"><br> | ||
Trigger functions in javascript using Cron syntax.<br><br>Try it live on <a href="https://jsfiddle.net/hexag0n/hoa8kwsb/">jsfiddle</a>.<br> | ||
@@ -4,0 +4,0 @@ </p> |
@@ -44,15 +44,2 @@ /* ------------------------------------------------------------------------------------ | ||
/** | ||
* @typedef {Function} CronJobStop - Stop current job | ||
* @returns {boolean} - If pause was successful | ||
* | ||
* @typedef {Function} CronJobResume - Resume current job | ||
* @returns {boolean} - If resume was successful | ||
* | ||
* @typedef {Object} CronJob - Cron job control functions | ||
* @property {CronJobStop} stop | ||
* @property {CronJobResume} pause | ||
* @property {Function} resume | ||
*/ | ||
/** | ||
* Many JS engines stores the delay as a 32-bit signed integer internally. | ||
@@ -72,16 +59,7 @@ * This causes an integer overflow when using delays larger than 2147483647, | ||
* | ||
* | ||
* @signature | ||
* @constructor | ||
* @param {string} pattern - Input pattern | ||
* @param {CronOptions | Function} [options] - Options | ||
* @param {CronOptions} [options] - Options | ||
* @param {Function} [fn] - Function to be run each iteration of pattern | ||
* @returns {Cron} | ||
* | ||
* @signature | ||
* @constructor | ||
* @param {string} pattern - Input pattern | ||
* @param {CronOptions | Function} [options] - Options | ||
* @param {Function} [fn] - Function to be run each iteration of pattern | ||
* @returns {CronJob} | ||
*/ | ||
@@ -112,3 +90,4 @@ function Cron (pattern, options, fn) { | ||
if( fn !== void 0 ) { | ||
this.schedule(fn); | ||
this.fn = fn; | ||
this.schedule(); | ||
} | ||
@@ -121,2 +100,4 @@ | ||
/** | ||
* Internal function that validates options, and sets defaults | ||
* @private | ||
* | ||
@@ -162,2 +143,14 @@ * @param {CronOptions} options | ||
/** | ||
* Is running? | ||
* @public | ||
* | ||
* @returns {Boolean} - Running or not | ||
*/ | ||
Cron.prototype.running = function () { | ||
let msLeft = this.msToNext(this.previousrun); | ||
let running = !this.options.paused && this.fn !== void 0; | ||
return msLeft !== null && running; | ||
}; | ||
/** | ||
* Return previous run time | ||
@@ -255,3 +248,3 @@ * @public | ||
* @param {Function} func - Function to be run each iteration of pattern | ||
* @returns {CronJob} | ||
* @returns {Cron} | ||
*/ | ||
@@ -274,2 +267,7 @@ Cron.prototype.schedule = function (func) { | ||
// Update function if passed | ||
if (func) { | ||
self.fn = func; | ||
} | ||
// All ok, go go! | ||
@@ -284,3 +282,3 @@ if ( waitMs !== null ) { | ||
self.options.maxRuns--; | ||
func(); | ||
self.fn(); | ||
} | ||
@@ -292,3 +290,3 @@ | ||
// Recurse | ||
self.schedule(func); | ||
self.schedule(); | ||
@@ -295,0 +293,0 @@ }, waitMs ); |
/** | ||
* @typedef {"seconds" | "minutes" | "hours" | "days" | "months" | "daysOfWeek"} CronPatternPart | ||
* @typedef {0 | -1} CronIndexOffset | ||
* Name for each part of the cron pattern | ||
* @typedef {("seconds" | "minutes" | "hours" | "days" | "months" | "daysOfWeek")} CronPatternPart | ||
*/ | ||
/** | ||
* Offset, 0 or -1. | ||
* | ||
* 0 for seconds,minutes and hours as they start on 1. | ||
* -1 on days and months, as the start on 0 | ||
* | ||
* @typedef {Number} CronIndexOffset | ||
*/ | ||
/** | ||
* Create a CronPattern instance from pattern string ('* * * * * *') | ||
@@ -79,3 +88,3 @@ * @constructor | ||
* @param {string} conf - Current pattern part - *, 0-1 etc | ||
* @param {CronIndexOffset} valueIndexOffset - 0 or -1. 0 for seconds,minutes, hours as they start on 1. -1 on days and months, as the start on 0 | ||
* @param {CronIndexOffset} valueIndexOffset | ||
*/ | ||
@@ -82,0 +91,0 @@ CronPattern.prototype.partToArray = function (type, conf, valueIndexOffset) { |
@@ -50,3 +50,2 @@ export default Cron; | ||
* | ||
* | ||
* @signature | ||
@@ -71,3 +70,2 @@ * @constructor | ||
* | ||
* | ||
* @signature | ||
@@ -92,9 +90,5 @@ * @constructor | ||
options: CronOptions; | ||
fn: Function; | ||
private processOptions; | ||
/** | ||
* | ||
* @param {CronOptions} options | ||
* @returns {CronOptions} | ||
*/ | ||
processOptions(options: CronOptions): CronOptions; | ||
/** | ||
* Find next runtime, based on supplied date. Strips milliseconds. | ||
@@ -107,2 +101,9 @@ * | ||
/** | ||
* Is running? | ||
* @public | ||
* | ||
* @returns {Boolean} - Running or not | ||
*/ | ||
public running(): boolean; | ||
/** | ||
* Return previous run time | ||
@@ -109,0 +110,0 @@ * @public |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
111370
20
1719
7