semantic-typescript 0.3.8 → 0.4.1

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/dist/guard.js CHANGED
@@ -1,121 +1,139 @@
1
- import { BigIntStatisticsSymbol, CollectableSymbol, CollectorsSymbol, NumericStatisticsSymbol, OrderedCollectableSymbol, SemanticSymbol, StatisticsSymbol, UnorderedCollectableSymbol, WindowCollectableSymbol } from "./symbol";
2
- export let isBoolean = (t) => {
3
- return typeof t === "boolean";
1
+ import { BigIntStatisticsSymbol, CollectableSymbol, CollectorsSymbol, HashableSymbol, NumericStatisticsSymbol, OrderedCollectableSymbol, SemanticMapSymbol, SemanticSymbol, StatisticsSymbol, UnorderedCollectableSymbol, WindowCollectableSymbol } from "./symbol";
2
+ export let isBoolean = (target) => {
3
+ return typeof target === "boolean";
4
4
  };
5
- export let isString = (t) => {
6
- return typeof t === "string";
5
+ export let isString = (target) => {
6
+ return typeof target === "string";
7
7
  };
8
- export let isNumber = (t) => {
9
- return typeof t === "number" && !Number.isNaN(t) && Number.isFinite(t);
8
+ export let isNumber = (target) => {
9
+ return typeof target === "number" && !Number.isNaN(target) && Number.isFinite(target);
10
10
  };
11
- export let isFunction = (t) => {
12
- return typeof t === "function";
11
+ export let isFunction = (target) => {
12
+ return typeof target === "function";
13
13
  };
14
- export let isObject = (t) => {
15
- return typeof t === "object" && t !== null;
14
+ export let isObject = (target) => {
15
+ return typeof target === "object" && target !== null;
16
16
  };
17
- export let isSymbol = (t) => {
18
- return typeof t === "symbol";
17
+ export let isSymbol = (target) => {
18
+ return typeof target === "symbol";
19
19
  };
20
- export let isBigInt = (t) => {
21
- return typeof t === "bigint";
20
+ export let isBigInt = (target) => {
21
+ return typeof target === "bigint";
22
22
  };
23
- export let isPrimitive = (t) => {
24
- return isBoolean(t) || isString(t) || isNumber(t) || isSymbol(t) || isBigInt(t) || isFunction(t);
23
+ export let isPrimitive = (target) => {
24
+ return isBoolean(target) || isString(target) || isNumber(target) || isSymbol(target) || isBigInt(target) || isFunction(target);
25
25
  };
26
- export let isAsyncIterable = (t) => {
27
- if (isObject(t)) {
28
- return isFunction(Reflect.get(t, Symbol.asyncIterator));
26
+ export let isAsyncIterable = (target) => {
27
+ if (isObject(target)) {
28
+ return isFunction(Reflect.get(target, Symbol.asyncIterator));
29
29
  }
30
30
  return false;
31
31
  };
32
- export let isIterable = (t) => {
33
- if (isObject(t)) {
34
- return isFunction(Reflect.get(t, Symbol.iterator));
32
+ export let isIterable = (target) => {
33
+ if (isObject(target)) {
34
+ return isFunction(Reflect.get(target, Symbol.iterator));
35
35
  }
36
36
  return false;
37
37
  };
38
- export let isSemantic = (t) => {
39
- if (isObject(t)) {
40
- return Reflect.get(t, "Semantic") === SemanticSymbol;
38
+ export let isSemantic = (target) => {
39
+ if (isObject(target)) {
40
+ return Reflect.get(target, "Semantic") === SemanticSymbol;
41
41
  }
42
42
  return false;
43
43
  };
44
- export let isCollector = (t) => {
45
- if (isObject(t)) {
46
- return Reflect.get(t, "Collector") === CollectorsSymbol;
44
+ export let isCollector = (target) => {
45
+ if (isObject(target)) {
46
+ return Reflect.get(target, "Collector") === CollectorsSymbol;
47
47
  }
48
48
  return false;
49
49
  };
50
- export let isCollectable = (t) => {
51
- if (isObject(t)) {
52
- return Reflect.get(t, "Collectable") === CollectableSymbol;
50
+ export let isCollectable = (target) => {
51
+ if (isObject(target)) {
52
+ return Reflect.get(target, "Collectable") === CollectableSymbol;
53
53
  }
54
54
  return false;
55
55
  };
56
- export let isOrderedCollectable = (t) => {
57
- if (isObject(t)) {
58
- return Reflect.get(t, "OrderedCollectable") === OrderedCollectableSymbol;
56
+ export let isOrderedCollectable = (target) => {
57
+ if (isObject(target)) {
58
+ return Reflect.get(target, "OrderedCollectable") === OrderedCollectableSymbol;
59
59
  }
60
60
  return false;
61
61
  };
62
- export let isWindowCollectable = (t) => {
63
- if (isObject(t)) {
64
- return Reflect.get(t, "WindowCollectable") === WindowCollectableSymbol;
62
+ export let isWindowCollectable = (target) => {
63
+ if (isObject(target)) {
64
+ return Reflect.get(target, "WindowCollectable") === WindowCollectableSymbol;
65
65
  }
66
66
  return false;
67
67
  };
68
- export let isUnorderedCollectable = (t) => {
69
- if (isObject(t)) {
70
- return Reflect.get(t, "UnorderedCollectable") === UnorderedCollectableSymbol;
68
+ export let isUnorderedCollectable = (target) => {
69
+ if (isObject(target)) {
70
+ return Reflect.get(target, "UnorderedCollectable") === UnorderedCollectableSymbol;
71
71
  }
72
72
  return false;
73
73
  };
74
- export let isStatistics = (t) => {
75
- if (isObject(t)) {
76
- return Reflect.get(t, "Statistics") === StatisticsSymbol;
74
+ export let isStatistics = (target) => {
75
+ if (isObject(target)) {
76
+ return Reflect.get(target, "Statistics") === StatisticsSymbol;
77
77
  }
78
78
  return false;
79
79
  };
80
- export let isNumericStatistics = (t) => {
81
- if (isObject(t)) {
82
- return Reflect.get(t, "NumericStatistics") === NumericStatisticsSymbol;
80
+ export let isNumericStatistics = (target) => {
81
+ if (isObject(target)) {
82
+ return Reflect.get(target, "NumericStatistics") === NumericStatisticsSymbol;
83
83
  }
84
84
  return false;
85
85
  };
86
- export let isBigIntStatistics = (t) => {
87
- if (isObject(t)) {
88
- return Reflect.get(t, "BigIntStatistics") === BigIntStatisticsSymbol;
86
+ export let isBigIntStatistics = (target) => {
87
+ if (isObject(target)) {
88
+ return Reflect.get(target, "BigIntStatistics") === BigIntStatisticsSymbol;
89
89
  }
90
90
  return false;
91
91
  };
92
- export let isPromise = (t) => {
93
- if (isObject(t)) {
94
- return isFunction(Reflect.get(t, "then")) && isFunction(Reflect.get(t, "catch"));
92
+ export let isSemanticMap = (target) => {
93
+ if (isObject(target)) {
94
+ return Reflect.get(target, "SemanticMap") === SemanticMapSymbol;
95
95
  }
96
96
  return false;
97
97
  };
98
- export let isGenerator = (t) => {
99
- if (isFunction(t)) {
100
- return t.length === 2;
98
+ export let isHashable = (target) => {
99
+ if (isObject(target)) {
100
+ return Reflect.get(target, HashableSymbol) === HashableSymbol;
101
101
  }
102
102
  return false;
103
103
  };
104
- export let isAsyncFunction = (t) => {
105
- if (isFunction(t)) {
106
- return Reflect.get(t, Symbol.toStringTag) === "AsyncFunction";
104
+ export let isHashMap = (target) => {
105
+ if (isObject(target)) {
106
+ return Reflect.get(target, "HashMap") === SemanticMapSymbol;
107
107
  }
108
108
  return false;
109
109
  };
110
- export let isGeneratorFunction = (t) => {
111
- if (isFunction(t)) {
112
- return Reflect.get(t, Symbol.toStringTag) === "GeneratorFunction";
110
+ export let isHashSet = (target) => {
111
+ if (isObject(target)) {
112
+ return false;
113
113
  }
114
114
  return false;
115
115
  };
116
- export let isAsyncGeneratorFunction = (t) => {
117
- if (isFunction(t)) {
118
- return Reflect.get(t, Symbol.toStringTag) === "AsyncGeneratorFunction";
116
+ export let isPromise = (target) => {
117
+ if (isObject(target)) {
118
+ return isFunction(Reflect.get(target, "then")) && isFunction(Reflect.get(target, "catch"));
119
+ }
120
+ return false;
121
+ };
122
+ export let isAsyncFunction = (target) => {
123
+ if (isFunction(target)) {
124
+ return Reflect.get(target, Symbol.toStringTag) === "AsyncFunction" && target.constructor.name === "AsyncFunction";
125
+ }
126
+ return false;
127
+ };
128
+ export let isGeneratorFunction = (target) => {
129
+ if (isObject(target)) {
130
+ return isFunction(target) && Reflect.get(target, "constructor").name === "GeneratorFunction";
131
+ }
132
+ return false;
133
+ };
134
+ export let isAsyncGeneratorFunction = (target) => {
135
+ if (isObject(target)) {
136
+ return isFunction(target) && Reflect.get(target, "constructor").name === "AsyncGeneratorFunction";
119
137
  }
120
138
  return false;
121
139
  };
package/dist/hash.d.ts ADDED
@@ -0,0 +1,14 @@
1
+ import { type Type } from "./utility";
2
+ export interface Hashable {
3
+ }
4
+ export declare let maskOf: (type: Type) => bigint;
5
+ interface Handler<T> {
6
+ (value: T): bigint;
7
+ }
8
+ export declare let register: <T>(type: Type, handler: Handler<T>) => void;
9
+ export declare let unregister: (type: Type) => void;
10
+ interface UseHash {
11
+ <T = unknown>(target: T): bigint;
12
+ }
13
+ export declare let useHash: UseHash;
14
+ export {};
package/dist/hash.js ADDED
@@ -0,0 +1,211 @@
1
+ import { isBigInt, isBoolean, isFunction, isHashable, isNumber, isObject, isString, isSymbol } from "./guard";
2
+ import { useTraverse } from "./hook";
3
+ import { HashableSymbol } from "./symbol";
4
+ import { typeOf } from "./utility";
5
+ ;
6
+ const masks = new Map();
7
+ masks.set("undefined", BigInt(masks.size));
8
+ masks.set("null", BigInt(masks.size));
9
+ masks.set("boolean", BigInt(masks.size));
10
+ masks.set("number", BigInt(masks.size));
11
+ masks.set("bigint", BigInt(masks.size));
12
+ masks.set("symbol", BigInt(masks.size));
13
+ masks.set("string", BigInt(masks.size));
14
+ masks.set("function", BigInt(masks.size));
15
+ masks.set("object", BigInt(masks.size));
16
+ Object.freeze(masks);
17
+ const internal = Object.freeze(Array.from(masks.keys()));
18
+ export let maskOf = (type) => {
19
+ return masks.get(type) || masks.get("object") || 0n;
20
+ };
21
+ let primitive = new Map();
22
+ let complex = new WeakMap();
23
+ const handlers = new Map();
24
+ export let register = (type, handler) => {
25
+ if (isString(type) && isFunction(handler)) {
26
+ handlers.set(type, handler);
27
+ }
28
+ };
29
+ export let unregister = (type) => {
30
+ if (isString(type) && handlers.has(type) && !internal.includes(type)) {
31
+ handlers.delete(type);
32
+ }
33
+ };
34
+ register("undefined", (value) => {
35
+ if (value === (void 0)) {
36
+ if (primitive.has(value)) {
37
+ return primitive.get(value) || 0n;
38
+ }
39
+ let mask = maskOf("undefined");
40
+ let result = (0n << 4n) | mask;
41
+ primitive.set(value, result);
42
+ return result;
43
+ }
44
+ return 0n;
45
+ });
46
+ register("null", (value) => {
47
+ if (value === null) {
48
+ if (primitive.has(value)) {
49
+ return primitive.get(value) || 0n;
50
+ }
51
+ let mask = maskOf("null");
52
+ let result = (0n << 4n) | mask;
53
+ primitive.set(value, result);
54
+ return result;
55
+ }
56
+ return 0n;
57
+ });
58
+ register("boolean", (value) => {
59
+ if (isBoolean(value)) {
60
+ if (primitive.has(value)) {
61
+ return primitive.get(value) || 0n;
62
+ }
63
+ let mask = maskOf("boolean");
64
+ let result = ((value === true ? 1n : 0n) << 4n) | mask;
65
+ primitive.set(value, result);
66
+ return result;
67
+ }
68
+ return 0n;
69
+ });
70
+ register("number", (value) => {
71
+ if (isNumber(value)) {
72
+ if (primitive.has(value)) {
73
+ return primitive.get(value) || 0n;
74
+ }
75
+ let mask = maskOf("number");
76
+ let bit = 0xffffffffffffffffn;
77
+ let buffer = new ArrayBuffer(8);
78
+ let array = new Float64Array(buffer);
79
+ array[0] = value;
80
+ let view = new BigInt64Array(buffer);
81
+ let result = ((view[0] << 4n) & bit) | mask;
82
+ primitive.set(value, result);
83
+ return result;
84
+ }
85
+ return 0n;
86
+ });
87
+ register("bigint", (value) => {
88
+ if (isBigInt(value)) {
89
+ if (primitive.has(value)) {
90
+ return primitive.get(value) || 0n;
91
+ }
92
+ let mask = maskOf("bigint");
93
+ let bit = 0xffffffffffffffffn;
94
+ let result = ((value << 4n) & bit) | mask;
95
+ primitive.set(value, result);
96
+ return result;
97
+ }
98
+ return 0n;
99
+ });
100
+ register("string", (value) => {
101
+ if (isString(value)) {
102
+ if (primitive.has(value)) {
103
+ return primitive.get(value) || 0n;
104
+ }
105
+ let mask = maskOf("string");
106
+ let bit = 0xffffffffffffffffn;
107
+ let gap = value.length < 64 ? 1 : Math.ceil(Math.log2(value.length));
108
+ let result = 0n;
109
+ for (let i = 0; i < value.length; i += gap) {
110
+ result = (((result * 33n) & bit) ^ BigInt(value.charCodeAt(i))) + BigInt(i);
111
+ }
112
+ result = (result ^ (result >> 32n)) * 0x9e3779b97f4a7c15n;
113
+ result = (((result ^ (result >> 32n)) << 4n) & bit) | mask;
114
+ primitive.set(value, result);
115
+ return result;
116
+ }
117
+ return 0n;
118
+ });
119
+ register("symbol", (value) => {
120
+ if (isSymbol(value)) {
121
+ if (primitive.has(value)) {
122
+ return primitive.get(value) || 0n;
123
+ }
124
+ let mask = maskOf("symbol");
125
+ let bit = 0xffffffffffffffffn;
126
+ let description = (value.description || "") + String(value);
127
+ let result = 0n;
128
+ let gap = description.length < 64 ? 1 : Math.ceil(Math.log2(description.length));
129
+ for (let i = 0; i < description.length; i += gap) {
130
+ result = (((result * 33n) & bit) ^ BigInt(description.charCodeAt(i))) + BigInt(i);
131
+ }
132
+ result = (result ^ (result >> 32n)) * 0x9e3779b97f4a7c15n;
133
+ result = (((result ^ (result >> 32n)) << 4n) & bit) | mask;
134
+ primitive.set(value, result);
135
+ return result;
136
+ }
137
+ return 0n;
138
+ });
139
+ register("function", (value) => {
140
+ if (isFunction(value)) {
141
+ if (primitive.has(value)) {
142
+ return primitive.get(value) || 0n;
143
+ }
144
+ let mask = maskOf("function");
145
+ let bit = 0xffffffffffffffffn;
146
+ let description = (value.name || "") + String(value);
147
+ let result = 0n;
148
+ let gap = description.length < 64 ? 1 : Math.ceil(Math.log2(description.length));
149
+ for (let i = 0; i < description.length; i += gap) {
150
+ result = (((result * 33n) & bit) ^ BigInt(description.charCodeAt(i))) + BigInt(i);
151
+ }
152
+ result = (result ^ (result >> 32n)) * 0x9e3779b97f4a7c15n;
153
+ result = (((result ^ (result >> 32n)) << 4n) & bit) | mask;
154
+ primitive.set(value, result);
155
+ return result;
156
+ }
157
+ return 0n;
158
+ });
159
+ register("object", (value) => {
160
+ if (isObject(value)) {
161
+ if (complex.has(value)) {
162
+ return complex.get(value) || 0n;
163
+ }
164
+ try {
165
+ let mask = maskOf("object");
166
+ let bit = 0xffffffffffffffffn;
167
+ let result = 0n;
168
+ useTraverse(value, (key, value, path) => {
169
+ let keyHashHandler = handlers.get(typeOf(key));
170
+ let keyHash = keyHashHandler ? keyHashHandler(key) : 0n;
171
+ let valueHashHandler = handlers.get(typeOf(value));
172
+ let valueHash = valueHashHandler ? valueHashHandler(value) : 0n;
173
+ let pathHash = 0n;
174
+ if (complex.has(path)) {
175
+ pathHash = complex.get(path) || 0n;
176
+ }
177
+ else {
178
+ for (let p of path) {
179
+ let pathHashHandler = handlers.get(typeOf(p));
180
+ pathHash = (((pathHash << 5n) - pathHash) ^ (pathHashHandler ? pathHashHandler(p) : 0n)) & bit;
181
+ }
182
+ complex.set(path, pathHash);
183
+ }
184
+ result = (((result << 13n) | (result >> 51n)) ^ (keyHash * 0x243f6a8885a308d3n) ^ (valueHash * 0x517cc1b727220a95n) ^ (pathHash * 0x9e3779b97f4a7c15n)) & bit;
185
+ return true;
186
+ });
187
+ result = (result ^ (result >> 32n)) * 0x9e3779b97f4a7c15n;
188
+ result = (((result ^ (result >> 32n)) << 4n) & bit) | mask;
189
+ complex.set(value, result);
190
+ return result;
191
+ }
192
+ catch (error) {
193
+ throw new Error("Uncaught error on hashing object.");
194
+ }
195
+ }
196
+ return 0n;
197
+ });
198
+ ;
199
+ export let useHash = (target) => {
200
+ let type = typeOf(target);
201
+ if (type === "object" && isHashable(target)) {
202
+ if (complex.has(target)) {
203
+ return complex.get(target) || 0n;
204
+ }
205
+ let hash = Reflect.get(target, HashableSymbol)();
206
+ complex.set(target, hash);
207
+ return hash;
208
+ }
209
+ let handler = handlers.get(type) || (() => 0n);
210
+ return handler(target);
211
+ };
package/dist/hook.d.ts CHANGED
@@ -1,8 +1,21 @@
1
- import { type BiPredicate, type DeepPropertyKey, type DeepPropertyValue } from "./utility";
1
+ import { type DeepPropertyKey, type DeepPropertyValue } from "./utility";
2
2
  import type { Comparator, Generator } from "./utility";
3
3
  export declare let useCompare: <T>(t1: T, t2: T) => number;
4
- export declare let useRandom: <T = number | bigint>(index: T) => T;
5
- export declare let useTraverse: <T extends object>(t: T, callback: BiPredicate<DeepPropertyKey<T>, DeepPropertyValue<T>>) => void;
4
+ export declare let Useandom: <T = number | bigint>(index: T) => T;
5
+ export type UseTraverseKey<T extends object> = DeepPropertyKey<T> & (symbol | string | number);
6
+ export type UseTraverseValue<T extends object> = DeepPropertyValue<T>;
7
+ export type UseTraversePath<T extends object> = Array<UseTraverseKey<T> & (symbol | string | number)>;
8
+ export interface UseTraverseCallback<T extends object> {
9
+ (key: UseTraverseKey<T>, value: UseTraverseValue<T>): boolean;
10
+ }
11
+ export interface UseTraversePathCallback<T extends object> {
12
+ (key: UseTraverseKey<T>, value: UseTraverseValue<T>, path: UseTraversePath<T>): boolean;
13
+ }
14
+ interface UseTraverse {
15
+ <T extends object>(t: T, callback: UseTraverseCallback<T>): void;
16
+ <T extends object>(t: T, callback: UseTraversePathCallback<T>): void;
17
+ }
18
+ export declare let useTraverse: UseTraverse;
6
19
  export declare let useGenerator: <E>(iterable: Iterable<E>) => Generator<E>;
7
20
  interface UseArrange {
8
21
  <E>(source: Iterable<E>): Generator<E>;
@@ -13,5 +26,4 @@ interface UseArrange {
13
26
  export declare let useArrange: UseArrange;
14
27
  export declare let useToNumber: <T = unknown>(target: T) => number;
15
28
  export declare let useToBigInt: <T = unknown>(target: T) => bigint;
16
- export declare let useFunction: <T extends ((...args: any[]) => any)>(target: T) => T;
17
29
  export {};
package/dist/hook.js CHANGED
@@ -16,7 +16,10 @@ export let useCompare = (t1, t2) => {
16
16
  case "boolean":
17
17
  return t1 === t2 ? 0 : (t1 ? 1 : -1);
18
18
  case "symbol":
19
- return Object.prototype.toString.call(t1).localeCompare(Object.prototype.toString.call(t2));
19
+ if (t1.description === t2.description) {
20
+ return 0;
21
+ }
22
+ return (t1.description || "").localeCompare((t2.description) || "");
20
23
  case "function":
21
24
  throw new TypeError("Cannot compare functions.");
22
25
  case "undefined":
@@ -41,7 +44,7 @@ export let useCompare = (t1, t2) => {
41
44
  }
42
45
  throw new TypeError("Cannot compare values of different types.");
43
46
  };
44
- export let useRandom = (index) => {
47
+ export let Useandom = (index) => {
45
48
  if (isNumber(index)) {
46
49
  let x = Number(index);
47
50
  let phi = (1 + Math.sqrt(5)) / 2;
@@ -64,15 +67,20 @@ export let useRandom = (index) => {
64
67
  }
65
68
  throw new TypeError("Invalid input type");
66
69
  };
70
+ ;
71
+ ;
72
+ ;
67
73
  export let useTraverse = (t, callback) => {
68
74
  if (isObject(t)) {
69
75
  let seen = new WeakSet();
76
+ let path = [];
70
77
  let traverse = (target) => {
71
78
  if (!seen.has(target)) {
72
79
  seen.add(target);
73
80
  let stop = false;
74
81
  let properties = Reflect.ownKeys(target);
75
82
  for (let property of properties) {
83
+ path.push(property);
76
84
  let value = Reflect.get(target, property);
77
85
  if (stop) {
78
86
  break;
@@ -82,12 +90,13 @@ export let useTraverse = (t, callback) => {
82
90
  if (isIterable(value)) {
83
91
  let index = 0;
84
92
  for (let item of value) {
93
+ path.push(index);
85
94
  if (validate(item)) {
86
95
  if (isObject(item)) {
87
96
  traverse(item);
88
97
  }
89
98
  else {
90
- if (!callback(index, item)) {
99
+ if (!callback(index, item, path)) {
91
100
  stop = true;
92
101
  break;
93
102
  }
@@ -96,9 +105,12 @@ export let useTraverse = (t, callback) => {
96
105
  index++;
97
106
  }
98
107
  }
108
+ else {
109
+ traverse(value);
110
+ }
99
111
  }
100
112
  else {
101
- if (!callback(property, value)) {
113
+ if (!callback(property, value, path)) {
102
114
  stop = true;
103
115
  break;
104
116
  }
@@ -172,7 +184,7 @@ export let useToNumber = (target) => {
172
184
  case "boolean":
173
185
  return target ? 1 : 0;
174
186
  case "string":
175
- let result = Number(target.trim());
187
+ let result = Number(target);
176
188
  return isNumber(result) ? result : 0;
177
189
  case "bigint":
178
190
  return Number(target);
@@ -180,9 +192,6 @@ export let useToNumber = (target) => {
180
192
  if (invalidate(target)) {
181
193
  return 0;
182
194
  }
183
- if (target instanceof Date) {
184
- return target.getTime();
185
- }
186
195
  if (Reflect.has(target, Symbol.toPrimitive)) {
187
196
  let resolved = Reflect.apply(Reflect.get(target, Symbol.toPrimitive), target, ["default"]);
188
197
  return isNumber(resolved) ? resolved : 0;
@@ -200,7 +209,7 @@ export let useToBigInt = (target) => {
200
209
  return target ? 1n : 0n;
201
210
  case "string":
202
211
  let regex = /^[-+]?\d+$/;
203
- return regex.test(target) ? BigInt(target.trim()) : 0n;
212
+ return regex.test(target) ? BigInt(target) : 0n;
204
213
  case "bigint":
205
214
  return target;
206
215
  case "object":
@@ -209,15 +218,10 @@ export let useToBigInt = (target) => {
209
218
  }
210
219
  if (Reflect.has(target, Symbol.toPrimitive)) {
211
220
  let resolved = Reflect.apply(Reflect.get(target, Symbol.toPrimitive), target, ["default"]);
212
- return isBigInt(resolved) ? resolved : BigInt(useToNumber(resolved));
221
+ return isBigInt(resolved) ? resolved : 0n;
213
222
  }
214
223
  return 0n;
215
224
  default:
216
225
  return 0n;
217
226
  }
218
227
  };
219
- export let useFunction = (target) => {
220
- return Object.freeze((...args) => {
221
- return target(...args);
222
- });
223
- };
package/dist/index.d.ts CHANGED
@@ -2,9 +2,13 @@ export * from "./collectable";
2
2
  export * from "./collector";
3
3
  export * from "./factory";
4
4
  export * from "./guard";
5
+ export * from "./hash";
5
6
  export * from "./hook";
7
+ export * from "./map";
6
8
  export * from "./optional";
7
9
  export * from "./semantic";
10
+ export * from "./set";
11
+ export * from "./symbol";
8
12
  export * from "./statistics";
9
13
  export * from "./utility";
10
14
  export * from "./window";
package/dist/index.js CHANGED
@@ -2,9 +2,13 @@ export * from "./collectable";
2
2
  export * from "./collector";
3
3
  export * from "./factory";
4
4
  export * from "./guard";
5
+ export * from "./hash";
5
6
  export * from "./hook";
7
+ export * from "./map";
6
8
  export * from "./optional";
7
9
  export * from "./semantic";
10
+ export * from "./set";
11
+ export * from "./symbol";
8
12
  export * from "./statistics";
9
13
  export * from "./utility";
10
14
  export * from "./window";