Skip to content

Commit

Permalink
chore: fix lint issues
Browse files Browse the repository at this point in the history
  • Loading branch information
pi0 committed Apr 23, 2021
1 parent 602e5fa commit c847b70
Showing 1 changed file with 17 additions and 17 deletions.
34 changes: 17 additions & 17 deletions src/types.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,27 @@
type Input = Record<string | number | symbol, any>

export type Merger = <T extends Input, K extends keyof T>(
obj: T,
key: keyof T,
value: T[K],
namespace: string
) => any;

type MergeObjects<
Destination extends Input,
Defaults extends Input
> = Destination extends Defaults ? Destination : Omit<Destination, keyof Destination & keyof Defaults> & Omit<Defaults, keyof Destination & keyof Defaults> &
{
-readonly [Key in keyof Destination & keyof Defaults]:
Destination[Key] extends null
? Defaults[Key] extends null
? null
: Defaults[Key]
: Defaults[Key] extends null
? Destination[Key]
: Merge<Destination[Key], Defaults[Key]> // eslint-disable-line no-use-before-define
}

export type DefuFn = <Source extends Input, Defaults extends Input>(
source: Source,
...defaults: Defaults[]
Expand All @@ -20,29 +37,12 @@ export interface Defu {
extend(merger?: Merger): DefuFn;
}

type Input = Record<string | number | symbol, any>

type MergeArrays<Destination, Source> = Destination extends Array<infer DestinationType>
? Source extends Array<infer SourceType>
? Array<DestinationType | SourceType>
: Source | Array<DestinationType>
: Source | Destination

type MergeObjects<
Destination extends Input,
Defaults extends Input
> = Destination extends Defaults ? Destination : Omit<Destination, keyof Destination & keyof Defaults> & Omit<Defaults, keyof Destination & keyof Defaults> &
{
-readonly [Key in keyof Destination & keyof Defaults]:
Destination[Key] extends null
? Defaults[Key] extends null
? null
: Defaults[Key]
: Defaults[Key] extends null
? Destination[Key]
: Merge<Destination[Key], Defaults[Key]>
}

export type Merge<
Destination extends Input,
Defaults extends Input
Expand Down

0 comments on commit c847b70

Please sign in to comment.