quartzcron
Version:
version: `0.1.0` [CHANGELOG](https://github.com/fedeghe/quartzcron/blob/master/CHANGELOG.md)
55 lines (48 loc) • 1.24 kB
JavaScript
/*
quartzcron (v.0.1.0)
*/
/*
validations
https://www.freeformatter.com/cron-expression-generator-quartz.html
https://www.quartz-scheduler.org/documentation/quartz-2.3.0/tutorials/tutorial-lesson-06.html
https://www.npmjs.com/package/cron-time-generator
s [0,59]
i [0,59]
h [0,23]
dom [1,31]*
m [1,12]*
dow [1(SUN), 7(SAT)]*
y [2xxx,]*
*/
const { defaults, rx, labels } = require('./constants.js');
const argumentize = o => {
const ty = typeof o;
switch(ty) {
case 'string': return exp2elements(o);
case 'object': return {...defaults, ...o};
default:;
}
return {...defaults};
},
daysLabels2Numbers = v =>
labels.days.reduce(
(acc, label, i) => `${acc}`.replace(label, i + 1), v
),
now = new Date(),
yearNow = now.getFullYear(),
removeSpaces = s => `${s}`.replace(/\s/mg, ''),
exp2elements = exp => {
const e = exp.split(rx.dumb.spaceSplit);
return {
s: e[0], i: e[1], h: e[2],
dom: e[3], m: e[4], dow: e[5], y: e[6]
};
};
module.exports = {
defaults,
yearNow,
removeSpaces,
daysLabels2Numbers,
exp2elements,
argumentize
};