data-structure-typed 1.46.3 → 1.46.4
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/CHANGELOG.md +1 -1
- package/benchmark/report.html +1 -1
- package/benchmark/report.json +5 -17
- package/dist/cjs/data-structures/hash/hash-map.d.ts +22 -26
- package/dist/cjs/data-structures/hash/hash-map.js +105 -76
- package/dist/cjs/data-structures/hash/hash-map.js.map +1 -1
- package/dist/cjs/data-structures/hash/index.d.ts +0 -4
- package/dist/cjs/data-structures/hash/index.js +0 -4
- package/dist/cjs/data-structures/hash/index.js.map +1 -1
- package/dist/cjs/types/data-structures/hash/hash-map.d.ts +5 -0
- package/dist/cjs/types/data-structures/hash/index.d.ts +0 -4
- package/dist/cjs/types/data-structures/hash/index.js +0 -4
- package/dist/cjs/types/data-structures/hash/index.js.map +1 -1
- package/dist/cjs/utils/utils.d.ts +1 -1
- package/dist/cjs/utils/utils.js +3 -3
- package/dist/cjs/utils/utils.js.map +1 -1
- package/dist/mjs/data-structures/hash/hash-map.d.ts +22 -26
- package/dist/mjs/data-structures/hash/hash-map.js +108 -77
- package/dist/mjs/data-structures/hash/index.d.ts +0 -4
- package/dist/mjs/data-structures/hash/index.js +0 -4
- package/dist/mjs/types/data-structures/hash/hash-map.d.ts +5 -0
- package/dist/mjs/types/data-structures/hash/index.d.ts +0 -4
- package/dist/mjs/types/data-structures/hash/index.js +0 -4
- package/dist/mjs/utils/utils.d.ts +1 -1
- package/dist/mjs/utils/utils.js +1 -1
- package/dist/umd/data-structure-typed.js +96 -182
- package/dist/umd/data-structure-typed.min.js +1 -1
- package/dist/umd/data-structure-typed.min.js.map +1 -1
- package/package.json +1 -1
- package/src/data-structures/hash/hash-map.ts +131 -81
- package/src/data-structures/hash/index.ts +0 -4
- package/src/types/data-structures/hash/hash-map.ts +6 -0
- package/src/types/data-structures/hash/index.ts +0 -4
- package/src/utils/utils.ts +1 -1
- package/test/performance/data-structures/hash/hash-map.test.ts +75 -0
- package/test/unit/data-structures/hash/hash-map.test.ts +32 -0
- package/dist/cjs/data-structures/hash/coordinate-map.d.ts +0 -44
- package/dist/cjs/data-structures/hash/coordinate-map.js +0 -63
- package/dist/cjs/data-structures/hash/coordinate-map.js.map +0 -1
- package/dist/cjs/data-structures/hash/coordinate-set.d.ts +0 -36
- package/dist/cjs/data-structures/hash/coordinate-set.js +0 -53
- package/dist/cjs/data-structures/hash/coordinate-set.js.map +0 -1
- package/dist/cjs/data-structures/hash/tree-map.d.ts +0 -2
- package/dist/cjs/data-structures/hash/tree-map.js +0 -7
- package/dist/cjs/data-structures/hash/tree-map.js.map +0 -1
- package/dist/cjs/data-structures/hash/tree-set.d.ts +0 -2
- package/dist/cjs/data-structures/hash/tree-set.js +0 -7
- package/dist/cjs/data-structures/hash/tree-set.js.map +0 -1
- package/dist/cjs/types/data-structures/hash/coordinate-map.d.ts +0 -1
- package/dist/cjs/types/data-structures/hash/coordinate-map.js +0 -3
- package/dist/cjs/types/data-structures/hash/coordinate-map.js.map +0 -1
- package/dist/cjs/types/data-structures/hash/coordinate-set.d.ts +0 -1
- package/dist/cjs/types/data-structures/hash/coordinate-set.js +0 -3
- package/dist/cjs/types/data-structures/hash/coordinate-set.js.map +0 -1
- package/dist/cjs/types/data-structures/hash/tree-map.d.ts +0 -1
- package/dist/cjs/types/data-structures/hash/tree-map.js +0 -3
- package/dist/cjs/types/data-structures/hash/tree-map.js.map +0 -1
- package/dist/cjs/types/data-structures/hash/tree-set.d.ts +0 -1
- package/dist/cjs/types/data-structures/hash/tree-set.js +0 -3
- package/dist/cjs/types/data-structures/hash/tree-set.js.map +0 -1
- package/dist/mjs/data-structures/hash/coordinate-map.d.ts +0 -44
- package/dist/mjs/data-structures/hash/coordinate-map.js +0 -58
- package/dist/mjs/data-structures/hash/coordinate-set.d.ts +0 -36
- package/dist/mjs/data-structures/hash/coordinate-set.js +0 -48
- package/dist/mjs/data-structures/hash/tree-map.d.ts +0 -2
- package/dist/mjs/data-structures/hash/tree-map.js +0 -2
- package/dist/mjs/data-structures/hash/tree-set.d.ts +0 -2
- package/dist/mjs/data-structures/hash/tree-set.js +0 -2
- package/dist/mjs/types/data-structures/hash/coordinate-map.d.ts +0 -1
- package/dist/mjs/types/data-structures/hash/coordinate-map.js +0 -1
- package/dist/mjs/types/data-structures/hash/coordinate-set.d.ts +0 -1
- package/dist/mjs/types/data-structures/hash/coordinate-set.js +0 -1
- package/dist/mjs/types/data-structures/hash/tree-map.d.ts +0 -1
- package/dist/mjs/types/data-structures/hash/tree-map.js +0 -1
- package/dist/mjs/types/data-structures/hash/tree-set.d.ts +0 -1
- package/dist/mjs/types/data-structures/hash/tree-set.js +0 -1
- package/src/data-structures/hash/coordinate-map.ts +0 -63
- package/src/data-structures/hash/coordinate-set.ts +0 -52
- package/src/data-structures/hash/tree-map.ts +0 -2
- package/src/data-structures/hash/tree-set.ts +0 -2
- package/src/types/data-structures/hash/coordinate-map.ts +0 -1
- package/src/types/data-structures/hash/coordinate-set.ts +0 -1
- package/src/types/data-structures/hash/tree-map.ts +0 -1
- package/src/types/data-structures/hash/tree-set.ts +0 -1
- package/test/performance/data-structures/hash/coordinate-map.test.ts +0 -0
- package/test/performance/data-structures/hash/coordinate-set.test.ts +0 -0
- package/test/unit/data-structures/hash/coordinate-map.test.ts +0 -74
- package/test/unit/data-structures/hash/coordinate-set.test.ts +0 -66
package/CHANGELOG.md
CHANGED
|
@@ -8,7 +8,7 @@ All notable changes to this project will be documented in this file.
|
|
|
8
8
|
- [Semantic Versioning](https://semver.org/spec/v2.0.0.html)
|
|
9
9
|
- [`auto-changelog`](https://github.com/CookPete/auto-changelog)
|
|
10
10
|
|
|
11
|
-
## [v1.46.
|
|
11
|
+
## [v1.46.4](https://github.com/zrwusa/data-structure-typed/compare/v1.35.0...main) (upcoming)
|
|
12
12
|
|
|
13
13
|
### Changes
|
|
14
14
|
|
package/benchmark/report.html
CHANGED
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
<body>
|
|
44
44
|
<div id="json-to-html"><div class="json-to-html-collapse clearfix 0">
|
|
45
45
|
<div class='collapsible level0' ><span class='json-to-html-label'>hash-map</span></div>
|
|
46
|
-
<div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>1,000,000 set</td><td>
|
|
46
|
+
<div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>1,000,000 set</td><td>217.67</td><td>4.59</td><td>0.02</td></tr><tr><td>1,000,000 CPT set</td><td>176.11</td><td>5.68</td><td>0.03</td></tr></table></div>
|
|
47
47
|
</div>
|
|
48
48
|
|
|
49
49
|
</div>
|
package/benchmark/report.json
CHANGED
|
@@ -3,27 +3,15 @@
|
|
|
3
3
|
"benchmarks": [
|
|
4
4
|
{
|
|
5
5
|
"test name": "1,000,000 set",
|
|
6
|
-
"time taken (ms)": "
|
|
7
|
-
"executions per sec": "
|
|
6
|
+
"time taken (ms)": "217.67",
|
|
7
|
+
"executions per sec": "4.59",
|
|
8
8
|
"sample deviation": "0.02"
|
|
9
9
|
},
|
|
10
10
|
{
|
|
11
11
|
"test name": "1,000,000 CPT set",
|
|
12
|
-
"time taken (ms)": "
|
|
13
|
-
"executions per sec": "5.
|
|
14
|
-
"sample deviation": "0.
|
|
15
|
-
},
|
|
16
|
-
{
|
|
17
|
-
"test name": "1,000,000 set & get",
|
|
18
|
-
"time taken (ms)": "182.19",
|
|
19
|
-
"executions per sec": "5.49",
|
|
20
|
-
"sample deviation": "0.02"
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
"test name": "1,000,000 CPT set & get",
|
|
24
|
-
"time taken (ms)": "175.65",
|
|
25
|
-
"executions per sec": "5.69",
|
|
26
|
-
"sample deviation": "0.02"
|
|
12
|
+
"time taken (ms)": "176.11",
|
|
13
|
+
"executions per sec": "5.68",
|
|
14
|
+
"sample deviation": "0.03"
|
|
27
15
|
}
|
|
28
16
|
],
|
|
29
17
|
"testName": "hash-map"
|
|
@@ -5,21 +5,21 @@
|
|
|
5
5
|
* @copyright Copyright (c) 2022 Tyler Zeng <zrwusa@gmail.com>
|
|
6
6
|
* @license MIT License
|
|
7
7
|
*/
|
|
8
|
-
import { HashMapLinkedNode,
|
|
8
|
+
import { HashMapLinkedNode, HashMapOptions } from '../../types';
|
|
9
9
|
export declare class HashMap<K = any, V = any> {
|
|
10
|
-
|
|
11
|
-
protected
|
|
12
|
-
protected
|
|
13
|
-
protected
|
|
14
|
-
protected
|
|
15
|
-
protected
|
|
10
|
+
protected _noObjMap: Record<string, HashMapLinkedNode<K, V | undefined>>;
|
|
11
|
+
protected _objMap: WeakMap<WeakKey, HashMapLinkedNode<K, V | undefined>>;
|
|
12
|
+
protected _head: HashMapLinkedNode<K, V | undefined>;
|
|
13
|
+
protected _tail: HashMapLinkedNode<K, V | undefined>;
|
|
14
|
+
protected readonly _sentinel: HashMapLinkedNode<K, V | undefined>;
|
|
15
|
+
protected _hashFn: (key: K) => string;
|
|
16
|
+
protected _objHashFn: (key: K) => WeakKey;
|
|
16
17
|
/**
|
|
17
|
-
* The constructor initializes a
|
|
18
|
-
* @param
|
|
19
|
-
*
|
|
20
|
-
* `K` represents the type of the key and `V` represents the
|
|
18
|
+
* The constructor initializes a HashMapLinkedNode with an optional iterable of key-value pairs.
|
|
19
|
+
* @param options - The `options` parameter is an object that contains the `elements` property. The
|
|
20
|
+
* `elements` property is an iterable that contains key-value pairs represented as arrays `[K, V]`.
|
|
21
21
|
*/
|
|
22
|
-
constructor(
|
|
22
|
+
constructor(options?: HashMapOptions<K, V>);
|
|
23
23
|
protected _size: number;
|
|
24
24
|
get size(): number;
|
|
25
25
|
/**
|
|
@@ -43,12 +43,12 @@ export declare class HashMap<K = any, V = any> {
|
|
|
43
43
|
/**
|
|
44
44
|
* The `begin()` function in TypeScript iterates over a linked list and yields key-value pairs.
|
|
45
45
|
*/
|
|
46
|
-
begin(): Generator<(K | V)[], void, unknown>;
|
|
46
|
+
begin(): Generator<(K | V | undefined)[], void, unknown>;
|
|
47
47
|
/**
|
|
48
48
|
* The function `reverseBegin()` iterates over a linked list in reverse order, yielding each node's
|
|
49
49
|
* key and value.
|
|
50
50
|
*/
|
|
51
|
-
reverseBegin(): Generator<(K | V)[], void, unknown>;
|
|
51
|
+
reverseBegin(): Generator<(K | V | undefined)[], void, unknown>;
|
|
52
52
|
/**
|
|
53
53
|
* Time Complexity: O(1)
|
|
54
54
|
* Space Complexity: O(1)
|
|
@@ -59,10 +59,9 @@ export declare class HashMap<K = any, V = any> {
|
|
|
59
59
|
* type, but typically it is a string or symbol.
|
|
60
60
|
* @param {V} [value] - The `value` parameter is an optional parameter of type `V`. It represents the
|
|
61
61
|
* value associated with the key being set in the data structure.
|
|
62
|
-
* @param {boolean} isObjectKey - A boolean flag indicating whether the key is an object key or not.
|
|
63
62
|
* @returns the size of the data structure after the key-value pair has been set.
|
|
64
63
|
*/
|
|
65
|
-
set(key: K, value?: V
|
|
64
|
+
set(key: K, value?: V): number;
|
|
66
65
|
/**
|
|
67
66
|
* Time Complexity: O(1)
|
|
68
67
|
* Space Complexity: O(1)
|
|
@@ -71,15 +70,12 @@ export declare class HashMap<K = any, V = any> {
|
|
|
71
70
|
* key directly or by using an index stored in the key object.
|
|
72
71
|
* @param {K} key - The `key` parameter is the key used to retrieve a value from the map. It can be
|
|
73
72
|
* of any type, but typically it is a string or symbol.
|
|
74
|
-
* @param {boolean} isObjectKey - The `isObjectKey` parameter is a boolean flag that indicates
|
|
75
|
-
* whether the `key` parameter is an object key or not. If `isObjectKey` is `true`, it means that
|
|
76
|
-
* `key` is an object key. If `isObjectKey` is `false`, it means that `key`
|
|
77
73
|
* @returns The value associated with the given key is being returned. If the key is an object key,
|
|
78
74
|
* the value is retrieved from the `_nodes` array using the index stored in the `OBJ_KEY_INDEX`
|
|
79
|
-
* property of the key. If the key is a string key, the value is retrieved from the `
|
|
75
|
+
* property of the key. If the key is a string key, the value is retrieved from the `_noObjMap` object
|
|
80
76
|
* using the key itself. If the key is not found, `undefined` is
|
|
81
77
|
*/
|
|
82
|
-
get(key: K
|
|
78
|
+
get(key: K): V | undefined;
|
|
83
79
|
/**
|
|
84
80
|
* Time Complexity: O(n), where n is the index.
|
|
85
81
|
* Space Complexity: O(1)
|
|
@@ -99,13 +95,10 @@ export declare class HashMap<K = any, V = any> {
|
|
|
99
95
|
* The `delete` function removes a key-value pair from a map-like data structure.
|
|
100
96
|
* @param {K} key - The `key` parameter is the key that you want to delete from the data structure.
|
|
101
97
|
* It can be of any type, but typically it is a string or an object.
|
|
102
|
-
* @param {boolean} isObjectKey - The `isObjectKey` parameter is a boolean flag that indicates
|
|
103
|
-
* whether the `key` parameter is an object key or not. If `isObjectKey` is `true`, it means that the
|
|
104
|
-
* `key` parameter is an object key. If `isObjectKey` is `false`, it means that the
|
|
105
98
|
* @returns a boolean value. It returns `true` if the deletion was successful, and `false` if the key
|
|
106
99
|
* was not found.
|
|
107
100
|
*/
|
|
108
|
-
delete(key: K
|
|
101
|
+
delete(key: K): boolean;
|
|
109
102
|
/**
|
|
110
103
|
* Time Complexity: O(n), where n is the index.
|
|
111
104
|
* Space Complexity: O(1)
|
|
@@ -142,6 +135,9 @@ export declare class HashMap<K = any, V = any> {
|
|
|
142
135
|
* HashMap. It takes three arguments:
|
|
143
136
|
*/
|
|
144
137
|
forEach(callback: (element: [K, V], index: number, hashMap: HashMap<K, V>) => void): void;
|
|
138
|
+
filter(predicate: (element: [K, V], map: HashMap<K, V>) => boolean): HashMap<K, V>;
|
|
139
|
+
map<NV>(callback: (element: [K, V], map: HashMap<K, V>) => NV): HashMap<K, NV>;
|
|
140
|
+
reduce<A>(callback: (accumulator: A, element: [K, V], map: HashMap<K, V>) => A, initialValue: A): A;
|
|
145
141
|
/**
|
|
146
142
|
* Time Complexity: O(n), where n is the number of elements in the HashMap.
|
|
147
143
|
* Space Complexity: O(1)
|
|
@@ -159,5 +155,5 @@ export declare class HashMap<K = any, V = any> {
|
|
|
159
155
|
* represents a node in a linked list. It contains a key-value pair and references to the previous
|
|
160
156
|
* and next nodes in the list.
|
|
161
157
|
*/
|
|
162
|
-
protected _deleteNode(node: HashMapLinkedNode<K, V>): void;
|
|
158
|
+
protected _deleteNode(node: HashMapLinkedNode<K, V | undefined>): void;
|
|
163
159
|
}
|
|
@@ -11,21 +11,27 @@ exports.HashMap = void 0;
|
|
|
11
11
|
const utils_1 = require("../../utils");
|
|
12
12
|
class HashMap {
|
|
13
13
|
/**
|
|
14
|
-
* The constructor initializes a
|
|
15
|
-
* @param
|
|
16
|
-
*
|
|
17
|
-
* `K` represents the type of the key and `V` represents the
|
|
14
|
+
* The constructor initializes a HashMapLinkedNode with an optional iterable of key-value pairs.
|
|
15
|
+
* @param options - The `options` parameter is an object that contains the `elements` property. The
|
|
16
|
+
* `elements` property is an iterable that contains key-value pairs represented as arrays `[K, V]`.
|
|
18
17
|
*/
|
|
19
|
-
constructor(
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
18
|
+
constructor(options = {
|
|
19
|
+
elements: [],
|
|
20
|
+
hashFn: (key) => String(key),
|
|
21
|
+
objHashFn: (key) => key
|
|
22
|
+
}) {
|
|
23
|
+
this._noObjMap = {};
|
|
24
|
+
this._objMap = new WeakMap();
|
|
23
25
|
this._size = 0;
|
|
24
|
-
Object.setPrototypeOf(this._orgMap, null);
|
|
25
26
|
this._sentinel = {};
|
|
26
27
|
this._sentinel.prev = this._sentinel.next = this._head = this._tail = this._sentinel;
|
|
27
|
-
|
|
28
|
-
|
|
28
|
+
const { elements, hashFn, objHashFn } = options;
|
|
29
|
+
this._hashFn = hashFn;
|
|
30
|
+
this._objHashFn = objHashFn;
|
|
31
|
+
if (elements) {
|
|
32
|
+
for (const el of elements) {
|
|
33
|
+
this.set(el[0], el[1]);
|
|
34
|
+
}
|
|
29
35
|
}
|
|
30
36
|
}
|
|
31
37
|
get size() {
|
|
@@ -88,52 +94,52 @@ class HashMap {
|
|
|
88
94
|
* type, but typically it is a string or symbol.
|
|
89
95
|
* @param {V} [value] - The `value` parameter is an optional parameter of type `V`. It represents the
|
|
90
96
|
* value associated with the key being set in the data structure.
|
|
91
|
-
* @param {boolean} isObjectKey - A boolean flag indicating whether the key is an object key or not.
|
|
92
97
|
* @returns the size of the data structure after the key-value pair has been set.
|
|
93
98
|
*/
|
|
94
|
-
set(key, value
|
|
95
|
-
let
|
|
96
|
-
if (
|
|
97
|
-
const
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
99
|
+
set(key, value) {
|
|
100
|
+
let node;
|
|
101
|
+
if ((0, utils_1.isWeakKey)(key)) {
|
|
102
|
+
// const hash = this._objHashFn(key);
|
|
103
|
+
const hash = key;
|
|
104
|
+
node = this._objMap.get(hash);
|
|
105
|
+
if (node) {
|
|
106
|
+
// If the node already exists, update its value
|
|
107
|
+
node.value = value;
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
// Create new node
|
|
111
|
+
node = { key: hash, value, prev: this._tail, next: this._sentinel };
|
|
112
|
+
// Add new nodes to _objMap and linked list
|
|
113
|
+
this._objMap.set(hash, node);
|
|
101
114
|
}
|
|
102
|
-
Object.defineProperty(key, this.OBJ_KEY_INDEX, {
|
|
103
|
-
value: this._nodes.length,
|
|
104
|
-
configurable: true
|
|
105
|
-
});
|
|
106
|
-
newTail = {
|
|
107
|
-
key: key,
|
|
108
|
-
value: value,
|
|
109
|
-
prev: this._tail,
|
|
110
|
-
next: this._sentinel
|
|
111
|
-
};
|
|
112
|
-
this._nodes.push(newTail);
|
|
113
115
|
}
|
|
114
116
|
else {
|
|
115
|
-
const
|
|
117
|
+
const hash = this._hashFn(key);
|
|
118
|
+
// Non-object keys are handled in the same way as the original implementation
|
|
119
|
+
node = this._noObjMap[hash];
|
|
116
120
|
if (node) {
|
|
117
121
|
node.value = value;
|
|
118
|
-
return this._size;
|
|
119
122
|
}
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
123
|
+
else {
|
|
124
|
+
this._noObjMap[hash] = node = {
|
|
125
|
+
key,
|
|
126
|
+
value,
|
|
127
|
+
prev: this._tail,
|
|
128
|
+
next: this._sentinel
|
|
129
|
+
};
|
|
130
|
+
}
|
|
126
131
|
}
|
|
127
132
|
if (this._size === 0) {
|
|
128
|
-
this._head =
|
|
129
|
-
this._sentinel.next =
|
|
133
|
+
this._head = node;
|
|
134
|
+
this._sentinel.next = node;
|
|
130
135
|
}
|
|
131
136
|
else {
|
|
132
|
-
this._tail.next =
|
|
137
|
+
this._tail.next = node;
|
|
133
138
|
}
|
|
134
|
-
this._tail =
|
|
135
|
-
this._sentinel.prev =
|
|
136
|
-
|
|
139
|
+
this._tail = node;
|
|
140
|
+
this._sentinel.prev = node;
|
|
141
|
+
this._size++;
|
|
142
|
+
return this._size;
|
|
137
143
|
}
|
|
138
144
|
/**
|
|
139
145
|
* Time Complexity: O(1)
|
|
@@ -143,21 +149,22 @@ class HashMap {
|
|
|
143
149
|
* key directly or by using an index stored in the key object.
|
|
144
150
|
* @param {K} key - The `key` parameter is the key used to retrieve a value from the map. It can be
|
|
145
151
|
* of any type, but typically it is a string or symbol.
|
|
146
|
-
* @param {boolean} isObjectKey - The `isObjectKey` parameter is a boolean flag that indicates
|
|
147
|
-
* whether the `key` parameter is an object key or not. If `isObjectKey` is `true`, it means that
|
|
148
|
-
* `key` is an object key. If `isObjectKey` is `false`, it means that `key`
|
|
149
152
|
* @returns The value associated with the given key is being returned. If the key is an object key,
|
|
150
153
|
* the value is retrieved from the `_nodes` array using the index stored in the `OBJ_KEY_INDEX`
|
|
151
|
-
* property of the key. If the key is a string key, the value is retrieved from the `
|
|
154
|
+
* property of the key. If the key is a string key, the value is retrieved from the `_noObjMap` object
|
|
152
155
|
* using the key itself. If the key is not found, `undefined` is
|
|
153
156
|
*/
|
|
154
|
-
get(key
|
|
155
|
-
if (
|
|
156
|
-
const
|
|
157
|
-
|
|
157
|
+
get(key) {
|
|
158
|
+
if ((0, utils_1.isWeakKey)(key)) {
|
|
159
|
+
const hash = this._objHashFn(key);
|
|
160
|
+
const node = this._objMap.get(hash);
|
|
161
|
+
return node ? node.value : undefined;
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
const hash = this._hashFn(key);
|
|
165
|
+
const node = this._noObjMap[hash];
|
|
166
|
+
return node ? node.value : undefined;
|
|
158
167
|
}
|
|
159
|
-
const node = this._orgMap[key];
|
|
160
|
-
return node ? node.value : undefined;
|
|
161
168
|
}
|
|
162
169
|
/**
|
|
163
170
|
* Time Complexity: O(n), where n is the index.
|
|
@@ -185,28 +192,32 @@ class HashMap {
|
|
|
185
192
|
* The `delete` function removes a key-value pair from a map-like data structure.
|
|
186
193
|
* @param {K} key - The `key` parameter is the key that you want to delete from the data structure.
|
|
187
194
|
* It can be of any type, but typically it is a string or an object.
|
|
188
|
-
* @param {boolean} isObjectKey - The `isObjectKey` parameter is a boolean flag that indicates
|
|
189
|
-
* whether the `key` parameter is an object key or not. If `isObjectKey` is `true`, it means that the
|
|
190
|
-
* `key` parameter is an object key. If `isObjectKey` is `false`, it means that the
|
|
191
195
|
* @returns a boolean value. It returns `true` if the deletion was successful, and `false` if the key
|
|
192
196
|
* was not found.
|
|
193
197
|
*/
|
|
194
|
-
delete(key
|
|
198
|
+
delete(key) {
|
|
195
199
|
let node;
|
|
196
|
-
if (
|
|
197
|
-
const
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
200
|
+
if ((0, utils_1.isWeakKey)(key)) {
|
|
201
|
+
const hash = this._objHashFn(key);
|
|
202
|
+
// Get nodes from WeakMap
|
|
203
|
+
node = this._objMap.get(hash);
|
|
204
|
+
if (!node) {
|
|
205
|
+
return false; // If the node does not exist, return false
|
|
206
|
+
}
|
|
207
|
+
// Remove nodes from WeakMap
|
|
208
|
+
this._objMap.delete(hash);
|
|
203
209
|
}
|
|
204
210
|
else {
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
211
|
+
const hash = this._hashFn(key);
|
|
212
|
+
// Get nodes from noObjMap
|
|
213
|
+
node = this._noObjMap[hash];
|
|
214
|
+
if (!node) {
|
|
215
|
+
return false; // If the node does not exist, return false
|
|
216
|
+
}
|
|
217
|
+
// Remove nodes from orgMap
|
|
218
|
+
delete this._noObjMap[hash];
|
|
209
219
|
}
|
|
220
|
+
// Remove node from doubly linked list
|
|
210
221
|
this._deleteNode(node);
|
|
211
222
|
return true;
|
|
212
223
|
}
|
|
@@ -246,13 +257,7 @@ class HashMap {
|
|
|
246
257
|
* The `clear` function clears all the elements in a data structure and resets its properties.
|
|
247
258
|
*/
|
|
248
259
|
clear() {
|
|
249
|
-
|
|
250
|
-
// this._nodes.forEach(el => {
|
|
251
|
-
// delete (<Record<symbol, number>><unknown>el.key)[OBJ_KEY_INDEX];
|
|
252
|
-
// });
|
|
253
|
-
this._nodes = [];
|
|
254
|
-
this._orgMap = {};
|
|
255
|
-
Object.setPrototypeOf(this._orgMap, null);
|
|
260
|
+
this._noObjMap = {};
|
|
256
261
|
this._size = 0;
|
|
257
262
|
this._head = this._tail = this._sentinel.prev = this._sentinel.next = this._sentinel;
|
|
258
263
|
}
|
|
@@ -273,6 +278,30 @@ class HashMap {
|
|
|
273
278
|
node = node.next;
|
|
274
279
|
}
|
|
275
280
|
}
|
|
281
|
+
filter(predicate) {
|
|
282
|
+
const filteredMap = new HashMap();
|
|
283
|
+
for (const [key, value] of this) {
|
|
284
|
+
if (predicate([key, value], this)) {
|
|
285
|
+
filteredMap.set(key, value);
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
return filteredMap;
|
|
289
|
+
}
|
|
290
|
+
map(callback) {
|
|
291
|
+
const mappedMap = new HashMap();
|
|
292
|
+
for (const [key, value] of this) {
|
|
293
|
+
const newValue = callback([key, value], this);
|
|
294
|
+
mappedMap.set(key, newValue);
|
|
295
|
+
}
|
|
296
|
+
return mappedMap;
|
|
297
|
+
}
|
|
298
|
+
reduce(callback, initialValue) {
|
|
299
|
+
let accumulator = initialValue;
|
|
300
|
+
for (const element of this) {
|
|
301
|
+
accumulator = callback(accumulator, element, this);
|
|
302
|
+
}
|
|
303
|
+
return accumulator;
|
|
304
|
+
}
|
|
276
305
|
/**
|
|
277
306
|
* Time Complexity: O(n), where n is the number of elements in the HashMap.
|
|
278
307
|
* Space Complexity: O(1)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hash-map.js","sourceRoot":"","sources":["../../../../src/data-structures/hash/hash-map.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAEH,
|
|
1
|
+
{"version":3,"file":"hash-map.js","sourceRoot":"","sources":["../../../../src/data-structures/hash/hash-map.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAEH,uCAAoD;AAGpD,MAAa,OAAO;IAUlB;;;;OAIG;IACH,YAAY,UAAgC;QAC1C,QAAQ,EAAE,EAAE;QACZ,MAAM,EAAE,CAAC,GAAM,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC;QAC/B,SAAS,EAAE,CAAC,GAAM,EAAE,EAAE,CAAW,GAAI;KACtC;QAjBS,cAAS,GAAwD,EAAE,CAAC;QACpE,YAAO,GAAG,IAAI,OAAO,EAAgD,CAAC;QA+BtE,UAAK,GAAG,CAAC,CAAC;QAdlB,IAAI,CAAC,SAAS,GAA4B,EAAE,CAAC;QAC7C,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;QAErF,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;QAChD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,QAAQ,EAAE;YACZ,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE;gBACzB,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;aACxB;SACF;IAEH,CAAC;IAID,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;;;;;;OAOG;IACH,IAAI,KAAK;QACP,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC;YAAE,OAAO;QAC7B,OAAe,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACpD,CAAC;IAED;;;;;;;OAOG;IACH,IAAI,IAAI;QACN,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC;YAAE,OAAO;QAC7B,OAAe,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACpD,CAAC;IAED;;OAEG;IACH,CAAE,KAAK;QACL,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;QACtB,OAAO,IAAI,KAAK,IAAI,CAAC,SAAS,EAAE;YAC9B,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAC7B,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;SAClB;IACH,CAAC;IAED;;;OAGG;IACH,CAAE,YAAY;QACZ,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;QACtB,OAAO,IAAI,KAAK,IAAI,CAAC,SAAS,EAAE;YAC9B,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAC7B,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;SAClB;IACH,CAAC;IAED;;;;;;;;;;;OAWG;IACH,GAAG,CAAC,GAAM,EAAE,KAAS;QACnB,IAAI,IAAI,CAAC;QAET,IAAI,IAAA,iBAAS,EAAC,GAAG,CAAC,EAAE;YAClB,qCAAqC;YACrC,MAAM,IAAI,GAAG,GAAG,CAAC;YACjB,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAE9B,IAAI,IAAI,EAAE;gBACR,+CAA+C;gBAC/C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;aACpB;iBAAM;gBACL,kBAAkB;gBAClB,IAAI,GAAG,EAAE,GAAG,EAAK,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;gBAEvE,2CAA2C;gBAC3C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;aAC9B;SACF;aAAM;YACL,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC/B,6EAA6E;YAC7E,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC5B,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;aACpB;iBAAM;gBACL,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG;oBAC5B,GAAG;oBACH,KAAK;oBACL,IAAI,EAAE,IAAI,CAAC,KAAK;oBAChB,IAAI,EAAE,IAAI,CAAC,SAAS;iBACrB,CAAC;aACH;SACF;QAED,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE;YACpB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC;SAC5B;aAAM;YACL,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;SACxB;QAED,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,KAAK,EAAE,CAAC;QAEb,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,GAAG,CAAC,GAAM;QACR,IAAI,IAAA,iBAAS,EAAC,GAAG,CAAC,EAAE;YAClB,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAClC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACpC,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;SACtC;aAAM;YACL,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAClC,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;SACtC;IACH,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,KAAa;QACjB,IAAA,kBAAU,EAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACrC,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;QACtB,OAAO,KAAK,EAAE,EAAE;YACd,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;SAClB;QACD,OAAe,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IAED;;;;;;;;;OASG;IACH,MAAM,CAAC,GAAM;QACX,IAAI,IAAI,CAAC;QAET,IAAI,IAAA,iBAAS,EAAC,GAAG,CAAC,EAAE;YAClB,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAClC,yBAAyB;YACzB,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAE9B,IAAI,CAAC,IAAI,EAAE;gBACT,OAAO,KAAK,CAAC,CAAC,2CAA2C;aAC1D;YAED,4BAA4B;YAC5B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SAC3B;aAAM;YACL,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC/B,0BAA0B;YAC1B,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAE5B,IAAI,CAAC,IAAI,EAAE;gBACT,OAAO,KAAK,CAAC,CAAC,2CAA2C;aAC1D;YAED,2BAA2B;YAC3B,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;SAC7B;QAED,sCAAsC;QACtC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;OAQG;IACH,QAAQ,CAAC,KAAa;QACpB,IAAA,kBAAU,EAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACrC,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;QACtB,OAAO,KAAK,EAAE,EAAE;YACd,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;SAClB;QACD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;;;;;;OAOG;IACH,OAAO;QACL,OAAO,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC;IAC1B,CAAC;IAED;;;;;OAKG;IACH,KAAK;QACH,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;IACvF,CAAC;IAED;;;;;;;;OAQG;IACH,OAAO,CAAC,QAA0E;QAChF,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;QACtB,OAAO,IAAI,KAAK,IAAI,CAAC,SAAS,EAAE;YAC9B,QAAQ,CAAS,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;YACxD,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;SAClB;IACH,CAAC;IAED,MAAM,CAAC,SAA2D;QAChE,MAAM,WAAW,GAAG,IAAI,OAAO,EAAQ,CAAC;QACxC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE;YAC/B,IAAI,SAAS,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,EAAE;gBACjC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;aAC7B;SACF;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,GAAG,CAAK,QAAqD;QAC3D,MAAM,SAAS,GAAG,IAAI,OAAO,EAAS,CAAC;QACvC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE;YAC/B,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;YAC9C,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;SAC9B;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,CAAI,QAAoE,EAAE,YAAe;QAC7F,IAAI,WAAW,GAAG,YAAY,CAAC;QAC/B,KAAK,MAAM,OAAO,IAAI,IAAI,EAAE;YAC1B,WAAW,GAAG,QAAQ,CAAC,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;SACpD;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;IAED;;;;;OAKG;IACH,CAAE,CAAC,MAAM,CAAC,QAAQ,CAAC;QACjB,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;QACtB,OAAO,IAAI,KAAK,IAAI,CAAC,SAAS,EAAE;YAC9B,MAAc,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACrC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;SAClB;IACH,CAAC;IAED;;;;;;;;;OASG;IACO,WAAW,CAAC,IAAyC;QAC7D,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAEjB,IAAI,IAAI,KAAK,IAAI,CAAC,KAAK,EAAE;YACvB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;SACnB;QAED,IAAI,IAAI,KAAK,IAAI,CAAC,KAAK,EAAE;YACvB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;SACnB;QAED,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;IAClB,CAAC;CACF;AA3WD,0BA2WC"}
|
|
@@ -15,9 +15,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./hash-table"), exports);
|
|
18
|
-
__exportStar(require("./coordinate-map"), exports);
|
|
19
|
-
__exportStar(require("./coordinate-set"), exports);
|
|
20
|
-
__exportStar(require("./tree-map"), exports);
|
|
21
|
-
__exportStar(require("./tree-set"), exports);
|
|
22
18
|
__exportStar(require("./hash-map"), exports);
|
|
23
19
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/data-structures/hash/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/data-structures/hash/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,6CAA2B"}
|
|
@@ -14,10 +14,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./coordinate-map"), exports);
|
|
18
|
-
__exportStar(require("./coordinate-set"), exports);
|
|
19
17
|
__exportStar(require("./hash-map"), exports);
|
|
20
18
|
__exportStar(require("./hash-table"), exports);
|
|
21
|
-
__exportStar(require("./tree-map"), exports);
|
|
22
|
-
__exportStar(require("./tree-set"), exports);
|
|
23
19
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/types/data-structures/hash/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/types/data-structures/hash/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,+CAA6B"}
|
|
@@ -20,5 +20,5 @@ export declare const trampolineAsync: (fn: TrlAsyncFn) => ((...args: [...Paramet
|
|
|
20
20
|
export declare const getMSB: (value: number) => number;
|
|
21
21
|
export declare const rangeCheck: (index: number, min: number, max: number, message?: string) => void;
|
|
22
22
|
export declare const throwRangeError: (message?: string) => void;
|
|
23
|
-
export declare const
|
|
23
|
+
export declare const isWeakKey: (input: unknown) => input is WeakKey;
|
|
24
24
|
export declare const calcMinUnitsRequired: (totalQuantity: number, unitSize: number) => number;
|
package/dist/cjs/utils/utils.js
CHANGED
|
@@ -9,7 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.calcMinUnitsRequired = exports.
|
|
12
|
+
exports.calcMinUnitsRequired = exports.isWeakKey = exports.throwRangeError = exports.rangeCheck = exports.getMSB = exports.trampolineAsync = exports.trampoline = exports.toThunk = exports.isThunk = exports.THUNK_SYMBOL = exports.arrayRemove = exports.uuidV4 = void 0;
|
|
13
13
|
const uuidV4 = function () {
|
|
14
14
|
return 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'.replace(/[x]/g, function (c) {
|
|
15
15
|
const r = (Math.random() * 16) | 0, v = c == 'x' ? r : (r & 0x3) | 0x8;
|
|
@@ -80,11 +80,11 @@ const throwRangeError = (message = 'The value is off-limits.') => {
|
|
|
80
80
|
throw new RangeError(message);
|
|
81
81
|
};
|
|
82
82
|
exports.throwRangeError = throwRangeError;
|
|
83
|
-
const
|
|
83
|
+
const isWeakKey = (input) => {
|
|
84
84
|
const inputType = typeof input;
|
|
85
85
|
return (inputType === 'object' && input !== null) || inputType === 'function';
|
|
86
86
|
};
|
|
87
|
-
exports.
|
|
87
|
+
exports.isWeakKey = isWeakKey;
|
|
88
88
|
const calcMinUnitsRequired = (totalQuantity, unitSize) => Math.floor((totalQuantity + unitSize - 1) / unitSize);
|
|
89
89
|
exports.calcMinUnitsRequired = calcMinUnitsRequired;
|
|
90
90
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/utils/utils.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/utils/utils.ts"],"names":[],"mappings":"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"}
|