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
@@ -27,6 +27,10 @@ var arrayRemove = /* @__PURE__ */ __name(function(array, predicate) {
27
27
  }, "arrayRemove");
28
28
 
29
29
  // src/common/error.ts
30
+ function raise(ErrorClass, message) {
31
+ throw new ErrorClass(message);
32
+ }
33
+ __name(raise, "raise");
30
34
  var ERR = {
31
35
  // Range / index
32
36
  indexOutOfRange: /* @__PURE__ */ __name((index, min, max, ctx) => `${ctx ? ctx + ": " : ""}Index ${index} is out of range [${min}, ${max}].`, "indexOutOfRange"),
@@ -48,7 +52,9 @@ var ERR = {
48
52
  matrixSingular: /* @__PURE__ */ __name(() => "Matrix: Singular matrix, inverse does not exist.", "matrixSingular"),
49
53
  matrixNotSquare: /* @__PURE__ */ __name(() => "Matrix: Must be square for inversion.", "matrixNotSquare"),
50
54
  matrixNotRectangular: /* @__PURE__ */ __name(() => "Matrix: Must be rectangular for transposition.", "matrixNotRectangular"),
51
- matrixRowMismatch: /* @__PURE__ */ __name((expected, got) => `Matrix: Expected row length ${expected}, but got ${got}.`, "matrixRowMismatch")
55
+ matrixRowMismatch: /* @__PURE__ */ __name((expected, got) => `Matrix: Expected row length ${expected}, but got ${got}.`, "matrixRowMismatch"),
56
+ // Order statistic
57
+ orderStatisticNotEnabled: /* @__PURE__ */ __name((method, ctx) => `${ctx ? ctx + ": " : ""}${method}() requires enableOrderStatistic: true.`, "orderStatisticNotEnabled")
52
58
  };
53
59
 
54
60
  // src/data-structures/base/iterable-entry-base.ts
@@ -254,7 +260,7 @@ var _IterableElementBase = class _IterableElementBase {
254
260
  if (options) {
255
261
  const { toElementFn } = options;
256
262
  if (typeof toElementFn === "function") this._toElementFn = toElementFn;
257
- else if (toElementFn) throw new TypeError("toElementFn must be a function type");
263
+ else if (toElementFn) raise(TypeError, "toElementFn must be a function type");
258
264
  }
259
265
  }
260
266
  /**
@@ -410,7 +416,7 @@ var _IterableElementBase = class _IterableElementBase {
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
  }
@@ -661,7 +667,7 @@ var _Heap = class _Heap extends IterableElementBase {
661
667
  __publicField(this, "_elements", []);
662
668
  __publicField(this, "_DEFAULT_COMPARATOR", /* @__PURE__ */ __name((a, b) => {
663
669
  if (typeof a === "object" || typeof b === "object") {
664
- throw new TypeError(ERR.comparatorRequired("Heap"));
670
+ raise(TypeError, ERR.comparatorRequired("Heap"));
665
671
  }
666
672
  if (a > b) return 1;
667
673
  if (a < b) return -1;
@@ -708,6 +714,14 @@ var _Heap = class _Heap extends IterableElementBase {
708
714
 
709
715
 
710
716
 
717
+
718
+
719
+
720
+
721
+
722
+
723
+
724
+
711
725
 
712
726
 
713
727
 
@@ -766,7 +780,7 @@ var _Heap = class _Heap extends IterableElementBase {
766
780
  }
767
781
  /**
768
782
  * Insert an element.
769
- * @remarks Time O(1) amortized, Space O(1)
783
+ * @remarks Time O(log N) amortized, Space O(1)
770
784
  * @param element - Element to insert.
771
785
  * @returns True.
772
786
 
@@ -791,6 +805,14 @@ var _Heap = class _Heap extends IterableElementBase {
791
805
 
792
806
 
793
807
 
808
+
809
+
810
+
811
+
812
+
813
+
814
+
815
+
794
816
 
795
817
 
796
818
 
@@ -844,6 +866,14 @@ var _Heap = class _Heap extends IterableElementBase {
844
866
 
845
867
 
846
868
 
869
+
870
+
871
+
872
+
873
+
874
+
875
+
876
+
847
877
 
848
878
 
849
879
 
@@ -908,6 +938,41 @@ var _Heap = class _Heap extends IterableElementBase {
908
938
 
909
939
 
910
940
 
941
+
942
+
943
+
944
+
945
+
946
+
947
+
948
+ * @example
949
+ * // Heap with custom comparator (MaxHeap behavior)
950
+ * interface Task {
951
+ * id: number;
952
+ * priority: number;
953
+ * name: string;
954
+ * }
955
+ *
956
+ * // Custom comparator for max heap behavior (higher priority first)
957
+ * const tasks: Task[] = [
958
+ * { id: 1, priority: 5, name: 'Email' },
959
+ * { id: 2, priority: 3, name: 'Chat' },
960
+ * { id: 3, priority: 8, name: 'Alert' }
961
+ * ];
962
+ *
963
+ * const maxHeap = new Heap(tasks, {
964
+ * comparator: (a: Task, b: Task) => b.priority - a.priority
965
+ * });
966
+ *
967
+ * console.log(maxHeap.size); // 3;
968
+ *
969
+ * // Peek returns highest priority task
970
+ * const topTask = maxHeap.peek();
971
+ * console.log(topTask?.priority); // 8;
972
+ * console.log(topTask?.name); // 'Alert';
973
+ */
974
+ /**
975
+ * @deprecated Use `pop` instead. Will be removed in a future major version.
911
976
  * @example
912
977
  * // Heap with custom comparator (MaxHeap behavior)
913
978
  * interface Task {
@@ -935,6 +1000,14 @@ var _Heap = class _Heap extends IterableElementBase {
935
1000
  * console.log(topTask?.name); // 'Alert';
936
1001
  */
937
1002
  poll() {
1003
+ return this.pop();
1004
+ }
1005
+ /**
1006
+ * Remove and return the top element (min or max depending on comparator).
1007
+ * @remarks Time O(log N) amortized, Space O(1)
1008
+ * @returns The removed top element, or undefined if empty.
1009
+ */
1010
+ pop() {
938
1011
  if (this.elements.length === 0) return;
939
1012
  const value = this.elements[0];
940
1013
  const last = this.elements.pop();
@@ -970,6 +1043,14 @@ var _Heap = class _Heap extends IterableElementBase {
970
1043
 
971
1044
 
972
1045
 
1046
+
1047
+
1048
+
1049
+
1050
+
1051
+
1052
+
1053
+
973
1054
 
974
1055
 
975
1056
 
@@ -1066,6 +1147,14 @@ var _Heap = class _Heap extends IterableElementBase {
1066
1147
 
1067
1148
 
1068
1149
 
1150
+
1151
+
1152
+
1153
+
1154
+
1155
+
1156
+
1157
+
1069
1158
 
1070
1159
 
1071
1160
 
@@ -1109,6 +1198,14 @@ var _Heap = class _Heap extends IterableElementBase {
1109
1198
 
1110
1199
 
1111
1200
 
1201
+
1202
+
1203
+
1204
+
1205
+
1206
+
1207
+
1208
+
1112
1209
 
1113
1210
 
1114
1211
 
@@ -1127,16 +1224,6 @@ var _Heap = class _Heap extends IterableElementBase {
1127
1224
  clear() {
1128
1225
  this._elements = [];
1129
1226
  }
1130
- /**
1131
- * Replace the backing array and rebuild the heap.
1132
- * @remarks Time O(N), Space O(N)
1133
- * @param elements - Iterable used to refill the heap.
1134
- * @returns Array of per-node results from fixing steps.
1135
- */
1136
- refill(elements) {
1137
- this._elements = Array.from(elements);
1138
- return this.fix();
1139
- }
1140
1227
  /**
1141
1228
  * Check if an equal element exists in the heap.
1142
1229
  * @remarks Time O(N), Space O(1)
@@ -1155,6 +1242,14 @@ var _Heap = class _Heap extends IterableElementBase {
1155
1242
 
1156
1243
 
1157
1244
 
1245
+
1246
+
1247
+
1248
+
1249
+
1250
+
1251
+
1252
+
1158
1253
 
1159
1254
 
1160
1255
 
@@ -1198,6 +1293,14 @@ var _Heap = class _Heap extends IterableElementBase {
1198
1293
 
1199
1294
 
1200
1295
 
1296
+
1297
+
1298
+
1299
+
1300
+
1301
+
1302
+
1303
+
1201
1304
 
1202
1305
 
1203
1306
 
@@ -1223,7 +1326,7 @@ var _Heap = class _Heap extends IterableElementBase {
1223
1326
  }
1224
1327
  if (index < 0) return false;
1225
1328
  if (index === 0) {
1226
- this.poll();
1329
+ this.pop();
1227
1330
  } else if (index === this.elements.length - 1) {
1228
1331
  this.elements.pop();
1229
1332
  } else {
@@ -1233,13 +1336,19 @@ var _Heap = class _Heap extends IterableElementBase {
1233
1336
  }
1234
1337
  return true;
1235
1338
  }
1339
+ /**
1340
+ * @deprecated Use `deleteWhere` instead. Will be removed in a future major version.
1341
+ */
1342
+ deleteBy(predicate) {
1343
+ return this.deleteWhere(predicate);
1344
+ }
1236
1345
  /**
1237
1346
  * Delete the first element that matches a predicate.
1238
1347
  * @remarks Time O(N), Space O(1)
1239
1348
  * @param predicate - Function (element, index, heap) → boolean.
1240
1349
  * @returns True if an element was removed.
1241
1350
  */
1242
- deleteBy(predicate) {
1351
+ deleteWhere(predicate) {
1243
1352
  let idx = -1;
1244
1353
  for (let i = 0; i < this.elements.length; i++) {
1245
1354
  if (predicate(this.elements[i], i, this)) {
@@ -1249,7 +1358,7 @@ var _Heap = class _Heap extends IterableElementBase {
1249
1358
  }
1250
1359
  if (idx < 0) return false;
1251
1360
  if (idx === 0) {
1252
- this.poll();
1361
+ this.pop();
1253
1362
  } else if (idx === this.elements.length - 1) {
1254
1363
  this.elements.pop();
1255
1364
  } else {
@@ -1287,6 +1396,14 @@ var _Heap = class _Heap extends IterableElementBase {
1287
1396
 
1288
1397
 
1289
1398
 
1399
+
1400
+
1401
+
1402
+
1403
+
1404
+
1405
+
1406
+
1290
1407
 
1291
1408
 
1292
1409
 
@@ -1363,6 +1480,14 @@ var _Heap = class _Heap extends IterableElementBase {
1363
1480
 
1364
1481
 
1365
1482
 
1483
+
1484
+
1485
+
1486
+
1487
+
1488
+
1489
+
1490
+
1366
1491
 
1367
1492
 
1368
1493
 
@@ -1412,6 +1537,14 @@ var _Heap = class _Heap extends IterableElementBase {
1412
1537
 
1413
1538
 
1414
1539
 
1540
+
1541
+
1542
+
1543
+
1544
+
1545
+
1546
+
1547
+
1415
1548
 
1416
1549
 
1417
1550
 
@@ -1460,6 +1593,14 @@ var _Heap = class _Heap extends IterableElementBase {
1460
1593
 
1461
1594
 
1462
1595
 
1596
+
1597
+
1598
+
1599
+
1600
+
1601
+
1602
+
1603
+
1463
1604
 
1464
1605
 
1465
1606
 
@@ -1515,6 +1656,14 @@ var _Heap = class _Heap extends IterableElementBase {
1515
1656
 
1516
1657
 
1517
1658
 
1659
+
1660
+
1661
+
1662
+
1663
+
1664
+
1665
+
1666
+
1518
1667
 
1519
1668
 
1520
1669
 
@@ -1532,7 +1681,7 @@ var _Heap = class _Heap extends IterableElementBase {
1532
1681
  */
1533
1682
  map(callback, options, thisArg) {
1534
1683
  const { comparator, toElementFn, ...rest } = options != null ? options : {};
1535
- if (!comparator) throw new TypeError(ERR.comparatorRequired("Heap.map"));
1684
+ if (!comparator) raise(TypeError, ERR.comparatorRequired("Heap.map"));
1536
1685
  const out = this._createLike([], { ...rest, comparator, toElementFn });
1537
1686
  let i = 0;
1538
1687
  for (const x of this) {
@@ -1714,6 +1863,14 @@ var _Queue = class _Queue extends LinearBase {
1714
1863
 
1715
1864
 
1716
1865
 
1866
+
1867
+
1868
+
1869
+
1870
+
1871
+
1872
+
1873
+
1717
1874
 
1718
1875
 
1719
1876
 
@@ -1760,6 +1917,14 @@ var _Queue = class _Queue extends LinearBase {
1760
1917
 
1761
1918
 
1762
1919
 
1920
+
1921
+
1922
+
1923
+
1924
+
1925
+
1926
+
1927
+
1763
1928
 
1764
1929
 
1765
1930
 
@@ -1778,6 +1943,14 @@ var _Queue = class _Queue extends LinearBase {
1778
1943
  get first() {
1779
1944
  return this.length > 0 ? this.elements[this._offset] : void 0;
1780
1945
  }
1946
+ /**
1947
+ * Peek at the front element without removing it (alias for `first`).
1948
+ * @remarks Time O(1), Space O(1)
1949
+ * @returns Front element or undefined.
1950
+ */
1951
+ peek() {
1952
+ return this.first;
1953
+ }
1781
1954
  /**
1782
1955
  * Get the last element (back) without removing it.
1783
1956
  * @remarks Time O(1), Space O(1)
@@ -1822,6 +1995,14 @@ var _Queue = class _Queue extends LinearBase {
1822
1995
 
1823
1996
 
1824
1997
 
1998
+
1999
+
2000
+
2001
+
2002
+
2003
+
2004
+
2005
+
1825
2006
 
1826
2007
 
1827
2008
 
@@ -1880,6 +2061,14 @@ var _Queue = class _Queue extends LinearBase {
1880
2061
 
1881
2062
 
1882
2063
 
2064
+
2065
+
2066
+
2067
+
2068
+
2069
+
2070
+
2071
+
1883
2072
 
1884
2073
 
1885
2074
 
@@ -1945,6 +2134,14 @@ var _Queue = class _Queue extends LinearBase {
1945
2134
 
1946
2135
 
1947
2136
 
2137
+
2138
+
2139
+
2140
+
2141
+
2142
+
2143
+
2144
+
1948
2145
 
1949
2146
 
1950
2147
 
@@ -2000,6 +2197,14 @@ var _Queue = class _Queue extends LinearBase {
2000
2197
 
2001
2198
 
2002
2199
 
2200
+
2201
+
2202
+
2203
+
2204
+
2205
+
2206
+
2207
+
2003
2208
 
2004
2209
 
2005
2210
 
@@ -2048,6 +2253,14 @@ var _Queue = class _Queue extends LinearBase {
2048
2253
 
2049
2254
 
2050
2255
 
2256
+
2257
+
2258
+
2259
+
2260
+
2261
+
2262
+
2263
+
2051
2264
 
2052
2265
 
2053
2266
 
@@ -2103,6 +2316,21 @@ var _Queue = class _Queue extends LinearBase {
2103
2316
  this._elements[this._offset + index] = newElement;
2104
2317
  return true;
2105
2318
  }
2319
+ /**
2320
+ * Delete the first element that satisfies a predicate.
2321
+ * @remarks Time O(N), Space O(N)
2322
+ * @param predicate - Function (value, index, queue) → boolean to decide deletion.
2323
+ * @returns True if a match was removed.
2324
+ */
2325
+ deleteWhere(predicate) {
2326
+ for (let i = 0; i < this.length; i++) {
2327
+ if (predicate(this._elements[this._offset + i], i, this)) {
2328
+ this.deleteAt(i);
2329
+ return true;
2330
+ }
2331
+ }
2332
+ return false;
2333
+ }
2106
2334
  /**
2107
2335
  * Reverse the queue in-place by compacting then reversing.
2108
2336
  * @remarks Time O(N), Space O(N)
@@ -2137,6 +2365,14 @@ var _Queue = class _Queue extends LinearBase {
2137
2365
 
2138
2366
 
2139
2367
 
2368
+
2369
+
2370
+
2371
+
2372
+
2373
+
2374
+
2375
+
2140
2376
 
2141
2377
 
2142
2378
 
@@ -2179,6 +2415,14 @@ var _Queue = class _Queue extends LinearBase {
2179
2415
 
2180
2416
 
2181
2417
 
2418
+
2419
+
2420
+
2421
+
2422
+
2423
+
2424
+
2425
+
2182
2426
 
2183
2427
 
2184
2428
 
@@ -2244,6 +2488,14 @@ var _Queue = class _Queue extends LinearBase {
2244
2488
 
2245
2489
 
2246
2490
 
2491
+
2492
+
2493
+
2494
+
2495
+
2496
+
2497
+
2498
+
2247
2499
 
2248
2500
 
2249
2501
 
@@ -2293,6 +2545,14 @@ var _Queue = class _Queue extends LinearBase {
2293
2545
 
2294
2546
 
2295
2547
 
2548
+
2549
+
2550
+
2551
+
2552
+
2553
+
2554
+
2555
+
2296
2556
 
2297
2557
 
2298
2558
 
@@ -2346,6 +2606,14 @@ var _Queue = class _Queue extends LinearBase {
2346
2606
 
2347
2607
 
2348
2608
 
2609
+
2610
+
2611
+
2612
+
2613
+
2614
+
2615
+
2616
+
2349
2617
 
2350
2618
 
2351
2619
 
@@ -2589,7 +2857,7 @@ var _AbstractGraph = class _AbstractGraph extends IterableEntryBase {
2589
2857
  const newEdge = this.createEdge(srcOrEdge, dest, weight, value);
2590
2858
  return this._addEdge(newEdge);
2591
2859
  } else {
2592
- throw new TypeError(ERR.invalidArgument("dest must be a Vertex or vertex key when srcOrEdge is an Edge.", "Graph"));
2860
+ raise(TypeError, ERR.invalidArgument("dest must be a Vertex or vertex key when srcOrEdge is an Edge.", "Graph"));
2593
2861
  }
2594
2862
  }
2595
2863
  }
@@ -3484,6 +3752,14 @@ var _DirectedGraph = class _DirectedGraph extends AbstractGraph {
3484
3752
 
3485
3753
 
3486
3754
 
3755
+
3756
+
3757
+
3758
+
3759
+
3760
+
3761
+
3762
+
3487
3763
 
3488
3764
 
3489
3765
 
@@ -3568,6 +3844,14 @@ var _DirectedGraph = class _DirectedGraph extends AbstractGraph {
3568
3844
 
3569
3845
 
3570
3846
 
3847
+
3848
+
3849
+
3850
+
3851
+
3852
+
3853
+
3854
+
3571
3855
 
3572
3856
 
3573
3857
 
@@ -3650,6 +3934,14 @@ var _DirectedGraph = class _DirectedGraph extends AbstractGraph {
3650
3934
 
3651
3935
 
3652
3936
 
3937
+
3938
+
3939
+
3940
+
3941
+
3942
+
3943
+
3944
+
3653
3945
 
3654
3946
 
3655
3947
 
@@ -3723,6 +4015,14 @@ var _DirectedGraph = class _DirectedGraph extends AbstractGraph {
3723
4015
 
3724
4016
 
3725
4017
 
4018
+
4019
+
4020
+
4021
+
4022
+
4023
+
4024
+
4025
+
3726
4026
 
3727
4027
 
3728
4028
 
@@ -3773,6 +4073,14 @@ var _DirectedGraph = class _DirectedGraph extends AbstractGraph {
3773
4073
 
3774
4074
 
3775
4075
 
4076
+
4077
+
4078
+
4079
+
4080
+
4081
+
4082
+
4083
+
3776
4084
 
3777
4085
 
3778
4086
 
@@ -3876,6 +4184,14 @@ var _DirectedGraph = class _DirectedGraph extends AbstractGraph {
3876
4184
 
3877
4185
 
3878
4186
 
4187
+
4188
+
4189
+
4190
+
4191
+
4192
+
4193
+
4194
+
3879
4195
 
3880
4196
 
3881
4197
 
@@ -3960,6 +4276,14 @@ var _DirectedGraph = class _DirectedGraph extends AbstractGraph {
3960
4276
 
3961
4277
 
3962
4278
 
4279
+
4280
+
4281
+
4282
+
4283
+
4284
+
4285
+
4286
+
3963
4287
 
3964
4288
 
3965
4289
 
@@ -4006,6 +4330,14 @@ var _DirectedGraph = class _DirectedGraph extends AbstractGraph {
4006
4330
 
4007
4331
 
4008
4332
 
4333
+
4334
+
4335
+
4336
+
4337
+
4338
+
4339
+
4340
+
4009
4341
 
4010
4342
 
4011
4343
 
@@ -4105,6 +4437,14 @@ var _DirectedGraph = class _DirectedGraph extends AbstractGraph {
4105
4437
 
4106
4438
 
4107
4439
 
4440
+
4441
+
4442
+
4443
+
4444
+
4445
+
4446
+
4447
+
4108
4448
 
4109
4449
 
4110
4450
 
@@ -4207,6 +4547,14 @@ var _DirectedGraph = class _DirectedGraph extends AbstractGraph {
4207
4547
 
4208
4548
 
4209
4549
 
4550
+
4551
+
4552
+
4553
+
4554
+
4555
+
4556
+
4557
+
4210
4558
 
4211
4559
 
4212
4560
 
@@ -4373,6 +4721,14 @@ var _UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
4373
4721
 
4374
4722
 
4375
4723
 
4724
+
4725
+
4726
+
4727
+
4728
+
4729
+
4730
+
4731
+
4376
4732
 
4377
4733
 
4378
4734
 
@@ -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
 
@@ -4629,6 +5001,14 @@ var _UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
4629
5001
 
4630
5002
 
4631
5003
 
5004
+
5005
+
5006
+
5007
+
5008
+
5009
+
5010
+
5011
+
4632
5012
 
4633
5013
 
4634
5014
 
@@ -4679,6 +5059,14 @@ var _UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
4679
5059
 
4680
5060
 
4681
5061
 
5062
+
5063
+
5064
+
5065
+
5066
+
5067
+
5068
+
5069
+
4682
5070
 
4683
5071
 
4684
5072
 
@@ -4799,6 +5187,14 @@ var _UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
4799
5187
 
4800
5188
 
4801
5189
 
5190
+
5191
+
5192
+
5193
+
5194
+
5195
+
5196
+
5197
+
4802
5198
 
4803
5199
 
4804
5200
 
@@ -4941,6 +5337,14 @@ var _UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
4941
5337
 
4942
5338
 
4943
5339
 
5340
+
5341
+
5342
+
5343
+
5344
+
5345
+
5346
+
5347
+
4944
5348
 
4945
5349
 
4946
5350
 
@@ -5005,6 +5409,14 @@ var _UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
5005
5409
 
5006
5410
 
5007
5411
 
5412
+
5413
+
5414
+
5415
+
5416
+
5417
+
5418
+
5419
+
5008
5420
 
5009
5421
 
5010
5422
 
@@ -5051,6 +5463,14 @@ var _UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
5051
5463
 
5052
5464
 
5053
5465
 
5466
+
5467
+
5468
+
5469
+
5470
+
5471
+
5472
+
5473
+
5054
5474
 
5055
5475
 
5056
5476