ts-gems 2.9.1 → 2.9.3

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