From cecc9dbcfc68335f04372e2fa339a347f71c90bc Mon Sep 17 00:00:00 2001 From: Rebecca Stevens Date: Sun, 22 May 2022 04:17:58 +1200 Subject: [PATCH] perf(ts): add variance annotations --- src/types/merging.ts | 2 +- src/types/options.ts | 13 ++++++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/types/merging.ts b/src/types/merging.ts index 64b4b440..5d53484b 100644 --- a/src/types/merging.ts +++ b/src/types/merging.ts @@ -20,7 +20,7 @@ import type { export interface DeepMergeMergeFunctionURItoKind< Ts extends ReadonlyArray, MF extends DeepMergeMergeFunctionsURIs, - M + in out M > { readonly DeepMergeLeafURI: DeepMergeLeaf; readonly DeepMergeRecordsDefaultURI: DeepMergeRecordsDefaultHKT; diff --git a/src/types/options.ts b/src/types/options.ts index c9d93eda..fc0dcbb0 100644 --- a/src/types/options.ts +++ b/src/types/options.ts @@ -7,11 +7,11 @@ import type { DeepMergeBuiltInMetaData } from "./merging"; * The options the user can pass to customize deepmerge. */ export type DeepMergeOptions< - M, + in out M, MM extends Readonly> = DeepMergeBuiltInMetaData > = Partial>; -type MetaDataUpdater = ( +type MetaDataUpdater = ( previousMeta: M | undefined, metaMeta: Readonly> ) => M; @@ -19,7 +19,10 @@ type MetaDataUpdater = ( /** * All the options the user can pass to customize deepmerge. */ -type DeepMergeOptionsFull = Readonly<{ +type DeepMergeOptionsFull< + in out M, + MM extends DeepMergeBuiltInMetaData +> = Readonly<{ mergeRecords: DeepMergeMergeFunctions["mergeRecords"] | false; mergeArrays: DeepMergeMergeFunctions["mergeArrays"] | false; mergeMaps: DeepMergeMergeFunctions["mergeMaps"] | false; @@ -33,7 +36,7 @@ type DeepMergeOptionsFull = Readonly<{ * All the merge functions that deepmerge uses. */ type DeepMergeMergeFunctions< - M, + in M, MM extends DeepMergeBuiltInMetaData > = Readonly<{ mergeRecords: < @@ -86,7 +89,7 @@ type DeepMergeMergeFunctions< * The utils provided to the merge functions. */ export type DeepMergeMergeFunctionUtils< - M, + in out M, MM extends DeepMergeBuiltInMetaData > = Readonly<{ mergeFunctions: DeepMergeMergeFunctions;