@digifi/jexl-functions
Version:
Package with available JEXL functions
25 lines (24 loc) • 1.19 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createSaveFlattenFunction = void 0;
const errors_1 = require("../errors");
const validation_1 = require("./validation");
const createSaveFlattenFunction = (maxFlattenArraySize) => {
const validateArrayMaxSize = (0, validation_1.createValidateArrayLikeValueMaxSizeFunction)(maxFlattenArraySize);
return (args) => {
validateArrayMaxSize(args);
return args.reduce((flattenArray, arg) => {
const currentFlattenArrayLength = flattenArray.length;
const argArrayLength = Array.isArray(arg) ? arg.length : 1;
if (currentFlattenArrayLength + argArrayLength > maxFlattenArraySize) {
throw new errors_1.JexlFunctionExecutionError(`Items size exceeded. Provided ${currentFlattenArrayLength + argArrayLength}, maximum ${maxFlattenArraySize}`);
}
if (Array.isArray(arg)) {
return arg.length ? flattenArray.concat(arg) : flattenArray;
}
flattenArray.push(arg);
return flattenArray;
}, []);
};
};
exports.createSaveFlattenFunction = createSaveFlattenFunction;