@cleverbrush/deep 0.0.14 → 0.0.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/deepExtend.d.ts +9 -1
- package/dist/index.d.ts +3 -3
- package/package.json +1 -1
- package/src/deepExtend.ts +30 -1
- package/src/index.ts +2 -2
package/dist/deepExtend.d.ts
CHANGED
|
@@ -1,2 +1,10 @@
|
|
|
1
|
-
declare
|
|
1
|
+
export declare type CommonProps<T1, T2> = {
|
|
2
|
+
[k in keyof T1 & keyof T2]: T1[k] extends never ? never : T2[k] extends never ? never : T2[k];
|
|
3
|
+
};
|
|
4
|
+
export declare type PropsInFirstOnly<T1, T2> = Omit<T1, keyof T2>;
|
|
5
|
+
export declare type MergeTwo<T1, T2> = PropsInFirstOnly<T1, T2> & PropsInFirstOnly<T2, T1> & {
|
|
6
|
+
[k in keyof CommonProps<T1, T2>]: T1[k] extends Record<string, unknown> ? T2[k] extends Record<string, unknown> ? MergeTwo<T1[k], T2[k]> : T2[k] : T2[k];
|
|
7
|
+
};
|
|
8
|
+
export declare type Merge<T extends unknown[]> = T['length'] extends 3 ? MergeTwo<T[0], MergeTwo<T[1], T[2]>> : T['length'] extends 2 ? MergeTwo<T[0], T[1]> : T['length'] extends 1 ? T[0] : T extends [...infer K, infer PL, infer L] ? Merge<[Merge<[...K]>, MergeTwo<PL, L>]> : never;
|
|
9
|
+
declare const deepExtend: <T extends unknown[]>(...args: T) => Merge<T>;
|
|
2
10
|
export default deepExtend;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import deepEqual from './deepEqual';
|
|
2
|
-
import deepExtend from './deepExtend';
|
|
3
|
-
export { deepEqual, deepExtend };
|
|
2
|
+
import deepExtend, { Merge } from './deepExtend';
|
|
3
|
+
export { deepEqual, deepExtend, Merge };
|
|
4
4
|
declare const _default: {
|
|
5
5
|
deepEqual: (p1: any, p2: any) => boolean;
|
|
6
|
-
deepExtend: (...args:
|
|
6
|
+
deepExtend: <T extends unknown[]>(...args: T) => Merge<T>;
|
|
7
7
|
};
|
|
8
8
|
export default _default;
|
package/package.json
CHANGED
package/src/deepExtend.ts
CHANGED
|
@@ -1,4 +1,33 @@
|
|
|
1
|
-
|
|
1
|
+
export type CommonProps<T1, T2> = {
|
|
2
|
+
[k in keyof T1 & keyof T2]: T1[k] extends never
|
|
3
|
+
? never
|
|
4
|
+
: T2[k] extends never
|
|
5
|
+
? never
|
|
6
|
+
: T2[k];
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
export type PropsInFirstOnly<T1, T2> = Omit<T1, keyof T2>;
|
|
10
|
+
|
|
11
|
+
export type MergeTwo<T1, T2> = PropsInFirstOnly<T1, T2> &
|
|
12
|
+
PropsInFirstOnly<T2, T1> & {
|
|
13
|
+
[k in keyof CommonProps<T1, T2>]: T1[k] extends Record<string, unknown>
|
|
14
|
+
? T2[k] extends Record<string, unknown>
|
|
15
|
+
? MergeTwo<T1[k], T2[k]>
|
|
16
|
+
: T2[k]
|
|
17
|
+
: T2[k];
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export type Merge<T extends unknown[]> = T['length'] extends 3
|
|
21
|
+
? MergeTwo<T[0], MergeTwo<T[1], T[2]>>
|
|
22
|
+
: T['length'] extends 2
|
|
23
|
+
? MergeTwo<T[0], T[1]>
|
|
24
|
+
: T['length'] extends 1
|
|
25
|
+
? T[0]
|
|
26
|
+
: T extends [...infer K, infer PL, infer L]
|
|
27
|
+
? Merge<[Merge<[...K]>, MergeTwo<PL, L>]>
|
|
28
|
+
: never;
|
|
29
|
+
|
|
30
|
+
const deepExtend: <T extends unknown[]>(...args: T) => Merge<T> = function () {
|
|
2
31
|
if (arguments.length === 0) return false;
|
|
3
32
|
if (arguments.length === 1) return arguments[0];
|
|
4
33
|
if (typeof arguments[0] !== 'object') return false;
|
package/src/index.ts
CHANGED