//#region src/constants.d.ts declare enum PriorityName { LEFT = "left", RIGHT = "right" } //#endregion //#region src/type.d.ts type UnionToIntersection = (U extends any ? (k: U) => void : never) extends ((k: infer I) => void) ? I : never; type Options = { /** * Merge object array properties. * * default: true */ array: boolean; /** * Remove duplicates, when merging array elements. * * default: false */ arrayDistinct: boolean; /** * Merge sources from left-to-right or right-to-left. * From v2 upwards default to left independent of the option priority. * * default: left (aka. options.priority) */ arrayPriority: `${PriorityName}`; /** * Strategy to merge different object keys. * * @param target * @param key * @param value */ strategy?: (target: Record, key: string, value: unknown) => Record | undefined; /** * Merge sources in place. * * default: false */ inPlace?: boolean; /** * Deep clone input sources. * * default: false */ clone?: boolean; /** * Merge sources from left-to-right or right-to-left. * From v2 upwards default to right. * * default: left */ priority: `${PriorityName}`; }; type OptionsInput = Partial; type MergerSource = any[] | Record; type MergerSourceUnwrap = T extends Array ? Return : T; type MergerResult = UnionToIntersection>; type MergerContext = { options: Options; map: WeakMap; }; type Merger = (...sources: B) => MergerResult; //#endregion //#region src/module.d.ts declare function createMerger(input?: OptionsInput): Merger; declare const merge: Merger; //#endregion //#region src/utils/array.d.ts declare function distinctArray(arr: T[]): T[]; //#endregion //#region src/utils/check.d.ts declare function isObject(item: unknown): item is Record; declare function isSafeKey(key: string): boolean; declare function isEqual(x: any, y: any): boolean; //#endregion //#region src/utils/clone.d.ts declare function polyfillClone(input: T): T; declare function clone(value: T): T; //#endregion //#region src/utils/object.d.ts declare function hasOwnProperty(obj: X, prop: Y): obj is X & Record; //#endregion //#region src/utils/options.d.ts declare function buildOptions(options?: OptionsInput): Options; declare function togglePriority(priority: `${PriorityName}`): "right" | "left"; //#endregion //#region src/presets.d.ts /** * Assign source attributes to a target object. * * @param target * @param sources */ declare function assign, B extends Record[]>(target: A, ...sources: B): A & MergerResult; //#endregion export { Merger, MergerContext, MergerResult, MergerSource, MergerSourceUnwrap, Options, OptionsInput, PriorityName, assign, buildOptions, clone, createMerger, distinctArray, hasOwnProperty, isEqual, isObject, isSafeKey, merge, polyfillClone, togglePriority }; //# sourceMappingURL=index.d.cts.map