@digifi/jexl-functions
Version:
Package with available JEXL functions
45 lines (44 loc) • 2.44 kB
JavaScript
;
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;