@nestia/fetcher 1.1.2 → 1.2.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.
@@ -28,21 +28,21 @@
28
28
  * @template Instance Target argument type.
29
29
  * @author Jenogho Nam - https://github.com/samchon
30
30
  */
31
- export type Primitive<T> = _Equal<T, _Primitive<T>> extends true ? T : _Primitive<T>;
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 _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
- [P in keyof Instance]: Instance[P] extends Function ? never : _Primitive<Instance[P]>;
31
+ export type Primitive<T> = Equal<T, PrimitiveMain<T>> extends true ? T : PrimitiveMain<T>;
32
+ type Equal<X, Y> = X extends Y ? (Y extends X ? true : false) : false;
33
+ type PrimitiveMain<Instance> = ValueOf<Instance> extends object ? Instance extends object ? Instance extends NativeClass ? {} : 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 ? PrimitiveTuple<Instance> : PrimitiveMain<T>[] : {
35
+ [P in keyof Instance]: Instance[P] extends Function ? never : PrimitiveMain<Instance[P]>;
36
36
  };
37
- type _PrimitiveSpread<T extends any[]> = T extends [infer F, ...infer Rest] ? [_Primitive<F>, ..._PrimitiveSpread<Rest>] : [];
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[] | {
37
+ type PrimitiveTuple<T extends readonly any[]> = T extends [infer F] ? [PrimitiveMain<F>] : T extends [infer F, ...infer Rest extends readonly any[]] ? [PrimitiveMain<F>, ...PrimitiveTuple<Rest>] : T extends [(infer F)?] ? [PrimitiveMain<F>?] : T extends [(infer F)?, ...infer Rest extends readonly any[]] ? [PrimitiveMain<F>?, ...PrimitiveTuple<Rest>] : [];
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 NativeClass = 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
41
  length: number;
42
42
  }> = [T] extends [
43
43
  never
44
44
  ] ? false : T extends readonly any[] ? number extends T["length"] ? false : true : false;
45
- type _IsValueOf<Instance, Object extends IValueOf<any>> = Instance extends Object ? Object extends IValueOf<infer Primitive> ? Instance extends Primitive ? false : true : false : false;
45
+ type IsValueOf<Instance, Object extends IValueOf<any>> = Instance extends Object ? Object extends IValueOf<infer Primitive> ? Instance extends Primitive ? false : true : false : false;
46
46
  interface IValueOf<T> {
47
47
  valueOf(): T;
48
48
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nestia/fetcher",
3
- "version": "1.1.2",
3
+ "version": "1.2.0",
4
4
  "description": "Fetcher library of Nestia SDK",
5
5
  "main": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
package/src/Primitive.ts CHANGED
@@ -28,49 +28,55 @@
28
28
  * @template Instance Target argument type.
29
29
  * @author Jenogho Nam - https://github.com/samchon
30
30
  */
31
- export type Primitive<T> = _Equal<T, _Primitive<T>> extends true
31
+ export type Primitive<T> = Equal<T, PrimitiveMain<T>> extends true
32
32
  ? T
33
- : _Primitive<T>;
33
+ : PrimitiveMain<T>;
34
34
 
35
- type _Equal<X, Y> = X extends Y ? (Y extends X ? true : false) : false;
35
+ type Equal<X, Y> = X extends Y ? (Y extends X ? true : false) : false;
36
36
 
37
- type _Primitive<Instance> = _ValueOf<Instance> extends object
37
+ type PrimitiveMain<Instance> = ValueOf<Instance> extends object
38
38
  ? Instance extends object
39
- ? Instance extends _Native
39
+ ? Instance extends NativeClass
40
40
  ? {}
41
41
  : Instance extends IJsonable<infer Raw>
42
- ? _ValueOf<Raw> extends object
42
+ ? ValueOf<Raw> extends object
43
43
  ? Raw extends object
44
- ? _PrimitiveObject<Raw> // object would be primitified
44
+ ? PrimitiveObject<Raw> // object would be primitified
45
45
  : never // cannot be
46
- : _ValueOf<Raw> // atomic value
47
- : _PrimitiveObject<Instance> // object would be primitified
46
+ : ValueOf<Raw> // atomic value
47
+ : PrimitiveObject<Instance> // object would be primitified
48
48
  : never // cannot be
49
- : _ValueOf<Instance>;
49
+ : ValueOf<Instance>;
50
50
 
51
- type _PrimitiveObject<Instance extends object> = Instance extends Array<infer T>
52
- ? _IsTuple<Instance> extends true
53
- ? _PrimitiveSpread<Instance>
54
- : _Primitive<T>[]
51
+ type PrimitiveObject<Instance extends object> = Instance extends Array<infer T>
52
+ ? IsTuple<Instance> extends true
53
+ ? PrimitiveTuple<Instance>
54
+ : PrimitiveMain<T>[]
55
55
  : {
56
56
  [P in keyof Instance]: Instance[P] extends Function
57
57
  ? never
58
- : _Primitive<Instance[P]>;
58
+ : PrimitiveMain<Instance[P]>;
59
59
  };
60
60
 
61
- type _PrimitiveSpread<T extends any[]> = T extends [infer F, ...infer Rest]
62
- ? [_Primitive<F>, ..._PrimitiveSpread<Rest>]
61
+ type PrimitiveTuple<T extends readonly any[]> = T extends [infer F]
62
+ ? [PrimitiveMain<F>]
63
+ : T extends [infer F, ...infer Rest extends readonly any[]]
64
+ ? [PrimitiveMain<F>, ...PrimitiveTuple<Rest>]
65
+ : T extends [(infer F)?]
66
+ ? [PrimitiveMain<F>?]
67
+ : T extends [(infer F)?, ...infer Rest extends readonly any[]]
68
+ ? [PrimitiveMain<F>?, ...PrimitiveTuple<Rest>]
63
69
  : [];
64
70
 
65
- type _ValueOf<Instance> = _IsValueOf<Instance, Boolean> extends true
71
+ type ValueOf<Instance> = IsValueOf<Instance, Boolean> extends true
66
72
  ? boolean
67
- : _IsValueOf<Instance, Number> extends true
73
+ : IsValueOf<Instance, Number> extends true
68
74
  ? number
69
- : _IsValueOf<Instance, String> extends true
75
+ : IsValueOf<Instance, String> extends true
70
76
  ? string
71
77
  : Instance;
72
78
 
73
- type _Native =
79
+ type NativeClass =
74
80
  | Set<any>
75
81
  | Map<any, any>
76
82
  | WeakSet<any>
@@ -90,7 +96,7 @@ type _Native =
90
96
  | SharedArrayBuffer
91
97
  | DataView;
92
98
 
93
- type _IsTuple<T extends readonly any[] | { length: number }> = [T] extends [
99
+ type IsTuple<T extends readonly any[] | { length: number }> = [T] extends [
94
100
  never,
95
101
  ]
96
102
  ? false
@@ -100,10 +106,7 @@ type _IsTuple<T extends readonly any[] | { length: number }> = [T] extends [
100
106
  : true
101
107
  : false;
102
108
 
103
- type _IsValueOf<
104
- Instance,
105
- Object extends IValueOf<any>,
106
- > = Instance extends Object
109
+ type IsValueOf<Instance, Object extends IValueOf<any>> = Instance extends Object
107
110
  ? Object extends IValueOf<infer Primitive>
108
111
  ? Instance extends Primitive
109
112
  ? false