UNPKG

@factoryfour/jexl

Version:

Factory Four Jexl Implementation

61 lines (60 loc) 2.44 kB
"use strict"; 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;