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.
@@ -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
+ }>;
package/package.json CHANGED
@@ -12,7 +12,7 @@
12
12
  "lodash",
13
13
  "underscore"
14
14
  ],
15
- "version": "2.7.6",
15
+ "version": "2.9.0",
16
16
  "types": "lib/index.d.ts",
17
17
  "main": "lib/index.js",
18
18
  "module": "lib/index.js",