From 32bc77ae140ab3e8100f0c40dbb84f5905f49be4 Mon Sep 17 00:00:00 2001 From: Rebecca Stevens Date: Mon, 13 Sep 2021 20:01:44 +1200 Subject: [PATCH] fix: add missing readonlyness --- src/deepmerge.ts | 4 ++-- src/types/merging.ts | 23 ++++++++++++----------- src/types/utils.ts | 19 ++++++++++--------- 3 files changed, 24 insertions(+), 22 deletions(-) diff --git a/src/deepmerge.ts b/src/deepmerge.ts index 38f16f03..0fbd72f7 100644 --- a/src/deepmerge.ts +++ b/src/deepmerge.ts @@ -130,7 +130,7 @@ function mergeUnknowns< if (type === ObjectType.ARRAY) { return utils.mergeFunctions.mergeArrays( - values as ReadonlyArray, + values as ReadonlyArray>, utils ) as DeepMergeHKT; } @@ -194,7 +194,7 @@ function mergeRecords< * @param values - The arrays. */ function mergeArrays< - Ts extends ReadonlyArray, + Ts extends ReadonlyArray>, U extends DeepMergeMergeFunctionUtils, MF extends DeepMergeMergeFunctionsURIs >(values: Ts, utils: U) { diff --git a/src/types/merging.ts b/src/types/merging.ts index e8b95fdd..6849baa0 100644 --- a/src/types/merging.ts +++ b/src/types/merging.ts @@ -153,14 +153,15 @@ export type DeepMergeLeafHKT< /** * Get the leaf type from many types that can't be merged. */ -export type DeepMergeLeaf> = Ts extends [] - ? never - : Ts extends [infer T] - ? T - : Ts extends [...infer Rest, infer Tail] - ? IsNever extends true - ? Rest extends ReadonlyArray - ? DeepMergeLeaf - : never - : Tail - : never; +export type DeepMergeLeaf> = + Ts extends readonly [] + ? never + : Ts extends [infer T] + ? T + : Ts extends [...infer Rest, infer Tail] + ? IsNever extends true + ? Rest extends ReadonlyArray + ? DeepMergeLeaf + : never + : Tail + : never; diff --git a/src/types/utils.ts b/src/types/utils.ts index 99a7d069..6e980a22 100644 --- a/src/types/utils.ts +++ b/src/types/utils.ts @@ -172,7 +172,7 @@ export type UnionSetValues> = export type UnionMapKeys> = Ts extends readonly [infer Head, ...infer Rest] ? Head extends Map - ? Rest extends [] + ? Rest extends readonly [] ? K1 : K1 | UnionMapKeys : never @@ -184,7 +184,7 @@ export type UnionMapKeys> = export type UnionMapValues> = Ts extends readonly [infer Head, ...infer Rest] ? Head extends Map - ? Rest extends [] + ? Rest extends readonly [] ? V1 : UnionMapValues | V1 : never @@ -251,13 +251,14 @@ export type OptionalKeysOf = /** * Filter out nevers from a tuple. */ -export type FilterOutNever> = T extends [] - ? [] - : T extends [infer Head, ...infer Rest] - ? IsNever extends true - ? FilterOutNever - : [Head, ...FilterOutNever] - : T; +export type FilterOutNever> = + T extends readonly [] + ? [] + : T extends [infer Head, ...infer Rest] + ? IsNever extends true + ? FilterOutNever + : [Head, ...FilterOutNever] + : T; /** * Is the type a tuple?