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
@@ -3,6 +3,12 @@ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { en
3
3
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
4
4
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
5
5
 
6
+ // src/common/error.ts
7
+ function raise(ErrorClass, message) {
8
+ throw new ErrorClass(message);
9
+ }
10
+ __name(raise, "raise");
11
+
6
12
  // src/data-structures/base/iterable-element-base.ts
7
13
  var _IterableElementBase = class _IterableElementBase {
8
14
  /**
@@ -25,7 +31,7 @@ var _IterableElementBase = class _IterableElementBase {
25
31
  if (options) {
26
32
  const { toElementFn } = options;
27
33
  if (typeof toElementFn === "function") this._toElementFn = toElementFn;
28
- else if (toElementFn) throw new TypeError("toElementFn must be a function type");
34
+ else if (toElementFn) raise(TypeError, "toElementFn must be a function type");
29
35
  }
30
36
  }
31
37
  /**
@@ -181,7 +187,7 @@ var _IterableElementBase = class _IterableElementBase {
181
187
  acc = initialValue;
182
188
  } else {
183
189
  const first = iter.next();
184
- if (first.done) throw new TypeError("Reduce of empty structure with no initial value");
190
+ if (first.done) raise(TypeError, "Reduce of empty structure with no initial value");
185
191
  acc = first.value;
186
192
  index = 1;
187
193
  }
@@ -745,6 +751,14 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
745
751
 
746
752
 
747
753
 
754
+
755
+
756
+
757
+
758
+
759
+
760
+
761
+
748
762
 
749
763
 
750
764
 
@@ -808,6 +822,14 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
808
822
 
809
823
 
810
824
 
825
+
826
+
827
+
828
+
829
+
830
+
831
+
832
+
811
833
 
812
834
 
813
835
 
@@ -877,6 +899,14 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
877
899
 
878
900
 
879
901
 
902
+
903
+
904
+
905
+
906
+
907
+
908
+
909
+
880
910
 
881
911
 
882
912
 
@@ -927,6 +957,14 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
927
957
 
928
958
 
929
959
 
960
+
961
+
962
+
963
+
964
+
965
+
966
+
967
+
930
968
 
931
969
 
932
970
 
@@ -1038,6 +1076,14 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
1038
1076
 
1039
1077
 
1040
1078
 
1079
+
1080
+
1081
+
1082
+
1083
+
1084
+
1085
+
1086
+
1041
1087
 
1042
1088
 
1043
1089
 
@@ -1093,6 +1139,14 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
1093
1139
 
1094
1140
 
1095
1141
 
1142
+
1143
+
1144
+
1145
+
1146
+
1147
+
1148
+
1149
+
1096
1150
 
1097
1151
 
1098
1152
 
@@ -1137,6 +1191,14 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
1137
1191
 
1138
1192
 
1139
1193
 
1194
+
1195
+
1196
+
1197
+
1198
+
1199
+
1200
+
1201
+
1140
1202
 
1141
1203
 
1142
1204
 
@@ -1187,6 +1249,14 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
1187
1249
 
1188
1250
 
1189
1251
 
1252
+
1253
+
1254
+
1255
+
1256
+
1257
+
1258
+
1259
+
1190
1260
 
1191
1261
 
1192
1262
 
@@ -1242,6 +1312,14 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
1242
1312
 
1243
1313
 
1244
1314
 
1315
+
1316
+
1317
+
1318
+
1319
+
1320
+
1321
+
1322
+
1245
1323
 
1246
1324
 
1247
1325
 
@@ -1305,6 +1383,14 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
1305
1383
 
1306
1384
 
1307
1385
 
1386
+
1387
+
1388
+
1389
+
1390
+
1391
+
1392
+
1393
+
1308
1394
 
1309
1395
 
1310
1396
 
@@ -1345,6 +1431,14 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
1345
1431
 
1346
1432
 
1347
1433
 
1434
+
1435
+
1436
+
1437
+
1438
+
1439
+
1440
+
1441
+
1348
1442
 
1349
1443
 
1350
1444
 
@@ -1391,6 +1485,14 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
1391
1485
 
1392
1486
 
1393
1487
 
1488
+
1489
+
1490
+
1491
+
1492
+
1493
+
1494
+
1495
+
1394
1496
 
1395
1497
 
1396
1498
 
@@ -1603,6 +1705,14 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
1603
1705
 
1604
1706
 
1605
1707
 
1708
+
1709
+
1710
+
1711
+
1712
+
1713
+
1714
+
1715
+
1606
1716
 
1607
1717
 
1608
1718
 
@@ -1653,6 +1763,14 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
1653
1763
 
1654
1764
 
1655
1765
 
1766
+
1767
+
1768
+
1769
+
1770
+
1771
+
1772
+
1773
+
1656
1774
 
1657
1775
 
1658
1776
 
@@ -1731,6 +1849,14 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
1731
1849
 
1732
1850
 
1733
1851
 
1852
+
1853
+
1854
+
1855
+
1856
+
1857
+
1858
+
1859
+
1734
1860
 
1735
1861
 
1736
1862
 
@@ -1961,6 +2087,14 @@ var _Queue = class _Queue extends LinearBase {
1961
2087
 
1962
2088
 
1963
2089
 
2090
+
2091
+
2092
+
2093
+
2094
+
2095
+
2096
+
2097
+
1964
2098
 
1965
2099
 
1966
2100
 
@@ -2007,6 +2141,14 @@ var _Queue = class _Queue extends LinearBase {
2007
2141
 
2008
2142
 
2009
2143
 
2144
+
2145
+
2146
+
2147
+
2148
+
2149
+
2150
+
2151
+
2010
2152
 
2011
2153
 
2012
2154
 
@@ -2025,6 +2167,14 @@ var _Queue = class _Queue extends LinearBase {
2025
2167
  get first() {
2026
2168
  return this.length > 0 ? this.elements[this._offset] : void 0;
2027
2169
  }
2170
+ /**
2171
+ * Peek at the front element without removing it (alias for `first`).
2172
+ * @remarks Time O(1), Space O(1)
2173
+ * @returns Front element or undefined.
2174
+ */
2175
+ peek() {
2176
+ return this.first;
2177
+ }
2028
2178
  /**
2029
2179
  * Get the last element (back) without removing it.
2030
2180
  * @remarks Time O(1), Space O(1)
@@ -2069,6 +2219,14 @@ var _Queue = class _Queue extends LinearBase {
2069
2219
 
2070
2220
 
2071
2221
 
2222
+
2223
+
2224
+
2225
+
2226
+
2227
+
2228
+
2229
+
2072
2230
 
2073
2231
 
2074
2232
 
@@ -2127,6 +2285,14 @@ var _Queue = class _Queue extends LinearBase {
2127
2285
 
2128
2286
 
2129
2287
 
2288
+
2289
+
2290
+
2291
+
2292
+
2293
+
2294
+
2295
+
2130
2296
 
2131
2297
 
2132
2298
 
@@ -2192,6 +2358,14 @@ var _Queue = class _Queue extends LinearBase {
2192
2358
 
2193
2359
 
2194
2360
 
2361
+
2362
+
2363
+
2364
+
2365
+
2366
+
2367
+
2368
+
2195
2369
 
2196
2370
 
2197
2371
 
@@ -2247,6 +2421,14 @@ var _Queue = class _Queue extends LinearBase {
2247
2421
 
2248
2422
 
2249
2423
 
2424
+
2425
+
2426
+
2427
+
2428
+
2429
+
2430
+
2431
+
2250
2432
 
2251
2433
 
2252
2434
 
@@ -2295,6 +2477,14 @@ var _Queue = class _Queue extends LinearBase {
2295
2477
 
2296
2478
 
2297
2479
 
2480
+
2481
+
2482
+
2483
+
2484
+
2485
+
2486
+
2487
+
2298
2488
 
2299
2489
 
2300
2490
 
@@ -2350,6 +2540,21 @@ var _Queue = class _Queue extends LinearBase {
2350
2540
  this._elements[this._offset + index] = newElement;
2351
2541
  return true;
2352
2542
  }
2543
+ /**
2544
+ * Delete the first element that satisfies a predicate.
2545
+ * @remarks Time O(N), Space O(N)
2546
+ * @param predicate - Function (value, index, queue) → boolean to decide deletion.
2547
+ * @returns True if a match was removed.
2548
+ */
2549
+ deleteWhere(predicate) {
2550
+ for (let i = 0; i < this.length; i++) {
2551
+ if (predicate(this._elements[this._offset + i], i, this)) {
2552
+ this.deleteAt(i);
2553
+ return true;
2554
+ }
2555
+ }
2556
+ return false;
2557
+ }
2353
2558
  /**
2354
2559
  * Reverse the queue in-place by compacting then reversing.
2355
2560
  * @remarks Time O(N), Space O(N)
@@ -2384,6 +2589,14 @@ var _Queue = class _Queue extends LinearBase {
2384
2589
 
2385
2590
 
2386
2591
 
2592
+
2593
+
2594
+
2595
+
2596
+
2597
+
2598
+
2599
+
2387
2600
 
2388
2601
 
2389
2602
 
@@ -2426,6 +2639,14 @@ var _Queue = class _Queue extends LinearBase {
2426
2639
 
2427
2640
 
2428
2641
 
2642
+
2643
+
2644
+
2645
+
2646
+
2647
+
2648
+
2649
+
2429
2650
 
2430
2651
 
2431
2652
 
@@ -2491,6 +2712,14 @@ var _Queue = class _Queue extends LinearBase {
2491
2712
 
2492
2713
 
2493
2714
 
2715
+
2716
+
2717
+
2718
+
2719
+
2720
+
2721
+
2722
+
2494
2723
 
2495
2724
 
2496
2725
 
@@ -2540,6 +2769,14 @@ var _Queue = class _Queue extends LinearBase {
2540
2769
 
2541
2770
 
2542
2771
 
2772
+
2773
+
2774
+
2775
+
2776
+
2777
+
2778
+
2779
+
2543
2780
 
2544
2781
 
2545
2782
 
@@ -2593,6 +2830,14 @@ var _Queue = class _Queue extends LinearBase {
2593
2830
 
2594
2831
 
2595
2832
 
2833
+
2834
+
2835
+
2836
+
2837
+
2838
+
2839
+
2840
+
2596
2841
 
2597
2842
 
2598
2843
 
@@ -2868,6 +3113,13 @@ var _Deque = class _Deque extends LinearBase {
2868
3113
 
2869
3114
 
2870
3115
 
3116
+
3117
+
3118
+
3119
+
3120
+
3121
+
3122
+
2871
3123
 
2872
3124
 
2873
3125
 
@@ -2889,6 +3141,31 @@ var _Deque = class _Deque extends LinearBase {
2889
3141
  * console.log(last); // 50;
2890
3142
  *
2891
3143
  * // Length unchanged
3144
+ * console.log(deque.length); // 5;
3145
+ */
3146
+ /**
3147
+ * Peek at the front element without removing it (alias for `first`).
3148
+ * @remarks Time O(1), Space O(1)
3149
+ * @returns Front element or undefined.
3150
+ */
3151
+ peek() {
3152
+ return this.first;
3153
+ }
3154
+ /**
3155
+ * Deque peek at both ends
3156
+ * @example
3157
+ * // Deque peek at both ends
3158
+ * const deque = new Deque<number>([10, 20, 30, 40, 50]);
3159
+ *
3160
+ * // Get first element without removing
3161
+ * const first = deque.at(0);
3162
+ * console.log(first); // 10;
3163
+ *
3164
+ * // Get last element without removing
3165
+ * const last = deque.at(deque.length - 1);
3166
+ * console.log(last); // 50;
3167
+ *
3168
+ * // Length unchanged
2892
3169
  * console.log(deque.length); // 5;
2893
3170
  */
2894
3171
  get first() {
@@ -2921,6 +3198,14 @@ var _Deque = class _Deque extends LinearBase {
2921
3198
 
2922
3199
 
2923
3200
 
3201
+
3202
+
3203
+
3204
+
3205
+
3206
+
3207
+
3208
+
2924
3209
 
2925
3210
 
2926
3211
 
@@ -2980,6 +3265,14 @@ var _Deque = class _Deque extends LinearBase {
2980
3265
 
2981
3266
 
2982
3267
 
3268
+
3269
+
3270
+
3271
+
3272
+
3273
+
3274
+
3275
+
2983
3276
 
2984
3277
 
2985
3278
 
@@ -3052,6 +3345,14 @@ var _Deque = class _Deque extends LinearBase {
3052
3345
 
3053
3346
 
3054
3347
 
3348
+
3349
+
3350
+
3351
+
3352
+
3353
+
3354
+
3355
+
3055
3356
 
3056
3357
 
3057
3358
 
@@ -3111,6 +3412,14 @@ var _Deque = class _Deque extends LinearBase {
3111
3412
 
3112
3413
 
3113
3414
 
3415
+
3416
+
3417
+
3418
+
3419
+
3420
+
3421
+
3422
+
3114
3423
 
3115
3424
 
3116
3425
 
@@ -3171,6 +3480,14 @@ var _Deque = class _Deque extends LinearBase {
3171
3480
 
3172
3481
 
3173
3482
 
3483
+
3484
+
3485
+
3486
+
3487
+
3488
+
3489
+
3490
+
3174
3491
 
3175
3492
 
3176
3493
 
@@ -3272,6 +3589,14 @@ var _Deque = class _Deque extends LinearBase {
3272
3589
 
3273
3590
 
3274
3591
 
3592
+
3593
+
3594
+
3595
+
3596
+
3597
+
3598
+
3599
+
3275
3600
 
3276
3601
 
3277
3602
 
@@ -3313,6 +3638,14 @@ var _Deque = class _Deque extends LinearBase {
3313
3638
 
3314
3639
 
3315
3640
 
3641
+
3642
+
3643
+
3644
+
3645
+
3646
+
3647
+
3648
+
3316
3649
 
3317
3650
 
3318
3651
 
@@ -3358,6 +3691,14 @@ var _Deque = class _Deque extends LinearBase {
3358
3691
 
3359
3692
 
3360
3693
 
3694
+
3695
+
3696
+
3697
+
3698
+
3699
+
3700
+
3701
+
3361
3702
 
3362
3703
 
3363
3704
 
@@ -3554,6 +3895,14 @@ var _Deque = class _Deque extends LinearBase {
3554
3895
 
3555
3896
 
3556
3897
 
3898
+
3899
+
3900
+
3901
+
3902
+
3903
+
3904
+
3905
+
3557
3906
 
3558
3907
 
3559
3908
 
@@ -3637,6 +3986,14 @@ var _Deque = class _Deque extends LinearBase {
3637
3986
 
3638
3987
 
3639
3988
 
3989
+
3990
+
3991
+
3992
+
3993
+
3994
+
3995
+
3996
+
3640
3997
 
3641
3998
 
3642
3999
 
@@ -3745,6 +4102,14 @@ var _Deque = class _Deque extends LinearBase {
3745
4102
 
3746
4103
 
3747
4104
 
4105
+
4106
+
4107
+
4108
+
4109
+
4110
+
4111
+
4112
+
3748
4113
 
3749
4114
 
3750
4115
 
@@ -3812,6 +4177,14 @@ var _Deque = class _Deque extends LinearBase {
3812
4177
 
3813
4178
 
3814
4179
 
4180
+
4181
+
4182
+
4183
+
4184
+
4185
+
4186
+
4187
+
3815
4188
 
3816
4189
 
3817
4190
 
@@ -3862,6 +4235,14 @@ var _Deque = class _Deque extends LinearBase {
3862
4235
 
3863
4236
 
3864
4237
 
4238
+
4239
+
4240
+
4241
+
4242
+
4243
+
4244
+
4245
+
3865
4246
 
3866
4247
 
3867
4248
 
@@ -3932,6 +4313,14 @@ var _Deque = class _Deque extends LinearBase {
3932
4313
 
3933
4314
 
3934
4315
 
4316
+
4317
+
4318
+
4319
+
4320
+
4321
+
4322
+
4323
+
3935
4324
 
3936
4325
 
3937
4326