UNPKG

@tachibana-shin/diff-object

Version:
38 lines (36 loc) 1.63 kB
declare const KEY_SYMBOL_ACTION: unique symbol; declare const KEY_SYMBOL_VALUEA: unique symbol; declare const KEY_SYMBOL_VALUEB: unique symbol; declare const KEY_ACTION = "#@~!action"; declare const KEY_VALUEA = "#@~!valueA"; declare const KEY_VALUEB = "#@~!valueB"; interface DiffSymbolObject { [KEY_SYMBOL_ACTION]: "ADDED" | "MODIFIED" | "DELETED"; [KEY_SYMBOL_VALUEA]: unknown; [KEY_SYMBOL_VALUEB]: unknown; } interface DiffNormalObject { [KEY_ACTION]: "ADDED" | "MODIFIED" | "DELETED"; [KEY_VALUEA]: unknown; [KEY_VALUEB]: unknown; } declare type DiffObject<useSymbol extends boolean = true> = useSymbol extends true ? DiffSymbolObject : DiffNormalObject; interface DiffNormal { [name: string]: DiffObject | DiffNormal; } interface DiffSymbol { [name: string]: DiffSymbolObject | DiffSymbol; } declare type Diff<useSymbol extends boolean = true> = useSymbol extends true ? DiffSymbol : DiffNormal; interface Options<useSymbol extends boolean = true> { deep?: false; symbol?: useSymbol; } interface DiffReturn<useSymbol extends boolean = true> { diffs: Diff<useSymbol>; count: number; } declare function isDiffObject(diffObj: any, checkSymbol?: boolean): diffObj is DiffObject; declare function isKeyDiffObject(key: string | symbol): boolean; declare function diff<A extends object, B extends object, useSymbol extends boolean = true>(a: A, b: B, options?: Options<useSymbol>): DiffReturn<useSymbol>; export { Diff, DiffObject, DiffReturn, KEY_ACTION, KEY_SYMBOL_ACTION, KEY_SYMBOL_VALUEA, KEY_SYMBOL_VALUEB, KEY_VALUEA, KEY_VALUEB, Options, diff, isDiffObject, isKeyDiffObject };