UNPKG

diginext-utils

Version:
40 lines 1.24 kB
import { isObject } from "./isObject.js"; /** * 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 } * ``` */ export function merge(...objects) { const result = {}; for (const obj of objects) { if (!isObject(obj)) { continue; } for (const key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { const value = obj[key]; if (isObject(value) && 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