UNPKG

si-funciona

Version:

Funciones de utilidad para uso general. [General usage utility functions.]

37 lines (36 loc) 2.04 kB
import 'core-js/stable'; import { relevanceMap } from '../functions/relevancyFilter'; type mergeableItem = Array<any> | { [k: number | string]: any; }; /** * Function that takes one or more objects and combines them into one. * @typedef {Function} module:objectHelpers~mergeObjectsCallback * @memberOf module:objectHelpers * @param {...Object} objects - Provide a list of objects which will be merged starting from the end up into the first * @returns {*} */ type mergeObjectsCallback = (...objects: Array<Object>) => mergeableItem; type mergeObjectsBaseOptions = { mapLimit?: number; depthLimit?: number; relevancyRange?: number; map?: relevanceMap; useClone?: boolean; }; /** * Perform a deep merge of objects. This will return a function that will combine all objects and sub-objects. * Objects having the same attributes will overwrite from last object to first. * NOTE: Use the mapLimit and relevancyRange to resolve "too much recursion" when the object is large and is known to * have circular references. A high mapLimit may lead to heavy memory usage and slow performance. * @memberOf module:objectHelpers * @param {Object} [options={}] * @param {number} [options.mapLimit=100] - Size of temporary reference array used in memory before assessing relevancy. * @param {number} [options.depthLimit=-1] - Control how many nested levels deep will be used, -1 = no limit, >-1 = nth level limited. * @param {number} [options.relevancyRange=1000] - Total reference map length subtract this range, any relevancy less than that amount at time of evaluation will be removed. * @param {Iterable|array} [options.map=[]] - A predetermined list of references gathered (to be passed to itself during recursion). * @param {boolean} [options.useClone=false] * @returns {module:objectHelpers~mergeObjectsCallback|mergeObjectsCallback} */ declare const mergeObjectsBase: ({ mapLimit, depthLimit, relevancyRange, map, useClone, }?: mergeObjectsBaseOptions) => mergeObjectsCallback; export default mergeObjectsBase;