ts-gems 2.9.2 → 3.0.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.
@@ -1,85 +0,0 @@
1
- import { DeepOmitNever, HighDeepOmitNever } from './deep-omit.js';
2
- import { IfNoDeepValue } from './helpers.js';
3
- import { JsonKeys, OptionalKeys, ReadonlyKeys, RequiredKeys, WritableKeys } from './keys';
4
-
5
- /**
6
- * Pick all optional properties in T deeply
7
- */
8
- export type DeepPickOptional<T> = DeepOmitNever<_DeepPickOptional<T>>;
9
- type _DeepPickOptional<T, K extends keyof T = OptionalKeys<T>> =
10
- IfNoDeepValue<T> extends true ? T
11
- : { [P in K]?: _DeepPickOptional<Exclude<T[P], undefined>> };
12
-
13
- /**
14
- * Pick all optional properties in T deeply including arrays
15
- */
16
- export type HighDeepPickOptional<T> = HighDeepOmitNever<_HighDeepPickOptional<T>>;
17
- type _HighDeepPickOptional<T, K extends keyof T = OptionalKeys<T>> =
18
- T extends (infer U)[] ? _HighDeepPickOptional<U>[]
19
- : IfNoDeepValue<T> extends true ? T
20
- : { [P in K]?: _HighDeepPickOptional<Exclude<T[P], undefined>> };
21
-
22
-
23
- /**
24
- * Pick all required properties in T deeply
25
- */
26
- export type DeepPickRequired<T> = DeepOmitNever<_DeepPickRequired<T>>;
27
- type _DeepPickRequired<T, J extends keyof T = RequiredKeys<T>> =
28
- IfNoDeepValue<T> extends true ? T
29
- : { [P in J]-?: _DeepPickRequired<Exclude<T[P], undefined>> };
30
-
31
-
32
- /**
33
- * Pick all required properties in T deeply including arrays
34
- */
35
- export type HighDeepPickRequired<T> = HighDeepOmitNever<_HighDeepPickRequired<T>>;
36
- type _HighDeepPickRequired<T, J extends keyof T = RequiredKeys<T>> =
37
- T extends (infer U)[] ? _HighDeepPickRequired<U>[]
38
- : IfNoDeepValue<T> extends true ? T
39
- : { [P in J]-?: _HighDeepPickRequired<Exclude<T[P], undefined>> };
40
-
41
-
42
- /**
43
- * Pick all readonly properties in T deeply
44
- */
45
- export type DeepPickReadonly<T> = DeepOmitNever<_DeepPickReadonly<T>>;
46
- type _DeepPickReadonly<T, K extends keyof T = ReadonlyKeys<T>> =
47
- IfNoDeepValue<T> extends true ? T
48
- : { [P in K]: _DeepPickReadonly<Exclude<T[P], undefined>> };
49
-
50
- /**
51
- * Pick all readonly properties in T deeply including arrays
52
- */
53
- export type HighDeepPickReadonly<T> = HighDeepOmitNever<_HighDeepPickReadonly<T>>;
54
- type _HighDeepPickReadonly<T, K extends keyof T = ReadonlyKeys<T>> =
55
- T extends (infer U)[] ? _HighDeepPickReadonly<U>[]
56
- : IfNoDeepValue<T> extends true ? T
57
- : { [P in K]: _HighDeepPickReadonly<Exclude<T[P], undefined>> };
58
-
59
-
60
- /**
61
- * Pick all writable properties in T deeply
62
- */
63
- export type DeepPickWritable<T> = DeepOmitNever<_DeepPickWritable<T>>;
64
- type _DeepPickWritable<T, K extends keyof T = WritableKeys<T>> =
65
- IfNoDeepValue<T> extends true ? T
66
- : { [P in K]: _DeepPickWritable<Exclude<T[P], undefined>> };
67
-
68
- /**
69
- * Pick all writable properties in T deeply including arrays
70
- */
71
- export type HighDeepPickWritable<T> = HighDeepOmitNever<_HighDeepPickWritable<T>>;
72
- type _HighDeepPickWritable<T, K extends keyof T = WritableKeys<T>> =
73
- T extends (infer U)[] ? _HighDeepPickWritable<U>[]
74
- : IfNoDeepValue<T> extends true ? T
75
- : { [P in K]: _HighDeepPickWritable<Exclude<T[P], undefined>> };
76
-
77
-
78
- /**
79
- * Pick all JSON friendly properties in T deeply
80
- */
81
- export type DeepPickJson<T> = DeepOmitNever<_DeepPickJson<T>>;
82
- type _DeepPickJson<T, Keys extends keyof T = JsonKeys<T>> =
83
- T extends (infer U)[] ? _DeepPickJson<U>[]
84
- : IfNoDeepValue<T> extends true ? T
85
- : { [P in Keys]: _DeepPickJson<Exclude<T[P], undefined>> };
@@ -1,20 +0,0 @@
1
- import { DeepOmitNever, HighDeepOmitNever } from './deep-omit.js';
2
- import { IfNoDeepValue } from './helpers.js';
3
-
4
- /**
5
- * Make all properties in T readonly deeply
6
- */
7
- export type DeepReadonly<T> = DeepOmitNever<_DeepReadonly<T>>;
8
- type _DeepReadonly<T> =
9
- IfNoDeepValue<T> extends true ? T
10
- : { readonly [P in keyof T]: _DeepReadonly<T[P]> };
11
-
12
- /**
13
- * Make all properties in T readonly deeply
14
- */
15
- export type HighDeepReadonly<T> = HighDeepOmitNever<_HighDeepReadonly<T>>;
16
- type _HighDeepReadonly<T> =
17
- T extends (infer U)[] ? _HighDeepReadonly<U>[]
18
- : IfNoDeepValue<T> extends true ? T
19
- : { readonly [P in keyof T]: _HighDeepReadonly<T[P]> };
20
-
@@ -1,20 +0,0 @@
1
- import { DeepOmitNever, HighDeepOmitNever } from './deep-omit.js';
2
- import { IfNoDeepValue } from './helpers.js';
3
-
4
- /**
5
- * Remove null from properties deeply
6
- */
7
- export type DeepRemoveNulls<T> = DeepOmitNever<_DeepRemoveNulls<T>>;
8
- type _DeepRemoveNulls<T> =
9
- IfNoDeepValue<T> extends true ? T
10
- : { [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> = HighDeepOmitNever<_HighDeepRemoveNulls<T>>;
17
- type _HighDeepRemoveNulls<T> =
18
- T extends (infer U)[] ? _HighDeepRemoveNulls<U>[]
19
- : IfNoDeepValue<T> extends true ? T
20
- : { [P in keyof T]: _HighDeepRemoveNulls<Exclude<T[P], null>> };
@@ -1,20 +0,0 @@
1
- import { DeepOmitNever, HighDeepOmitNever } from './deep-omit.js';
2
- import { IfNoDeepValue } from './helpers.js';
3
-
4
- /**
5
- * Make all properties in T required deeply
6
- */
7
- export type DeepRequired<T> = DeepOmitNever<_DeepRequired<T>>;
8
- type _DeepRequired<T> =
9
- IfNoDeepValue<T> extends true ? T
10
- : { [P in keyof T]-?: _DeepRequired<Exclude<T[P], undefined>> };
11
-
12
-
13
- /**
14
- * Make all properties in T required deeply including arrays
15
- */
16
- export type HighDeepRequired<T> = HighDeepOmitNever<_HighDeepRequired<T>>;
17
- type _HighDeepRequired<T> =
18
- T extends (infer U)[] ? _HighDeepRequired<U>[]
19
- : IfNoDeepValue<T> extends true ? T
20
- : { [P in keyof T]-?: _HighDeepRequired<Exclude<T[P], undefined>> };
@@ -1,20 +0,0 @@
1
- import { DeepOmitNever, HighDeepOmitNever } from './deep-omit.js';
2
- import { IfNoDeepValue } from './helpers.js';
3
-
4
- /**
5
- * Make all properties in T writable deeply
6
- */
7
- export type DeepWritable<T> = DeepOmitNever<_DeepWritable<T>>;
8
- type _DeepWritable<T> =
9
- IfNoDeepValue<T> extends true ? T
10
- : { -readonly [P in keyof T]: _DeepWritable<T[P]> };
11
-
12
-
13
- /**
14
- * Make all properties in T writable deeply including arrays
15
- */
16
- export type HighDeepWritable<T> = HighDeepOmitNever<_HighDeepWritable<T>>;
17
- type _HighDeepWritable<T> =
18
- T extends (infer U)[] ? _HighDeepWritable<U>[]
19
- : IfNoDeepValue<T> extends true ? T
20
- : { -readonly [P in keyof T]: _HighDeepWritable<T[P]> };
package/lib/keys.d.ts DELETED
@@ -1,118 +0,0 @@
1
- import {
2
- IfEquals, IfCompatible, IfUndefined,
3
- IfJson, IfNull, IfFunction
4
- } from './type-check';
5
-
6
- /**
7
- * KeyOf
8
- * @desc Returns the union type of all the keys in a type
9
- */
10
- export type KeysOf<T> = keyof T;
11
-
12
- /**
13
- * ValuesOf
14
- * @desc Returns the union type of all the values in a type
15
- */
16
- export type ValuesOf<T> = T[keyof T];
17
-
18
- /**
19
- * RequiredKeys
20
- * @desc Returns required keys of an object
21
- */
22
- export type RequiredKeys<T> = _RequiredKeys<T>
23
- export type _RequiredKeys<T> = ValuesOf<{
24
- [K in keyof T]-?: IfUndefined<T[K]> extends true ? never
25
- : T extends { [K1 in K]: any } ? K
26
- : never
27
- }>;
28
-
29
- /**
30
- * OptionalKeys
31
- * @desc Returns optional keys of an object
32
- */
33
- export type OptionalKeys<T> = _OptionalKeys<T>
34
- export type _OptionalKeys<T> = ValuesOf<{
35
- [K in keyof T]-?: IfUndefined<T[K]> extends true ? never
36
- : T extends { [K1 in K]: any } ? never
37
- : K
38
- }>;
39
-
40
-
41
- /**
42
- * @desc Returns readonly keys of an object
43
- */
44
- export type ReadonlyKeys<T> = _ReadonlyKeys<T>
45
- type _ReadonlyKeys<T, J = Required<T>> = ValuesOf<{
46
- [K in keyof J]: K extends symbol ? never
47
- : IfEquals<{ [Q in K]: J[K] }, { -readonly [Q in K]: J[K] }, never, K>
48
- }>;
49
-
50
- /**
51
- * @desc Returns JSON friendly keys of an object
52
- */
53
- export type JsonKeys<T> = _JsonKeys<T>;
54
- type _JsonKeys<T, J = Required<T>> = ValuesOf<{
55
- [K in keyof J]: K extends symbol ? never
56
- : IfNull<J[K]> extends true ? K
57
- : IfJson<Exclude<J[K], undefined>> extends true ? K
58
- : never
59
- }>;
60
-
61
- /**
62
- * @desc Returns writable keys of an object
63
- */
64
- export type WritableKeys<T> = _WritableKeys<T>;
65
- type _WritableKeys<T> = ValuesOf<{
66
- [K in keyof T]-?: K extends symbol ? never
67
- : IfEquals<{ [Q in K]: T[K] }, { readonly [Q in K]: T[K] }, never, K>
68
- }>;
69
-
70
-
71
- /**
72
- * @desc Returns writable json keys of an object
73
- */
74
- export type WritableJsonKeys<T> = Extract<WritableKeys<T>, JsonKeys<T>>;
75
-
76
- /**
77
- * @desc Returns Function keys of an object
78
- */
79
- export type FunctionKeys<T> = _FunctionKeys<T>;
80
- type _FunctionKeys<T> = ValuesOf<{
81
- [K in keyof T]-?: K extends symbol ? never
82
- : IfFunction<T[K]> extends true ? K : never;
83
- }>;
84
-
85
- /**
86
- * @desc Returns non function keys of an object
87
- */
88
- export type NonFunctionKeys<T> = _NonFunctionKeys<T>;
89
- type _NonFunctionKeys<T> = ValuesOf<{
90
- [K in keyof T]-?: K extends symbol ? never
91
- : IfFunction<T[K]> extends true ? never : K;
92
- }>;
93
-
94
-
95
- /**
96
- * @desc Returns keys that match given type
97
- */
98
- export type KeysCompatible<T, U> = _KeysCompatible<T, U>;
99
- type _KeysCompatible<T, U> = ValuesOf<{
100
- [K in keyof T]-?: K extends symbol ? never
101
- : IfCompatible<T[K], U, K, never>;
102
- }>;
103
-
104
- /**
105
- * @desc Returns keys that equals given type
106
- */
107
- export type KeysEquals<T, U> = _KeysEquals<T, U>;
108
- type _KeysEquals<T, U> = ValuesOf<{
109
- [K in keyof T]-?: K extends symbol ? never
110
- : IfEquals<T[K], U, K, never>;
111
- }>;
112
-
113
- /**
114
- * @desc Returns keys that property value type is not "never"
115
- */
116
- export type NonNeverKeys<T> = ValuesOf<{
117
- [K in keyof T]: K
118
- }>;
package/lib/modify.d.ts DELETED
@@ -1,45 +0,0 @@
1
- import { OmitNever } from './omit.js';
2
-
3
- /**
4
- * Make all properties in T writable
5
- */
6
- export type Writable<T> = {
7
- -readonly [P in keyof T]: T[P];
8
- };
9
-
10
- /**
11
- * Combination of Partial and Writable
12
- */
13
- export type Buildable<T> = Partial<Writable<T>>;
14
-
15
- /**
16
- * Marks given keys as optional
17
- */
18
- export type PartialSome<T, K extends keyof T> = Partial<Pick<T, K>> & Omit<T, K>;
19
-
20
- /**
21
- * Marks given keys as required
22
- */
23
- export type RequiredSome<T, K extends keyof T> = Required<Pick<T, K>> & Omit<T, K>;
24
-
25
- /**
26
- * Marks given keys as readonly
27
- */
28
- export type ReadonlySome<T, K extends keyof T> = Readonly<Pick<T, K>> & Omit<T, K>;
29
-
30
- /**
31
- * Marks given keys as writable
32
- */
33
- export type WritableSome<T, K extends keyof T> = Writable<Pick<T, K>> & Omit<T, K>;
34
-
35
- /**
36
- * Merges two types without merging types of elements.
37
- */
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
- }>;