ts-gems 2.7.6 → 2.9.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/deep-omit.d.ts +18 -0
- package/lib/deep-remove-nulls.d.ts +20 -0
- package/lib/index.d.ts +1 -0
- package/lib/modify.d.ts +9 -0
- package/package.json +1 -1
package/lib/deep-omit.d.ts
CHANGED
|
@@ -75,3 +75,21 @@ type _HighDeepOmitWritable<T, K extends keyof T = Exclude<keyof T, WritableKeys<
|
|
|
75
75
|
T extends (infer U)[] ? HighDeepOmitWritable<U>[]
|
|
76
76
|
: IfNoDeepValue<T> extends true ? T
|
|
77
77
|
: OmitNever<{ readonly [P in K]: HighDeepOmitWritable<T[P]> }>
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Omit all "never" and "undefined" properties in T deeply
|
|
81
|
+
*/
|
|
82
|
+
export type DeepOmitNever<T> = _DeepOmitNever<Exclude<T, undefined>>
|
|
83
|
+
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]> }
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Omit all "never" and "undefined" properties in T deeply including arrays
|
|
90
|
+
*/
|
|
91
|
+
export type HighDeepOmitNever<T> = _HighDeepOmitNever<Exclude<T, undefined>>
|
|
92
|
+
type _HighDeepOmitNever<T> =
|
|
93
|
+
T extends (infer U)[] ? HighDeepOmitNever<U>[]
|
|
94
|
+
: IfNoDeepValue<T> extends true ? T
|
|
95
|
+
: { [P in keyof T as (Exclude<T[P], undefined> extends never ? never : P)]: HighDeepOmitNever<T[P]> }
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { IfNoDeepValue } from './helpers.js';
|
|
2
|
+
import { OmitNever } from './omit.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Remove null from properties deeply
|
|
6
|
+
*/
|
|
7
|
+
export type DeepRemoveNulls<T> = _DeepRemoveNulls<T>;
|
|
8
|
+
type _DeepRemoveNulls<T> =
|
|
9
|
+
IfNoDeepValue<T> extends true ? T
|
|
10
|
+
: OmitNever<{ [P in keyof T]: _DeepRemoveNulls<Exclude<T[P], null>> }>;
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Remove null from properties deeply including arrays
|
|
15
|
+
*/
|
|
16
|
+
export type HighDeepRemoveNulls<T> = _HighDeepRemoveNulls<T>;
|
|
17
|
+
type _HighDeepRemoveNulls<T> =
|
|
18
|
+
T extends (infer U)[] ? _HighDeepRemoveNulls<U>[]
|
|
19
|
+
: IfNoDeepValue<T> extends true ? T
|
|
20
|
+
: OmitNever<{ [P in keyof T]: _HighDeepRemoveNulls<Exclude<T[P], null>> }>;
|
package/lib/index.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ export * from "./deep-omit";
|
|
|
8
8
|
export * from "./deep-partial";
|
|
9
9
|
export * from "./deep-pick";
|
|
10
10
|
export * from "./deep-readonly";
|
|
11
|
+
export * from "./deep-remove-nulls";
|
|
11
12
|
export * from "./deep-required";
|
|
12
13
|
export * from "./deep-writable";
|
|
13
14
|
export * from "./helpers";
|
package/lib/modify.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { OmitNever } from './omit.js';
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
4
|
* Make all properties in T writable
|
|
3
5
|
*/
|
|
@@ -34,3 +36,10 @@ export type WritableSome<T, K extends keyof T> = Writable<Pick<T, K>> & Omit<T,
|
|
|
34
36
|
* Merges two types without merging types of elements.
|
|
35
37
|
*/
|
|
36
38
|
export type Combine<A, B> = A & Exclude<B, keyof A>;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Remove null from properties
|
|
42
|
+
*/
|
|
43
|
+
export type RemoveNulls<T> = OmitNever<{
|
|
44
|
+
[P in keyof T]: Exclude<T[P], null>;
|
|
45
|
+
}>;
|