UNPKG

aws-cron-parser

Version:

A util to parse cron expressions used by AWS services

78 lines 2.83 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.arrayFindLast = exports.arrayFindFirst = exports.getDaysOfMonthForW = exports.getDaysOfMonthForL = exports.getDaysOfMonthFromDaysOfWeek = void 0; var isWeekday = function (year, month, day) { if (day < 1 || day > 31) { return false; } var thisDate = new Date(year, month - 1, day); if (thisDate.getMonth() !== month - 1) { return false; } return thisDate.getDay() > 0 && thisDate.getDay() < 6; }; var getDaysOfMonthFromDaysOfWeek = function (year, month, daysOfWeek) { var daysOfMonth = []; var index = 0; // only for "#" use case for (var i = 1; i <= 31; i += 1) { var thisDate = new Date(year, month - 1, i); // already after last day of month if (thisDate.getMonth() !== month - 1) { break; } if (daysOfWeek[0] === 'L') { if (daysOfWeek[1] === thisDate.getDay() + 1) { var sameDayNextWeek = new Date(thisDate.getTime() + 7 * 24 * 3600000); if (sameDayNextWeek.getMonth() !== thisDate.getMonth()) { return [i]; } } } else if (daysOfWeek[0] === '#') { if (daysOfWeek[1] === thisDate.getDay() + 1) { index += 1; } if (daysOfWeek[2] === index) { return [i]; } } else if (daysOfWeek.includes(thisDate.getDay() + 1)) { daysOfMonth.push(i); } } return daysOfMonth; }; exports.getDaysOfMonthFromDaysOfWeek = getDaysOfMonthFromDaysOfWeek; var getDaysOfMonthForL = function (year, month, daysBefore) { for (var i = 31; i >= 28; i -= 1) { var thisDate = new Date(year, month - 1, i); if (thisDate.getMonth() === month - 1) { return [i - daysBefore]; } } throw new Error('getDaysOfMonthForL - should not happen'); }; exports.getDaysOfMonthForL = getDaysOfMonthForL; var getDaysOfMonthForW = function (year, month, day) { var offset = [0, 1, -1, 2, -2].find(function (c) { return isWeekday(year, month, day + c); }); if (offset === undefined) throw new Error('getDaysOfMonthForW - should not happen'); return [day + offset]; }; exports.getDaysOfMonthForW = getDaysOfMonthForW; var arrayFindFirst = function (a, f) { return a.find(f); }; exports.arrayFindFirst = arrayFindFirst; var arrayFindLast = function (a, f) { // note: a.slice().reverse().find(f) is less efficient for (var i = a.length - 1; i >= 0; i--) { // eslint-disable-next-line security/detect-object-injection var e = a[i]; if (f(e)) { return e; } } }; exports.arrayFindLast = arrayFindLast; //# sourceMappingURL=common.js.map