UNPKG

@monstermann/fn

Version:

A utility library for TypeScript.

28 lines (26 loc) 667 B
import { dfdlT } from "@monstermann/dfdl"; import { isMutable, markAsMutable } from "@monstermann/remmi"; //#region src/object/merge.ts /** * `merge(target, source)` * * Merges properties from `source` object into `target` object. * * ```ts * merge({ a: 1, b: 2 }, { a: 3, c: 4 }); // { a: 3, b: 2 } * ``` * * ```ts * pipe({ a: 1, b: 2 }, merge({ a: 3, c: 4 })); // { a: 3, b: 2 } * ``` */ const merge = dfdlT((target, source) => { for (const key in source) if (target[key] !== source[key]) if (isMutable(target)) return Object.assign(target, source); else return markAsMutable({ ...target, ...source }); return target; }, 2); //#endregion export { merge };