data-structure-typed 2.5.0 → 2.5.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 (222) hide show
  1. package/.vitepress/cache/deps_temp_51f5f1b0/chunk-7OIKW5WK.js +12984 -0
  2. package/.vitepress/cache/deps_temp_51f5f1b0/package.json +3 -0
  3. package/.vitepress/cache/deps_temp_51f5f1b0/vitepress___@vue_devtools-api.js +4505 -0
  4. package/.vitepress/cache/deps_temp_51f5f1b0/vitepress___@vueuse_core.js +9731 -0
  5. package/.vitepress/cache/deps_temp_51f5f1b0/vue.js +347 -0
  6. package/CHANGELOG.md +3 -1
  7. package/README.md +63 -26
  8. package/dist/cjs/binary-tree.cjs +23698 -0
  9. package/dist/cjs/graph.cjs +5236 -0
  10. package/dist/cjs/hash.cjs +1262 -0
  11. package/dist/cjs/heap.cjs +1540 -0
  12. package/dist/cjs/index.cjs +28244 -14795
  13. package/dist/cjs/linked-list.cjs +4370 -0
  14. package/dist/cjs/matrix.cjs +1042 -0
  15. package/dist/cjs/priority-queue.cjs +1314 -0
  16. package/dist/cjs/queue.cjs +4090 -0
  17. package/dist/cjs/stack.cjs +861 -0
  18. package/dist/cjs/trie.cjs +1173 -0
  19. package/dist/cjs-legacy/binary-tree.cjs +23730 -0
  20. package/dist/cjs-legacy/graph.cjs +5234 -0
  21. package/dist/cjs-legacy/hash.cjs +1262 -0
  22. package/dist/cjs-legacy/heap.cjs +1537 -0
  23. package/dist/cjs-legacy/index.cjs +28239 -14790
  24. package/dist/cjs-legacy/linked-list.cjs +4376 -0
  25. package/dist/cjs-legacy/matrix.cjs +1045 -0
  26. package/dist/cjs-legacy/priority-queue.cjs +1312 -0
  27. package/dist/cjs-legacy/queue.cjs +4088 -0
  28. package/dist/cjs-legacy/stack.cjs +861 -0
  29. package/dist/cjs-legacy/trie.cjs +1172 -0
  30. package/dist/esm/binary-tree.mjs +23683 -0
  31. package/dist/esm/graph.mjs +5223 -0
  32. package/dist/esm/hash.mjs +1259 -0
  33. package/dist/esm/heap.mjs +1534 -0
  34. package/dist/esm/index.mjs +28242 -14796
  35. package/dist/esm/linked-list.mjs +4363 -0
  36. package/dist/esm/matrix.mjs +1038 -0
  37. package/dist/esm/priority-queue.mjs +1310 -0
  38. package/dist/esm/queue.mjs +4086 -0
  39. package/dist/esm/stack.mjs +859 -0
  40. package/dist/esm/trie.mjs +1170 -0
  41. package/dist/esm-legacy/binary-tree.mjs +23715 -0
  42. package/dist/esm-legacy/graph.mjs +5221 -0
  43. package/dist/esm-legacy/hash.mjs +1259 -0
  44. package/dist/esm-legacy/heap.mjs +1531 -0
  45. package/dist/esm-legacy/index.mjs +28237 -14791
  46. package/dist/esm-legacy/linked-list.mjs +4369 -0
  47. package/dist/esm-legacy/matrix.mjs +1041 -0
  48. package/dist/esm-legacy/priority-queue.mjs +1308 -0
  49. package/dist/esm-legacy/queue.mjs +4084 -0
  50. package/dist/esm-legacy/stack.mjs +859 -0
  51. package/dist/esm-legacy/trie.mjs +1169 -0
  52. package/dist/types/data-structures/base/index.d.ts +1 -0
  53. package/dist/types/data-structures/base/iterable-entry-base.d.ts +8 -8
  54. package/dist/types/data-structures/base/linear-base.d.ts +3 -3
  55. package/dist/types/data-structures/binary-tree/avl-tree.d.ts +240 -0
  56. package/dist/types/data-structures/binary-tree/binary-indexed-tree.d.ts +280 -0
  57. package/dist/types/data-structures/binary-tree/binary-tree.d.ts +502 -2
  58. package/dist/types/data-structures/binary-tree/bst.d.ts +481 -1
  59. package/dist/types/data-structures/binary-tree/red-black-tree.d.ts +380 -0
  60. package/dist/types/data-structures/binary-tree/segment-tree.d.ts +120 -1
  61. package/dist/types/data-structures/binary-tree/tree-map.d.ts +2764 -384
  62. package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +2753 -353
  63. package/dist/types/data-structures/binary-tree/tree-multi-set.d.ts +2241 -321
  64. package/dist/types/data-structures/binary-tree/tree-set.d.ts +2554 -274
  65. package/dist/types/data-structures/graph/abstract-graph.d.ts +4 -4
  66. package/dist/types/data-structures/graph/directed-graph.d.ts +200 -0
  67. package/dist/types/data-structures/graph/undirected-graph.d.ts +180 -0
  68. package/dist/types/data-structures/hash/hash-map.d.ts +230 -10
  69. package/dist/types/data-structures/heap/heap.d.ts +280 -0
  70. package/dist/types/data-structures/linked-list/doubly-linked-list.d.ts +343 -3
  71. package/dist/types/data-structures/linked-list/singly-linked-list.d.ts +303 -3
  72. package/dist/types/data-structures/linked-list/skip-linked-list.d.ts +362 -2
  73. package/dist/types/data-structures/matrix/matrix.d.ts +160 -0
  74. package/dist/types/data-structures/queue/deque.d.ts +304 -4
  75. package/dist/types/data-structures/queue/queue.d.ts +240 -0
  76. package/dist/types/data-structures/stack/stack.d.ts +200 -0
  77. package/dist/types/data-structures/trie/trie.d.ts +244 -4
  78. package/dist/types/interfaces/graph.d.ts +1 -1
  79. package/dist/types/types/common.d.ts +2 -2
  80. package/dist/types/types/data-structures/heap/heap.d.ts +1 -0
  81. package/dist/types/types/data-structures/priority-queue/priority-queue.d.ts +1 -0
  82. package/dist/types/types/utils/validate-type.d.ts +4 -4
  83. package/dist/umd/data-structure-typed.js +28022 -14573
  84. package/dist/umd/data-structure-typed.min.js +9 -3
  85. package/docs-site-docusaurus/README.md +41 -0
  86. package/docs-site-docusaurus/docs/api/README.md +52 -0
  87. package/docs-site-docusaurus/docs/api/classes/AVLTree.md +6130 -0
  88. package/docs-site-docusaurus/docs/api/classes/AVLTreeNode.md +282 -0
  89. package/docs-site-docusaurus/docs/api/classes/AbstractGraph.md +2266 -0
  90. package/docs-site-docusaurus/docs/api/classes/BST.md +5831 -0
  91. package/docs-site-docusaurus/docs/api/classes/BSTNode.md +333 -0
  92. package/docs-site-docusaurus/docs/api/classes/BinaryIndexedTree.md +455 -0
  93. package/docs-site-docusaurus/docs/api/classes/BinaryTree.md +4647 -0
  94. package/docs-site-docusaurus/docs/api/classes/BinaryTreeNode.md +331 -0
  95. package/docs-site-docusaurus/docs/api/classes/Deque.md +2767 -0
  96. package/docs-site-docusaurus/docs/api/classes/DirectedGraph.md +2999 -0
  97. package/docs-site-docusaurus/docs/api/classes/DoublyLinkedList.md +2685 -0
  98. package/docs-site-docusaurus/docs/api/classes/DoublyLinkedListNode.md +221 -0
  99. package/docs-site-docusaurus/docs/api/classes/FibonacciHeap.md +253 -0
  100. package/docs-site-docusaurus/docs/api/classes/FibonacciHeapNode.md +21 -0
  101. package/docs-site-docusaurus/docs/api/classes/HashMap.md +1333 -0
  102. package/docs-site-docusaurus/docs/api/classes/Heap.md +1881 -0
  103. package/docs-site-docusaurus/docs/api/classes/IterableElementBase.md +800 -0
  104. package/docs-site-docusaurus/docs/api/classes/IterableEntryBase.md +644 -0
  105. package/docs-site-docusaurus/docs/api/classes/LinearBase.md +1632 -0
  106. package/docs-site-docusaurus/docs/api/classes/LinearLinkedBase.md +1853 -0
  107. package/docs-site-docusaurus/docs/api/classes/LinkedHashMap.md +1108 -0
  108. package/docs-site-docusaurus/docs/api/classes/LinkedListNode.md +156 -0
  109. package/docs-site-docusaurus/docs/api/classes/LinkedListQueue.md +2824 -0
  110. package/docs-site-docusaurus/docs/api/classes/MapGraph.md +2929 -0
  111. package/docs-site-docusaurus/docs/api/classes/Matrix.md +1026 -0
  112. package/docs-site-docusaurus/docs/api/classes/MaxHeap.md +1866 -0
  113. package/docs-site-docusaurus/docs/api/classes/MaxPriorityQueue.md +1883 -0
  114. package/docs-site-docusaurus/docs/api/classes/MinHeap.md +1879 -0
  115. package/docs-site-docusaurus/docs/api/classes/MinPriorityQueue.md +1882 -0
  116. package/docs-site-docusaurus/docs/api/classes/Navigator.md +109 -0
  117. package/docs-site-docusaurus/docs/api/classes/PriorityQueue.md +1839 -0
  118. package/docs-site-docusaurus/docs/api/classes/Queue.md +2244 -0
  119. package/docs-site-docusaurus/docs/api/classes/RedBlackTree.md +6374 -0
  120. package/docs-site-docusaurus/docs/api/classes/SegmentTree.md +372 -0
  121. package/docs-site-docusaurus/docs/api/classes/SinglyLinkedList.md +2897 -0
  122. package/docs-site-docusaurus/docs/api/classes/SinglyLinkedListNode.md +169 -0
  123. package/docs-site-docusaurus/docs/api/classes/SkipList.md +1229 -0
  124. package/docs-site-docusaurus/docs/api/classes/Stack.md +1573 -0
  125. package/docs-site-docusaurus/docs/api/classes/TreeMap.md +1257 -0
  126. package/docs-site-docusaurus/docs/api/classes/TreeMultiMap.md +1475 -0
  127. package/docs-site-docusaurus/docs/api/classes/TreeSet.md +1117 -0
  128. package/docs-site-docusaurus/docs/api/classes/Trie.md +1708 -0
  129. package/docs-site-docusaurus/docs/api/classes/TrieNode.md +199 -0
  130. package/docs-site-docusaurus/docs/api/classes/UndirectedGraph.md +2979 -0
  131. package/docs-site-docusaurus/docs/guide/_category_.json +6 -0
  132. package/docs-site-docusaurus/docs/guide/architecture.md +613 -0
  133. package/docs-site-docusaurus/docs/guide/concepts.md +420 -0
  134. package/docs-site-docusaurus/docs/guide/guides.md +611 -0
  135. package/docs-site-docusaurus/docs/guide/installation.md +60 -0
  136. package/docs-site-docusaurus/docs/guide/integrations.md +823 -0
  137. package/docs-site-docusaurus/docs/guide/overview.md +638 -0
  138. package/docs-site-docusaurus/docs/guide/performance.md +833 -0
  139. package/docs-site-docusaurus/docs/guide/quick-start.md +73 -0
  140. package/docs-site-docusaurus/docusaurus.config.ts +159 -0
  141. package/docs-site-docusaurus/fix-mdx-generics.mjs +75 -0
  142. package/docs-site-docusaurus/package-lock.json +18667 -0
  143. package/docs-site-docusaurus/package.json +50 -0
  144. package/docs-site-docusaurus/prefix-class-to-methods.mjs +48 -0
  145. package/docs-site-docusaurus/sidebars.ts +23 -0
  146. package/docs-site-docusaurus/sort-protected.mjs +87 -0
  147. package/docs-site-docusaurus/src/css/custom.css +96 -0
  148. package/docs-site-docusaurus/src/pages/index.module.css +13 -0
  149. package/docs-site-docusaurus/src/pages/index.tsx +71 -0
  150. package/docs-site-docusaurus/src/pages/markdown-page.md +7 -0
  151. package/docs-site-docusaurus/src/theme/TOCItems/index.tsx +34 -0
  152. package/docs-site-docusaurus/static/.nojekyll +0 -0
  153. package/docs-site-docusaurus/static/img/docusaurus-social-card.jpg +0 -0
  154. package/docs-site-docusaurus/static/img/docusaurus.png +0 -0
  155. package/docs-site-docusaurus/static/img/favicon.ico +0 -0
  156. package/docs-site-docusaurus/static/img/favicon.png +0 -0
  157. package/docs-site-docusaurus/static/img/logo-180.png +0 -0
  158. package/docs-site-docusaurus/static/img/logo.jpg +0 -0
  159. package/docs-site-docusaurus/static/img/logo.png +0 -0
  160. package/docs-site-docusaurus/static/img/logo.svg +1 -0
  161. package/docs-site-docusaurus/static/img/og-image.png +0 -0
  162. package/docs-site-docusaurus/static/img/undraw_docusaurus_mountain.svg +171 -0
  163. package/docs-site-docusaurus/static/img/undraw_docusaurus_react.svg +170 -0
  164. package/docs-site-docusaurus/static/img/undraw_docusaurus_tree.svg +40 -0
  165. package/docs-site-docusaurus/static/robots.txt +4 -0
  166. package/docs-site-docusaurus/typedoc.json +23 -0
  167. package/package.json +106 -10
  168. package/src/data-structures/base/index.ts +1 -0
  169. package/src/data-structures/base/iterable-entry-base.ts +8 -8
  170. package/src/data-structures/base/linear-base.ts +3 -3
  171. package/src/data-structures/binary-tree/avl-tree.ts +240 -0
  172. package/src/data-structures/binary-tree/binary-indexed-tree.ts +281 -1
  173. package/src/data-structures/binary-tree/binary-tree.ts +502 -2
  174. package/src/data-structures/binary-tree/bst.ts +481 -1
  175. package/src/data-structures/binary-tree/red-black-tree.ts +380 -0
  176. package/src/data-structures/binary-tree/segment-tree.ts +121 -2
  177. package/src/data-structures/binary-tree/tree-map.ts +2862 -482
  178. package/src/data-structures/binary-tree/tree-multi-map.ts +2963 -563
  179. package/src/data-structures/binary-tree/tree-multi-set.ts +2399 -479
  180. package/src/data-structures/binary-tree/tree-set.ts +2685 -405
  181. package/src/data-structures/graph/abstract-graph.ts +4 -4
  182. package/src/data-structures/graph/directed-graph.ts +200 -0
  183. package/src/data-structures/graph/undirected-graph.ts +180 -0
  184. package/src/data-structures/hash/hash-map.ts +235 -15
  185. package/src/data-structures/heap/heap.ts +280 -0
  186. package/src/data-structures/linked-list/doubly-linked-list.ts +343 -3
  187. package/src/data-structures/linked-list/singly-linked-list.ts +303 -3
  188. package/src/data-structures/linked-list/skip-linked-list.ts +362 -2
  189. package/src/data-structures/matrix/matrix.ts +161 -1
  190. package/src/data-structures/queue/deque.ts +305 -5
  191. package/src/data-structures/queue/queue.ts +240 -0
  192. package/src/data-structures/stack/stack.ts +200 -0
  193. package/src/data-structures/trie/trie.ts +245 -5
  194. package/src/interfaces/graph.ts +1 -1
  195. package/src/types/common.ts +2 -2
  196. package/src/types/data-structures/heap/heap.ts +1 -0
  197. package/src/types/data-structures/priority-queue/priority-queue.ts +1 -0
  198. package/src/types/utils/validate-type.ts +4 -4
  199. package/vercel.json +6 -0
  200. package/dist/leetcode/avl-tree-counter.mjs +0 -2957
  201. package/dist/leetcode/avl-tree-multi-map.mjs +0 -2889
  202. package/dist/leetcode/avl-tree.mjs +0 -2720
  203. package/dist/leetcode/binary-tree.mjs +0 -1594
  204. package/dist/leetcode/bst.mjs +0 -2398
  205. package/dist/leetcode/deque.mjs +0 -683
  206. package/dist/leetcode/directed-graph.mjs +0 -1733
  207. package/dist/leetcode/doubly-linked-list.mjs +0 -709
  208. package/dist/leetcode/hash-map.mjs +0 -493
  209. package/dist/leetcode/heap.mjs +0 -542
  210. package/dist/leetcode/max-heap.mjs +0 -375
  211. package/dist/leetcode/max-priority-queue.mjs +0 -383
  212. package/dist/leetcode/min-heap.mjs +0 -363
  213. package/dist/leetcode/min-priority-queue.mjs +0 -371
  214. package/dist/leetcode/priority-queue.mjs +0 -363
  215. package/dist/leetcode/queue.mjs +0 -943
  216. package/dist/leetcode/red-black-tree.mjs +0 -2765
  217. package/dist/leetcode/singly-linked-list.mjs +0 -754
  218. package/dist/leetcode/stack.mjs +0 -217
  219. package/dist/leetcode/tree-counter.mjs +0 -3039
  220. package/dist/leetcode/tree-multi-map.mjs +0 -2913
  221. package/dist/leetcode/trie.mjs +0 -413
  222. package/dist/leetcode/undirected-graph.mjs +0 -1650
@@ -93,14 +93,6 @@ export declare class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[
93
93
 
94
94
 
95
95
 
96
- * @example
97
- * // Check empty
98
- * console.log(new TreeMap().isEmpty()); // true;
99
- */
100
- isEmpty(): boolean;
101
- /**
102
- * Set or overwrite a value for a key.
103
- * @remarks Expected time O(log n)
104
96
 
105
97
 
106
98
 
@@ -148,31 +140,10 @@ export declare class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[
148
140
 
149
141
 
150
142
 
151
- * @example
152
- * // Sorted dictionary for a contact book
153
- * const contacts = new TreeMap<string, string>([
154
- * ['Bob', '555-0102'],
155
- * ['Alice', '555-0101'],
156
- * ['Charlie', '555-0103']
157
- * ]);
158
- *
159
- * // Contacts are automatically sorted by name
160
- * console.log([...contacts.keys()]); // ['Alice', 'Bob', 'Charlie'];
161
- * console.log(contacts.get('Bob')); // '555-0102';
162
- *
163
- * // Find the first contact alphabetically after 'B'
164
- * console.log(contacts.ceiling('B')); // ['Bob', '555-0102'];
165
- *
166
- * // Find contacts in range
167
- * console.log(contacts.rangeSearch(['Alice', 'Bob'])); // [
168
- * // ['Alice', '555-0101'],
169
- * // ['Bob', '555-0102']
170
- * // ];
171
- */
172
- set(key: K, value: V | undefined): this;
173
- /**
174
- * Get the value under a key.
175
- * @remarks Expected time O(log n)
143
+
144
+
145
+
146
+
176
147
 
177
148
 
178
149
 
@@ -223,20 +194,12 @@ export declare class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[
223
194
 
224
195
 
225
196
  * @example
226
- * // Configuration registry with typed lookups
227
- * const config = new TreeMap<string, number>([
228
- * ['maxRetries', 3],
229
- * ['timeout', 5000],
230
- * ['poolSize', 10]
231
- * ]);
232
- *
233
- * console.log(config.get('timeout')); // 5000;
234
- * console.log(config.get('missing')); // undefined;
235
- * console.log(config.size); // 3;
197
+ * // Check empty
198
+ * console.log(new TreeMap().isEmpty()); // true;
236
199
  */
237
- get(key: K): V | undefined;
200
+ isEmpty(): boolean;
238
201
  /**
239
- * Test whether a key exists.
202
+ * Set or overwrite a value for a key.
240
203
  * @remarks Expected time O(log n)
241
204
 
242
205
 
@@ -287,22 +250,6 @@ export declare class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[
287
250
 
288
251
 
289
252
 
290
- * @example
291
- * // Feature flag checking
292
- * const flags = new TreeMap<string, boolean>([
293
- * ['darkMode', true],
294
- * ['betaFeature', false],
295
- * ['notifications', true]
296
- * ]);
297
- *
298
- * console.log(flags.has('darkMode')); // true;
299
- * console.log(flags.has('unknownFlag')); // false;
300
- */
301
- has(key: K): boolean;
302
- /**
303
- * Delete a key.
304
- * @returns `true` if the key existed; otherwise `false`.
305
- * @remarks Expected time O(log n)
306
253
 
307
254
 
308
255
 
@@ -352,22 +299,6 @@ export declare class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[
352
299
 
353
300
 
354
301
 
355
- * @example
356
- * // Session management with expiry
357
- * const sessions = new TreeMap<string, number>([
358
- * ['sess_abc', Date.now()],
359
- * ['sess_def', Date.now()],
360
- * ['sess_ghi', Date.now()]
361
- * ]);
362
- *
363
- * console.log(sessions.size); // 3;
364
- * sessions.delete('sess_def');
365
- * console.log(sessions.has('sess_def')); // false;
366
- * console.log(sessions.size); // 2;
367
- */
368
- delete(key: K): boolean;
369
- /**
370
- * Remove all entries.
371
302
 
372
303
 
373
304
 
@@ -406,15 +337,6 @@ export declare class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[
406
337
 
407
338
 
408
339
 
409
- * @example
410
- * // Remove all
411
- * const tm = new TreeMap<number, string>([[1, 'a']]);
412
- * tm.clear();
413
- * console.log(tm.isEmpty()); // true;
414
- */
415
- clear(): void;
416
- /**
417
- * Iterate over keys in ascending order.
418
340
 
419
341
 
420
342
 
@@ -426,6 +348,39 @@ export declare class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[
426
348
 
427
349
 
428
350
 
351
+ * @example
352
+ * // Sorted dictionary for a contact book
353
+ * const contacts = new TreeMap<string, string>([
354
+ * ['Bob', '555-0102'],
355
+ * ['Alice', '555-0101'],
356
+ * ['Charlie', '555-0103']
357
+ * ]);
358
+ *
359
+ * // Contacts are automatically sorted by name
360
+ * console.log([...contacts.keys()]); // ['Alice', 'Bob', 'Charlie'];
361
+ * console.log(contacts.get('Bob')); // '555-0102';
362
+ *
363
+ * // Find the first contact alphabetically after 'B'
364
+ * console.log(contacts.ceiling('B')); // ['Bob', '555-0102'];
365
+ *
366
+ * // Find contacts in range
367
+ * console.log(contacts.rangeSearch(['Alice', 'Bob'])); // [
368
+ * // ['Alice', '555-0101'],
369
+ * // ['Bob', '555-0102']
370
+ * // ];
371
+ */
372
+ set(key: K, value: V | undefined): this;
373
+ /**
374
+ * Get the value under a key.
375
+ * @remarks Expected time O(log n)
376
+
377
+
378
+
379
+
380
+
381
+
382
+
383
+
429
384
 
430
385
 
431
386
 
@@ -453,17 +408,6 @@ export declare class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[
453
408
 
454
409
 
455
410
 
456
- * @example
457
- * // Get sorted keys
458
- * const tm = new TreeMap<number, string>([[3, 'c'], [1, 'a']]);
459
- * console.log([...tm.keys()]); // [1, 3];
460
- */
461
- keys(): IterableIterator<K>;
462
- private _entryFromKey;
463
- /**
464
- * Iterate over values in ascending key order.
465
- *
466
- * Note: values may be `undefined` (TreeMap allows storing `undefined`, like native `Map`).
467
411
 
468
412
 
469
413
 
@@ -502,16 +446,6 @@ export declare class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[
502
446
 
503
447
 
504
448
 
505
- * @example
506
- * // Get values in key order
507
- * const tm = new TreeMap<number, string>([[2, 'b'], [1, 'a']]);
508
- * console.log([...tm.values()]); // ['a', 'b'];
509
- */
510
- values(): IterableIterator<V | undefined>;
511
- /**
512
- * Iterate over `[key, value]` entries in ascending key order.
513
- *
514
- * Note: values may be `undefined`.
515
449
 
516
450
 
517
451
 
@@ -550,17 +484,6 @@ export declare class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[
550
484
 
551
485
 
552
486
 
553
- * @example
554
- * // Iterate key-value pairs
555
- * const tm = new TreeMap<number, string>([[3, 'c'], [1, 'a'], [2, 'b']]);
556
- * console.log([...tm.entries()]); // [[1, 'a'], [2, 'b'], [3, 'c']];
557
- */
558
- entries(): IterableIterator<[K, V | undefined]>;
559
- [Symbol.iterator](): IterableIterator<[K, V | undefined]>;
560
- /**
561
- * Visit each entry in ascending key order.
562
- *
563
- * Note: callback value may be `undefined`.
564
487
 
565
488
 
566
489
 
@@ -600,19 +523,21 @@ export declare class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[
600
523
 
601
524
 
602
525
  * @example
603
- * // Execute for each entry
604
- * const tm = new TreeMap<number, string>([[1, 'a'], [2, 'b']]);
605
- * const pairs: string[] = [];
606
- * tm.forEach((v, k) => pairs.push(`${k}:${v}`));
607
- * console.log(pairs); // ['1:a', '2:b'];
526
+ * // Configuration registry with typed lookups
527
+ * const config = new TreeMap<string, number>([
528
+ * ['maxRetries', 3],
529
+ * ['timeout', 5000],
530
+ * ['poolSize', 10]
531
+ * ]);
532
+ *
533
+ * console.log(config.get('timeout')); // 5000;
534
+ * console.log(config.get('missing')); // undefined;
535
+ * console.log(config.size); // 3;
608
536
  */
609
- forEach(cb: (value: V | undefined, key: K, map: TreeMap<K, V>) => void, thisArg?: any): void;
537
+ get(key: K): V | undefined;
610
538
  /**
611
- * Create a new TreeMap by mapping each entry to a new `[key, value]` entry.
612
- *
613
- * This mirrors `RedBlackTree.map`: mapping produces a new ordered container.
614
- * @remarks Time O(n log n) expected, Space O(n)
615
-
539
+ * Test whether a key exists.
540
+ * @remarks Expected time O(log n)
616
541
 
617
542
 
618
543
 
@@ -650,18 +575,6 @@ export declare class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[
650
575
 
651
576
 
652
577
 
653
- * @example
654
- * // Transform entries
655
- * const tm = new TreeMap<number, number>([[1, 10], [2, 20]]);
656
- * const doubled = tm.map((v, k) => [k, (v ?? 0) * 2] as [number, number]);
657
- * console.log([...doubled.values()]); // [20, 40];
658
- */
659
- map<MK, MV>(callbackfn: TreeMapEntryCallback<K, V, [MK, MV], TreeMap<K, V>>, options?: Omit<TreeMapOptions<MK, MV>, 'toEntryFn'> & {
660
- comparator?: (a: MK, b: MK) => number;
661
- }, thisArg?: unknown): TreeMap<MK, MV>;
662
- /**
663
- * Create a new TreeMap containing only entries that satisfy the predicate.
664
- * @remarks Time O(n log n) expected, Space O(n)
665
578
 
666
579
 
667
580
 
@@ -700,16 +613,6 @@ export declare class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[
700
613
 
701
614
 
702
615
 
703
- * @example
704
- * // Filter entries
705
- * const tm = new TreeMap<number, string>([[1, 'a'], [2, 'b'], [3, 'c']]);
706
- * const filtered = tm.filter((v, k) => k > 1);
707
- * console.log([...filtered.keys()]); // [2, 3];
708
- */
709
- filter(callbackfn: TreeMapEntryCallback<K, V, boolean, TreeMap<K, V>>, thisArg?: unknown): TreeMap<K, V>;
710
- /**
711
- * Reduce entries into a single accumulator.
712
- * @remarks Time O(n), Space O(1)
713
616
 
714
617
 
715
618
 
@@ -748,15 +651,6 @@ export declare class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[
748
651
 
749
652
 
750
653
 
751
- * @example
752
- * // Aggregate values
753
- * const tm = new TreeMap<number, number>([[1, 10], [2, 20]]);
754
- * console.log(tm.reduce((acc, v) => acc + (v ?? 0), 0)); // 30;
755
- */
756
- reduce<A>(callbackfn: TreeMapReduceCallback<K, V, A, TreeMap<K, V>>, initialValue: A): A;
757
- /**
758
- * Test whether all entries satisfy a predicate.
759
- * @remarks Time O(n), Space O(1)
760
654
 
761
655
 
762
656
 
@@ -794,14 +688,22 @@ export declare class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[
794
688
 
795
689
 
796
690
  * @example
797
- * // Test all entries
798
- * const tm = new TreeMap<number, string>([[1, 'a'], [2, 'b']]);
799
- * console.log(tm.every((v, k) => k > 0)); // true;
691
+ * // Feature flag checking
692
+ * const flags = new TreeMap<string, boolean>([
693
+ * ['darkMode', true],
694
+ * ['betaFeature', false],
695
+ * ['notifications', true]
696
+ * ]);
697
+ *
698
+ * console.log(flags.has('darkMode')); // true;
699
+ * console.log(flags.has('unknownFlag')); // false;
800
700
  */
801
- every(callbackfn: TreeMapEntryCallback<K, V, boolean, TreeMap<K, V>>, thisArg?: unknown): boolean;
701
+ has(key: K): boolean;
802
702
  /**
803
- * Test whether any entry satisfies a predicate.
804
- * @remarks Time O(n), Space O(1)
703
+ * Delete a key.
704
+ * @returns `true` if the key existed; otherwise `false`.
705
+ * @remarks Expected time O(log n)
706
+
805
707
 
806
708
 
807
709
 
@@ -838,16 +740,6 @@ export declare class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[
838
740
 
839
741
 
840
742
 
841
- * @example
842
- * // Test any entry
843
- * const tm = new TreeMap<number, string>([[1, 'a'], [2, 'b']]);
844
- * console.log(tm.some((v, k) => k === 2)); // true;
845
- */
846
- some(callbackfn: TreeMapEntryCallback<K, V, boolean, TreeMap<K, V>>, thisArg?: unknown): boolean;
847
- /**
848
- * Find the first entry that satisfies a predicate.
849
- * @returns The first matching `[key, value]` tuple, or `undefined`.
850
- * @remarks Time O(n), Space O(1)
851
743
 
852
744
 
853
745
 
@@ -884,15 +776,6 @@ export declare class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[
884
776
 
885
777
 
886
778
 
887
- * @example
888
- * // Find matching entry
889
- * const tm = new TreeMap<number, string>([[1, 'a'], [2, 'b']]);
890
- * console.log(tm.find(v => v === 'b')?.[0]); // 2;
891
- */
892
- find(callbackfn: TreeMapEntryCallback<K, V, boolean, TreeMap<K, V>>, thisArg?: unknown): [K, V | undefined] | undefined;
893
- /**
894
- * Materialize the map into an array of `[key, value]` tuples.
895
- * @remarks Time O(n), Space O(n)
896
779
 
897
780
 
898
781
 
@@ -931,15 +814,6 @@ export declare class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[
931
814
 
932
815
 
933
816
 
934
- * @example
935
- * // Convert to array
936
- * const tm = new TreeMap<number, string>([[2, 'b'], [1, 'a']]);
937
- * console.log(tm.toArray()); // [[1, 'a'], [2, 'b']];
938
- */
939
- toArray(): Array<[K, V | undefined]>;
940
- /**
941
- * Print a human-friendly representation.
942
- * @remarks Time O(n), Space O(n)
943
817
 
944
818
 
945
819
 
@@ -979,13 +853,39 @@ export declare class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[
979
853
 
980
854
 
981
855
  * @example
982
- * // Display tree
983
- * const tm = new TreeMap<number, string>([[1, 'a']]);
984
- * expect(() => tm.print()).not.toThrow();
856
+ * // Session management with expiry
857
+ * const sessions = new TreeMap<string, number>([
858
+ * ['sess_abc', Date.now()],
859
+ * ['sess_def', Date.now()],
860
+ * ['sess_ghi', Date.now()]
861
+ * ]);
862
+ *
863
+ * console.log(sessions.size); // 3;
864
+ * sessions.delete('sess_def');
865
+ * console.log(sessions.has('sess_def')); // false;
866
+ * console.log(sessions.size); // 2;
985
867
  */
986
- print(): void;
868
+ delete(key: K): boolean;
987
869
  /**
988
- * Smallest entry by key.
870
+ * Remove all entries.
871
+
872
+
873
+
874
+
875
+
876
+
877
+
878
+
879
+
880
+
881
+
882
+
883
+
884
+
885
+
886
+
887
+
888
+
989
889
 
990
890
 
991
891
 
@@ -997,36 +897,6 @@ export declare class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[
997
897
 
998
898
 
999
899
 
1000
- * @example
1001
- * // Leaderboard with ranked scores
1002
- * // Use score as key (descending), player name as value
1003
- * const leaderboard = new TreeMap<number, string>([], {
1004
- * comparator: (a, b) => b - a // descending
1005
- * });
1006
- *
1007
- * leaderboard.set(1500, 'Alice');
1008
- * leaderboard.set(2200, 'Bob');
1009
- * leaderboard.set(1800, 'Charlie');
1010
- * leaderboard.set(2500, 'Diana');
1011
- *
1012
- * // Top 3 players (first 3 in descending order)
1013
- * const top3 = [...leaderboard.entries()].slice(0, 3);
1014
- * console.log(top3); // [
1015
- * // [2500, 'Diana'],
1016
- * // [2200, 'Bob'],
1017
- * // [1800, 'Charlie']
1018
- * // ];
1019
- *
1020
- * // Highest scorer
1021
- * console.log(leaderboard.first()); // [2500, 'Diana'];
1022
- *
1023
- * // Remove lowest scorer
1024
- * console.log(leaderboard.pollLast()); // [1500, 'Alice'];
1025
- * console.log(leaderboard.size); // 3;
1026
- */
1027
- first(): [K, V | undefined] | undefined;
1028
- /**
1029
- * Largest entry by key.
1030
900
 
1031
901
 
1032
902
 
@@ -1038,20 +908,6 @@ export declare class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[
1038
908
 
1039
909
 
1040
910
 
1041
- * @example
1042
- * // Access the maximum entry
1043
- * const scores = new TreeMap<number, string>([
1044
- * [85, 'Bob'],
1045
- * [92, 'Alice'],
1046
- * [78, 'Charlie']
1047
- * ]);
1048
- *
1049
- * console.log(scores.last()); // [92, 'Alice'];
1050
- * console.log(scores.first()); // [78, 'Charlie'];
1051
- */
1052
- last(): [K, V | undefined] | undefined;
1053
- /**
1054
- * Remove and return the smallest entry.
1055
911
 
1056
912
 
1057
913
 
@@ -1063,22 +919,6 @@ export declare class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[
1063
919
 
1064
920
 
1065
921
 
1066
- * @example
1067
- * // Process items from lowest priority
1068
- * const tasks = new TreeMap<number, string>([
1069
- * [3, 'Low'],
1070
- * [1, 'Critical'],
1071
- * [2, 'Medium']
1072
- * ]);
1073
- *
1074
- * // Process lowest priority first
1075
- * console.log(tasks.pollFirst()); // [1, 'Critical'];
1076
- * console.log(tasks.pollFirst()); // [2, 'Medium'];
1077
- * console.log(tasks.size); // 1;
1078
- */
1079
- pollFirst(): [K, V | undefined] | undefined;
1080
- /**
1081
- * Remove and return the largest entry.
1082
922
 
1083
923
 
1084
924
 
@@ -1090,22 +930,6 @@ export declare class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[
1090
930
 
1091
931
 
1092
932
 
1093
- * @example
1094
- * // Remove the maximum entry
1095
- * const bids = new TreeMap<number, string>([
1096
- * [100, 'Alice'],
1097
- * [150, 'Bob'],
1098
- * [120, 'Charlie']
1099
- * ]);
1100
- *
1101
- * // Remove highest bid
1102
- * console.log(bids.pollLast()); // [150, 'Bob'];
1103
- * console.log(bids.size); // 2;
1104
- * console.log(bids.last()); // [120, 'Charlie'];
1105
- */
1106
- pollLast(): [K, V | undefined] | undefined;
1107
- /**
1108
- * Smallest entry whose key is >= the given key.
1109
933
 
1110
934
 
1111
935
 
@@ -1144,41 +968,6 @@ export declare class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[
1144
968
 
1145
969
 
1146
970
 
1147
- * @example
1148
- * // Event scheduler with time-based lookup
1149
- * const events = new TreeMap<Date, string>();
1150
- *
1151
- * const meeting = new Date('2024-01-15T10:00:00Z');
1152
- * const lunch = new Date('2024-01-15T12:00:00Z');
1153
- * const review = new Date('2024-01-15T15:00:00Z');
1154
- * const standup = new Date('2024-01-15T09:00:00Z');
1155
- *
1156
- * events.set(meeting, 'Team Meeting');
1157
- * events.set(lunch, 'Lunch Break');
1158
- * events.set(review, 'Code Review');
1159
- * events.set(standup, 'Daily Standup');
1160
- *
1161
- * // Events are sorted chronologically
1162
- * console.log([...events.values()]); // [
1163
- * // 'Daily Standup',
1164
- * // 'Team Meeting',
1165
- * // 'Lunch Break',
1166
- * // 'Code Review'
1167
- * // ];
1168
- *
1169
- * // Next event after 11:00
1170
- * const after11 = new Date('2024-01-15T11:00:00Z');
1171
- * console.log(events.ceiling(after11)?.[1]); // 'Lunch Break';
1172
- *
1173
- * // Events between 9:30 and 13:00
1174
- * const from = new Date('2024-01-15T09:30:00Z');
1175
- * const to = new Date('2024-01-15T13:00:00Z');
1176
- * const window = events.rangeSearch([from, to]);
1177
- * console.log(window.map(([, v]) => v)); // ['Team Meeting', 'Lunch Break'];
1178
- */
1179
- ceiling(key: K): [K, V | undefined] | undefined;
1180
- /**
1181
- * Largest entry whose key is <= the given key.
1182
971
 
1183
972
 
1184
973
 
@@ -1218,24 +1007,38 @@ export declare class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[
1218
1007
 
1219
1008
 
1220
1009
  * @example
1221
- * // Find the largest key ≤ target
1222
- * const versions = new TreeMap<number, string>([
1223
- * [1, 'v1.0'],
1224
- * [3, 'v3.0'],
1225
- * [5, 'v5.0'],
1226
- * [7, 'v7.0']
1227
- * ]);
1228
- *
1229
- * // Largest version ≤ 4
1230
- * console.log(versions.floor(4)); // [3, 'v3.0'];
1231
- * // Largest version ≤ 5 (exact match)
1232
- * console.log(versions.floor(5)); // [5, 'v5.0'];
1233
- * // No version ≤ 0
1234
- * console.log(versions.floor(0)); // undefined;
1010
+ * // Remove all
1011
+ * const tm = new TreeMap<number, string>([[1, 'a']]);
1012
+ * tm.clear();
1013
+ * console.log(tm.isEmpty()); // true;
1235
1014
  */
1236
- floor(key: K): [K, V | undefined] | undefined;
1015
+ clear(): void;
1237
1016
  /**
1238
- * Smallest entry whose key is > the given key.
1017
+ * Iterate over keys in ascending order.
1018
+
1019
+
1020
+
1021
+
1022
+
1023
+
1024
+
1025
+
1026
+
1027
+
1028
+
1029
+
1030
+
1031
+
1032
+
1033
+
1034
+
1035
+
1036
+
1037
+
1038
+
1039
+
1040
+
1041
+
1239
1042
 
1240
1043
 
1241
1044
 
@@ -1274,25 +1077,6 @@ export declare class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[
1274
1077
 
1275
1078
 
1276
1079
 
1277
- * @example
1278
- * // Find the smallest key strictly > target
1279
- * const prices = new TreeMap<number, string>([
1280
- * [10, 'Basic'],
1281
- * [25, 'Standard'],
1282
- * [50, 'Premium'],
1283
- * [100, 'Enterprise']
1284
- * ]);
1285
- *
1286
- * // Next tier above $25
1287
- * console.log(prices.higher(25)); // [50, 'Premium'];
1288
- * // Next tier above $99
1289
- * console.log(prices.higher(99)); // [100, 'Enterprise'];
1290
- * // Nothing above $100
1291
- * console.log(prices.higher(100)); // undefined;
1292
- */
1293
- higher(key: K): [K, V | undefined] | undefined;
1294
- /**
1295
- * Largest entry whose key is < the given key.
1296
1080
 
1297
1081
 
1298
1082
 
@@ -1331,26 +1115,6 @@ export declare class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[
1331
1115
 
1332
1116
 
1333
1117
 
1334
- * @example
1335
- * // Find the largest key strictly < target
1336
- * const temps = new TreeMap<number, string>([
1337
- * [0, 'Freezing'],
1338
- * [20, 'Cool'],
1339
- * [30, 'Warm'],
1340
- * [40, 'Hot']
1341
- * ]);
1342
- *
1343
- * // Largest reading below 30
1344
- * console.log(temps.lower(30)); // [20, 'Cool'];
1345
- * // Nothing below 0
1346
- * console.log(temps.lower(0)); // undefined;
1347
- */
1348
- lower(key: K): [K, V | undefined] | undefined;
1349
- /**
1350
- * Return all entries in a given key range.
1351
- *
1352
- * @param range `[low, high]`
1353
- * @param options Inclusive/exclusive bounds (defaults to inclusive).
1354
1118
 
1355
1119
 
1356
1120
 
@@ -1390,25 +1154,2541 @@ export declare class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[
1390
1154
 
1391
1155
 
1392
1156
  * @example
1393
- * // Inventory system with price-sorted products
1394
- * interface Product {
1395
- * name: string;
1396
- * price: number;
1397
- * stock: number;
1398
- * }
1399
- *
1400
- * const inventory = new TreeMap<string, Product, Product>(
1401
- * [
1402
- * { name: 'Widget', price: 9.99, stock: 100 },
1403
- * { name: 'Gadget', price: 24.99, stock: 50 },
1404
- * { name: 'Doohickey', price: 4.99, stock: 200 }
1405
- * ],
1406
- * { toEntryFn: p => [p.name, p] }
1407
- * );
1408
- *
1409
- * // Sorted alphabetically by product name
1410
- * console.log([...inventory.keys()]); // ['Doohickey', 'Gadget', 'Widget'];
1411
- *
1157
+ * // Get sorted keys
1158
+ * const tm = new TreeMap<number, string>([[3, 'c'], [1, 'a']]);
1159
+ * console.log([...tm.keys()]); // [1, 3];
1160
+ */
1161
+ keys(): IterableIterator<K>;
1162
+ private _entryFromKey;
1163
+ /**
1164
+ * Iterate over values in ascending key order.
1165
+ *
1166
+ * Note: values may be `undefined` (TreeMap allows storing `undefined`, like native `Map`).
1167
+
1168
+
1169
+
1170
+
1171
+
1172
+
1173
+
1174
+
1175
+
1176
+
1177
+
1178
+
1179
+
1180
+
1181
+
1182
+
1183
+
1184
+
1185
+
1186
+
1187
+
1188
+
1189
+
1190
+
1191
+
1192
+
1193
+
1194
+
1195
+
1196
+
1197
+
1198
+
1199
+
1200
+
1201
+
1202
+
1203
+
1204
+
1205
+
1206
+
1207
+
1208
+
1209
+
1210
+
1211
+
1212
+
1213
+
1214
+
1215
+
1216
+
1217
+
1218
+
1219
+
1220
+
1221
+
1222
+
1223
+
1224
+
1225
+
1226
+
1227
+
1228
+
1229
+
1230
+
1231
+
1232
+
1233
+
1234
+
1235
+
1236
+
1237
+
1238
+
1239
+
1240
+
1241
+
1242
+
1243
+
1244
+
1245
+
1246
+
1247
+
1248
+
1249
+
1250
+
1251
+
1252
+
1253
+
1254
+
1255
+
1256
+
1257
+
1258
+
1259
+
1260
+
1261
+
1262
+
1263
+
1264
+
1265
+
1266
+
1267
+
1268
+
1269
+
1270
+
1271
+
1272
+
1273
+
1274
+
1275
+
1276
+
1277
+
1278
+
1279
+
1280
+
1281
+
1282
+
1283
+
1284
+
1285
+
1286
+
1287
+
1288
+
1289
+
1290
+
1291
+
1292
+
1293
+
1294
+
1295
+
1296
+
1297
+
1298
+
1299
+
1300
+
1301
+
1302
+
1303
+
1304
+
1305
+ * @example
1306
+ * // Get values in key order
1307
+ * const tm = new TreeMap<number, string>([[2, 'b'], [1, 'a']]);
1308
+ * console.log([...tm.values()]); // ['a', 'b'];
1309
+ */
1310
+ values(): IterableIterator<V | undefined>;
1311
+ /**
1312
+ * Iterate over `[key, value]` entries in ascending key order.
1313
+ *
1314
+ * Note: values may be `undefined`.
1315
+
1316
+
1317
+
1318
+
1319
+
1320
+
1321
+
1322
+
1323
+
1324
+
1325
+
1326
+
1327
+
1328
+
1329
+
1330
+
1331
+
1332
+
1333
+
1334
+
1335
+
1336
+
1337
+
1338
+
1339
+
1340
+
1341
+
1342
+
1343
+
1344
+
1345
+
1346
+
1347
+
1348
+
1349
+
1350
+
1351
+
1352
+
1353
+
1354
+
1355
+
1356
+
1357
+
1358
+
1359
+
1360
+
1361
+
1362
+
1363
+
1364
+
1365
+
1366
+
1367
+
1368
+
1369
+
1370
+
1371
+
1372
+
1373
+
1374
+
1375
+
1376
+
1377
+
1378
+
1379
+
1380
+
1381
+
1382
+
1383
+
1384
+
1385
+
1386
+
1387
+
1388
+
1389
+
1390
+
1391
+
1392
+
1393
+
1394
+
1395
+
1396
+
1397
+
1398
+
1399
+
1400
+
1401
+
1402
+
1403
+
1404
+
1405
+
1406
+
1407
+
1408
+
1409
+
1410
+
1411
+
1412
+
1413
+
1414
+
1415
+
1416
+
1417
+
1418
+
1419
+
1420
+
1421
+
1422
+
1423
+
1424
+
1425
+
1426
+
1427
+
1428
+
1429
+
1430
+
1431
+
1432
+
1433
+
1434
+
1435
+
1436
+
1437
+
1438
+
1439
+
1440
+
1441
+
1442
+
1443
+
1444
+
1445
+
1446
+
1447
+
1448
+
1449
+
1450
+
1451
+
1452
+
1453
+ * @example
1454
+ * // Iterate key-value pairs
1455
+ * const tm = new TreeMap<number, string>([[3, 'c'], [1, 'a'], [2, 'b']]);
1456
+ * console.log([...tm.entries()]); // [[1, 'a'], [2, 'b'], [3, 'c']];
1457
+ */
1458
+ entries(): IterableIterator<[K, V | undefined]>;
1459
+ [Symbol.iterator](): IterableIterator<[K, V | undefined]>;
1460
+ /**
1461
+ * Visit each entry in ascending key order.
1462
+ *
1463
+ * Note: callback value may be `undefined`.
1464
+
1465
+
1466
+
1467
+
1468
+
1469
+
1470
+
1471
+
1472
+
1473
+
1474
+
1475
+
1476
+
1477
+
1478
+
1479
+
1480
+
1481
+
1482
+
1483
+
1484
+
1485
+
1486
+
1487
+
1488
+
1489
+
1490
+
1491
+
1492
+
1493
+
1494
+
1495
+
1496
+
1497
+
1498
+
1499
+
1500
+
1501
+
1502
+
1503
+
1504
+
1505
+
1506
+
1507
+
1508
+
1509
+
1510
+
1511
+
1512
+
1513
+
1514
+
1515
+
1516
+
1517
+
1518
+
1519
+
1520
+
1521
+
1522
+
1523
+
1524
+
1525
+
1526
+
1527
+
1528
+
1529
+
1530
+
1531
+
1532
+
1533
+
1534
+
1535
+
1536
+
1537
+
1538
+
1539
+
1540
+
1541
+
1542
+
1543
+
1544
+
1545
+
1546
+
1547
+
1548
+
1549
+
1550
+
1551
+
1552
+
1553
+
1554
+
1555
+
1556
+
1557
+
1558
+
1559
+
1560
+
1561
+
1562
+
1563
+
1564
+
1565
+
1566
+
1567
+
1568
+
1569
+
1570
+
1571
+
1572
+
1573
+
1574
+
1575
+
1576
+
1577
+
1578
+
1579
+
1580
+
1581
+
1582
+
1583
+
1584
+
1585
+
1586
+
1587
+
1588
+
1589
+
1590
+
1591
+
1592
+
1593
+
1594
+
1595
+
1596
+
1597
+
1598
+
1599
+
1600
+
1601
+
1602
+ * @example
1603
+ * // Execute for each entry
1604
+ * const tm = new TreeMap<number, string>([[1, 'a'], [2, 'b']]);
1605
+ * const pairs: string[] = [];
1606
+ * tm.forEach((v, k) => pairs.push(`${k}:${v}`));
1607
+ * console.log(pairs); // ['1:a', '2:b'];
1608
+ */
1609
+ forEach(cb: (value: V | undefined, key: K, map: TreeMap<K, V>) => void, thisArg?: unknown): void;
1610
+ /**
1611
+ * Create a new TreeMap by mapping each entry to a new `[key, value]` entry.
1612
+ *
1613
+ * This mirrors `RedBlackTree.map`: mapping produces a new ordered container.
1614
+ * @remarks Time O(n log n) expected, Space O(n)
1615
+
1616
+
1617
+
1618
+
1619
+
1620
+
1621
+
1622
+
1623
+
1624
+
1625
+
1626
+
1627
+
1628
+
1629
+
1630
+
1631
+
1632
+
1633
+
1634
+
1635
+
1636
+
1637
+
1638
+
1639
+
1640
+
1641
+
1642
+
1643
+
1644
+
1645
+
1646
+
1647
+
1648
+
1649
+
1650
+
1651
+
1652
+
1653
+
1654
+
1655
+
1656
+
1657
+
1658
+
1659
+
1660
+
1661
+
1662
+
1663
+
1664
+
1665
+
1666
+
1667
+
1668
+
1669
+
1670
+
1671
+
1672
+
1673
+
1674
+
1675
+
1676
+
1677
+
1678
+
1679
+
1680
+
1681
+
1682
+
1683
+
1684
+
1685
+
1686
+
1687
+
1688
+
1689
+
1690
+
1691
+
1692
+
1693
+
1694
+
1695
+
1696
+
1697
+
1698
+
1699
+
1700
+
1701
+
1702
+
1703
+
1704
+
1705
+
1706
+
1707
+
1708
+
1709
+
1710
+
1711
+
1712
+
1713
+
1714
+
1715
+
1716
+
1717
+
1718
+
1719
+
1720
+
1721
+
1722
+
1723
+
1724
+
1725
+
1726
+
1727
+
1728
+
1729
+
1730
+
1731
+
1732
+
1733
+
1734
+
1735
+
1736
+
1737
+
1738
+
1739
+
1740
+
1741
+
1742
+
1743
+
1744
+
1745
+
1746
+
1747
+
1748
+
1749
+
1750
+
1751
+
1752
+
1753
+ * @example
1754
+ * // Transform entries
1755
+ * const tm = new TreeMap<number, number>([[1, 10], [2, 20]]);
1756
+ * const doubled = tm.map((v, k) => [k, (v ?? 0) * 2] as [number, number]);
1757
+ * console.log([...doubled.values()]); // [20, 40];
1758
+ */
1759
+ map<MK, MV>(callbackfn: TreeMapEntryCallback<K, V, [MK, MV], TreeMap<K, V>>, options?: Omit<TreeMapOptions<MK, MV>, 'toEntryFn'> & {
1760
+ comparator?: (a: MK, b: MK) => number;
1761
+ }, thisArg?: unknown): TreeMap<MK, MV>;
1762
+ /**
1763
+ * Create a new TreeMap containing only entries that satisfy the predicate.
1764
+ * @remarks Time O(n log n) expected, Space O(n)
1765
+
1766
+
1767
+
1768
+
1769
+
1770
+
1771
+
1772
+
1773
+
1774
+
1775
+
1776
+
1777
+
1778
+
1779
+
1780
+
1781
+
1782
+
1783
+
1784
+
1785
+
1786
+
1787
+
1788
+
1789
+
1790
+
1791
+
1792
+
1793
+
1794
+
1795
+
1796
+
1797
+
1798
+
1799
+
1800
+
1801
+
1802
+
1803
+
1804
+
1805
+
1806
+
1807
+
1808
+
1809
+
1810
+
1811
+
1812
+
1813
+
1814
+
1815
+
1816
+
1817
+
1818
+
1819
+
1820
+
1821
+
1822
+
1823
+
1824
+
1825
+
1826
+
1827
+
1828
+
1829
+
1830
+
1831
+
1832
+
1833
+
1834
+
1835
+
1836
+
1837
+
1838
+
1839
+
1840
+
1841
+
1842
+
1843
+
1844
+
1845
+
1846
+
1847
+
1848
+
1849
+
1850
+
1851
+
1852
+
1853
+
1854
+
1855
+
1856
+
1857
+
1858
+
1859
+
1860
+
1861
+
1862
+
1863
+
1864
+
1865
+
1866
+
1867
+
1868
+
1869
+
1870
+
1871
+
1872
+
1873
+
1874
+
1875
+
1876
+
1877
+
1878
+
1879
+
1880
+
1881
+
1882
+
1883
+
1884
+
1885
+
1886
+
1887
+
1888
+
1889
+
1890
+
1891
+
1892
+
1893
+
1894
+
1895
+
1896
+
1897
+
1898
+
1899
+
1900
+
1901
+
1902
+
1903
+ * @example
1904
+ * // Filter entries
1905
+ * const tm = new TreeMap<number, string>([[1, 'a'], [2, 'b'], [3, 'c']]);
1906
+ * const filtered = tm.filter((v, k) => k > 1);
1907
+ * console.log([...filtered.keys()]); // [2, 3];
1908
+ */
1909
+ filter(callbackfn: TreeMapEntryCallback<K, V, boolean, TreeMap<K, V>>, thisArg?: unknown): TreeMap<K, V>;
1910
+ /**
1911
+ * Reduce entries into a single accumulator.
1912
+ * @remarks Time O(n), Space O(1)
1913
+
1914
+
1915
+
1916
+
1917
+
1918
+
1919
+
1920
+
1921
+
1922
+
1923
+
1924
+
1925
+
1926
+
1927
+
1928
+
1929
+
1930
+
1931
+
1932
+
1933
+
1934
+
1935
+
1936
+
1937
+
1938
+
1939
+
1940
+
1941
+
1942
+
1943
+
1944
+
1945
+
1946
+
1947
+
1948
+
1949
+
1950
+
1951
+
1952
+
1953
+
1954
+
1955
+
1956
+
1957
+
1958
+
1959
+
1960
+
1961
+
1962
+
1963
+
1964
+
1965
+
1966
+
1967
+
1968
+
1969
+
1970
+
1971
+
1972
+
1973
+
1974
+
1975
+
1976
+
1977
+
1978
+
1979
+
1980
+
1981
+
1982
+
1983
+
1984
+
1985
+
1986
+
1987
+
1988
+
1989
+
1990
+
1991
+
1992
+
1993
+
1994
+
1995
+
1996
+
1997
+
1998
+
1999
+
2000
+
2001
+
2002
+
2003
+
2004
+
2005
+
2006
+
2007
+
2008
+
2009
+
2010
+
2011
+
2012
+
2013
+
2014
+
2015
+
2016
+
2017
+
2018
+
2019
+
2020
+
2021
+
2022
+
2023
+
2024
+
2025
+
2026
+
2027
+
2028
+
2029
+
2030
+
2031
+
2032
+
2033
+
2034
+
2035
+
2036
+
2037
+
2038
+
2039
+
2040
+
2041
+
2042
+
2043
+
2044
+
2045
+
2046
+
2047
+
2048
+
2049
+
2050
+
2051
+ * @example
2052
+ * // Aggregate values
2053
+ * const tm = new TreeMap<number, number>([[1, 10], [2, 20]]);
2054
+ * console.log(tm.reduce((acc, v) => acc + (v ?? 0), 0)); // 30;
2055
+ */
2056
+ reduce<A>(callbackfn: TreeMapReduceCallback<K, V, A, TreeMap<K, V>>, initialValue: A): A;
2057
+ /**
2058
+ * Test whether all entries satisfy a predicate.
2059
+ * @remarks Time O(n), Space O(1)
2060
+
2061
+
2062
+
2063
+
2064
+
2065
+
2066
+
2067
+
2068
+
2069
+
2070
+
2071
+
2072
+
2073
+
2074
+
2075
+
2076
+
2077
+
2078
+
2079
+
2080
+
2081
+
2082
+
2083
+
2084
+
2085
+
2086
+
2087
+
2088
+
2089
+
2090
+
2091
+
2092
+
2093
+
2094
+
2095
+
2096
+
2097
+
2098
+
2099
+
2100
+
2101
+
2102
+
2103
+
2104
+
2105
+
2106
+
2107
+
2108
+
2109
+
2110
+
2111
+
2112
+
2113
+
2114
+
2115
+
2116
+
2117
+
2118
+
2119
+
2120
+
2121
+
2122
+
2123
+
2124
+
2125
+
2126
+
2127
+
2128
+
2129
+
2130
+
2131
+
2132
+
2133
+
2134
+
2135
+
2136
+
2137
+
2138
+
2139
+
2140
+
2141
+
2142
+
2143
+
2144
+
2145
+
2146
+
2147
+
2148
+
2149
+
2150
+
2151
+
2152
+
2153
+
2154
+
2155
+
2156
+
2157
+
2158
+
2159
+
2160
+
2161
+
2162
+
2163
+
2164
+
2165
+
2166
+
2167
+
2168
+
2169
+
2170
+
2171
+
2172
+
2173
+
2174
+
2175
+
2176
+
2177
+
2178
+
2179
+
2180
+
2181
+
2182
+
2183
+
2184
+
2185
+
2186
+
2187
+
2188
+
2189
+
2190
+
2191
+
2192
+
2193
+
2194
+
2195
+
2196
+ * @example
2197
+ * // Test all entries
2198
+ * const tm = new TreeMap<number, string>([[1, 'a'], [2, 'b']]);
2199
+ * console.log(tm.every((v, k) => k > 0)); // true;
2200
+ */
2201
+ every(callbackfn: TreeMapEntryCallback<K, V, boolean, TreeMap<K, V>>, thisArg?: unknown): boolean;
2202
+ /**
2203
+ * Test whether any entry satisfies a predicate.
2204
+ * @remarks Time O(n), Space O(1)
2205
+
2206
+
2207
+
2208
+
2209
+
2210
+
2211
+
2212
+
2213
+
2214
+
2215
+
2216
+
2217
+
2218
+
2219
+
2220
+
2221
+
2222
+
2223
+
2224
+
2225
+
2226
+
2227
+
2228
+
2229
+
2230
+
2231
+
2232
+
2233
+
2234
+
2235
+
2236
+
2237
+
2238
+
2239
+
2240
+
2241
+
2242
+
2243
+
2244
+
2245
+
2246
+
2247
+
2248
+
2249
+
2250
+
2251
+
2252
+
2253
+
2254
+
2255
+
2256
+
2257
+
2258
+
2259
+
2260
+
2261
+
2262
+
2263
+
2264
+
2265
+
2266
+
2267
+
2268
+
2269
+
2270
+
2271
+
2272
+
2273
+
2274
+
2275
+
2276
+
2277
+
2278
+
2279
+
2280
+
2281
+
2282
+
2283
+
2284
+
2285
+
2286
+
2287
+
2288
+
2289
+
2290
+
2291
+
2292
+
2293
+
2294
+
2295
+
2296
+
2297
+
2298
+
2299
+
2300
+
2301
+
2302
+
2303
+
2304
+
2305
+
2306
+
2307
+
2308
+
2309
+
2310
+
2311
+
2312
+
2313
+
2314
+
2315
+
2316
+
2317
+
2318
+
2319
+
2320
+
2321
+
2322
+
2323
+
2324
+
2325
+
2326
+
2327
+
2328
+
2329
+
2330
+
2331
+
2332
+
2333
+
2334
+
2335
+
2336
+
2337
+
2338
+
2339
+
2340
+
2341
+ * @example
2342
+ * // Test any entry
2343
+ * const tm = new TreeMap<number, string>([[1, 'a'], [2, 'b']]);
2344
+ * console.log(tm.some((v, k) => k === 2)); // true;
2345
+ */
2346
+ some(callbackfn: TreeMapEntryCallback<K, V, boolean, TreeMap<K, V>>, thisArg?: unknown): boolean;
2347
+ /**
2348
+ * Find the first entry that satisfies a predicate.
2349
+ * @returns The first matching `[key, value]` tuple, or `undefined`.
2350
+ * @remarks Time O(n), Space O(1)
2351
+
2352
+
2353
+
2354
+
2355
+
2356
+
2357
+
2358
+
2359
+
2360
+
2361
+
2362
+
2363
+
2364
+
2365
+
2366
+
2367
+
2368
+
2369
+
2370
+
2371
+
2372
+
2373
+
2374
+
2375
+
2376
+
2377
+
2378
+
2379
+
2380
+
2381
+
2382
+
2383
+
2384
+
2385
+
2386
+
2387
+
2388
+
2389
+
2390
+
2391
+
2392
+
2393
+
2394
+
2395
+
2396
+
2397
+
2398
+
2399
+
2400
+
2401
+
2402
+
2403
+
2404
+
2405
+
2406
+
2407
+
2408
+
2409
+
2410
+
2411
+
2412
+
2413
+
2414
+
2415
+
2416
+
2417
+
2418
+
2419
+
2420
+
2421
+
2422
+
2423
+
2424
+
2425
+
2426
+
2427
+
2428
+
2429
+
2430
+
2431
+
2432
+
2433
+
2434
+
2435
+
2436
+
2437
+
2438
+
2439
+
2440
+
2441
+
2442
+
2443
+
2444
+
2445
+
2446
+
2447
+
2448
+
2449
+
2450
+
2451
+
2452
+
2453
+
2454
+
2455
+
2456
+
2457
+
2458
+
2459
+
2460
+
2461
+
2462
+
2463
+
2464
+
2465
+
2466
+
2467
+
2468
+
2469
+
2470
+
2471
+
2472
+
2473
+
2474
+
2475
+
2476
+
2477
+
2478
+
2479
+
2480
+
2481
+
2482
+
2483
+
2484
+
2485
+
2486
+
2487
+ * @example
2488
+ * // Find matching entry
2489
+ * const tm = new TreeMap<number, string>([[1, 'a'], [2, 'b']]);
2490
+ * console.log(tm.find(v => v === 'b')?.[0]); // 2;
2491
+ */
2492
+ find(callbackfn: TreeMapEntryCallback<K, V, boolean, TreeMap<K, V>>, thisArg?: unknown): [K, V | undefined] | undefined;
2493
+ /**
2494
+ * Materialize the map into an array of `[key, value]` tuples.
2495
+ * @remarks Time O(n), Space O(n)
2496
+
2497
+
2498
+
2499
+
2500
+
2501
+
2502
+
2503
+
2504
+
2505
+
2506
+
2507
+
2508
+
2509
+
2510
+
2511
+
2512
+
2513
+
2514
+
2515
+
2516
+
2517
+
2518
+
2519
+
2520
+
2521
+
2522
+
2523
+
2524
+
2525
+
2526
+
2527
+
2528
+
2529
+
2530
+
2531
+
2532
+
2533
+
2534
+
2535
+
2536
+
2537
+
2538
+
2539
+
2540
+
2541
+
2542
+
2543
+
2544
+
2545
+
2546
+
2547
+
2548
+
2549
+
2550
+
2551
+
2552
+
2553
+
2554
+
2555
+
2556
+
2557
+
2558
+
2559
+
2560
+
2561
+
2562
+
2563
+
2564
+
2565
+
2566
+
2567
+
2568
+
2569
+
2570
+
2571
+
2572
+
2573
+
2574
+
2575
+
2576
+
2577
+
2578
+
2579
+
2580
+
2581
+
2582
+
2583
+
2584
+
2585
+
2586
+
2587
+
2588
+
2589
+
2590
+
2591
+
2592
+
2593
+
2594
+
2595
+
2596
+
2597
+
2598
+
2599
+
2600
+
2601
+
2602
+
2603
+
2604
+
2605
+
2606
+
2607
+
2608
+
2609
+
2610
+
2611
+
2612
+
2613
+
2614
+
2615
+
2616
+
2617
+
2618
+
2619
+
2620
+
2621
+
2622
+
2623
+
2624
+
2625
+
2626
+
2627
+
2628
+
2629
+
2630
+
2631
+
2632
+
2633
+
2634
+ * @example
2635
+ * // Convert to array
2636
+ * const tm = new TreeMap<number, string>([[2, 'b'], [1, 'a']]);
2637
+ * console.log(tm.toArray()); // [[1, 'a'], [2, 'b']];
2638
+ */
2639
+ toArray(): Array<[K, V | undefined]>;
2640
+ /**
2641
+ * Print a human-friendly representation.
2642
+ * @remarks Time O(n), Space O(n)
2643
+
2644
+
2645
+
2646
+
2647
+
2648
+
2649
+
2650
+
2651
+
2652
+
2653
+
2654
+
2655
+
2656
+
2657
+
2658
+
2659
+
2660
+
2661
+
2662
+
2663
+
2664
+
2665
+
2666
+
2667
+
2668
+
2669
+
2670
+
2671
+
2672
+
2673
+
2674
+
2675
+
2676
+
2677
+
2678
+
2679
+
2680
+
2681
+
2682
+
2683
+
2684
+
2685
+
2686
+
2687
+
2688
+
2689
+
2690
+
2691
+
2692
+
2693
+
2694
+
2695
+
2696
+
2697
+
2698
+
2699
+
2700
+
2701
+
2702
+
2703
+
2704
+
2705
+
2706
+
2707
+
2708
+
2709
+
2710
+
2711
+
2712
+
2713
+
2714
+
2715
+
2716
+
2717
+
2718
+
2719
+
2720
+
2721
+
2722
+
2723
+
2724
+
2725
+
2726
+
2727
+
2728
+
2729
+
2730
+
2731
+
2732
+
2733
+
2734
+
2735
+
2736
+
2737
+
2738
+
2739
+
2740
+
2741
+
2742
+
2743
+
2744
+
2745
+
2746
+
2747
+
2748
+
2749
+
2750
+
2751
+
2752
+
2753
+
2754
+
2755
+
2756
+
2757
+
2758
+
2759
+
2760
+
2761
+
2762
+
2763
+
2764
+
2765
+
2766
+
2767
+
2768
+
2769
+
2770
+
2771
+
2772
+
2773
+
2774
+
2775
+
2776
+
2777
+
2778
+
2779
+
2780
+
2781
+ * @example
2782
+ * // Display tree
2783
+ * const tm = new TreeMap<number, string>([[1, 'a']]);
2784
+ * expect(() => tm.print()).not.toThrow();
2785
+ */
2786
+ print(): void;
2787
+ /**
2788
+ * Smallest entry by key.
2789
+
2790
+
2791
+
2792
+
2793
+
2794
+
2795
+
2796
+
2797
+
2798
+
2799
+
2800
+
2801
+
2802
+
2803
+
2804
+
2805
+
2806
+
2807
+
2808
+
2809
+
2810
+
2811
+
2812
+
2813
+
2814
+
2815
+
2816
+
2817
+
2818
+
2819
+
2820
+ * @example
2821
+ * // Leaderboard with ranked scores
2822
+ * // Use score as key (descending), player name as value
2823
+ * const leaderboard = new TreeMap<number, string>([], {
2824
+ * comparator: (a, b) => b - a // descending
2825
+ * });
2826
+ *
2827
+ * leaderboard.set(1500, 'Alice');
2828
+ * leaderboard.set(2200, 'Bob');
2829
+ * leaderboard.set(1800, 'Charlie');
2830
+ * leaderboard.set(2500, 'Diana');
2831
+ *
2832
+ * // Top 3 players (first 3 in descending order)
2833
+ * const top3 = [...leaderboard.entries()].slice(0, 3);
2834
+ * console.log(top3); // [
2835
+ * // [2500, 'Diana'],
2836
+ * // [2200, 'Bob'],
2837
+ * // [1800, 'Charlie']
2838
+ * // ];
2839
+ *
2840
+ * // Highest scorer
2841
+ * console.log(leaderboard.first()); // [2500, 'Diana'];
2842
+ *
2843
+ * // Remove lowest scorer
2844
+ * console.log(leaderboard.pollLast()); // [1500, 'Alice'];
2845
+ * console.log(leaderboard.size); // 3;
2846
+ */
2847
+ first(): [K, V | undefined] | undefined;
2848
+ /**
2849
+ * Largest entry by key.
2850
+
2851
+
2852
+
2853
+
2854
+
2855
+
2856
+
2857
+
2858
+
2859
+
2860
+
2861
+
2862
+
2863
+
2864
+
2865
+
2866
+
2867
+
2868
+
2869
+
2870
+
2871
+
2872
+
2873
+
2874
+
2875
+
2876
+
2877
+
2878
+
2879
+
2880
+
2881
+ * @example
2882
+ * // Access the maximum entry
2883
+ * const scores = new TreeMap<number, string>([
2884
+ * [85, 'Bob'],
2885
+ * [92, 'Alice'],
2886
+ * [78, 'Charlie']
2887
+ * ]);
2888
+ *
2889
+ * console.log(scores.last()); // [92, 'Alice'];
2890
+ * console.log(scores.first()); // [78, 'Charlie'];
2891
+ */
2892
+ last(): [K, V | undefined] | undefined;
2893
+ /**
2894
+ * Remove and return the smallest entry.
2895
+
2896
+
2897
+
2898
+
2899
+
2900
+
2901
+
2902
+
2903
+
2904
+
2905
+
2906
+
2907
+
2908
+
2909
+
2910
+
2911
+
2912
+
2913
+
2914
+
2915
+
2916
+
2917
+
2918
+
2919
+
2920
+
2921
+
2922
+
2923
+
2924
+
2925
+
2926
+ * @example
2927
+ * // Process items from lowest priority
2928
+ * const tasks = new TreeMap<number, string>([
2929
+ * [3, 'Low'],
2930
+ * [1, 'Critical'],
2931
+ * [2, 'Medium']
2932
+ * ]);
2933
+ *
2934
+ * // Process lowest priority first
2935
+ * console.log(tasks.pollFirst()); // [1, 'Critical'];
2936
+ * console.log(tasks.pollFirst()); // [2, 'Medium'];
2937
+ * console.log(tasks.size); // 1;
2938
+ */
2939
+ pollFirst(): [K, V | undefined] | undefined;
2940
+ /**
2941
+ * Remove and return the largest entry.
2942
+
2943
+
2944
+
2945
+
2946
+
2947
+
2948
+
2949
+
2950
+
2951
+
2952
+
2953
+
2954
+
2955
+
2956
+
2957
+
2958
+
2959
+
2960
+
2961
+
2962
+
2963
+
2964
+
2965
+
2966
+
2967
+
2968
+
2969
+
2970
+
2971
+
2972
+
2973
+ * @example
2974
+ * // Remove the maximum entry
2975
+ * const bids = new TreeMap<number, string>([
2976
+ * [100, 'Alice'],
2977
+ * [150, 'Bob'],
2978
+ * [120, 'Charlie']
2979
+ * ]);
2980
+ *
2981
+ * // Remove highest bid
2982
+ * console.log(bids.pollLast()); // [150, 'Bob'];
2983
+ * console.log(bids.size); // 2;
2984
+ * console.log(bids.last()); // [120, 'Charlie'];
2985
+ */
2986
+ pollLast(): [K, V | undefined] | undefined;
2987
+ /**
2988
+ * Smallest entry whose key is >= the given key.
2989
+
2990
+
2991
+
2992
+
2993
+
2994
+
2995
+
2996
+
2997
+
2998
+
2999
+
3000
+
3001
+
3002
+
3003
+
3004
+
3005
+
3006
+
3007
+
3008
+
3009
+
3010
+
3011
+
3012
+
3013
+
3014
+
3015
+
3016
+
3017
+
3018
+
3019
+
3020
+
3021
+
3022
+
3023
+
3024
+
3025
+
3026
+
3027
+
3028
+
3029
+
3030
+
3031
+
3032
+
3033
+
3034
+
3035
+
3036
+
3037
+
3038
+
3039
+
3040
+
3041
+
3042
+
3043
+
3044
+
3045
+
3046
+
3047
+
3048
+
3049
+
3050
+
3051
+
3052
+
3053
+
3054
+
3055
+
3056
+
3057
+
3058
+
3059
+
3060
+
3061
+
3062
+
3063
+
3064
+
3065
+
3066
+
3067
+
3068
+
3069
+
3070
+
3071
+
3072
+
3073
+
3074
+
3075
+
3076
+
3077
+
3078
+
3079
+
3080
+
3081
+
3082
+
3083
+
3084
+
3085
+
3086
+
3087
+
3088
+
3089
+
3090
+
3091
+
3092
+
3093
+
3094
+
3095
+
3096
+
3097
+
3098
+
3099
+
3100
+
3101
+
3102
+
3103
+
3104
+
3105
+
3106
+
3107
+ * @example
3108
+ * // Event scheduler with time-based lookup
3109
+ * const events = new TreeMap<Date, string>();
3110
+ *
3111
+ * const meeting = new Date('2024-01-15T10:00:00Z');
3112
+ * const lunch = new Date('2024-01-15T12:00:00Z');
3113
+ * const review = new Date('2024-01-15T15:00:00Z');
3114
+ * const standup = new Date('2024-01-15T09:00:00Z');
3115
+ *
3116
+ * events.set(meeting, 'Team Meeting');
3117
+ * events.set(lunch, 'Lunch Break');
3118
+ * events.set(review, 'Code Review');
3119
+ * events.set(standup, 'Daily Standup');
3120
+ *
3121
+ * // Events are sorted chronologically
3122
+ * console.log([...events.values()]); // [
3123
+ * // 'Daily Standup',
3124
+ * // 'Team Meeting',
3125
+ * // 'Lunch Break',
3126
+ * // 'Code Review'
3127
+ * // ];
3128
+ *
3129
+ * // Next event after 11:00
3130
+ * const after11 = new Date('2024-01-15T11:00:00Z');
3131
+ * console.log(events.ceiling(after11)?.[1]); // 'Lunch Break';
3132
+ *
3133
+ * // Events between 9:30 and 13:00
3134
+ * const from = new Date('2024-01-15T09:30:00Z');
3135
+ * const to = new Date('2024-01-15T13:00:00Z');
3136
+ * const window = events.rangeSearch([from, to]);
3137
+ * console.log(window.map(([, v]) => v)); // ['Team Meeting', 'Lunch Break'];
3138
+ */
3139
+ ceiling(key: K): [K, V | undefined] | undefined;
3140
+ /**
3141
+ * Largest entry whose key is <= the given key.
3142
+
3143
+
3144
+
3145
+
3146
+
3147
+
3148
+
3149
+
3150
+
3151
+
3152
+
3153
+
3154
+
3155
+
3156
+
3157
+
3158
+
3159
+
3160
+
3161
+
3162
+
3163
+
3164
+
3165
+
3166
+
3167
+
3168
+
3169
+
3170
+
3171
+
3172
+
3173
+
3174
+
3175
+
3176
+
3177
+
3178
+
3179
+
3180
+
3181
+
3182
+
3183
+
3184
+
3185
+
3186
+
3187
+
3188
+
3189
+
3190
+
3191
+
3192
+
3193
+
3194
+
3195
+
3196
+
3197
+
3198
+
3199
+
3200
+
3201
+
3202
+
3203
+
3204
+
3205
+
3206
+
3207
+
3208
+
3209
+
3210
+
3211
+
3212
+
3213
+
3214
+
3215
+
3216
+
3217
+
3218
+
3219
+
3220
+
3221
+
3222
+
3223
+
3224
+
3225
+
3226
+
3227
+
3228
+
3229
+
3230
+
3231
+
3232
+
3233
+
3234
+
3235
+
3236
+
3237
+
3238
+
3239
+
3240
+
3241
+
3242
+
3243
+
3244
+
3245
+
3246
+
3247
+
3248
+
3249
+
3250
+
3251
+
3252
+
3253
+
3254
+
3255
+
3256
+
3257
+
3258
+
3259
+
3260
+ * @example
3261
+ * // Find the largest key ≤ target
3262
+ * const versions = new TreeMap<number, string>([
3263
+ * [1, 'v1.0'],
3264
+ * [3, 'v3.0'],
3265
+ * [5, 'v5.0'],
3266
+ * [7, 'v7.0']
3267
+ * ]);
3268
+ *
3269
+ * // Largest version ≤ 4
3270
+ * console.log(versions.floor(4)); // [3, 'v3.0'];
3271
+ * // Largest version ≤ 5 (exact match)
3272
+ * console.log(versions.floor(5)); // [5, 'v5.0'];
3273
+ * // No version ≤ 0
3274
+ * console.log(versions.floor(0)); // undefined;
3275
+ */
3276
+ floor(key: K): [K, V | undefined] | undefined;
3277
+ /**
3278
+ * Smallest entry whose key is > the given key.
3279
+
3280
+
3281
+
3282
+
3283
+
3284
+
3285
+
3286
+
3287
+
3288
+
3289
+
3290
+
3291
+
3292
+
3293
+
3294
+
3295
+
3296
+
3297
+
3298
+
3299
+
3300
+
3301
+
3302
+
3303
+
3304
+
3305
+
3306
+
3307
+
3308
+
3309
+
3310
+
3311
+
3312
+
3313
+
3314
+
3315
+
3316
+
3317
+
3318
+
3319
+
3320
+
3321
+
3322
+
3323
+
3324
+
3325
+
3326
+
3327
+
3328
+
3329
+
3330
+
3331
+
3332
+
3333
+
3334
+
3335
+
3336
+
3337
+
3338
+
3339
+
3340
+
3341
+
3342
+
3343
+
3344
+
3345
+
3346
+
3347
+
3348
+
3349
+
3350
+
3351
+
3352
+
3353
+
3354
+
3355
+
3356
+
3357
+
3358
+
3359
+
3360
+
3361
+
3362
+
3363
+
3364
+
3365
+
3366
+
3367
+
3368
+
3369
+
3370
+
3371
+
3372
+
3373
+
3374
+
3375
+
3376
+
3377
+
3378
+
3379
+
3380
+
3381
+
3382
+
3383
+
3384
+
3385
+
3386
+
3387
+
3388
+
3389
+
3390
+
3391
+
3392
+
3393
+
3394
+
3395
+
3396
+
3397
+ * @example
3398
+ * // Find the smallest key strictly > target
3399
+ * const prices = new TreeMap<number, string>([
3400
+ * [10, 'Basic'],
3401
+ * [25, 'Standard'],
3402
+ * [50, 'Premium'],
3403
+ * [100, 'Enterprise']
3404
+ * ]);
3405
+ *
3406
+ * // Next tier above $25
3407
+ * console.log(prices.higher(25)); // [50, 'Premium'];
3408
+ * // Next tier above $99
3409
+ * console.log(prices.higher(99)); // [100, 'Enterprise'];
3410
+ * // Nothing above $100
3411
+ * console.log(prices.higher(100)); // undefined;
3412
+ */
3413
+ higher(key: K): [K, V | undefined] | undefined;
3414
+ /**
3415
+ * Largest entry whose key is < the given key.
3416
+
3417
+
3418
+
3419
+
3420
+
3421
+
3422
+
3423
+
3424
+
3425
+
3426
+
3427
+
3428
+
3429
+
3430
+
3431
+
3432
+
3433
+
3434
+
3435
+
3436
+
3437
+
3438
+
3439
+
3440
+
3441
+
3442
+
3443
+
3444
+
3445
+
3446
+
3447
+
3448
+
3449
+
3450
+
3451
+
3452
+
3453
+
3454
+
3455
+
3456
+
3457
+
3458
+
3459
+
3460
+
3461
+
3462
+
3463
+
3464
+
3465
+
3466
+
3467
+
3468
+
3469
+
3470
+
3471
+
3472
+
3473
+
3474
+
3475
+
3476
+
3477
+
3478
+
3479
+
3480
+
3481
+
3482
+
3483
+
3484
+
3485
+
3486
+
3487
+
3488
+
3489
+
3490
+
3491
+
3492
+
3493
+
3494
+
3495
+
3496
+
3497
+
3498
+
3499
+
3500
+
3501
+
3502
+
3503
+
3504
+
3505
+
3506
+
3507
+
3508
+
3509
+
3510
+
3511
+
3512
+
3513
+
3514
+
3515
+
3516
+
3517
+
3518
+
3519
+
3520
+
3521
+
3522
+
3523
+
3524
+
3525
+
3526
+
3527
+
3528
+
3529
+
3530
+
3531
+
3532
+
3533
+
3534
+ * @example
3535
+ * // Find the largest key strictly < target
3536
+ * const temps = new TreeMap<number, string>([
3537
+ * [0, 'Freezing'],
3538
+ * [20, 'Cool'],
3539
+ * [30, 'Warm'],
3540
+ * [40, 'Hot']
3541
+ * ]);
3542
+ *
3543
+ * // Largest reading below 30
3544
+ * console.log(temps.lower(30)); // [20, 'Cool'];
3545
+ * // Nothing below 0
3546
+ * console.log(temps.lower(0)); // undefined;
3547
+ */
3548
+ lower(key: K): [K, V | undefined] | undefined;
3549
+ /**
3550
+ * Return all entries in a given key range.
3551
+ *
3552
+ * @param range `[low, high]`
3553
+ * @param options Inclusive/exclusive bounds (defaults to inclusive).
3554
+
3555
+
3556
+
3557
+
3558
+
3559
+
3560
+
3561
+
3562
+
3563
+
3564
+
3565
+
3566
+
3567
+
3568
+
3569
+
3570
+
3571
+
3572
+
3573
+
3574
+
3575
+
3576
+
3577
+
3578
+
3579
+
3580
+
3581
+
3582
+
3583
+
3584
+
3585
+
3586
+
3587
+
3588
+
3589
+
3590
+
3591
+
3592
+
3593
+
3594
+
3595
+
3596
+
3597
+
3598
+
3599
+
3600
+
3601
+
3602
+
3603
+
3604
+
3605
+
3606
+
3607
+
3608
+
3609
+
3610
+
3611
+
3612
+
3613
+
3614
+
3615
+
3616
+
3617
+
3618
+
3619
+
3620
+
3621
+
3622
+
3623
+
3624
+
3625
+
3626
+
3627
+
3628
+
3629
+
3630
+
3631
+
3632
+
3633
+
3634
+
3635
+
3636
+
3637
+
3638
+
3639
+
3640
+
3641
+
3642
+
3643
+
3644
+
3645
+
3646
+
3647
+
3648
+
3649
+
3650
+
3651
+
3652
+
3653
+
3654
+
3655
+
3656
+
3657
+
3658
+
3659
+
3660
+
3661
+
3662
+
3663
+
3664
+
3665
+
3666
+
3667
+
3668
+
3669
+
3670
+
3671
+
3672
+ * @example
3673
+ * // Inventory system with price-sorted products
3674
+ * interface Product {
3675
+ * name: string;
3676
+ * price: number;
3677
+ * stock: number;
3678
+ * }
3679
+ *
3680
+ * const inventory = new TreeMap<string, Product, Product>(
3681
+ * [
3682
+ * { name: 'Widget', price: 9.99, stock: 100 },
3683
+ * { name: 'Gadget', price: 24.99, stock: 50 },
3684
+ * { name: 'Doohickey', price: 4.99, stock: 200 }
3685
+ * ],
3686
+ * { toEntryFn: p => [p.name, p] }
3687
+ * );
3688
+ *
3689
+ * // Sorted alphabetically by product name
3690
+ * console.log([...inventory.keys()]); // ['Doohickey', 'Gadget', 'Widget'];
3691
+ *
1412
3692
  * // Filter high-stock items
1413
3693
  * const highStock = inventory.filter(p => (p?.stock ?? 0) > 75);
1414
3694
  * console.log([...highStock.keys()]); // ['Doohickey', 'Widget'];
@@ -1442,6 +3722,106 @@ export declare class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[
1442
3722
 
1443
3723
 
1444
3724
 
3725
+
3726
+
3727
+
3728
+
3729
+
3730
+
3731
+
3732
+
3733
+
3734
+
3735
+
3736
+
3737
+
3738
+
3739
+
3740
+
3741
+
3742
+
3743
+
3744
+
3745
+
3746
+
3747
+
3748
+
3749
+
3750
+
3751
+
3752
+
3753
+
3754
+
3755
+
3756
+
3757
+
3758
+
3759
+
3760
+
3761
+
3762
+
3763
+
3764
+
3765
+
3766
+
3767
+
3768
+
3769
+
3770
+
3771
+
3772
+
3773
+
3774
+
3775
+
3776
+
3777
+
3778
+
3779
+
3780
+
3781
+
3782
+
3783
+
3784
+
3785
+
3786
+
3787
+
3788
+
3789
+
3790
+
3791
+
3792
+
3793
+
3794
+
3795
+
3796
+
3797
+
3798
+
3799
+
3800
+
3801
+
3802
+
3803
+
3804
+
3805
+
3806
+
3807
+
3808
+
3809
+
3810
+
3811
+
3812
+
3813
+
3814
+
3815
+
3816
+
3817
+
3818
+
3819
+
3820
+
3821
+
3822
+
3823
+
3824
+
1445
3825
 
1446
3826
 
1447
3827