@dazejs/framework
Version:
Daze.js - A powerful web framework for Node.js
201 lines • 5.96 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Scheduler = void 0;
class Scheduler {
constructor() {
this.expression = '0 * * * * *';
this._singletonServer = false;
}
corn(expression) {
this.expression = expression;
return this;
}
everySecond() {
return this.spliceIntoPosition(1, '*');
}
everyTwoSeconds() {
return this.spliceIntoPosition(1, '*/2');
}
everyThreeSeconds() {
return this.spliceIntoPosition(1, '*/3');
}
everyFourSeconds() {
return this.spliceIntoPosition(1, '*/4');
}
everyFiveSeconds() {
return this.spliceIntoPosition(1, '*/5');
}
everyTenSeconds() {
return this.spliceIntoPosition(1, '*/10');
}
everyFifteenSeconds() {
return this.spliceIntoPosition(1, '*/15');
}
everyThirtySeconds() {
return this.spliceIntoPosition(1, '*/30');
}
everyMinute() {
return this.spliceIntoPosition(1, '0')
.spliceIntoPosition(2, '*');
}
everyTwoMinutes() {
return this.spliceIntoPosition(1, '0')
.spliceIntoPosition(2, '*/2');
}
everyThreeMinutes() {
return this.spliceIntoPosition(1, '0')
.spliceIntoPosition(2, '*/3');
}
everyFourMinutes() {
return this.spliceIntoPosition(1, '0')
.spliceIntoPosition(2, '*/4');
}
everyFiveMinutes() {
return this.spliceIntoPosition(1, '0')
.spliceIntoPosition(2, '*/5');
}
everyTenMinutes() {
return this.spliceIntoPosition(1, '0')
.spliceIntoPosition(2, '*/10');
}
everyFifteenMinutes() {
return this.spliceIntoPosition(1, '0')
.spliceIntoPosition(2, '*/15');
}
everyThirtyMinutes() {
return this.spliceIntoPosition(1, '0')
.spliceIntoPosition(2, '*/30');
}
hourly() {
return this.spliceIntoPosition(1, '0')
.spliceIntoPosition(2, '0')
.spliceIntoPosition(3, '*');
}
hourlyAt(offset) {
const _offset = Array.isArray(offset) ? offset.join(',') : `${offset}`;
return this.spliceIntoPosition(1, '0')
.spliceIntoPosition(2, '0')
.spliceIntoPosition(3, _offset);
}
everyTwoHours() {
return this.spliceIntoPosition(1, '0')
.spliceIntoPosition(2, '0')
.spliceIntoPosition(3, '*/2');
}
everyThreeHours() {
return this.spliceIntoPosition(1, '0')
.spliceIntoPosition(2, '0')
.spliceIntoPosition(3, '*/3');
}
everyFourHours() {
return this.spliceIntoPosition(1, '0')
.spliceIntoPosition(2, '0')
.spliceIntoPosition(3, '*/4');
}
everySixHours() {
return this.spliceIntoPosition(1, '0')
.spliceIntoPosition(2, '0')
.spliceIntoPosition(3, '*/6');
}
daily() {
return this.spliceIntoPosition(1, '0')
.spliceIntoPosition(2, '0')
.spliceIntoPosition(3, '0');
}
dailyAt(time) {
const segments = time.split(':');
return this.spliceIntoPosition(3, segments[0])
.spliceIntoPosition(2, segments.length > 1 ? segments[1] : '0')
.spliceIntoPosition(1, segments.length > 2 ? segments[2] : '0');
}
weekdays() {
return this.spliceIntoPosition(6, '1-5');
}
weekends() {
return this.spliceIntoPosition(6, '0,7');
}
mondays() {
return this.spliceIntoPosition(6, '1');
}
tuesdays() {
return this.spliceIntoPosition(6, '2');
}
wednesdays() {
return this.spliceIntoPosition(6, '3');
}
thursdays() {
return this.spliceIntoPosition(6, '4');
}
fridays() {
return this.spliceIntoPosition(6, '5');
}
saturdays() {
return this.spliceIntoPosition(6, '6');
}
sundays() {
return this.spliceIntoPosition(6, '0');
}
weekly() {
return this.spliceIntoPosition(1, '0')
.spliceIntoPosition(2, '0')
.spliceIntoPosition(3, '0')
.spliceIntoPosition(6, '0');
}
weeklyOn(dayOfWeek, time = '0:0') {
return this.dailyAt(time)
.spliceIntoPosition(6, `${dayOfWeek}`);
}
monthly() {
return this.spliceIntoPosition(1, '0')
.spliceIntoPosition(2, '0')
.spliceIntoPosition(3, '0')
.spliceIntoPosition(4, '1');
}
monthlyOn(dayOfMonth, time = '0:0') {
return this.dailyAt(time)
.spliceIntoPosition(4, `${dayOfMonth}`);
}
quarterly() {
return this.spliceIntoPosition(1, '0')
.spliceIntoPosition(2, '0')
.spliceIntoPosition(3, '0')
.spliceIntoPosition(4, '1')
.spliceIntoPosition(5, '1-12/3');
}
yearly() {
return this.spliceIntoPosition(1, '0')
.spliceIntoPosition(2, '0')
.spliceIntoPosition(3, '0')
.spliceIntoPosition(4, '1')
.spliceIntoPosition(5, '1');
}
yearlyOn(month = 1, dayOfMonth = 1, time = '0:0') {
return this.dailyAt(time)
.spliceIntoPosition(4, `${dayOfMonth}`)
.spliceIntoPosition(5, `${month}`);
}
timezone(timezone) {
this._timezone = timezone;
return this;
}
getTimezone() {
return this._timezone;
}
getExpression() {
return this.expression;
}
runOnSingletonServer() {
this._singletonServer = true;
return this;
}
isRunOnSingletonServer() {
return this._singletonServer;
}
spliceIntoPosition(position, value) {
const segments = this.expression.split(' ');
segments[position - 1] = value;
return this.corn(segments.join(' '));
}
}
exports.Scheduler = Scheduler;
//# sourceMappingURL=scheduler.js.map