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.62 to 4.0.63

dist/croner.cjs

2

dist/croner.min.js

@@ -1,1 +0,1 @@

!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.Cron=e():t.Cron=e()}(this,(function(){return(()=>{"use strict";var t={d:(e,r)=>{for(var n in r)t.o(r,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:r[n]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e)},e={};t.d(e,{default:()=>o});function r(t,e){if(this.timezone=e,t&&t instanceof Date)this.fromDate(t);else if(void 0===t)this.fromDate(new Date);else if(t&&"string"==typeof t)this.fromString(t);else{if(!(t instanceof r))throw new TypeError("CronDate: Invalid type ("+typeof t+") passed as parameter to CronDate constructor");this.fromCronDate(t)}}function n(t){this.pattern=t,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()}r.prototype.fromDate=function(t,e){if(this.timezone){let r=t.getTime(),n=function(t,e){return new Date(t.toLocaleString("en-US",{timeZone:e}))}(t,this.timezone);e||(t=n),this.UTCmsOffset=n.getTime()-r}else this.UTCmsOffset=0;this.milliseconds=t.getMilliseconds(),this.seconds=t.getSeconds(),this.minutes=t.getMinutes(),this.hours=t.getHours(),this.days=t.getDate(),this.months=t.getMonth(),this.years=t.getFullYear()},r.prototype.fromCronDate=function(t){this.UTCmsOffset=t.UTCmsOffset,this.timezone=t.timezone;let e=new Date(t.years,t.months,t.days,t.hours,t.minutes,t.seconds,t.milliseconds);this.milliseconds=e.getMilliseconds(),this.seconds=e.getSeconds(),this.minutes=e.getMinutes(),this.hours=e.getHours(),this.days=e.getDate(),this.months=e.getMonth(),this.years=e.getFullYear()},r.prototype.fromString=function(t){let e=this.parseISOLocal(t);if(isNaN(e))throw new TypeError("CronDate: Provided string value for CronDate could not be parsed as date.");this.fromDate(new Date(e),!0)},r.prototype.increment=function(t,e){e||(this.seconds+=1);let n=this.getTime();this.milliseconds=0;let i=this,s=function(t,e,r,n){for(let s=void 0===n?i[t]+r:0+r;s<e[t].length;s++)if(e[t][s])return i[t]=s-r,!0;return!1},o=function(){for(;p>=0;)s(a[p][0],t,a[p][2],0),p--},a=[["seconds","minutes",0],["minutes","hours",0],["hours","days",0],["days","months",-1],["months","years",0]],p=0;for(;p<5;)s(a[p][0],t,a[p][2])||(this[a[p][1]]++,o()),p++;for(;!t.daysOfWeek[this.getDate(!0).getDay()];)this.days+=1,p=2,o();return n!=i.getTime()?(i=new r(i),this.years>=4e3?null:i.increment(t,!0)):this},r.prototype.getDate=function(t){let e=t?0:this.UTCmsOffset;return new Date(this.years,this.months,this.days,this.hours,this.minutes,this.seconds,this.milliseconds-e)},r.prototype.getTime=function(t){let e=t?0:this.UTCmsOffset;return new Date(this.years,this.months,this.days,this.hours,this.minutes,this.seconds,this.milliseconds-e).getTime()},r.prototype.parseISOLocal=function(t){let e=t.split(/\D/);if(e.length<6)return NaN;let r=parseInt(e[0],10),n=parseInt(e[1],10),i=parseInt(e[2],10),s=parseInt(e[3],10),o=parseInt(e[4],10),a=parseInt(e[5],10);return isNaN(r)||isNaN(n)||isNaN(i)||isNaN(s)||isNaN(o)||isNaN(a)?NaN:new Date(r,n-1,i,s,o,a)},n.prototype.parse=function(){if("string"!=typeof this.pattern&&this.pattern.constructor!==String)throw new TypeError("CronPattern: Pattern has to be of type string.");let t=this.pattern.trim().replace(/\s+/g," ").split(" ");if(t.length<5||t.length>6)throw new TypeError("CronPattern: invalid configuration format ('"+this.pattern+"'), exacly five or six space separated parts required.");5===t.length&&t.unshift("0"),t[4]=this.replaceAlphaMonths(t[4]),t[5]=this.replaceAlphaDays(t[5]),this.throwAtIllegalCharacters(t),this.partToArray("seconds",t[0],0),this.partToArray("minutes",t[1],0),this.partToArray("hours",t[2],0),this.partToArray("days",t[3],-1),this.partToArray("months",t[4],-1),this.partToArray("daysOfWeek",t[5],0),this.daysOfWeek[7]&&(this.daysOfWeek[0]=1)},n.prototype.partToArray=function(t,e,r){let n,i,s=this[t];if("*"!==e)if(i=e.split(","),i.length>1)for(n=0;n<i.length;n++)this.partToArray(t,i[n],r);else-1!==e.indexOf("-")?this.handleRange(e,t,r):-1!==e.indexOf("/")?this.handleStepping(e,t,r):this.handleNumber(e,t,r);else for(n=0;n<s.length;n++)s[n]=1},n.prototype.throwAtIllegalCharacters=function(t){let e=/[^/*0-9,-]+/;for(let r=0;r<t.length;r++)if(e.test(t[r]))throw new TypeError("CronPattern: configuration entry "+r+" ("+t[r]+") contains illegal characters.")},n.prototype.handleNumber=function(t,e,r){let n=parseInt(t,10)+r;if(n<0||n>=this[e].length)throw new TypeError("CronPattern: "+e+" value out of range: '"+t+"'");this[e][n]=1},n.prototype.handleRange=function(t,e,r){let n=t.split("-");if(2!==n.length)throw new TypeError("CronPattern: Syntax error, illegal range: '"+t+"'");let i=parseInt(n[0],10)+r,s=parseInt(n[1],10)+r;if(isNaN(i))throw new TypeError("CronPattern: Syntax error, illegal lower range (NaN)");if(isNaN(s))throw new TypeError("CronPattern: Syntax error, illegal upper range (NaN)");if(i<0||s>=this[e].length)throw new TypeError("CronPattern: Value out of range: '"+t+"'");if(i>s)throw new TypeError("CronPattern: From value is larger than to value: '"+t+"'");for(let t=i;t<=s;t++)this[e][t+r]=1},n.prototype.handleStepping=function(t,e,r){let n=t.split("/");if(2!==n.length)throw new TypeError("CronPattern: Syntax error, illegal stepping: '"+t+"'");if("*"!==n[0])throw new TypeError("CronPattern: Syntax error, left part of / needs to be * : '"+t+"'");let i=parseInt(n[1],10);if(isNaN(i))throw new TypeError("CronPattern: Syntax error, illegal stepping: (NaN)");if(0===i)throw new TypeError("CronPattern: Syntax error, illegal stepping: 0");if(i>this[e].length)throw new TypeError("CronPattern: Syntax error, steps cannot be greater than maximum value of part ("+this[e].length+")");for(let t=0;t<this[e].length;t+=i)this[e][t+r]=1},n.prototype.replaceAlphaDays=function(t){return t.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")},n.prototype.replaceAlphaMonths=function(t){return t.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 i=Math.pow(2,31)-1;function s(t,e,r){return this instanceof s?(this.pattern=new n(t),"function"==typeof e&&(r=e,e=void 0),this.options=this.processOptions(e),void 0!==r&&this.schedule(r),this):new s(t,e,r)}s.prototype.processOptions=function(t){return void 0===t&&(t={}),t.paused=void 0!==t.paused&&t.paused,t.maxRuns=void 0===t.maxRuns?1/0:t.maxRuns,t.kill=!1,t.startAt&&(t.startAt=new r(t.startAt,t.timezone)),t.stopAt&&(t.stopAt=new r(t.stopAt,t.timezone)),t},s.prototype.next=function(t){t=new r(t,this.options.timezone);let e=this._next(t);return e?e.getDate():null},s.prototype.previous=function(){return this.previousrun?this.previousrun.getDate():null},s.prototype._next=function(t){this.options.startAt&&t&&t.getTime(!0)<this.options.startAt.getTime(!0)&&(t=new r(this.options.startAt,this.options.timezone));let e=new r(t,this.options.timezone).increment(this.pattern);return null===e||this.options.maxRuns<=0||this.options.kill||this.options.stopAt&&e.getTime(!0)>=this.options.stopAt.getTime(!0)?null:e},s.prototype.msToNext=function(t){t=new r(t,this.options.timezone);let e=this._next(t);return e?e.getTime(!0)-t.getTime(!0):null},s.prototype.stop=function(){this.options.kill=!0,this.currentTimeout&&clearTimeout(this.currentTimeout)},s.prototype.pause=function(){return(this.options.paused=!0)&&!this.options.kill},s.prototype.resume=function(){return!(this.options.paused=!1)&&!this.options.kill},s.prototype.schedule=function(t){let e=this,n=this.msToNext(e.previousrun),s=e.maxDelay||i;return n>s&&(n=s),null!==n&&(e.currentTimeout=setTimeout((function(){n!==s&&(e.options.paused||(e.options.maxRuns--,t()),e.previousrun=new r(void 0,e.options.timezone)),e.schedule(t)}),n)),this};const o=s;return e.default})()}));
(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});
{
"name": "croner",
"version": "4.0.62",
"version": "4.0.63",
"description": "Trigger functions in javascript using Cron syntax. No deps. All features.",

@@ -40,14 +40,18 @@ "author": "Hexagon <github.com/hexagon>",

"test:lint:fix": "eslint --fix ./**/*.js ./**/*.cjs",
"build": "npm run test:lint && npm run build:typings && npm run build:webpack && npm run test:coverage",
"build:webpack": "webpack",
"build:typings": "tsc"
"build": "npm run build:precleanup && npm run test:lint && npm run build:typings && npm run build:dist && npm run build:minify && npm run build:cleanup && npm run test:coverage && npm run test:dist",
"build:precleanup": "(rm -rf types/* || del /Q types\\*) && (rm -rf dist/* || del /Q dist\\*)",
"build:dist": "rollup -c ./rollup.config.js",
"build:minify": "uglifyjs dist/croner.cjs --source-map -o dist/croner.min.js && uglifyjs dist/croner.mjs --source-map -o dist/croner.min.mjs",
"build:typings": "tsc",
"build:cleanup": "(rm dist/croner.mjs || del dist\\croner.mjs)"
},
"type": "module",
"main": "./dist-legacy/croner.cjs",
"main": "./dist/croner.cjs",
"browser": "./dist/croner.min.js",
"module": "./src/croner.js",
"types": "types/croner.d.ts",
"exports": {
".": {
"import": "./src/croner.js",
"require": "./dist-legacy/croner.cjs",
"require": "./dist/croner.cjs",
"browser": "./dist/croner.min.js"

@@ -61,12 +65,11 @@ },

},
"types": "types/croner.d.ts",
"devDependencies": {
"c8": "^7.10.0",
"eslint": "^8.1.0",
"rollup": "^2.58.1",
"typescript": "^4.4.4",
"uvu": "^0.5.2",
"webpack": "^5.59.1",
"webpack-cli": "^4.9.1"
"uglify-js": "^3.14.2",
"uvu": "^0.5.2"
},
"license": "MIT"
}

@@ -25,8 +25,8 @@ export type CronPatternPart = "seconds" | "minutes" | "hours" | "days" | "months" | "daysOfWeek";

pattern: string;
seconds: any[];
minutes: any[];
hours: any[];
days: any[];
months: any[];
daysOfWeek: any[];
seconds: any;
minutes: any;
hours: any;
days: any;
months: any;
daysOfWeek: any;
private parse;

@@ -33,0 +33,0 @@ private partToArray;

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