UNPKG

crontimex

Version:

None-dependencies Cron Time Expression Generator/Builder written in Typescript

290 lines (289 loc) 9.19 kB
import Helpers, { Days } from "./helpers.js"; import EveryTime from "./EveryTime.js"; // type MinutesOfTheHour = number | number[]; // type HoursOfTheDay = number | number[]; /** * Cron Time Object */ export const CronTimex = { /** * Every nth Time * @return {EveryTime} * @param interval */ every(interval) { return new EveryTime(interval); }, /** * Every Minute */ everyMinute() { return Helpers.minute(); }, /** * Every Hour */ everyHour() { return Helpers.hour(); }, /** * Every Hour At * @param {number|number[]} minutesOfTheHour - Minutes of the hour. * @returns {string} */ everyHourAt(minutesOfTheHour) { return `${minutesOfTheHour} * * * *`; }, /** * Every Day */ everyDay() { return Helpers.day(); }, /** * Every Day At * @param {number|number[]} hoursOfTheDay - Hours of the day * @param {number|number[]} minutesOfTheHour - Minutes of the Hour */ everyDayAt(hoursOfTheDay, minutesOfTheHour = 0) { return Helpers.day(hoursOfTheDay, minutesOfTheHour); }, /** * Every Sunday At * @param {number|number[]} hoursOfTheDay - Hours Of the Day * @param {number|number[]} minutesOfTheHour - Minutes of the hour. */ everySundayAt(hoursOfTheDay, minutesOfTheHour = 0) { return `${minutesOfTheHour} ${hoursOfTheDay} * * ${Days.sunday}`; }, /** * Every Sunday */ everySunday() { return this.everySundayAt(0); }, /** * Every Monday At * @param {number|number[]} hoursOfTheDay - Hours Of the Day * @param {number|number[]} minutesOfTheHour - Minutes of the hour. */ everyMondayAt(hoursOfTheDay, minutesOfTheHour = 0) { return `${minutesOfTheHour} ${hoursOfTheDay} * * ${Days.monday}`; }, /** * Every Monday */ everyMonday() { return this.everyMondayAt(0); }, /** * Every Tuesday At * @param {number|number[]} hoursOfTheDay - Hours Of the Day * @param {number|number[]} minutesOfTheHour - Minutes of the hour. */ everyTuesdayAt(hoursOfTheDay, minutesOfTheHour = 0) { return `${minutesOfTheHour} ${hoursOfTheDay} * * ${Days.tuesday}`; }, /** * Every Tuesday */ everyTuesday() { return this.everyTuesdayAt(0); }, /** * Every Wednesday At * @param {number|number[]} hoursOfTheDay - Hours Of the Day * @param {number|number[]} minutesOfTheHour - Minutes of the hour. */ everyWednesdayAt(hoursOfTheDay, minutesOfTheHour = 0) { return `${minutesOfTheHour} ${hoursOfTheDay} * * ${Days.wednesday}`; }, /** * Every Wednesday */ everyWednesday() { return this.everyWednesdayAt(0); }, /** * Every Thursday At * @param {number|number[]} hoursOfTheDay - Hours Of the Day * @param {number|number[]} minutesOfTheHour - Minutes of the hour. */ everyThursdayAt(hoursOfTheDay, minutesOfTheHour = 0) { return `${minutesOfTheHour} ${hoursOfTheDay} * * ${Days.thursday}`; }, /** * Every Thursday */ everyThursday() { return this.everyThursdayAt(0); }, /** * Every Friday At * @param {number|number[]} hoursOfTheDay - Hours Of the Day * @param {number|number[]} minutesOfTheHour - Minutes of the hour. */ everyFridayAt(hoursOfTheDay, minutesOfTheHour = 0) { return `${minutesOfTheHour} ${hoursOfTheDay} * * ${Days.friday}`; }, /** * Every Friday */ everyFriday() { return this.everyFridayAt(0); }, /** * Every Saturday At * @param {number|number[]} hoursOfTheDay - Hours Of the Day * @param {number|number[]} minutesOfTheHour - Minutes of the hour. */ everySaturdayAt(hoursOfTheDay, minutesOfTheHour = 0) { return `${minutesOfTheHour} ${hoursOfTheDay} * * ${Days.saturday}`; }, /** * Every Saturday */ everySaturday() { return this.everySaturdayAt(0); }, /** * On Specific Days * @param {(string|number)[]} days */ onSpecificDays(days) { if (!Array.isArray(days) || days.length === 0) { throw new Error("onSpecificDays expects days to be an array of days string."); } days = Helpers.daysToIntegers(days); return `0 0 * * ${days}`; }, /** * On Specific Days At * @param {(string|number)[]} days * @param {number|number[]} hoursOfTheDay - Hours of the Day * @param {number|number[]} minutesOfTheHour - Minutes of the hour */ onSpecificDaysAt(days, hoursOfTheDay, minutesOfTheHour = 0) { if (!Array.isArray(days) || days.length === 0) { throw new Error("onSpecificDaysAt expects days to be an array of days string."); } days = Helpers.daysToIntegers(days); return `${minutesOfTheHour} ${hoursOfTheDay} * * ${days}`; }, /** * Every Week */ everyWeek() { return this.everyWeekAt(0); }, /** * Every Week At * @param {number|number[]|string|string[]} daysOfTheWeek - Days of the week * @param {number|number[]} hoursOfTheDay - Hours of the day. * @param {number|number[]} minutesOfTheHour - Minutes of the hour */ everyWeekAt(daysOfTheWeek, hoursOfTheDay = 0, minutesOfTheHour = 0) { const days = Helpers.daysToIntegers(daysOfTheWeek); return `${minutesOfTheHour} ${hoursOfTheDay} * * ${days}`; }, /** * Every WeekDay * @param {number|string} startDay - Starting day (Monday=1, Sunday=0) * @param {number|string} endDay - Starting day (Monday=1, Sunday=0) * @returns {string} * * @example * CronTime.everyWeekDay() * // Monday to Friday * CronTime.everyWeekDay('sunday', 'thursday') * // Sunday to Thursday */ everyWeekDay(startDay = "monday", endDay = "friday") { return this.everyWeekDayAt(0, 0, startDay, endDay); }, /** * Every WeekDay At * @param {number|number[]} hoursOfTheDay - Hours of the day * @param {number|number[]} minutesOfTheHour - Minutes of the hour * @param {number|string} startDay - Starting day * @param {number|string} endDay - Ending day * @returns {string} */ everyWeekDayAt(hoursOfTheDay, minutesOfTheHour = 0, startDay = "monday", endDay = "friday") { startDay = Helpers.dayToInt(startDay); endDay = Helpers.dayToInt(endDay); Helpers.validateStartToEndDay(startDay, endDay); return `${minutesOfTheHour} ${hoursOfTheDay} * * ${startDay}-${endDay}`; }, /** * Every Weekend * @param {number|string} startDay - Starting day (Monday=1, Sunday=0) * @param {number|string} endDay - Starting day (Monday=1, Sunday=0) * @returns {string} * * @example * CronTime.everyWeekend() * // Saturday and Sunday * CronTime.everyWeekend('friday', 'saturday') * // Friday and Saturday */ everyWeekend(startDay = "saturday", endDay = "sunday") { return this.everyWeekendAt(0, 0, startDay, endDay); }, /** * Every Weekend At * @param {number|number[]} hoursOfTheDay - Hours of the day * @param {number|number[]} minutesOfTheHour - Minutes of the hour * @param {number|string} startDay - Starting day * @param {number|string} endDay - Ending day * @returns {string} */ everyWeekendAt(hoursOfTheDay, minutesOfTheHour = 0, startDay = "saturday", endDay = "sunday") { const days = Helpers.daysToIntegers([startDay, endDay]); return `${minutesOfTheHour} ${hoursOfTheDay} * * ${days}`; }, /** * Every Month */ everyMonth() { return this.everyMonthOn(1); }, /** * Every Month on * @param {number|number[]} daysOfTheMonth - Days of the month * @param {number|number[]} hoursOfTheDay - Hours of the day * @param {number|number[]} minutesOfTheHour - Minutes of the hour */ everyMonthOn(daysOfTheMonth, hoursOfTheDay = 0, minutesOfTheHour = 0) { const days = Helpers.daysToIntegers(daysOfTheMonth); return `${minutesOfTheHour} ${hoursOfTheDay} ${days} * *`; }, /** * Every Year */ everyYear() { return this.everyYearIn(1); }, /** * Every Year In * @param {number|number[]} monthsOfTheYear - Months of the year * @param daysOfTheMonth - Days of the month * @param hoursOfTheDay - Hours of the day * @param minutesOfTheHour - Minutes of the hour. */ everyYearIn(monthsOfTheYear, daysOfTheMonth = 1, hoursOfTheDay = 0, minutesOfTheHour = 0) { const days = Helpers.daysToIntegers(daysOfTheMonth); return `${minutesOfTheHour} ${hoursOfTheDay} ${days} ${monthsOfTheYear} *`; }, /** * Between Time Frames * @param {number} start - Start * @param {number} end - End */ between(start, end) { return new EveryTime([start, end], { between: true }); } }; export default CronTimex;