UNPKG

remeda

Version:

A utility library for JavaScript and Typescript.

37 lines (35 loc) 2.25 kB
import { MergeDeep } from "type-fest"; //#region src/mergeDeep.d.ts /** * Merges the `source` object into the `destination` object. The merge is similar to performing `{ ...destination, ... source }` (where disjoint values from each object would be copied as-is, and for any overlapping props the value from `source` would be used); But for *each prop* (`p`), if **both** `destination` and `source` have a **plain-object** as a value, the value would be taken as the result of recursively deepMerging them (`result.p === deepMerge(destination.p, source.p)`). * * @param destination - The object to merge into. In general, this object would have it's values overridden. * @param source - The object to merge from. In general, shared keys would be taken from this object. * @returns The merged object. * @signature * R.mergeDeep(destination, source) * @example * R.mergeDeep({ foo: 'bar', x: 1 }, { foo: 'baz', y: 2 }) // => { foo: 'baz', x: 1, y: 2 } * @dataFirst * @category Object */ declare function mergeDeep<Destination extends object, Source extends object>(destination: Destination, source: Source): MergeDeep<Destination, Source>; /** * Merges the `source` object into the `destination` object. The merge is similar to performing `{ ...destination, ... source }` (where disjoint values from each object would be copied as-is, and for any overlapping props the value from `source` would be used); But for *each prop* (`p`), if **both** `destination` and `source` have a **plain-object** as a value, the value would be taken as the result of recursively deepMerging them (`result.p === deepMerge(destination.p, source.p)`). * * @param source - The object to merge from. In general, shared keys would be taken from this object. * @returns The merged object. * @signature * R.mergeDeep(source)(destination) * @example * R.pipe( * { foo: 'bar', x: 1 }, * R.mergeDeep({ foo: 'baz', y: 2 }), * ); // => { foo: 'baz', x: 1, y: 2 } * @dataLast * @category Object */ declare function mergeDeep<Source extends object>(source: Source): <Destination extends object>(target: Destination) => MergeDeep<Destination, Source>; //#endregion export { mergeDeep }; //# sourceMappingURL=mergeDeep-Bw0uatal.d.cts.map