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
@@ -4,6 +4,10 @@ var __defProp = Object.defineProperty;
4
4
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
5
5
 
6
6
  // src/common/error.ts
7
+ function raise(ErrorClass, message) {
8
+ throw new ErrorClass(message);
9
+ }
10
+ __name(raise, "raise");
7
11
  var ERR = {
8
12
  // Range / index
9
13
  indexOutOfRange: /* @__PURE__ */ __name((index, min, max, ctx) => `${ctx ? ctx + ": " : ""}Index ${index} is out of range [${min}, ${max}].`, "indexOutOfRange"),
@@ -25,7 +29,9 @@ var ERR = {
25
29
  matrixSingular: /* @__PURE__ */ __name(() => "Matrix: Singular matrix, inverse does not exist.", "matrixSingular"),
26
30
  matrixNotSquare: /* @__PURE__ */ __name(() => "Matrix: Must be square for inversion.", "matrixNotSquare"),
27
31
  matrixNotRectangular: /* @__PURE__ */ __name(() => "Matrix: Must be rectangular for transposition.", "matrixNotRectangular"),
28
- matrixRowMismatch: /* @__PURE__ */ __name((expected, got) => `Matrix: Expected row length ${expected}, but got ${got}.`, "matrixRowMismatch")
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")
29
35
  };
30
36
 
31
37
  // src/data-structures/matrix/matrix.ts
@@ -138,6 +144,14 @@ var Matrix = class _Matrix {
138
144
 
139
145
 
140
146
 
147
+
148
+
149
+
150
+
151
+
152
+
153
+
154
+
141
155
 
142
156
 
143
157
 
@@ -202,6 +216,14 @@ var Matrix = class _Matrix {
202
216
 
203
217
 
204
218
 
219
+
220
+
221
+
222
+
223
+
224
+
225
+
226
+
205
227
 
206
228
 
207
229
 
@@ -262,6 +284,14 @@ var Matrix = class _Matrix {
262
284
 
263
285
 
264
286
 
287
+
288
+
289
+
290
+
291
+
292
+
293
+
294
+
265
295
 
266
296
 
267
297
 
@@ -296,7 +326,7 @@ var Matrix = class _Matrix {
296
326
  */
297
327
  add(matrix) {
298
328
  if (!this.isMatchForCalculate(matrix)) {
299
- throw new Error(ERR.matrixDimensionMismatch("addition"));
329
+ raise(Error, ERR.matrixDimensionMismatch("addition"));
300
330
  }
301
331
  const resultData = [];
302
332
  for (let i = 0; i < this.rows; i++) {
@@ -344,6 +374,14 @@ var Matrix = class _Matrix {
344
374
 
345
375
 
346
376
 
377
+
378
+
379
+
380
+
381
+
382
+
383
+
384
+
347
385
 
348
386
 
349
387
 
@@ -362,7 +400,7 @@ var Matrix = class _Matrix {
362
400
  */
363
401
  subtract(matrix) {
364
402
  if (!this.isMatchForCalculate(matrix)) {
365
- throw new Error(ERR.matrixDimensionMismatch("subtraction"));
403
+ raise(Error, ERR.matrixDimensionMismatch("subtraction"));
366
404
  }
367
405
  const resultData = [];
368
406
  for (let i = 0; i < this.rows; i++) {
@@ -409,6 +447,14 @@ var Matrix = class _Matrix {
409
447
 
410
448
 
411
449
 
450
+
451
+
452
+
453
+
454
+
455
+
456
+
457
+
412
458
 
413
459
 
414
460
 
@@ -443,7 +489,7 @@ var Matrix = class _Matrix {
443
489
  */
444
490
  multiply(matrix) {
445
491
  if (this.cols !== matrix.rows) {
446
- throw new Error(ERR.matrixDimensionMismatch("multiplication (A.cols must equal B.rows)"));
492
+ raise(Error, ERR.matrixDimensionMismatch("multiplication (A.cols must equal B.rows)"));
447
493
  }
448
494
  const resultData = [];
449
495
  for (let i = 0; i < this.rows; i++) {
@@ -496,6 +542,14 @@ var Matrix = class _Matrix {
496
542
 
497
543
 
498
544
 
545
+
546
+
547
+
548
+
549
+
550
+
551
+
552
+
499
553
 
500
554
 
501
555
 
@@ -527,7 +581,7 @@ var Matrix = class _Matrix {
527
581
  */
528
582
  transpose() {
529
583
  if (this.data.some((row) => row.length !== this.cols)) {
530
- throw new Error(ERR.matrixNotRectangular());
584
+ raise(Error, ERR.matrixNotRectangular());
531
585
  }
532
586
  const resultData = [];
533
587
  for (let j = 0; j < this.cols; j++) {
@@ -570,6 +624,14 @@ var Matrix = class _Matrix {
570
624
 
571
625
 
572
626
 
627
+
628
+
629
+
630
+
631
+
632
+
633
+
634
+
573
635
 
574
636
 
575
637
 
@@ -593,7 +655,7 @@ var Matrix = class _Matrix {
593
655
  */
594
656
  inverse() {
595
657
  if (this.rows !== this.cols) {
596
- throw new Error(ERR.matrixNotSquare());
658
+ raise(Error, ERR.matrixNotSquare());
597
659
  }
598
660
  const augmentedMatrixData = [];
599
661
  for (let i = 0; i < this.rows; i++) {
@@ -615,12 +677,12 @@ var Matrix = class _Matrix {
615
677
  pivotRow++;
616
678
  }
617
679
  if (pivotRow === this.rows) {
618
- throw new Error(ERR.matrixSingular());
680
+ raise(Error, ERR.matrixSingular());
619
681
  }
620
682
  augmentedMatrix._swapRows(i, pivotRow);
621
683
  const pivotElement = augmentedMatrix.get(i, i) ?? 1;
622
684
  if (pivotElement === 0) {
623
- throw new Error(ERR.matrixSingular());
685
+ raise(Error, ERR.matrixSingular());
624
686
  }
625
687
  augmentedMatrix._scaleRow(i, 1 / pivotElement);
626
688
  for (let j = 0; j < this.rows; j++) {
@@ -669,6 +731,14 @@ var Matrix = class _Matrix {
669
731
 
670
732
 
671
733
 
734
+
735
+
736
+
737
+
738
+
739
+
740
+
741
+
672
742
 
673
743
 
674
744
 
@@ -687,7 +757,7 @@ var Matrix = class _Matrix {
687
757
  */
688
758
  dot(matrix) {
689
759
  if (this.cols !== matrix.rows) {
690
- throw new Error(ERR.matrixDimensionMismatch("dot product (A.cols must equal B.rows)"));
760
+ raise(Error, ERR.matrixDimensionMismatch("dot product (A.cols must equal B.rows)"));
691
761
  }
692
762
  const resultData = [];
693
763
  for (let i = 0; i < this.rows; i++) {
@@ -3,6 +3,37 @@
3
3
  var __defProp = Object.defineProperty;
4
4
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
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 {
8
39
  static {
@@ -21,7 +52,7 @@ var IterableElementBase = class {
21
52
  if (options) {
22
53
  const { toElementFn } = options;
23
54
  if (typeof toElementFn === "function") this._toElementFn = toElementFn;
24
- else if (toElementFn) throw new TypeError("toElementFn must be a function type");
55
+ else if (toElementFn) raise(TypeError, "toElementFn must be a function type");
25
56
  }
26
57
  }
27
58
  /**
@@ -184,7 +215,7 @@ var IterableElementBase = class {
184
215
  acc = initialValue;
185
216
  } else {
186
217
  const first = iter.next();
187
- if (first.done) throw new TypeError("Reduce of empty structure with no initial value");
218
+ if (first.done) raise(TypeError, "Reduce of empty structure with no initial value");
188
219
  acc = first.value;
189
220
  index = 1;
190
221
  }
@@ -226,31 +257,6 @@ var IterableElementBase = class {
226
257
  }
227
258
  };
228
259
 
229
- // src/common/error.ts
230
- var ERR = {
231
- // Range / index
232
- indexOutOfRange: /* @__PURE__ */ __name((index, min, max, ctx) => `${ctx ? ctx + ": " : ""}Index ${index} is out of range [${min}, ${max}].`, "indexOutOfRange"),
233
- invalidIndex: /* @__PURE__ */ __name((ctx) => `${ctx ? ctx + ": " : ""}Index must be an integer.`, "invalidIndex"),
234
- // Type / argument
235
- invalidArgument: /* @__PURE__ */ __name((reason, ctx) => `${ctx ? ctx + ": " : ""}${reason}`, "invalidArgument"),
236
- comparatorRequired: /* @__PURE__ */ __name((ctx) => `${ctx ? ctx + ": " : ""}Comparator is required for non-number/non-string/non-Date keys.`, "comparatorRequired"),
237
- invalidKey: /* @__PURE__ */ __name((reason, ctx) => `${ctx ? ctx + ": " : ""}${reason}`, "invalidKey"),
238
- notAFunction: /* @__PURE__ */ __name((name, ctx) => `${ctx ? ctx + ": " : ""}${name} must be a function.`, "notAFunction"),
239
- invalidEntry: /* @__PURE__ */ __name((ctx) => `${ctx ? ctx + ": " : ""}Each entry must be a [key, value] tuple.`, "invalidEntry"),
240
- invalidNaN: /* @__PURE__ */ __name((ctx) => `${ctx ? ctx + ": " : ""}NaN is not a valid key.`, "invalidNaN"),
241
- invalidDate: /* @__PURE__ */ __name((ctx) => `${ctx ? ctx + ": " : ""}Invalid Date key.`, "invalidDate"),
242
- reduceEmpty: /* @__PURE__ */ __name((ctx) => `${ctx ? ctx + ": " : ""}Reduce of empty structure with no initial value.`, "reduceEmpty"),
243
- callbackReturnType: /* @__PURE__ */ __name((expected, got, ctx) => `${ctx ? ctx + ": " : ""}Callback must return ${expected}; got ${got}.`, "callbackReturnType"),
244
- // State / operation
245
- invalidOperation: /* @__PURE__ */ __name((reason, ctx) => `${ctx ? ctx + ": " : ""}${reason}`, "invalidOperation"),
246
- // Matrix
247
- matrixDimensionMismatch: /* @__PURE__ */ __name((op) => `Matrix: Dimensions must be compatible for ${op}.`, "matrixDimensionMismatch"),
248
- matrixSingular: /* @__PURE__ */ __name(() => "Matrix: Singular matrix, inverse does not exist.", "matrixSingular"),
249
- matrixNotSquare: /* @__PURE__ */ __name(() => "Matrix: Must be square for inversion.", "matrixNotSquare"),
250
- matrixNotRectangular: /* @__PURE__ */ __name(() => "Matrix: Must be rectangular for transposition.", "matrixNotRectangular"),
251
- matrixRowMismatch: /* @__PURE__ */ __name((expected, got) => `Matrix: Expected row length ${expected}, but got ${got}.`, "matrixRowMismatch")
252
- };
253
-
254
260
  // src/data-structures/heap/heap.ts
255
261
  var Heap = class _Heap extends IterableElementBase {
256
262
  static {
@@ -307,6 +313,14 @@ var Heap = class _Heap extends IterableElementBase {
307
313
 
308
314
 
309
315
 
316
+
317
+
318
+
319
+
320
+
321
+
322
+
323
+
310
324
 
311
325
 
312
326
 
@@ -364,7 +378,7 @@ var Heap = class _Heap extends IterableElementBase {
364
378
  }
365
379
  /**
366
380
  * Insert an element.
367
- * @remarks Time O(1) amortized, Space O(1)
381
+ * @remarks Time O(log N) amortized, Space O(1)
368
382
  * @param element - Element to insert.
369
383
  * @returns True.
370
384
 
@@ -389,6 +403,14 @@ var Heap = class _Heap extends IterableElementBase {
389
403
 
390
404
 
391
405
 
406
+
407
+
408
+
409
+
410
+
411
+
412
+
413
+
392
414
 
393
415
 
394
416
 
@@ -442,6 +464,14 @@ var Heap = class _Heap extends IterableElementBase {
442
464
 
443
465
 
444
466
 
467
+
468
+
469
+
470
+
471
+
472
+
473
+
474
+
445
475
 
446
476
 
447
477
 
@@ -498,6 +528,13 @@ var Heap = class _Heap extends IterableElementBase {
498
528
 
499
529
 
500
530
 
531
+
532
+
533
+
534
+
535
+
536
+
537
+
501
538
 
502
539
 
503
540
 
@@ -506,6 +543,34 @@ var Heap = class _Heap extends IterableElementBase {
506
543
 
507
544
 
508
545
 
546
+ * @example
547
+ * // Heap with custom comparator (MaxHeap behavior)
548
+ * interface Task {
549
+ * id: number;
550
+ * priority: number;
551
+ * name: string;
552
+ * }
553
+ *
554
+ * // Custom comparator for max heap behavior (higher priority first)
555
+ * const tasks: Task[] = [
556
+ * { id: 1, priority: 5, name: 'Email' },
557
+ * { id: 2, priority: 3, name: 'Chat' },
558
+ * { id: 3, priority: 8, name: 'Alert' }
559
+ * ];
560
+ *
561
+ * const maxHeap = new Heap(tasks, {
562
+ * comparator: (a: Task, b: Task) => b.priority - a.priority
563
+ * });
564
+ *
565
+ * console.log(maxHeap.size); // 3;
566
+ *
567
+ * // Peek returns highest priority task
568
+ * const topTask = maxHeap.peek();
569
+ * console.log(topTask?.priority); // 8;
570
+ * console.log(topTask?.name); // 'Alert';
571
+ */
572
+ /**
573
+ * @deprecated Use `pop` instead. Will be removed in a future major version.
509
574
  * @example
510
575
  * // Heap with custom comparator (MaxHeap behavior)
511
576
  * interface Task {
@@ -533,6 +598,14 @@ var Heap = class _Heap extends IterableElementBase {
533
598
  * console.log(topTask?.name); // 'Alert';
534
599
  */
535
600
  poll() {
601
+ return this.pop();
602
+ }
603
+ /**
604
+ * Remove and return the top element (min or max depending on comparator).
605
+ * @remarks Time O(log N) amortized, Space O(1)
606
+ * @returns The removed top element, or undefined if empty.
607
+ */
608
+ pop() {
536
609
  if (this.elements.length === 0) return;
537
610
  const value = this.elements[0];
538
611
  const last = this.elements.pop();
@@ -568,6 +641,14 @@ var Heap = class _Heap extends IterableElementBase {
568
641
 
569
642
 
570
643
 
644
+
645
+
646
+
647
+
648
+
649
+
650
+
651
+
571
652
 
572
653
 
573
654
 
@@ -664,6 +745,14 @@ var Heap = class _Heap extends IterableElementBase {
664
745
 
665
746
 
666
747
 
748
+
749
+
750
+
751
+
752
+
753
+
754
+
755
+
667
756
 
668
757
 
669
758
 
@@ -707,6 +796,14 @@ var Heap = class _Heap extends IterableElementBase {
707
796
 
708
797
 
709
798
 
799
+
800
+
801
+
802
+
803
+
804
+
805
+
806
+
710
807
 
711
808
 
712
809
 
@@ -725,16 +822,6 @@ var Heap = class _Heap extends IterableElementBase {
725
822
  clear() {
726
823
  this._elements = [];
727
824
  }
728
- /**
729
- * Replace the backing array and rebuild the heap.
730
- * @remarks Time O(N), Space O(N)
731
- * @param elements - Iterable used to refill the heap.
732
- * @returns Array of per-node results from fixing steps.
733
- */
734
- refill(elements) {
735
- this._elements = Array.from(elements);
736
- return this.fix();
737
- }
738
825
  /**
739
826
  * Check if an equal element exists in the heap.
740
827
  * @remarks Time O(N), Space O(1)
@@ -753,6 +840,14 @@ var Heap = class _Heap extends IterableElementBase {
753
840
 
754
841
 
755
842
 
843
+
844
+
845
+
846
+
847
+
848
+
849
+
850
+
756
851
 
757
852
 
758
853
 
@@ -796,6 +891,14 @@ var Heap = class _Heap extends IterableElementBase {
796
891
 
797
892
 
798
893
 
894
+
895
+
896
+
897
+
898
+
899
+
900
+
901
+
799
902
 
800
903
 
801
904
 
@@ -821,7 +924,7 @@ var Heap = class _Heap extends IterableElementBase {
821
924
  }
822
925
  if (index < 0) return false;
823
926
  if (index === 0) {
824
- this.poll();
927
+ this.pop();
825
928
  } else if (index === this.elements.length - 1) {
826
929
  this.elements.pop();
827
930
  } else {
@@ -831,13 +934,19 @@ var Heap = class _Heap extends IterableElementBase {
831
934
  }
832
935
  return true;
833
936
  }
937
+ /**
938
+ * @deprecated Use `deleteWhere` instead. Will be removed in a future major version.
939
+ */
940
+ deleteBy(predicate) {
941
+ return this.deleteWhere(predicate);
942
+ }
834
943
  /**
835
944
  * Delete the first element that matches a predicate.
836
945
  * @remarks Time O(N), Space O(1)
837
946
  * @param predicate - Function (element, index, heap) → boolean.
838
947
  * @returns True if an element was removed.
839
948
  */
840
- deleteBy(predicate) {
949
+ deleteWhere(predicate) {
841
950
  let idx = -1;
842
951
  for (let i = 0; i < this.elements.length; i++) {
843
952
  if (predicate(this.elements[i], i, this)) {
@@ -847,7 +956,7 @@ var Heap = class _Heap extends IterableElementBase {
847
956
  }
848
957
  if (idx < 0) return false;
849
958
  if (idx === 0) {
850
- this.poll();
959
+ this.pop();
851
960
  } else if (idx === this.elements.length - 1) {
852
961
  this.elements.pop();
853
962
  } else {
@@ -885,6 +994,14 @@ var Heap = class _Heap extends IterableElementBase {
885
994
 
886
995
 
887
996
 
997
+
998
+
999
+
1000
+
1001
+
1002
+
1003
+
1004
+
888
1005
 
889
1006
 
890
1007
 
@@ -961,6 +1078,14 @@ var Heap = class _Heap extends IterableElementBase {
961
1078
 
962
1079
 
963
1080
 
1081
+
1082
+
1083
+
1084
+
1085
+
1086
+
1087
+
1088
+
964
1089
 
965
1090
 
966
1091
 
@@ -1010,6 +1135,14 @@ var Heap = class _Heap extends IterableElementBase {
1010
1135
 
1011
1136
 
1012
1137
 
1138
+
1139
+
1140
+
1141
+
1142
+
1143
+
1144
+
1145
+
1013
1146
 
1014
1147
 
1015
1148
 
@@ -1058,6 +1191,14 @@ var Heap = class _Heap extends IterableElementBase {
1058
1191
 
1059
1192
 
1060
1193
 
1194
+
1195
+
1196
+
1197
+
1198
+
1199
+
1200
+
1201
+
1061
1202
 
1062
1203
 
1063
1204
 
@@ -1113,6 +1254,14 @@ var Heap = class _Heap extends IterableElementBase {
1113
1254
 
1114
1255
 
1115
1256
 
1257
+
1258
+
1259
+
1260
+
1261
+
1262
+
1263
+
1264
+
1116
1265
 
1117
1266
 
1118
1267
 
@@ -1130,7 +1279,7 @@ var Heap = class _Heap extends IterableElementBase {
1130
1279
  */
1131
1280
  map(callback, options, thisArg) {
1132
1281
  const { comparator, toElementFn, ...rest } = options ?? {};
1133
- if (!comparator) throw new TypeError(ERR.comparatorRequired("Heap.map"));
1282
+ if (!comparator) raise(TypeError, ERR.comparatorRequired("Heap.map"));
1134
1283
  const out = this._createLike([], { ...rest, comparator, toElementFn });
1135
1284
  let i = 0;
1136
1285
  for (const x of this) {
@@ -1157,7 +1306,7 @@ var Heap = class _Heap extends IterableElementBase {
1157
1306
  }
1158
1307
  _DEFAULT_COMPARATOR = /* @__PURE__ */ __name((a, b) => {
1159
1308
  if (typeof a === "object" || typeof b === "object") {
1160
- throw new TypeError(ERR.comparatorRequired("Heap"));
1309
+ raise(TypeError, ERR.comparatorRequired("Heap"));
1161
1310
  }
1162
1311
  if (a > b) return 1;
1163
1312
  if (a < b) return -1;
@@ -1282,7 +1431,7 @@ var MaxPriorityQueue = class extends PriorityQueue {
1282
1431
  super(elements, {
1283
1432
  comparator: /* @__PURE__ */ __name((a, b) => {
1284
1433
  if (typeof a === "object" || typeof b === "object") {
1285
- throw new TypeError(ERR.comparatorRequired("MaxPriorityQueue"));
1434
+ raise(TypeError, ERR.comparatorRequired("MaxPriorityQueue"));
1286
1435
  }
1287
1436
  if (a < b) return 1;
1288
1437
  if (a > b) return -1;