data-structure-typed 2.5.1 → 2.5.3

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 (184) hide show
  1. package/CHANGELOG.md +5 -1
  2. package/MIGRATION.md +169 -0
  3. package/README.md +135 -23
  4. package/README_CN.md +551 -143
  5. package/SPECIFICATION.md +20 -14
  6. package/SPECIFICATION.zh-CN.md +20 -14
  7. package/dist/cjs/binary-tree.cjs +6460 -1591
  8. package/dist/cjs/graph.cjs +440 -20
  9. package/dist/cjs/hash.cjs +125 -22
  10. package/dist/cjs/heap.cjs +196 -47
  11. package/dist/cjs/index.cjs +8486 -2429
  12. package/dist/cjs/linked-list.cjs +456 -31
  13. package/dist/cjs/matrix.cjs +79 -9
  14. package/dist/cjs/priority-queue.cjs +193 -44
  15. package/dist/cjs/queue.cjs +391 -2
  16. package/dist/cjs/stack.cjs +92 -6
  17. package/dist/cjs/trie.cjs +122 -28
  18. package/dist/cjs-legacy/binary-tree.cjs +6484 -1612
  19. package/dist/cjs-legacy/graph.cjs +440 -20
  20. package/dist/cjs-legacy/hash.cjs +125 -22
  21. package/dist/cjs-legacy/heap.cjs +196 -47
  22. package/dist/cjs-legacy/index.cjs +8654 -2594
  23. package/dist/cjs-legacy/linked-list.cjs +456 -31
  24. package/dist/cjs-legacy/matrix.cjs +79 -9
  25. package/dist/cjs-legacy/priority-queue.cjs +193 -44
  26. package/dist/cjs-legacy/queue.cjs +391 -2
  27. package/dist/cjs-legacy/stack.cjs +92 -6
  28. package/dist/cjs-legacy/trie.cjs +122 -28
  29. package/dist/esm/binary-tree.mjs +6460 -1591
  30. package/dist/esm/graph.mjs +440 -20
  31. package/dist/esm/hash.mjs +125 -22
  32. package/dist/esm/heap.mjs +196 -47
  33. package/dist/esm/index.mjs +8486 -2430
  34. package/dist/esm/linked-list.mjs +456 -31
  35. package/dist/esm/matrix.mjs +79 -9
  36. package/dist/esm/priority-queue.mjs +193 -44
  37. package/dist/esm/queue.mjs +391 -2
  38. package/dist/esm/stack.mjs +92 -6
  39. package/dist/esm/trie.mjs +122 -28
  40. package/dist/esm-legacy/binary-tree.mjs +6484 -1612
  41. package/dist/esm-legacy/graph.mjs +440 -20
  42. package/dist/esm-legacy/hash.mjs +125 -22
  43. package/dist/esm-legacy/heap.mjs +196 -47
  44. package/dist/esm-legacy/index.mjs +8654 -2595
  45. package/dist/esm-legacy/linked-list.mjs +456 -31
  46. package/dist/esm-legacy/matrix.mjs +79 -9
  47. package/dist/esm-legacy/priority-queue.mjs +193 -44
  48. package/dist/esm-legacy/queue.mjs +391 -2
  49. package/dist/esm-legacy/stack.mjs +92 -6
  50. package/dist/esm-legacy/trie.mjs +122 -28
  51. package/dist/types/common/error.d.ts +9 -0
  52. package/dist/types/common/index.d.ts +1 -1
  53. package/dist/types/data-structures/binary-tree/avl-tree.d.ts +98 -2
  54. package/dist/types/data-structures/binary-tree/binary-indexed-tree.d.ts +112 -0
  55. package/dist/types/data-structures/binary-tree/binary-tree.d.ts +214 -13
  56. package/dist/types/data-structures/binary-tree/bst.d.ts +294 -3
  57. package/dist/types/data-structures/binary-tree/red-black-tree.d.ts +155 -8
  58. package/dist/types/data-structures/binary-tree/segment-tree.d.ts +48 -0
  59. package/dist/types/data-structures/binary-tree/tree-map.d.ts +1370 -323
  60. package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +1329 -316
  61. package/dist/types/data-structures/binary-tree/tree-multi-set.d.ts +1116 -295
  62. package/dist/types/data-structures/binary-tree/tree-set.d.ts +1330 -326
  63. package/dist/types/data-structures/graph/directed-graph.d.ts +80 -0
  64. package/dist/types/data-structures/graph/undirected-graph.d.ts +72 -0
  65. package/dist/types/data-structures/hash/hash-map.d.ts +95 -6
  66. package/dist/types/data-structures/heap/heap.d.ts +154 -12
  67. package/dist/types/data-structures/linked-list/doubly-linked-list.d.ts +143 -0
  68. package/dist/types/data-structures/linked-list/singly-linked-list.d.ts +121 -1
  69. package/dist/types/data-structures/linked-list/skip-linked-list.d.ts +144 -0
  70. package/dist/types/data-structures/matrix/matrix.d.ts +64 -0
  71. package/dist/types/data-structures/queue/deque.d.ts +142 -0
  72. package/dist/types/data-structures/queue/queue.d.ts +109 -0
  73. package/dist/types/data-structures/stack/stack.d.ts +82 -2
  74. package/dist/types/data-structures/trie/trie.d.ts +96 -0
  75. package/dist/types/interfaces/binary-tree.d.ts +2 -3
  76. package/dist/types/types/data-structures/binary-tree/bst.d.ts +1 -0
  77. package/dist/types/types/data-structures/binary-tree/tree-map.d.ts +5 -0
  78. package/dist/types/types/data-structures/binary-tree/tree-multi-set.d.ts +4 -0
  79. package/dist/types/types/data-structures/binary-tree/tree-set.d.ts +4 -0
  80. package/dist/umd/data-structure-typed.js +8623 -2564
  81. package/dist/umd/data-structure-typed.min.js +5 -5
  82. package/docs-site-docusaurus/docs/api/classes/AVLTree.md +696 -194
  83. package/docs-site-docusaurus/docs/api/classes/AVLTreeNode.md +11 -11
  84. package/docs-site-docusaurus/docs/api/classes/AbstractGraph.md +71 -71
  85. package/docs-site-docusaurus/docs/api/classes/BST.md +639 -189
  86. package/docs-site-docusaurus/docs/api/classes/BSTNode.md +13 -13
  87. package/docs-site-docusaurus/docs/api/classes/BinaryIndexedTree.md +15 -15
  88. package/docs-site-docusaurus/docs/api/classes/BinaryTree.md +148 -160
  89. package/docs-site-docusaurus/docs/api/classes/BinaryTreeNode.md +13 -13
  90. package/docs-site-docusaurus/docs/api/classes/Deque.md +105 -91
  91. package/docs-site-docusaurus/docs/api/classes/DirectedGraph.md +82 -82
  92. package/docs-site-docusaurus/docs/api/classes/DoublyLinkedList.md +104 -74
  93. package/docs-site-docusaurus/docs/api/classes/DoublyLinkedListNode.md +8 -8
  94. package/docs-site-docusaurus/docs/api/classes/FibonacciHeap.md +12 -12
  95. package/docs-site-docusaurus/docs/api/classes/FibonacciHeapNode.md +1 -1
  96. package/docs-site-docusaurus/docs/api/classes/HashMap.md +51 -51
  97. package/docs-site-docusaurus/docs/api/classes/Heap.md +96 -85
  98. package/docs-site-docusaurus/docs/api/classes/IterableElementBase.md +25 -25
  99. package/docs-site-docusaurus/docs/api/classes/IterableEntryBase.md +33 -33
  100. package/docs-site-docusaurus/docs/api/classes/LinearBase.md +50 -50
  101. package/docs-site-docusaurus/docs/api/classes/LinearLinkedBase.md +55 -55
  102. package/docs-site-docusaurus/docs/api/classes/LinkedHashMap.md +55 -55
  103. package/docs-site-docusaurus/docs/api/classes/LinkedListNode.md +6 -6
  104. package/docs-site-docusaurus/docs/api/classes/LinkedListQueue.md +78 -78
  105. package/docs-site-docusaurus/docs/api/classes/MapGraph.md +82 -82
  106. package/docs-site-docusaurus/docs/api/classes/Matrix.md +31 -31
  107. package/docs-site-docusaurus/docs/api/classes/MaxHeap.md +104 -89
  108. package/docs-site-docusaurus/docs/api/classes/MaxPriorityQueue.md +104 -89
  109. package/docs-site-docusaurus/docs/api/classes/MinHeap.md +104 -89
  110. package/docs-site-docusaurus/docs/api/classes/MinPriorityQueue.md +104 -89
  111. package/docs-site-docusaurus/docs/api/classes/Navigator.md +5 -5
  112. package/docs-site-docusaurus/docs/api/classes/PriorityQueue.md +103 -88
  113. package/docs-site-docusaurus/docs/api/classes/Queue.md +112 -60
  114. package/docs-site-docusaurus/docs/api/classes/RedBlackTree.md +708 -206
  115. package/docs-site-docusaurus/docs/api/classes/SegmentTree.md +10 -10
  116. package/docs-site-docusaurus/docs/api/classes/SinglyLinkedList.md +79 -79
  117. package/docs-site-docusaurus/docs/api/classes/SinglyLinkedListNode.md +6 -6
  118. package/docs-site-docusaurus/docs/api/classes/SkipList.md +44 -44
  119. package/docs-site-docusaurus/docs/api/classes/Stack.md +42 -42
  120. package/docs-site-docusaurus/docs/api/classes/TreeMap.md +236 -33
  121. package/docs-site-docusaurus/docs/api/classes/TreeMultiMap.md +162 -46
  122. package/docs-site-docusaurus/docs/api/classes/TreeSet.md +232 -32
  123. package/docs-site-docusaurus/docs/api/classes/Trie.md +47 -47
  124. package/docs-site-docusaurus/docs/api/classes/TrieNode.md +8 -8
  125. package/docs-site-docusaurus/docs/api/classes/UndirectedGraph.md +81 -81
  126. package/docs-site-docusaurus/docs/guide/architecture.md +75 -5
  127. package/docs-site-docusaurus/docs/guide/concepts.md +53 -3
  128. package/docs-site-docusaurus/docs/guide/faq.md +233 -0
  129. package/docs-site-docusaurus/docs/guide/guides.md +43 -58
  130. package/docs-site-docusaurus/docs/guide/installation.md +2 -0
  131. package/docs-site-docusaurus/docs/guide/integrations.md +75 -176
  132. package/docs-site-docusaurus/docs/guide/overview.md +132 -11
  133. package/docs-site-docusaurus/docs/guide/performance.md +2 -0
  134. package/docs-site-docusaurus/docs/guide/quick-start.md +31 -0
  135. package/docs-site-docusaurus/docs/guide/use-cases/_category_.json +6 -0
  136. package/docs-site-docusaurus/docs/guide/use-cases/array-sort-alternative.md +158 -0
  137. package/docs-site-docusaurus/docs/guide/use-cases/heap-vs-sorting.md +92 -0
  138. package/docs-site-docusaurus/docs/guide/use-cases/map-vs-treemap.md +151 -0
  139. package/docs-site-docusaurus/docs/guide/use-cases/priority-queue-typescript.md +113 -0
  140. package/docs-site-docusaurus/docs/guide/use-cases/treemap-javascript.md +151 -0
  141. package/docs-site-docusaurus/docusaurus.config.ts +1 -1
  142. package/docs-site-docusaurus/src/pages/index.tsx +55 -2
  143. package/docs-site-docusaurus/static/llms.txt +37 -0
  144. package/docs-site-docusaurus/typedoc.json +1 -0
  145. package/llms.txt +37 -0
  146. package/package.json +65 -56
  147. package/src/common/error.ts +19 -1
  148. package/src/common/index.ts +1 -1
  149. package/src/data-structures/base/iterable-element-base.ts +3 -2
  150. package/src/data-structures/binary-tree/avl-tree.ts +99 -5
  151. package/src/data-structures/binary-tree/binary-indexed-tree.ts +102 -4
  152. package/src/data-structures/binary-tree/binary-tree.ts +239 -78
  153. package/src/data-structures/binary-tree/bst.ts +542 -13
  154. package/src/data-structures/binary-tree/red-black-tree.ts +155 -15
  155. package/src/data-structures/binary-tree/segment-tree.ts +42 -0
  156. package/src/data-structures/binary-tree/tree-map.ts +1223 -261
  157. package/src/data-structures/binary-tree/tree-multi-map.ts +939 -30
  158. package/src/data-structures/binary-tree/tree-multi-set.ts +746 -10
  159. package/src/data-structures/binary-tree/tree-set.ts +1018 -99
  160. package/src/data-structures/graph/abstract-graph.ts +2 -2
  161. package/src/data-structures/graph/directed-graph.ts +71 -1
  162. package/src/data-structures/graph/undirected-graph.ts +64 -1
  163. package/src/data-structures/hash/hash-map.ts +102 -16
  164. package/src/data-structures/heap/heap.ts +153 -23
  165. package/src/data-structures/heap/max-heap.ts +2 -2
  166. package/src/data-structures/linked-list/doubly-linked-list.ts +139 -0
  167. package/src/data-structures/linked-list/singly-linked-list.ts +106 -1
  168. package/src/data-structures/linked-list/skip-linked-list.ts +131 -5
  169. package/src/data-structures/matrix/matrix.ts +65 -9
  170. package/src/data-structures/priority-queue/max-priority-queue.ts +2 -2
  171. package/src/data-structures/queue/deque.ts +130 -0
  172. package/src/data-structures/queue/queue.ts +109 -0
  173. package/src/data-structures/stack/stack.ts +75 -5
  174. package/src/data-structures/trie/trie.ts +86 -2
  175. package/src/interfaces/binary-tree.ts +1 -9
  176. package/src/types/data-structures/binary-tree/bst.ts +1 -0
  177. package/src/types/data-structures/binary-tree/tree-map.ts +6 -0
  178. package/src/types/data-structures/binary-tree/tree-multi-set.ts +5 -0
  179. package/src/types/data-structures/binary-tree/tree-set.ts +5 -0
  180. package/.vitepress/cache/deps_temp_51f5f1b0/chunk-7OIKW5WK.js +0 -12984
  181. package/.vitepress/cache/deps_temp_51f5f1b0/package.json +0 -3
  182. package/.vitepress/cache/deps_temp_51f5f1b0/vitepress___@vue_devtools-api.js +0 -4505
  183. package/.vitepress/cache/deps_temp_51f5f1b0/vitepress___@vueuse_core.js +0 -9731
  184. package/.vitepress/cache/deps_temp_51f5f1b0/vue.js +0 -347
@@ -3,6 +3,12 @@ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { en
3
3
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
4
4
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
5
5
 
6
+ // src/common/error.ts
7
+ function raise(ErrorClass, message) {
8
+ throw new ErrorClass(message);
9
+ }
10
+ __name(raise, "raise");
11
+
6
12
  // src/data-structures/base/iterable-element-base.ts
7
13
  var _IterableElementBase = class _IterableElementBase {
8
14
  /**
@@ -25,7 +31,7 @@ var _IterableElementBase = class _IterableElementBase {
25
31
  if (options) {
26
32
  const { toElementFn } = options;
27
33
  if (typeof toElementFn === "function") this._toElementFn = toElementFn;
28
- else if (toElementFn) throw new TypeError("toElementFn must be a function type");
34
+ else if (toElementFn) raise(TypeError, "toElementFn must be a function type");
29
35
  }
30
36
  }
31
37
  /**
@@ -181,7 +187,7 @@ var _IterableElementBase = class _IterableElementBase {
181
187
  acc = initialValue;
182
188
  } else {
183
189
  const first = iter.next();
184
- if (first.done) throw new TypeError("Reduce of empty structure with no initial value");
190
+ if (first.done) raise(TypeError, "Reduce of empty structure with no initial value");
185
191
  acc = first.value;
186
192
  index = 1;
187
193
  }
@@ -272,6 +278,14 @@ var _Stack = class _Stack extends IterableElementBase {
272
278
 
273
279
 
274
280
 
281
+
282
+
283
+
284
+
285
+
286
+
287
+
288
+
275
289
 
276
290
 
277
291
 
@@ -328,6 +342,14 @@ var _Stack = class _Stack extends IterableElementBase {
328
342
 
329
343
 
330
344
 
345
+
346
+
347
+
348
+
349
+
350
+
351
+
352
+
331
353
 
332
354
 
333
355
 
@@ -373,6 +395,14 @@ var _Stack = class _Stack extends IterableElementBase {
373
395
 
374
396
 
375
397
 
398
+
399
+
400
+
401
+
402
+
403
+
404
+
405
+
376
406
 
377
407
 
378
408
 
@@ -418,6 +448,14 @@ var _Stack = class _Stack extends IterableElementBase {
418
448
 
419
449
 
420
450
 
451
+
452
+
453
+
454
+
455
+
456
+
457
+
458
+
421
459
 
422
460
 
423
461
 
@@ -472,6 +510,14 @@ var _Stack = class _Stack extends IterableElementBase {
472
510
 
473
511
 
474
512
 
513
+
514
+
515
+
516
+
517
+
518
+
519
+
520
+
475
521
 
476
522
 
477
523
 
@@ -541,6 +587,14 @@ var _Stack = class _Stack extends IterableElementBase {
541
587
 
542
588
 
543
589
 
590
+
591
+
592
+
593
+
594
+
595
+
596
+
597
+
544
598
 
545
599
 
546
600
 
@@ -558,18 +612,18 @@ var _Stack = class _Stack extends IterableElementBase {
558
612
  */
559
613
  delete(element) {
560
614
  const idx = this._indexOfByEquals(element);
561
- return this.deleteAt(idx);
615
+ return this.deleteAt(idx) !== void 0;
562
616
  }
563
617
  /**
564
618
  * Delete the element at an index.
565
619
  * @remarks Time O(N), Space O(1)
566
620
  * @param index - Zero-based index from the bottom.
567
- * @returns True if removed.
621
+ * @returns The removed element, or undefined if the index is out of range.
568
622
  */
569
623
  deleteAt(index) {
570
- if (index < 0 || index >= this.elements.length) return false;
624
+ if (index < 0 || index >= this.elements.length) return void 0;
571
625
  const spliced = this.elements.splice(index, 1);
572
- return spliced.length === 1;
626
+ return spliced[0];
573
627
  }
574
628
  /**
575
629
  * Delete the first element that satisfies a predicate.
@@ -610,6 +664,14 @@ var _Stack = class _Stack extends IterableElementBase {
610
664
 
611
665
 
612
666
 
667
+
668
+
669
+
670
+
671
+
672
+
673
+
674
+
613
675
 
614
676
 
615
677
 
@@ -652,6 +714,14 @@ var _Stack = class _Stack extends IterableElementBase {
652
714
 
653
715
 
654
716
 
717
+
718
+
719
+
720
+
721
+
722
+
723
+
724
+
655
725
 
656
726
 
657
727
 
@@ -700,6 +770,14 @@ var _Stack = class _Stack extends IterableElementBase {
700
770
 
701
771
 
702
772
 
773
+
774
+
775
+
776
+
777
+
778
+
779
+
780
+
703
781
 
704
782
 
705
783
 
@@ -768,6 +846,14 @@ var _Stack = class _Stack extends IterableElementBase {
768
846
 
769
847
 
770
848
 
849
+
850
+
851
+
852
+
853
+
854
+
855
+
856
+
771
857
 
772
858
 
773
859
 
@@ -3,6 +3,37 @@ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { en
3
3
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
4
4
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
5
5
 
6
+ // src/common/error.ts
7
+ function raise(ErrorClass, message) {
8
+ throw new ErrorClass(message);
9
+ }
10
+ __name(raise, "raise");
11
+ var ERR = {
12
+ // Range / index
13
+ indexOutOfRange: /* @__PURE__ */ __name((index, min, max, ctx) => `${ctx ? ctx + ": " : ""}Index ${index} is out of range [${min}, ${max}].`, "indexOutOfRange"),
14
+ invalidIndex: /* @__PURE__ */ __name((ctx) => `${ctx ? ctx + ": " : ""}Index must be an integer.`, "invalidIndex"),
15
+ // Type / argument
16
+ invalidArgument: /* @__PURE__ */ __name((reason, ctx) => `${ctx ? ctx + ": " : ""}${reason}`, "invalidArgument"),
17
+ comparatorRequired: /* @__PURE__ */ __name((ctx) => `${ctx ? ctx + ": " : ""}Comparator is required for non-number/non-string/non-Date keys.`, "comparatorRequired"),
18
+ invalidKey: /* @__PURE__ */ __name((reason, ctx) => `${ctx ? ctx + ": " : ""}${reason}`, "invalidKey"),
19
+ notAFunction: /* @__PURE__ */ __name((name, ctx) => `${ctx ? ctx + ": " : ""}${name} must be a function.`, "notAFunction"),
20
+ invalidEntry: /* @__PURE__ */ __name((ctx) => `${ctx ? ctx + ": " : ""}Each entry must be a [key, value] tuple.`, "invalidEntry"),
21
+ invalidNaN: /* @__PURE__ */ __name((ctx) => `${ctx ? ctx + ": " : ""}NaN is not a valid key.`, "invalidNaN"),
22
+ invalidDate: /* @__PURE__ */ __name((ctx) => `${ctx ? ctx + ": " : ""}Invalid Date key.`, "invalidDate"),
23
+ reduceEmpty: /* @__PURE__ */ __name((ctx) => `${ctx ? ctx + ": " : ""}Reduce of empty structure with no initial value.`, "reduceEmpty"),
24
+ callbackReturnType: /* @__PURE__ */ __name((expected, got, ctx) => `${ctx ? ctx + ": " : ""}Callback must return ${expected}; got ${got}.`, "callbackReturnType"),
25
+ // State / operation
26
+ invalidOperation: /* @__PURE__ */ __name((reason, ctx) => `${ctx ? ctx + ": " : ""}${reason}`, "invalidOperation"),
27
+ // Matrix
28
+ matrixDimensionMismatch: /* @__PURE__ */ __name((op) => `Matrix: Dimensions must be compatible for ${op}.`, "matrixDimensionMismatch"),
29
+ matrixSingular: /* @__PURE__ */ __name(() => "Matrix: Singular matrix, inverse does not exist.", "matrixSingular"),
30
+ matrixNotSquare: /* @__PURE__ */ __name(() => "Matrix: Must be square for inversion.", "matrixNotSquare"),
31
+ matrixNotRectangular: /* @__PURE__ */ __name(() => "Matrix: Must be rectangular for transposition.", "matrixNotRectangular"),
32
+ matrixRowMismatch: /* @__PURE__ */ __name((expected, got) => `Matrix: Expected row length ${expected}, but got ${got}.`, "matrixRowMismatch"),
33
+ // Order statistic
34
+ orderStatisticNotEnabled: /* @__PURE__ */ __name((method, ctx) => `${ctx ? ctx + ": " : ""}${method}() requires enableOrderStatistic: true.`, "orderStatisticNotEnabled")
35
+ };
36
+
6
37
  // src/data-structures/base/iterable-element-base.ts
7
38
  var _IterableElementBase = class _IterableElementBase {
8
39
  /**
@@ -25,7 +56,7 @@ var _IterableElementBase = class _IterableElementBase {
25
56
  if (options) {
26
57
  const { toElementFn } = options;
27
58
  if (typeof toElementFn === "function") this._toElementFn = toElementFn;
28
- else if (toElementFn) throw new TypeError("toElementFn must be a function type");
59
+ else if (toElementFn) raise(TypeError, "toElementFn must be a function type");
29
60
  }
30
61
  }
31
62
  /**
@@ -181,7 +212,7 @@ var _IterableElementBase = class _IterableElementBase {
181
212
  acc = initialValue;
182
213
  } else {
183
214
  const first = iter.next();
184
- if (first.done) throw new TypeError("Reduce of empty structure with no initial value");
215
+ if (first.done) raise(TypeError, "Reduce of empty structure with no initial value");
185
216
  acc = first.value;
186
217
  index = 1;
187
218
  }
@@ -225,31 +256,6 @@ var _IterableElementBase = class _IterableElementBase {
225
256
  __name(_IterableElementBase, "IterableElementBase");
226
257
  var IterableElementBase = _IterableElementBase;
227
258
 
228
- // src/common/error.ts
229
- var ERR = {
230
- // Range / index
231
- indexOutOfRange: /* @__PURE__ */ __name((index, min, max, ctx) => `${ctx ? ctx + ": " : ""}Index ${index} is out of range [${min}, ${max}].`, "indexOutOfRange"),
232
- invalidIndex: /* @__PURE__ */ __name((ctx) => `${ctx ? ctx + ": " : ""}Index must be an integer.`, "invalidIndex"),
233
- // Type / argument
234
- invalidArgument: /* @__PURE__ */ __name((reason, ctx) => `${ctx ? ctx + ": " : ""}${reason}`, "invalidArgument"),
235
- comparatorRequired: /* @__PURE__ */ __name((ctx) => `${ctx ? ctx + ": " : ""}Comparator is required for non-number/non-string/non-Date keys.`, "comparatorRequired"),
236
- invalidKey: /* @__PURE__ */ __name((reason, ctx) => `${ctx ? ctx + ": " : ""}${reason}`, "invalidKey"),
237
- notAFunction: /* @__PURE__ */ __name((name, ctx) => `${ctx ? ctx + ": " : ""}${name} must be a function.`, "notAFunction"),
238
- invalidEntry: /* @__PURE__ */ __name((ctx) => `${ctx ? ctx + ": " : ""}Each entry must be a [key, value] tuple.`, "invalidEntry"),
239
- invalidNaN: /* @__PURE__ */ __name((ctx) => `${ctx ? ctx + ": " : ""}NaN is not a valid key.`, "invalidNaN"),
240
- invalidDate: /* @__PURE__ */ __name((ctx) => `${ctx ? ctx + ": " : ""}Invalid Date key.`, "invalidDate"),
241
- reduceEmpty: /* @__PURE__ */ __name((ctx) => `${ctx ? ctx + ": " : ""}Reduce of empty structure with no initial value.`, "reduceEmpty"),
242
- callbackReturnType: /* @__PURE__ */ __name((expected, got, ctx) => `${ctx ? ctx + ": " : ""}Callback must return ${expected}; got ${got}.`, "callbackReturnType"),
243
- // State / operation
244
- invalidOperation: /* @__PURE__ */ __name((reason, ctx) => `${ctx ? ctx + ": " : ""}${reason}`, "invalidOperation"),
245
- // Matrix
246
- matrixDimensionMismatch: /* @__PURE__ */ __name((op) => `Matrix: Dimensions must be compatible for ${op}.`, "matrixDimensionMismatch"),
247
- matrixSingular: /* @__PURE__ */ __name(() => "Matrix: Singular matrix, inverse does not exist.", "matrixSingular"),
248
- matrixNotSquare: /* @__PURE__ */ __name(() => "Matrix: Must be square for inversion.", "matrixNotSquare"),
249
- matrixNotRectangular: /* @__PURE__ */ __name(() => "Matrix: Must be rectangular for transposition.", "matrixNotRectangular"),
250
- matrixRowMismatch: /* @__PURE__ */ __name((expected, got) => `Matrix: Expected row length ${expected}, but got ${got}.`, "matrixRowMismatch")
251
- };
252
-
253
259
  // src/data-structures/trie/trie.ts
254
260
  var _TrieNode = class _TrieNode {
255
261
  /**
@@ -399,6 +405,14 @@ var _Trie = class _Trie extends IterableElementBase {
399
405
 
400
406
 
401
407
 
408
+
409
+
410
+
411
+
412
+
413
+
414
+
415
+
402
416
 
403
417
 
404
418
 
@@ -467,6 +481,14 @@ var _Trie = class _Trie extends IterableElementBase {
467
481
 
468
482
 
469
483
 
484
+
485
+
486
+
487
+
488
+
489
+
490
+
491
+
470
492
 
471
493
 
472
494
 
@@ -522,6 +544,14 @@ var _Trie = class _Trie extends IterableElementBase {
522
544
 
523
545
 
524
546
 
547
+
548
+
549
+
550
+
551
+
552
+
553
+
554
+
525
555
 
526
556
 
527
557
 
@@ -572,6 +602,14 @@ var _Trie = class _Trie extends IterableElementBase {
572
602
 
573
603
 
574
604
 
605
+
606
+
607
+
608
+
609
+
610
+
611
+
612
+
575
613
 
576
614
 
577
615
 
@@ -614,6 +652,14 @@ var _Trie = class _Trie extends IterableElementBase {
614
652
 
615
653
 
616
654
 
655
+
656
+
657
+
658
+
659
+
660
+
661
+
662
+
617
663
 
618
664
 
619
665
 
@@ -660,6 +706,14 @@ var _Trie = class _Trie extends IterableElementBase {
660
706
 
661
707
 
662
708
 
709
+
710
+
711
+
712
+
713
+
714
+
715
+
716
+
663
717
 
664
718
 
665
719
 
@@ -788,6 +842,14 @@ var _Trie = class _Trie extends IterableElementBase {
788
842
 
789
843
 
790
844
 
845
+
846
+
847
+
848
+
849
+
850
+
851
+
852
+
791
853
 
792
854
 
793
855
 
@@ -860,6 +922,14 @@ var _Trie = class _Trie extends IterableElementBase {
860
922
 
861
923
 
862
924
 
925
+
926
+
927
+
928
+
929
+
930
+
931
+
932
+
863
933
 
864
934
 
865
935
 
@@ -915,6 +985,14 @@ var _Trie = class _Trie extends IterableElementBase {
915
985
 
916
986
 
917
987
 
988
+
989
+
990
+
991
+
992
+
993
+
994
+
995
+
918
996
 
919
997
 
920
998
 
@@ -988,6 +1066,14 @@ var _Trie = class _Trie extends IterableElementBase {
988
1066
 
989
1067
 
990
1068
 
1069
+
1070
+
1071
+
1072
+
1073
+
1074
+
1075
+
1076
+
991
1077
 
992
1078
 
993
1079
 
@@ -1034,6 +1120,14 @@ var _Trie = class _Trie extends IterableElementBase {
1034
1120
 
1035
1121
 
1036
1122
 
1123
+
1124
+
1125
+
1126
+
1127
+
1128
+
1129
+
1130
+
1037
1131
 
1038
1132
 
1039
1133
 
@@ -1066,7 +1160,7 @@ var _Trie = class _Trie extends IterableElementBase {
1066
1160
  for (const x of this) {
1067
1161
  const v = thisArg === void 0 ? callback(x, i++, this) : callback.call(thisArg, x, i++, this);
1068
1162
  if (typeof v !== "string") {
1069
- throw new TypeError(ERR.callbackReturnType("string", typeof v, "Trie.map"));
1163
+ raise(TypeError, ERR.callbackReturnType("string", typeof v, "Trie.map"));
1070
1164
  }
1071
1165
  newTrie.add(v);
1072
1166
  }
@@ -1,3 +1,11 @@
1
+ /**
2
+ * Centralized error dispatch.
3
+ * All library errors go through this function for consistent messaging and easy grep.
4
+ * @remarks Always throws — data structure errors are never recoverable.
5
+ * @param ErrorClass - The error constructor (Error, TypeError, RangeError, etc.)
6
+ * @param message - The error message.
7
+ */
8
+ export declare function raise(ErrorClass: new (msg: string) => Error, message: string): never;
1
9
  /**
2
10
  * Centralized error message templates.
3
11
  * Keep using native Error/TypeError/RangeError — this only standardizes messages.
@@ -20,4 +28,5 @@ export declare const ERR: {
20
28
  readonly matrixNotSquare: () => string;
21
29
  readonly matrixNotRectangular: () => string;
22
30
  readonly matrixRowMismatch: (expected: number, got: number) => string;
31
+ readonly orderStatisticNotEnabled: (method: string, ctx?: string) => string;
23
32
  };
@@ -1,4 +1,4 @@
1
- export { ERR } from './error';
1
+ export { ERR, raise } from './error';
2
2
  export declare enum DFSOperation {
3
3
  VISIT = 0,
4
4
  PROCESS = 1
@@ -6,7 +6,7 @@
6
6
  * @license MIT License
7
7
  */
8
8
  import { BST } from './bst';
9
- import type { AVLTreeOptions, BinaryTreeDeleteResult, BinaryTreeOptions, BSTNOptKeyOrNode, EntryCallback, FamilyPosition, IterationType, RBTNColor } from '../../types';
9
+ import type { AVLTreeOptions, BinaryTreeOptions, BSTNOptKeyOrNode, EntryCallback, FamilyPosition, IterationType, RBTNColor } from '../../types';
10
10
  import { IBinaryTree } from '../../interfaces';
11
11
  /**
12
12
  * Represents a Node in an AVL (Adelson-Velsky and Landis) Tree.
@@ -362,6 +362,38 @@ export declare class AVLTree<K = any, V = any, R = any> extends BST<K, V, R> imp
362
362
 
363
363
 
364
364
 
365
+
366
+
367
+
368
+
369
+
370
+
371
+
372
+
373
+
374
+
375
+
376
+
377
+
378
+
379
+
380
+
381
+
382
+
383
+
384
+
385
+
386
+
387
+
388
+
389
+
390
+
391
+
392
+
393
+
394
+
395
+
396
+
365
397
 
366
398
 
367
399
 
@@ -469,6 +501,30 @@ export declare class AVLTree<K = any, V = any, R = any> extends BST<K, V, R> imp
469
501
 
470
502
 
471
503
 
504
+
505
+
506
+
507
+
508
+
509
+
510
+
511
+
512
+
513
+
514
+
515
+
516
+
517
+
518
+
519
+
520
+
521
+
522
+
523
+
524
+
525
+
526
+
527
+
472
528
 
473
529
 
474
530
 
@@ -497,7 +553,7 @@ export declare class AVLTree<K = any, V = any, R = any> extends BST<K, V, R> imp
497
553
  * console.log(avl.has(3)); // false;
498
554
  * console.log(avl.size); // 6;
499
555
  */
500
- delete(keyNodeOrEntry: K | AVLTreeNode<K, V> | [K | null | undefined, V | undefined] | null | undefined): BinaryTreeDeleteResult<AVLTreeNode<K, V>>[];
556
+ delete(keyNodeOrEntry: K | AVLTreeNode<K, V> | [K | null | undefined, V | undefined] | null | undefined): boolean;
501
557
  /**
502
558
  * Rebuilds the tree to be perfectly balanced.
503
559
  * @remarks AVL trees are already height-balanced, but this makes them *perfectly* balanced (minimal height and all leaves at N or N-1).
@@ -540,6 +596,22 @@ export declare class AVLTree<K = any, V = any, R = any> extends BST<K, V, R> imp
540
596
 
541
597
 
542
598
 
599
+
600
+
601
+
602
+
603
+
604
+
605
+
606
+
607
+
608
+
609
+
610
+
611
+
612
+
613
+
614
+
543
615
 
544
616
 
545
617
 
@@ -639,6 +711,30 @@ export declare class AVLTree<K = any, V = any, R = any> extends BST<K, V, R> imp
639
711
 
640
712
 
641
713
 
714
+
715
+
716
+
717
+
718
+
719
+
720
+
721
+
722
+
723
+
724
+
725
+
726
+
727
+
728
+
729
+
730
+
731
+
732
+
733
+
734
+
735
+
736
+
737
+
642
738
 
643
739
 
644
740