UNPKG

@digifi/jexl-functions

Version:
45 lines (44 loc) 2.44 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createValidateCriteria = exports.createValidateTextLengthFunction = exports.createValidateArrayLikeValueMaxSizeFunction = void 0; const errors_1 = require("../errors"); const criteria_1 = require("./criteria"); const createValidateArrayLikeValueMaxSizeFunction = (defaultMaxSize) => { return (arrayLikeValue, maxSizeOverride) => { const maxSize = maxSizeOverride !== null && maxSizeOverride !== void 0 ? maxSizeOverride : defaultMaxSize; const isSizeExceeded = arrayLikeValue.length > maxSize; if (isSizeExceeded) { throw new errors_1.JexlFunctionExecutionError(`Items size exceeded. Provided ${arrayLikeValue.length}, maximum ${maxSize}`); } }; }; exports.createValidateArrayLikeValueMaxSizeFunction = createValidateArrayLikeValueMaxSizeFunction; const createValidateTextLengthFunction = (defaultMaxTextLength) => { return (text, maxTextLengthOverride) => { const maxLength = maxTextLengthOverride !== null && maxTextLengthOverride !== void 0 ? maxTextLengthOverride : defaultMaxTextLength; if (text.length > maxLength) { throw new errors_1.JexlFunctionExecutionError(`Argument max length exceeded. Provided ${text.length}, maximum ${maxLength}`); } }; }; exports.createValidateTextLengthFunction = createValidateTextLengthFunction; const createValidateCriteria = (maxStringCriteriaLength) => { const arrayCriteriaLength = 2; const validateStringCriteriaMaxLength = (0, exports.createValidateTextLengthFunction)(maxStringCriteriaLength); const validateArrayCriteriaMaxLength = (0, exports.createValidateArrayLikeValueMaxSizeFunction)(arrayCriteriaLength); return (criteria) => { if (typeof criteria !== 'string' && !Array.isArray(criteria)) { throw new errors_1.JexlFunctionExecutionError(`Criteria must be a string or array. Provided ${typeof criteria}`); } if (typeof criteria === 'string') { validateStringCriteriaMaxLength(criteria); return; } validateArrayCriteriaMaxLength(criteria); const [operation] = criteria; if (!criteria_1.CRITERIA_OPERATORS_SET.has(operation)) { throw new errors_1.JexlFunctionExecutionError('Criteria operation is invalid.'); } }; }; exports.createValidateCriteria = createValidateCriteria;