Inital Commit
This commit is contained in:
100
html/rechner/node_modules/node-cron/dist/cjs/time/matcher-walker.js
generated
vendored
Normal file
100
html/rechner/node_modules/node-cron/dist/cjs/time/matcher-walker.js
generated
vendored
Normal file
@@ -0,0 +1,100 @@
|
||||
"use strict";
|
||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.MatcherWalker = void 0;
|
||||
const convertion_1 = __importDefault(require("../pattern/convertion"));
|
||||
const localized_time_1 = require("./localized-time");
|
||||
const time_matcher_1 = require("./time-matcher");
|
||||
const week_day_names_conversion_1 = __importDefault(require("../pattern/convertion/week-day-names-conversion"));
|
||||
class MatcherWalker {
|
||||
cronExpression;
|
||||
baseDate;
|
||||
pattern;
|
||||
expressions;
|
||||
timeMatcher;
|
||||
timezone;
|
||||
constructor(cronExpression, baseDate, timezone) {
|
||||
this.cronExpression = cronExpression;
|
||||
this.baseDate = baseDate;
|
||||
this.timeMatcher = new time_matcher_1.TimeMatcher(cronExpression, timezone);
|
||||
this.timezone = timezone;
|
||||
this.expressions = (0, convertion_1.default)(cronExpression);
|
||||
}
|
||||
isMatching() {
|
||||
return this.timeMatcher.match(this.baseDate);
|
||||
}
|
||||
matchNext() {
|
||||
const findNextDateIgnoringWeekday = () => {
|
||||
const baseDate = new Date(this.baseDate.getTime());
|
||||
baseDate.setMilliseconds(0);
|
||||
const localTime = new localized_time_1.LocalizedTime(baseDate, this.timezone);
|
||||
const dateParts = localTime.getParts();
|
||||
const date = new localized_time_1.LocalizedTime(localTime.toDate(), this.timezone);
|
||||
const seconds = this.expressions[0];
|
||||
const nextSecond = availableValue(seconds, dateParts.second);
|
||||
if (nextSecond) {
|
||||
date.set('second', nextSecond);
|
||||
if (this.timeMatcher.match(date.toDate())) {
|
||||
return date;
|
||||
}
|
||||
}
|
||||
date.set('second', seconds[0]);
|
||||
const minutes = this.expressions[1];
|
||||
const nextMinute = availableValue(minutes, dateParts.minute);
|
||||
if (nextMinute) {
|
||||
date.set('minute', nextMinute);
|
||||
if (this.timeMatcher.match(date.toDate())) {
|
||||
return date;
|
||||
}
|
||||
}
|
||||
date.set('minute', minutes[0]);
|
||||
const hours = this.expressions[2];
|
||||
const nextHour = availableValue(hours, dateParts.hour);
|
||||
if (nextHour) {
|
||||
date.set('hour', nextHour);
|
||||
if (this.timeMatcher.match(date.toDate())) {
|
||||
return date;
|
||||
}
|
||||
}
|
||||
date.set('hour', hours[0]);
|
||||
const days = this.expressions[3];
|
||||
const nextDay = availableValue(days, dateParts.day);
|
||||
if (nextDay) {
|
||||
date.set('day', nextDay);
|
||||
if (this.timeMatcher.match(date.toDate())) {
|
||||
return date;
|
||||
}
|
||||
}
|
||||
date.set('day', days[0]);
|
||||
const months = this.expressions[4];
|
||||
const nextMonth = availableValue(months, dateParts.month);
|
||||
if (nextMonth) {
|
||||
date.set('month', nextMonth);
|
||||
if (this.timeMatcher.match(date.toDate())) {
|
||||
return date;
|
||||
}
|
||||
}
|
||||
date.set('year', date.getParts().year + 1);
|
||||
date.set('month', months[0]);
|
||||
return date;
|
||||
};
|
||||
const date = findNextDateIgnoringWeekday();
|
||||
const weekdays = this.expressions[5];
|
||||
let currentWeekday = parseInt((0, week_day_names_conversion_1.default)(date.getParts().weekday));
|
||||
while (!(weekdays.indexOf(currentWeekday) > -1)) {
|
||||
date.set('year', date.getParts().year + 1);
|
||||
currentWeekday = parseInt((0, week_day_names_conversion_1.default)(date.getParts().weekday));
|
||||
}
|
||||
return date;
|
||||
}
|
||||
}
|
||||
exports.MatcherWalker = MatcherWalker;
|
||||
function availableValue(values, currentValue) {
|
||||
const availableValues = values.sort((a, b) => a - b).filter(s => s > currentValue);
|
||||
if (availableValues.length > 0)
|
||||
return availableValues[0];
|
||||
return false;
|
||||
}
|
||||
//# sourceMappingURL=matcher-walker.js.map
|
||||
Reference in New Issue
Block a user