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
@@ -389,6 +389,35 @@ var IterableElementBase = class {
389
389
  for (const ele of this) if (ele === element) return true;
390
390
  return false;
391
391
  }
392
+ /**
393
+ * Check whether a value exists (Array-compatible alias for `has`).
394
+ * @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1).
395
+ * @param element - Element to search for (uses `===`).
396
+ * @returns `true` if found.
397
+ */
398
+ includes(element) {
399
+ return this.has(element);
400
+ }
401
+ /**
402
+ * Return an iterator of `[index, value]` pairs (Array-compatible).
403
+ * @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1) per step.
404
+ */
405
+ *entries() {
406
+ let index = 0;
407
+ for (const value of this) {
408
+ yield [index++, value];
409
+ }
410
+ }
411
+ /**
412
+ * Return an iterator of numeric indices (Array-compatible).
413
+ * @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1) per step.
414
+ */
415
+ *keys() {
416
+ let index = 0;
417
+ for (const _ of this) {
418
+ yield index++;
419
+ }
420
+ }
392
421
  /**
393
422
  * Reduces all elements to a single accumulated value.
394
423
  *
@@ -651,6 +680,16 @@ var LinearBase = class _LinearBase extends IterableElementBase {
651
680
  }
652
681
  return this;
653
682
  }
683
+ /**
684
+ * Return a new instance of the same type with elements in reverse order (non-mutating).
685
+ * @remarks Provided for familiarity when migrating from Array (ES2023 `toReversed`). Time O(n), Space O(n).
686
+ * @returns A new reversed instance.
687
+ */
688
+ toReversed() {
689
+ const cloned = this.clone();
690
+ cloned.reverse();
691
+ return cloned;
692
+ }
654
693
  };
655
694
 
656
695
  // src/data-structures/heap/heap.ts
@@ -714,6 +753,13 @@ var Heap = class _Heap extends IterableElementBase {
714
753
 
715
754
 
716
755
 
756
+
757
+
758
+
759
+
760
+
761
+
762
+
717
763
 
718
764
 
719
765
 
@@ -770,7 +816,7 @@ var Heap = class _Heap extends IterableElementBase {
770
816
  }
771
817
  /**
772
818
  * Insert an element.
773
- * @remarks Time O(1) amortized, Space O(1)
819
+ * @remarks Time O(log N) amortized, Space O(1)
774
820
  * @param element - Element to insert.
775
821
  * @returns True.
776
822
 
@@ -800,6 +846,13 @@ var Heap = class _Heap extends IterableElementBase {
800
846
 
801
847
 
802
848
 
849
+
850
+
851
+
852
+
853
+
854
+
855
+
803
856
 
804
857
 
805
858
 
@@ -857,6 +910,13 @@ var Heap = class _Heap extends IterableElementBase {
857
910
 
858
911
 
859
912
 
913
+
914
+
915
+
916
+
917
+
918
+
919
+
860
920
 
861
921
 
862
922
 
@@ -920,7 +980,41 @@ var Heap = class _Heap extends IterableElementBase {
920
980
 
921
981
 
922
982
 
983
+
984
+
985
+
923
986
 
987
+
988
+
989
+
990
+ * @example
991
+ * // Heap with custom comparator (MaxHeap behavior)
992
+ * interface Task {
993
+ * id: number;
994
+ * priority: number;
995
+ * name: string;
996
+ * }
997
+ *
998
+ * // Custom comparator for max heap behavior (higher priority first)
999
+ * const tasks: Task[] = [
1000
+ * { id: 1, priority: 5, name: 'Email' },
1001
+ * { id: 2, priority: 3, name: 'Chat' },
1002
+ * { id: 3, priority: 8, name: 'Alert' }
1003
+ * ];
1004
+ *
1005
+ * const maxHeap = new Heap(tasks, {
1006
+ * comparator: (a: Task, b: Task) => b.priority - a.priority
1007
+ * });
1008
+ *
1009
+ * console.log(maxHeap.size); // 3;
1010
+ *
1011
+ * // Peek returns highest priority task
1012
+ * const topTask = maxHeap.peek();
1013
+ * console.log(topTask?.priority); // 8;
1014
+ * console.log(topTask?.name); // 'Alert';
1015
+ */
1016
+ /**
1017
+ * @deprecated Use `pop` instead. Will be removed in a future major version.
924
1018
 
925
1019
 
926
1020
 
@@ -951,6 +1045,14 @@ var Heap = class _Heap extends IterableElementBase {
951
1045
  * console.log(topTask?.name); // 'Alert';
952
1046
  */
953
1047
  poll() {
1048
+ return this.pop();
1049
+ }
1050
+ /**
1051
+ * Remove and return the top element (min or max depending on comparator).
1052
+ * @remarks Time O(log N) amortized, Space O(1)
1053
+ * @returns The removed top element, or undefined if empty.
1054
+ */
1055
+ pop() {
954
1056
  if (this.elements.length === 0) return;
955
1057
  const value = this.elements[0];
956
1058
  const last = this.elements.pop();
@@ -991,6 +1093,13 @@ var Heap = class _Heap extends IterableElementBase {
991
1093
 
992
1094
 
993
1095
 
1096
+
1097
+
1098
+
1099
+
1100
+
1101
+
1102
+
994
1103
 
995
1104
 
996
1105
 
@@ -1091,6 +1200,13 @@ var Heap = class _Heap extends IterableElementBase {
1091
1200
 
1092
1201
 
1093
1202
 
1203
+
1204
+
1205
+
1206
+
1207
+
1208
+
1209
+
1094
1210
 
1095
1211
 
1096
1212
 
@@ -1138,6 +1254,13 @@ var Heap = class _Heap extends IterableElementBase {
1138
1254
 
1139
1255
 
1140
1256
 
1257
+
1258
+
1259
+
1260
+
1261
+
1262
+
1263
+
1141
1264
 
1142
1265
 
1143
1266
 
@@ -1155,16 +1278,6 @@ var Heap = class _Heap extends IterableElementBase {
1155
1278
  clear() {
1156
1279
  this._elements = [];
1157
1280
  }
1158
- /**
1159
- * Replace the backing array and rebuild the heap.
1160
- * @remarks Time O(N), Space O(N)
1161
- * @param elements - Iterable used to refill the heap.
1162
- * @returns Array of per-node results from fixing steps.
1163
- */
1164
- refill(elements) {
1165
- this._elements = Array.from(elements);
1166
- return this.fix();
1167
- }
1168
1281
  /**
1169
1282
  * Check if an equal element exists in the heap.
1170
1283
  * @remarks Time O(N), Space O(1)
@@ -1188,6 +1301,13 @@ var Heap = class _Heap extends IterableElementBase {
1188
1301
 
1189
1302
 
1190
1303
 
1304
+
1305
+
1306
+
1307
+
1308
+
1309
+
1310
+
1191
1311
 
1192
1312
 
1193
1313
 
@@ -1235,6 +1355,13 @@ var Heap = class _Heap extends IterableElementBase {
1235
1355
 
1236
1356
 
1237
1357
 
1358
+
1359
+
1360
+
1361
+
1362
+
1363
+
1364
+
1238
1365
 
1239
1366
 
1240
1367
 
@@ -1259,7 +1386,7 @@ var Heap = class _Heap extends IterableElementBase {
1259
1386
  }
1260
1387
  if (index < 0) return false;
1261
1388
  if (index === 0) {
1262
- this.poll();
1389
+ this.pop();
1263
1390
  } else if (index === this.elements.length - 1) {
1264
1391
  this.elements.pop();
1265
1392
  } else {
@@ -1269,13 +1396,19 @@ var Heap = class _Heap extends IterableElementBase {
1269
1396
  }
1270
1397
  return true;
1271
1398
  }
1399
+ /**
1400
+ * @deprecated Use `deleteWhere` instead. Will be removed in a future major version.
1401
+ */
1402
+ deleteBy(predicate) {
1403
+ return this.deleteWhere(predicate);
1404
+ }
1272
1405
  /**
1273
1406
  * Delete the first element that matches a predicate.
1274
1407
  * @remarks Time O(N), Space O(1)
1275
1408
  * @param predicate - Function (element, index, heap) → boolean.
1276
1409
  * @returns True if an element was removed.
1277
1410
  */
1278
- deleteBy(predicate) {
1411
+ deleteWhere(predicate) {
1279
1412
  let idx = -1;
1280
1413
  for (let i = 0; i < this.elements.length; i++) {
1281
1414
  if (predicate(this.elements[i], i, this)) {
@@ -1285,7 +1418,7 @@ var Heap = class _Heap extends IterableElementBase {
1285
1418
  }
1286
1419
  if (idx < 0) return false;
1287
1420
  if (idx === 0) {
1288
- this.poll();
1421
+ this.pop();
1289
1422
  } else if (idx === this.elements.length - 1) {
1290
1423
  this.elements.pop();
1291
1424
  } else {
@@ -1328,6 +1461,13 @@ var Heap = class _Heap extends IterableElementBase {
1328
1461
 
1329
1462
 
1330
1463
 
1464
+
1465
+
1466
+
1467
+
1468
+
1469
+
1470
+
1331
1471
 
1332
1472
 
1333
1473
 
@@ -1408,6 +1548,13 @@ var Heap = class _Heap extends IterableElementBase {
1408
1548
 
1409
1549
 
1410
1550
 
1551
+
1552
+
1553
+
1554
+
1555
+
1556
+
1557
+
1411
1558
 
1412
1559
 
1413
1560
 
@@ -1461,6 +1608,13 @@ var Heap = class _Heap extends IterableElementBase {
1461
1608
 
1462
1609
 
1463
1610
 
1611
+
1612
+
1613
+
1614
+
1615
+
1616
+
1617
+
1464
1618
 
1465
1619
 
1466
1620
 
@@ -1513,6 +1667,13 @@ var Heap = class _Heap extends IterableElementBase {
1513
1667
 
1514
1668
 
1515
1669
 
1670
+
1671
+
1672
+
1673
+
1674
+
1675
+
1676
+
1516
1677
 
1517
1678
 
1518
1679
 
@@ -1572,6 +1733,13 @@ var Heap = class _Heap extends IterableElementBase {
1572
1733
 
1573
1734
 
1574
1735
 
1736
+
1737
+
1738
+
1739
+
1740
+
1741
+
1742
+
1575
1743
 
1576
1744
 
1577
1745
 
@@ -1785,6 +1953,13 @@ var Queue = class _Queue extends LinearBase {
1785
1953
 
1786
1954
 
1787
1955
 
1956
+
1957
+
1958
+
1959
+
1960
+
1961
+
1962
+
1788
1963
 
1789
1964
 
1790
1965
 
@@ -1835,6 +2010,13 @@ var Queue = class _Queue extends LinearBase {
1835
2010
 
1836
2011
 
1837
2012
 
2013
+
2014
+
2015
+
2016
+
2017
+
2018
+
2019
+
1838
2020
 
1839
2021
 
1840
2022
 
@@ -1852,6 +2034,14 @@ var Queue = class _Queue extends LinearBase {
1852
2034
  get first() {
1853
2035
  return this.length > 0 ? this.elements[this._offset] : void 0;
1854
2036
  }
2037
+ /**
2038
+ * Peek at the front element without removing it (alias for `first`).
2039
+ * @remarks Time O(1), Space O(1)
2040
+ * @returns Front element or undefined.
2041
+ */
2042
+ peek() {
2043
+ return this.first;
2044
+ }
1855
2045
  /**
1856
2046
  * Get the last element (back) without removing it.
1857
2047
  * @remarks Time O(1), Space O(1)
@@ -1901,6 +2091,13 @@ var Queue = class _Queue extends LinearBase {
1901
2091
 
1902
2092
 
1903
2093
 
2094
+
2095
+
2096
+
2097
+
2098
+
2099
+
2100
+
1904
2101
 
1905
2102
 
1906
2103
 
@@ -1963,6 +2160,13 @@ var Queue = class _Queue extends LinearBase {
1963
2160
 
1964
2161
 
1965
2162
 
2163
+
2164
+
2165
+
2166
+
2167
+
2168
+
2169
+
1966
2170
 
1967
2171
 
1968
2172
 
@@ -2032,6 +2236,13 @@ var Queue = class _Queue extends LinearBase {
2032
2236
 
2033
2237
 
2034
2238
 
2239
+
2240
+
2241
+
2242
+
2243
+
2244
+
2245
+
2035
2246
 
2036
2247
 
2037
2248
 
@@ -2091,6 +2302,13 @@ var Queue = class _Queue extends LinearBase {
2091
2302
 
2092
2303
 
2093
2304
 
2305
+
2306
+
2307
+
2308
+
2309
+
2310
+
2311
+
2094
2312
 
2095
2313
 
2096
2314
 
@@ -2143,6 +2361,13 @@ var Queue = class _Queue extends LinearBase {
2143
2361
 
2144
2362
 
2145
2363
 
2364
+
2365
+
2366
+
2367
+
2368
+
2369
+
2370
+
2146
2371
 
2147
2372
 
2148
2373
 
@@ -2197,6 +2422,21 @@ var Queue = class _Queue extends LinearBase {
2197
2422
  this._elements[this._offset + index] = newElement;
2198
2423
  return true;
2199
2424
  }
2425
+ /**
2426
+ * Delete the first element that satisfies a predicate.
2427
+ * @remarks Time O(N), Space O(N)
2428
+ * @param predicate - Function (value, index, queue) → boolean to decide deletion.
2429
+ * @returns True if a match was removed.
2430
+ */
2431
+ deleteWhere(predicate) {
2432
+ for (let i = 0; i < this.length; i++) {
2433
+ if (predicate(this._elements[this._offset + i], i, this)) {
2434
+ this.deleteAt(i);
2435
+ return true;
2436
+ }
2437
+ }
2438
+ return false;
2439
+ }
2200
2440
  /**
2201
2441
  * Reverse the queue in-place by compacting then reversing.
2202
2442
  * @remarks Time O(N), Space O(N)
@@ -2236,6 +2476,13 @@ var Queue = class _Queue extends LinearBase {
2236
2476
 
2237
2477
 
2238
2478
 
2479
+
2480
+
2481
+
2482
+
2483
+
2484
+
2485
+
2239
2486
 
2240
2487
 
2241
2488
 
@@ -2282,6 +2529,13 @@ var Queue = class _Queue extends LinearBase {
2282
2529
 
2283
2530
 
2284
2531
 
2532
+
2533
+
2534
+
2535
+
2536
+
2537
+
2538
+
2285
2539
 
2286
2540
 
2287
2541
 
@@ -2351,6 +2605,13 @@ var Queue = class _Queue extends LinearBase {
2351
2605
 
2352
2606
 
2353
2607
 
2608
+
2609
+
2610
+
2611
+
2612
+
2613
+
2614
+
2354
2615
 
2355
2616
 
2356
2617
 
@@ -2404,6 +2665,13 @@ var Queue = class _Queue extends LinearBase {
2404
2665
 
2405
2666
 
2406
2667
 
2668
+
2669
+
2670
+
2671
+
2672
+
2673
+
2674
+
2407
2675
 
2408
2676
 
2409
2677
 
@@ -2461,6 +2729,13 @@ var Queue = class _Queue extends LinearBase {
2461
2729
 
2462
2730
 
2463
2731
 
2732
+
2733
+
2734
+
2735
+
2736
+
2737
+
2738
+
2464
2739
 
2465
2740
 
2466
2741
 
@@ -3600,6 +3875,13 @@ var DirectedGraph = class _DirectedGraph extends AbstractGraph {
3600
3875
 
3601
3876
 
3602
3877
 
3878
+
3879
+
3880
+
3881
+
3882
+
3883
+
3884
+
3603
3885
 
3604
3886
 
3605
3887
 
@@ -3688,6 +3970,13 @@ var DirectedGraph = class _DirectedGraph extends AbstractGraph {
3688
3970
 
3689
3971
 
3690
3972
 
3973
+
3974
+
3975
+
3976
+
3977
+
3978
+
3979
+
3691
3980
 
3692
3981
 
3693
3982
 
@@ -3774,6 +4063,13 @@ var DirectedGraph = class _DirectedGraph extends AbstractGraph {
3774
4063
 
3775
4064
 
3776
4065
 
4066
+
4067
+
4068
+
4069
+
4070
+
4071
+
4072
+
3777
4073
 
3778
4074
 
3779
4075
 
@@ -3851,6 +4147,13 @@ var DirectedGraph = class _DirectedGraph extends AbstractGraph {
3851
4147
 
3852
4148
 
3853
4149
 
4150
+
4151
+
4152
+
4153
+
4154
+
4155
+
4156
+
3854
4157
 
3855
4158
 
3856
4159
 
@@ -3905,6 +4208,13 @@ var DirectedGraph = class _DirectedGraph extends AbstractGraph {
3905
4208
 
3906
4209
 
3907
4210
 
4211
+
4212
+
4213
+
4214
+
4215
+
4216
+
4217
+
3908
4218
 
3909
4219
 
3910
4220
 
@@ -4012,6 +4322,13 @@ var DirectedGraph = class _DirectedGraph extends AbstractGraph {
4012
4322
 
4013
4323
 
4014
4324
 
4325
+
4326
+
4327
+
4328
+
4329
+
4330
+
4331
+
4015
4332
 
4016
4333
 
4017
4334
 
@@ -4100,6 +4417,13 @@ var DirectedGraph = class _DirectedGraph extends AbstractGraph {
4100
4417
 
4101
4418
 
4102
4419
 
4420
+
4421
+
4422
+
4423
+
4424
+
4425
+
4426
+
4103
4427
 
4104
4428
 
4105
4429
 
@@ -4150,6 +4474,13 @@ var DirectedGraph = class _DirectedGraph extends AbstractGraph {
4150
4474
 
4151
4475
 
4152
4476
 
4477
+
4478
+
4479
+
4480
+
4481
+
4482
+
4483
+
4153
4484
 
4154
4485
 
4155
4486
 
@@ -4253,6 +4584,13 @@ var DirectedGraph = class _DirectedGraph extends AbstractGraph {
4253
4584
 
4254
4585
 
4255
4586
 
4587
+
4588
+
4589
+
4590
+
4591
+
4592
+
4593
+
4256
4594
 
4257
4595
 
4258
4596
 
@@ -4359,6 +4697,13 @@ var DirectedGraph = class _DirectedGraph extends AbstractGraph {
4359
4697
 
4360
4698
 
4361
4699
 
4700
+
4701
+
4702
+
4703
+
4704
+
4705
+
4706
+
4362
4707
 
4363
4708
 
4364
4709
 
@@ -4531,6 +4876,13 @@ var UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
4531
4876
 
4532
4877
 
4533
4878
 
4879
+
4880
+
4881
+
4882
+
4883
+
4884
+
4885
+
4534
4886
 
4535
4887
 
4536
4888
 
@@ -4615,6 +4967,13 @@ var UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
4615
4967
 
4616
4968
 
4617
4969
 
4970
+
4971
+
4972
+
4973
+
4974
+
4975
+
4976
+
4618
4977
 
4619
4978
 
4620
4979
 
@@ -4699,6 +5058,13 @@ var UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
4699
5058
 
4700
5059
 
4701
5060
 
5061
+
5062
+
5063
+
5064
+
5065
+
5066
+
5067
+
4702
5068
 
4703
5069
 
4704
5070
 
@@ -4797,6 +5163,13 @@ var UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
4797
5163
 
4798
5164
 
4799
5165
 
5166
+
5167
+
5168
+
5169
+
5170
+
5171
+
5172
+
4800
5173
 
4801
5174
 
4802
5175
 
@@ -4851,6 +5224,13 @@ var UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
4851
5224
 
4852
5225
 
4853
5226
 
5227
+
5228
+
5229
+
5230
+
5231
+
5232
+
5233
+
4854
5234
 
4855
5235
 
4856
5236
 
@@ -4975,6 +5355,13 @@ var UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
4975
5355
 
4976
5356
 
4977
5357
 
5358
+
5359
+
5360
+
5361
+
5362
+
5363
+
5364
+
4978
5365
 
4979
5366
 
4980
5367
 
@@ -5121,6 +5508,13 @@ var UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
5121
5508
 
5122
5509
 
5123
5510
 
5511
+
5512
+
5513
+
5514
+
5515
+
5516
+
5517
+
5124
5518
 
5125
5519
 
5126
5520
 
@@ -5189,6 +5583,13 @@ var UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
5189
5583
 
5190
5584
 
5191
5585
 
5586
+
5587
+
5588
+
5589
+
5590
+
5591
+
5592
+
5192
5593
 
5193
5594
 
5194
5595
 
@@ -5239,6 +5640,13 @@ var UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
5239
5640
 
5240
5641
 
5241
5642
 
5643
+
5644
+
5645
+
5646
+
5647
+
5648
+
5649
+
5242
5650
 
5243
5651
 
5244
5652