@flla/cron-time-generator
Version:
Cron Time Expression Generator
291 lines (290 loc) • 8.91 kB
JavaScript
import Helpers from "./helpers";
import EveryTime from "./EveryTime";
/**
* Cron Time Class
*/
export class CronTime {
/**
* Every nth Time
* @return {EveryTime}
* @param interval
*/
static every(interval) {
return new EveryTime(interval);
}
/**
* Every Minute
*/
static everyMinute() {
return Helpers.minute();
}
/**
* Every Hour
*/
static everyHour() {
return Helpers.hour();
}
/**
* Every Hour At
* @param minuteOfTheHour - Minute of the hour.
* @returns {string}
*/
static everyHourAt(minuteOfTheHour) {
return `${minuteOfTheHour} * * * *`;
}
/**
* Every Day
*/
static everyDay() {
return Helpers.day();
}
/**
* Every Day At
* @param {number} hourOfTheDay - Hour of the day
* @param {number} minuteOfTheHour - Minute of the Hour
*/
static everyDayAt(hourOfTheDay, minuteOfTheHour = 0) {
return `${minuteOfTheHour} ${hourOfTheDay} * * *`;
}
/**
* Every Sunday
*/
static everySunday() {
return CronTime.everySundayAt(0);
}
/**
* Every Sunday At
* @param {number} hourOfTheDay - Hour Of the Day
* @param {number} minuteOfTheHour - Minute of the hour.
*/
static everySundayAt(hourOfTheDay, minuteOfTheHour = 0) {
return `${minuteOfTheHour} ${hourOfTheDay} * * SUN`;
}
/**
* Every Monday
*/
static everyMonday() {
return CronTime.everyMondayAt(0);
}
/**
* Every Monday At
* @param {number} hourOfTheDay - Hour Of the Day
* @param {number} minuteOfTheHour - Minute of the hour.
*/
static everyMondayAt(hourOfTheDay, minuteOfTheHour = 0) {
return `${minuteOfTheHour} ${hourOfTheDay} * * MON`;
}
/**
* Every Tuesday
*/
static everyTuesday() {
return CronTime.everyTuesdayAt(0);
}
/**
* Every Tuesday At
* @param {number} hourOfTheDay - Hour Of the Day
* @param {number} minuteOfTheHour - Minute of the hour.
*/
static everyTuesdayAt(hourOfTheDay, minuteOfTheHour = 0) {
return `${minuteOfTheHour} ${hourOfTheDay} * * TUE`;
}
/**
* Every Wednesday
*/
static everyWednesday() {
return CronTime.everyWednesdayAt(0);
}
/**
* Every Wednesday At
* @param {number} hourOfTheDay - Hour Of the Day
* @param {number} minuteOfTheHour - Minute of the hour.
*/
static everyWednesdayAt(hourOfTheDay, minuteOfTheHour = 0) {
return `${minuteOfTheHour} ${hourOfTheDay} * * WED`;
}
/**
* Every Thursday
*/
static everyThursday() {
return CronTime.everyThursdayAt(0);
}
/**
* Every Thursday At
* @param {number} hourOfTheDay - Hour Of the Day
* @param {number} minuteOfTheHour - Minute of the hour.
*/
static everyThursdayAt(hourOfTheDay, minuteOfTheHour = 0) {
return `${minuteOfTheHour} ${hourOfTheDay} * * THU`;
}
/**
* Every Friday
*/
static everyFriday() {
return CronTime.everyFridayAt(0);
}
/**
* Every Friday At
* @param {number} hourOfTheDay - Hour Of the Day
* @param {number} minuteOfTheHour - Minute of the hour.
*/
static everyFridayAt(hourOfTheDay, minuteOfTheHour = 0) {
return `${minuteOfTheHour} ${hourOfTheDay} * * FRI`;
}
/**
* Every Saturday
*/
static everySaturday() {
return CronTime.everySundayAt(0);
}
/**
* Every Saturday At
* @param {number} hourOfTheDay - Hour Of the Day
* @param {number} minuteOfTheHour - Minute of the hour.
*/
static everySaturdayAt(hourOfTheDay, minuteOfTheHour = 0) {
return `${minuteOfTheHour} ${hourOfTheDay} * * SAT`;
}
/**
* On Specific Days
* @param {(string|number)[]} days
*/
static 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} hourOfTheDay - Hour of the Day
* @param {number} minuteOfTheHour - Minute of the hour
*/
static onSpecificDaysAt(days, hourOfTheDay, minuteOfTheHour = 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 `${minuteOfTheHour} ${hourOfTheDay} * * ${days}`;
}
/**
* Every Week
*/
static everyWeek() {
return CronTime.everyWeekAt(0);
}
/**
* Every Week At
* @param {number} dayOfTheWeek - Day of the week
* @param {number} hourOfTheDay - Hour of the day.
* @param {number} minuteOfTheHour - Minute of the hour
*/
static everyWeekAt(dayOfTheWeek, hourOfTheDay = 0, minuteOfTheHour = 0) {
return `${minuteOfTheHour} ${hourOfTheDay} * * ${dayOfTheWeek}`;
}
/**
* 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
*/
static everyWeekDay(startDay = "monday", endDay = "friday") {
startDay = Helpers.dayToInt(startDay);
endDay = Helpers.dayToInt(endDay);
Helpers.validateStartToEndDay(startDay, endDay);
return `0 0 * * ${startDay}-${endDay}`;
}
/**
* Every WeekDay At
* @param {number} hourOfTheDay - Hour of the day
* @param {number} minuteOfTheHour - Minute of the hour
* @param {number|string} startDay - Starting day
* @param {number|string} endDay - Ending day
* @returns {string}
*/
static everyWeekDayAt(hourOfTheDay, minuteOfTheHour = 0, startDay = "monday", endDay = "friday") {
startDay = Helpers.dayToInt(startDay);
endDay = Helpers.dayToInt(endDay);
Helpers.validateStartToEndDay(startDay, endDay);
return `${minuteOfTheHour} ${hourOfTheDay} * * ${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
*/
static everyWeekend(startDay = "saturday", endDay = "sunday") {
startDay = Helpers.dayToInt(startDay);
endDay = Helpers.dayToInt(endDay);
return `0 0 * * ${startDay},${endDay}`;
}
/**
* Every Weekend At
* @param {number} hourOfTheDay - Hour of the day
* @param {number} minuteOfTheHour - Minute of the hour
* @param {number|string} startDay - Starting day
* @param {number|string} endDay - Ending day
* @returns {string}
*/
static everyWeekendAt(hourOfTheDay, minuteOfTheHour = 0, startDay = "saturday", endDay = "sunday") {
startDay = Helpers.dayToInt(startDay);
endDay = Helpers.dayToInt(endDay);
return `${minuteOfTheHour} ${hourOfTheDay} * * ${startDay},${endDay}`;
}
/**
* Every Month
*/
static everyMonth() {
return CronTime.everyMonthOn(1);
}
/**
* Every Month on
* @param {number} dayOfTheMonth - Day of the month
* @param {number} hourOfTheDay - Hour of the day
* @param {number} minuteOfTheHour - Minute of the hour
*/
static everyMonthOn(dayOfTheMonth, hourOfTheDay = 0, minuteOfTheHour = 0) {
return `${minuteOfTheHour} ${hourOfTheDay} ${dayOfTheMonth} * *`;
}
/**
* Every Year
*/
static everyYear() {
return CronTime.everyYearIn(1);
}
/**
* Every Year In
* @param {number} monthOfTheYear - Month of the year
* @param dayOfTheMonth - Day of the month
* @param hourOfTheDay - Hour of the day
* @param minuteOfTheHour - Minute of the hour.
*/
static everyYearIn(monthOfTheYear, dayOfTheMonth = 1, hourOfTheDay = 0, minuteOfTheHour = 0) {
return `${minuteOfTheHour} ${hourOfTheDay} ${dayOfTheMonth} ${monthOfTheYear} *`;
}
/**
* Between Time Frames
* @param {number} start - Start
* @param {number} end - End
*/
static between(start, end) {
return new EveryTime([start, end], {
between: true
});
}
}
export default CronTime;