Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

croner

Package Overview
Dependencies
Maintainers
1
Versions
228
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

croner - npm Package Compare versions

Comparing version 4.0.66 to 4.0.67

2

dist/croner.min.js

@@ -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.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});
(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&&!fromLocal){date=convertTZ(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;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 targetDate=new Date(this.years,this.months,this.days,this.hours,this.minutes,this.seconds,this.milliseconds);if(internal||!this.timezone){return targetDate}else{let offset=convertTZ(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(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,func){let self=this;if(!(this instanceof Cron)){return new Cron(pattern,options,func)}self.pattern=new CronPattern(pattern);if(typeof options==="function"){func=options;options=void 0}this.options=this.processOptions(options);if(func!==void 0){this.fn=func;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.66",
"version": "4.0.67",
"description": "Trigger functions in javascript using Cron syntax. No deps. All features.",

@@ -5,0 +5,0 @@ "author": "Hexagon <github.com/hexagon>",

@@ -16,3 +16,3 @@ <p align="center">

* Works in browsers as standalone, UMD or ES-module.
* **Experimental feature:** Schedule in other timezones than default
* **Experimental feature:** Schedule in specific target timezones
* Includes [TypeScript](https://www.typescriptlang.org/) typings

@@ -78,5 +78,10 @@

```
## Documentation
## Signature
Full documentation available at [hexagon.github.io/croner](https://hexagon.github.io/croner/Cron.html).
The short version:
### Signature
Cron takes three arguments

@@ -107,3 +112,3 @@

### Options
#### Options

@@ -118,3 +123,3 @@ | Key | Default value | Data type | Remarks |

### Pattern
#### Pattern

@@ -144,5 +149,5 @@ ```javascript

## Examples
### Examples
### Expressions
#### Expressions
```javascript

@@ -156,3 +161,3 @@ // Run a function according to pattern

### Find dates
#### Find dates
```javascript

@@ -169,3 +174,3 @@ // Find next month

### With options
#### With options
```javascript

@@ -187,3 +192,3 @@

### Job controls
#### Job controls
```javascript

@@ -190,0 +195,0 @@ let job = Cron('* * * * * *', () => {

@@ -38,4 +38,4 @@ /* ------------------------------------------------------------------------------------

* @property {number} [maxRuns] - Maximum nuber of executions
* @property {string | Date} [startAt] - When to start running
* @property {string | Date} [stopAt] - When to stop running
* @property {string | date} [startAt] - When to start running
* @property {string | date} [stopAt] - When to stop running
* @property {string} [timezone] - Time zone in Europe/Stockholm format

@@ -62,6 +62,6 @@ */

* @param {CronOptions} [options] - Options
* @param {Function} [fn] - Function to be run each iteration of pattern
* @param {Function} [func] - Function to be run each iteration of pattern
* @returns {Cron}
*/
function Cron (pattern, options, fn) {
function Cron (pattern, options, func) {
let self = this;

@@ -71,3 +71,3 @@

if( !(this instanceof Cron) ) {
return new Cron(pattern, options, fn);
return new Cron(pattern, options, func);
}

@@ -80,3 +80,3 @@

if( typeof options === "function" ) {
fn = options;
func = options;
options = void 0;

@@ -91,4 +91,4 @@ }

*/
if( fn !== void 0 ) {
this.fn = fn;
if( func !== void 0 ) {
this.fn = func;
this.schedule();

@@ -134,4 +134,4 @@ }

*
* @param {Date} [prev] - Input pattern
* @returns {Date | null} - Next run time
* @param {date} [prev] - Input pattern
* @returns {date | null} - Next run time
*/

@@ -148,3 +148,3 @@ Cron.prototype.next = function (prev) {

*
* @returns {Boolean} - Running or not
* @returns {boolean} - Running or not
*/

@@ -161,3 +161,3 @@ Cron.prototype.running = function () {

*
* @returns {Date | null} - Previous run time
* @returns {date | null} - Previous run time
*/

@@ -201,3 +201,3 @@ Cron.prototype.previous = function () {

*
* @param {CronDate | null} [prev=new CronDate()] - Starting date, defaults to now
* @param {date} [prev] - Starting date, defaults to now
* @returns {number | null}

@@ -204,0 +204,0 @@ */

@@ -6,4 +6,4 @@ import convertTZ from "./timezone.js";

*
* @param {date|string} [date] - Input date, if using string representation ISO 8001 (2015-11-24T19:40:00) local timezone is expected
* @param {string} [timezone] - String representation of timezone in Europe/Stockholm format.
* @param {CronDate|date|string} [date] - Input date, if using string representation ISO 8001 (2015-11-24T19:40:00) local timezone is expected
* @param {string} [timezone] - String representation of target timezone in Europe/Stockholm format.
*/

@@ -32,17 +32,8 @@ function CronDate (date, timezone) {

* @param {date} date - Input date
* @param {boolean} [fromLocal] - Input date already in target timezone
* @param {boolean} fromLocal - Target already in local time
*/
CronDate.prototype.fromDate = function (date, fromLocal) {
// This is the only way in for a pure date object, so this is where timezone should be applied
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;
if (this.timezone && !fromLocal) {
date = convertTZ(date, this.timezone);
}

@@ -57,3 +48,2 @@

this.years = date.getFullYear();
};

@@ -69,3 +59,2 @@

this.UTCmsOffset = date.UTCmsOffset;
this.timezone = date.timezone;

@@ -234,4 +223,9 @@

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);
let targetDate = new Date(this.years, this.months, this.days, this.hours, this.minutes, this.seconds, this.milliseconds);
if (internal || !this.timezone) {
return targetDate;
} else {
let offset = convertTZ(targetDate, this.timezone).getTime()-targetDate.getTime();
return new Date(targetDate.getTime()-offset);
}
};

@@ -247,4 +241,3 @@

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();
return this.getDate(internal).getTime();
};

@@ -251,0 +244,0 @@

@@ -21,7 +21,7 @@ export default Cron;

*/
startAt?: string | Date;
startAt?: string | any;
/**
* - When to stop running
*/
stopAt?: string | Date;
stopAt?: string | any;
/**

@@ -38,6 +38,6 @@ * - Time zone in Europe/Stockholm format

* @param {CronOptions} [options] - Options
* @param {Function} [fn] - Function to be run each iteration of pattern
* @param {Function} [func] - Function to be run each iteration of pattern
* @returns {Cron}
*/
export function Cron(pattern: string, options?: CronOptions, fn?: Function): Cron;
export function Cron(pattern: string, options?: CronOptions, func?: Function): Cron;
export class Cron {

@@ -50,6 +50,6 @@ /**

* @param {CronOptions} [options] - Options
* @param {Function} [fn] - Function to be run each iteration of pattern
* @param {Function} [func] - Function to be run each iteration of pattern
* @returns {Cron}
*/
constructor(pattern: string, options?: CronOptions, fn?: Function);
constructor(pattern: string, options?: CronOptions, func?: Function);
/** @type {CronPattern} */

@@ -64,6 +64,6 @@ pattern: CronPattern;

*
* @param {Date} [prev] - Input pattern
* @returns {Date | null} - Next run time
* @param {date} [prev] - Input pattern
* @returns {date | null} - Next run time
*/
next(prev?: Date): Date | null;
next(prev?: any): any | null;
/**

@@ -73,3 +73,3 @@ * Is running?

*
* @returns {Boolean} - Running or not
* @returns {boolean} - Running or not
*/

@@ -81,5 +81,5 @@ public running(): boolean;

*
* @returns {Date | null} - Previous run time
* @returns {date | null} - Previous run time
*/
public previous(): Date | null;
public previous(): any | null;
private _next;

@@ -90,6 +90,6 @@ /**

*
* @param {CronDate | null} [prev=new CronDate()] - Starting date, defaults to now
* @param {date} [prev] - Starting date, defaults to now
* @returns {number | null}
*/
public msToNext(prev?: CronDate | null): number | null;
public msToNext(prev?: any): number | null;
/**

@@ -124,2 +124,1 @@ * Stop execution

import { CronPattern } from "./pattern.js";
import { CronDate } from "./date.js";

@@ -5,4 +5,4 @@ /**

*
* @param {date|string} [date] - Input date, if using string representation ISO 8001 (2015-11-24T19:40:00) local timezone is expected
* @param {string} [timezone] - String representation of timezone in Europe/Stockholm format.
* @param {CronDate|date|string} [date] - Input date, if using string representation ISO 8001 (2015-11-24T19:40:00) local timezone is expected
* @param {string} [timezone] - String representation of target timezone in Europe/Stockholm format.
*/

@@ -15,4 +15,4 @@ export function CronDate(date?: any, timezone?: string): void;

*
* @param {date|string} [date] - Input date, if using string representation ISO 8001 (2015-11-24T19:40:00) local timezone is expected
* @param {string} [timezone] - String representation of timezone in Europe/Stockholm format.
* @param {CronDate|date|string} [date] - Input date, if using string representation ISO 8001 (2015-11-24T19:40:00) local timezone is expected
* @param {string} [timezone] - String representation of target timezone in Europe/Stockholm format.
*/

@@ -22,3 +22,2 @@ constructor(date?: any, timezone?: string);

private fromDate;
UTCmsOffset: any;
milliseconds: any;

@@ -25,0 +24,0 @@ seconds: any;

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

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc