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
@@ -5,6 +5,12 @@ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { en
5
5
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
6
6
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
7
7
 
8
+ // src/common/error.ts
9
+ function raise(ErrorClass, message) {
10
+ throw new ErrorClass(message);
11
+ }
12
+ __name(raise, "raise");
13
+
8
14
  // src/data-structures/base/iterable-element-base.ts
9
15
  var _IterableElementBase = class _IterableElementBase {
10
16
  /**
@@ -27,7 +33,7 @@ var _IterableElementBase = class _IterableElementBase {
27
33
  if (options) {
28
34
  const { toElementFn } = options;
29
35
  if (typeof toElementFn === "function") this._toElementFn = toElementFn;
30
- else if (toElementFn) throw new TypeError("toElementFn must be a function type");
36
+ else if (toElementFn) raise(TypeError, "toElementFn must be a function type");
31
37
  }
32
38
  }
33
39
  /**
@@ -183,7 +189,7 @@ var _IterableElementBase = class _IterableElementBase {
183
189
  acc = initialValue;
184
190
  } else {
185
191
  const first = iter.next();
186
- if (first.done) throw new TypeError("Reduce of empty structure with no initial value");
192
+ if (first.done) raise(TypeError, "Reduce of empty structure with no initial value");
187
193
  acc = first.value;
188
194
  index = 1;
189
195
  }
@@ -747,6 +753,14 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
747
753
 
748
754
 
749
755
 
756
+
757
+
758
+
759
+
760
+
761
+
762
+
763
+
750
764
 
751
765
 
752
766
 
@@ -810,6 +824,14 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
810
824
 
811
825
 
812
826
 
827
+
828
+
829
+
830
+
831
+
832
+
833
+
834
+
813
835
 
814
836
 
815
837
 
@@ -879,6 +901,14 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
879
901
 
880
902
 
881
903
 
904
+
905
+
906
+
907
+
908
+
909
+
910
+
911
+
882
912
 
883
913
 
884
914
 
@@ -929,6 +959,14 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
929
959
 
930
960
 
931
961
 
962
+
963
+
964
+
965
+
966
+
967
+
968
+
969
+
932
970
 
933
971
 
934
972
 
@@ -1040,6 +1078,14 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
1040
1078
 
1041
1079
 
1042
1080
 
1081
+
1082
+
1083
+
1084
+
1085
+
1086
+
1087
+
1088
+
1043
1089
 
1044
1090
 
1045
1091
 
@@ -1095,6 +1141,14 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
1095
1141
 
1096
1142
 
1097
1143
 
1144
+
1145
+
1146
+
1147
+
1148
+
1149
+
1150
+
1151
+
1098
1152
 
1099
1153
 
1100
1154
 
@@ -1139,6 +1193,14 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
1139
1193
 
1140
1194
 
1141
1195
 
1196
+
1197
+
1198
+
1199
+
1200
+
1201
+
1202
+
1203
+
1142
1204
 
1143
1205
 
1144
1206
 
@@ -1189,6 +1251,14 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
1189
1251
 
1190
1252
 
1191
1253
 
1254
+
1255
+
1256
+
1257
+
1258
+
1259
+
1260
+
1261
+
1192
1262
 
1193
1263
 
1194
1264
 
@@ -1244,6 +1314,14 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
1244
1314
 
1245
1315
 
1246
1316
 
1317
+
1318
+
1319
+
1320
+
1321
+
1322
+
1323
+
1324
+
1247
1325
 
1248
1326
 
1249
1327
 
@@ -1307,6 +1385,14 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
1307
1385
 
1308
1386
 
1309
1387
 
1388
+
1389
+
1390
+
1391
+
1392
+
1393
+
1394
+
1395
+
1310
1396
 
1311
1397
 
1312
1398
 
@@ -1347,6 +1433,14 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
1347
1433
 
1348
1434
 
1349
1435
 
1436
+
1437
+
1438
+
1439
+
1440
+
1441
+
1442
+
1443
+
1350
1444
 
1351
1445
 
1352
1446
 
@@ -1393,6 +1487,14 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
1393
1487
 
1394
1488
 
1395
1489
 
1490
+
1491
+
1492
+
1493
+
1494
+
1495
+
1496
+
1497
+
1396
1498
 
1397
1499
 
1398
1500
 
@@ -1605,6 +1707,14 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
1605
1707
 
1606
1708
 
1607
1709
 
1710
+
1711
+
1712
+
1713
+
1714
+
1715
+
1716
+
1717
+
1608
1718
 
1609
1719
 
1610
1720
 
@@ -1655,6 +1765,14 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
1655
1765
 
1656
1766
 
1657
1767
 
1768
+
1769
+
1770
+
1771
+
1772
+
1773
+
1774
+
1775
+
1658
1776
 
1659
1777
 
1660
1778
 
@@ -1733,6 +1851,14 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
1733
1851
 
1734
1852
 
1735
1853
 
1854
+
1855
+
1856
+
1857
+
1858
+
1859
+
1860
+
1861
+
1736
1862
 
1737
1863
 
1738
1864
 
@@ -1963,6 +2089,14 @@ var _Queue = class _Queue extends LinearBase {
1963
2089
 
1964
2090
 
1965
2091
 
2092
+
2093
+
2094
+
2095
+
2096
+
2097
+
2098
+
2099
+
1966
2100
 
1967
2101
 
1968
2102
 
@@ -2009,6 +2143,14 @@ var _Queue = class _Queue extends LinearBase {
2009
2143
 
2010
2144
 
2011
2145
 
2146
+
2147
+
2148
+
2149
+
2150
+
2151
+
2152
+
2153
+
2012
2154
 
2013
2155
 
2014
2156
 
@@ -2027,6 +2169,14 @@ var _Queue = class _Queue extends LinearBase {
2027
2169
  get first() {
2028
2170
  return this.length > 0 ? this.elements[this._offset] : void 0;
2029
2171
  }
2172
+ /**
2173
+ * Peek at the front element without removing it (alias for `first`).
2174
+ * @remarks Time O(1), Space O(1)
2175
+ * @returns Front element or undefined.
2176
+ */
2177
+ peek() {
2178
+ return this.first;
2179
+ }
2030
2180
  /**
2031
2181
  * Get the last element (back) without removing it.
2032
2182
  * @remarks Time O(1), Space O(1)
@@ -2071,6 +2221,14 @@ var _Queue = class _Queue extends LinearBase {
2071
2221
 
2072
2222
 
2073
2223
 
2224
+
2225
+
2226
+
2227
+
2228
+
2229
+
2230
+
2231
+
2074
2232
 
2075
2233
 
2076
2234
 
@@ -2129,6 +2287,14 @@ var _Queue = class _Queue extends LinearBase {
2129
2287
 
2130
2288
 
2131
2289
 
2290
+
2291
+
2292
+
2293
+
2294
+
2295
+
2296
+
2297
+
2132
2298
 
2133
2299
 
2134
2300
 
@@ -2194,6 +2360,14 @@ var _Queue = class _Queue extends LinearBase {
2194
2360
 
2195
2361
 
2196
2362
 
2363
+
2364
+
2365
+
2366
+
2367
+
2368
+
2369
+
2370
+
2197
2371
 
2198
2372
 
2199
2373
 
@@ -2249,6 +2423,14 @@ var _Queue = class _Queue extends LinearBase {
2249
2423
 
2250
2424
 
2251
2425
 
2426
+
2427
+
2428
+
2429
+
2430
+
2431
+
2432
+
2433
+
2252
2434
 
2253
2435
 
2254
2436
 
@@ -2297,6 +2479,14 @@ var _Queue = class _Queue extends LinearBase {
2297
2479
 
2298
2480
 
2299
2481
 
2482
+
2483
+
2484
+
2485
+
2486
+
2487
+
2488
+
2489
+
2300
2490
 
2301
2491
 
2302
2492
 
@@ -2352,6 +2542,21 @@ var _Queue = class _Queue extends LinearBase {
2352
2542
  this._elements[this._offset + index] = newElement;
2353
2543
  return true;
2354
2544
  }
2545
+ /**
2546
+ * Delete the first element that satisfies a predicate.
2547
+ * @remarks Time O(N), Space O(N)
2548
+ * @param predicate - Function (value, index, queue) → boolean to decide deletion.
2549
+ * @returns True if a match was removed.
2550
+ */
2551
+ deleteWhere(predicate) {
2552
+ for (let i = 0; i < this.length; i++) {
2553
+ if (predicate(this._elements[this._offset + i], i, this)) {
2554
+ this.deleteAt(i);
2555
+ return true;
2556
+ }
2557
+ }
2558
+ return false;
2559
+ }
2355
2560
  /**
2356
2561
  * Reverse the queue in-place by compacting then reversing.
2357
2562
  * @remarks Time O(N), Space O(N)
@@ -2386,6 +2591,14 @@ var _Queue = class _Queue extends LinearBase {
2386
2591
 
2387
2592
 
2388
2593
 
2594
+
2595
+
2596
+
2597
+
2598
+
2599
+
2600
+
2601
+
2389
2602
 
2390
2603
 
2391
2604
 
@@ -2428,6 +2641,14 @@ var _Queue = class _Queue extends LinearBase {
2428
2641
 
2429
2642
 
2430
2643
 
2644
+
2645
+
2646
+
2647
+
2648
+
2649
+
2650
+
2651
+
2431
2652
 
2432
2653
 
2433
2654
 
@@ -2493,6 +2714,14 @@ var _Queue = class _Queue extends LinearBase {
2493
2714
 
2494
2715
 
2495
2716
 
2717
+
2718
+
2719
+
2720
+
2721
+
2722
+
2723
+
2724
+
2496
2725
 
2497
2726
 
2498
2727
 
@@ -2542,6 +2771,14 @@ var _Queue = class _Queue extends LinearBase {
2542
2771
 
2543
2772
 
2544
2773
 
2774
+
2775
+
2776
+
2777
+
2778
+
2779
+
2780
+
2781
+
2545
2782
 
2546
2783
 
2547
2784
 
@@ -2595,6 +2832,14 @@ var _Queue = class _Queue extends LinearBase {
2595
2832
 
2596
2833
 
2597
2834
 
2835
+
2836
+
2837
+
2838
+
2839
+
2840
+
2841
+
2842
+
2598
2843
 
2599
2844
 
2600
2845
 
@@ -2870,6 +3115,13 @@ var _Deque = class _Deque extends LinearBase {
2870
3115
 
2871
3116
 
2872
3117
 
3118
+
3119
+
3120
+
3121
+
3122
+
3123
+
3124
+
2873
3125
 
2874
3126
 
2875
3127
 
@@ -2891,6 +3143,31 @@ var _Deque = class _Deque extends LinearBase {
2891
3143
  * console.log(last); // 50;
2892
3144
  *
2893
3145
  * // Length unchanged
3146
+ * console.log(deque.length); // 5;
3147
+ */
3148
+ /**
3149
+ * Peek at the front element without removing it (alias for `first`).
3150
+ * @remarks Time O(1), Space O(1)
3151
+ * @returns Front element or undefined.
3152
+ */
3153
+ peek() {
3154
+ return this.first;
3155
+ }
3156
+ /**
3157
+ * Deque peek at both ends
3158
+ * @example
3159
+ * // Deque peek at both ends
3160
+ * const deque = new Deque<number>([10, 20, 30, 40, 50]);
3161
+ *
3162
+ * // Get first element without removing
3163
+ * const first = deque.at(0);
3164
+ * console.log(first); // 10;
3165
+ *
3166
+ * // Get last element without removing
3167
+ * const last = deque.at(deque.length - 1);
3168
+ * console.log(last); // 50;
3169
+ *
3170
+ * // Length unchanged
2894
3171
  * console.log(deque.length); // 5;
2895
3172
  */
2896
3173
  get first() {
@@ -2923,6 +3200,14 @@ var _Deque = class _Deque extends LinearBase {
2923
3200
 
2924
3201
 
2925
3202
 
3203
+
3204
+
3205
+
3206
+
3207
+
3208
+
3209
+
3210
+
2926
3211
 
2927
3212
 
2928
3213
 
@@ -2982,6 +3267,14 @@ var _Deque = class _Deque extends LinearBase {
2982
3267
 
2983
3268
 
2984
3269
 
3270
+
3271
+
3272
+
3273
+
3274
+
3275
+
3276
+
3277
+
2985
3278
 
2986
3279
 
2987
3280
 
@@ -3054,6 +3347,14 @@ var _Deque = class _Deque extends LinearBase {
3054
3347
 
3055
3348
 
3056
3349
 
3350
+
3351
+
3352
+
3353
+
3354
+
3355
+
3356
+
3357
+
3057
3358
 
3058
3359
 
3059
3360
 
@@ -3113,6 +3414,14 @@ var _Deque = class _Deque extends LinearBase {
3113
3414
 
3114
3415
 
3115
3416
 
3417
+
3418
+
3419
+
3420
+
3421
+
3422
+
3423
+
3424
+
3116
3425
 
3117
3426
 
3118
3427
 
@@ -3173,6 +3482,14 @@ var _Deque = class _Deque extends LinearBase {
3173
3482
 
3174
3483
 
3175
3484
 
3485
+
3486
+
3487
+
3488
+
3489
+
3490
+
3491
+
3492
+
3176
3493
 
3177
3494
 
3178
3495
 
@@ -3274,6 +3591,14 @@ var _Deque = class _Deque extends LinearBase {
3274
3591
 
3275
3592
 
3276
3593
 
3594
+
3595
+
3596
+
3597
+
3598
+
3599
+
3600
+
3601
+
3277
3602
 
3278
3603
 
3279
3604
 
@@ -3315,6 +3640,14 @@ var _Deque = class _Deque extends LinearBase {
3315
3640
 
3316
3641
 
3317
3642
 
3643
+
3644
+
3645
+
3646
+
3647
+
3648
+
3649
+
3650
+
3318
3651
 
3319
3652
 
3320
3653
 
@@ -3360,6 +3693,14 @@ var _Deque = class _Deque extends LinearBase {
3360
3693
 
3361
3694
 
3362
3695
 
3696
+
3697
+
3698
+
3699
+
3700
+
3701
+
3702
+
3703
+
3363
3704
 
3364
3705
 
3365
3706
 
@@ -3556,6 +3897,14 @@ var _Deque = class _Deque extends LinearBase {
3556
3897
 
3557
3898
 
3558
3899
 
3900
+
3901
+
3902
+
3903
+
3904
+
3905
+
3906
+
3907
+
3559
3908
 
3560
3909
 
3561
3910
 
@@ -3639,6 +3988,14 @@ var _Deque = class _Deque extends LinearBase {
3639
3988
 
3640
3989
 
3641
3990
 
3991
+
3992
+
3993
+
3994
+
3995
+
3996
+
3997
+
3998
+
3642
3999
 
3643
4000
 
3644
4001
 
@@ -3747,6 +4104,14 @@ var _Deque = class _Deque extends LinearBase {
3747
4104
 
3748
4105
 
3749
4106
 
4107
+
4108
+
4109
+
4110
+
4111
+
4112
+
4113
+
4114
+
3750
4115
 
3751
4116
 
3752
4117
 
@@ -3814,6 +4179,14 @@ var _Deque = class _Deque extends LinearBase {
3814
4179
 
3815
4180
 
3816
4181
 
4182
+
4183
+
4184
+
4185
+
4186
+
4187
+
4188
+
4189
+
3817
4190
 
3818
4191
 
3819
4192
 
@@ -3864,6 +4237,14 @@ var _Deque = class _Deque extends LinearBase {
3864
4237
 
3865
4238
 
3866
4239
 
4240
+
4241
+
4242
+
4243
+
4244
+
4245
+
4246
+
4247
+
3867
4248
 
3868
4249
 
3869
4250
 
@@ -3934,6 +4315,14 @@ var _Deque = class _Deque extends LinearBase {
3934
4315
 
3935
4316
 
3936
4317
 
4318
+
4319
+
4320
+
4321
+
4322
+
4323
+
4324
+
4325
+
3937
4326
 
3938
4327
 
3939
4328