@monstermann/fn
Version:
A utility library for TypeScript.
28 lines (26 loc) • 667 B
JavaScript
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 };