ts-gems 2.9.0 → 2.9.2
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/lib/deep-buildable.d.ts +5 -5
- package/lib/deep-omit.d.ts +25 -26
- package/lib/deep-pick.d.ts +24 -24
- package/lib/deep-readonly.d.ts +5 -5
- package/lib/deep-remove-nulls.d.ts +5 -5
- package/lib/deep-required.d.ts +5 -5
- package/lib/deep-writable.d.ts +5 -5
- package/package.json +1 -1
package/lib/deep-buildable.d.ts
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
|
+
import { DeepOmitNever, HighDeepOmitNever } from './deep-omit.js';
|
|
1
2
|
import { IfNoDeepValue } from './helpers.js';
|
|
2
|
-
import { OmitNever } from './omit.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Combination of Partial and Writable but deeply
|
|
6
6
|
*/
|
|
7
|
-
export type DeepBuildable<T> = _DeepBuildable<T
|
|
7
|
+
export type DeepBuildable<T> = DeepOmitNever<_DeepBuildable<T>>;
|
|
8
8
|
type _DeepBuildable<T> =
|
|
9
9
|
IfNoDeepValue<T> extends true ? T
|
|
10
|
-
:
|
|
10
|
+
: { -readonly [P in keyof T]?: _DeepBuildable<Exclude<T[P], undefined>> };
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
13
|
* Combination of Partial and Writable but deeply including arrays
|
|
14
14
|
*/
|
|
15
|
-
export type HighDeepBuildable<T> = _HighDeepBuildable<T
|
|
15
|
+
export type HighDeepBuildable<T> = HighDeepOmitNever<_HighDeepBuildable<T>>;
|
|
16
16
|
type _HighDeepBuildable<T> =
|
|
17
17
|
T extends (infer U)[] ? _HighDeepBuildable<U>[]
|
|
18
18
|
: IfNoDeepValue<T> extends true ? T
|
|
19
19
|
: T extends (infer U)[] ? _HighDeepBuildable<U>[]
|
|
20
|
-
:
|
|
20
|
+
: { -readonly [P in keyof T]?: _HighDeepBuildable<Exclude<T[P], undefined>> };
|
package/lib/deep-omit.d.ts
CHANGED
|
@@ -1,95 +1,94 @@
|
|
|
1
1
|
import { IfNoDeepValue } from './helpers.js';
|
|
2
2
|
import { OptionalKeys, ReadonlyKeys, RequiredKeys, WritableKeys } from './keys';
|
|
3
|
-
import { OmitNever } from './omit.js';
|
|
4
3
|
|
|
5
4
|
/**
|
|
6
5
|
* Omit all optional properties in T deeply
|
|
7
6
|
*/
|
|
8
|
-
export type DeepOmitOptional<T> = _DeepOmitOptional<
|
|
7
|
+
export type DeepOmitOptional<T> = DeepOmitNever<_DeepOmitOptional<T>>;
|
|
9
8
|
type _DeepOmitOptional<T, K extends keyof T = Exclude<keyof T, OptionalKeys<T>>> =
|
|
10
9
|
IfNoDeepValue<T> extends true ? T
|
|
11
|
-
:
|
|
10
|
+
: { [P in K]-?: _DeepOmitOptional<Exclude<T[P], undefined>> };
|
|
12
11
|
|
|
13
12
|
/**
|
|
14
13
|
* Omit all optional properties in T deeply including arrays
|
|
15
14
|
*/
|
|
16
|
-
export type HighDeepOmitOptional<T> = _HighDeepOmitOptional<
|
|
15
|
+
export type HighDeepOmitOptional<T> = HighDeepOmitNever<_HighDeepOmitOptional<T>>;
|
|
17
16
|
type _HighDeepOmitOptional<T, K extends keyof T = Exclude<keyof T, OptionalKeys<T>>> =
|
|
18
|
-
T extends (infer U)[] ?
|
|
17
|
+
T extends (infer U)[] ? _HighDeepOmitOptional<U>[]
|
|
19
18
|
: IfNoDeepValue<T> extends true ? T
|
|
20
|
-
:
|
|
19
|
+
: { [P in K]-?: _HighDeepOmitOptional<Exclude<T[P], undefined>> };
|
|
21
20
|
|
|
22
21
|
|
|
23
22
|
/**
|
|
24
23
|
* Omit all required properties in T deeply
|
|
25
24
|
*/
|
|
26
|
-
export type DeepOmitRequired<T> = _DeepOmitRequired<
|
|
25
|
+
export type DeepOmitRequired<T> = DeepOmitNever<_DeepOmitRequired<T>>;
|
|
27
26
|
type _DeepOmitRequired<T, J extends keyof T = Exclude<keyof T, RequiredKeys<T>>> =
|
|
28
27
|
IfNoDeepValue<T> extends true ? T
|
|
29
|
-
:
|
|
28
|
+
: { [P in J]?: _DeepOmitRequired<Exclude<T[P], undefined>> };
|
|
30
29
|
|
|
31
30
|
|
|
32
31
|
/**
|
|
33
32
|
* Omit all required properties in T deeply including arrays
|
|
34
33
|
*/
|
|
35
|
-
export type HighDeepOmitRequired<T> = _HighDeepOmitRequired<
|
|
34
|
+
export type HighDeepOmitRequired<T> = HighDeepOmitNever<_HighDeepOmitRequired<T>>;
|
|
36
35
|
type _HighDeepOmitRequired<T, J extends keyof T = Exclude<keyof T, RequiredKeys<T>>> =
|
|
37
|
-
T extends (infer U)[] ?
|
|
36
|
+
T extends (infer U)[] ? _HighDeepOmitRequired<U>[]
|
|
38
37
|
: IfNoDeepValue<T> extends true ? T
|
|
39
|
-
:
|
|
38
|
+
: { [P in J]?: _HighDeepOmitRequired<Exclude<T[P], undefined>> };
|
|
40
39
|
|
|
41
40
|
|
|
42
41
|
/**
|
|
43
42
|
* Omit all readonly properties in T deeply
|
|
44
43
|
*/
|
|
45
|
-
export type DeepOmitReadonly<T> = _DeepOmitReadonly<Exclude<T, undefined
|
|
44
|
+
export type DeepOmitReadonly<T> = DeepOmitNever<_DeepOmitReadonly<Exclude<T, undefined>>>;
|
|
46
45
|
type _DeepOmitReadonly<T, J extends keyof T = Exclude<keyof T, ReadonlyKeys<T>>> =
|
|
47
46
|
IfNoDeepValue<T> extends true ? T
|
|
48
|
-
:
|
|
47
|
+
: { [P in J]: _DeepOmitReadonly<Exclude<T[P], undefined>> };
|
|
49
48
|
|
|
50
49
|
|
|
51
50
|
/**
|
|
52
51
|
* Omit all readonly properties in T deeply including arrays
|
|
53
52
|
*/
|
|
54
|
-
export type HighDeepOmitReadonly<T> = _HighDeepOmitReadonly<
|
|
53
|
+
export type HighDeepOmitReadonly<T> = HighDeepOmitNever<_HighDeepOmitReadonly<T>>;
|
|
55
54
|
type _HighDeepOmitReadonly<T, J extends keyof T = Exclude<keyof T, ReadonlyKeys<T>>> =
|
|
56
|
-
T extends (infer U)[] ?
|
|
55
|
+
T extends (infer U)[] ? _HighDeepOmitReadonly<U>[]
|
|
57
56
|
: IfNoDeepValue<T> extends true ? T
|
|
58
|
-
:
|
|
57
|
+
: { [P in J]: _HighDeepOmitReadonly<Exclude<T[P], undefined>> };
|
|
59
58
|
|
|
60
59
|
|
|
61
60
|
/**
|
|
62
61
|
* Omit all writable properties in T deeply
|
|
63
62
|
*/
|
|
64
|
-
export type DeepOmitWritable<T> = _DeepOmitWritable<
|
|
63
|
+
export type DeepOmitWritable<T> = DeepOmitNever<_DeepOmitWritable<T>>
|
|
65
64
|
type _DeepOmitWritable<T, K extends keyof T = Exclude<keyof T, WritableKeys<T>>> =
|
|
66
65
|
IfNoDeepValue<T> extends true ? T
|
|
67
|
-
:
|
|
66
|
+
: { readonly [P in K]: _DeepOmitWritable<Exclude<T[P], undefined>> }
|
|
68
67
|
|
|
69
68
|
|
|
70
69
|
/**
|
|
71
70
|
* Omit all writable properties in T deeply including arrays
|
|
72
71
|
*/
|
|
73
|
-
export type HighDeepOmitWritable<T> = _HighDeepOmitWritable<
|
|
72
|
+
export type HighDeepOmitWritable<T> = HighDeepOmitNever<_HighDeepOmitWritable<T>>
|
|
74
73
|
type _HighDeepOmitWritable<T, K extends keyof T = Exclude<keyof T, WritableKeys<T>>> =
|
|
75
|
-
T extends (infer U)[] ?
|
|
74
|
+
T extends (infer U)[] ? _HighDeepOmitWritable<U>[]
|
|
76
75
|
: IfNoDeepValue<T> extends true ? T
|
|
77
|
-
:
|
|
76
|
+
: { readonly [P in K]: _HighDeepOmitWritable<Exclude<T[P], undefined>> }
|
|
78
77
|
|
|
79
78
|
/**
|
|
80
79
|
* Omit all "never" and "undefined" properties in T deeply
|
|
81
80
|
*/
|
|
82
|
-
export type DeepOmitNever<T> = _DeepOmitNever<
|
|
81
|
+
export type DeepOmitNever<T> = _DeepOmitNever<T>
|
|
83
82
|
type _DeepOmitNever<T> =
|
|
84
83
|
IfNoDeepValue<T> extends true ? T
|
|
85
|
-
: { [P in keyof T as (Exclude<T[P], undefined> extends never ? never : P)]:
|
|
84
|
+
: { [P in keyof T as (Exclude<T[P], undefined> extends never ? never : P)]: _DeepOmitNever<Exclude<T[P], undefined>> }
|
|
86
85
|
|
|
87
86
|
|
|
88
87
|
/**
|
|
89
88
|
* Omit all "never" and "undefined" properties in T deeply including arrays
|
|
90
89
|
*/
|
|
91
|
-
export type HighDeepOmitNever<T> = _HighDeepOmitNever<
|
|
90
|
+
export type HighDeepOmitNever<T> = _HighDeepOmitNever<T>
|
|
92
91
|
type _HighDeepOmitNever<T> =
|
|
93
|
-
T extends (infer U)[] ?
|
|
92
|
+
T extends (infer U)[] ? _HighDeepOmitNever<U>[]
|
|
94
93
|
: IfNoDeepValue<T> extends true ? T
|
|
95
|
-
: { [P in keyof T as (Exclude<T[P], undefined> extends never ? never : P)]:
|
|
94
|
+
: { [P in keyof T as (Exclude<T[P], undefined> extends never ? never : P)]: _HighDeepOmitNever<Exclude<T[P], undefined>> }
|
package/lib/deep-pick.d.ts
CHANGED
|
@@ -1,85 +1,85 @@
|
|
|
1
|
+
import { DeepOmitNever, HighDeepOmitNever } from './deep-omit.js';
|
|
1
2
|
import { IfNoDeepValue } from './helpers.js';
|
|
2
3
|
import { JsonKeys, OptionalKeys, ReadonlyKeys, RequiredKeys, WritableKeys } from './keys';
|
|
3
|
-
import { OmitNever } from './omit.js';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Pick all optional properties in T deeply
|
|
7
7
|
*/
|
|
8
|
-
export type DeepPickOptional<T> = _DeepPickOptional<
|
|
8
|
+
export type DeepPickOptional<T> = DeepOmitNever<_DeepPickOptional<T>>;
|
|
9
9
|
type _DeepPickOptional<T, K extends keyof T = OptionalKeys<T>> =
|
|
10
10
|
IfNoDeepValue<T> extends true ? T
|
|
11
|
-
:
|
|
11
|
+
: { [P in K]?: _DeepPickOptional<Exclude<T[P], undefined>> };
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* Pick all optional properties in T deeply including arrays
|
|
15
15
|
*/
|
|
16
|
-
export type HighDeepPickOptional<T> = _HighDeepPickOptional<
|
|
16
|
+
export type HighDeepPickOptional<T> = HighDeepOmitNever<_HighDeepPickOptional<T>>;
|
|
17
17
|
type _HighDeepPickOptional<T, K extends keyof T = OptionalKeys<T>> =
|
|
18
|
-
T extends (infer U)[] ?
|
|
18
|
+
T extends (infer U)[] ? _HighDeepPickOptional<U>[]
|
|
19
19
|
: IfNoDeepValue<T> extends true ? T
|
|
20
|
-
:
|
|
20
|
+
: { [P in K]?: _HighDeepPickOptional<Exclude<T[P], undefined>> };
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
/**
|
|
24
24
|
* Pick all required properties in T deeply
|
|
25
25
|
*/
|
|
26
|
-
export type DeepPickRequired<T> = _DeepPickRequired<
|
|
26
|
+
export type DeepPickRequired<T> = DeepOmitNever<_DeepPickRequired<T>>;
|
|
27
27
|
type _DeepPickRequired<T, J extends keyof T = RequiredKeys<T>> =
|
|
28
28
|
IfNoDeepValue<T> extends true ? T
|
|
29
|
-
:
|
|
29
|
+
: { [P in J]-?: _DeepPickRequired<Exclude<T[P], undefined>> };
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
/**
|
|
33
33
|
* Pick all required properties in T deeply including arrays
|
|
34
34
|
*/
|
|
35
|
-
export type HighDeepPickRequired<T> = _HighDeepPickRequired<
|
|
35
|
+
export type HighDeepPickRequired<T> = HighDeepOmitNever<_HighDeepPickRequired<T>>;
|
|
36
36
|
type _HighDeepPickRequired<T, J extends keyof T = RequiredKeys<T>> =
|
|
37
|
-
T extends (infer U)[] ?
|
|
37
|
+
T extends (infer U)[] ? _HighDeepPickRequired<U>[]
|
|
38
38
|
: IfNoDeepValue<T> extends true ? T
|
|
39
|
-
:
|
|
39
|
+
: { [P in J]-?: _HighDeepPickRequired<Exclude<T[P], undefined>> };
|
|
40
40
|
|
|
41
41
|
|
|
42
42
|
/**
|
|
43
43
|
* Pick all readonly properties in T deeply
|
|
44
44
|
*/
|
|
45
|
-
export type DeepPickReadonly<T> = _DeepPickReadonly<
|
|
45
|
+
export type DeepPickReadonly<T> = DeepOmitNever<_DeepPickReadonly<T>>;
|
|
46
46
|
type _DeepPickReadonly<T, K extends keyof T = ReadonlyKeys<T>> =
|
|
47
47
|
IfNoDeepValue<T> extends true ? T
|
|
48
|
-
:
|
|
48
|
+
: { [P in K]: _DeepPickReadonly<Exclude<T[P], undefined>> };
|
|
49
49
|
|
|
50
50
|
/**
|
|
51
51
|
* Pick all readonly properties in T deeply including arrays
|
|
52
52
|
*/
|
|
53
|
-
export type HighDeepPickReadonly<T> = _HighDeepPickReadonly<
|
|
53
|
+
export type HighDeepPickReadonly<T> = HighDeepOmitNever<_HighDeepPickReadonly<T>>;
|
|
54
54
|
type _HighDeepPickReadonly<T, K extends keyof T = ReadonlyKeys<T>> =
|
|
55
|
-
T extends (infer U)[] ?
|
|
55
|
+
T extends (infer U)[] ? _HighDeepPickReadonly<U>[]
|
|
56
56
|
: IfNoDeepValue<T> extends true ? T
|
|
57
|
-
:
|
|
57
|
+
: { [P in K]: _HighDeepPickReadonly<Exclude<T[P], undefined>> };
|
|
58
58
|
|
|
59
59
|
|
|
60
60
|
/**
|
|
61
61
|
* Pick all writable properties in T deeply
|
|
62
62
|
*/
|
|
63
|
-
export type DeepPickWritable<T> = _DeepPickWritable<
|
|
63
|
+
export type DeepPickWritable<T> = DeepOmitNever<_DeepPickWritable<T>>;
|
|
64
64
|
type _DeepPickWritable<T, K extends keyof T = WritableKeys<T>> =
|
|
65
65
|
IfNoDeepValue<T> extends true ? T
|
|
66
|
-
:
|
|
66
|
+
: { [P in K]: _DeepPickWritable<Exclude<T[P], undefined>> };
|
|
67
67
|
|
|
68
68
|
/**
|
|
69
69
|
* Pick all writable properties in T deeply including arrays
|
|
70
70
|
*/
|
|
71
|
-
export type HighDeepPickWritable<T> = _HighDeepPickWritable<
|
|
71
|
+
export type HighDeepPickWritable<T> = HighDeepOmitNever<_HighDeepPickWritable<T>>;
|
|
72
72
|
type _HighDeepPickWritable<T, K extends keyof T = WritableKeys<T>> =
|
|
73
|
-
T extends (infer U)[] ?
|
|
73
|
+
T extends (infer U)[] ? _HighDeepPickWritable<U>[]
|
|
74
74
|
: IfNoDeepValue<T> extends true ? T
|
|
75
|
-
:
|
|
75
|
+
: { [P in K]: _HighDeepPickWritable<Exclude<T[P], undefined>> };
|
|
76
76
|
|
|
77
77
|
|
|
78
78
|
/**
|
|
79
79
|
* Pick all JSON friendly properties in T deeply
|
|
80
80
|
*/
|
|
81
|
-
export type DeepPickJson<T> = _DeepPickJson<
|
|
81
|
+
export type DeepPickJson<T> = DeepOmitNever<_DeepPickJson<T>>;
|
|
82
82
|
type _DeepPickJson<T, Keys extends keyof T = JsonKeys<T>> =
|
|
83
|
-
T extends (infer U)[] ?
|
|
83
|
+
T extends (infer U)[] ? _DeepPickJson<U>[]
|
|
84
84
|
: IfNoDeepValue<T> extends true ? T
|
|
85
|
-
:
|
|
85
|
+
: { [P in Keys]: _DeepPickJson<Exclude<T[P], undefined>> };
|
package/lib/deep-readonly.d.ts
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
|
+
import { DeepOmitNever, HighDeepOmitNever } from './deep-omit.js';
|
|
1
2
|
import { IfNoDeepValue } from './helpers.js';
|
|
2
|
-
import { OmitNever } from './omit.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Make all properties in T readonly deeply
|
|
6
6
|
*/
|
|
7
|
-
export type DeepReadonly<T> = _DeepReadonly<T
|
|
7
|
+
export type DeepReadonly<T> = DeepOmitNever<_DeepReadonly<T>>;
|
|
8
8
|
type _DeepReadonly<T> =
|
|
9
9
|
IfNoDeepValue<T> extends true ? T
|
|
10
|
-
:
|
|
10
|
+
: { readonly [P in keyof T]: _DeepReadonly<T[P]> };
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
13
|
* Make all properties in T readonly deeply
|
|
14
14
|
*/
|
|
15
|
-
export type HighDeepReadonly<T> = _HighDeepReadonly<T
|
|
15
|
+
export type HighDeepReadonly<T> = HighDeepOmitNever<_HighDeepReadonly<T>>;
|
|
16
16
|
type _HighDeepReadonly<T> =
|
|
17
17
|
T extends (infer U)[] ? _HighDeepReadonly<U>[]
|
|
18
18
|
: IfNoDeepValue<T> extends true ? T
|
|
19
|
-
:
|
|
19
|
+
: { readonly [P in keyof T]: _HighDeepReadonly<T[P]> };
|
|
20
20
|
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
+
import { DeepOmitNever, HighDeepOmitNever } from './deep-omit.js';
|
|
1
2
|
import { IfNoDeepValue } from './helpers.js';
|
|
2
|
-
import { OmitNever } from './omit.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Remove null from properties deeply
|
|
6
6
|
*/
|
|
7
|
-
export type DeepRemoveNulls<T> = _DeepRemoveNulls<T
|
|
7
|
+
export type DeepRemoveNulls<T> = DeepOmitNever<_DeepRemoveNulls<T>>;
|
|
8
8
|
type _DeepRemoveNulls<T> =
|
|
9
9
|
IfNoDeepValue<T> extends true ? T
|
|
10
|
-
:
|
|
10
|
+
: { [P in keyof T]: _DeepRemoveNulls<Exclude<T[P], null>> };
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* Remove null from properties deeply including arrays
|
|
15
15
|
*/
|
|
16
|
-
export type HighDeepRemoveNulls<T> = _HighDeepRemoveNulls<T
|
|
16
|
+
export type HighDeepRemoveNulls<T> = HighDeepOmitNever<_HighDeepRemoveNulls<T>>;
|
|
17
17
|
type _HighDeepRemoveNulls<T> =
|
|
18
18
|
T extends (infer U)[] ? _HighDeepRemoveNulls<U>[]
|
|
19
19
|
: IfNoDeepValue<T> extends true ? T
|
|
20
|
-
:
|
|
20
|
+
: { [P in keyof T]: _HighDeepRemoveNulls<Exclude<T[P], null>> };
|
package/lib/deep-required.d.ts
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
|
+
import { DeepOmitNever, HighDeepOmitNever } from './deep-omit.js';
|
|
1
2
|
import { IfNoDeepValue } from './helpers.js';
|
|
2
|
-
import { OmitNever } from './omit.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Make all properties in T required deeply
|
|
6
6
|
*/
|
|
7
|
-
export type DeepRequired<T> = _DeepRequired<T
|
|
7
|
+
export type DeepRequired<T> = DeepOmitNever<_DeepRequired<T>>;
|
|
8
8
|
type _DeepRequired<T> =
|
|
9
9
|
IfNoDeepValue<T> extends true ? T
|
|
10
|
-
:
|
|
10
|
+
: { [P in keyof T]-?: _DeepRequired<Exclude<T[P], undefined>> };
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* Make all properties in T required deeply including arrays
|
|
15
15
|
*/
|
|
16
|
-
export type HighDeepRequired<T> = _HighDeepRequired<T
|
|
16
|
+
export type HighDeepRequired<T> = HighDeepOmitNever<_HighDeepRequired<T>>;
|
|
17
17
|
type _HighDeepRequired<T> =
|
|
18
18
|
T extends (infer U)[] ? _HighDeepRequired<U>[]
|
|
19
19
|
: IfNoDeepValue<T> extends true ? T
|
|
20
|
-
:
|
|
20
|
+
: { [P in keyof T]-?: _HighDeepRequired<Exclude<T[P], undefined>> };
|
package/lib/deep-writable.d.ts
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
|
+
import { DeepOmitNever, HighDeepOmitNever } from './deep-omit.js';
|
|
1
2
|
import { IfNoDeepValue } from './helpers.js';
|
|
2
|
-
import { OmitNever } from './omit.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Make all properties in T writable deeply
|
|
6
6
|
*/
|
|
7
|
-
export type DeepWritable<T> = _DeepWritable<T
|
|
7
|
+
export type DeepWritable<T> = DeepOmitNever<_DeepWritable<T>>;
|
|
8
8
|
type _DeepWritable<T> =
|
|
9
9
|
IfNoDeepValue<T> extends true ? T
|
|
10
|
-
:
|
|
10
|
+
: { -readonly [P in keyof T]: _DeepWritable<T[P]> };
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* Make all properties in T writable deeply including arrays
|
|
15
15
|
*/
|
|
16
|
-
export type HighDeepWritable<T> = _HighDeepWritable<T
|
|
16
|
+
export type HighDeepWritable<T> = HighDeepOmitNever<_HighDeepWritable<T>>;
|
|
17
17
|
type _HighDeepWritable<T> =
|
|
18
18
|
T extends (infer U)[] ? _HighDeepWritable<U>[]
|
|
19
19
|
: IfNoDeepValue<T> extends true ? T
|
|
20
|
-
:
|
|
20
|
+
: { -readonly [P in keyof T]: _HighDeepWritable<T[P]> };
|