crontab-time-generator
Version:
Cron Time Expression Generator
321 lines (278 loc) • 8.66 kB
JavaScript
let Helpers = require('./helpers');
const EveryTime = require('./EveryTime');
/**
* Cron Time Class
*/
class CronTime {
/**
* Every nth Time
* @param $int
* @return {EveryTime}
*/
static every($int) {
return new EveryTime($int);
}
/**
* 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`;
}
/**
* Every Week
* @param {array} $daysOfTheWeek
Sunday | 0 -> Sun
Monday | 1 -> Mon
Tuesday | 2 -> Tue
Wednesday | 3 -> Wed
Thursday | 4 -> Thu
Friday | 5 -> Fri
Saturday | 6 -> Sat
Sunday | 7 -> Sun
*
*/
static everyWeek($daysOfTheWeek = [0]) {
// Check for Empty Array
if ($daysOfTheWeek.length === 0) $daysOfTheWeek = [0]
return CronTime.everyWeekAt($daysOfTheWeek);
}
/**
* Every Week At
* @param {number[]} $daysOfTheWeek - Day of the week
* @param {number} $hourOfTheDay - Hour of the day.
* @param {number} $minuteOfTheHour - Minute of the hour
*/
static everyWeekAt($daysOfTheWeek, $hourOfTheDay = 0, $minuteOfTheHour = 0) {
return `${$minuteOfTheHour} ${$hourOfTheDay} * * ${Object.values($daysOfTheWeek)}`
}
/**
* 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
})
}
}
module.exports = CronTime;