diff --git a/docs/deepmergeCustom.md b/docs/deepmergeCustom.md index c25bd000..fb3c5379 100644 --- a/docs/deepmergeCustom.md +++ b/docs/deepmergeCustom.md @@ -170,7 +170,7 @@ declaring a module block for this library and defining the same interface. declare module "deepmerge-ts" { interface DeepMergeFunctionURItoKind< Ts extends ReadonlyArray, - MF extends DeepMergeFunctionsURIs, + Fs extends DeepMergeFunctionsURIs, M, > { readonly MyCustomMergeURI: MyValue; @@ -215,7 +215,7 @@ customDeepmerge(x, y, z); // => { foo: [Date, Date, Date] } declare module "deepmerge-ts" { interface DeepMergeFunctionURItoKind< Ts extends ReadonlyArray, - MF extends DeepMergeFunctionsURIs, + Fs extends DeepMergeFunctionsURIs, M, > { readonly MyDeepMergeDatesURI: EveryIsDate extends true @@ -301,7 +301,7 @@ customizedDeepmerge(x, y, z); // => { key1: { subkey1: `one`, subkey2: `two` } } declare module "deepmerge-ts" { interface DeepMergeFunctionURItoKind< Ts extends Readonly>, - MF extends DeepMergeFunctionsURIs, + Fs extends DeepMergeFunctionsURIs, M, > { readonly FilterNullValues: FilterOut; @@ -433,7 +433,7 @@ customizedDeepmerge(x, y); // => { foo: { bar: { baz: "special merge", bar: { ba declare module "deepmerge-ts" { interface DeepMergeFunctionURItoKind< Ts extends Readonly>, - MF extends DeepMergeFunctionsURIs, + Fs extends DeepMergeFunctionsURIs, M, // This is the meta data type > { readonly KeyPathBasedMerge: Ts[number] extends number diff --git a/src/deepmerge.ts b/src/deepmerge.ts index adf24efb..6c816d46 100644 --- a/src/deepmerge.ts +++ b/src/deepmerge.ts @@ -150,19 +150,19 @@ function getUtils< export function mergeUnknowns< Ts extends ReadonlyArray, U extends DeepMergeFunctionUtils, - MF extends DeepMergeFunctionsURIs, + Fs extends DeepMergeFunctionsURIs, M, MM extends DeepMergeBuiltInMetaData = DeepMergeBuiltInMetaData, ->(values: Ts, utils: U, meta: M | undefined): DeepMergeHKT { +>(values: Ts, utils: U, meta: M | undefined): DeepMergeHKT { const filteredValues = utils.filterValues?.(values, meta) ?? values; if (filteredValues.length === 0) { - return undefined as DeepMergeHKT; + return undefined as DeepMergeHKT; } if (filteredValues.length === 1) { return mergeOthers(filteredValues, utils, meta) as DeepMergeHKT< Ts, - MF, + Fs, M >; } @@ -177,7 +177,7 @@ export function mergeUnknowns< return mergeOthers(filteredValues, utils, meta) as DeepMergeHKT< Ts, - MF, + Fs, M >; } @@ -185,11 +185,11 @@ export function mergeUnknowns< switch (type) { case ObjectType.RECORD: { - return mergeRecords( + return mergeRecords( filteredValues as ReadonlyArray>>, utils, meta, - ) as DeepMergeHKT; + ) as DeepMergeHKT; } case ObjectType.ARRAY: { @@ -197,7 +197,7 @@ export function mergeUnknowns< filteredValues as ReadonlyArray>>, utils, meta, - ) as DeepMergeHKT; + ) as DeepMergeHKT; } case ObjectType.SET: { @@ -205,7 +205,7 @@ export function mergeUnknowns< filteredValues as ReadonlyArray>>, utils, meta, - ) as DeepMergeHKT; + ) as DeepMergeHKT; } case ObjectType.MAP: { @@ -215,13 +215,13 @@ export function mergeUnknowns< >, utils, meta, - ) as DeepMergeHKT; + ) as DeepMergeHKT; } default: { return mergeOthers(filteredValues, utils, meta) as DeepMergeHKT< Ts, - MF, + Fs, M >; } @@ -235,7 +235,7 @@ export function mergeUnknowns< */ function mergeRecords< U extends DeepMergeFunctionUtils, - MF extends DeepMergeFunctionsURIs, + Fs extends DeepMergeFunctionsURIs, M, MM extends DeepMergeBuiltInMetaData = DeepMergeBuiltInMetaData, >( @@ -255,7 +255,7 @@ function mergeRecords< return utils.defaultMergeFunctions.mergeRecords< ReadonlyArray>>, U, - MF, + Fs, M, MM >(values, utils, meta); diff --git a/src/defaults/vanilla.ts b/src/defaults/vanilla.ts index 4bede882..f2276260 100644 --- a/src/defaults/vanilla.ts +++ b/src/defaults/vanilla.ts @@ -30,14 +30,14 @@ export type MergeFunctions = { export function mergeRecords< Ts extends ReadonlyArray>, U extends DeepMergeFunctionUtils, - MF extends DeepMergeFunctionsURIs, + Fs extends DeepMergeFunctionsURIs, M, MM extends DeepMergeBuiltInMetaData = DeepMergeBuiltInMetaData, >( values: Ts, utils: U, meta: M | undefined, -): DeepMergeRecordsDefaultHKT { +): DeepMergeRecordsDefaultHKT { const result: Record = {}; for (const key of getKeys(values)) { @@ -58,7 +58,7 @@ export function mergeRecords< parents: values, } as unknown as MM); - const propertyResult = mergeUnknowns, U, MF, M, MM>( + const propertyResult = mergeUnknowns, U, Fs, M, MM>( propValues, utils, updatedMeta, @@ -80,7 +80,7 @@ export function mergeRecords< } } - return result as DeepMergeRecordsDefaultHKT; + return result as DeepMergeRecordsDefaultHKT; } /** @@ -90,10 +90,10 @@ export function mergeRecords< */ export function mergeArrays< Ts extends ReadonlyArray>, - MF extends DeepMergeFunctionsURIs, + Fs extends DeepMergeFunctionsURIs, M, ->(values: Ts): DeepMergeArraysDefaultHKT { - return values.flat() as DeepMergeArraysDefaultHKT; +>(values: Ts): DeepMergeArraysDefaultHKT { + return values.flat() as DeepMergeArraysDefaultHKT; } /** diff --git a/src/types/defaults.ts b/src/types/defaults.ts index 5ad6433a..be410846 100644 --- a/src/types/defaults.ts +++ b/src/types/defaults.ts @@ -95,12 +95,12 @@ type RecordToRecordMeta> = */ export type DeepMergeRecordsDefaultHKT< Ts extends ReadonlyArray, - MF extends DeepMergeFunctionsURIs, + Fs extends DeepMergeFunctionsURIs, M, > = Ts extends ReadonlyArray> ? SimplifyObject< - DeepMergeRecordMetaDefaultHKTProps, MF, M> + DeepMergeRecordMetaDefaultHKTProps, Fs, M> > : never; @@ -109,11 +109,11 @@ export type DeepMergeRecordsDefaultHKT< */ type DeepMergeRecordMetaDefaultHKTProps< RecordMetas, - MF extends DeepMergeFunctionsURIs, + Fs extends DeepMergeFunctionsURIs, M, > = RecordMetas extends ReadonlyArray - ? CreateRecordFromMeta, MF, M> + ? CreateRecordFromMeta, Fs, M> : never; type MergeRecordMeta> = @@ -143,7 +143,7 @@ type GroupValuesByKey = Ts extends readonly [ } : never; -type CreateRecordFromMeta = +type CreateRecordFromMeta = Ts extends ReadonlyArray ? TupleToIntersection<{ [I in keyof Ts]: Ts[I] extends { @@ -151,7 +151,7 @@ type CreateRecordFromMeta = values: infer Values extends ReadonlyArray; optional: infer O extends boolean; } - ? CreateRecordForKeyFromMeta + ? CreateRecordForKeyFromMeta : never; }> : never; @@ -160,14 +160,14 @@ type CreateRecordForKeyFromMeta< Key extends PropertyKey, Values extends ReadonlyArray, Optional extends boolean, - MF extends DeepMergeFunctionsURIs, + Fs extends DeepMergeFunctionsURIs, M, > = Optional extends true ? { - [k in Key]+?: DeepMergeHKT; + [k in Key]+?: DeepMergeHKT; } : { - [k in Key]-?: DeepMergeHKT; + [k in Key]-?: DeepMergeHKT; }; /** @@ -267,16 +267,16 @@ type DeepMergeRecordPropertyMetaDefaultHKTGetPossibleHelper< */ export type DeepMergeArraysDefaultHKT< Ts extends ReadonlyArray, - MF extends DeepMergeFunctionsURIs, + Fs extends DeepMergeFunctionsURIs, M, -> = DeepMergeArraysDefaultHKTHelper; +> = DeepMergeArraysDefaultHKTHelper; /** * Tail-recursive helper type for DeepMergeArraysDefaultHKT. */ type DeepMergeArraysDefaultHKTHelper< Ts extends ReadonlyArray, - MF extends DeepMergeFunctionsURIs, + Fs extends DeepMergeFunctionsURIs, M, Acc extends ReadonlyArray, > = Ts extends readonly [ @@ -287,7 +287,7 @@ type DeepMergeArraysDefaultHKTHelper< ReadonlyArray, ...ReadonlyArray>, ] - ? DeepMergeArraysDefaultHKTHelper + ? DeepMergeArraysDefaultHKTHelper : [...Acc, ...Head] : never; diff --git a/src/types/merging.ts b/src/types/merging.ts index 4aab0c6c..3e8f6c98 100644 --- a/src/types/merging.ts +++ b/src/types/merging.ts @@ -20,12 +20,12 @@ import { // eslint-disable-next-line ts/consistent-type-definitions export interface DeepMergeFunctionURItoKind< Ts extends ReadonlyArray, - MF extends DeepMergeFunctionsURIs, + Fs extends DeepMergeFunctionsURIs, in out M, > { readonly DeepMergeLeafURI: DeepMergeLeaf; - readonly DeepMergeRecordsDefaultURI: DeepMergeRecordsDefaultHKT; - readonly DeepMergeArraysDefaultURI: DeepMergeArraysDefaultHKT; + readonly DeepMergeRecordsDefaultURI: DeepMergeRecordsDefaultHKT; + readonly DeepMergeArraysDefaultURI: DeepMergeArraysDefaultHKT; readonly DeepMergeSetsDefaultURI: DeepMergeSetsDefaultHKT; readonly DeepMergeMapsDefaultURI: DeepMergeMapsDefaultHKT; readonly DeepMergeFilterValuesDefaultURI: DeepMergeFilterValuesDefaultHKT; @@ -38,9 +38,9 @@ export interface DeepMergeFunctionURItoKind< type DeepMergeFunctionKind< URI extends DeepMergeFunctionURIs, Ts extends ReadonlyArray, - MF extends DeepMergeFunctionsURIs, + Fs extends DeepMergeFunctionsURIs, M, -> = DeepMergeFunctionURItoKind[URI]; +> = DeepMergeFunctionURItoKind[URI]; /** * A union of all valid merge function URIs. @@ -91,16 +91,16 @@ export type DeepMergeFunctionsURIs = Readonly<{ */ export type DeepMergeHKT< Ts extends ReadonlyArray, - MF extends DeepMergeFunctionsURIs, + Fs extends DeepMergeFunctionsURIs, M, > = IsTuple extends true ? Ts extends readonly [] ? undefined - : DeepMergeHKTHelper, MF, M> + : DeepMergeHKTHelper, Fs, M> : unknown; -type DeepMergeHKTHelper = +type DeepMergeHKTHelper = Ts extends ReadonlyArray ? IsTuple extends true ? Ts extends readonly [] @@ -108,14 +108,14 @@ type DeepMergeHKTHelper = : Ts extends readonly [infer T1] ? T1 : EveryIsArray extends true - ? DeepMergeArraysHKT + ? DeepMergeArraysHKT : EveryIsMap extends true - ? DeepMergeMapsHKT + ? DeepMergeMapsHKT : EveryIsSet extends true - ? DeepMergeSetsHKT + ? DeepMergeSetsHKT : EveryIsRecord extends true - ? DeepMergeRecordsHKT - : DeepMergeOthersHKT + ? DeepMergeRecordsHKT + : DeepMergeOthersHKT : unknown : never; @@ -124,54 +124,54 @@ type DeepMergeHKTHelper = */ type DeepMergeRecordsHKT< Ts extends ReadonlyArray, - MF extends DeepMergeFunctionsURIs, + Fs extends DeepMergeFunctionsURIs, M, -> = DeepMergeFunctionKind; +> = DeepMergeFunctionKind; /** * Deep merge arrays. */ type DeepMergeArraysHKT< Ts extends ReadonlyArray, - MF extends DeepMergeFunctionsURIs, + Fs extends DeepMergeFunctionsURIs, M, -> = DeepMergeFunctionKind; +> = DeepMergeFunctionKind; /** * Deep merge sets. */ type DeepMergeSetsHKT< Ts extends ReadonlyArray, - MF extends DeepMergeFunctionsURIs, + Fs extends DeepMergeFunctionsURIs, M, -> = DeepMergeFunctionKind; +> = DeepMergeFunctionKind; /** * Deep merge maps. */ type DeepMergeMapsHKT< Ts extends ReadonlyArray, - MF extends DeepMergeFunctionsURIs, + Fs extends DeepMergeFunctionsURIs, M, -> = DeepMergeFunctionKind; +> = DeepMergeFunctionKind; /** * Deep merge other things. */ type DeepMergeOthersHKT< Ts extends ReadonlyArray, - MF extends DeepMergeFunctionsURIs, + Fs extends DeepMergeFunctionsURIs, M, -> = DeepMergeFunctionKind; +> = DeepMergeFunctionKind; /** * Filter values. */ type FilterValuesHKT< Ts extends ReadonlyArray, - MF extends DeepMergeFunctionsURIs, + Fs extends DeepMergeFunctionsURIs, M, -> = DeepMergeFunctionKind; +> = DeepMergeFunctionKind; /** * The merge function that returns a leaf. diff --git a/tests/deepmerge-custom.test.ts b/tests/deepmerge-custom.test.ts index d312de79..22fbef26 100644 --- a/tests/deepmerge-custom.test.ts +++ b/tests/deepmerge-custom.test.ts @@ -17,7 +17,7 @@ import { areAllNumbers, hasProp } from "./utils"; declare module "../src/types" { interface DeepMergeFunctionURItoKind< Ts extends ReadonlyArray, - MF extends DeepMergeFunctionsURIs, + Fs extends DeepMergeFunctionsURIs, M, > { readonly CustomArrays1: string[]; @@ -27,7 +27,7 @@ declare module "../src/types" { declare module "../src/types" { interface DeepMergeFunctionURItoKind< Ts extends ReadonlyArray, - MF extends DeepMergeFunctionsURIs, + Fs extends DeepMergeFunctionsURIs, M, > { readonly CustomArrays2: Ts extends Readonly< @@ -42,10 +42,10 @@ declare module "../src/types" { declare module "../src/types" { interface DeepMergeFunctionURItoKind< Ts extends ReadonlyArray, - MF extends DeepMergeFunctionsURIs, + Fs extends DeepMergeFunctionsURIs, M, > { - readonly CustomRecords3: Entries>; + readonly CustomRecords3: Entries>; } } @@ -58,7 +58,7 @@ type Entries = Array< declare module "../src/types" { interface DeepMergeFunctionURItoKind< Ts extends ReadonlyArray, - MF extends DeepMergeFunctionsURIs, + Fs extends DeepMergeFunctionsURIs, M, > { readonly NoArrayMerge1: DeepMergeLeaf; @@ -68,7 +68,7 @@ declare module "../src/types" { declare module "../src/types" { interface DeepMergeFunctionURItoKind< Ts extends ReadonlyArray, - MF extends DeepMergeFunctionsURIs, + Fs extends DeepMergeFunctionsURIs, M, > { readonly MergeDates1: EveryIsDate extends true ? Ts : DeepMergeLeaf; @@ -85,7 +85,7 @@ type EveryIsDate> = declare module "../src/types" { interface DeepMergeFunctionURItoKind< Ts extends Readonly>, - MF extends DeepMergeFunctionsURIs, + Fs extends DeepMergeFunctionsURIs, M, > { readonly KeyPathBasedMerge: Ts[number] extends number @@ -97,7 +97,7 @@ declare module "../src/types" { declare module "../src/types" { interface DeepMergeFunctionURItoKind< Ts extends ReadonlyArray, - MF extends DeepMergeFunctionsURIs, + Fs extends DeepMergeFunctionsURIs, M, > { readonly CustomOthers3: Ts[number] extends object @@ -107,7 +107,7 @@ declare module "../src/types" { [J in keyof Ts[I]]: Ts[I][J]; }; }, - MF, + Fs, M > : DeepMergeLeaf; @@ -117,7 +117,7 @@ declare module "../src/types" { declare module "../src/types" { interface DeepMergeFunctionURItoKind< Ts extends ReadonlyArray, - MF extends DeepMergeFunctionsURIs, + Fs extends DeepMergeFunctionsURIs, M, > { readonly CustomFilterValues1: FilterOut;