@blackglory/structures 0.11.8 → 0.12.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.
Files changed (190) hide show
  1. package/README.md +7 -0
  2. package/lib/{es2015/array.d.ts → array.d.ts} +0 -0
  3. package/lib/{es2015/array.js → array.js} +0 -0
  4. package/lib/array.js.map +1 -0
  5. package/lib/{es2015/big-map.d.ts → big-map.d.ts} +0 -0
  6. package/lib/{es2015/big-map.js → big-map.js} +0 -0
  7. package/lib/big-map.js.map +1 -0
  8. package/lib/{es2015/big-set.d.ts → big-set.d.ts} +0 -0
  9. package/lib/{es2015/big-set.js → big-set.js} +0 -0
  10. package/lib/big-set.js.map +1 -0
  11. package/lib/{es2015/bit-set.d.ts → bit-set.d.ts} +0 -0
  12. package/lib/{es2015/bit-set.js → bit-set.js} +0 -0
  13. package/lib/bit-set.js.map +1 -0
  14. package/lib/{es2015/box.d.ts → box.d.ts} +0 -0
  15. package/lib/{es2015/box.js → box.js} +0 -0
  16. package/lib/box.js.map +1 -0
  17. package/lib/{es2015/cons.d.ts → cons.d.ts} +0 -0
  18. package/lib/{es2015/cons.js → cons.js} +0 -0
  19. package/lib/cons.js.map +1 -0
  20. package/lib/{es2015/dynamic-typed-array.d.ts → dynamic-typed-array.d.ts} +2 -0
  21. package/lib/{es2018/dynamic-typed-array.js → dynamic-typed-array.js} +6 -0
  22. package/lib/dynamic-typed-array.js.map +1 -0
  23. package/lib/{es2015/emitter.d.ts → emitter.d.ts} +0 -0
  24. package/lib/{es2015/emitter.js → emitter.js} +0 -0
  25. package/lib/emitter.js.map +1 -0
  26. package/lib/{es2015/expirable-map.d.ts → expirable-map.d.ts} +0 -0
  27. package/lib/{es2015/expirable-map.js → expirable-map.js} +0 -0
  28. package/lib/expirable-map.js.map +1 -0
  29. package/lib/{es2015/hash-map.d.ts → hash-map.d.ts} +0 -0
  30. package/lib/{es2015/hash-map.js → hash-map.js} +0 -0
  31. package/lib/hash-map.js.map +1 -0
  32. package/lib/{es2015/hash-set.d.ts → hash-set.d.ts} +0 -0
  33. package/lib/{es2015/hash-set.js → hash-set.js} +0 -0
  34. package/lib/hash-set.js.map +1 -0
  35. package/lib/{es2015/index.d.ts → index.d.ts} +0 -0
  36. package/lib/{es2015/index.js → index.js} +0 -0
  37. package/lib/index.js.map +1 -0
  38. package/lib/{es2015/lru-map.d.ts → lru-map.d.ts} +0 -0
  39. package/lib/{es2015/lru-map.js → lru-map.js} +0 -0
  40. package/lib/lru-map.js.map +1 -0
  41. package/lib/{es2015/queue.d.ts → queue.d.ts} +0 -0
  42. package/lib/{es2015/queue.js → queue.js} +0 -0
  43. package/lib/queue.js.map +1 -0
  44. package/lib/{es2015/radix-tree.d.ts → radix-tree.d.ts} +0 -0
  45. package/lib/{es2015/radix-tree.js → radix-tree.js} +0 -0
  46. package/lib/radix-tree.js.map +1 -0
  47. package/lib/{es2015/sorted-set.d.ts → sorted-set.d.ts} +0 -0
  48. package/lib/{es2015/sorted-set.js → sorted-set.js} +0 -0
  49. package/lib/sorted-set.js.map +1 -0
  50. package/lib/{es2018/sparse-map.d.ts → sparse-map.d.ts} +1 -0
  51. package/lib/{es2018/sparse-map.js → sparse-map.js} +5 -0
  52. package/lib/sparse-map.js.map +1 -0
  53. package/lib/{es2015/sparse-set.d.ts → sparse-set.d.ts} +2 -0
  54. package/lib/{es2015/sparse-set.js → sparse-set.js} +7 -0
  55. package/lib/{es2015/sparse-set.js.map → sparse-set.js.map} +1 -1
  56. package/lib/{es2015/string-radix-tree.d.ts → string-radix-tree.d.ts} +0 -0
  57. package/lib/{es2015/string-radix-tree.js → string-radix-tree.js} +0 -0
  58. package/lib/string-radix-tree.js.map +1 -0
  59. package/lib/{es2015/string-trie-map.d.ts → string-trie-map.d.ts} +0 -0
  60. package/lib/{es2015/string-trie-map.js → string-trie-map.js} +0 -0
  61. package/lib/string-trie-map.js.map +1 -0
  62. package/lib/{es2015/tlru-map.d.ts → tlru-map.d.ts} +0 -0
  63. package/lib/{es2015/tlru-map.js → tlru-map.js} +0 -0
  64. package/lib/tlru-map.js.map +1 -0
  65. package/lib/{es2015/trie-map.d.ts → trie-map.d.ts} +0 -0
  66. package/lib/{es2015/trie-map.js → trie-map.js} +0 -0
  67. package/lib/trie-map.js.map +1 -0
  68. package/lib/{es2015/typed-bit-set.d.ts → typed-bit-set.d.ts} +0 -0
  69. package/lib/{es2015/typed-bit-set.js → typed-bit-set.js} +0 -0
  70. package/lib/typed-bit-set.js.map +1 -0
  71. package/lib/{es2015/typed-sparse-map.d.ts → typed-sparse-map.d.ts} +1 -0
  72. package/lib/{es2015/typed-sparse-map.js → typed-sparse-map.js} +17 -9
  73. package/lib/typed-sparse-map.js.map +1 -0
  74. package/lib/{es2015/typed-sparse-set.d.ts → typed-sparse-set.d.ts} +2 -0
  75. package/lib/{es2018/typed-sparse-set.js → typed-sparse-set.js} +7 -0
  76. package/lib/typed-sparse-set.js.map +1 -0
  77. package/lib/{es2015/utils → utils}/skip-list.d.ts +0 -0
  78. package/lib/{es2015/utils → utils}/skip-list.js +0 -0
  79. package/lib/utils/skip-list.js.map +1 -0
  80. package/lib/{es2015/utils → utils}/trailing-zeros.d.ts +0 -0
  81. package/lib/{es2015/utils → utils}/trailing-zeros.js +0 -0
  82. package/lib/utils/trailing-zeros.js.map +1 -0
  83. package/package.json +13 -16
  84. package/lib/es2015/array.js.map +0 -1
  85. package/lib/es2015/big-map.js.map +0 -1
  86. package/lib/es2015/big-set.js.map +0 -1
  87. package/lib/es2015/bit-set.js.map +0 -1
  88. package/lib/es2015/box.js.map +0 -1
  89. package/lib/es2015/cons.js.map +0 -1
  90. package/lib/es2015/dynamic-typed-array.js +0 -138
  91. package/lib/es2015/dynamic-typed-array.js.map +0 -1
  92. package/lib/es2015/emitter.js.map +0 -1
  93. package/lib/es2015/expirable-map.js.map +0 -1
  94. package/lib/es2015/hash-map.js.map +0 -1
  95. package/lib/es2015/hash-set.js.map +0 -1
  96. package/lib/es2015/index.js.map +0 -1
  97. package/lib/es2015/lru-map.js.map +0 -1
  98. package/lib/es2015/queue.js.map +0 -1
  99. package/lib/es2015/radix-tree.js.map +0 -1
  100. package/lib/es2015/sorted-set.js.map +0 -1
  101. package/lib/es2015/sparse-map.d.ts +0 -16
  102. package/lib/es2015/sparse-map.js +0 -75
  103. package/lib/es2015/sparse-map.js.map +0 -1
  104. package/lib/es2015/string-radix-tree.js.map +0 -1
  105. package/lib/es2015/string-trie-map.js.map +0 -1
  106. package/lib/es2015/tlru-map.js.map +0 -1
  107. package/lib/es2015/trie-map.js.map +0 -1
  108. package/lib/es2015/typed-bit-set.js.map +0 -1
  109. package/lib/es2015/typed-sparse-map.js.map +0 -1
  110. package/lib/es2015/typed-sparse-set.js +0 -53
  111. package/lib/es2015/typed-sparse-set.js.map +0 -1
  112. package/lib/es2015/utils/skip-list.js.map +0 -1
  113. package/lib/es2015/utils/trailing-zeros.js.map +0 -1
  114. package/lib/es2018/array.d.ts +0 -4
  115. package/lib/es2018/array.js +0 -24
  116. package/lib/es2018/array.js.map +0 -1
  117. package/lib/es2018/big-map.d.ts +0 -14
  118. package/lib/es2018/big-map.js +0 -86
  119. package/lib/es2018/big-map.js.map +0 -1
  120. package/lib/es2018/big-set.d.ts +0 -11
  121. package/lib/es2018/big-set.js +0 -64
  122. package/lib/es2018/big-set.js.map +0 -1
  123. package/lib/es2018/bit-set.d.ts +0 -18
  124. package/lib/es2018/bit-set.js +0 -101
  125. package/lib/es2018/bit-set.js.map +0 -1
  126. package/lib/es2018/box.d.ts +0 -7
  127. package/lib/es2018/box.js +0 -19
  128. package/lib/es2018/box.js.map +0 -1
  129. package/lib/es2018/cons.d.ts +0 -4
  130. package/lib/es2018/cons.js +0 -18
  131. package/lib/es2018/cons.js.map +0 -1
  132. package/lib/es2018/dynamic-typed-array.d.ts +0 -26
  133. package/lib/es2018/dynamic-typed-array.js.map +0 -1
  134. package/lib/es2018/emitter.d.ts +0 -9
  135. package/lib/es2018/emitter.js +0 -51
  136. package/lib/es2018/emitter.js.map +0 -1
  137. package/lib/es2018/expirable-map.d.ts +0 -19
  138. package/lib/es2018/expirable-map.js +0 -99
  139. package/lib/es2018/expirable-map.js.map +0 -1
  140. package/lib/es2018/hash-map.d.ts +0 -12
  141. package/lib/es2018/hash-map.js +0 -33
  142. package/lib/es2018/hash-map.js.map +0 -1
  143. package/lib/es2018/hash-set.d.ts +0 -13
  144. package/lib/es2018/hash-set.js +0 -36
  145. package/lib/es2018/hash-set.js.map +0 -1
  146. package/lib/es2018/index.d.ts +0 -24
  147. package/lib/es2018/index.js +0 -45
  148. package/lib/es2018/index.js.map +0 -1
  149. package/lib/es2018/lru-map.d.ts +0 -14
  150. package/lib/es2018/lru-map.js +0 -56
  151. package/lib/es2018/lru-map.js.map +0 -1
  152. package/lib/es2018/queue.d.ts +0 -9
  153. package/lib/es2018/queue.js +0 -31
  154. package/lib/es2018/queue.js.map +0 -1
  155. package/lib/es2018/radix-tree.d.ts +0 -17
  156. package/lib/es2018/radix-tree.js +0 -221
  157. package/lib/es2018/radix-tree.js.map +0 -1
  158. package/lib/es2018/sorted-set.d.ts +0 -10
  159. package/lib/es2018/sorted-set.js +0 -30
  160. package/lib/es2018/sorted-set.js.map +0 -1
  161. package/lib/es2018/sparse-map.js.map +0 -1
  162. package/lib/es2018/sparse-set.d.ts +0 -11
  163. package/lib/es2018/sparse-set.js +0 -54
  164. package/lib/es2018/sparse-set.js.map +0 -1
  165. package/lib/es2018/string-radix-tree.d.ts +0 -17
  166. package/lib/es2018/string-radix-tree.js +0 -221
  167. package/lib/es2018/string-radix-tree.js.map +0 -1
  168. package/lib/es2018/string-trie-map.d.ts +0 -11
  169. package/lib/es2018/string-trie-map.js +0 -96
  170. package/lib/es2018/string-trie-map.js.map +0 -1
  171. package/lib/es2018/tlru-map.d.ts +0 -23
  172. package/lib/es2018/tlru-map.js +0 -124
  173. package/lib/es2018/tlru-map.js.map +0 -1
  174. package/lib/es2018/trie-map.d.ts +0 -11
  175. package/lib/es2018/trie-map.js +0 -96
  176. package/lib/es2018/trie-map.js.map +0 -1
  177. package/lib/es2018/typed-bit-set.d.ts +0 -20
  178. package/lib/es2018/typed-bit-set.js +0 -102
  179. package/lib/es2018/typed-bit-set.js.map +0 -1
  180. package/lib/es2018/typed-sparse-map.d.ts +0 -19
  181. package/lib/es2018/typed-sparse-map.js +0 -79
  182. package/lib/es2018/typed-sparse-map.js.map +0 -1
  183. package/lib/es2018/typed-sparse-set.d.ts +0 -13
  184. package/lib/es2018/typed-sparse-set.js.map +0 -1
  185. package/lib/es2018/utils/skip-list.d.ts +0 -24
  186. package/lib/es2018/utils/skip-list.js +0 -155
  187. package/lib/es2018/utils/skip-list.js.map +0 -1
  188. package/lib/es2018/utils/trailing-zeros.d.ts +0 -1
  189. package/lib/es2018/utils/trailing-zeros.js +0 -14
  190. package/lib/es2018/utils/trailing-zeros.js.map +0 -1
@@ -1,221 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getCommonPrefix = exports.findCommonPrefix = exports.matchPrefix = exports.StringRadixTree = void 0;
4
- const iterable_operator_1 = require("iterable-operator");
5
- const extra_utils_1 = require("extra-utils");
6
- class TreeNode {
7
- constructor(value) {
8
- this.value = value;
9
- this.children = new Map();
10
- }
11
- }
12
- class StringRadixTree {
13
- constructor() {
14
- this.root = new TreeNode();
15
- }
16
- get [Symbol.toStringTag]() {
17
- return this.constructor.name;
18
- }
19
- entries() {
20
- return dfs(this.root, '');
21
- function* dfs(node, path) {
22
- for (const [prefix, childNode] of node.children) {
23
- const newPath = path + prefix;
24
- if ((0, extra_utils_1.isntUndefined)(childNode.value)) {
25
- yield [newPath, childNode.value];
26
- }
27
- yield* dfs(childNode, newPath);
28
- }
29
- }
30
- }
31
- keys() {
32
- return (0, iterable_operator_1.map)(this.entries(), ([key]) => key);
33
- }
34
- values() {
35
- return (0, iterable_operator_1.map)(this.entries(), ([, value]) => value);
36
- }
37
- set(key, value) {
38
- set(key, value, this.root);
39
- return this;
40
- function set(key, value, node) {
41
- const commonPrefix = findCommonPrefix(node.children.keys(), key);
42
- if ((0, extra_utils_1.isntUndefined)(commonPrefix)) {
43
- const { prefix, commonPartLength } = commonPrefix;
44
- if (prefix.length === commonPartLength) {
45
- const prefixNode = node.children.get(prefix);
46
- if (key.length === prefix.length) {
47
- prefixNode.value = value;
48
- }
49
- else {
50
- const newKey = key.slice(prefix.length);
51
- set(newKey, value, prefixNode);
52
- }
53
- }
54
- else {
55
- const oldPrefixNode = node.children.get(prefix);
56
- const commonPrefix = prefix.slice(0, commonPartLength);
57
- const newPrefixNode = new TreeNode();
58
- node.children.set(commonPrefix, newPrefixNode);
59
- newPrefixNode.children.set(prefix.slice(commonPartLength), oldPrefixNode);
60
- newPrefixNode.children.set(key.slice(commonPartLength), new TreeNode(value));
61
- node.children.delete(prefix);
62
- }
63
- }
64
- else {
65
- node.children.set(key, new TreeNode(value));
66
- }
67
- }
68
- }
69
- has(key) {
70
- return has(key, this.root);
71
- function has(key, node) {
72
- const matchedPrefix = matchPrefix(node.children.keys(), key);
73
- if ((0, extra_utils_1.isntUndefined)(matchedPrefix)) {
74
- const restKey = key.slice(matchedPrefix.length);
75
- if (restKey.length === 0) {
76
- return true;
77
- }
78
- else {
79
- return has(restKey, node.children.get(matchedPrefix));
80
- }
81
- }
82
- else {
83
- return false;
84
- }
85
- }
86
- }
87
- get(key) {
88
- return get(key, this.root);
89
- function get(key, node) {
90
- const matchedPrefix = matchPrefix(node.children.keys(), key);
91
- if ((0, extra_utils_1.isntUndefined)(matchedPrefix)) {
92
- const restKey = key.slice(matchedPrefix.length);
93
- const nextNode = node.children.get(matchedPrefix);
94
- if (restKey.length === 0) {
95
- return nextNode.value;
96
- }
97
- else {
98
- return get(restKey, nextNode);
99
- }
100
- }
101
- else {
102
- return undefined;
103
- }
104
- }
105
- }
106
- delete(key) {
107
- return _delete(key, this.root);
108
- function _delete(key, node) {
109
- const matchedPrefix = matchPrefix(node.children.keys(), key);
110
- if ((0, extra_utils_1.isntUndefined)(matchedPrefix)) {
111
- if (key.length === matchedPrefix.length) {
112
- const targetNode = node.children.get(matchedPrefix);
113
- if (targetNode.children.size === 0) {
114
- node.children.delete(matchedPrefix);
115
- }
116
- else {
117
- delete node.value;
118
- if (targetNode.children.size === 1) {
119
- const [key, value] = (0, iterable_operator_1.first)(targetNode.children.entries());
120
- node.children.set(matchedPrefix + key, value);
121
- node.children.delete(matchedPrefix);
122
- }
123
- }
124
- return true;
125
- }
126
- else {
127
- const nextNode = node.children.get(matchedPrefix);
128
- const nextKey = key.slice(matchedPrefix.length);
129
- const deleted = _delete(nextKey, nextNode);
130
- if (deleted) {
131
- if (!('value' in nextNode)) {
132
- switch (nextNode.children.size) {
133
- case 0: {
134
- node.children.delete(matchedPrefix);
135
- break;
136
- }
137
- case 1: {
138
- const [key, value] = (0, iterable_operator_1.first)(nextNode.children.entries());
139
- node.children.set(matchedPrefix + key, value);
140
- node.children.delete(matchedPrefix);
141
- break;
142
- }
143
- default: {
144
- const entries = (0, iterable_operator_1.toArray)(nextNode.children.entries());
145
- const keys = entries.map(([key]) => key);
146
- const commonPrefix = getCommonPrefix(keys);
147
- if (commonPrefix) {
148
- const newPrefix = matchedPrefix + commonPrefix;
149
- const childNode = new TreeNode();
150
- for (const [key, value] of entries) {
151
- childNode.children.set(key.slice(commonPrefix.length), value);
152
- }
153
- node.children.set(newPrefix, childNode);
154
- node.children.delete(matchedPrefix);
155
- }
156
- }
157
- }
158
- }
159
- return true;
160
- }
161
- else {
162
- return false;
163
- }
164
- }
165
- }
166
- else {
167
- return false;
168
- }
169
- }
170
- }
171
- }
172
- exports.StringRadixTree = StringRadixTree;
173
- function matchPrefix(prefixes, path) {
174
- return (0, iterable_operator_1.find)(prefixes, prefix => path.startsWith(prefix));
175
- }
176
- exports.matchPrefix = matchPrefix;
177
- function findCommonPrefix(prefixes, path) {
178
- for (const prefix of prefixes) {
179
- let commonPartLength = 0;
180
- for (let i = 0; i < prefix.length; i++) {
181
- if (path[i] === prefix[i]) {
182
- commonPartLength++;
183
- }
184
- else {
185
- if (commonPartLength > 0) {
186
- return { prefix, commonPartLength };
187
- }
188
- }
189
- }
190
- if (commonPartLength > 0) {
191
- return { prefix, commonPartLength };
192
- }
193
- }
194
- }
195
- exports.findCommonPrefix = findCommonPrefix;
196
- function getCommonPrefix(paths) {
197
- if (paths.length > 0) {
198
- const commonPrefix = [];
199
- loop: for (let charIndex = 0, firstPathLength = paths[0].length; charIndex < firstPathLength; charIndex++) {
200
- const char = paths[0][charIndex];
201
- for (let pathIndex = 1; pathIndex < paths.length; pathIndex++) {
202
- const path = paths[pathIndex];
203
- if (charIndex < path.length) {
204
- if (path[charIndex] !== char) {
205
- break loop;
206
- }
207
- }
208
- else {
209
- break loop;
210
- }
211
- }
212
- commonPrefix.push(char);
213
- }
214
- return commonPrefix.join('');
215
- }
216
- else {
217
- return '';
218
- }
219
- }
220
- exports.getCommonPrefix = getCommonPrefix;
221
- //# sourceMappingURL=string-radix-tree.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"string-radix-tree.js","sourceRoot":"","sources":["../../src/string-radix-tree.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- export declare class StringTrieMap<T> {
2
- private root;
3
- get [Symbol.toStringTag](): string;
4
- entries(): IterableIterator<[key: string, value: T]>;
5
- keys(): IterableIterator<string>;
6
- values(): IterableIterator<T>;
7
- set(key: string, value: T): this;
8
- has(key: string): boolean;
9
- get(key: string): T | undefined;
10
- delete(key: string): boolean;
11
- }
@@ -1,96 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.StringTrieMap = void 0;
4
- const iterable_operator_1 = require("iterable-operator");
5
- const extra_utils_1 = require("extra-utils");
6
- class TrieNode {
7
- constructor(value) {
8
- this.value = value;
9
- this.children = new Map();
10
- }
11
- }
12
- class StringTrieMap {
13
- constructor() {
14
- this.root = new TrieNode();
15
- }
16
- get [Symbol.toStringTag]() {
17
- return this.constructor.name;
18
- }
19
- entries() {
20
- return dfs(this.root, '');
21
- function* dfs(node, path) {
22
- for (const [char, childNode] of node.children) {
23
- const newPath = path + char;
24
- if ((0, extra_utils_1.isntUndefined)(childNode.value)) {
25
- yield [newPath, childNode.value];
26
- }
27
- yield* dfs(childNode, newPath);
28
- }
29
- }
30
- }
31
- keys() {
32
- return (0, iterable_operator_1.map)(this.entries(), ([key]) => key);
33
- }
34
- values() {
35
- return (0, iterable_operator_1.map)(this.entries(), ([_, value]) => value);
36
- }
37
- set(key, value) {
38
- let node = this.root;
39
- for (const char of key) {
40
- if (!node.children.has(char)) {
41
- node.children.set(char, new TrieNode());
42
- }
43
- node = node.children.get(char);
44
- }
45
- node.value = value;
46
- return this;
47
- }
48
- has(key) {
49
- let node = this.root;
50
- for (const char of key) {
51
- if (node.children.has(char)) {
52
- node = node.children.get(char);
53
- }
54
- else {
55
- return false;
56
- }
57
- }
58
- return node.value !== undefined;
59
- }
60
- get(key) {
61
- let node = this.root;
62
- for (const char of key) {
63
- if (node.children.has(char)) {
64
- node = node.children.get(char);
65
- }
66
- else {
67
- return undefined;
68
- }
69
- }
70
- return node.value;
71
- }
72
- delete(key) {
73
- const parentNodes = [];
74
- let node = this.root;
75
- for (const char of key) {
76
- if (node.children.has(char)) {
77
- parentNodes.push(node);
78
- node = node.children.get(char);
79
- }
80
- else {
81
- return false;
82
- }
83
- }
84
- delete node.value;
85
- if (node.children.size === 0) {
86
- for (const [char, parentNode] of (0, iterable_operator_1.toArray)((0, iterable_operator_1.zip)(key, parentNodes)).reverse()) {
87
- parentNode.children.delete(char);
88
- if (parentNode.children.size !== 0)
89
- break;
90
- }
91
- }
92
- return true;
93
- }
94
- }
95
- exports.StringTrieMap = StringTrieMap;
96
- //# sourceMappingURL=string-trie-map.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"string-trie-map.js","sourceRoot":"","sources":["../../src/string-trie-map.ts"],"names":[],"mappings":";;;AAAA,yDAAqD;AACrD,6CAA2C;AAE3C,MAAM,QAAQ;IAGZ,YAAmB,KAAS;QAAT,UAAK,GAAL,KAAK,CAAI;QAF5B,aAAQ,GAAG,IAAI,GAAG,EAAuB,CAAA;IAEV,CAAC;CACjC;AAED,MAAa,aAAa;IAA1B;QACU,SAAI,GAAG,IAAI,QAAQ,EAAK,CAAA;IA2FlC,CAAC;IAzFC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QACtB,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA;IAC9B,CAAC;IAED,OAAO;QACL,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;QAEzB,QAAQ,CAAC,CAAC,GAAG,CAAC,IAAiB,EAAE,IAAY;YAC3C,KAAK,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE;gBAC7C,MAAM,OAAO,GAAG,IAAI,GAAG,IAAI,CAAA;gBAC3B,IAAI,IAAA,2BAAa,EAAC,SAAS,CAAC,KAAK,CAAC,EAAE;oBAClC,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;iBACjC;gBAED,KAAK,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;aAC/B;QACH,CAAC;IACH,CAAC;IAED,IAAI;QACF,OAAO,IAAA,uBAAG,EAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAA;IAC5C,CAAC;IAED,MAAM;QACJ,OAAO,IAAA,uBAAG,EAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAA;IACnD,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,KAAQ;QACvB,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;QACpB,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE;YACtB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBAC5B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,QAAQ,EAAK,CAAC,CAAA;aAC3C;YACD,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAE,CAAA;SAChC;QAED,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,GAAG,CAAC,GAAW;QACb,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;QACpB,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE;YACtB,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBAC3B,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAE,CAAA;aAChC;iBAAM;gBACL,OAAO,KAAK,CAAA;aACb;SACF;QAED,OAAO,IAAI,CAAC,KAAK,KAAK,SAAS,CAAA;IACjC,CAAC;IAED,GAAG,CAAC,GAAW;QACb,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;QACpB,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE;YACtB,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBAC3B,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAE,CAAA;aAChC;iBAAM;gBACL,OAAO,SAAS,CAAA;aACjB;SACF;QAED,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;IAED,MAAM,CAAC,GAAW;QAChB,MAAM,WAAW,GAAkB,EAAE,CAAA;QACrC,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;QACpB,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE;YACtB,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBAC3B,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBACtB,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAE,CAAA;aAChC;iBAAM;gBACL,OAAO,KAAK,CAAA;aACb;SACF;QAED,OAAO,IAAI,CAAC,KAAK,CAAA;QAGjB,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE;YAC5B,KAAK,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,IAAA,2BAAO,EAAC,IAAA,uBAAG,EAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE;gBACzE,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;gBAChC,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC;oBAAE,MAAK;aAC1C;SACF;QACD,OAAO,IAAI,CAAA;IACb,CAAC;CACF;AA5FD,sCA4FC"}
@@ -1,23 +0,0 @@
1
- export declare class TLRUMap<K, V> {
2
- private limit;
3
- private map;
4
- private cancelClearTimeout?;
5
- protected itemMetadataSortedByExpirationTime: Array<{
6
- key: K;
7
- expirationTime: number;
8
- }>;
9
- get [Symbol.toStringTag](): string;
10
- get size(): number;
11
- constructor(limit: number);
12
- set(key: K, value: V, timeToLive?: number): this;
13
- has(key: K): boolean;
14
- get(key: K): V | undefined;
15
- delete(key: K): boolean;
16
- clear(): void;
17
- private updateItem;
18
- private addItemMetadata;
19
- private removeItemMetadata;
20
- private clearExpiredItems;
21
- private rescheduleClearTimeout;
22
- private getColdestKey;
23
- }
@@ -1,124 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TLRUMap = void 0;
4
- const errors_1 = require("@blackglory/errors");
5
- const iterable_operator_1 = require("iterable-operator");
6
- const extra_timers_1 = require("extra-timers");
7
- class TLRUMap {
8
- get [Symbol.toStringTag]() {
9
- return this.constructor.name;
10
- }
11
- get size() {
12
- return this.map.size;
13
- }
14
- constructor(limit) {
15
- this.map = new Map();
16
- this.itemMetadataSortedByExpirationTime = [];
17
- (0, errors_1.assert)(Number.isInteger(limit), 'The parameter limit must be an integer');
18
- (0, errors_1.assert)(limit > 0, 'The parameter limit must be a positive value');
19
- this.limit = limit;
20
- }
21
- set(key, value, timeToLive = Infinity) {
22
- if (this.map.has(key)) {
23
- this.updateItem(key, value);
24
- this.removeItemMetadata(key);
25
- this.addItemMetadata(key, Date.now() + timeToLive);
26
- }
27
- else {
28
- if (this.map.size === this.limit) {
29
- this.map.delete(this.getColdestKey());
30
- }
31
- this.map.set(key, value);
32
- this.addItemMetadata(key, Date.now() + timeToLive);
33
- }
34
- return this;
35
- }
36
- has(key) {
37
- return this.map.has(key);
38
- }
39
- get(key) {
40
- if (this.has(key)) {
41
- const value = this.map.get(key);
42
- this.updateItem(key, value);
43
- return value;
44
- }
45
- else {
46
- return undefined;
47
- }
48
- }
49
- delete(key) {
50
- const result = this.map.delete(key);
51
- if (result) {
52
- const index = this.itemMetadataSortedByExpirationTime.findIndex(x => x.key === key);
53
- this.itemMetadataSortedByExpirationTime.splice(index, 1);
54
- if (index === 0) {
55
- this.rescheduleClearTimeout();
56
- }
57
- }
58
- return result;
59
- }
60
- clear() {
61
- var _a;
62
- this.map.clear();
63
- (_a = this.cancelClearTimeout) === null || _a === void 0 ? void 0 : _a.call(this);
64
- this.itemMetadataSortedByExpirationTime = [];
65
- }
66
- updateItem(key, value) {
67
- this.map.delete(key);
68
- this.map.set(key, value);
69
- }
70
- addItemMetadata(key, expirationTime) {
71
- for (let i = 0; i < this.itemMetadataSortedByExpirationTime.length; i++) {
72
- const item = this.itemMetadataSortedByExpirationTime[i];
73
- if (expirationTime < item.expirationTime) {
74
- this.itemMetadataSortedByExpirationTime.splice(i, 0, { key, expirationTime });
75
- if (i === 0) {
76
- this.rescheduleClearTimeout();
77
- }
78
- return;
79
- }
80
- }
81
- this.itemMetadataSortedByExpirationTime.push({ key, expirationTime });
82
- if (this.itemMetadataSortedByExpirationTime.length === 1) {
83
- this.rescheduleClearTimeout();
84
- }
85
- }
86
- removeItemMetadata(key) {
87
- const index = this.itemMetadataSortedByExpirationTime.findIndex(x => x.key === key);
88
- if (index >= 0) {
89
- this.itemMetadataSortedByExpirationTime.splice(index, 1);
90
- if (index === 0) {
91
- this.rescheduleClearTimeout();
92
- }
93
- }
94
- }
95
- clearExpiredItems(timestamp) {
96
- const indexOfFirstUnexpiredItem = this.itemMetadataSortedByExpirationTime.findIndex(x => x.expirationTime > timestamp);
97
- const expiredItemKeys = indexOfFirstUnexpiredItem >= 0
98
- ? this.itemMetadataSortedByExpirationTime.splice(0, indexOfFirstUnexpiredItem)
99
- : this.itemMetadataSortedByExpirationTime.splice(0, this.itemMetadataSortedByExpirationTime.length);
100
- expiredItemKeys.forEach(x => this.map.delete(x.key));
101
- }
102
- rescheduleClearTimeout() {
103
- var _a;
104
- (_a = this.cancelClearTimeout) === null || _a === void 0 ? void 0 : _a.call(this);
105
- if (this.itemMetadataSortedByExpirationTime.length > 0) {
106
- const item = this.itemMetadataSortedByExpirationTime[0];
107
- if (Number.isFinite(item.expirationTime)) {
108
- const cancel = (0, extra_timers_1.setSchedule)(item.expirationTime, () => {
109
- this.clearExpiredItems(Date.now());
110
- this.rescheduleClearTimeout();
111
- });
112
- this.cancelClearTimeout = () => {
113
- cancel();
114
- this.cancelClearTimeout = undefined;
115
- };
116
- }
117
- }
118
- }
119
- getColdestKey() {
120
- return (0, iterable_operator_1.first)(this.map.keys());
121
- }
122
- }
123
- exports.TLRUMap = TLRUMap;
124
- //# sourceMappingURL=tlru-map.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tlru-map.js","sourceRoot":"","sources":["../../src/tlru-map.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- export declare class TrieMap<K extends Iterable<T>, V, T = unknown> {
2
- private root;
3
- get [Symbol.toStringTag](): string;
4
- entries(): IterableIterator<[key: T[], value: V]>;
5
- keys(): IterableIterator<T[]>;
6
- values(): IterableIterator<V>;
7
- set(key: K, value: V): this;
8
- has(key: K): boolean;
9
- get(key: K): V | undefined;
10
- delete(key: K): boolean;
11
- }
@@ -1,96 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TrieMap = void 0;
4
- const iterable_operator_1 = require("iterable-operator");
5
- const extra_utils_1 = require("extra-utils");
6
- class TrieNode {
7
- constructor(value) {
8
- this.value = value;
9
- this.children = new Map();
10
- }
11
- }
12
- class TrieMap {
13
- constructor() {
14
- this.root = new TrieNode();
15
- }
16
- get [Symbol.toStringTag]() {
17
- return this.constructor.name;
18
- }
19
- *entries() {
20
- yield* dfs(this.root, []);
21
- function* dfs(node, path) {
22
- for (const [subPath, childNode] of node.children) {
23
- const newPath = [...path, subPath];
24
- if ((0, extra_utils_1.isntUndefined)(childNode.value)) {
25
- yield [newPath, childNode.value];
26
- }
27
- yield* dfs(childNode, newPath);
28
- }
29
- }
30
- }
31
- keys() {
32
- return (0, iterable_operator_1.map)(this.entries(), ([key]) => key);
33
- }
34
- values() {
35
- return (0, iterable_operator_1.map)(this.entries(), ([_, value]) => value);
36
- }
37
- set(key, value) {
38
- let node = this.root;
39
- for (const unitOfKey of key) {
40
- if (!node.children.has(unitOfKey)) {
41
- node.children.set(unitOfKey, new TrieNode());
42
- }
43
- node = node.children.get(unitOfKey);
44
- }
45
- node.value = value;
46
- return this;
47
- }
48
- has(key) {
49
- let node = this.root;
50
- for (const unitOfKey of key) {
51
- if (node.children.has(unitOfKey)) {
52
- node = node.children.get(unitOfKey);
53
- }
54
- else {
55
- return false;
56
- }
57
- }
58
- return node.value !== undefined;
59
- }
60
- get(key) {
61
- let node = this.root;
62
- for (const unitOfKey of key) {
63
- if (node.children.has(unitOfKey)) {
64
- node = node.children.get(unitOfKey);
65
- }
66
- else {
67
- return undefined;
68
- }
69
- }
70
- return node.value;
71
- }
72
- delete(key) {
73
- const parentNodes = [];
74
- let node = this.root;
75
- for (const unitOfKey of key) {
76
- if (node.children.has(unitOfKey)) {
77
- parentNodes.push(node);
78
- node = node.children.get(unitOfKey);
79
- }
80
- else {
81
- return false;
82
- }
83
- }
84
- delete node.value;
85
- if (node.children.size === 0) {
86
- for (const [unitOfKey, parentNode] of (0, iterable_operator_1.toArray)((0, iterable_operator_1.zip)(key, parentNodes)).reverse()) {
87
- parentNode.children.delete(unitOfKey);
88
- if (parentNode.children.size !== 0)
89
- break;
90
- }
91
- }
92
- return true;
93
- }
94
- }
95
- exports.TrieMap = TrieMap;
96
- //# sourceMappingURL=trie-map.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"trie-map.js","sourceRoot":"","sources":["../../src/trie-map.ts"],"names":[],"mappings":"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"}
@@ -1,20 +0,0 @@
1
- import { DynamicTypedArray } from './dynamic-typed-array';
2
- import { UnsignedTypedArrayConstructor } from 'justypes';
3
- export declare class TypedBitSet<T extends UnsignedTypedArrayConstructor> {
4
- private array;
5
- private bitsPerElement;
6
- private length;
7
- private _size;
8
- constructor(array: DynamicTypedArray<T>);
9
- get [Symbol.toStringTag](): string;
10
- get size(): number;
11
- [Symbol.iterator](): IterableIterator<number>;
12
- values(): IterableIterator<number>;
13
- _dumpBinaryStrings(): string[];
14
- has(value: number): boolean;
15
- add(value: number): boolean;
16
- delete(value: number): boolean;
17
- clear(): void;
18
- private getPosition;
19
- private getMask;
20
- }