UNPKG

@digifi/jexl-functions

Version:
25 lines (24 loc) 1.19 kB
"use strict"; 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;