UNPKG

aws-cron-parser

Version:

A util to parse cron expressions used by AWS services

129 lines 4.38 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getScheduleDescription = void 0; var n2w = __importStar(require("number-to-words")); var monthNumberToWord = function (n) { return [ 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December', ][n - 1]; }; var weekdayNumberToWord = function (n) { return ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'][n - 1]; }; var joinMultipleWords = function (words) { if (words.length === 1) return words[0]; if (words.length === 2) return words[0] + " and " + words[1]; var rs = ''; words.forEach(function (w, i, a) { if (i === 0) rs += w + ","; else if (i < a.length - 1) rs += " " + w + ","; else rs += " and " + w; }); return rs; }; var checkCurrentlyUnsupported = function (p) { for (var _i = 0, _a = ['months', 'daysOfMonth', 'daysOfWeek']; _i < _a.length; _i++) { var part = _a[_i]; var found = p[part].find(function (e) { return typeof e !== 'number'; }); if (found) return true; } return false; }; var handleDaysOfMonth = function (p) { if (checkCurrentlyUnsupported(p)) return ''; // N N * * ? * = every day // N N * 4,5 ? * = every day in April and May // N N 1,3,5 * ? * = on the 1st, 3rd, and 5th of every month // N N 1,3,5 4,5 ? * = on the 1st, 3rd, and 5th of April and May var desc = ''; if (p.daysOfMonth.length === 31) { desc += 'every day'; if (p.months.length < 12) desc += " in " + joinMultipleWords(p.months.map(monthNumberToWord)); } else { desc += "on the " + joinMultipleWords(p.daysOfMonth.map(n2w.toOrdinal)); if (p.months.length === 12) desc += ' of every month'; else desc += " of " + joinMultipleWords(p.months.map(monthNumberToWord)); } return desc; }; var handleDaysOfWeek = function (p) { if (checkCurrentlyUnsupported(p)) return ''; // N N ? * MON * = every Monday // N N ? * MON,FRI * = every Monday and Friday // N N ? 4,5 MON,FRI * = every Monday and Friday in April and May var desc = ''; desc += "every " + joinMultipleWords(p.daysOfWeek.map(weekdayNumberToWord)); if (p.months.length < 12) desc += " in " + joinMultipleWords(p.months.map(monthNumberToWord)); return desc; }; var handleOncePerDay = function (p) { var hours = p.hours, minutes = p.minutes; var h = +hours[0] % 12 || 12; var m = +minutes[0]; var mm = m < 10 ? "0" + m : "" + m; var am = +hours[0] < 12 ? 'AM' : 'PM'; return h + ":" + mm + " " + am; }; /** * @param {*} p the value returned by "parse" function of this module */ function getScheduleDescription(p) { var desc = ''; var perDay = p.minutes.length * p.hours.length; if (perDay === 2) desc += 'twice a day, '; else if (perDay > 2) desc += n2w.toWords(perDay) + " times a day, "; if (p.daysOfMonth.length > 0) desc += handleDaysOfMonth(p); else if (p.daysOfWeek.length > 0) desc += handleDaysOfWeek(p); if (perDay === 1) desc += " at " + handleOncePerDay(p); return desc; } exports.getScheduleDescription = getScheduleDescription; //# sourceMappingURL=desc.js.map