ts-gems 3.9.0 → 3.11.0

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/dto.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { IfNoDeepValue } from './helpers.js';
2
- import { DeepNullish } from './nullish.js';
3
- import { DeepPartial } from './partial.js';
2
+ import { DeeperNullish } from './nullish.js';
3
+ import { DeeperPartial } from './partial.js';
4
4
  import { IfNever } from './type-check.js';
5
5
 
6
6
  /**
@@ -9,17 +9,17 @@ import { IfNever } from './type-check.js';
9
9
  */
10
10
  export type DTO<T> = {
11
11
  [K in keyof T as IfNever<
12
- Exclude<T[K], undefined | Function>,
12
+ Exclude<NonNullable<T[K]> | Function>,
13
13
  never,
14
14
  K
15
- >]: Exclude<T[K], undefined | null> extends (infer U)[] // Deep process arrays
15
+ >]: NonNullable<T[K]> extends (infer U)[] // Deep process arrays
16
16
  ? DTO<U>[]
17
17
  : // Do not deep process No-Deep values
18
- IfNoDeepValue<Exclude<T[K], undefined | null>> extends true
19
- ? Exclude<T[K], undefined | null>
18
+ IfNoDeepValue<NonNullable<T[K]>> extends true
19
+ ? NonNullable<T[K]>
20
20
  : // Deep process objects
21
- DTO<Exclude<T[K], undefined | null>>;
21
+ DTO<NonNullable<T[K]>>;
22
22
  };
23
23
 
24
- export type PartialDTO<T> = DeepPartial<DTO<T>>;
25
- export type PatchDTO<T> = DeepNullish<DTO<T>>;
24
+ export type PartialDTO<T> = DeeperPartial<DTO<T>>;
25
+ export type PatchDTO<T> = DeeperNullish<DTO<T>>;
package/lib/mutable.d.ts CHANGED
@@ -33,7 +33,7 @@ export type DeepMutable<T> = {
33
33
  >]: IfNoDeepValue<Exclude<T[K], undefined>> extends true // Do not deep process No-Deep values
34
34
  ? T[K]
35
35
  : // Deep process objects
36
- DeepMutable<Exclude<T[K], undefined>>;
36
+ DeepMutable<NonNullable<T[K]>>;
37
37
  };
38
38
 
39
39
  /**
@@ -47,10 +47,10 @@ export type DeeperMutable<T> = {
47
47
  >]: Exclude<T[K], undefined> extends (infer U)[] // Deep process arrays
48
48
  ? DeeperMutable<U>[]
49
49
  : // Do not deep process No-Deep values
50
- IfNoDeepValue<Exclude<T[K], undefined>> extends true
50
+ IfNoDeepValue<NonNullable<T[K]>> extends true
51
51
  ? T[K]
52
52
  : // Deep process objects
53
- DeeperMutable<Exclude<T[K], undefined>>;
53
+ DeeperMutable<NonNullable<T[K]>>;
54
54
  };
55
55
 
56
56
  /**
@@ -37,10 +37,10 @@ export type DeeperUnNullish<T> = {
37
37
  Exclude<T[K], undefined>,
38
38
  never,
39
39
  IfNull<Exclude<T[K], undefined>, never, K>
40
- >]: NonNullable<Exclude<T[K], undefined>> extends (infer U)[]
40
+ >]: NonNullable<NonNullable<T[K]>> extends (infer U)[]
41
41
  ? DeeperUnNullish<U>[]
42
42
  : // Do not deep process No-Deep values
43
- IfNoDeepValue<Exclude<T[K], undefined>> extends true
43
+ IfNoDeepValue<NonNullable<T[K]>> extends true
44
44
  ? NonNullable<T[K]>
45
45
  : // Deep process objects
46
46
  DeeperUnNullish<NonNullable<T[K]>>;
package/lib/nullish.d.ts CHANGED
@@ -18,7 +18,7 @@ export type DeepNullish<T> = {
18
18
  > extends true
19
19
  ? T[K] | null
20
20
  : // Deep process objects
21
- DeepNullish<Exclude<T[K], undefined>> | null;
21
+ DeepNullish<NonNullable<T[K]>> | null;
22
22
  };
23
23
 
24
24
  /**
@@ -32,8 +32,8 @@ export type DeeperNullish<T> = {
32
32
  > extends (infer U)[]
33
33
  ? DeeperNullish<U>[] | null
34
34
  : // Do not deep process No-Deep values
35
- IfNoDeepValue<Exclude<T[K], undefined>> extends true
35
+ IfNoDeepValue<NonNullable<T[K]>> extends true
36
36
  ? T[K] | null
37
37
  : // Deep process objects
38
- DeeperNullish<Exclude<T[K], undefined>> | null;
38
+ DeeperNullish<NonNullable<T[K]>> | null;
39
39
  };
@@ -30,26 +30,25 @@ export type OmitNever<T> = {
30
30
  export type DeepOmitNever<T> = {
31
31
  [K in keyof T as IfNever<Exclude<T[K], undefined>, never, K>]: IfNoDeepValue<
32
32
  // Do not deep process No-Deep values
33
- Exclude<T[K], undefined>
33
+ NonNullable<T[K]>
34
34
  > extends true
35
35
  ? T[K]
36
36
  : // Deep process objects
37
- DeepOmitNever<Exclude<T[K], undefined>>;
37
+ DeepOmitNever<NonNullable<T[K]>>;
38
38
  };
39
39
 
40
40
  /**
41
41
  * Omit all "never" and "undefined" properties in T deeply including arrays
42
42
  */
43
43
  export type DeeperOmitNever<T> = {
44
- [K in keyof T as IfNever<Exclude<T[K], undefined>, never, K>]: Exclude<
44
+ [K in keyof T as IfNever<Exclude<T[K], undefined>, never, K>]: NonNullable<
45
45
  // Deep process arrays
46
- T[K],
47
- undefined
46
+ T[K]
48
47
  > extends (infer U)[]
49
48
  ? DeeperOmitNever<U>[]
50
49
  : // Do not deep process No-Deep values
51
- IfNoDeepValue<Exclude<T[K], undefined>> extends true
50
+ IfNoDeepValue<NonNullable<T[K]>> extends true
52
51
  ? T[K]
53
52
  : // Deep process objects
54
- DeeperOmitNever<Exclude<T[K], undefined>>;
53
+ DeeperOmitNever<NonNullable<T[K]>>;
55
54
  };
@@ -25,15 +25,13 @@ export type DeepOmitUndefined<T> = {
25
25
  * Omit all "never" and "undefined" properties in T deeply including arrays
26
26
  */
27
27
  export type DeeperOmitUndefined<T> = {
28
- [K in keyof T as IfNever<Exclude<T[K], undefined>, never, K>]: Exclude<
29
- // Deep process arrays
30
- T[K],
31
- undefined
32
- > extends (infer U)[]
28
+ [K in keyof T as IfNever<Exclude<T[K], undefined>, never, K>]: NonNullable<
29
+ T[K]
30
+ > extends (infer U)[] // Deep process arrays
33
31
  ? DeeperOmitUndefined<U>[]
34
32
  : // Do not deep process No-Deep values
35
- IfNoDeepValue<Exclude<T[K], undefined>> extends true
33
+ IfNoDeepValue<NonNullable<T[K]>> extends true
36
34
  ? T[K]
37
35
  : // Deep process objects
38
- DeeperOmitUndefined<Exclude<T[K], undefined>>;
36
+ DeeperOmitUndefined<NonNullable<T[K]>>;
39
37
  };
package/lib/omit.d.ts CHANGED
@@ -18,7 +18,7 @@ export type OmitFunctions<T> = {
18
18
  // Omit never keys
19
19
  IfNever<Exclude<T[K], undefined>>,
20
20
  // Omit functions
21
- IfFunction<Exclude<T[K], undefined>>
21
+ IfFunction<NonNullable<T[K]>>
22
22
  > extends true
23
23
  ? never
24
24
  : K]: T[K];
@@ -45,7 +45,7 @@ export type DeepOmitTypes<T, X> = {
45
45
  >]: IfNoDeepValue<Exclude<T[K], undefined>> extends true // Do not deep process No-Deep values
46
46
  ? Exclude<T[K], X>
47
47
  : // Deep process objects
48
- DeepOmitTypes<Exclude<T[K], undefined>, X>;
48
+ DeepOmitTypes<NonNullable<T[K]>, X>;
49
49
  };
50
50
 
51
51
  /**
@@ -58,8 +58,8 @@ export type DeeperOmitTypes<T, X> = {
58
58
  undefined
59
59
  > extends (infer U)[]
60
60
  ? DeeperOmitTypes<U, X>[]
61
- : IfNoDeepValue<Exclude<T[K], undefined>> extends true
61
+ : IfNoDeepValue<NonNullable<T[K]>> extends true
62
62
  ? Exclude<T[K], X>
63
63
  : // Deep process objects
64
- DeeperOmitTypes<Exclude<T[K], undefined>, X>;
64
+ DeeperOmitTypes<NonNullable<T[K]>, X>;
65
65
  };
package/lib/partial.d.ts CHANGED
@@ -25,7 +25,7 @@ export type DeepPartial<T> = {
25
25
  > extends true
26
26
  ? T[K]
27
27
  : // Deep process objects
28
- DeepPartial<Exclude<T[K], undefined>>;
28
+ DeepPartial<NonNullable<T[K]>>;
29
29
  };
30
30
 
31
31
  /**
@@ -39,10 +39,10 @@ export type DeeperPartial<T> = {
39
39
  > extends (infer U)[]
40
40
  ? DeeperPartial<U>[]
41
41
  : // Do not deep process No-Deep values
42
- IfNoDeepValue<Exclude<T[K], undefined>> extends true
42
+ IfNoDeepValue<NonNullable<T[K]>> extends true
43
43
  ? T[K]
44
44
  : // Deep process objects
45
- DeeperPartial<Exclude<T[K], undefined>>;
45
+ DeeperPartial<NonNullable<T[K]>>;
46
46
  };
47
47
 
48
48
  /**
package/lib/pick.d.ts CHANGED
@@ -31,7 +31,7 @@ export type PickFunctions<T> = {
31
31
  // Omit never keys
32
32
  IfNever<Exclude<T[K], undefined>>,
33
33
  // Omit non functions
34
- IfFunction<Exclude<T[K], undefined>, false, true>
34
+ IfFunction<NonNullable<T[K]>, false, true>
35
35
  > extends true
36
36
  ? never
37
37
  : K]: T[K];
package/lib/readonly.d.ts CHANGED
@@ -83,10 +83,10 @@ export type DeepPickReadonly<T> = {
83
83
  IfEquals<{ [Q in K]: T[K] }, { readonly [Q in K]: T[K] }, false, true>
84
84
  > extends true
85
85
  ? never
86
- : K]: IfNoDeepValue<Exclude<T[K], undefined>> extends true // Do not deep process No-Deep values
86
+ : K]: IfNoDeepValue<NonNullable<T[K]>> extends true // Do not deep process No-Deep values
87
87
  ? T[K]
88
88
  : // Deep process objects
89
- DeepPickReadonly<Exclude<T[K], undefined>>;
89
+ DeepPickReadonly<NonNullable<T[K]>>;
90
90
  };
91
91
 
92
92
  /**
@@ -95,15 +95,15 @@ export type DeepPickReadonly<T> = {
95
95
  export type DeepOmitReadonly<T> = {
96
96
  [K in keyof T as Or<
97
97
  // Omit never keys
98
- IfNever<Exclude<T[K], undefined>>,
98
+ IfNever<NonNullable<T[K]>>,
99
99
  // Omit required
100
100
  IfEquals<{ [Q in K]: T[K] }, { readonly [Q in K]: T[K] }>
101
101
  > extends true
102
102
  ? never
103
- : K]: IfNoDeepValue<Exclude<T[K], undefined>> extends true // Do not deep process No-Deep values
103
+ : K]: IfNoDeepValue<NonNullable<T[K]>> extends true // Do not deep process No-Deep values
104
104
  ? T[K]
105
105
  : // Deep process objects
106
- DeepOmitReadonly<Exclude<T[K], undefined>>;
106
+ DeepOmitReadonly<NonNullable<T[K]>>;
107
107
  };
108
108
 
109
109
  /**
@@ -117,13 +117,13 @@ export type DeeperPickReadonly<T> = {
117
117
  IfEquals<{ [Q in K]: T[K] }, { readonly [Q in K]: T[K] }, false, true>
118
118
  > extends true
119
119
  ? never
120
- : K]: Exclude<T[K], undefined> extends (infer U)[] // Deep process arrays
120
+ : K]: NonNullable<T[K]> extends (infer U)[] // Deep process arrays
121
121
  ? DeeperPickReadonly<U>[]
122
122
  : // Do not deep process No-Deep values
123
- IfNoDeepValue<Exclude<T[K], undefined>> extends true
123
+ IfNoDeepValue<NonNullable<T[K]>> extends true
124
124
  ? T[K]
125
125
  : // Deep process objects
126
- DeeperPickReadonly<Exclude<T[K], undefined>>;
126
+ DeeperPickReadonly<NonNullable<T[K]>>;
127
127
  };
128
128
 
129
129
  /**
@@ -137,11 +137,11 @@ export type DeeperOmitReadonly<T> = {
137
137
  IfEquals<{ [Q in K]: T[K] }, { readonly [Q in K]: T[K] }>
138
138
  > extends true
139
139
  ? never
140
- : K]: Exclude<T[K], undefined> extends (infer U)[] // Deep process arrays
140
+ : K]: NonNullable<T[K]> extends (infer U)[] // Deep process arrays
141
141
  ? DeeperOmitReadonly<U>[]
142
142
  : // Do not deep process No-Deep values
143
- IfNoDeepValue<Exclude<T[K], undefined>> extends true
143
+ IfNoDeepValue<NonNullable<T[K]>> extends true
144
144
  ? T[K]
145
145
  : // Deep process objects
146
- DeeperOmitReadonly<Exclude<T[K], undefined>>;
146
+ DeeperOmitReadonly<NonNullable<T[K]>>;
147
147
  };
package/lib/required.d.ts CHANGED
@@ -30,14 +30,12 @@ export type DeepRequired<T> = {
30
30
  * Make all properties in T required deeply including arrays
31
31
  */
32
32
  export type DeeperRequired<T> = {
33
- [K in keyof T as IfNever<Exclude<T[K], undefined>, never, K>]-?: Exclude<
34
- // Deep process arrays
35
- T[K],
36
- undefined
37
- > extends (infer U)[]
33
+ [K in keyof T as IfNever<Exclude<T[K], undefined>, never, K>]-?: NonNullable<
34
+ T[K]
35
+ > extends (infer U)[] // Deep process arrays
38
36
  ? DeeperRequired<U>[]
39
37
  : // Do not deep process No-Deep values
40
- IfNoDeepValue<Exclude<T[K], undefined>> extends true
38
+ IfNoDeepValue<NonNullable<T[K]>> extends true
41
39
  ? Exclude<T[K], undefined>
42
40
  : // Deep process objects
43
41
  DeepRequired<Exclude<T[K], undefined>>;
@@ -88,7 +86,7 @@ export type DeepPickRequired<T> = {
88
86
  IfEquals<{ [Q in K]: T[K] }, { [Q in K]?: T[K] }>
89
87
  > extends true
90
88
  ? never
91
- : K]: IfNoDeepValue<Exclude<T[K], undefined>> extends true // Do not deep process No-Deep values
89
+ : K]: IfNoDeepValue<NonNullable<T[K]>> extends true // Do not deep process No-Deep values
92
90
  ? T[K]
93
91
  : // Deep process objects
94
92
  DeepPickRequired<Exclude<T[K], undefined>>;
@@ -105,7 +103,7 @@ export type DeepOmitRequired<T> = {
105
103
  IfEquals<{ [Q in K]: T[K] }, { [Q in K]-?: T[K] }>
106
104
  > extends true
107
105
  ? never
108
- : K]?: IfNoDeepValue<Exclude<T[K], undefined>> extends true // Do not deep process No-Deep values
106
+ : K]?: IfNoDeepValue<NonNullable<T[K]>> extends true // Do not deep process No-Deep values
109
107
  ? T[K]
110
108
  : // Deep process objects
111
109
  DeepOmitRequired<Exclude<T[K], undefined>>;
@@ -122,10 +120,10 @@ export type DeeperPickRequired<T> = {
122
120
  IfEquals<{ [Q in K]: T[K] }, { [Q in K]?: T[K] }>
123
121
  > extends true
124
122
  ? never
125
- : K]: Exclude<T[K], undefined> extends (infer U)[] // Deep process arrays
123
+ : K]: NonNullable<T[K]> extends (infer U)[] // Deep process arrays
126
124
  ? DeeperPickRequired<U>[]
127
125
  : // Do not deep process No-Deep values
128
- IfNoDeepValue<Exclude<T[K], undefined>> extends true
126
+ IfNoDeepValue<NonNullable<T[K]>> extends true
129
127
  ? T[K]
130
128
  : // Deep process objects
131
129
  DeeperPickRequired<Exclude<T[K], undefined>>;
@@ -142,10 +140,10 @@ export type DeeperOmitRequired<T> = {
142
140
  IfEquals<{ [Q in K]: T[K] }, { [Q in K]-?: T[K] }>
143
141
  > extends true
144
142
  ? never
145
- : K]: Exclude<T[K], undefined> extends (infer U)[] // Deep process arrays
143
+ : K]: NonNullable<T[K]> extends (infer U)[] // Deep process arrays
146
144
  ? DeeperOmitRequired<U>[]
147
145
  : // Do not deep process No-Deep values
148
- IfNoDeepValue<Exclude<T[K], undefined>> extends true
146
+ IfNoDeepValue<NonNullable<T[K]>> extends true
149
147
  ? T[K]
150
148
  : // Deep process objects
151
149
  DeeperOmitRequired<Exclude<T[K], undefined>>;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "ts-gems",
3
3
  "description": "Valuable typing extensions for TypeScript",
4
- "version": "3.9.0",
4
+ "version": "3.11.0",
5
5
  "license": "MIT",
6
6
  "module": "./lib/index.mjs",
7
7
  "main": "./lib/index.cjs",