crontimex
Version:
None-dependencies Cron Time Expression Generator/Builder written in Typescript
91 lines (90 loc) • 2.19 kB
JavaScript
/**
* Days dictionary.
*/
export const Days = {
sun: 0,
mon: 1,
tue: 2,
wed: 3,
thu: 4,
fri: 5,
sat: 6,
sunday: 0,
monday: 1,
tuesday: 2,
wednesday: 3,
thursday: 4,
friday: 5,
saturday: 6
};
export default {
/**
* Put a character in a string using position.
* @param {number} position
* @param {*} char
* @param {string} str
*/
spliceIntoPosition(position, char, str = undefined) {
if (str === undefined) {
str = this.minute();
}
let def = str.split(" ");
def.splice(position, 1, char);
return def.join(" ");
},
/**
* Get cron minute string.
*/
minute() {
return "* * * * *";
},
/**
* Get cron hour String.
*/
hour() {
return "0 * * * *";
},
/**
* Get Cron day string, with an option of setting: `hoursOfTheDay and minutesOfTheHour`
* @param hoursOfTheDay
* @param minutesOfTheHour
*/
day(hoursOfTheDay = 0, minutesOfTheHour = 0) {
return `${minutesOfTheHour} ${hoursOfTheDay} * * *`;
},
/**
* Get the integer representation of day string.
* @param {string|number} day
* @return {number}
* @example
* Helpers.dayToInt('sunday') // 0
* Helpers.dayToInt('monday') // 1
*/
dayToInt(day) {
if (typeof day === "number")
return day;
day = day.trim().toLowerCase();
if (!Days.hasOwnProperty(day))
throw Error(`Day: "${day}" is not a valid day.`);
return Days[day];
},
/**
* Get the integer representation of multiple day strings.
* @param days
*/
daysToIntegers(days) {
if (!Array.isArray(days))
days = [days];
return days.map((day) => this.dayToInt(day));
},
/**
* Checks if startDay and endDay follows a calendar sequence.
* else throws error.
* @param startDay
* @param endDay
*/
validateStartToEndDay(startDay, endDay) {
if (startDay > endDay)
throw Error("startDay must come before endDay following normal calendar sequence.");
}
};