UNPKG

jexl-functions-fork

Version:
228 lines (227 loc) 7.49 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); var jexl_1 = require("@digifi/jexl"); var module_1 = require("../utils/module"); var information_1 = __importDefault(require("./information")); exports.default = (0, module_1.createModule)(function (_a, options) { var validateArrayMaxSize = _a.validateArrayMaxSize; var _b = (0, information_1.default)(), ISDATESTRING = _b.ISDATESTRING, ISEMPTY = _b.ISEMPTY; var AND = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } validateArrayMaxSize(args); // Filter args to keep previous functions working var filteredArgs = args.filter(function (arg) { return arg !== null && arg !== undefined && typeof arg !== 'string'; }); return filteredArgs.every(function (arg) { return !!arg; }); }; var OR = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } validateArrayMaxSize(args); // Filter args to keep previous functions working var filteredArgs = args.filter(function (arg) { return arg !== null && arg !== undefined && typeof arg !== 'string'; }); return filteredArgs.some(function (arg) { return !!arg; }); }; var XOR = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } validateArrayMaxSize(args); var passedCount = args.reduce(function (previousPassedCount, arg) { return !!arg ? previousPassedCount + 1 : previousPassedCount; }, 0); return !!(Math.floor(Math.abs(passedCount)) & 1); }; var IF = function (condition) { var values = []; for (var _i = 1; _i < arguments.length; _i++) { values[_i - 1] = arguments[_i]; } var thenValue = values[0], elseValue = values[1]; // Keep it to do not break previous functions thenValue = values.length >= 1 ? thenValue : true; elseValue = values.length === 2 ? elseValue : false; if (thenValue === undefined || thenValue === null) { thenValue = 0; } if (elseValue === undefined || elseValue === null) { elseValue = 0; } return condition ? thenValue : elseValue; }; var NOT = function (logical) { return !logical; }; var IFS = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } validateArrayMaxSize(args, options.defaultMaxArraySize * 2); for (var i = 0; i < args.length / 2; i++) { if (args[i * 2]) { return args[i * 2 + 1]; } } throw new jexl_1.ExecutionError('Condition parameter is not defined'); }; var TRUE = function () { return true; }; var FALSE = function () { return false; }; var SWITCH = function (value) { var args = []; for (var _i = 1; _i < arguments.length; _i++) { args[_i - 1] = arguments[_i]; } validateArrayMaxSize(args, options.defaultMaxArraySize * 2); var switchCount = Math.floor(args.length / 2); var defaultCase = args.length % 2 === 0 ? null : args[args.length - 1]; for (var i = 0; i < switchCount; i++) { if (value === args[i * 2]) { return args[i * 2 + 1]; } } return defaultCase; }; var GT = function (value, compareTo) { if (ISEMPTY(compareTo) || ISEMPTY(value)) { return false; } if (ISDATESTRING(compareTo)) { compareTo = Date.parse(compareTo); } if (ISDATESTRING(value)) { value = Date.parse(value); } var typedValue = value; var typedCompareTo = compareTo; return typedValue > typedCompareTo; }; var LT = function (value, compareTo) { if (ISEMPTY(compareTo) || ISEMPTY(value)) { return false; } if (ISDATESTRING(compareTo)) { compareTo = Date.parse(compareTo); } if (ISDATESTRING(value)) { value = Date.parse(value); } var typedValue = value; var typedCompareTo = compareTo; return typedValue < typedCompareTo; }; var LTE = function (value, compareTo) { if (ISEMPTY(compareTo) || ISEMPTY(value)) { return false; } if (ISDATESTRING(compareTo)) { compareTo = Date.parse(compareTo); } if (ISDATESTRING(value)) { value = Date.parse(value); } if (compareTo !== 0 && !compareTo) { return true; } var typedValue = value; var typedCompareTo = compareTo; return typedValue <= typedCompareTo; }; var GTE = function (value, compareTo) { if (ISEMPTY(compareTo) || ISEMPTY(value)) { return false; } if (ISDATESTRING(compareTo)) { compareTo = Date.parse(compareTo); } if (ISDATESTRING(value)) { value = Date.parse(value); } if (value !== 0 && !value) { return false; } var typedValue = value; var typedCompareTo = compareTo; return typedValue >= typedCompareTo; }; var RANGE = function (value, min, max) { if (ISEMPTY(min) || ISEMPTY(max) || ISEMPTY(value)) { return false; } if (ISDATESTRING(min)) { min = Date.parse(min); } if (ISDATESTRING(max)) { max = Date.parse(max); } if (ISDATESTRING(value)) { value = Date.parse(value); } if (value !== 0 && !value) { return false; } var typedValue = value; var typedMin = min; var typedMax = max; if (typedMin > typedMax) { return typedValue <= typedMin && typedValue >= typedMax; } return typedValue >= typedMin && typedValue <= typedMax; }; var EQUAL = function (value, compareTo) { if (ISDATESTRING(compareTo)) { compareTo = Date.parse(compareTo); } if (ISDATESTRING(value)) { value = Date.parse(value); } return value === compareTo; }; var INCLUDES = function (value, includesSet) { validateArrayMaxSize(includesSet); return includesSet.includes(value); }; var NOTEQUAL = function (value, compareTo) { return !EQUAL(value, compareTo); }; var NINCLUDES = function (value, notIncludesSet) { validateArrayMaxSize(notIncludesSet); return !INCLUDES(value, notIncludesSet); }; return { AND: AND, OR: OR, XOR: XOR, IF: IF, NOT: NOT, IFS: IFS, TRUE: TRUE, FALSE: FALSE, SWITCH: SWITCH, GTE: GTE, LTE: LTE, LT: LT, GT: GT, EQUAL: EQUAL, NOTEQUAL: NOTEQUAL, NINCLUDES: NINCLUDES, INCLUDES: INCLUDES, RANGE: RANGE, }; });