quartzcron
Version:
version: `0.1.0` [CHANGELOG](https://github.com/fedeghe/quartzcron/blob/master/CHANGELOG.md)
4 lines • 1.57 kB
JavaScript
/*
quartzcron (v.0.1.0)
*/
const{rx, errors}=require('./constants.js');const getRangeValidator=(mainRx, cadenceRx)=> val=>{const v=`${val}`;if(v.match(rx.dumb.astrxn))return true;const elements=v.split(/,/), matches=elements.map(el=> el.match(rx.loose['n-n/nOPZ'])).filter(Boolean);if(matches.length !==elements.length)return false;return matches.every(m=>{const base=m[1].match(mainRx);if(base){if(m[3]&& m[5]){return m[3].match(mainRx)&& m[5].match(cadenceRx);}if(m[3])return m[3].match(mainRx);if(m[5])return m[5].match(cadenceRx);}return base;});}, getValidator=rxs=> v=> rxs.find(r=>{if(typeof r==='function')return r(v);return `${v}`.match(r);}), rx059=getRangeValidator(rx.ranged['0-59'], rx.ranged['0-59']), rx023=getRangeValidator(rx.ranged['0-23'], rx.ranged['0-23']), rx131=getRangeValidator(rx.ranged['1-31'], rx.ranged['1-31']), rxmonth=getRangeValidator(rx.month, rx.month), rxYear=getRangeValidator(rx.year, rx.yearCadence), rxWeekday=getRangeValidator(rx.ranged['maybelabelled-wd'], rx.ranged['maybelabelled-wd']), rxDom=getValidator([rx131, rx.ranged['1-31'], rx.dumb.quest, rx.dumb.astrxn, rx.dumb['LW?'], rx.ranged['L-md'], rx.ranged['1-31L'], rx.ranged['1-31W']]), rxDow=getValidator([rx.dumb.quest, rxWeekday, rx.ranged.fullWd, rx.ranged.nthFullWd]), fieldCorrelationValidators=[{validator:({dom, dow})=> !(dow!=='?' && dom!=='?')&& !(dow==='?'&&dom==='?'), message:errors.domdowExclusivity}];module.exports={validators:{second:rx059, minute:rx059, hour:rx023, month:rxmonth, year:rxYear, dayOfMonth:rxDom, dayOfWeek:rxDow}, fieldCorrelationValidators};