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
@@ -252,7 +258,7 @@ var _IterableElementBase = class _IterableElementBase {
252
258
  if (options) {
253
259
  const { toElementFn } = options;
254
260
  if (typeof toElementFn === "function") this._toElementFn = toElementFn;
255
- else if (toElementFn) throw new TypeError("toElementFn must be a function type");
261
+ else if (toElementFn) raise(TypeError, "toElementFn must be a function type");
256
262
  }
257
263
  }
258
264
  /**
@@ -408,7 +414,7 @@ var _IterableElementBase = class _IterableElementBase {
408
414
  acc = initialValue;
409
415
  } else {
410
416
  const first = iter.next();
411
- if (first.done) throw new TypeError("Reduce of empty structure with no initial value");
417
+ if (first.done) raise(TypeError, "Reduce of empty structure with no initial value");
412
418
  acc = first.value;
413
419
  index = 1;
414
420
  }
@@ -659,7 +665,7 @@ var _Heap = class _Heap extends IterableElementBase {
659
665
  __publicField(this, "_elements", []);
660
666
  __publicField(this, "_DEFAULT_COMPARATOR", /* @__PURE__ */ __name((a, b) => {
661
667
  if (typeof a === "object" || typeof b === "object") {
662
- throw new TypeError(ERR.comparatorRequired("Heap"));
668
+ raise(TypeError, ERR.comparatorRequired("Heap"));
663
669
  }
664
670
  if (a > b) return 1;
665
671
  if (a < b) return -1;
@@ -706,6 +712,14 @@ var _Heap = class _Heap extends IterableElementBase {
706
712
 
707
713
 
708
714
 
715
+
716
+
717
+
718
+
719
+
720
+
721
+
722
+
709
723
 
710
724
 
711
725
 
@@ -764,7 +778,7 @@ var _Heap = class _Heap extends IterableElementBase {
764
778
  }
765
779
  /**
766
780
  * Insert an element.
767
- * @remarks Time O(1) amortized, Space O(1)
781
+ * @remarks Time O(log N) amortized, Space O(1)
768
782
  * @param element - Element to insert.
769
783
  * @returns True.
770
784
 
@@ -789,6 +803,14 @@ var _Heap = class _Heap extends IterableElementBase {
789
803
 
790
804
 
791
805
 
806
+
807
+
808
+
809
+
810
+
811
+
812
+
813
+
792
814
 
793
815
 
794
816
 
@@ -842,6 +864,14 @@ var _Heap = class _Heap extends IterableElementBase {
842
864
 
843
865
 
844
866
 
867
+
868
+
869
+
870
+
871
+
872
+
873
+
874
+
845
875
 
846
876
 
847
877
 
@@ -906,6 +936,41 @@ var _Heap = class _Heap extends IterableElementBase {
906
936
 
907
937
 
908
938
 
939
+
940
+
941
+
942
+
943
+
944
+
945
+
946
+ * @example
947
+ * // Heap with custom comparator (MaxHeap behavior)
948
+ * interface Task {
949
+ * id: number;
950
+ * priority: number;
951
+ * name: string;
952
+ * }
953
+ *
954
+ * // Custom comparator for max heap behavior (higher priority first)
955
+ * const tasks: Task[] = [
956
+ * { id: 1, priority: 5, name: 'Email' },
957
+ * { id: 2, priority: 3, name: 'Chat' },
958
+ * { id: 3, priority: 8, name: 'Alert' }
959
+ * ];
960
+ *
961
+ * const maxHeap = new Heap(tasks, {
962
+ * comparator: (a: Task, b: Task) => b.priority - a.priority
963
+ * });
964
+ *
965
+ * console.log(maxHeap.size); // 3;
966
+ *
967
+ * // Peek returns highest priority task
968
+ * const topTask = maxHeap.peek();
969
+ * console.log(topTask?.priority); // 8;
970
+ * console.log(topTask?.name); // 'Alert';
971
+ */
972
+ /**
973
+ * @deprecated Use `pop` instead. Will be removed in a future major version.
909
974
  * @example
910
975
  * // Heap with custom comparator (MaxHeap behavior)
911
976
  * interface Task {
@@ -933,6 +998,14 @@ var _Heap = class _Heap extends IterableElementBase {
933
998
  * console.log(topTask?.name); // 'Alert';
934
999
  */
935
1000
  poll() {
1001
+ return this.pop();
1002
+ }
1003
+ /**
1004
+ * Remove and return the top element (min or max depending on comparator).
1005
+ * @remarks Time O(log N) amortized, Space O(1)
1006
+ * @returns The removed top element, or undefined if empty.
1007
+ */
1008
+ pop() {
936
1009
  if (this.elements.length === 0) return;
937
1010
  const value = this.elements[0];
938
1011
  const last = this.elements.pop();
@@ -968,6 +1041,14 @@ var _Heap = class _Heap extends IterableElementBase {
968
1041
 
969
1042
 
970
1043
 
1044
+
1045
+
1046
+
1047
+
1048
+
1049
+
1050
+
1051
+
971
1052
 
972
1053
 
973
1054
 
@@ -1064,6 +1145,14 @@ var _Heap = class _Heap extends IterableElementBase {
1064
1145
 
1065
1146
 
1066
1147
 
1148
+
1149
+
1150
+
1151
+
1152
+
1153
+
1154
+
1155
+
1067
1156
 
1068
1157
 
1069
1158
 
@@ -1107,6 +1196,14 @@ var _Heap = class _Heap extends IterableElementBase {
1107
1196
 
1108
1197
 
1109
1198
 
1199
+
1200
+
1201
+
1202
+
1203
+
1204
+
1205
+
1206
+
1110
1207
 
1111
1208
 
1112
1209
 
@@ -1125,16 +1222,6 @@ var _Heap = class _Heap extends IterableElementBase {
1125
1222
  clear() {
1126
1223
  this._elements = [];
1127
1224
  }
1128
- /**
1129
- * Replace the backing array and rebuild the heap.
1130
- * @remarks Time O(N), Space O(N)
1131
- * @param elements - Iterable used to refill the heap.
1132
- * @returns Array of per-node results from fixing steps.
1133
- */
1134
- refill(elements) {
1135
- this._elements = Array.from(elements);
1136
- return this.fix();
1137
- }
1138
1225
  /**
1139
1226
  * Check if an equal element exists in the heap.
1140
1227
  * @remarks Time O(N), Space O(1)
@@ -1153,6 +1240,14 @@ var _Heap = class _Heap extends IterableElementBase {
1153
1240
 
1154
1241
 
1155
1242
 
1243
+
1244
+
1245
+
1246
+
1247
+
1248
+
1249
+
1250
+
1156
1251
 
1157
1252
 
1158
1253
 
@@ -1196,6 +1291,14 @@ var _Heap = class _Heap extends IterableElementBase {
1196
1291
 
1197
1292
 
1198
1293
 
1294
+
1295
+
1296
+
1297
+
1298
+
1299
+
1300
+
1301
+
1199
1302
 
1200
1303
 
1201
1304
 
@@ -1221,7 +1324,7 @@ var _Heap = class _Heap extends IterableElementBase {
1221
1324
  }
1222
1325
  if (index < 0) return false;
1223
1326
  if (index === 0) {
1224
- this.poll();
1327
+ this.pop();
1225
1328
  } else if (index === this.elements.length - 1) {
1226
1329
  this.elements.pop();
1227
1330
  } else {
@@ -1231,13 +1334,19 @@ var _Heap = class _Heap extends IterableElementBase {
1231
1334
  }
1232
1335
  return true;
1233
1336
  }
1337
+ /**
1338
+ * @deprecated Use `deleteWhere` instead. Will be removed in a future major version.
1339
+ */
1340
+ deleteBy(predicate) {
1341
+ return this.deleteWhere(predicate);
1342
+ }
1234
1343
  /**
1235
1344
  * Delete the first element that matches a predicate.
1236
1345
  * @remarks Time O(N), Space O(1)
1237
1346
  * @param predicate - Function (element, index, heap) → boolean.
1238
1347
  * @returns True if an element was removed.
1239
1348
  */
1240
- deleteBy(predicate) {
1349
+ deleteWhere(predicate) {
1241
1350
  let idx = -1;
1242
1351
  for (let i = 0; i < this.elements.length; i++) {
1243
1352
  if (predicate(this.elements[i], i, this)) {
@@ -1247,7 +1356,7 @@ var _Heap = class _Heap extends IterableElementBase {
1247
1356
  }
1248
1357
  if (idx < 0) return false;
1249
1358
  if (idx === 0) {
1250
- this.poll();
1359
+ this.pop();
1251
1360
  } else if (idx === this.elements.length - 1) {
1252
1361
  this.elements.pop();
1253
1362
  } else {
@@ -1285,6 +1394,14 @@ var _Heap = class _Heap extends IterableElementBase {
1285
1394
 
1286
1395
 
1287
1396
 
1397
+
1398
+
1399
+
1400
+
1401
+
1402
+
1403
+
1404
+
1288
1405
 
1289
1406
 
1290
1407
 
@@ -1361,6 +1478,14 @@ var _Heap = class _Heap extends IterableElementBase {
1361
1478
 
1362
1479
 
1363
1480
 
1481
+
1482
+
1483
+
1484
+
1485
+
1486
+
1487
+
1488
+
1364
1489
 
1365
1490
 
1366
1491
 
@@ -1410,6 +1535,14 @@ var _Heap = class _Heap extends IterableElementBase {
1410
1535
 
1411
1536
 
1412
1537
 
1538
+
1539
+
1540
+
1541
+
1542
+
1543
+
1544
+
1545
+
1413
1546
 
1414
1547
 
1415
1548
 
@@ -1458,6 +1591,14 @@ var _Heap = class _Heap extends IterableElementBase {
1458
1591
 
1459
1592
 
1460
1593
 
1594
+
1595
+
1596
+
1597
+
1598
+
1599
+
1600
+
1601
+
1461
1602
 
1462
1603
 
1463
1604
 
@@ -1513,6 +1654,14 @@ var _Heap = class _Heap extends IterableElementBase {
1513
1654
 
1514
1655
 
1515
1656
 
1657
+
1658
+
1659
+
1660
+
1661
+
1662
+
1663
+
1664
+
1516
1665
 
1517
1666
 
1518
1667
 
@@ -1530,7 +1679,7 @@ var _Heap = class _Heap extends IterableElementBase {
1530
1679
  */
1531
1680
  map(callback, options, thisArg) {
1532
1681
  const { comparator, toElementFn, ...rest } = options != null ? options : {};
1533
- if (!comparator) throw new TypeError(ERR.comparatorRequired("Heap.map"));
1682
+ if (!comparator) raise(TypeError, ERR.comparatorRequired("Heap.map"));
1534
1683
  const out = this._createLike([], { ...rest, comparator, toElementFn });
1535
1684
  let i = 0;
1536
1685
  for (const x of this) {
@@ -1712,6 +1861,14 @@ var _Queue = class _Queue extends LinearBase {
1712
1861
 
1713
1862
 
1714
1863
 
1864
+
1865
+
1866
+
1867
+
1868
+
1869
+
1870
+
1871
+
1715
1872
 
1716
1873
 
1717
1874
 
@@ -1758,6 +1915,14 @@ var _Queue = class _Queue extends LinearBase {
1758
1915
 
1759
1916
 
1760
1917
 
1918
+
1919
+
1920
+
1921
+
1922
+
1923
+
1924
+
1925
+
1761
1926
 
1762
1927
 
1763
1928
 
@@ -1776,6 +1941,14 @@ var _Queue = class _Queue extends LinearBase {
1776
1941
  get first() {
1777
1942
  return this.length > 0 ? this.elements[this._offset] : void 0;
1778
1943
  }
1944
+ /**
1945
+ * Peek at the front element without removing it (alias for `first`).
1946
+ * @remarks Time O(1), Space O(1)
1947
+ * @returns Front element or undefined.
1948
+ */
1949
+ peek() {
1950
+ return this.first;
1951
+ }
1779
1952
  /**
1780
1953
  * Get the last element (back) without removing it.
1781
1954
  * @remarks Time O(1), Space O(1)
@@ -1820,6 +1993,14 @@ var _Queue = class _Queue extends LinearBase {
1820
1993
 
1821
1994
 
1822
1995
 
1996
+
1997
+
1998
+
1999
+
2000
+
2001
+
2002
+
2003
+
1823
2004
 
1824
2005
 
1825
2006
 
@@ -1878,6 +2059,14 @@ var _Queue = class _Queue extends LinearBase {
1878
2059
 
1879
2060
 
1880
2061
 
2062
+
2063
+
2064
+
2065
+
2066
+
2067
+
2068
+
2069
+
1881
2070
 
1882
2071
 
1883
2072
 
@@ -1943,6 +2132,14 @@ var _Queue = class _Queue extends LinearBase {
1943
2132
 
1944
2133
 
1945
2134
 
2135
+
2136
+
2137
+
2138
+
2139
+
2140
+
2141
+
2142
+
1946
2143
 
1947
2144
 
1948
2145
 
@@ -1998,6 +2195,14 @@ var _Queue = class _Queue extends LinearBase {
1998
2195
 
1999
2196
 
2000
2197
 
2198
+
2199
+
2200
+
2201
+
2202
+
2203
+
2204
+
2205
+
2001
2206
 
2002
2207
 
2003
2208
 
@@ -2046,6 +2251,14 @@ var _Queue = class _Queue extends LinearBase {
2046
2251
 
2047
2252
 
2048
2253
 
2254
+
2255
+
2256
+
2257
+
2258
+
2259
+
2260
+
2261
+
2049
2262
 
2050
2263
 
2051
2264
 
@@ -2101,6 +2314,21 @@ var _Queue = class _Queue extends LinearBase {
2101
2314
  this._elements[this._offset + index] = newElement;
2102
2315
  return true;
2103
2316
  }
2317
+ /**
2318
+ * Delete the first element that satisfies a predicate.
2319
+ * @remarks Time O(N), Space O(N)
2320
+ * @param predicate - Function (value, index, queue) → boolean to decide deletion.
2321
+ * @returns True if a match was removed.
2322
+ */
2323
+ deleteWhere(predicate) {
2324
+ for (let i = 0; i < this.length; i++) {
2325
+ if (predicate(this._elements[this._offset + i], i, this)) {
2326
+ this.deleteAt(i);
2327
+ return true;
2328
+ }
2329
+ }
2330
+ return false;
2331
+ }
2104
2332
  /**
2105
2333
  * Reverse the queue in-place by compacting then reversing.
2106
2334
  * @remarks Time O(N), Space O(N)
@@ -2135,6 +2363,14 @@ var _Queue = class _Queue extends LinearBase {
2135
2363
 
2136
2364
 
2137
2365
 
2366
+
2367
+
2368
+
2369
+
2370
+
2371
+
2372
+
2373
+
2138
2374
 
2139
2375
 
2140
2376
 
@@ -2177,6 +2413,14 @@ var _Queue = class _Queue extends LinearBase {
2177
2413
 
2178
2414
 
2179
2415
 
2416
+
2417
+
2418
+
2419
+
2420
+
2421
+
2422
+
2423
+
2180
2424
 
2181
2425
 
2182
2426
 
@@ -2242,6 +2486,14 @@ var _Queue = class _Queue extends LinearBase {
2242
2486
 
2243
2487
 
2244
2488
 
2489
+
2490
+
2491
+
2492
+
2493
+
2494
+
2495
+
2496
+
2245
2497
 
2246
2498
 
2247
2499
 
@@ -2291,6 +2543,14 @@ var _Queue = class _Queue extends LinearBase {
2291
2543
 
2292
2544
 
2293
2545
 
2546
+
2547
+
2548
+
2549
+
2550
+
2551
+
2552
+
2553
+
2294
2554
 
2295
2555
 
2296
2556
 
@@ -2344,6 +2604,14 @@ var _Queue = class _Queue extends LinearBase {
2344
2604
 
2345
2605
 
2346
2606
 
2607
+
2608
+
2609
+
2610
+
2611
+
2612
+
2613
+
2614
+
2347
2615
 
2348
2616
 
2349
2617
 
@@ -2587,7 +2855,7 @@ var _AbstractGraph = class _AbstractGraph extends IterableEntryBase {
2587
2855
  const newEdge = this.createEdge(srcOrEdge, dest, weight, value);
2588
2856
  return this._addEdge(newEdge);
2589
2857
  } else {
2590
- throw new TypeError(ERR.invalidArgument("dest must be a Vertex or vertex key when srcOrEdge is an Edge.", "Graph"));
2858
+ raise(TypeError, ERR.invalidArgument("dest must be a Vertex or vertex key when srcOrEdge is an Edge.", "Graph"));
2591
2859
  }
2592
2860
  }
2593
2861
  }
@@ -3482,6 +3750,14 @@ var _DirectedGraph = class _DirectedGraph extends AbstractGraph {
3482
3750
 
3483
3751
 
3484
3752
 
3753
+
3754
+
3755
+
3756
+
3757
+
3758
+
3759
+
3760
+
3485
3761
 
3486
3762
 
3487
3763
 
@@ -3566,6 +3842,14 @@ var _DirectedGraph = class _DirectedGraph extends AbstractGraph {
3566
3842
 
3567
3843
 
3568
3844
 
3845
+
3846
+
3847
+
3848
+
3849
+
3850
+
3851
+
3852
+
3569
3853
 
3570
3854
 
3571
3855
 
@@ -3648,6 +3932,14 @@ var _DirectedGraph = class _DirectedGraph extends AbstractGraph {
3648
3932
 
3649
3933
 
3650
3934
 
3935
+
3936
+
3937
+
3938
+
3939
+
3940
+
3941
+
3942
+
3651
3943
 
3652
3944
 
3653
3945
 
@@ -3721,6 +4013,14 @@ var _DirectedGraph = class _DirectedGraph extends AbstractGraph {
3721
4013
 
3722
4014
 
3723
4015
 
4016
+
4017
+
4018
+
4019
+
4020
+
4021
+
4022
+
4023
+
3724
4024
 
3725
4025
 
3726
4026
 
@@ -3771,6 +4071,14 @@ var _DirectedGraph = class _DirectedGraph extends AbstractGraph {
3771
4071
 
3772
4072
 
3773
4073
 
4074
+
4075
+
4076
+
4077
+
4078
+
4079
+
4080
+
4081
+
3774
4082
 
3775
4083
 
3776
4084
 
@@ -3874,6 +4182,14 @@ var _DirectedGraph = class _DirectedGraph extends AbstractGraph {
3874
4182
 
3875
4183
 
3876
4184
 
4185
+
4186
+
4187
+
4188
+
4189
+
4190
+
4191
+
4192
+
3877
4193
 
3878
4194
 
3879
4195
 
@@ -3958,6 +4274,14 @@ var _DirectedGraph = class _DirectedGraph extends AbstractGraph {
3958
4274
 
3959
4275
 
3960
4276
 
4277
+
4278
+
4279
+
4280
+
4281
+
4282
+
4283
+
4284
+
3961
4285
 
3962
4286
 
3963
4287
 
@@ -4004,6 +4328,14 @@ var _DirectedGraph = class _DirectedGraph extends AbstractGraph {
4004
4328
 
4005
4329
 
4006
4330
 
4331
+
4332
+
4333
+
4334
+
4335
+
4336
+
4337
+
4338
+
4007
4339
 
4008
4340
 
4009
4341
 
@@ -4103,6 +4435,14 @@ var _DirectedGraph = class _DirectedGraph extends AbstractGraph {
4103
4435
 
4104
4436
 
4105
4437
 
4438
+
4439
+
4440
+
4441
+
4442
+
4443
+
4444
+
4445
+
4106
4446
 
4107
4447
 
4108
4448
 
@@ -4205,6 +4545,14 @@ var _DirectedGraph = class _DirectedGraph extends AbstractGraph {
4205
4545
 
4206
4546
 
4207
4547
 
4548
+
4549
+
4550
+
4551
+
4552
+
4553
+
4554
+
4555
+
4208
4556
 
4209
4557
 
4210
4558
 
@@ -4371,6 +4719,14 @@ var _UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
4371
4719
 
4372
4720
 
4373
4721
 
4722
+
4723
+
4724
+
4725
+
4726
+
4727
+
4728
+
4729
+
4374
4730
 
4375
4731
 
4376
4732
 
@@ -4452,6 +4808,14 @@ var _UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
4452
4808
 
4453
4809
 
4454
4810
 
4811
+
4812
+
4813
+
4814
+
4815
+
4816
+
4817
+
4818
+
4455
4819
 
4456
4820
 
4457
4821
 
@@ -4532,6 +4896,14 @@ var _UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
4532
4896
 
4533
4897
 
4534
4898
 
4899
+
4900
+
4901
+
4902
+
4903
+
4904
+
4905
+
4906
+
4535
4907
 
4536
4908
 
4537
4909
 
@@ -4627,6 +4999,14 @@ var _UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
4627
4999
 
4628
5000
 
4629
5001
 
5002
+
5003
+
5004
+
5005
+
5006
+
5007
+
5008
+
5009
+
4630
5010
 
4631
5011
 
4632
5012
 
@@ -4677,6 +5057,14 @@ var _UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
4677
5057
 
4678
5058
 
4679
5059
 
5060
+
5061
+
5062
+
5063
+
5064
+
5065
+
5066
+
5067
+
4680
5068
 
4681
5069
 
4682
5070
 
@@ -4797,6 +5185,14 @@ var _UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
4797
5185
 
4798
5186
 
4799
5187
 
5188
+
5189
+
5190
+
5191
+
5192
+
5193
+
5194
+
5195
+
4800
5196
 
4801
5197
 
4802
5198
 
@@ -4939,6 +5335,14 @@ var _UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
4939
5335
 
4940
5336
 
4941
5337
 
5338
+
5339
+
5340
+
5341
+
5342
+
5343
+
5344
+
5345
+
4942
5346
 
4943
5347
 
4944
5348
 
@@ -5003,6 +5407,14 @@ var _UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
5003
5407
 
5004
5408
 
5005
5409
 
5410
+
5411
+
5412
+
5413
+
5414
+
5415
+
5416
+
5417
+
5006
5418
 
5007
5419
 
5008
5420
 
@@ -5049,6 +5461,14 @@ var _UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
5049
5461
 
5050
5462
 
5051
5463
 
5464
+
5465
+
5466
+
5467
+
5468
+
5469
+
5470
+
5471
+
5052
5472
 
5053
5473
 
5054
5474