-
-
Notifications
You must be signed in to change notification settings - Fork 95
/
Copy pathindex.d.ts
34 lines (28 loc) · 942 Bytes
/
index.d.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
type NonTraverse =
| Date
| Function
| RegExp
| boolean
| number
| string
| symbol
export type DeepDiff<T> = T extends NonTraverse
? T
: T extends (infer U)[]
? { [x: number]: U | undefined }
: T extends Record<infer U, any>
? { [K in U]?: DeepDiff<T[K]> }
: never
export function diff<
T extends Record<PropertyKey, any>,
U extends Record<PropertyKey, any>,
>(originalObj: T, updatedObj: U): DeepDiff<T & U>
export function addedDiff (originalObj: object, updatedObj: object): object
export function deletedDiff (originalObj: object, updatedObj: object): object
export function updatedDiff (originalObj: object, updatedObj: object): object
export interface DetailedDiff {
added: object
deleted: object
updated: object
}
export function detailedDiff (originalObj: object, updatedObj: object): DetailedDiff