UNPKG

@dazejs/framework

Version:

Daze.js - A powerful web framework for Node.js

201 lines 5.96 kB
"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