bella-scheduler
Advanced tools
Comparing version 1.1.6 to 1.2.0
/** | ||
* bella-scheduler | ||
* v1.1.6 | ||
* built: Tue, 21 Feb 2017 06:16:52 GMT | ||
* git: https://github.com/ndaidong/bella-scheduler | ||
* author: @ndaidong | ||
* bella-scheduler@1.2.0 | ||
* built on: Sun, 04 Jun 2017 07:54:33 GMT | ||
* repository: https://github.com/ndaidong/bella-scheduler | ||
* maintainer: @ndaidong | ||
* License: MIT | ||
**/ | ||
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); | ||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } | ||
;(function (name, factory) { | ||
if (typeof module !== 'undefined' && module.exports) { | ||
module.exports = factory(); | ||
} else { | ||
var root = window || {}; | ||
if (root.define && root.define.amd) { | ||
root.define([], factory); | ||
} else if (root.exports) { | ||
root.exports = factory(); | ||
} else { | ||
root[name] = factory(); | ||
(function (global, factory) { | ||
typeof exports === 'object' && typeof module !== 'undefined' ? factory() : | ||
typeof define === 'function' && define.amd ? define(factory) : | ||
(factory()); | ||
}(this, (function () { 'use strict'; | ||
var classCallCheck = function (instance, Constructor) { | ||
if (!(instance instanceof Constructor)) { | ||
throw new TypeError("Cannot call a class as a function"); | ||
} | ||
} | ||
})('scheduler', function () { | ||
var MAX_TIMEOUT = 2147483647; | ||
var isUndefined = function isUndefined(v) { | ||
return v === undefined; | ||
}; | ||
var createClass = function () { | ||
function defineProperties(target, props) { | ||
for (var i = 0; i < props.length; i++) { | ||
var descriptor = props[i]; | ||
descriptor.enumerable = descriptor.enumerable || false; | ||
descriptor.configurable = true; | ||
if ("value" in descriptor) descriptor.writable = true; | ||
Object.defineProperty(target, descriptor.key, descriptor); | ||
} | ||
} | ||
return function (Constructor, protoProps, staticProps) { | ||
if (protoProps) defineProperties(Constructor.prototype, protoProps); | ||
if (staticProps) defineProperties(Constructor, staticProps); | ||
return Constructor; | ||
}; | ||
}(); | ||
var MAX_NUMBER = Number.MAX_SAFE_INTEGER; | ||
var ob2Str = function ob2Str(val) { | ||
return {}.toString.call(val); | ||
}; | ||
var isUndefined = function isUndefined(val) { | ||
return ob2Str(val) === '[object Undefined]'; | ||
}; | ||
var hasProperty = function hasProperty(ob, k) { | ||
@@ -39,20 +45,52 @@ if (!ob || !k) { | ||
} | ||
var r = true; | ||
if (isUndefined(ob[k])) { | ||
r = k in ob; | ||
return Object.prototype.hasOwnProperty.call(ob, k); | ||
}; | ||
var random = function random(min, max) { | ||
if (!min || min < 0) { | ||
min = 0; | ||
} | ||
return r; | ||
if (!max) { | ||
max = MAX_NUMBER; | ||
} | ||
if (min === max) { | ||
return max; | ||
} | ||
if (min > max) { | ||
min = Math.min(min, max); | ||
max = Math.max(min, max); | ||
} | ||
var offset = min; | ||
var range = max - min + 1; | ||
return Math.floor(Math.random() * range) + offset; | ||
}; | ||
var createId = function createId(leng) { | ||
var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; | ||
var lc = 'abcdefghijklmnopqrstuvwxyz'; | ||
var uc = lc.toUpperCase(); | ||
var nb = '0123456789'; | ||
var cand = [lc, uc, nb].join('').split('').sort(function () { | ||
return Math.random() > 0.5; | ||
}).join(''); | ||
var t = cand.length; | ||
var ln = Math.max(leng || 32, prefix.length); | ||
var s = prefix; | ||
while (s.length < ln) { | ||
var k = random(0, t); | ||
s += cand.charAt(k) || ''; | ||
} | ||
return s; | ||
}; | ||
var time = function time() { | ||
return Date.now(); | ||
}; | ||
var MAX_TIMEOUT = 2147483647; | ||
var BellaMap = function () { | ||
function BellaMap() { | ||
_classCallCheck(this, BellaMap); | ||
classCallCheck(this, BellaMap); | ||
this.size = 0; | ||
this.data = {}; | ||
} | ||
_createClass(BellaMap, [{ | ||
createClass(BellaMap, [{ | ||
key: 'set', | ||
value: function set(k, v) { | ||
value: function set$$1(k, v) { | ||
var d = this.data; | ||
@@ -67,3 +105,3 @@ if (!hasProperty(d, k)) { | ||
key: 'get', | ||
value: function get(k) { | ||
value: function get$$1(k) { | ||
var d = this.data; | ||
@@ -97,17 +135,6 @@ return d[k] || null; | ||
}]); | ||
return BellaMap; | ||
}(); | ||
var TaskList = new BellaMap(); | ||
var checkTimer; | ||
var now = function now() { | ||
return new Date(); | ||
}; | ||
var time = function time() { | ||
return now().getTime(); | ||
}; | ||
var getIndex = function getIndex(arr, item) { | ||
@@ -123,23 +150,2 @@ var r = -1; | ||
}; | ||
var createId = function createId(leng, prefix) { | ||
var rn = function rn() { | ||
return Math.random().toString(36).slice(2); | ||
}; | ||
var a = []; | ||
while (a.length < 10) { | ||
a.push(rn()); | ||
} | ||
var r = a.join(''); | ||
var t = r.length; | ||
var px = prefix || ''; | ||
var ln = Math.max(leng || 32, px.length); | ||
var s = px; | ||
while (s.length < ln) { | ||
var k = Math.floor(Math.random() * t); | ||
s += r.charAt(k) || ''; | ||
} | ||
return s; | ||
}; | ||
var getNextDay = function getNextDay(t, tday) { | ||
@@ -150,8 +156,5 @@ var d = new Date(t); | ||
}; | ||
var getDT1 = function getDT1(mat, lastTick) { | ||
var delta = 0; | ||
var passed = time() - lastTick; | ||
if (!mat) { | ||
@@ -174,3 +177,2 @@ return -1; | ||
}; | ||
var getDT2 = function getDT2(mat) { | ||
@@ -180,9 +182,6 @@ var wds = 'sun|mon|tue|wed|thu|fri|sat'.split('|'); | ||
var wday = today.getDay(); | ||
var awd = wds[wday]; | ||
var awi = getIndex(awd, wds); | ||
var dd = mat[1].toLowerCase(); | ||
var ddi = getIndex(dd, wds); | ||
var hh = 0; | ||
@@ -200,10 +199,7 @@ var ii = 0; | ||
} | ||
today.setHours(hh); | ||
today.setMinutes(ii); | ||
today.setSeconds(ss); | ||
var ttime = today.getTime(); | ||
var ctime = time(); | ||
var nextDay = today; | ||
@@ -216,8 +212,5 @@ if (ddi < awi || ctime > ttime) { | ||
nextDay.setSeconds(ss); | ||
return nextDay.getTime() - ctime; | ||
}; | ||
var getDT3 = function getDT3(mat) { | ||
var yy = mat[1] === '*' ? '*' : parseInt(mat[1], 10); | ||
@@ -229,10 +222,7 @@ var mm = mat[2] === '*' ? '*' : parseInt(mat[2], 10); | ||
var ss = mat[6] === '*' ? '*' : parseInt(mat[6], 10); | ||
var today = new Date(); | ||
var ayy = today.getFullYear(); | ||
if (yy !== '*' && yy < ayy) { | ||
return -1; | ||
} | ||
var tyy = yy; | ||
@@ -244,7 +234,5 @@ var tmm = mm; | ||
var tss = ss; | ||
if (yy === '*') { | ||
tyy = ayy; | ||
} | ||
var amm = today.getMonth() + 1; | ||
@@ -266,3 +254,2 @@ if (mm === '*') { | ||
} | ||
var gd = new Date(tyy, tmm - 1, tdd, thh, tii, tss); | ||
@@ -272,3 +259,2 @@ var ttime = gd.getTime(); | ||
var delta = ttime - ctime; | ||
if (delta < 0) { | ||
@@ -295,3 +281,2 @@ if (ii === '*') { | ||
} | ||
if (delta < 0) { | ||
@@ -304,3 +289,2 @@ if (mm === '*') { | ||
} | ||
if (delta < 0) { | ||
@@ -313,12 +297,8 @@ if (yy === '*') { | ||
} | ||
return delta; | ||
}; | ||
var getDelayTime = function getDelayTime(pat, lastTick) { | ||
var pt1 = /^(\d+)\s?(d|h|m|s)+$/i; | ||
var pt2 = /^(sun|mon|tue|wed|thu|fri|sat)+\w*\s+(\d+)(:\d+)?(:\d+)?$/i; | ||
var pt3 = /^(\*|\d+)\s+(\*|\d+)\s+(\*|\d+)\s+(\*|\d+)\s+(\*|\d+)\s+(\d+)$/i; | ||
var mat = pat.match(pt1); | ||
@@ -328,3 +308,2 @@ if (mat) { | ||
} | ||
mat = pat.match(pt2); | ||
@@ -334,3 +313,2 @@ if (mat) { | ||
} | ||
mat = pat.match(pt3); | ||
@@ -340,6 +318,4 @@ if (mat) { | ||
} | ||
return -1; | ||
}; | ||
var execute = function execute(task) { | ||
@@ -351,3 +327,2 @@ task.fn(); | ||
} | ||
var t = time(); | ||
@@ -358,3 +333,2 @@ task.lastTick = t; | ||
}; | ||
var updateTimer = function updateTimer() { | ||
@@ -365,36 +339,33 @@ if (checkTimer) { | ||
if (TaskList.size > 0) { | ||
(function () { | ||
var minDelay = MAX_TIMEOUT; | ||
var candidates = []; | ||
TaskList.all().forEach(function (task) { | ||
var id = task.id; | ||
var delay = getDelayTime(task.time, task.lastTick); | ||
if (delay < 0) { | ||
TaskList.remove(id); | ||
} else if (delay === 0) { | ||
task.delay = 0; | ||
candidates.push(task); | ||
} else { | ||
task.delay = delay; | ||
TaskList.set(id, task); | ||
if (delay <= minDelay) { | ||
minDelay = delay; | ||
var arr = []; | ||
arr = candidates.concat(task); | ||
candidates = arr.filter(function (item) { | ||
return item.delay <= minDelay; | ||
}); | ||
} | ||
var minDelay = MAX_TIMEOUT; | ||
var candidates = []; | ||
TaskList.all().forEach(function (task) { | ||
var id = task.id; | ||
var delay = getDelayTime(task.time, task.lastTick); | ||
if (delay < 0) { | ||
TaskList.remove(id); | ||
} else if (delay === 0) { | ||
task.delay = 0; | ||
candidates.push(task); | ||
} else { | ||
task.delay = delay; | ||
TaskList.set(id, task); | ||
if (delay <= minDelay) { | ||
minDelay = delay; | ||
var arr = []; | ||
arr = candidates.concat(task); | ||
candidates = arr.filter(function (item) { | ||
return item.delay <= minDelay; | ||
}); | ||
} | ||
}); | ||
if (candidates.length) { | ||
checkTimer = setTimeout(function () { | ||
candidates.map(execute); | ||
setTimeout(updateTimer, 1); | ||
}, minDelay); | ||
} | ||
})(); | ||
}); | ||
if (candidates.length) { | ||
checkTimer = setTimeout(function () { | ||
candidates.map(execute); | ||
setTimeout(updateTimer, 1); | ||
}, minDelay); | ||
} | ||
} | ||
}; | ||
var register = function register(t, fn, once) { | ||
@@ -417,3 +388,2 @@ var rep = once ? 0 : 1; | ||
}; | ||
var unregister = function unregister(id) { | ||
@@ -426,4 +396,3 @@ if (TaskList.remove(id)) { | ||
}; | ||
return { | ||
module.exports = { | ||
yearly: function yearly(t, fn) { | ||
@@ -451,5 +420,4 @@ var pt = '* ' + t; | ||
}, | ||
unregister: unregister | ||
}; | ||
}); | ||
}))); |
@@ -1,2 +0,2 @@ | ||
// bella-scheduler@1.1.6, by @ndaidong - built on Tue, 21 Feb 2017 06:16:52 GMT - published under MIT license | ||
;var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor)}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor}}();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}};(function(name,factory){if(typeof module!=="undefined"&&module.exports){module.exports=factory()}else{var root=window||{};if(root.define&&root.define.amd){root.define([],factory)}else if(root.exports){root.exports=factory()}else{root[name]=factory()}}}("scheduler",function(){var MAX_TIMEOUT=2147483647;var isUndefined=function isUndefined(v){return v===undefined};var hasProperty=function hasProperty(ob,k){if(!ob||!k){return false}var r=true;if(isUndefined(ob[k])){r=k in ob}return r};var BellaMap=function(){function BellaMap(){_classCallCheck(this,BellaMap);this.size=0;this.data={}}_createClass(BellaMap,[{key:"set",value:function set(k,v){var d=this.data;if(!hasProperty(d,k)){this.size++}d[k]=v;return this}},{key:"get",value:function get(k){var d=this.data;return d[k]||null}},{key:"all",value:function all(){var d=this.data;var a=[];for(var k in d){if(!isUndefined(d[k])){a.push(d[k])}}return a}},{key:"remove",value:function remove(k){var d=this.data;if(!hasProperty(d,k)){return false}d[k]=null;delete d[k];this.size--;return true}}]);return BellaMap}();var TaskList=new BellaMap;var checkTimer;var now=function now(){return new Date};var time=function time(){return now().getTime()};var getIndex=function getIndex(arr,item){var r=-1;for(var i=0;i<arr.length;i++){if(arr[i]===item){r=i;break}}return r};var createId=function createId(leng,prefix){var rn=function rn(){return Math.random().toString(36).slice(2)};var a=[];while(a.length<10){a.push(rn())}var r=a.join("");var t=r.length;var px=prefix||"";var ln=Math.max(leng||32,px.length);var s=px;while(s.length<ln){var k=Math.floor(Math.random()*t);s+=r.charAt(k)||""}return s};var getNextDay=function getNextDay(t,tday){var d=new Date(t);d.setDate(d.getDate()+tday+7-d.getDay()%7);return d};var getDT1=function getDT1(mat,lastTick){var delta=0;var passed=time()-lastTick;if(!mat){return-1}var v=parseInt(mat[1],10);var s=mat[2];if(s==="s"){delta=1e3}else if(s==="m"){delta=6e4}else if(s==="h"){delta=6e4*60}else if(s==="d"){delta=6e4*60*24}delta*=v;return delta-passed};var getDT2=function getDT2(mat){var wds="sun|mon|tue|wed|thu|fri|sat".split("|");var today=new Date;var wday=today.getDay();var awd=wds[wday];var awi=getIndex(awd,wds);var dd=mat[1].toLowerCase();var ddi=getIndex(dd,wds);var hh=0;var ii=0;var ss=0;if(mat[2]){hh=parseInt(mat[2],10)}if(mat[3]){ii=parseInt(mat[3].replace(/\D/gi,""),10)}if(mat[4]){ss=parseInt(mat[4].replace(/\D/gi,""),10)}today.setHours(hh);today.setMinutes(ii);today.setSeconds(ss);var ttime=today.getTime();var ctime=time();var nextDay=today;if(ddi<awi||ctime>ttime){nextDay=getNextDay(today,awi)}nextDay.setHours(hh);nextDay.setMinutes(ii);nextDay.setSeconds(ss);return nextDay.getTime()-ctime};var getDT3=function getDT3(mat){var yy=mat[1]==="*"?"*":parseInt(mat[1],10);var mm=mat[2]==="*"?"*":parseInt(mat[2],10);var dd=mat[3]==="*"?"*":parseInt(mat[3],10);var hh=mat[4]==="*"?"*":parseInt(mat[4],10);var ii=mat[5]==="*"?"*":parseInt(mat[5],10);var ss=mat[6]==="*"?"*":parseInt(mat[6],10);var today=new Date;var ayy=today.getFullYear();if(yy!=="*"&&yy<ayy){return-1}var tyy=yy;var tmm=mm;var tdd=dd;var thh=hh;var tii=ii;var tss=ss;if(yy==="*"){tyy=ayy}var amm=today.getMonth()+1;if(mm==="*"){tmm=amm}var add=today.getDate();if(dd==="*"){tdd=add}var ahh=today.getHours();if(hh==="*"){thh=ahh}var aii=today.getMinutes();if(ii==="*"){tii=aii}var gd=new Date(tyy,tmm-1,tdd,thh,tii,tss);var ttime=gd.getTime();var ctime=time();var delta=ttime-ctime;if(delta<0){if(ii==="*"){gd.setMinutes(tii+1);ttime=gd.getTime();delta=ttime-ctime}}if(delta<0){if(hh==="*"){gd.setHours(thh+1);ttime=gd.getTime();delta=ttime-ctime}}if(delta<0){if(dd==="*"){gd.setDate(tdd+1);ttime=gd.getTime();delta=ttime-ctime}}if(delta<0){if(mm==="*"){gd.setMonth(tmm);ttime=gd.getTime();delta=ttime-ctime}}if(delta<0){if(yy==="*"){gd.setFullYear(tyy+1);ttime=gd.getTime();delta=ttime-ctime}}return delta};var getDelayTime=function getDelayTime(pat,lastTick){var pt1=/^(\d+)\s?(d|h|m|s)+$/i;var pt2=/^(sun|mon|tue|wed|thu|fri|sat)+\w*\s+(\d+)(:\d+)?(:\d+)?$/i;var pt3=/^(\*|\d+)\s+(\*|\d+)\s+(\*|\d+)\s+(\*|\d+)\s+(\*|\d+)\s+(\d+)$/i;var mat=pat.match(pt1);if(mat){return getDT1(mat,lastTick)}mat=pat.match(pt2);if(mat){return getDT2(mat)}mat=pat.match(pt3);if(mat){return getDT3(mat)}return-1};var execute=function execute(task){task.fn();var id=task.id;if(!task.repeat){return TaskList.remove(id)}var t=time();task.lastTick=t;TaskList.set(id,task);return true};var updateTimer=function updateTimer(){if(checkTimer){clearTimeout(checkTimer)}if(TaskList.size>0){(function(){var minDelay=MAX_TIMEOUT;var candidates=[];TaskList.all().forEach(function(task){var id=task.id;var delay=getDelayTime(task.time,task.lastTick);if(delay<0){TaskList.remove(id)}else if(delay===0){task.delay=0;candidates.push(task)}else{task.delay=delay;TaskList.set(id,task);if(delay<=minDelay){minDelay=delay;var arr=[];arr=candidates.concat(task);candidates=arr.filter(function(item){return item.delay<=minDelay})}}});if(candidates.length){checkTimer=setTimeout(function(){candidates.map(execute);setTimeout(updateTimer,1)},minDelay)}}())}};var register=function register(t,fn,once){var rep=once?0:1;var n=time();var id=createId(32);var task={id:id,fn:fn,time:t,repeat:rep,createdAt:n,lastTick:n,delay:0};TaskList.set(id,task);updateTimer();return id};var unregister=function unregister(id){if(TaskList.remove(id)){updateTimer();return true}return false};return{yearly:function yearly(t,fn){var pt="* "+t;return register(pt,fn)},monthly:function monthly(t,fn){var pt="* * "+t;return register(pt,fn)},daily:function daily(t,fn){var pt="* * * "+t;return register(pt,fn)},hourly:function hourly(t,fn){var pt="* * * * "+t;return register(pt,fn)},every:function every(t,fn){return register(t,fn)},once:function once(t,fn){return register(t,fn,1)},unregister:unregister}})); | ||
// bella-scheduler@1.2.0, by @ndaidong - built on Sun, 04 Jun 2017 07:54:33 GMT - published under MIT license | ||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t():"function"==typeof define&&define.amd?define(t):t()}(0,function(){"use strict";var e,t=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},n=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),r=Number.MAX_SAFE_INTEGER,a=function(e){return{}.toString.call(e)},i=function(e){return"[object Undefined]"===a(e)},u=function(e,t){return!(!e||!t)&&Object.prototype.hasOwnProperty.call(e,t)},o=function(e,t){if((!e||e<0)&&(e=0),t||(t=r),e===t)return t;e>t&&(e=Math.min(e,t),t=Math.max(e,t));var n=e,a=t-e+1;return Math.floor(Math.random()*a)+n},s=function(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n="abcdefghijklmnopqrstuvwxyz",r=[n,n.toUpperCase(),"0123456789"].join("").split("").sort(function(){return Math.random()>.5}).join(""),a=r.length,i=Math.max(e||32,t.length),u=t;u.length<i;){var s=o(0,a);u+=r.charAt(s)||""}return u},f=function(){return Date.now()},c=new(function(){function e(){t(this,e),this.size=0,this.data={}}return n(e,[{key:"set",value:function(e,t){var n=this.data;return u(n,e)||this.size++,n[e]=t,this}},{key:"get",value:function(e){return this.data[e]||null}},{key:"all",value:function(){var e=this.data,t=[];for(var n in e)i(e[n])||t.push(e[n]);return t}},{key:"remove",value:function(e){var t=this.data;return!!u(t,e)&&(t[e]=null,delete t[e],this.size--,!0)}}]),e}()),l=function(e,t){for(var n=-1,r=0;r<e.length;r++)if(e[r]===t){n=r;break}return n},d=function(e,t){var n=new Date(e);return n.setDate(n.getDate()+t+7-n.getDay()%7),n},v=function(e,t){var n=0,r=f()-t;if(!e)return-1;var a=parseInt(e[1],10),i=e[2];return"s"===i?n=1e3:"m"===i?n=6e4:"h"===i?n=36e5:"d"===i&&(n=864e5),(n*=a)-r},h=function(e){var t="sun|mon|tue|wed|thu|fri|sat".split("|"),n=new Date,r=t[n.getDay()],a=l(r,t),i=e[1].toLowerCase(),u=l(i,t),o=0,s=0,c=0;e[2]&&(o=parseInt(e[2],10)),e[3]&&(s=parseInt(e[3].replace(/\D/gi,""),10)),e[4]&&(c=parseInt(e[4].replace(/\D/gi,""),10)),n.setHours(o),n.setMinutes(s),n.setSeconds(c);var v=n.getTime(),h=f(),m=n;return(u<a||h>v)&&(m=d(n,a)),m.setHours(o),m.setMinutes(s),m.setSeconds(c),m.getTime()-h},m=function(e){var t="*"===e[1]?"*":parseInt(e[1],10),n="*"===e[2]?"*":parseInt(e[2],10),r="*"===e[3]?"*":parseInt(e[3],10),a="*"===e[4]?"*":parseInt(e[4],10),i="*"===e[5]?"*":parseInt(e[5],10),u="*"===e[6]?"*":parseInt(e[6],10),o=new Date,s=o.getFullYear();if("*"!==t&&t<s)return-1;var c=t,l=n,d=r,v=a,h=i,m=u;"*"===t&&(c=s);var p=o.getMonth()+1;"*"===n&&(l=p);var g=o.getDate();"*"===r&&(d=g);var y=o.getHours();"*"===a&&(v=y);var T=o.getMinutes();"*"===i&&(h=T);var w=new Date(c,l-1,d,v,h,m),D=w.getTime(),M=f(),b=D-M;return b<0&&"*"===i&&(w.setMinutes(h+1),b=(D=w.getTime())-M),b<0&&"*"===a&&(w.setHours(v+1),b=(D=w.getTime())-M),b<0&&"*"===r&&(w.setDate(d+1),b=(D=w.getTime())-M),b<0&&"*"===n&&(w.setMonth(l),b=(D=w.getTime())-M),b<0&&"*"===t&&(w.setFullYear(c+1),b=(D=w.getTime())-M),b},p=function(e,t){var n=/^(\d+)\s?(d|h|m|s)+$/i,r=/^(sun|mon|tue|wed|thu|fri|sat)+\w*\s+(\d+)(:\d+)?(:\d+)?$/i,a=/^(\*|\d+)\s+(\*|\d+)\s+(\*|\d+)\s+(\*|\d+)\s+(\*|\d+)\s+(\d+)$/i,i=e.match(n);return i?v(i,t):(i=e.match(r))?h(i):(i=e.match(a),i?m(i):-1)},g=function(e){e.fn();var t=e.id;if(!e.repeat)return c.remove(t);var n=f();return e.lastTick=n,c.set(t,e),!0},y=function t(){if(e&&clearTimeout(e),c.size>0){var n=2147483647,r=[];c.all().forEach(function(e){var t=e.id,a=p(e.time,e.lastTick);if(a<0)c.remove(t);else if(0===a)e.delay=0,r.push(e);else if(e.delay=a,c.set(t,e),a<=n){n=a;var i=[];i=r.concat(e),r=i.filter(function(e){return e.delay<=n})}}),r.length&&(e=setTimeout(function(){r.map(g),setTimeout(t,1)},n))}},T=function(e,t,n){var r=n?0:1,a=f(),i=s(32),u={id:i,fn:t,time:e,repeat:r,createdAt:a,lastTick:a,delay:0};return c.set(i,u),y(),i},w=function(e){return!!c.remove(e)&&(y(),!0)};module.exports={yearly:function(e,t){return T("* "+e,t)},monthly:function(e,t){return T("* * "+e,t)},daily:function(e,t){return T("* * * "+e,t)},hourly:function(e,t){return T("* * * * "+e,t)},every:function(e,t){return T(e,t)},once:function(e,t){return T(e,t,1)},unregister:w}}); |
{ | ||
"version": "1.1.6", | ||
"version": "1.2.0", | ||
"name": "bella-scheduler", | ||
"description": "A useful helper for any javascript program", | ||
"description": "To do something later, repeater", | ||
"homepage": "https://www.npmjs.com/package/bella-scheduler", | ||
@@ -11,3 +11,6 @@ "repository": { | ||
"author": "@ndaidong", | ||
"main": "./index.js", | ||
"main": "./dist/scheduler.js", | ||
"module": "./src/main", | ||
"jsnext:main": "./src/main", | ||
"browser": "./dist/scheduler.min.js", | ||
"engines": { | ||
@@ -17,17 +20,23 @@ "node": ">= 6.0" | ||
"scripts": { | ||
"lint": "eslint .", | ||
"lint": "eslint src tests", | ||
"nsp": "nsp check --output checkstyle", | ||
"tape": "nyc tape test/start.js | tap-spec", | ||
"report": "nyc report --reporter=lcov", | ||
"tape": "nyc babel-node node_modules/.bin/tape tests/start.js | tap-spec", | ||
"report": "nyc report --reporter=lcov > coverage.lcov && codecov", | ||
"pretest": "npm run lint && npm run nsp", | ||
"test": "npm run tape", | ||
"posttest": "npm run report", | ||
"coveralls": "npm test && cat ./coverage/lcov.info | coveralls", | ||
"build": "gccmin" | ||
"posttest": "CODECOV_TOKEN=2b86c4bc-c4d1-437e-af73-aeb6bcbf66f2 npm run report", | ||
"start": "babel-node src/main", | ||
"build": "gccmin -e src/main.js -n scheduler -o dist -p package.json", | ||
"reset": "node reset" | ||
}, | ||
"dependencies": { | ||
"bellajs": "7.x.x" | ||
}, | ||
"devDependencies": { | ||
"coveralls": "2.x.x", | ||
"babel-cli": "6.x.x", | ||
"babel-preset-env": "1.x.x", | ||
"codecov": "2.x.x", | ||
"eslint": "3.x.x", | ||
"eslint-config-ggc": "1.x.x", | ||
"gcc-min": "3.x.x", | ||
"gcc-min": "5.x.x", | ||
"nsp": "2.x.x", | ||
@@ -39,7 +48,15 @@ "nyc": "10.x.x", | ||
}, | ||
"gccmin": { | ||
"source": "src", | ||
"target": "dist", | ||
"filename": "scheduler", | ||
"globalVar": "scheduler" | ||
"babel": { | ||
"presets": [ | ||
[ | ||
"env", | ||
{ | ||
"targets": { | ||
"browsers": [ | ||
"> 1%" | ||
] | ||
} | ||
} | ||
] | ||
] | ||
}, | ||
@@ -50,2 +67,3 @@ "keywords": [ | ||
"scheduler", | ||
"repeater", | ||
"timer", | ||
@@ -52,0 +70,0 @@ "task", |
@@ -8,5 +8,5 @@ bella-scheduler | ||
[![Build Status](https://travis-ci.org/ndaidong/bella-scheduler.svg?branch=master)](https://travis-ci.org/ndaidong/bella-scheduler) | ||
[![Coverage Status](https://coveralls.io/repos/github/ndaidong/bella-scheduler/badge.svg?branch=master)](https://coveralls.io/github/ndaidong/bella-scheduler?branch=master) | ||
[![codecov](https://codecov.io/gh/ndaidong/bella-scheduler/branch/master/graph/badge.svg)](https://codecov.io/gh/ndaidong/bella-scheduler) | ||
[![Dependency Status](https://gemnasium.com/badges/github.com/ndaidong/bella-scheduler.svg)](https://gemnasium.com/github.com/ndaidong/bella-scheduler) | ||
[![Known Vulnerabilities](https://snyk.io/test/npm/bella-scheduler/badge.svg)](https://snyk.io/test/npm/bella-scheduler) | ||
[![NSP Status](https://nodesecurity.io/orgs/techpush/projects/bc63bba1-d201-4846-8e37-49daaf43311c/badge)](https://nodesecurity.io/orgs/techpush/projects/bc63bba1-d201-4846-8e37-49daaf43311c) | ||
@@ -26,20 +26,25 @@ | ||
- [scheduler.min.js](https://cdn.rawgit.com/ndaidong/bella-scheduler/master/dist/scheduler.min.js) | ||
- [scheduler.min.map](https://cdn.rawgit.com/ndaidong/bella-scheduler/master/dist/scheduler.min.map) | ||
- This library also supports ES6 Module, AMD and UMD style. | ||
- Also supports ES6 Module, CommonJS, AMD and UMD style. | ||
# Usage | ||
## Usage | ||
``` | ||
var scheduler = require('bella-scheduler'); | ||
import { | ||
once, | ||
every, | ||
daily | ||
} from 'bella-scheduler'; | ||
scheduler.once('5s', () => { | ||
once('5s', () => { | ||
console.log('Resolved task.'); | ||
}); | ||
scheduler.every('sunday 8:00', () => { | ||
every('sunday 8:00', () => { | ||
console.log('Resolved a task on Sunday at 8 AM.'); | ||
}); | ||
scheduler.daily('15:00', () => { | ||
daily('15:00', () => { | ||
console.log('Resolved a daily task at 3 PM...'); | ||
@@ -49,4 +54,5 @@ }); | ||
# APIs | ||
## APIs | ||
- .every(String pattern, Function callback) | ||
@@ -123,3 +129,3 @@ - .once(String pattern, Function callback) | ||
# Test | ||
## Test | ||
@@ -126,0 +132,0 @@ ``` |
@@ -8,17 +8,9 @@ /** | ||
var isUndefined = (v) => { | ||
return v === undefined; // eslint-disable-line no-undefined | ||
}; | ||
import { | ||
isUndefined, | ||
hasProperty, | ||
time, | ||
createId | ||
} from 'bellajs'; | ||
var hasProperty = (ob, k) => { | ||
if (!ob || !k) { | ||
return false; | ||
} | ||
let r = true; | ||
if (isUndefined(ob[k])) { | ||
r = k in ob; | ||
} | ||
return r; | ||
}; | ||
class BellaMap { | ||
@@ -70,10 +62,2 @@ constructor() { | ||
var now = () => { | ||
return new Date(); | ||
}; | ||
var time = () => { | ||
return now().getTime(); | ||
}; | ||
var getIndex = (arr, item) => { | ||
@@ -90,22 +74,2 @@ let r = -1; | ||
var createId = (leng, prefix) => { | ||
let rn = () => { | ||
return Math.random().toString(36).slice(2); | ||
}; | ||
let a = []; | ||
while (a.length < 10) { | ||
a.push(rn()); | ||
} | ||
let r = a.join(''); | ||
let t = r.length; | ||
let px = prefix || ''; | ||
let ln = Math.max(leng || 32, px.length); | ||
let s = px; | ||
while (s.length < ln) { | ||
let k = Math.floor(Math.random() * t); | ||
s += r.charAt(k) || ''; | ||
} | ||
return s; | ||
}; | ||
var getNextDay = (t, tday) => { | ||
@@ -112,0 +76,0 @@ let d = new Date(t); |
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
Shell access
Supply chain riskThis module accesses the system shell. Accessing the system shell increases the risk of executing arbitrary code.
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
894
138
42228
1
11
16
4
1
+ Addedbellajs@7.x.x
+ Addedbellajs@7.5.0(transitive)