Skip to content

Commit

Permalink
fix: use default MM generics
Browse files Browse the repository at this point in the history
fix #304
  • Loading branch information
RebeccaStevens committed Mar 18, 2023
1 parent be28290 commit 944b428
Show file tree
Hide file tree
Showing 5 changed files with 34 additions and 28 deletions.
17 changes: 10 additions & 7 deletions src/deepmerge-into.ts
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,10 @@ export function deepmergeIntoCustom<
*
* @param options - The options the user specified
*/
function getIntoUtils<M, MM extends DeepMergeBuiltInMetaData>(
function getIntoUtils<
M,
MM extends DeepMergeBuiltInMetaData = DeepMergeBuiltInMetaData
>(
options: DeepMergeIntoOptions<M, MM>,
customizedDeepmergeInto: DeepMergeMergeIntoFunctionUtils<
M,
Expand Down Expand Up @@ -183,7 +186,7 @@ export function mergeUnknownsInto<
Ts extends ReadonlyArray<unknown>,
U extends DeepMergeMergeIntoFunctionUtils<M, MM>,
M,
MM extends DeepMergeBuiltInMetaData
MM extends DeepMergeBuiltInMetaData = DeepMergeBuiltInMetaData
>(
m_target: Reference<unknown>,
values: Ts,
Expand Down Expand Up @@ -262,7 +265,7 @@ export function mergeUnknownsInto<
function mergeRecordsInto<
U extends DeepMergeMergeIntoFunctionUtils<M, MM>,
M,
MM extends DeepMergeBuiltInMetaData
MM extends DeepMergeBuiltInMetaData = DeepMergeBuiltInMetaData
>(
m_target: Reference<Record<PropertyKey, unknown>>,
values: ReadonlyArray<Readonly<Record<PropertyKey, unknown>>>,
Expand Down Expand Up @@ -295,7 +298,7 @@ function mergeRecordsInto<
function mergeArraysInto<
U extends DeepMergeMergeIntoFunctionUtils<M, MM>,
M,
MM extends DeepMergeBuiltInMetaData
MM extends DeepMergeBuiltInMetaData = DeepMergeBuiltInMetaData
>(
m_target: Reference<unknown[]>,
values: ReadonlyArray<ReadonlyArray<unknown>>,
Expand Down Expand Up @@ -323,7 +326,7 @@ function mergeArraysInto<
function mergeSetsInto<
U extends DeepMergeMergeIntoFunctionUtils<M, MM>,
M,
MM extends DeepMergeBuiltInMetaData
MM extends DeepMergeBuiltInMetaData = DeepMergeBuiltInMetaData
>(
m_target: Reference<Set<unknown>>,
values: ReadonlyArray<Readonly<ReadonlySet<unknown>>>,
Expand All @@ -346,7 +349,7 @@ function mergeSetsInto<
function mergeMapsInto<
U extends DeepMergeMergeIntoFunctionUtils<M, MM>,
M,
MM extends DeepMergeBuiltInMetaData
MM extends DeepMergeBuiltInMetaData = DeepMergeBuiltInMetaData
>(
m_target: Reference<Map<unknown, unknown>>,
values: ReadonlyArray<Readonly<ReadonlyMap<unknown, unknown>>>,
Expand All @@ -369,7 +372,7 @@ function mergeMapsInto<
function mergeOthersInto<
U extends DeepMergeMergeIntoFunctionUtils<M, MM>,
M,
MM extends DeepMergeBuiltInMetaData
MM extends DeepMergeBuiltInMetaData = DeepMergeBuiltInMetaData
>(
m_target: Reference<unknown>,
values: ReadonlyArray<unknown>,
Expand Down
17 changes: 10 additions & 7 deletions src/deepmerge.ts
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,10 @@ export function deepmergeCustom<
*
* @param options - The options the user specified
*/
function getUtils<M, MM extends DeepMergeBuiltInMetaData>(
function getUtils<
M,
MM extends DeepMergeBuiltInMetaData = DeepMergeBuiltInMetaData
>(
options: DeepMergeOptions<M, MM>,
customizedDeepmerge: DeepMergeMergeFunctionUtils<M, MM>["deepmerge"]
): DeepMergeMergeFunctionUtils<M, MM> {
Expand Down Expand Up @@ -147,7 +150,7 @@ export function mergeUnknowns<
U extends DeepMergeMergeFunctionUtils<M, MM>,
MF extends DeepMergeMergeFunctionsURIs,
M,
MM extends DeepMergeBuiltInMetaData
MM extends DeepMergeBuiltInMetaData = DeepMergeBuiltInMetaData
>(values: Ts, utils: U, meta: M | undefined): DeepMergeHKT<Ts, MF, M> {
if (values.length === 0) {
return undefined as DeepMergeHKT<Ts, MF, M>;
Expand Down Expand Up @@ -230,7 +233,7 @@ function mergeRecords<
U extends DeepMergeMergeFunctionUtils<M, MM>,
MF extends DeepMergeMergeFunctionsURIs,
M,
MM extends DeepMergeBuiltInMetaData
MM extends DeepMergeBuiltInMetaData = DeepMergeBuiltInMetaData
>(
values: ReadonlyArray<Readonly<Record<PropertyKey, unknown>>>,
utils: U,
Expand Down Expand Up @@ -265,7 +268,7 @@ function mergeRecords<
function mergeArrays<
U extends DeepMergeMergeFunctionUtils<M, MM>,
M,
MM extends DeepMergeBuiltInMetaData
MM extends DeepMergeBuiltInMetaData = DeepMergeBuiltInMetaData
>(
values: ReadonlyArray<Readonly<ReadonlyArray<unknown>>>,
utils: U,
Expand Down Expand Up @@ -293,7 +296,7 @@ function mergeArrays<
function mergeSets<
U extends DeepMergeMergeFunctionUtils<M, MM>,
M,
MM extends DeepMergeBuiltInMetaData
MM extends DeepMergeBuiltInMetaData = DeepMergeBuiltInMetaData
>(
values: ReadonlyArray<Readonly<ReadonlySet<unknown>>>,
utils: U,
Expand All @@ -320,7 +323,7 @@ function mergeSets<
function mergeMaps<
U extends DeepMergeMergeFunctionUtils<M, MM>,
M,
MM extends DeepMergeBuiltInMetaData
MM extends DeepMergeBuiltInMetaData = DeepMergeBuiltInMetaData
>(
values: ReadonlyArray<Readonly<ReadonlyMap<unknown, unknown>>>,
utils: U,
Expand All @@ -347,7 +350,7 @@ function mergeMaps<
function mergeOthers<
U extends DeepMergeMergeFunctionUtils<M, MM>,
M,
MM extends DeepMergeBuiltInMetaData
MM extends DeepMergeBuiltInMetaData = DeepMergeBuiltInMetaData
>(values: ReadonlyArray<unknown>, utils: U, meta: M | undefined) {
const result = utils.mergeFunctions.mergeOthers(values, utils, meta);

Expand Down
2 changes: 1 addition & 1 deletion src/defaults/into.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ export function mergeRecords<
Ts extends ReadonlyArray<Record<PropertyKey, unknown>>,
U extends DeepMergeMergeIntoFunctionUtils<M, MM>,
M,
MM extends DeepMergeBuiltInMetaData
MM extends DeepMergeBuiltInMetaData = DeepMergeBuiltInMetaData
>(
m_target: Reference<Record<PropertyKey, unknown>>,
values: Ts,
Expand Down
2 changes: 1 addition & 1 deletion src/defaults/vanilla.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ export function mergeRecords<
U extends DeepMergeMergeFunctionUtils<M, MM>,
MF extends DeepMergeMergeFunctionsURIs,
M,
MM extends DeepMergeBuiltInMetaData
MM extends DeepMergeBuiltInMetaData = DeepMergeBuiltInMetaData
>(
values: Ts,
utils: U,
Expand Down
24 changes: 12 additions & 12 deletions src/types/options.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,28 +8,28 @@ import type { DeepMergeBuiltInMetaData } from "./merging.js";
*/
export type DeepMergeOptions<
in out M,
MM extends Readonly<Record<PropertyKey, unknown>> = DeepMergeBuiltInMetaData
MM extends Readonly<Record<PropertyKey, unknown>> = {}
> = Partial<DeepMergeOptionsFull<M, MM & DeepMergeBuiltInMetaData>>;

/**
* The options the user can pass to customize deepmergeInto.
*/
export type DeepMergeIntoOptions<
in out M,
MM extends Readonly<Record<PropertyKey, unknown>> = DeepMergeBuiltInMetaData
MM extends Readonly<Record<PropertyKey, unknown>> = {}
> = Partial<DeepMergeIntoOptionsFull<M, MM & DeepMergeBuiltInMetaData>>;

type MetaDataUpdater<in out M, MM extends DeepMergeBuiltInMetaData> = (
previousMeta: M | undefined,
metaMeta: Readonly<Partial<MM>>
) => M;
type MetaDataUpdater<
in out M,
MM extends DeepMergeBuiltInMetaData = DeepMergeBuiltInMetaData
> = (previousMeta: M | undefined, metaMeta: Readonly<Partial<MM>>) => 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<M, MM>["mergeRecords"] | false;
mergeArrays: DeepMergeMergeFunctions<M, MM>["mergeArrays"] | false;
Expand All @@ -45,7 +45,7 @@ type DeepMergeOptionsFull<
*/
type DeepMergeIntoOptionsFull<
in out M,
MM extends DeepMergeBuiltInMetaData
MM extends DeepMergeBuiltInMetaData = DeepMergeBuiltInMetaData
> = Readonly<{
mergeRecords: DeepMergeMergeIntoFunctions<M, MM>["mergeRecords"] | false;
mergeArrays: DeepMergeMergeIntoFunctions<M, MM>["mergeArrays"] | false;
Expand All @@ -67,7 +67,7 @@ export type Reference<T> = {
*/
type DeepMergeMergeFunctions<
in M,
MM extends DeepMergeBuiltInMetaData
MM extends DeepMergeBuiltInMetaData = DeepMergeBuiltInMetaData
> = Readonly<{
mergeRecords: <
Ts extends ReadonlyArray<Readonly<Record<PropertyKey, unknown>>>,
Expand Down Expand Up @@ -123,7 +123,7 @@ type DeepMergeMergeIntoFunctionsReturnType = void | symbol;
*/
type DeepMergeMergeIntoFunctions<
in M,
MM extends DeepMergeBuiltInMetaData
MM extends DeepMergeBuiltInMetaData = DeepMergeBuiltInMetaData
> = Readonly<{
mergeRecords: <
Ts extends ReadonlyArray<Readonly<Record<PropertyKey, unknown>>>,
Expand Down Expand Up @@ -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<M, MM>;
defaultMergeFunctions: MergeFunctions;
Expand All @@ -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<M, MM>;
defaultMergeFunctions: MergeIntoFunctions;
Expand Down

0 comments on commit 944b428

Please sign in to comment.