@factoryfour/jexl
Version:
Factory Four Jexl Implementation
61 lines (60 loc) • 2.44 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.isValidShortIsoDate = exports.isValidIsoDate = exports.isoDateToJsDate = exports.toNumber = exports.isArrayArray = exports.isObjectArray = exports.oneHour = exports.oneMinute = exports.oneSecond = exports.leftPadZeros = exports.templateParser = void 0;
var type_check_1 = require("@factoryfour/type-check");
// Allow template values with the mustache format
exports.templateParser = /{{[\S\s]*?}}/gm;
var permissiveIsoDateRegex = /^(\d{4})-([01]\d)-([0-3]\d)/;
var strictIsoDateRegex = /^(\d{4})-([01]\d)-([0-3]\d)$/;
var leftPadZeros = function (value) {
if (value.length > 2) {
return value;
}
return '00'.concat(value).slice(-2);
};
exports.leftPadZeros = leftPadZeros;
exports.oneSecond = 1000;
exports.oneMinute = exports.oneSecond * 60;
exports.oneHour = exports.oneMinute * 60;
exports.isObjectArray = (0, type_check_1.isFromAs)((0, type_check_1.arrayOf)(type_check_1.asObject));
exports.isArrayArray = (0, type_check_1.isFromAs)((0, type_check_1.arrayOf)(type_check_1.asArray));
var toNumber = function (value) { return type_check_1.result.unwrapOr((0, type_check_1.asNumber)(value), 0); };
exports.toNumber = toNumber;
var isoDateToSimpleDate = function (isoDate) {
var regexResult = permissiveIsoDateRegex.exec(isoDate);
if (!regexResult)
return undefined;
var year = regexResult[1], month = regexResult[2], day = regexResult[3];
if (!year || !month || !day)
return undefined;
return {
year: +year,
month: +month,
monthIndex: +month - 1,
day: +day,
};
};
var simpleDateToJsDate = function (_a) {
var year = _a.year, monthIndex = _a.monthIndex, day = _a.day;
return new Date(year, monthIndex, day, 12, 0, 0, 0);
};
var isoDateToJsDate = function (isoDate) {
var simpleDate = isoDateToSimpleDate(isoDate);
if (simpleDate) {
return simpleDateToJsDate(simpleDate);
}
return undefined;
};
exports.isoDateToJsDate = isoDateToJsDate;
var isValidIsoDate = function (isoDate) {
if (typeof isoDate !== 'string')
return false;
return permissiveIsoDateRegex.test(isoDate);
};
exports.isValidIsoDate = isValidIsoDate;
var isValidShortIsoDate = function (isoDate) {
if (typeof isoDate !== 'string')
return false;
return strictIsoDateRegex.test(isoDate);
};
exports.isValidShortIsoDate = isValidShortIsoDate;