data-structure-typed 2.5.2 → 2.6.0

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 (162) hide show
  1. package/.husky/pre-commit +3 -0
  2. package/CHANGELOG.md +3 -1
  3. package/MIGRATION.md +217 -0
  4. package/README.md +80 -8
  5. package/README_CN.md +569 -143
  6. package/SPECIFICATION.md +44 -14
  7. package/SPECIFICATION.zh-CN.md +44 -14
  8. package/dist/cjs/binary-tree.cjs +5841 -1678
  9. package/dist/cjs/graph.cjs +422 -14
  10. package/dist/cjs/hash.cjs +95 -7
  11. package/dist/cjs/heap.cjs +174 -16
  12. package/dist/cjs/index.cjs +7751 -2449
  13. package/dist/cjs/linked-list.cjs +443 -2
  14. package/dist/cjs/matrix.cjs +56 -0
  15. package/dist/cjs/priority-queue.cjs +172 -14
  16. package/dist/cjs/queue.cjs +435 -0
  17. package/dist/cjs/stack.cjs +103 -4
  18. package/dist/cjs/trie.cjs +106 -0
  19. package/dist/cjs-legacy/binary-tree.cjs +5933 -1772
  20. package/dist/cjs-legacy/graph.cjs +422 -14
  21. package/dist/cjs-legacy/hash.cjs +95 -7
  22. package/dist/cjs-legacy/heap.cjs +174 -16
  23. package/dist/cjs-legacy/index.cjs +8154 -2854
  24. package/dist/cjs-legacy/linked-list.cjs +443 -2
  25. package/dist/cjs-legacy/matrix.cjs +56 -0
  26. package/dist/cjs-legacy/priority-queue.cjs +172 -14
  27. package/dist/cjs-legacy/queue.cjs +435 -0
  28. package/dist/cjs-legacy/stack.cjs +103 -4
  29. package/dist/cjs-legacy/trie.cjs +106 -0
  30. package/dist/esm/binary-tree.mjs +5841 -1678
  31. package/dist/esm/graph.mjs +422 -14
  32. package/dist/esm/hash.mjs +95 -7
  33. package/dist/esm/heap.mjs +174 -16
  34. package/dist/esm/index.mjs +7751 -2449
  35. package/dist/esm/linked-list.mjs +443 -2
  36. package/dist/esm/matrix.mjs +56 -0
  37. package/dist/esm/priority-queue.mjs +172 -14
  38. package/dist/esm/queue.mjs +435 -0
  39. package/dist/esm/stack.mjs +103 -4
  40. package/dist/esm/trie.mjs +106 -0
  41. package/dist/esm-legacy/binary-tree.mjs +5933 -1772
  42. package/dist/esm-legacy/graph.mjs +422 -14
  43. package/dist/esm-legacy/hash.mjs +95 -7
  44. package/dist/esm-legacy/heap.mjs +174 -16
  45. package/dist/esm-legacy/index.mjs +8154 -2854
  46. package/dist/esm-legacy/linked-list.mjs +443 -2
  47. package/dist/esm-legacy/matrix.mjs +56 -0
  48. package/dist/esm-legacy/priority-queue.mjs +172 -14
  49. package/dist/esm-legacy/queue.mjs +435 -0
  50. package/dist/esm-legacy/stack.mjs +103 -4
  51. package/dist/esm-legacy/trie.mjs +106 -0
  52. package/dist/types/data-structures/base/iterable-element-base.d.ts +17 -0
  53. package/dist/types/data-structures/base/linear-base.d.ts +6 -0
  54. package/dist/types/data-structures/binary-tree/avl-tree.d.ts +86 -2
  55. package/dist/types/data-structures/binary-tree/binary-indexed-tree.d.ts +98 -0
  56. package/dist/types/data-structures/binary-tree/binary-tree.d.ts +191 -15
  57. package/dist/types/data-structures/binary-tree/bst.d.ts +171 -3
  58. package/dist/types/data-structures/binary-tree/red-black-tree.d.ts +136 -8
  59. package/dist/types/data-structures/binary-tree/segment-tree.d.ts +42 -0
  60. package/dist/types/data-structures/binary-tree/tree-map.d.ts +1061 -167
  61. package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +1232 -355
  62. package/dist/types/data-structures/binary-tree/tree-multi-set.d.ts +916 -194
  63. package/dist/types/data-structures/binary-tree/tree-set.d.ts +1078 -141
  64. package/dist/types/data-structures/graph/directed-graph.d.ts +70 -0
  65. package/dist/types/data-structures/graph/undirected-graph.d.ts +63 -0
  66. package/dist/types/data-structures/hash/hash-map.d.ts +84 -6
  67. package/dist/types/data-structures/heap/heap.d.ts +140 -12
  68. package/dist/types/data-structures/linked-list/doubly-linked-list.d.ts +150 -2
  69. package/dist/types/data-structures/linked-list/singly-linked-list.d.ts +106 -1
  70. package/dist/types/data-structures/linked-list/skip-linked-list.d.ts +126 -0
  71. package/dist/types/data-structures/matrix/matrix.d.ts +56 -0
  72. package/dist/types/data-structures/queue/deque.d.ts +171 -0
  73. package/dist/types/data-structures/queue/queue.d.ts +97 -0
  74. package/dist/types/data-structures/stack/stack.d.ts +72 -2
  75. package/dist/types/data-structures/trie/trie.d.ts +84 -0
  76. package/dist/types/interfaces/binary-tree.d.ts +2 -3
  77. package/dist/umd/data-structure-typed.js +7784 -2484
  78. package/dist/umd/data-structure-typed.min.js +4 -4
  79. package/docs-site-docusaurus/docs/api/classes/AVLTree.md +188 -200
  80. package/docs-site-docusaurus/docs/api/classes/AVLTreeNode.md +11 -11
  81. package/docs-site-docusaurus/docs/api/classes/AbstractGraph.md +62 -62
  82. package/docs-site-docusaurus/docs/api/classes/BST.md +183 -195
  83. package/docs-site-docusaurus/docs/api/classes/BSTNode.md +13 -13
  84. package/docs-site-docusaurus/docs/api/classes/BinaryIndexedTree.md +15 -15
  85. package/docs-site-docusaurus/docs/api/classes/BinaryTree.md +143 -155
  86. package/docs-site-docusaurus/docs/api/classes/BinaryTreeNode.md +13 -13
  87. package/docs-site-docusaurus/docs/api/classes/Deque.md +99 -85
  88. package/docs-site-docusaurus/docs/api/classes/DirectedGraph.md +73 -73
  89. package/docs-site-docusaurus/docs/api/classes/DoublyLinkedList.md +100 -70
  90. package/docs-site-docusaurus/docs/api/classes/DoublyLinkedListNode.md +8 -8
  91. package/docs-site-docusaurus/docs/api/classes/FibonacciHeap.md +12 -12
  92. package/docs-site-docusaurus/docs/api/classes/FibonacciHeapNode.md +1 -1
  93. package/docs-site-docusaurus/docs/api/classes/HashMap.md +38 -38
  94. package/docs-site-docusaurus/docs/api/classes/Heap.md +96 -85
  95. package/docs-site-docusaurus/docs/api/classes/IterableElementBase.md +25 -25
  96. package/docs-site-docusaurus/docs/api/classes/IterableEntryBase.md +23 -23
  97. package/docs-site-docusaurus/docs/api/classes/LinearBase.md +48 -48
  98. package/docs-site-docusaurus/docs/api/classes/LinearLinkedBase.md +52 -52
  99. package/docs-site-docusaurus/docs/api/classes/LinkedHashMap.md +46 -42
  100. package/docs-site-docusaurus/docs/api/classes/LinkedListNode.md +6 -6
  101. package/docs-site-docusaurus/docs/api/classes/LinkedListQueue.md +74 -74
  102. package/docs-site-docusaurus/docs/api/classes/MapGraph.md +73 -73
  103. package/docs-site-docusaurus/docs/api/classes/Matrix.md +31 -31
  104. package/docs-site-docusaurus/docs/api/classes/MaxHeap.md +104 -89
  105. package/docs-site-docusaurus/docs/api/classes/MaxPriorityQueue.md +104 -89
  106. package/docs-site-docusaurus/docs/api/classes/MinHeap.md +104 -89
  107. package/docs-site-docusaurus/docs/api/classes/MinPriorityQueue.md +104 -89
  108. package/docs-site-docusaurus/docs/api/classes/Navigator.md +5 -5
  109. package/docs-site-docusaurus/docs/api/classes/PriorityQueue.md +103 -88
  110. package/docs-site-docusaurus/docs/api/classes/Queue.md +111 -59
  111. package/docs-site-docusaurus/docs/api/classes/RedBlackTree.md +200 -212
  112. package/docs-site-docusaurus/docs/api/classes/SegmentTree.md +10 -10
  113. package/docs-site-docusaurus/docs/api/classes/SinglyLinkedList.md +75 -75
  114. package/docs-site-docusaurus/docs/api/classes/SinglyLinkedListNode.md +6 -6
  115. package/docs-site-docusaurus/docs/api/classes/SkipList.md +37 -37
  116. package/docs-site-docusaurus/docs/api/classes/Stack.md +42 -42
  117. package/docs-site-docusaurus/docs/api/classes/TreeMap.md +107 -36
  118. package/docs-site-docusaurus/docs/api/classes/TreeMultiMap.md +43 -43
  119. package/docs-site-docusaurus/docs/api/classes/TreeSet.md +106 -35
  120. package/docs-site-docusaurus/docs/api/classes/Trie.md +43 -43
  121. package/docs-site-docusaurus/docs/api/classes/TrieNode.md +8 -8
  122. package/docs-site-docusaurus/docs/api/classes/UndirectedGraph.md +72 -72
  123. package/docs-site-docusaurus/docs/guide/architecture.md +75 -7
  124. package/docs-site-docusaurus/docs/guide/concepts.md +53 -34
  125. package/docs-site-docusaurus/docs/guide/faq.md +53 -0
  126. package/docs-site-docusaurus/docs/guide/guides.md +8 -9
  127. package/docs-site-docusaurus/docs/guide/integrations.md +74 -177
  128. package/docs-site-docusaurus/docs/guide/overview.md +131 -17
  129. package/docs-site-docusaurus/src/pages/index.tsx +4 -0
  130. package/docs-site-docusaurus/typedoc.json +1 -0
  131. package/jest.integration.config.js +1 -2
  132. package/package.json +10 -7
  133. package/src/data-structures/base/iterable-element-base.ts +32 -0
  134. package/src/data-structures/base/linear-base.ts +11 -0
  135. package/src/data-structures/binary-tree/avl-tree.ts +88 -5
  136. package/src/data-structures/binary-tree/binary-indexed-tree.ts +98 -0
  137. package/src/data-structures/binary-tree/binary-tree.ts +242 -81
  138. package/src/data-structures/binary-tree/bst.ts +173 -7
  139. package/src/data-structures/binary-tree/red-black-tree.ts +139 -15
  140. package/src/data-structures/binary-tree/segment-tree.ts +42 -0
  141. package/src/data-structures/binary-tree/tree-map.ts +948 -36
  142. package/src/data-structures/binary-tree/tree-multi-map.ts +893 -13
  143. package/src/data-structures/binary-tree/tree-multi-set.ts +761 -33
  144. package/src/data-structures/binary-tree/tree-set.ts +1260 -251
  145. package/src/data-structures/graph/directed-graph.ts +71 -1
  146. package/src/data-structures/graph/undirected-graph.ts +64 -1
  147. package/src/data-structures/hash/hash-map.ts +100 -12
  148. package/src/data-structures/heap/heap.ts +149 -19
  149. package/src/data-structures/linked-list/doubly-linked-list.ts +178 -2
  150. package/src/data-structures/linked-list/singly-linked-list.ts +106 -1
  151. package/src/data-structures/linked-list/skip-linked-list.ts +126 -0
  152. package/src/data-structures/matrix/matrix.ts +56 -0
  153. package/src/data-structures/queue/deque.ts +187 -0
  154. package/src/data-structures/queue/queue.ts +109 -0
  155. package/src/data-structures/stack/stack.ts +75 -5
  156. package/src/data-structures/trie/trie.ts +84 -0
  157. package/src/interfaces/binary-tree.ts +1 -9
  158. package/.vitepress/cache/deps_temp_51f5f1b0/chunk-7OIKW5WK.js +0 -12984
  159. package/.vitepress/cache/deps_temp_51f5f1b0/package.json +0 -3
  160. package/.vitepress/cache/deps_temp_51f5f1b0/vitepress___@vue_devtools-api.js +0 -4505
  161. package/.vitepress/cache/deps_temp_51f5f1b0/vitepress___@vueuse_core.js +0 -9731
  162. package/.vitepress/cache/deps_temp_51f5f1b0/vue.js +0 -347
@@ -387,6 +387,35 @@ var _IterableElementBase = class _IterableElementBase {
387
387
  for (const ele of this) if (ele === element) return true;
388
388
  return false;
389
389
  }
390
+ /**
391
+ * Check whether a value exists (Array-compatible alias for `has`).
392
+ * @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1).
393
+ * @param element - Element to search for (uses `===`).
394
+ * @returns `true` if found.
395
+ */
396
+ includes(element) {
397
+ return this.has(element);
398
+ }
399
+ /**
400
+ * Return an iterator of `[index, value]` pairs (Array-compatible).
401
+ * @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1) per step.
402
+ */
403
+ *entries() {
404
+ let index = 0;
405
+ for (const value of this) {
406
+ yield [index++, value];
407
+ }
408
+ }
409
+ /**
410
+ * Return an iterator of numeric indices (Array-compatible).
411
+ * @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1) per step.
412
+ */
413
+ *keys() {
414
+ let index = 0;
415
+ for (const _ of this) {
416
+ yield index++;
417
+ }
418
+ }
390
419
  /**
391
420
  * Reduces all elements to a single accumulated value.
392
421
  *
@@ -648,6 +677,16 @@ var _LinearBase = class _LinearBase extends IterableElementBase {
648
677
  }
649
678
  return this;
650
679
  }
680
+ /**
681
+ * Return a new instance of the same type with elements in reverse order (non-mutating).
682
+ * @remarks Provided for familiarity when migrating from Array (ES2023 `toReversed`). Time O(n), Space O(n).
683
+ * @returns A new reversed instance.
684
+ */
685
+ toReversed() {
686
+ const cloned = this.clone();
687
+ cloned.reverse();
688
+ return cloned;
689
+ }
651
690
  };
652
691
  __name(_LinearBase, "LinearBase");
653
692
  var LinearBase = _LinearBase;
@@ -719,6 +758,13 @@ var _Heap = class _Heap extends IterableElementBase {
719
758
 
720
759
 
721
760
 
761
+
762
+
763
+
764
+
765
+
766
+
767
+
722
768
 
723
769
 
724
770
 
@@ -776,7 +822,7 @@ var _Heap = class _Heap extends IterableElementBase {
776
822
  }
777
823
  /**
778
824
  * Insert an element.
779
- * @remarks Time O(1) amortized, Space O(1)
825
+ * @remarks Time O(log N) amortized, Space O(1)
780
826
  * @param element - Element to insert.
781
827
  * @returns True.
782
828
 
@@ -806,6 +852,13 @@ var _Heap = class _Heap extends IterableElementBase {
806
852
 
807
853
 
808
854
 
855
+
856
+
857
+
858
+
859
+
860
+
861
+
809
862
 
810
863
 
811
864
 
@@ -863,6 +916,13 @@ var _Heap = class _Heap extends IterableElementBase {
863
916
 
864
917
 
865
918
 
919
+
920
+
921
+
922
+
923
+
924
+
925
+
866
926
 
867
927
 
868
928
 
@@ -926,7 +986,41 @@ var _Heap = class _Heap extends IterableElementBase {
926
986
 
927
987
 
928
988
 
989
+
990
+
991
+
929
992
 
993
+
994
+
995
+
996
+ * @example
997
+ * // Heap with custom comparator (MaxHeap behavior)
998
+ * interface Task {
999
+ * id: number;
1000
+ * priority: number;
1001
+ * name: string;
1002
+ * }
1003
+ *
1004
+ * // Custom comparator for max heap behavior (higher priority first)
1005
+ * const tasks: Task[] = [
1006
+ * { id: 1, priority: 5, name: 'Email' },
1007
+ * { id: 2, priority: 3, name: 'Chat' },
1008
+ * { id: 3, priority: 8, name: 'Alert' }
1009
+ * ];
1010
+ *
1011
+ * const maxHeap = new Heap(tasks, {
1012
+ * comparator: (a: Task, b: Task) => b.priority - a.priority
1013
+ * });
1014
+ *
1015
+ * console.log(maxHeap.size); // 3;
1016
+ *
1017
+ * // Peek returns highest priority task
1018
+ * const topTask = maxHeap.peek();
1019
+ * console.log(topTask?.priority); // 8;
1020
+ * console.log(topTask?.name); // 'Alert';
1021
+ */
1022
+ /**
1023
+ * @deprecated Use `pop` instead. Will be removed in a future major version.
930
1024
 
931
1025
 
932
1026
 
@@ -957,6 +1051,14 @@ var _Heap = class _Heap extends IterableElementBase {
957
1051
  * console.log(topTask?.name); // 'Alert';
958
1052
  */
959
1053
  poll() {
1054
+ return this.pop();
1055
+ }
1056
+ /**
1057
+ * Remove and return the top element (min or max depending on comparator).
1058
+ * @remarks Time O(log N) amortized, Space O(1)
1059
+ * @returns The removed top element, or undefined if empty.
1060
+ */
1061
+ pop() {
960
1062
  if (this.elements.length === 0) return;
961
1063
  const value = this.elements[0];
962
1064
  const last = this.elements.pop();
@@ -997,6 +1099,13 @@ var _Heap = class _Heap extends IterableElementBase {
997
1099
 
998
1100
 
999
1101
 
1102
+
1103
+
1104
+
1105
+
1106
+
1107
+
1108
+
1000
1109
 
1001
1110
 
1002
1111
 
@@ -1097,6 +1206,13 @@ var _Heap = class _Heap extends IterableElementBase {
1097
1206
 
1098
1207
 
1099
1208
 
1209
+
1210
+
1211
+
1212
+
1213
+
1214
+
1215
+
1100
1216
 
1101
1217
 
1102
1218
 
@@ -1144,6 +1260,13 @@ var _Heap = class _Heap extends IterableElementBase {
1144
1260
 
1145
1261
 
1146
1262
 
1263
+
1264
+
1265
+
1266
+
1267
+
1268
+
1269
+
1147
1270
 
1148
1271
 
1149
1272
 
@@ -1161,16 +1284,6 @@ var _Heap = class _Heap extends IterableElementBase {
1161
1284
  clear() {
1162
1285
  this._elements = [];
1163
1286
  }
1164
- /**
1165
- * Replace the backing array and rebuild the heap.
1166
- * @remarks Time O(N), Space O(N)
1167
- * @param elements - Iterable used to refill the heap.
1168
- * @returns Array of per-node results from fixing steps.
1169
- */
1170
- refill(elements) {
1171
- this._elements = Array.from(elements);
1172
- return this.fix();
1173
- }
1174
1287
  /**
1175
1288
  * Check if an equal element exists in the heap.
1176
1289
  * @remarks Time O(N), Space O(1)
@@ -1194,6 +1307,13 @@ var _Heap = class _Heap extends IterableElementBase {
1194
1307
 
1195
1308
 
1196
1309
 
1310
+
1311
+
1312
+
1313
+
1314
+
1315
+
1316
+
1197
1317
 
1198
1318
 
1199
1319
 
@@ -1241,6 +1361,13 @@ var _Heap = class _Heap extends IterableElementBase {
1241
1361
 
1242
1362
 
1243
1363
 
1364
+
1365
+
1366
+
1367
+
1368
+
1369
+
1370
+
1244
1371
 
1245
1372
 
1246
1373
 
@@ -1265,7 +1392,7 @@ var _Heap = class _Heap extends IterableElementBase {
1265
1392
  }
1266
1393
  if (index < 0) return false;
1267
1394
  if (index === 0) {
1268
- this.poll();
1395
+ this.pop();
1269
1396
  } else if (index === this.elements.length - 1) {
1270
1397
  this.elements.pop();
1271
1398
  } else {
@@ -1275,13 +1402,19 @@ var _Heap = class _Heap extends IterableElementBase {
1275
1402
  }
1276
1403
  return true;
1277
1404
  }
1405
+ /**
1406
+ * @deprecated Use `deleteWhere` instead. Will be removed in a future major version.
1407
+ */
1408
+ deleteBy(predicate) {
1409
+ return this.deleteWhere(predicate);
1410
+ }
1278
1411
  /**
1279
1412
  * Delete the first element that matches a predicate.
1280
1413
  * @remarks Time O(N), Space O(1)
1281
1414
  * @param predicate - Function (element, index, heap) → boolean.
1282
1415
  * @returns True if an element was removed.
1283
1416
  */
1284
- deleteBy(predicate) {
1417
+ deleteWhere(predicate) {
1285
1418
  let idx = -1;
1286
1419
  for (let i = 0; i < this.elements.length; i++) {
1287
1420
  if (predicate(this.elements[i], i, this)) {
@@ -1291,7 +1424,7 @@ var _Heap = class _Heap extends IterableElementBase {
1291
1424
  }
1292
1425
  if (idx < 0) return false;
1293
1426
  if (idx === 0) {
1294
- this.poll();
1427
+ this.pop();
1295
1428
  } else if (idx === this.elements.length - 1) {
1296
1429
  this.elements.pop();
1297
1430
  } else {
@@ -1334,6 +1467,13 @@ var _Heap = class _Heap extends IterableElementBase {
1334
1467
 
1335
1468
 
1336
1469
 
1470
+
1471
+
1472
+
1473
+
1474
+
1475
+
1476
+
1337
1477
 
1338
1478
 
1339
1479
 
@@ -1414,6 +1554,13 @@ var _Heap = class _Heap extends IterableElementBase {
1414
1554
 
1415
1555
 
1416
1556
 
1557
+
1558
+
1559
+
1560
+
1561
+
1562
+
1563
+
1417
1564
 
1418
1565
 
1419
1566
 
@@ -1467,6 +1614,13 @@ var _Heap = class _Heap extends IterableElementBase {
1467
1614
 
1468
1615
 
1469
1616
 
1617
+
1618
+
1619
+
1620
+
1621
+
1622
+
1623
+
1470
1624
 
1471
1625
 
1472
1626
 
@@ -1519,6 +1673,13 @@ var _Heap = class _Heap extends IterableElementBase {
1519
1673
 
1520
1674
 
1521
1675
 
1676
+
1677
+
1678
+
1679
+
1680
+
1681
+
1682
+
1522
1683
 
1523
1684
 
1524
1685
 
@@ -1578,6 +1739,13 @@ var _Heap = class _Heap extends IterableElementBase {
1578
1739
 
1579
1740
 
1580
1741
 
1742
+
1743
+
1744
+
1745
+
1746
+
1747
+
1748
+
1581
1749
 
1582
1750
 
1583
1751
 
@@ -1781,6 +1949,13 @@ var _Queue = class _Queue extends LinearBase {
1781
1949
 
1782
1950
 
1783
1951
 
1952
+
1953
+
1954
+
1955
+
1956
+
1957
+
1958
+
1784
1959
 
1785
1960
 
1786
1961
 
@@ -1831,6 +2006,13 @@ var _Queue = class _Queue extends LinearBase {
1831
2006
 
1832
2007
 
1833
2008
 
2009
+
2010
+
2011
+
2012
+
2013
+
2014
+
2015
+
1834
2016
 
1835
2017
 
1836
2018
 
@@ -1848,6 +2030,14 @@ var _Queue = class _Queue extends LinearBase {
1848
2030
  get first() {
1849
2031
  return this.length > 0 ? this.elements[this._offset] : void 0;
1850
2032
  }
2033
+ /**
2034
+ * Peek at the front element without removing it (alias for `first`).
2035
+ * @remarks Time O(1), Space O(1)
2036
+ * @returns Front element or undefined.
2037
+ */
2038
+ peek() {
2039
+ return this.first;
2040
+ }
1851
2041
  /**
1852
2042
  * Get the last element (back) without removing it.
1853
2043
  * @remarks Time O(1), Space O(1)
@@ -1897,6 +2087,13 @@ var _Queue = class _Queue extends LinearBase {
1897
2087
 
1898
2088
 
1899
2089
 
2090
+
2091
+
2092
+
2093
+
2094
+
2095
+
2096
+
1900
2097
 
1901
2098
 
1902
2099
 
@@ -1959,6 +2156,13 @@ var _Queue = class _Queue extends LinearBase {
1959
2156
 
1960
2157
 
1961
2158
 
2159
+
2160
+
2161
+
2162
+
2163
+
2164
+
2165
+
1962
2166
 
1963
2167
 
1964
2168
 
@@ -2028,6 +2232,13 @@ var _Queue = class _Queue extends LinearBase {
2028
2232
 
2029
2233
 
2030
2234
 
2235
+
2236
+
2237
+
2238
+
2239
+
2240
+
2241
+
2031
2242
 
2032
2243
 
2033
2244
 
@@ -2087,6 +2298,13 @@ var _Queue = class _Queue extends LinearBase {
2087
2298
 
2088
2299
 
2089
2300
 
2301
+
2302
+
2303
+
2304
+
2305
+
2306
+
2307
+
2090
2308
 
2091
2309
 
2092
2310
 
@@ -2139,6 +2357,13 @@ var _Queue = class _Queue extends LinearBase {
2139
2357
 
2140
2358
 
2141
2359
 
2360
+
2361
+
2362
+
2363
+
2364
+
2365
+
2366
+
2142
2367
 
2143
2368
 
2144
2369
 
@@ -2193,6 +2418,21 @@ var _Queue = class _Queue extends LinearBase {
2193
2418
  this._elements[this._offset + index] = newElement;
2194
2419
  return true;
2195
2420
  }
2421
+ /**
2422
+ * Delete the first element that satisfies a predicate.
2423
+ * @remarks Time O(N), Space O(N)
2424
+ * @param predicate - Function (value, index, queue) → boolean to decide deletion.
2425
+ * @returns True if a match was removed.
2426
+ */
2427
+ deleteWhere(predicate) {
2428
+ for (let i = 0; i < this.length; i++) {
2429
+ if (predicate(this._elements[this._offset + i], i, this)) {
2430
+ this.deleteAt(i);
2431
+ return true;
2432
+ }
2433
+ }
2434
+ return false;
2435
+ }
2196
2436
  /**
2197
2437
  * Reverse the queue in-place by compacting then reversing.
2198
2438
  * @remarks Time O(N), Space O(N)
@@ -2232,6 +2472,13 @@ var _Queue = class _Queue extends LinearBase {
2232
2472
 
2233
2473
 
2234
2474
 
2475
+
2476
+
2477
+
2478
+
2479
+
2480
+
2481
+
2235
2482
 
2236
2483
 
2237
2484
 
@@ -2278,6 +2525,13 @@ var _Queue = class _Queue extends LinearBase {
2278
2525
 
2279
2526
 
2280
2527
 
2528
+
2529
+
2530
+
2531
+
2532
+
2533
+
2534
+
2281
2535
 
2282
2536
 
2283
2537
 
@@ -2347,6 +2601,13 @@ var _Queue = class _Queue extends LinearBase {
2347
2601
 
2348
2602
 
2349
2603
 
2604
+
2605
+
2606
+
2607
+
2608
+
2609
+
2610
+
2350
2611
 
2351
2612
 
2352
2613
 
@@ -2400,6 +2661,13 @@ var _Queue = class _Queue extends LinearBase {
2400
2661
 
2401
2662
 
2402
2663
 
2664
+
2665
+
2666
+
2667
+
2668
+
2669
+
2670
+
2403
2671
 
2404
2672
 
2405
2673
 
@@ -2457,6 +2725,13 @@ var _Queue = class _Queue extends LinearBase {
2457
2725
 
2458
2726
 
2459
2727
 
2728
+
2729
+
2730
+
2731
+
2732
+
2733
+
2734
+
2460
2735
 
2461
2736
 
2462
2737
 
@@ -3599,6 +3874,13 @@ var _DirectedGraph = class _DirectedGraph extends AbstractGraph {
3599
3874
 
3600
3875
 
3601
3876
 
3877
+
3878
+
3879
+
3880
+
3881
+
3882
+
3883
+
3602
3884
 
3603
3885
 
3604
3886
 
@@ -3687,6 +3969,13 @@ var _DirectedGraph = class _DirectedGraph extends AbstractGraph {
3687
3969
 
3688
3970
 
3689
3971
 
3972
+
3973
+
3974
+
3975
+
3976
+
3977
+
3978
+
3690
3979
 
3691
3980
 
3692
3981
 
@@ -3773,6 +4062,13 @@ var _DirectedGraph = class _DirectedGraph extends AbstractGraph {
3773
4062
 
3774
4063
 
3775
4064
 
4065
+
4066
+
4067
+
4068
+
4069
+
4070
+
4071
+
3776
4072
 
3777
4073
 
3778
4074
 
@@ -3850,6 +4146,13 @@ var _DirectedGraph = class _DirectedGraph extends AbstractGraph {
3850
4146
 
3851
4147
 
3852
4148
 
4149
+
4150
+
4151
+
4152
+
4153
+
4154
+
4155
+
3853
4156
 
3854
4157
 
3855
4158
 
@@ -3904,6 +4207,13 @@ var _DirectedGraph = class _DirectedGraph extends AbstractGraph {
3904
4207
 
3905
4208
 
3906
4209
 
4210
+
4211
+
4212
+
4213
+
4214
+
4215
+
4216
+
3907
4217
 
3908
4218
 
3909
4219
 
@@ -4011,6 +4321,13 @@ var _DirectedGraph = class _DirectedGraph extends AbstractGraph {
4011
4321
 
4012
4322
 
4013
4323
 
4324
+
4325
+
4326
+
4327
+
4328
+
4329
+
4330
+
4014
4331
 
4015
4332
 
4016
4333
 
@@ -4099,6 +4416,13 @@ var _DirectedGraph = class _DirectedGraph extends AbstractGraph {
4099
4416
 
4100
4417
 
4101
4418
 
4419
+
4420
+
4421
+
4422
+
4423
+
4424
+
4425
+
4102
4426
 
4103
4427
 
4104
4428
 
@@ -4149,6 +4473,13 @@ var _DirectedGraph = class _DirectedGraph extends AbstractGraph {
4149
4473
 
4150
4474
 
4151
4475
 
4476
+
4477
+
4478
+
4479
+
4480
+
4481
+
4482
+
4152
4483
 
4153
4484
 
4154
4485
 
@@ -4252,6 +4583,13 @@ var _DirectedGraph = class _DirectedGraph extends AbstractGraph {
4252
4583
 
4253
4584
 
4254
4585
 
4586
+
4587
+
4588
+
4589
+
4590
+
4591
+
4592
+
4255
4593
 
4256
4594
 
4257
4595
 
@@ -4358,6 +4696,13 @@ var _DirectedGraph = class _DirectedGraph extends AbstractGraph {
4358
4696
 
4359
4697
 
4360
4698
 
4699
+
4700
+
4701
+
4702
+
4703
+
4704
+
4705
+
4361
4706
 
4362
4707
 
4363
4708
 
@@ -4528,6 +4873,13 @@ var _UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
4528
4873
 
4529
4874
 
4530
4875
 
4876
+
4877
+
4878
+
4879
+
4880
+
4881
+
4882
+
4531
4883
 
4532
4884
 
4533
4885
 
@@ -4613,6 +4965,13 @@ var _UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
4613
4965
 
4614
4966
 
4615
4967
 
4968
+
4969
+
4970
+
4971
+
4972
+
4973
+
4974
+
4616
4975
 
4617
4976
 
4618
4977
 
@@ -4697,6 +5056,13 @@ var _UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
4697
5056
 
4698
5057
 
4699
5058
 
5059
+
5060
+
5061
+
5062
+
5063
+
5064
+
5065
+
4700
5066
 
4701
5067
 
4702
5068
 
@@ -4796,6 +5162,13 @@ var _UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
4796
5162
 
4797
5163
 
4798
5164
 
5165
+
5166
+
5167
+
5168
+
5169
+
5170
+
5171
+
4799
5172
 
4800
5173
 
4801
5174
 
@@ -4850,6 +5223,13 @@ var _UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
4850
5223
 
4851
5224
 
4852
5225
 
5226
+
5227
+
5228
+
5229
+
5230
+
5231
+
5232
+
4853
5233
 
4854
5234
 
4855
5235
 
@@ -4974,6 +5354,13 @@ var _UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
4974
5354
 
4975
5355
 
4976
5356
 
5357
+
5358
+
5359
+
5360
+
5361
+
5362
+
5363
+
4977
5364
 
4978
5365
 
4979
5366
 
@@ -5120,6 +5507,13 @@ var _UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
5120
5507
 
5121
5508
 
5122
5509
 
5510
+
5511
+
5512
+
5513
+
5514
+
5515
+
5516
+
5123
5517
 
5124
5518
 
5125
5519
 
@@ -5188,6 +5582,13 @@ var _UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
5188
5582
 
5189
5583
 
5190
5584
 
5585
+
5586
+
5587
+
5588
+
5589
+
5590
+
5591
+
5191
5592
 
5192
5593
 
5193
5594
 
@@ -5238,6 +5639,13 @@ var _UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
5238
5639
 
5239
5640
 
5240
5641
 
5642
+
5643
+
5644
+
5645
+
5646
+
5647
+
5648
+
5241
5649
 
5242
5650
 
5243
5651