jexl-functions-fork
Version:
Package with available JEXL functions
228 lines (227 loc) • 7.49 kB
JavaScript
;
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,
};
});