@nestia/fetcher 1.1.1 → 1.1.2
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/Primitive.d.ts +10 -3
- package/package.json +1 -1
- package/src/Primitive.ts +44 -9
package/lib/Primitive.d.ts
CHANGED
|
@@ -28,13 +28,20 @@
|
|
|
28
28
|
* @template Instance Target argument type.
|
|
29
29
|
* @author Jenogho Nam - https://github.com/samchon
|
|
30
30
|
*/
|
|
31
|
-
export type Primitive<
|
|
31
|
+
export type Primitive<T> = _Equal<T, _Primitive<T>> extends true ? T : _Primitive<T>;
|
|
32
32
|
type _Equal<X, Y> = X extends Y ? (Y extends X ? true : false) : false;
|
|
33
|
-
type _Primitive<Instance> = _ValueOf<Instance> extends object ? Instance extends object ? Instance extends IJsonable<infer Raw> ? _ValueOf<Raw> extends object ? Raw extends object ? _PrimitiveObject<Raw> : never : _ValueOf<Raw> : _PrimitiveObject<Instance> : never : _ValueOf<Instance>;
|
|
34
|
-
type _PrimitiveObject<Instance extends object> = Instance extends Array<infer T> ? _Primitive<T>[] : {
|
|
33
|
+
type _Primitive<Instance> = _ValueOf<Instance> extends object ? Instance extends object ? Instance extends _Native ? {} : Instance extends IJsonable<infer Raw> ? _ValueOf<Raw> extends object ? Raw extends object ? _PrimitiveObject<Raw> : never : _ValueOf<Raw> : _PrimitiveObject<Instance> : never : _ValueOf<Instance>;
|
|
34
|
+
type _PrimitiveObject<Instance extends object> = Instance extends Array<infer T> ? _IsTuple<Instance> extends true ? _PrimitiveSpread<Instance> : _Primitive<T>[] : {
|
|
35
35
|
[P in keyof Instance]: Instance[P] extends Function ? never : _Primitive<Instance[P]>;
|
|
36
36
|
};
|
|
37
|
+
type _PrimitiveSpread<T extends any[]> = T extends [infer F, ...infer Rest] ? [_Primitive<F>, ..._PrimitiveSpread<Rest>] : [];
|
|
37
38
|
type _ValueOf<Instance> = _IsValueOf<Instance, Boolean> extends true ? boolean : _IsValueOf<Instance, Number> extends true ? number : _IsValueOf<Instance, String> extends true ? string : Instance;
|
|
39
|
+
type _Native = Set<any> | Map<any, any> | WeakSet<any> | WeakMap<any, any> | Uint8Array | Uint8ClampedArray | Uint16Array | Uint32Array | BigUint64Array | Int8Array | Int16Array | Int32Array | BigInt64Array | Float32Array | Float64Array | ArrayBuffer | SharedArrayBuffer | DataView;
|
|
40
|
+
type _IsTuple<T extends readonly any[] | {
|
|
41
|
+
length: number;
|
|
42
|
+
}> = [T] extends [
|
|
43
|
+
never
|
|
44
|
+
] ? false : T extends readonly any[] ? number extends T["length"] ? false : true : false;
|
|
38
45
|
type _IsValueOf<Instance, Object extends IValueOf<any>> = Instance extends Object ? Object extends IValueOf<infer Primitive> ? Instance extends Primitive ? false : true : false : false;
|
|
39
46
|
interface IValueOf<T> {
|
|
40
47
|
valueOf(): T;
|
package/package.json
CHANGED
package/src/Primitive.ts
CHANGED
|
@@ -28,18 +28,17 @@
|
|
|
28
28
|
* @template Instance Target argument type.
|
|
29
29
|
* @author Jenogho Nam - https://github.com/samchon
|
|
30
30
|
*/
|
|
31
|
-
export type Primitive<
|
|
32
|
-
|
|
33
|
-
_Primitive<
|
|
34
|
-
> extends true
|
|
35
|
-
? Instance
|
|
36
|
-
: _Primitive<Instance>;
|
|
31
|
+
export type Primitive<T> = _Equal<T, _Primitive<T>> extends true
|
|
32
|
+
? T
|
|
33
|
+
: _Primitive<T>;
|
|
37
34
|
|
|
38
35
|
type _Equal<X, Y> = X extends Y ? (Y extends X ? true : false) : false;
|
|
39
36
|
|
|
40
37
|
type _Primitive<Instance> = _ValueOf<Instance> extends object
|
|
41
38
|
? Instance extends object
|
|
42
|
-
? Instance extends
|
|
39
|
+
? Instance extends _Native
|
|
40
|
+
? {}
|
|
41
|
+
: Instance extends IJsonable<infer Raw>
|
|
43
42
|
? _ValueOf<Raw> extends object
|
|
44
43
|
? Raw extends object
|
|
45
44
|
? _PrimitiveObject<Raw> // object would be primitified
|
|
@@ -50,13 +49,19 @@ type _Primitive<Instance> = _ValueOf<Instance> extends object
|
|
|
50
49
|
: _ValueOf<Instance>;
|
|
51
50
|
|
|
52
51
|
type _PrimitiveObject<Instance extends object> = Instance extends Array<infer T>
|
|
53
|
-
?
|
|
52
|
+
? _IsTuple<Instance> extends true
|
|
53
|
+
? _PrimitiveSpread<Instance>
|
|
54
|
+
: _Primitive<T>[]
|
|
54
55
|
: {
|
|
55
56
|
[P in keyof Instance]: Instance[P] extends Function
|
|
56
57
|
? never
|
|
57
58
|
: _Primitive<Instance[P]>;
|
|
58
59
|
};
|
|
59
60
|
|
|
61
|
+
type _PrimitiveSpread<T extends any[]> = T extends [infer F, ...infer Rest]
|
|
62
|
+
? [_Primitive<F>, ..._PrimitiveSpread<Rest>]
|
|
63
|
+
: [];
|
|
64
|
+
|
|
60
65
|
type _ValueOf<Instance> = _IsValueOf<Instance, Boolean> extends true
|
|
61
66
|
? boolean
|
|
62
67
|
: _IsValueOf<Instance, Number> extends true
|
|
@@ -65,6 +70,36 @@ type _ValueOf<Instance> = _IsValueOf<Instance, Boolean> extends true
|
|
|
65
70
|
? string
|
|
66
71
|
: Instance;
|
|
67
72
|
|
|
73
|
+
type _Native =
|
|
74
|
+
| Set<any>
|
|
75
|
+
| Map<any, any>
|
|
76
|
+
| WeakSet<any>
|
|
77
|
+
| WeakMap<any, any>
|
|
78
|
+
| Uint8Array
|
|
79
|
+
| Uint8ClampedArray
|
|
80
|
+
| Uint16Array
|
|
81
|
+
| Uint32Array
|
|
82
|
+
| BigUint64Array
|
|
83
|
+
| Int8Array
|
|
84
|
+
| Int16Array
|
|
85
|
+
| Int32Array
|
|
86
|
+
| BigInt64Array
|
|
87
|
+
| Float32Array
|
|
88
|
+
| Float64Array
|
|
89
|
+
| ArrayBuffer
|
|
90
|
+
| SharedArrayBuffer
|
|
91
|
+
| DataView;
|
|
92
|
+
|
|
93
|
+
type _IsTuple<T extends readonly any[] | { length: number }> = [T] extends [
|
|
94
|
+
never,
|
|
95
|
+
]
|
|
96
|
+
? false
|
|
97
|
+
: T extends readonly any[]
|
|
98
|
+
? number extends T["length"]
|
|
99
|
+
? false
|
|
100
|
+
: true
|
|
101
|
+
: false;
|
|
102
|
+
|
|
68
103
|
type _IsValueOf<
|
|
69
104
|
Instance,
|
|
70
105
|
Object extends IValueOf<any>,
|
|
@@ -82,4 +117,4 @@ interface IValueOf<T> {
|
|
|
82
117
|
|
|
83
118
|
interface IJsonable<T> {
|
|
84
119
|
toJSON(): T;
|
|
85
|
-
}
|
|
120
|
+
}
|