UNPKG

@newdash/newdash

Version:

javascript/typescript utility library

45 lines (44 loc) 1.87 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const Stack_1 = __importDefault(require("./Stack")); const assignMergeValue_1 = __importDefault(require("./assignMergeValue")); const baseFor_1 = __importDefault(require("./baseFor")); const baseMergeDeep_1 = __importDefault(require("./baseMergeDeep")); const isObject_1 = __importDefault(require("../isObject")); const keysIn_1 = __importDefault(require("../keysIn")); const safeGet_1 = __importDefault(require("./safeGet")); /** * The base implementation of `merge` without support for multiple sources. * * @private * @param {Object} object The destination object. * @param {Object} source The source object. * @param {number} srcIndex The index of `source`. * @param {Function} [customizer] The function to customize merged values. * @param {Object} [stack] Tracks traversed source values and their merged * counterparts. */ function baseMerge(object, source, srcIndex, customizer, stack) { if (object === source) { return; } (0, baseFor_1.default)(source, function (srcValue, key) { stack || (stack = new Stack_1.default); if ((0, isObject_1.default)(srcValue)) { (0, baseMergeDeep_1.default)(object, source, key, srcIndex, baseMerge, customizer, stack); } else { var newValue = customizer ? customizer((0, safeGet_1.default)(object, key), srcValue, (key + ''), object, source, stack) : undefined; if (newValue === undefined) { newValue = srcValue; } (0, assignMergeValue_1.default)(object, key, newValue); } }, keysIn_1.default); } exports.default = baseMerge;