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
@@ -25,6 +25,10 @@ var arrayRemove = /* @__PURE__ */ __name(function(array, predicate) {
25
25
  }, "arrayRemove");
26
26
 
27
27
  // src/common/error.ts
28
+ function raise(ErrorClass, message) {
29
+ throw new ErrorClass(message);
30
+ }
31
+ __name(raise, "raise");
28
32
  var ERR = {
29
33
  // Range / index
30
34
  indexOutOfRange: /* @__PURE__ */ __name((index, min, max, ctx) => `${ctx ? ctx + ": " : ""}Index ${index} is out of range [${min}, ${max}].`, "indexOutOfRange"),
@@ -46,7 +50,9 @@ var ERR = {
46
50
  matrixSingular: /* @__PURE__ */ __name(() => "Matrix: Singular matrix, inverse does not exist.", "matrixSingular"),
47
51
  matrixNotSquare: /* @__PURE__ */ __name(() => "Matrix: Must be square for inversion.", "matrixNotSquare"),
48
52
  matrixNotRectangular: /* @__PURE__ */ __name(() => "Matrix: Must be rectangular for transposition.", "matrixNotRectangular"),
49
- matrixRowMismatch: /* @__PURE__ */ __name((expected, got) => `Matrix: Expected row length ${expected}, but got ${got}.`, "matrixRowMismatch")
53
+ matrixRowMismatch: /* @__PURE__ */ __name((expected, got) => `Matrix: Expected row length ${expected}, but got ${got}.`, "matrixRowMismatch"),
54
+ // Order statistic
55
+ orderStatisticNotEnabled: /* @__PURE__ */ __name((method, ctx) => `${ctx ? ctx + ": " : ""}${method}() requires enableOrderStatistic: true.`, "orderStatisticNotEnabled")
50
56
  };
51
57
 
52
58
  // src/data-structures/base/iterable-entry-base.ts
@@ -249,7 +255,7 @@ var IterableElementBase = class {
249
255
  if (options) {
250
256
  const { toElementFn } = options;
251
257
  if (typeof toElementFn === "function") this._toElementFn = toElementFn;
252
- else if (toElementFn) throw new TypeError("toElementFn must be a function type");
258
+ else if (toElementFn) raise(TypeError, "toElementFn must be a function type");
253
259
  }
254
260
  }
255
261
  /**
@@ -412,7 +418,7 @@ var IterableElementBase = class {
412
418
  acc = initialValue;
413
419
  } else {
414
420
  const first = iter.next();
415
- if (first.done) throw new TypeError("Reduce of empty structure with no initial value");
421
+ if (first.done) raise(TypeError, "Reduce of empty structure with no initial value");
416
422
  acc = first.value;
417
423
  index = 1;
418
424
  }
@@ -703,6 +709,14 @@ var Heap = class _Heap extends IterableElementBase {
703
709
 
704
710
 
705
711
 
712
+
713
+
714
+
715
+
716
+
717
+
718
+
719
+
706
720
 
707
721
 
708
722
 
@@ -760,7 +774,7 @@ var Heap = class _Heap extends IterableElementBase {
760
774
  }
761
775
  /**
762
776
  * Insert an element.
763
- * @remarks Time O(1) amortized, Space O(1)
777
+ * @remarks Time O(log N) amortized, Space O(1)
764
778
  * @param element - Element to insert.
765
779
  * @returns True.
766
780
 
@@ -785,6 +799,14 @@ var Heap = class _Heap extends IterableElementBase {
785
799
 
786
800
 
787
801
 
802
+
803
+
804
+
805
+
806
+
807
+
808
+
809
+
788
810
 
789
811
 
790
812
 
@@ -838,6 +860,14 @@ var Heap = class _Heap extends IterableElementBase {
838
860
 
839
861
 
840
862
 
863
+
864
+
865
+
866
+
867
+
868
+
869
+
870
+
841
871
 
842
872
 
843
873
 
@@ -902,6 +932,41 @@ var Heap = class _Heap extends IterableElementBase {
902
932
 
903
933
 
904
934
 
935
+
936
+
937
+
938
+
939
+
940
+
941
+
942
+ * @example
943
+ * // Heap with custom comparator (MaxHeap behavior)
944
+ * interface Task {
945
+ * id: number;
946
+ * priority: number;
947
+ * name: string;
948
+ * }
949
+ *
950
+ * // Custom comparator for max heap behavior (higher priority first)
951
+ * const tasks: Task[] = [
952
+ * { id: 1, priority: 5, name: 'Email' },
953
+ * { id: 2, priority: 3, name: 'Chat' },
954
+ * { id: 3, priority: 8, name: 'Alert' }
955
+ * ];
956
+ *
957
+ * const maxHeap = new Heap(tasks, {
958
+ * comparator: (a: Task, b: Task) => b.priority - a.priority
959
+ * });
960
+ *
961
+ * console.log(maxHeap.size); // 3;
962
+ *
963
+ * // Peek returns highest priority task
964
+ * const topTask = maxHeap.peek();
965
+ * console.log(topTask?.priority); // 8;
966
+ * console.log(topTask?.name); // 'Alert';
967
+ */
968
+ /**
969
+ * @deprecated Use `pop` instead. Will be removed in a future major version.
905
970
  * @example
906
971
  * // Heap with custom comparator (MaxHeap behavior)
907
972
  * interface Task {
@@ -929,6 +994,14 @@ var Heap = class _Heap extends IterableElementBase {
929
994
  * console.log(topTask?.name); // 'Alert';
930
995
  */
931
996
  poll() {
997
+ return this.pop();
998
+ }
999
+ /**
1000
+ * Remove and return the top element (min or max depending on comparator).
1001
+ * @remarks Time O(log N) amortized, Space O(1)
1002
+ * @returns The removed top element, or undefined if empty.
1003
+ */
1004
+ pop() {
932
1005
  if (this.elements.length === 0) return;
933
1006
  const value = this.elements[0];
934
1007
  const last = this.elements.pop();
@@ -964,6 +1037,14 @@ var Heap = class _Heap extends IterableElementBase {
964
1037
 
965
1038
 
966
1039
 
1040
+
1041
+
1042
+
1043
+
1044
+
1045
+
1046
+
1047
+
967
1048
 
968
1049
 
969
1050
 
@@ -1060,6 +1141,14 @@ var Heap = class _Heap extends IterableElementBase {
1060
1141
 
1061
1142
 
1062
1143
 
1144
+
1145
+
1146
+
1147
+
1148
+
1149
+
1150
+
1151
+
1063
1152
 
1064
1153
 
1065
1154
 
@@ -1103,6 +1192,14 @@ var Heap = class _Heap extends IterableElementBase {
1103
1192
 
1104
1193
 
1105
1194
 
1195
+
1196
+
1197
+
1198
+
1199
+
1200
+
1201
+
1202
+
1106
1203
 
1107
1204
 
1108
1205
 
@@ -1121,16 +1218,6 @@ var Heap = class _Heap extends IterableElementBase {
1121
1218
  clear() {
1122
1219
  this._elements = [];
1123
1220
  }
1124
- /**
1125
- * Replace the backing array and rebuild the heap.
1126
- * @remarks Time O(N), Space O(N)
1127
- * @param elements - Iterable used to refill the heap.
1128
- * @returns Array of per-node results from fixing steps.
1129
- */
1130
- refill(elements) {
1131
- this._elements = Array.from(elements);
1132
- return this.fix();
1133
- }
1134
1221
  /**
1135
1222
  * Check if an equal element exists in the heap.
1136
1223
  * @remarks Time O(N), Space O(1)
@@ -1149,6 +1236,14 @@ var Heap = class _Heap extends IterableElementBase {
1149
1236
 
1150
1237
 
1151
1238
 
1239
+
1240
+
1241
+
1242
+
1243
+
1244
+
1245
+
1246
+
1152
1247
 
1153
1248
 
1154
1249
 
@@ -1192,6 +1287,14 @@ var Heap = class _Heap extends IterableElementBase {
1192
1287
 
1193
1288
 
1194
1289
 
1290
+
1291
+
1292
+
1293
+
1294
+
1295
+
1296
+
1297
+
1195
1298
 
1196
1299
 
1197
1300
 
@@ -1217,7 +1320,7 @@ var Heap = class _Heap extends IterableElementBase {
1217
1320
  }
1218
1321
  if (index < 0) return false;
1219
1322
  if (index === 0) {
1220
- this.poll();
1323
+ this.pop();
1221
1324
  } else if (index === this.elements.length - 1) {
1222
1325
  this.elements.pop();
1223
1326
  } else {
@@ -1227,13 +1330,19 @@ var Heap = class _Heap extends IterableElementBase {
1227
1330
  }
1228
1331
  return true;
1229
1332
  }
1333
+ /**
1334
+ * @deprecated Use `deleteWhere` instead. Will be removed in a future major version.
1335
+ */
1336
+ deleteBy(predicate) {
1337
+ return this.deleteWhere(predicate);
1338
+ }
1230
1339
  /**
1231
1340
  * Delete the first element that matches a predicate.
1232
1341
  * @remarks Time O(N), Space O(1)
1233
1342
  * @param predicate - Function (element, index, heap) → boolean.
1234
1343
  * @returns True if an element was removed.
1235
1344
  */
1236
- deleteBy(predicate) {
1345
+ deleteWhere(predicate) {
1237
1346
  let idx = -1;
1238
1347
  for (let i = 0; i < this.elements.length; i++) {
1239
1348
  if (predicate(this.elements[i], i, this)) {
@@ -1243,7 +1352,7 @@ var Heap = class _Heap extends IterableElementBase {
1243
1352
  }
1244
1353
  if (idx < 0) return false;
1245
1354
  if (idx === 0) {
1246
- this.poll();
1355
+ this.pop();
1247
1356
  } else if (idx === this.elements.length - 1) {
1248
1357
  this.elements.pop();
1249
1358
  } else {
@@ -1281,6 +1390,14 @@ var Heap = class _Heap extends IterableElementBase {
1281
1390
 
1282
1391
 
1283
1392
 
1393
+
1394
+
1395
+
1396
+
1397
+
1398
+
1399
+
1400
+
1284
1401
 
1285
1402
 
1286
1403
 
@@ -1357,6 +1474,14 @@ var Heap = class _Heap extends IterableElementBase {
1357
1474
 
1358
1475
 
1359
1476
 
1477
+
1478
+
1479
+
1480
+
1481
+
1482
+
1483
+
1484
+
1360
1485
 
1361
1486
 
1362
1487
 
@@ -1406,6 +1531,14 @@ var Heap = class _Heap extends IterableElementBase {
1406
1531
 
1407
1532
 
1408
1533
 
1534
+
1535
+
1536
+
1537
+
1538
+
1539
+
1540
+
1541
+
1409
1542
 
1410
1543
 
1411
1544
 
@@ -1454,6 +1587,14 @@ var Heap = class _Heap extends IterableElementBase {
1454
1587
 
1455
1588
 
1456
1589
 
1590
+
1591
+
1592
+
1593
+
1594
+
1595
+
1596
+
1597
+
1457
1598
 
1458
1599
 
1459
1600
 
@@ -1509,6 +1650,14 @@ var Heap = class _Heap extends IterableElementBase {
1509
1650
 
1510
1651
 
1511
1652
 
1653
+
1654
+
1655
+
1656
+
1657
+
1658
+
1659
+
1660
+
1512
1661
 
1513
1662
 
1514
1663
 
@@ -1526,7 +1675,7 @@ var Heap = class _Heap extends IterableElementBase {
1526
1675
  */
1527
1676
  map(callback, options, thisArg) {
1528
1677
  const { comparator, toElementFn, ...rest } = options ?? {};
1529
- if (!comparator) throw new TypeError(ERR.comparatorRequired("Heap.map"));
1678
+ if (!comparator) raise(TypeError, ERR.comparatorRequired("Heap.map"));
1530
1679
  const out = this._createLike([], { ...rest, comparator, toElementFn });
1531
1680
  let i = 0;
1532
1681
  for (const x of this) {
@@ -1553,7 +1702,7 @@ var Heap = class _Heap extends IterableElementBase {
1553
1702
  }
1554
1703
  _DEFAULT_COMPARATOR = /* @__PURE__ */ __name((a, b) => {
1555
1704
  if (typeof a === "object" || typeof b === "object") {
1556
- throw new TypeError(ERR.comparatorRequired("Heap"));
1705
+ raise(TypeError, ERR.comparatorRequired("Heap"));
1557
1706
  }
1558
1707
  if (a > b) return 1;
1559
1708
  if (a < b) return -1;
@@ -1718,6 +1867,14 @@ var Queue = class _Queue extends LinearBase {
1718
1867
 
1719
1868
 
1720
1869
 
1870
+
1871
+
1872
+
1873
+
1874
+
1875
+
1876
+
1877
+
1721
1878
 
1722
1879
 
1723
1880
 
@@ -1764,6 +1921,14 @@ var Queue = class _Queue extends LinearBase {
1764
1921
 
1765
1922
 
1766
1923
 
1924
+
1925
+
1926
+
1927
+
1928
+
1929
+
1930
+
1931
+
1767
1932
 
1768
1933
 
1769
1934
 
@@ -1782,6 +1947,14 @@ var Queue = class _Queue extends LinearBase {
1782
1947
  get first() {
1783
1948
  return this.length > 0 ? this.elements[this._offset] : void 0;
1784
1949
  }
1950
+ /**
1951
+ * Peek at the front element without removing it (alias for `first`).
1952
+ * @remarks Time O(1), Space O(1)
1953
+ * @returns Front element or undefined.
1954
+ */
1955
+ peek() {
1956
+ return this.first;
1957
+ }
1785
1958
  /**
1786
1959
  * Get the last element (back) without removing it.
1787
1960
  * @remarks Time O(1), Space O(1)
@@ -1826,6 +1999,14 @@ var Queue = class _Queue extends LinearBase {
1826
1999
 
1827
2000
 
1828
2001
 
2002
+
2003
+
2004
+
2005
+
2006
+
2007
+
2008
+
2009
+
1829
2010
 
1830
2011
 
1831
2012
 
@@ -1884,6 +2065,14 @@ var Queue = class _Queue extends LinearBase {
1884
2065
 
1885
2066
 
1886
2067
 
2068
+
2069
+
2070
+
2071
+
2072
+
2073
+
2074
+
2075
+
1887
2076
 
1888
2077
 
1889
2078
 
@@ -1949,6 +2138,14 @@ var Queue = class _Queue extends LinearBase {
1949
2138
 
1950
2139
 
1951
2140
 
2141
+
2142
+
2143
+
2144
+
2145
+
2146
+
2147
+
2148
+
1952
2149
 
1953
2150
 
1954
2151
 
@@ -2004,6 +2201,14 @@ var Queue = class _Queue extends LinearBase {
2004
2201
 
2005
2202
 
2006
2203
 
2204
+
2205
+
2206
+
2207
+
2208
+
2209
+
2210
+
2211
+
2007
2212
 
2008
2213
 
2009
2214
 
@@ -2052,6 +2257,14 @@ var Queue = class _Queue extends LinearBase {
2052
2257
 
2053
2258
 
2054
2259
 
2260
+
2261
+
2262
+
2263
+
2264
+
2265
+
2266
+
2267
+
2055
2268
 
2056
2269
 
2057
2270
 
@@ -2107,6 +2320,21 @@ var Queue = class _Queue extends LinearBase {
2107
2320
  this._elements[this._offset + index] = newElement;
2108
2321
  return true;
2109
2322
  }
2323
+ /**
2324
+ * Delete the first element that satisfies a predicate.
2325
+ * @remarks Time O(N), Space O(N)
2326
+ * @param predicate - Function (value, index, queue) → boolean to decide deletion.
2327
+ * @returns True if a match was removed.
2328
+ */
2329
+ deleteWhere(predicate) {
2330
+ for (let i = 0; i < this.length; i++) {
2331
+ if (predicate(this._elements[this._offset + i], i, this)) {
2332
+ this.deleteAt(i);
2333
+ return true;
2334
+ }
2335
+ }
2336
+ return false;
2337
+ }
2110
2338
  /**
2111
2339
  * Reverse the queue in-place by compacting then reversing.
2112
2340
  * @remarks Time O(N), Space O(N)
@@ -2141,6 +2369,14 @@ var Queue = class _Queue extends LinearBase {
2141
2369
 
2142
2370
 
2143
2371
 
2372
+
2373
+
2374
+
2375
+
2376
+
2377
+
2378
+
2379
+
2144
2380
 
2145
2381
 
2146
2382
 
@@ -2183,6 +2419,14 @@ var Queue = class _Queue extends LinearBase {
2183
2419
 
2184
2420
 
2185
2421
 
2422
+
2423
+
2424
+
2425
+
2426
+
2427
+
2428
+
2429
+
2186
2430
 
2187
2431
 
2188
2432
 
@@ -2248,6 +2492,14 @@ var Queue = class _Queue extends LinearBase {
2248
2492
 
2249
2493
 
2250
2494
 
2495
+
2496
+
2497
+
2498
+
2499
+
2500
+
2501
+
2502
+
2251
2503
 
2252
2504
 
2253
2505
 
@@ -2297,6 +2549,14 @@ var Queue = class _Queue extends LinearBase {
2297
2549
 
2298
2550
 
2299
2551
 
2552
+
2553
+
2554
+
2555
+
2556
+
2557
+
2558
+
2559
+
2300
2560
 
2301
2561
 
2302
2562
 
@@ -2350,6 +2610,14 @@ var Queue = class _Queue extends LinearBase {
2350
2610
 
2351
2611
 
2352
2612
 
2613
+
2614
+
2615
+
2616
+
2617
+
2618
+
2619
+
2620
+
2353
2621
 
2354
2622
 
2355
2623
 
@@ -2594,7 +2862,7 @@ var AbstractGraph = class extends IterableEntryBase {
2594
2862
  const newEdge = this.createEdge(srcOrEdge, dest, weight, value);
2595
2863
  return this._addEdge(newEdge);
2596
2864
  } else {
2597
- throw new TypeError(ERR.invalidArgument("dest must be a Vertex or vertex key when srcOrEdge is an Edge.", "Graph"));
2865
+ raise(TypeError, ERR.invalidArgument("dest must be a Vertex or vertex key when srcOrEdge is an Edge.", "Graph"));
2598
2866
  }
2599
2867
  }
2600
2868
  }
@@ -3485,6 +3753,14 @@ var DirectedGraph = class _DirectedGraph extends AbstractGraph {
3485
3753
 
3486
3754
 
3487
3755
 
3756
+
3757
+
3758
+
3759
+
3760
+
3761
+
3762
+
3763
+
3488
3764
 
3489
3765
 
3490
3766
 
@@ -3569,6 +3845,14 @@ var DirectedGraph = class _DirectedGraph extends AbstractGraph {
3569
3845
 
3570
3846
 
3571
3847
 
3848
+
3849
+
3850
+
3851
+
3852
+
3853
+
3854
+
3855
+
3572
3856
 
3573
3857
 
3574
3858
 
@@ -3651,6 +3935,14 @@ var DirectedGraph = class _DirectedGraph extends AbstractGraph {
3651
3935
 
3652
3936
 
3653
3937
 
3938
+
3939
+
3940
+
3941
+
3942
+
3943
+
3944
+
3945
+
3654
3946
 
3655
3947
 
3656
3948
 
@@ -3724,6 +4016,14 @@ var DirectedGraph = class _DirectedGraph extends AbstractGraph {
3724
4016
 
3725
4017
 
3726
4018
 
4019
+
4020
+
4021
+
4022
+
4023
+
4024
+
4025
+
4026
+
3727
4027
 
3728
4028
 
3729
4029
 
@@ -3774,6 +4074,14 @@ var DirectedGraph = class _DirectedGraph extends AbstractGraph {
3774
4074
 
3775
4075
 
3776
4076
 
4077
+
4078
+
4079
+
4080
+
4081
+
4082
+
4083
+
4084
+
3777
4085
 
3778
4086
 
3779
4087
 
@@ -3877,6 +4185,14 @@ var DirectedGraph = class _DirectedGraph extends AbstractGraph {
3877
4185
 
3878
4186
 
3879
4187
 
4188
+
4189
+
4190
+
4191
+
4192
+
4193
+
4194
+
4195
+
3880
4196
 
3881
4197
 
3882
4198
 
@@ -3961,6 +4277,14 @@ var DirectedGraph = class _DirectedGraph extends AbstractGraph {
3961
4277
 
3962
4278
 
3963
4279
 
4280
+
4281
+
4282
+
4283
+
4284
+
4285
+
4286
+
4287
+
3964
4288
 
3965
4289
 
3966
4290
 
@@ -4007,6 +4331,14 @@ var DirectedGraph = class _DirectedGraph extends AbstractGraph {
4007
4331
 
4008
4332
 
4009
4333
 
4334
+
4335
+
4336
+
4337
+
4338
+
4339
+
4340
+
4341
+
4010
4342
 
4011
4343
 
4012
4344
 
@@ -4106,6 +4438,14 @@ var DirectedGraph = class _DirectedGraph extends AbstractGraph {
4106
4438
 
4107
4439
 
4108
4440
 
4441
+
4442
+
4443
+
4444
+
4445
+
4446
+
4447
+
4448
+
4109
4449
 
4110
4450
 
4111
4451
 
@@ -4208,6 +4548,14 @@ var DirectedGraph = class _DirectedGraph extends AbstractGraph {
4208
4548
 
4209
4549
 
4210
4550
 
4551
+
4552
+
4553
+
4554
+
4555
+
4556
+
4557
+
4558
+
4211
4559
 
4212
4560
 
4213
4561
 
@@ -4376,6 +4724,14 @@ var UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
4376
4724
 
4377
4725
 
4378
4726
 
4727
+
4728
+
4729
+
4730
+
4731
+
4732
+
4733
+
4734
+
4379
4735
 
4380
4736
 
4381
4737
 
@@ -4456,6 +4812,14 @@ var UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
4456
4812
 
4457
4813
 
4458
4814
 
4815
+
4816
+
4817
+
4818
+
4819
+
4820
+
4821
+
4822
+
4459
4823
 
4460
4824
 
4461
4825
 
@@ -4536,6 +4900,14 @@ var UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
4536
4900
 
4537
4901
 
4538
4902
 
4903
+
4904
+
4905
+
4906
+
4907
+
4908
+
4909
+
4910
+
4539
4911
 
4540
4912
 
4541
4913
 
@@ -4630,6 +5002,14 @@ var UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
4630
5002
 
4631
5003
 
4632
5004
 
5005
+
5006
+
5007
+
5008
+
5009
+
5010
+
5011
+
5012
+
4633
5013
 
4634
5014
 
4635
5015
 
@@ -4680,6 +5060,14 @@ var UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
4680
5060
 
4681
5061
 
4682
5062
 
5063
+
5064
+
5065
+
5066
+
5067
+
5068
+
5069
+
5070
+
4683
5071
 
4684
5072
 
4685
5073
 
@@ -4800,6 +5188,14 @@ var UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
4800
5188
 
4801
5189
 
4802
5190
 
5191
+
5192
+
5193
+
5194
+
5195
+
5196
+
5197
+
5198
+
4803
5199
 
4804
5200
 
4805
5201
 
@@ -4942,6 +5338,14 @@ var UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
4942
5338
 
4943
5339
 
4944
5340
 
5341
+
5342
+
5343
+
5344
+
5345
+
5346
+
5347
+
5348
+
4945
5349
 
4946
5350
 
4947
5351
 
@@ -5006,6 +5410,14 @@ var UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
5006
5410
 
5007
5411
 
5008
5412
 
5413
+
5414
+
5415
+
5416
+
5417
+
5418
+
5419
+
5420
+
5009
5421
 
5010
5422
 
5011
5423
 
@@ -5052,6 +5464,14 @@ var UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
5052
5464
 
5053
5465
 
5054
5466
 
5467
+
5468
+
5469
+
5470
+
5471
+
5472
+
5473
+
5474
+
5055
5475
 
5056
5476
 
5057
5477