UNPKG

@bitblit/epsilon

Version:

Tiny adapter to simplify building API gateway Lambda APIS

76 lines 3.55 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CronUtil = void 0; var require_ratchet_1 = require("@bitblit/ratchet/dist/common/require-ratchet"); var error_ratchet_1 = require("@bitblit/ratchet/dist/common/error-ratchet"); var moment = require("moment-timezone"); var string_ratchet_1 = require("@bitblit/ratchet/dist/common/string-ratchet"); var CronUtil = /** @class */ (function () { function CronUtil() { } CronUtil.everyNMinuteFilter = function (n) { return CronUtil.everyNElementFilter(n, 60); }; CronUtil.everyNDaysOfYearFilter = function (n) { return CronUtil.everyNElementFilter(n, 365); }; CronUtil.everyNElementFilter = function (n, m) { require_ratchet_1.RequireRatchet.notNullOrUndefined(n); require_ratchet_1.RequireRatchet.notNullOrUndefined(m); var half = Math.floor(m / 2); if (!n || n < 2 || n > half || m % n !== 0) { error_ratchet_1.ErrorRatchet.throwFormattedErr('Invalid config - this function only makes sense for 2 < N < %d and %d evenly divisible by N', half, m); throw new Error('Invalid config - this function only makes sense for 2 < N < 31 and 60 evenly divisible by N'); } var rval = []; for (var i = 0; i < 60; i += n) { rval.push(i); } return rval; }; CronUtil.numberMatchesFilter = function (num, filter) { return !filter || filter.length === 0 || filter.includes(num); }; CronUtil.eventMatchesEntry = function (event, entry, cfg) { var rval = false; if (!!event && !!entry && !!cfg.timezone) { if (!!event.resources && event.resources.length > 0) { var eventSourceName = event.resources[0]; var nowInTZ = moment.tz(cfg.timezone); rval = !entry.eventFilter || entry.eventFilter.test(eventSourceName); rval = rval && CronUtil.numberMatchesFilter(nowInTZ.minute(), entry.minuteFilter); rval = rval && CronUtil.numberMatchesFilter(nowInTZ.hour(), entry.hourFilter); rval = rval && CronUtil.numberMatchesFilter(nowInTZ.day(), entry.dayOfWeekFilter); rval = rval && CronUtil.numberMatchesFilter(nowInTZ.date(), entry.dayOfMonthFilter); rval = rval && CronUtil.numberMatchesFilter(nowInTZ.month() + 1, entry.monthOfYearFilter); rval = rval && (!entry.contextMatchFilter || entry.contextMatchFilter.test(string_ratchet_1.StringRatchet.trimToEmpty(cfg.context))); rval = rval && (!entry.contextNoMatchFilter || !entry.contextNoMatchFilter.test(string_ratchet_1.StringRatchet.trimToEmpty(cfg.context))); } } return rval; }; CronUtil.cronEntryName = function (entry, idx) { if (idx === void 0) { idx = null; } require_ratchet_1.RequireRatchet.notNullOrUndefined(entry); var rval = null; if (!!entry) { rval = entry.name; rval = rval || entry['saltMineTaskType']; if (!rval && !!entry['directHandler']) { if (!!idx) { rval = 'Direct Entry ' + idx; } else { rval = 'Direct Entry (No idx specified)'; } } } else { rval = 'ERROR: no entry passed'; } return rval; }; return CronUtil; }()); exports.CronUtil = CronUtil; //# sourceMappingURL=cron-util.js.map