diff --git a/src/deepmerge-into.ts b/src/deepmerge-into.ts index 78b5eb77..c63d495e 100644 --- a/src/deepmerge-into.ts +++ b/src/deepmerge-into.ts @@ -140,7 +140,10 @@ export function deepmergeIntoCustom< * * @param options - The options the user specified */ -function getIntoUtils( +function getIntoUtils< + M, + MM extends DeepMergeBuiltInMetaData = DeepMergeBuiltInMetaData +>( options: DeepMergeIntoOptions, customizedDeepmergeInto: DeepMergeMergeIntoFunctionUtils< M, @@ -183,7 +186,7 @@ export function mergeUnknownsInto< Ts extends ReadonlyArray, U extends DeepMergeMergeIntoFunctionUtils, M, - MM extends DeepMergeBuiltInMetaData + MM extends DeepMergeBuiltInMetaData = DeepMergeBuiltInMetaData >( m_target: Reference, values: Ts, @@ -262,7 +265,7 @@ export function mergeUnknownsInto< function mergeRecordsInto< U extends DeepMergeMergeIntoFunctionUtils, M, - MM extends DeepMergeBuiltInMetaData + MM extends DeepMergeBuiltInMetaData = DeepMergeBuiltInMetaData >( m_target: Reference>, values: ReadonlyArray>>, @@ -295,7 +298,7 @@ function mergeRecordsInto< function mergeArraysInto< U extends DeepMergeMergeIntoFunctionUtils, M, - MM extends DeepMergeBuiltInMetaData + MM extends DeepMergeBuiltInMetaData = DeepMergeBuiltInMetaData >( m_target: Reference, values: ReadonlyArray>, @@ -323,7 +326,7 @@ function mergeArraysInto< function mergeSetsInto< U extends DeepMergeMergeIntoFunctionUtils, M, - MM extends DeepMergeBuiltInMetaData + MM extends DeepMergeBuiltInMetaData = DeepMergeBuiltInMetaData >( m_target: Reference>, values: ReadonlyArray>>, @@ -346,7 +349,7 @@ function mergeSetsInto< function mergeMapsInto< U extends DeepMergeMergeIntoFunctionUtils, M, - MM extends DeepMergeBuiltInMetaData + MM extends DeepMergeBuiltInMetaData = DeepMergeBuiltInMetaData >( m_target: Reference>, values: ReadonlyArray>>, @@ -369,7 +372,7 @@ function mergeMapsInto< function mergeOthersInto< U extends DeepMergeMergeIntoFunctionUtils, M, - MM extends DeepMergeBuiltInMetaData + MM extends DeepMergeBuiltInMetaData = DeepMergeBuiltInMetaData >( m_target: Reference, values: ReadonlyArray, diff --git a/src/deepmerge.ts b/src/deepmerge.ts index 8007a01f..13b737a0 100644 --- a/src/deepmerge.ts +++ b/src/deepmerge.ts @@ -108,7 +108,10 @@ export function deepmergeCustom< * * @param options - The options the user specified */ -function getUtils( +function getUtils< + M, + MM extends DeepMergeBuiltInMetaData = DeepMergeBuiltInMetaData +>( options: DeepMergeOptions, customizedDeepmerge: DeepMergeMergeFunctionUtils["deepmerge"] ): DeepMergeMergeFunctionUtils { @@ -147,7 +150,7 @@ export function mergeUnknowns< U extends DeepMergeMergeFunctionUtils, MF extends DeepMergeMergeFunctionsURIs, M, - MM extends DeepMergeBuiltInMetaData + MM extends DeepMergeBuiltInMetaData = DeepMergeBuiltInMetaData >(values: Ts, utils: U, meta: M | undefined): DeepMergeHKT { if (values.length === 0) { return undefined as DeepMergeHKT; @@ -230,7 +233,7 @@ function mergeRecords< U extends DeepMergeMergeFunctionUtils, MF extends DeepMergeMergeFunctionsURIs, M, - MM extends DeepMergeBuiltInMetaData + MM extends DeepMergeBuiltInMetaData = DeepMergeBuiltInMetaData >( values: ReadonlyArray>>, utils: U, @@ -265,7 +268,7 @@ function mergeRecords< function mergeArrays< U extends DeepMergeMergeFunctionUtils, M, - MM extends DeepMergeBuiltInMetaData + MM extends DeepMergeBuiltInMetaData = DeepMergeBuiltInMetaData >( values: ReadonlyArray>>, utils: U, @@ -293,7 +296,7 @@ function mergeArrays< function mergeSets< U extends DeepMergeMergeFunctionUtils, M, - MM extends DeepMergeBuiltInMetaData + MM extends DeepMergeBuiltInMetaData = DeepMergeBuiltInMetaData >( values: ReadonlyArray>>, utils: U, @@ -320,7 +323,7 @@ function mergeSets< function mergeMaps< U extends DeepMergeMergeFunctionUtils, M, - MM extends DeepMergeBuiltInMetaData + MM extends DeepMergeBuiltInMetaData = DeepMergeBuiltInMetaData >( values: ReadonlyArray>>, utils: U, @@ -347,7 +350,7 @@ function mergeMaps< function mergeOthers< U extends DeepMergeMergeFunctionUtils, M, - MM extends DeepMergeBuiltInMetaData + MM extends DeepMergeBuiltInMetaData = DeepMergeBuiltInMetaData >(values: ReadonlyArray, utils: U, meta: M | undefined) { const result = utils.mergeFunctions.mergeOthers(values, utils, meta); diff --git a/src/defaults/into.ts b/src/defaults/into.ts index 8bd5b3f7..256e173d 100644 --- a/src/defaults/into.ts +++ b/src/defaults/into.ts @@ -31,7 +31,7 @@ export function mergeRecords< Ts extends ReadonlyArray>, U extends DeepMergeMergeIntoFunctionUtils, M, - MM extends DeepMergeBuiltInMetaData + MM extends DeepMergeBuiltInMetaData = DeepMergeBuiltInMetaData >( m_target: Reference>, values: Ts, diff --git a/src/defaults/vanilla.ts b/src/defaults/vanilla.ts index 9883f786..c4e10597 100644 --- a/src/defaults/vanilla.ts +++ b/src/defaults/vanilla.ts @@ -36,7 +36,7 @@ export function mergeRecords< U extends DeepMergeMergeFunctionUtils, MF extends DeepMergeMergeFunctionsURIs, M, - MM extends DeepMergeBuiltInMetaData + MM extends DeepMergeBuiltInMetaData = DeepMergeBuiltInMetaData >( values: Ts, utils: U, diff --git a/src/types/options.ts b/src/types/options.ts index d6c5bc82..5266021f 100644 --- a/src/types/options.ts +++ b/src/types/options.ts @@ -8,7 +8,7 @@ import type { DeepMergeBuiltInMetaData } from "./merging.js"; */ export type DeepMergeOptions< in out M, - MM extends Readonly> = DeepMergeBuiltInMetaData + MM extends Readonly> = {} > = Partial>; /** @@ -16,20 +16,20 @@ export type DeepMergeOptions< */ export type DeepMergeIntoOptions< in out M, - MM extends Readonly> = DeepMergeBuiltInMetaData + MM extends Readonly> = {} > = Partial>; -type MetaDataUpdater = ( - previousMeta: M | undefined, - metaMeta: Readonly> -) => M; +type MetaDataUpdater< + in out M, + MM extends DeepMergeBuiltInMetaData = DeepMergeBuiltInMetaData +> = (previousMeta: M | undefined, metaMeta: Readonly>) => M; /** * All the options the user can pass to customize deepmerge. */ type DeepMergeOptionsFull< in out M, - MM extends DeepMergeBuiltInMetaData + MM extends DeepMergeBuiltInMetaData = DeepMergeBuiltInMetaData > = Readonly<{ mergeRecords: DeepMergeMergeFunctions["mergeRecords"] | false; mergeArrays: DeepMergeMergeFunctions["mergeArrays"] | false; @@ -45,7 +45,7 @@ type DeepMergeOptionsFull< */ type DeepMergeIntoOptionsFull< in out M, - MM extends DeepMergeBuiltInMetaData + MM extends DeepMergeBuiltInMetaData = DeepMergeBuiltInMetaData > = Readonly<{ mergeRecords: DeepMergeMergeIntoFunctions["mergeRecords"] | false; mergeArrays: DeepMergeMergeIntoFunctions["mergeArrays"] | false; @@ -67,7 +67,7 @@ export type Reference = { */ type DeepMergeMergeFunctions< in M, - MM extends DeepMergeBuiltInMetaData + MM extends DeepMergeBuiltInMetaData = DeepMergeBuiltInMetaData > = Readonly<{ mergeRecords: < Ts extends ReadonlyArray>>, @@ -123,7 +123,7 @@ type DeepMergeMergeIntoFunctionsReturnType = void | symbol; */ type DeepMergeMergeIntoFunctions< in M, - MM extends DeepMergeBuiltInMetaData + MM extends DeepMergeBuiltInMetaData = DeepMergeBuiltInMetaData > = Readonly<{ mergeRecords: < Ts extends ReadonlyArray>>, @@ -182,7 +182,7 @@ type DeepMergeMergeIntoFunctions< // eslint-disable-next-line functional/no-mixed-types export type DeepMergeMergeFunctionUtils< in out M, - MM extends DeepMergeBuiltInMetaData + MM extends DeepMergeBuiltInMetaData = DeepMergeBuiltInMetaData > = Readonly<{ mergeFunctions: DeepMergeMergeFunctions; defaultMergeFunctions: MergeFunctions; @@ -201,7 +201,7 @@ export type DeepMergeMergeFunctionUtils< // eslint-disable-next-line functional/no-mixed-types export type DeepMergeMergeIntoFunctionUtils< in out M, - MM extends DeepMergeBuiltInMetaData + MM extends DeepMergeBuiltInMetaData = DeepMergeBuiltInMetaData > = Readonly<{ mergeFunctions: DeepMergeMergeIntoFunctions; defaultMergeFunctions: MergeIntoFunctions;