UNPKG

diginext-utils

Version:
43 lines 1.38 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.merge = merge; const isObject_1 = require("./isObject"); /** * Deeply merges multiple objects into a new object. * Later objects' properties override earlier ones. * Nested objects are merged recursively. * * @template T - The type of the target object * @param objects - Objects to merge * @returns A new merged object * * @example * ```ts * merge({ a: 1 }, { b: 2 }); // { a: 1, b: 2 } * merge({ a: 1, b: { c: 2 } }, { b: { d: 3 } }); // { a: 1, b: { c: 2, d: 3 } } * merge({ a: 1 }, { a: 2 }); // { a: 2 } * ``` */ function merge(...objects) { const result = {}; for (const obj of objects) { if (!(0, isObject_1.isObject)(obj)) { continue; } for (const key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { const value = obj[key]; if ((0, isObject_1.isObject)(value) && (0, isObject_1.isObject)(result[key])) { // Deep merge nested objects result[key] = merge(result[key], value); } else { // Direct assignment for primitives and arrays result[key] = value; } } } } return result; } //# sourceMappingURL=merge.js.map