UNPKG

@newdash/newdash

Version:

javascript/typescript utility library

37 lines (36 loc) 1.35 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); /** * Creates an array that is the composition of partially applied arguments, * placeholders, and provided arguments into a single array of arguments. * * @private * @param {Array} args The provided arguments. * @param {Array} partials The arguments to prepend to those provided. * @param {Array} holders The `partials` placeholder indexes. * @params {boolean} [isCurried] Specify composing for a curried function. * @returns {Array} Returns the new array of composed arguments. */ function composeArgs(args, partials, holders, isCurried) { const argsLength = args.length; const holdersLength = holders.length; const leftLength = partials.length; let argsIndex = -1; let leftIndex = -1; let rangeLength = Math.max(argsLength - holdersLength, 0); const result = new Array(leftLength + rangeLength); const isUncurried = !isCurried; while (++leftIndex < leftLength) { result[leftIndex] = partials[leftIndex]; } while (++argsIndex < holdersLength) { if (isUncurried || argsIndex < argsLength) { result[holders[argsIndex]] = args[argsIndex]; } } while (rangeLength--) { result[leftIndex++] = args[argsIndex++]; } return result; } exports.default = composeArgs;