@bitblit/epsilon
Version:
Tiny adapter to simplify building API gateway Lambda APIS
76 lines • 3.55 kB
JavaScript
;
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