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 {
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
  *
@@ -649,6 +678,16 @@ var LinearBase = class _LinearBase extends IterableElementBase {
649
678
  }
650
679
  return this;
651
680
  }
681
+ /**
682
+ * Return a new instance of the same type with elements in reverse order (non-mutating).
683
+ * @remarks Provided for familiarity when migrating from Array (ES2023 `toReversed`). Time O(n), Space O(n).
684
+ * @returns A new reversed instance.
685
+ */
686
+ toReversed() {
687
+ const cloned = this.clone();
688
+ cloned.reverse();
689
+ return cloned;
690
+ }
652
691
  };
653
692
 
654
693
  // src/data-structures/heap/heap.ts
@@ -712,6 +751,13 @@ var Heap = class _Heap extends IterableElementBase {
712
751
 
713
752
 
714
753
 
754
+
755
+
756
+
757
+
758
+
759
+
760
+
715
761
 
716
762
 
717
763
 
@@ -768,7 +814,7 @@ var Heap = class _Heap extends IterableElementBase {
768
814
  }
769
815
  /**
770
816
  * Insert an element.
771
- * @remarks Time O(1) amortized, Space O(1)
817
+ * @remarks Time O(log N) amortized, Space O(1)
772
818
  * @param element - Element to insert.
773
819
  * @returns True.
774
820
 
@@ -798,6 +844,13 @@ var Heap = class _Heap extends IterableElementBase {
798
844
 
799
845
 
800
846
 
847
+
848
+
849
+
850
+
851
+
852
+
853
+
801
854
 
802
855
 
803
856
 
@@ -855,6 +908,13 @@ var Heap = class _Heap extends IterableElementBase {
855
908
 
856
909
 
857
910
 
911
+
912
+
913
+
914
+
915
+
916
+
917
+
858
918
 
859
919
 
860
920
 
@@ -918,7 +978,41 @@ var Heap = class _Heap extends IterableElementBase {
918
978
 
919
979
 
920
980
 
981
+
982
+
983
+
921
984
 
985
+
986
+
987
+
988
+ * @example
989
+ * // Heap with custom comparator (MaxHeap behavior)
990
+ * interface Task {
991
+ * id: number;
992
+ * priority: number;
993
+ * name: string;
994
+ * }
995
+ *
996
+ * // Custom comparator for max heap behavior (higher priority first)
997
+ * const tasks: Task[] = [
998
+ * { id: 1, priority: 5, name: 'Email' },
999
+ * { id: 2, priority: 3, name: 'Chat' },
1000
+ * { id: 3, priority: 8, name: 'Alert' }
1001
+ * ];
1002
+ *
1003
+ * const maxHeap = new Heap(tasks, {
1004
+ * comparator: (a: Task, b: Task) => b.priority - a.priority
1005
+ * });
1006
+ *
1007
+ * console.log(maxHeap.size); // 3;
1008
+ *
1009
+ * // Peek returns highest priority task
1010
+ * const topTask = maxHeap.peek();
1011
+ * console.log(topTask?.priority); // 8;
1012
+ * console.log(topTask?.name); // 'Alert';
1013
+ */
1014
+ /**
1015
+ * @deprecated Use `pop` instead. Will be removed in a future major version.
922
1016
 
923
1017
 
924
1018
 
@@ -949,6 +1043,14 @@ var Heap = class _Heap extends IterableElementBase {
949
1043
  * console.log(topTask?.name); // 'Alert';
950
1044
  */
951
1045
  poll() {
1046
+ return this.pop();
1047
+ }
1048
+ /**
1049
+ * Remove and return the top element (min or max depending on comparator).
1050
+ * @remarks Time O(log N) amortized, Space O(1)
1051
+ * @returns The removed top element, or undefined if empty.
1052
+ */
1053
+ pop() {
952
1054
  if (this.elements.length === 0) return;
953
1055
  const value = this.elements[0];
954
1056
  const last = this.elements.pop();
@@ -989,6 +1091,13 @@ var Heap = class _Heap extends IterableElementBase {
989
1091
 
990
1092
 
991
1093
 
1094
+
1095
+
1096
+
1097
+
1098
+
1099
+
1100
+
992
1101
 
993
1102
 
994
1103
 
@@ -1089,6 +1198,13 @@ var Heap = class _Heap extends IterableElementBase {
1089
1198
 
1090
1199
 
1091
1200
 
1201
+
1202
+
1203
+
1204
+
1205
+
1206
+
1207
+
1092
1208
 
1093
1209
 
1094
1210
 
@@ -1136,6 +1252,13 @@ var Heap = class _Heap extends IterableElementBase {
1136
1252
 
1137
1253
 
1138
1254
 
1255
+
1256
+
1257
+
1258
+
1259
+
1260
+
1261
+
1139
1262
 
1140
1263
 
1141
1264
 
@@ -1153,16 +1276,6 @@ var Heap = class _Heap extends IterableElementBase {
1153
1276
  clear() {
1154
1277
  this._elements = [];
1155
1278
  }
1156
- /**
1157
- * Replace the backing array and rebuild the heap.
1158
- * @remarks Time O(N), Space O(N)
1159
- * @param elements - Iterable used to refill the heap.
1160
- * @returns Array of per-node results from fixing steps.
1161
- */
1162
- refill(elements) {
1163
- this._elements = Array.from(elements);
1164
- return this.fix();
1165
- }
1166
1279
  /**
1167
1280
  * Check if an equal element exists in the heap.
1168
1281
  * @remarks Time O(N), Space O(1)
@@ -1186,6 +1299,13 @@ var Heap = class _Heap extends IterableElementBase {
1186
1299
 
1187
1300
 
1188
1301
 
1302
+
1303
+
1304
+
1305
+
1306
+
1307
+
1308
+
1189
1309
 
1190
1310
 
1191
1311
 
@@ -1233,6 +1353,13 @@ var Heap = class _Heap extends IterableElementBase {
1233
1353
 
1234
1354
 
1235
1355
 
1356
+
1357
+
1358
+
1359
+
1360
+
1361
+
1362
+
1236
1363
 
1237
1364
 
1238
1365
 
@@ -1257,7 +1384,7 @@ var Heap = class _Heap extends IterableElementBase {
1257
1384
  }
1258
1385
  if (index < 0) return false;
1259
1386
  if (index === 0) {
1260
- this.poll();
1387
+ this.pop();
1261
1388
  } else if (index === this.elements.length - 1) {
1262
1389
  this.elements.pop();
1263
1390
  } else {
@@ -1267,13 +1394,19 @@ var Heap = class _Heap extends IterableElementBase {
1267
1394
  }
1268
1395
  return true;
1269
1396
  }
1397
+ /**
1398
+ * @deprecated Use `deleteWhere` instead. Will be removed in a future major version.
1399
+ */
1400
+ deleteBy(predicate) {
1401
+ return this.deleteWhere(predicate);
1402
+ }
1270
1403
  /**
1271
1404
  * Delete the first element that matches a predicate.
1272
1405
  * @remarks Time O(N), Space O(1)
1273
1406
  * @param predicate - Function (element, index, heap) → boolean.
1274
1407
  * @returns True if an element was removed.
1275
1408
  */
1276
- deleteBy(predicate) {
1409
+ deleteWhere(predicate) {
1277
1410
  let idx = -1;
1278
1411
  for (let i = 0; i < this.elements.length; i++) {
1279
1412
  if (predicate(this.elements[i], i, this)) {
@@ -1283,7 +1416,7 @@ var Heap = class _Heap extends IterableElementBase {
1283
1416
  }
1284
1417
  if (idx < 0) return false;
1285
1418
  if (idx === 0) {
1286
- this.poll();
1419
+ this.pop();
1287
1420
  } else if (idx === this.elements.length - 1) {
1288
1421
  this.elements.pop();
1289
1422
  } else {
@@ -1326,6 +1459,13 @@ var Heap = class _Heap extends IterableElementBase {
1326
1459
 
1327
1460
 
1328
1461
 
1462
+
1463
+
1464
+
1465
+
1466
+
1467
+
1468
+
1329
1469
 
1330
1470
 
1331
1471
 
@@ -1406,6 +1546,13 @@ var Heap = class _Heap extends IterableElementBase {
1406
1546
 
1407
1547
 
1408
1548
 
1549
+
1550
+
1551
+
1552
+
1553
+
1554
+
1555
+
1409
1556
 
1410
1557
 
1411
1558
 
@@ -1459,6 +1606,13 @@ var Heap = class _Heap extends IterableElementBase {
1459
1606
 
1460
1607
 
1461
1608
 
1609
+
1610
+
1611
+
1612
+
1613
+
1614
+
1615
+
1462
1616
 
1463
1617
 
1464
1618
 
@@ -1511,6 +1665,13 @@ var Heap = class _Heap extends IterableElementBase {
1511
1665
 
1512
1666
 
1513
1667
 
1668
+
1669
+
1670
+
1671
+
1672
+
1673
+
1674
+
1514
1675
 
1515
1676
 
1516
1677
 
@@ -1570,6 +1731,13 @@ var Heap = class _Heap extends IterableElementBase {
1570
1731
 
1571
1732
 
1572
1733
 
1734
+
1735
+
1736
+
1737
+
1738
+
1739
+
1740
+
1573
1741
 
1574
1742
 
1575
1743
 
@@ -1783,6 +1951,13 @@ var Queue = class _Queue extends LinearBase {
1783
1951
 
1784
1952
 
1785
1953
 
1954
+
1955
+
1956
+
1957
+
1958
+
1959
+
1960
+
1786
1961
 
1787
1962
 
1788
1963
 
@@ -1833,6 +2008,13 @@ var Queue = class _Queue extends LinearBase {
1833
2008
 
1834
2009
 
1835
2010
 
2011
+
2012
+
2013
+
2014
+
2015
+
2016
+
2017
+
1836
2018
 
1837
2019
 
1838
2020
 
@@ -1850,6 +2032,14 @@ var Queue = class _Queue extends LinearBase {
1850
2032
  get first() {
1851
2033
  return this.length > 0 ? this.elements[this._offset] : void 0;
1852
2034
  }
2035
+ /**
2036
+ * Peek at the front element without removing it (alias for `first`).
2037
+ * @remarks Time O(1), Space O(1)
2038
+ * @returns Front element or undefined.
2039
+ */
2040
+ peek() {
2041
+ return this.first;
2042
+ }
1853
2043
  /**
1854
2044
  * Get the last element (back) without removing it.
1855
2045
  * @remarks Time O(1), Space O(1)
@@ -1899,6 +2089,13 @@ var Queue = class _Queue extends LinearBase {
1899
2089
 
1900
2090
 
1901
2091
 
2092
+
2093
+
2094
+
2095
+
2096
+
2097
+
2098
+
1902
2099
 
1903
2100
 
1904
2101
 
@@ -1961,6 +2158,13 @@ var Queue = class _Queue extends LinearBase {
1961
2158
 
1962
2159
 
1963
2160
 
2161
+
2162
+
2163
+
2164
+
2165
+
2166
+
2167
+
1964
2168
 
1965
2169
 
1966
2170
 
@@ -2030,6 +2234,13 @@ var Queue = class _Queue extends LinearBase {
2030
2234
 
2031
2235
 
2032
2236
 
2237
+
2238
+
2239
+
2240
+
2241
+
2242
+
2243
+
2033
2244
 
2034
2245
 
2035
2246
 
@@ -2089,6 +2300,13 @@ var Queue = class _Queue extends LinearBase {
2089
2300
 
2090
2301
 
2091
2302
 
2303
+
2304
+
2305
+
2306
+
2307
+
2308
+
2309
+
2092
2310
 
2093
2311
 
2094
2312
 
@@ -2141,6 +2359,13 @@ var Queue = class _Queue extends LinearBase {
2141
2359
 
2142
2360
 
2143
2361
 
2362
+
2363
+
2364
+
2365
+
2366
+
2367
+
2368
+
2144
2369
 
2145
2370
 
2146
2371
 
@@ -2195,6 +2420,21 @@ var Queue = class _Queue extends LinearBase {
2195
2420
  this._elements[this._offset + index] = newElement;
2196
2421
  return true;
2197
2422
  }
2423
+ /**
2424
+ * Delete the first element that satisfies a predicate.
2425
+ * @remarks Time O(N), Space O(N)
2426
+ * @param predicate - Function (value, index, queue) → boolean to decide deletion.
2427
+ * @returns True if a match was removed.
2428
+ */
2429
+ deleteWhere(predicate) {
2430
+ for (let i = 0; i < this.length; i++) {
2431
+ if (predicate(this._elements[this._offset + i], i, this)) {
2432
+ this.deleteAt(i);
2433
+ return true;
2434
+ }
2435
+ }
2436
+ return false;
2437
+ }
2198
2438
  /**
2199
2439
  * Reverse the queue in-place by compacting then reversing.
2200
2440
  * @remarks Time O(N), Space O(N)
@@ -2234,6 +2474,13 @@ var Queue = class _Queue extends LinearBase {
2234
2474
 
2235
2475
 
2236
2476
 
2477
+
2478
+
2479
+
2480
+
2481
+
2482
+
2483
+
2237
2484
 
2238
2485
 
2239
2486
 
@@ -2280,6 +2527,13 @@ var Queue = class _Queue extends LinearBase {
2280
2527
 
2281
2528
 
2282
2529
 
2530
+
2531
+
2532
+
2533
+
2534
+
2535
+
2536
+
2283
2537
 
2284
2538
 
2285
2539
 
@@ -2349,6 +2603,13 @@ var Queue = class _Queue extends LinearBase {
2349
2603
 
2350
2604
 
2351
2605
 
2606
+
2607
+
2608
+
2609
+
2610
+
2611
+
2612
+
2352
2613
 
2353
2614
 
2354
2615
 
@@ -2402,6 +2663,13 @@ var Queue = class _Queue extends LinearBase {
2402
2663
 
2403
2664
 
2404
2665
 
2666
+
2667
+
2668
+
2669
+
2670
+
2671
+
2672
+
2405
2673
 
2406
2674
 
2407
2675
 
@@ -2459,6 +2727,13 @@ var Queue = class _Queue extends LinearBase {
2459
2727
 
2460
2728
 
2461
2729
 
2730
+
2731
+
2732
+
2733
+
2734
+
2735
+
2736
+
2462
2737
 
2463
2738
 
2464
2739
 
@@ -3598,6 +3873,13 @@ var DirectedGraph = class _DirectedGraph extends AbstractGraph {
3598
3873
 
3599
3874
 
3600
3875
 
3876
+
3877
+
3878
+
3879
+
3880
+
3881
+
3882
+
3601
3883
 
3602
3884
 
3603
3885
 
@@ -3686,6 +3968,13 @@ var DirectedGraph = class _DirectedGraph extends AbstractGraph {
3686
3968
 
3687
3969
 
3688
3970
 
3971
+
3972
+
3973
+
3974
+
3975
+
3976
+
3977
+
3689
3978
 
3690
3979
 
3691
3980
 
@@ -3772,6 +4061,13 @@ var DirectedGraph = class _DirectedGraph extends AbstractGraph {
3772
4061
 
3773
4062
 
3774
4063
 
4064
+
4065
+
4066
+
4067
+
4068
+
4069
+
4070
+
3775
4071
 
3776
4072
 
3777
4073
 
@@ -3849,6 +4145,13 @@ var DirectedGraph = class _DirectedGraph extends AbstractGraph {
3849
4145
 
3850
4146
 
3851
4147
 
4148
+
4149
+
4150
+
4151
+
4152
+
4153
+
4154
+
3852
4155
 
3853
4156
 
3854
4157
 
@@ -3903,6 +4206,13 @@ var DirectedGraph = class _DirectedGraph extends AbstractGraph {
3903
4206
 
3904
4207
 
3905
4208
 
4209
+
4210
+
4211
+
4212
+
4213
+
4214
+
4215
+
3906
4216
 
3907
4217
 
3908
4218
 
@@ -4010,6 +4320,13 @@ var DirectedGraph = class _DirectedGraph extends AbstractGraph {
4010
4320
 
4011
4321
 
4012
4322
 
4323
+
4324
+
4325
+
4326
+
4327
+
4328
+
4329
+
4013
4330
 
4014
4331
 
4015
4332
 
@@ -4098,6 +4415,13 @@ var DirectedGraph = class _DirectedGraph extends AbstractGraph {
4098
4415
 
4099
4416
 
4100
4417
 
4418
+
4419
+
4420
+
4421
+
4422
+
4423
+
4424
+
4101
4425
 
4102
4426
 
4103
4427
 
@@ -4148,6 +4472,13 @@ var DirectedGraph = class _DirectedGraph extends AbstractGraph {
4148
4472
 
4149
4473
 
4150
4474
 
4475
+
4476
+
4477
+
4478
+
4479
+
4480
+
4481
+
4151
4482
 
4152
4483
 
4153
4484
 
@@ -4251,6 +4582,13 @@ var DirectedGraph = class _DirectedGraph extends AbstractGraph {
4251
4582
 
4252
4583
 
4253
4584
 
4585
+
4586
+
4587
+
4588
+
4589
+
4590
+
4591
+
4254
4592
 
4255
4593
 
4256
4594
 
@@ -4357,6 +4695,13 @@ var DirectedGraph = class _DirectedGraph extends AbstractGraph {
4357
4695
 
4358
4696
 
4359
4697
 
4698
+
4699
+
4700
+
4701
+
4702
+
4703
+
4704
+
4360
4705
 
4361
4706
 
4362
4707
 
@@ -4529,6 +4874,13 @@ var UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
4529
4874
 
4530
4875
 
4531
4876
 
4877
+
4878
+
4879
+
4880
+
4881
+
4882
+
4883
+
4532
4884
 
4533
4885
 
4534
4886
 
@@ -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
 
@@ -4795,6 +5161,13 @@ var UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
4795
5161
 
4796
5162
 
4797
5163
 
5164
+
5165
+
5166
+
5167
+
5168
+
5169
+
5170
+
4798
5171
 
4799
5172
 
4800
5173
 
@@ -4849,6 +5222,13 @@ var UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
4849
5222
 
4850
5223
 
4851
5224
 
5225
+
5226
+
5227
+
5228
+
5229
+
5230
+
5231
+
4852
5232
 
4853
5233
 
4854
5234
 
@@ -4973,6 +5353,13 @@ var UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
4973
5353
 
4974
5354
 
4975
5355
 
5356
+
5357
+
5358
+
5359
+
5360
+
5361
+
5362
+
4976
5363
 
4977
5364
 
4978
5365
 
@@ -5119,6 +5506,13 @@ var UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
5119
5506
 
5120
5507
 
5121
5508
 
5509
+
5510
+
5511
+
5512
+
5513
+
5514
+
5515
+
5122
5516
 
5123
5517
 
5124
5518
 
@@ -5187,6 +5581,13 @@ var UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
5187
5581
 
5188
5582
 
5189
5583
 
5584
+
5585
+
5586
+
5587
+
5588
+
5589
+
5590
+
5190
5591
 
5191
5592
 
5192
5593
 
@@ -5237,6 +5638,13 @@ var UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
5237
5638
 
5238
5639
 
5239
5640
 
5641
+
5642
+
5643
+
5644
+
5645
+
5646
+
5647
+
5240
5648
 
5241
5649
 
5242
5650