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
@@ -23,6 +23,10 @@ var arrayRemove = /* @__PURE__ */ __name(function(array, predicate) {
23
23
  }, "arrayRemove");
24
24
 
25
25
  // src/common/error.ts
26
+ function raise(ErrorClass, message) {
27
+ throw new ErrorClass(message);
28
+ }
29
+ __name(raise, "raise");
26
30
  var ERR = {
27
31
  // Range / index
28
32
  indexOutOfRange: /* @__PURE__ */ __name((index, min, max, ctx) => `${ctx ? ctx + ": " : ""}Index ${index} is out of range [${min}, ${max}].`, "indexOutOfRange"),
@@ -44,7 +48,9 @@ var ERR = {
44
48
  matrixSingular: /* @__PURE__ */ __name(() => "Matrix: Singular matrix, inverse does not exist.", "matrixSingular"),
45
49
  matrixNotSquare: /* @__PURE__ */ __name(() => "Matrix: Must be square for inversion.", "matrixNotSquare"),
46
50
  matrixNotRectangular: /* @__PURE__ */ __name(() => "Matrix: Must be rectangular for transposition.", "matrixNotRectangular"),
47
- matrixRowMismatch: /* @__PURE__ */ __name((expected, got) => `Matrix: Expected row length ${expected}, but got ${got}.`, "matrixRowMismatch")
51
+ matrixRowMismatch: /* @__PURE__ */ __name((expected, got) => `Matrix: Expected row length ${expected}, but got ${got}.`, "matrixRowMismatch"),
52
+ // Order statistic
53
+ orderStatisticNotEnabled: /* @__PURE__ */ __name((method, ctx) => `${ctx ? ctx + ": " : ""}${method}() requires enableOrderStatistic: true.`, "orderStatisticNotEnabled")
48
54
  };
49
55
 
50
56
  // src/data-structures/base/iterable-entry-base.ts
@@ -247,7 +253,7 @@ var IterableElementBase = class {
247
253
  if (options) {
248
254
  const { toElementFn } = options;
249
255
  if (typeof toElementFn === "function") this._toElementFn = toElementFn;
250
- else if (toElementFn) throw new TypeError("toElementFn must be a function type");
256
+ else if (toElementFn) raise(TypeError, "toElementFn must be a function type");
251
257
  }
252
258
  }
253
259
  /**
@@ -410,7 +416,7 @@ var IterableElementBase = class {
410
416
  acc = initialValue;
411
417
  } else {
412
418
  const first = iter.next();
413
- if (first.done) throw new TypeError("Reduce of empty structure with no initial value");
419
+ if (first.done) raise(TypeError, "Reduce of empty structure with no initial value");
414
420
  acc = first.value;
415
421
  index = 1;
416
422
  }
@@ -701,6 +707,14 @@ var Heap = class _Heap extends IterableElementBase {
701
707
 
702
708
 
703
709
 
710
+
711
+
712
+
713
+
714
+
715
+
716
+
717
+
704
718
 
705
719
 
706
720
 
@@ -758,7 +772,7 @@ var Heap = class _Heap extends IterableElementBase {
758
772
  }
759
773
  /**
760
774
  * Insert an element.
761
- * @remarks Time O(1) amortized, Space O(1)
775
+ * @remarks Time O(log N) amortized, Space O(1)
762
776
  * @param element - Element to insert.
763
777
  * @returns True.
764
778
 
@@ -783,6 +797,14 @@ var Heap = class _Heap extends IterableElementBase {
783
797
 
784
798
 
785
799
 
800
+
801
+
802
+
803
+
804
+
805
+
806
+
807
+
786
808
 
787
809
 
788
810
 
@@ -836,6 +858,14 @@ var Heap = class _Heap extends IterableElementBase {
836
858
 
837
859
 
838
860
 
861
+
862
+
863
+
864
+
865
+
866
+
867
+
868
+
839
869
 
840
870
 
841
871
 
@@ -900,6 +930,41 @@ var Heap = class _Heap extends IterableElementBase {
900
930
 
901
931
 
902
932
 
933
+
934
+
935
+
936
+
937
+
938
+
939
+
940
+ * @example
941
+ * // Heap with custom comparator (MaxHeap behavior)
942
+ * interface Task {
943
+ * id: number;
944
+ * priority: number;
945
+ * name: string;
946
+ * }
947
+ *
948
+ * // Custom comparator for max heap behavior (higher priority first)
949
+ * const tasks: Task[] = [
950
+ * { id: 1, priority: 5, name: 'Email' },
951
+ * { id: 2, priority: 3, name: 'Chat' },
952
+ * { id: 3, priority: 8, name: 'Alert' }
953
+ * ];
954
+ *
955
+ * const maxHeap = new Heap(tasks, {
956
+ * comparator: (a: Task, b: Task) => b.priority - a.priority
957
+ * });
958
+ *
959
+ * console.log(maxHeap.size); // 3;
960
+ *
961
+ * // Peek returns highest priority task
962
+ * const topTask = maxHeap.peek();
963
+ * console.log(topTask?.priority); // 8;
964
+ * console.log(topTask?.name); // 'Alert';
965
+ */
966
+ /**
967
+ * @deprecated Use `pop` instead. Will be removed in a future major version.
903
968
  * @example
904
969
  * // Heap with custom comparator (MaxHeap behavior)
905
970
  * interface Task {
@@ -927,6 +992,14 @@ var Heap = class _Heap extends IterableElementBase {
927
992
  * console.log(topTask?.name); // 'Alert';
928
993
  */
929
994
  poll() {
995
+ return this.pop();
996
+ }
997
+ /**
998
+ * Remove and return the top element (min or max depending on comparator).
999
+ * @remarks Time O(log N) amortized, Space O(1)
1000
+ * @returns The removed top element, or undefined if empty.
1001
+ */
1002
+ pop() {
930
1003
  if (this.elements.length === 0) return;
931
1004
  const value = this.elements[0];
932
1005
  const last = this.elements.pop();
@@ -962,6 +1035,14 @@ var Heap = class _Heap extends IterableElementBase {
962
1035
 
963
1036
 
964
1037
 
1038
+
1039
+
1040
+
1041
+
1042
+
1043
+
1044
+
1045
+
965
1046
 
966
1047
 
967
1048
 
@@ -1058,6 +1139,14 @@ var Heap = class _Heap extends IterableElementBase {
1058
1139
 
1059
1140
 
1060
1141
 
1142
+
1143
+
1144
+
1145
+
1146
+
1147
+
1148
+
1149
+
1061
1150
 
1062
1151
 
1063
1152
 
@@ -1101,6 +1190,14 @@ var Heap = class _Heap extends IterableElementBase {
1101
1190
 
1102
1191
 
1103
1192
 
1193
+
1194
+
1195
+
1196
+
1197
+
1198
+
1199
+
1200
+
1104
1201
 
1105
1202
 
1106
1203
 
@@ -1119,16 +1216,6 @@ var Heap = class _Heap extends IterableElementBase {
1119
1216
  clear() {
1120
1217
  this._elements = [];
1121
1218
  }
1122
- /**
1123
- * Replace the backing array and rebuild the heap.
1124
- * @remarks Time O(N), Space O(N)
1125
- * @param elements - Iterable used to refill the heap.
1126
- * @returns Array of per-node results from fixing steps.
1127
- */
1128
- refill(elements) {
1129
- this._elements = Array.from(elements);
1130
- return this.fix();
1131
- }
1132
1219
  /**
1133
1220
  * Check if an equal element exists in the heap.
1134
1221
  * @remarks Time O(N), Space O(1)
@@ -1147,6 +1234,14 @@ var Heap = class _Heap extends IterableElementBase {
1147
1234
 
1148
1235
 
1149
1236
 
1237
+
1238
+
1239
+
1240
+
1241
+
1242
+
1243
+
1244
+
1150
1245
 
1151
1246
 
1152
1247
 
@@ -1190,6 +1285,14 @@ var Heap = class _Heap extends IterableElementBase {
1190
1285
 
1191
1286
 
1192
1287
 
1288
+
1289
+
1290
+
1291
+
1292
+
1293
+
1294
+
1295
+
1193
1296
 
1194
1297
 
1195
1298
 
@@ -1215,7 +1318,7 @@ var Heap = class _Heap extends IterableElementBase {
1215
1318
  }
1216
1319
  if (index < 0) return false;
1217
1320
  if (index === 0) {
1218
- this.poll();
1321
+ this.pop();
1219
1322
  } else if (index === this.elements.length - 1) {
1220
1323
  this.elements.pop();
1221
1324
  } else {
@@ -1225,13 +1328,19 @@ var Heap = class _Heap extends IterableElementBase {
1225
1328
  }
1226
1329
  return true;
1227
1330
  }
1331
+ /**
1332
+ * @deprecated Use `deleteWhere` instead. Will be removed in a future major version.
1333
+ */
1334
+ deleteBy(predicate) {
1335
+ return this.deleteWhere(predicate);
1336
+ }
1228
1337
  /**
1229
1338
  * Delete the first element that matches a predicate.
1230
1339
  * @remarks Time O(N), Space O(1)
1231
1340
  * @param predicate - Function (element, index, heap) → boolean.
1232
1341
  * @returns True if an element was removed.
1233
1342
  */
1234
- deleteBy(predicate) {
1343
+ deleteWhere(predicate) {
1235
1344
  let idx = -1;
1236
1345
  for (let i = 0; i < this.elements.length; i++) {
1237
1346
  if (predicate(this.elements[i], i, this)) {
@@ -1241,7 +1350,7 @@ var Heap = class _Heap extends IterableElementBase {
1241
1350
  }
1242
1351
  if (idx < 0) return false;
1243
1352
  if (idx === 0) {
1244
- this.poll();
1353
+ this.pop();
1245
1354
  } else if (idx === this.elements.length - 1) {
1246
1355
  this.elements.pop();
1247
1356
  } else {
@@ -1279,6 +1388,14 @@ var Heap = class _Heap extends IterableElementBase {
1279
1388
 
1280
1389
 
1281
1390
 
1391
+
1392
+
1393
+
1394
+
1395
+
1396
+
1397
+
1398
+
1282
1399
 
1283
1400
 
1284
1401
 
@@ -1355,6 +1472,14 @@ var Heap = class _Heap extends IterableElementBase {
1355
1472
 
1356
1473
 
1357
1474
 
1475
+
1476
+
1477
+
1478
+
1479
+
1480
+
1481
+
1482
+
1358
1483
 
1359
1484
 
1360
1485
 
@@ -1404,6 +1529,14 @@ var Heap = class _Heap extends IterableElementBase {
1404
1529
 
1405
1530
 
1406
1531
 
1532
+
1533
+
1534
+
1535
+
1536
+
1537
+
1538
+
1539
+
1407
1540
 
1408
1541
 
1409
1542
 
@@ -1452,6 +1585,14 @@ var Heap = class _Heap extends IterableElementBase {
1452
1585
 
1453
1586
 
1454
1587
 
1588
+
1589
+
1590
+
1591
+
1592
+
1593
+
1594
+
1595
+
1455
1596
 
1456
1597
 
1457
1598
 
@@ -1507,6 +1648,14 @@ var Heap = class _Heap extends IterableElementBase {
1507
1648
 
1508
1649
 
1509
1650
 
1651
+
1652
+
1653
+
1654
+
1655
+
1656
+
1657
+
1658
+
1510
1659
 
1511
1660
 
1512
1661
 
@@ -1524,7 +1673,7 @@ var Heap = class _Heap extends IterableElementBase {
1524
1673
  */
1525
1674
  map(callback, options, thisArg) {
1526
1675
  const { comparator, toElementFn, ...rest } = options ?? {};
1527
- if (!comparator) throw new TypeError(ERR.comparatorRequired("Heap.map"));
1676
+ if (!comparator) raise(TypeError, ERR.comparatorRequired("Heap.map"));
1528
1677
  const out = this._createLike([], { ...rest, comparator, toElementFn });
1529
1678
  let i = 0;
1530
1679
  for (const x of this) {
@@ -1551,7 +1700,7 @@ var Heap = class _Heap extends IterableElementBase {
1551
1700
  }
1552
1701
  _DEFAULT_COMPARATOR = /* @__PURE__ */ __name((a, b) => {
1553
1702
  if (typeof a === "object" || typeof b === "object") {
1554
- throw new TypeError(ERR.comparatorRequired("Heap"));
1703
+ raise(TypeError, ERR.comparatorRequired("Heap"));
1555
1704
  }
1556
1705
  if (a > b) return 1;
1557
1706
  if (a < b) return -1;
@@ -1716,6 +1865,14 @@ var Queue = class _Queue extends LinearBase {
1716
1865
 
1717
1866
 
1718
1867
 
1868
+
1869
+
1870
+
1871
+
1872
+
1873
+
1874
+
1875
+
1719
1876
 
1720
1877
 
1721
1878
 
@@ -1762,6 +1919,14 @@ var Queue = class _Queue extends LinearBase {
1762
1919
 
1763
1920
 
1764
1921
 
1922
+
1923
+
1924
+
1925
+
1926
+
1927
+
1928
+
1929
+
1765
1930
 
1766
1931
 
1767
1932
 
@@ -1780,6 +1945,14 @@ var Queue = class _Queue extends LinearBase {
1780
1945
  get first() {
1781
1946
  return this.length > 0 ? this.elements[this._offset] : void 0;
1782
1947
  }
1948
+ /**
1949
+ * Peek at the front element without removing it (alias for `first`).
1950
+ * @remarks Time O(1), Space O(1)
1951
+ * @returns Front element or undefined.
1952
+ */
1953
+ peek() {
1954
+ return this.first;
1955
+ }
1783
1956
  /**
1784
1957
  * Get the last element (back) without removing it.
1785
1958
  * @remarks Time O(1), Space O(1)
@@ -1824,6 +1997,14 @@ var Queue = class _Queue extends LinearBase {
1824
1997
 
1825
1998
 
1826
1999
 
2000
+
2001
+
2002
+
2003
+
2004
+
2005
+
2006
+
2007
+
1827
2008
 
1828
2009
 
1829
2010
 
@@ -1882,6 +2063,14 @@ var Queue = class _Queue extends LinearBase {
1882
2063
 
1883
2064
 
1884
2065
 
2066
+
2067
+
2068
+
2069
+
2070
+
2071
+
2072
+
2073
+
1885
2074
 
1886
2075
 
1887
2076
 
@@ -1947,6 +2136,14 @@ var Queue = class _Queue extends LinearBase {
1947
2136
 
1948
2137
 
1949
2138
 
2139
+
2140
+
2141
+
2142
+
2143
+
2144
+
2145
+
2146
+
1950
2147
 
1951
2148
 
1952
2149
 
@@ -2002,6 +2199,14 @@ var Queue = class _Queue extends LinearBase {
2002
2199
 
2003
2200
 
2004
2201
 
2202
+
2203
+
2204
+
2205
+
2206
+
2207
+
2208
+
2209
+
2005
2210
 
2006
2211
 
2007
2212
 
@@ -2050,6 +2255,14 @@ var Queue = class _Queue extends LinearBase {
2050
2255
 
2051
2256
 
2052
2257
 
2258
+
2259
+
2260
+
2261
+
2262
+
2263
+
2264
+
2265
+
2053
2266
 
2054
2267
 
2055
2268
 
@@ -2105,6 +2318,21 @@ var Queue = class _Queue extends LinearBase {
2105
2318
  this._elements[this._offset + index] = newElement;
2106
2319
  return true;
2107
2320
  }
2321
+ /**
2322
+ * Delete the first element that satisfies a predicate.
2323
+ * @remarks Time O(N), Space O(N)
2324
+ * @param predicate - Function (value, index, queue) → boolean to decide deletion.
2325
+ * @returns True if a match was removed.
2326
+ */
2327
+ deleteWhere(predicate) {
2328
+ for (let i = 0; i < this.length; i++) {
2329
+ if (predicate(this._elements[this._offset + i], i, this)) {
2330
+ this.deleteAt(i);
2331
+ return true;
2332
+ }
2333
+ }
2334
+ return false;
2335
+ }
2108
2336
  /**
2109
2337
  * Reverse the queue in-place by compacting then reversing.
2110
2338
  * @remarks Time O(N), Space O(N)
@@ -2139,6 +2367,14 @@ var Queue = class _Queue extends LinearBase {
2139
2367
 
2140
2368
 
2141
2369
 
2370
+
2371
+
2372
+
2373
+
2374
+
2375
+
2376
+
2377
+
2142
2378
 
2143
2379
 
2144
2380
 
@@ -2181,6 +2417,14 @@ var Queue = class _Queue extends LinearBase {
2181
2417
 
2182
2418
 
2183
2419
 
2420
+
2421
+
2422
+
2423
+
2424
+
2425
+
2426
+
2427
+
2184
2428
 
2185
2429
 
2186
2430
 
@@ -2246,6 +2490,14 @@ var Queue = class _Queue extends LinearBase {
2246
2490
 
2247
2491
 
2248
2492
 
2493
+
2494
+
2495
+
2496
+
2497
+
2498
+
2499
+
2500
+
2249
2501
 
2250
2502
 
2251
2503
 
@@ -2295,6 +2547,14 @@ var Queue = class _Queue extends LinearBase {
2295
2547
 
2296
2548
 
2297
2549
 
2550
+
2551
+
2552
+
2553
+
2554
+
2555
+
2556
+
2557
+
2298
2558
 
2299
2559
 
2300
2560
 
@@ -2348,6 +2608,14 @@ var Queue = class _Queue extends LinearBase {
2348
2608
 
2349
2609
 
2350
2610
 
2611
+
2612
+
2613
+
2614
+
2615
+
2616
+
2617
+
2618
+
2351
2619
 
2352
2620
 
2353
2621
 
@@ -2592,7 +2860,7 @@ var AbstractGraph = class extends IterableEntryBase {
2592
2860
  const newEdge = this.createEdge(srcOrEdge, dest, weight, value);
2593
2861
  return this._addEdge(newEdge);
2594
2862
  } else {
2595
- throw new TypeError(ERR.invalidArgument("dest must be a Vertex or vertex key when srcOrEdge is an Edge.", "Graph"));
2863
+ raise(TypeError, ERR.invalidArgument("dest must be a Vertex or vertex key when srcOrEdge is an Edge.", "Graph"));
2596
2864
  }
2597
2865
  }
2598
2866
  }
@@ -3483,6 +3751,14 @@ var DirectedGraph = class _DirectedGraph extends AbstractGraph {
3483
3751
 
3484
3752
 
3485
3753
 
3754
+
3755
+
3756
+
3757
+
3758
+
3759
+
3760
+
3761
+
3486
3762
 
3487
3763
 
3488
3764
 
@@ -3567,6 +3843,14 @@ var DirectedGraph = class _DirectedGraph extends AbstractGraph {
3567
3843
 
3568
3844
 
3569
3845
 
3846
+
3847
+
3848
+
3849
+
3850
+
3851
+
3852
+
3853
+
3570
3854
 
3571
3855
 
3572
3856
 
@@ -3649,6 +3933,14 @@ var DirectedGraph = class _DirectedGraph extends AbstractGraph {
3649
3933
 
3650
3934
 
3651
3935
 
3936
+
3937
+
3938
+
3939
+
3940
+
3941
+
3942
+
3943
+
3652
3944
 
3653
3945
 
3654
3946
 
@@ -3722,6 +4014,14 @@ var DirectedGraph = class _DirectedGraph extends AbstractGraph {
3722
4014
 
3723
4015
 
3724
4016
 
4017
+
4018
+
4019
+
4020
+
4021
+
4022
+
4023
+
4024
+
3725
4025
 
3726
4026
 
3727
4027
 
@@ -3772,6 +4072,14 @@ var DirectedGraph = class _DirectedGraph extends AbstractGraph {
3772
4072
 
3773
4073
 
3774
4074
 
4075
+
4076
+
4077
+
4078
+
4079
+
4080
+
4081
+
4082
+
3775
4083
 
3776
4084
 
3777
4085
 
@@ -3875,6 +4183,14 @@ var DirectedGraph = class _DirectedGraph extends AbstractGraph {
3875
4183
 
3876
4184
 
3877
4185
 
4186
+
4187
+
4188
+
4189
+
4190
+
4191
+
4192
+
4193
+
3878
4194
 
3879
4195
 
3880
4196
 
@@ -3959,6 +4275,14 @@ var DirectedGraph = class _DirectedGraph extends AbstractGraph {
3959
4275
 
3960
4276
 
3961
4277
 
4278
+
4279
+
4280
+
4281
+
4282
+
4283
+
4284
+
4285
+
3962
4286
 
3963
4287
 
3964
4288
 
@@ -4005,6 +4329,14 @@ var DirectedGraph = class _DirectedGraph extends AbstractGraph {
4005
4329
 
4006
4330
 
4007
4331
 
4332
+
4333
+
4334
+
4335
+
4336
+
4337
+
4338
+
4339
+
4008
4340
 
4009
4341
 
4010
4342
 
@@ -4104,6 +4436,14 @@ var DirectedGraph = class _DirectedGraph extends AbstractGraph {
4104
4436
 
4105
4437
 
4106
4438
 
4439
+
4440
+
4441
+
4442
+
4443
+
4444
+
4445
+
4446
+
4107
4447
 
4108
4448
 
4109
4449
 
@@ -4206,6 +4546,14 @@ var DirectedGraph = class _DirectedGraph extends AbstractGraph {
4206
4546
 
4207
4547
 
4208
4548
 
4549
+
4550
+
4551
+
4552
+
4553
+
4554
+
4555
+
4556
+
4209
4557
 
4210
4558
 
4211
4559
 
@@ -4374,6 +4722,14 @@ var UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
4374
4722
 
4375
4723
 
4376
4724
 
4725
+
4726
+
4727
+
4728
+
4729
+
4730
+
4731
+
4732
+
4377
4733
 
4378
4734
 
4379
4735
 
@@ -4454,6 +4810,14 @@ var UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
4454
4810
 
4455
4811
 
4456
4812
 
4813
+
4814
+
4815
+
4816
+
4817
+
4818
+
4819
+
4820
+
4457
4821
 
4458
4822
 
4459
4823
 
@@ -4534,6 +4898,14 @@ var UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
4534
4898
 
4535
4899
 
4536
4900
 
4901
+
4902
+
4903
+
4904
+
4905
+
4906
+
4907
+
4908
+
4537
4909
 
4538
4910
 
4539
4911
 
@@ -4628,6 +5000,14 @@ var UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
4628
5000
 
4629
5001
 
4630
5002
 
5003
+
5004
+
5005
+
5006
+
5007
+
5008
+
5009
+
5010
+
4631
5011
 
4632
5012
 
4633
5013
 
@@ -4678,6 +5058,14 @@ var UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
4678
5058
 
4679
5059
 
4680
5060
 
5061
+
5062
+
5063
+
5064
+
5065
+
5066
+
5067
+
5068
+
4681
5069
 
4682
5070
 
4683
5071
 
@@ -4798,6 +5186,14 @@ var UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
4798
5186
 
4799
5187
 
4800
5188
 
5189
+
5190
+
5191
+
5192
+
5193
+
5194
+
5195
+
5196
+
4801
5197
 
4802
5198
 
4803
5199
 
@@ -4940,6 +5336,14 @@ var UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
4940
5336
 
4941
5337
 
4942
5338
 
5339
+
5340
+
5341
+
5342
+
5343
+
5344
+
5345
+
5346
+
4943
5347
 
4944
5348
 
4945
5349
 
@@ -5004,6 +5408,14 @@ var UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
5004
5408
 
5005
5409
 
5006
5410
 
5411
+
5412
+
5413
+
5414
+
5415
+
5416
+
5417
+
5418
+
5007
5419
 
5008
5420
 
5009
5421
 
@@ -5050,6 +5462,14 @@ var UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
5050
5462
 
5051
5463
 
5052
5464
 
5465
+
5466
+
5467
+
5468
+
5469
+
5470
+
5471
+
5472
+
5053
5473
 
5054
5474
 
5055
5475