data-structure-typed 2.5.3 → 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 (104) hide show
  1. package/.husky/pre-commit +3 -0
  2. package/CHANGELOG.md +1 -1
  3. package/MIGRATION.md +48 -0
  4. package/README.md +20 -2
  5. package/README_CN.md +20 -2
  6. package/SPECIFICATION.md +24 -0
  7. package/SPECIFICATION.zh-CN.md +24 -0
  8. package/dist/cjs/binary-tree.cjs +1897 -19
  9. package/dist/cjs/graph.cjs +174 -0
  10. package/dist/cjs/hash.cjs +33 -0
  11. package/dist/cjs/heap.cjs +71 -0
  12. package/dist/cjs/index.cjs +2383 -3
  13. package/dist/cjs/linked-list.cjs +224 -2
  14. package/dist/cjs/matrix.cjs +24 -0
  15. package/dist/cjs/priority-queue.cjs +71 -0
  16. package/dist/cjs/queue.cjs +221 -1
  17. package/dist/cjs/stack.cjs +59 -0
  18. package/dist/cjs/trie.cjs +62 -0
  19. package/dist/cjs-legacy/binary-tree.cjs +1897 -19
  20. package/dist/cjs-legacy/graph.cjs +174 -0
  21. package/dist/cjs-legacy/hash.cjs +33 -0
  22. package/dist/cjs-legacy/heap.cjs +71 -0
  23. package/dist/cjs-legacy/index.cjs +2383 -3
  24. package/dist/cjs-legacy/linked-list.cjs +224 -2
  25. package/dist/cjs-legacy/matrix.cjs +24 -0
  26. package/dist/cjs-legacy/priority-queue.cjs +71 -0
  27. package/dist/cjs-legacy/queue.cjs +221 -1
  28. package/dist/cjs-legacy/stack.cjs +59 -0
  29. package/dist/cjs-legacy/trie.cjs +62 -0
  30. package/dist/esm/binary-tree.mjs +1897 -19
  31. package/dist/esm/graph.mjs +174 -0
  32. package/dist/esm/hash.mjs +33 -0
  33. package/dist/esm/heap.mjs +71 -0
  34. package/dist/esm/index.mjs +2383 -3
  35. package/dist/esm/linked-list.mjs +224 -2
  36. package/dist/esm/matrix.mjs +24 -0
  37. package/dist/esm/priority-queue.mjs +71 -0
  38. package/dist/esm/queue.mjs +221 -1
  39. package/dist/esm/stack.mjs +59 -0
  40. package/dist/esm/trie.mjs +62 -0
  41. package/dist/esm-legacy/binary-tree.mjs +1897 -19
  42. package/dist/esm-legacy/graph.mjs +174 -0
  43. package/dist/esm-legacy/hash.mjs +33 -0
  44. package/dist/esm-legacy/heap.mjs +71 -0
  45. package/dist/esm-legacy/index.mjs +2383 -3
  46. package/dist/esm-legacy/linked-list.mjs +224 -2
  47. package/dist/esm-legacy/matrix.mjs +24 -0
  48. package/dist/esm-legacy/priority-queue.mjs +71 -0
  49. package/dist/esm-legacy/queue.mjs +221 -1
  50. package/dist/esm-legacy/stack.mjs +59 -0
  51. package/dist/esm-legacy/trie.mjs +62 -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 +36 -0
  55. package/dist/types/data-structures/binary-tree/binary-indexed-tree.d.ts +42 -0
  56. package/dist/types/data-structures/binary-tree/binary-tree.d.ts +75 -0
  57. package/dist/types/data-structures/binary-tree/bst.d.ts +72 -0
  58. package/dist/types/data-structures/binary-tree/red-black-tree.d.ts +57 -0
  59. package/dist/types/data-structures/binary-tree/segment-tree.d.ts +18 -0
  60. package/dist/types/data-structures/binary-tree/tree-map.d.ts +375 -0
  61. package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +389 -0
  62. package/dist/types/data-structures/binary-tree/tree-multi-set.d.ts +330 -0
  63. package/dist/types/data-structures/binary-tree/tree-set.d.ts +438 -0
  64. package/dist/types/data-structures/graph/directed-graph.d.ts +30 -0
  65. package/dist/types/data-structures/graph/undirected-graph.d.ts +27 -0
  66. package/dist/types/data-structures/hash/hash-map.d.ts +33 -0
  67. package/dist/types/data-structures/heap/heap.d.ts +42 -0
  68. package/dist/types/data-structures/linked-list/doubly-linked-list.d.ts +75 -2
  69. package/dist/types/data-structures/linked-list/singly-linked-list.d.ts +45 -0
  70. package/dist/types/data-structures/linked-list/skip-linked-list.d.ts +54 -0
  71. package/dist/types/data-structures/matrix/matrix.d.ts +24 -0
  72. package/dist/types/data-structures/queue/deque.d.ts +90 -1
  73. package/dist/types/data-structures/queue/queue.d.ts +36 -0
  74. package/dist/types/data-structures/stack/stack.d.ts +30 -0
  75. package/dist/types/data-structures/trie/trie.d.ts +36 -0
  76. package/dist/umd/data-structure-typed.js +2383 -3
  77. package/dist/umd/data-structure-typed.min.js +3 -3
  78. package/docs-site-docusaurus/docs/api/classes/LinkedHashMap.md +14 -10
  79. package/jest.integration.config.js +1 -2
  80. package/package.json +9 -7
  81. package/src/data-structures/base/iterable-element-base.ts +32 -0
  82. package/src/data-structures/base/linear-base.ts +11 -0
  83. package/src/data-structures/binary-tree/avl-tree.ts +36 -0
  84. package/src/data-structures/binary-tree/binary-indexed-tree.ts +42 -0
  85. package/src/data-structures/binary-tree/binary-tree.ts +75 -0
  86. package/src/data-structures/binary-tree/bst.ts +72 -0
  87. package/src/data-structures/binary-tree/red-black-tree.ts +57 -0
  88. package/src/data-structures/binary-tree/segment-tree.ts +18 -0
  89. package/src/data-structures/binary-tree/tree-map.ts +375 -0
  90. package/src/data-structures/binary-tree/tree-multi-map.ts +392 -0
  91. package/src/data-structures/binary-tree/tree-multi-set.ts +336 -0
  92. package/src/data-structures/binary-tree/tree-set.ts +492 -0
  93. package/src/data-structures/graph/directed-graph.ts +30 -0
  94. package/src/data-structures/graph/undirected-graph.ts +27 -0
  95. package/src/data-structures/hash/hash-map.ts +33 -0
  96. package/src/data-structures/heap/heap.ts +42 -0
  97. package/src/data-structures/linked-list/doubly-linked-list.ts +90 -2
  98. package/src/data-structures/linked-list/singly-linked-list.ts +45 -0
  99. package/src/data-structures/linked-list/skip-linked-list.ts +54 -0
  100. package/src/data-structures/matrix/matrix.ts +24 -0
  101. package/src/data-structures/queue/deque.ts +103 -1
  102. package/src/data-structures/queue/queue.ts +36 -0
  103. package/src/data-structures/stack/stack.ts +30 -0
  104. package/src/data-structures/trie/trie.ts +36 -0
@@ -183,6 +183,35 @@ var _IterableElementBase = class _IterableElementBase {
183
183
  for (const ele of this) if (ele === element) return true;
184
184
  return false;
185
185
  }
186
+ /**
187
+ * Check whether a value exists (Array-compatible alias for `has`).
188
+ * @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1).
189
+ * @param element - Element to search for (uses `===`).
190
+ * @returns `true` if found.
191
+ */
192
+ includes(element) {
193
+ return this.has(element);
194
+ }
195
+ /**
196
+ * Return an iterator of `[index, value]` pairs (Array-compatible).
197
+ * @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1) per step.
198
+ */
199
+ *entries() {
200
+ let index = 0;
201
+ for (const value of this) {
202
+ yield [index++, value];
203
+ }
204
+ }
205
+ /**
206
+ * Return an iterator of numeric indices (Array-compatible).
207
+ * @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1) per step.
208
+ */
209
+ *keys() {
210
+ let index = 0;
211
+ for (const _ of this) {
212
+ yield index++;
213
+ }
214
+ }
186
215
  /**
187
216
  * Reduces all elements to a single accumulated value.
188
217
  *
@@ -331,6 +360,9 @@ var _Heap = class _Heap extends IterableElementBase {
331
360
 
332
361
 
333
362
 
363
+
364
+
365
+
334
366
 
335
367
 
336
368
 
@@ -422,6 +454,9 @@ var _Heap = class _Heap extends IterableElementBase {
422
454
 
423
455
 
424
456
 
457
+
458
+
459
+
425
460
 
426
461
 
427
462
 
@@ -483,6 +518,9 @@ var _Heap = class _Heap extends IterableElementBase {
483
518
 
484
519
 
485
520
 
521
+
522
+
523
+
486
524
 
487
525
 
488
526
 
@@ -577,6 +615,9 @@ var _Heap = class _Heap extends IterableElementBase {
577
615
  */
578
616
  /**
579
617
  * @deprecated Use `pop` instead. Will be removed in a future major version.
618
+
619
+
620
+
580
621
  * @example
581
622
  * // Heap with custom comparator (MaxHeap behavior)
582
623
  * interface Task {
@@ -660,6 +701,9 @@ var _Heap = class _Heap extends IterableElementBase {
660
701
 
661
702
 
662
703
 
704
+
705
+
706
+
663
707
 
664
708
 
665
709
 
@@ -764,6 +808,9 @@ var _Heap = class _Heap extends IterableElementBase {
764
808
 
765
809
 
766
810
 
811
+
812
+
813
+
767
814
 
768
815
 
769
816
 
@@ -815,6 +862,9 @@ var _Heap = class _Heap extends IterableElementBase {
815
862
 
816
863
 
817
864
 
865
+
866
+
867
+
818
868
 
819
869
 
820
870
 
@@ -859,6 +909,9 @@ var _Heap = class _Heap extends IterableElementBase {
859
909
 
860
910
 
861
911
 
912
+
913
+
914
+
862
915
 
863
916
 
864
917
 
@@ -910,6 +963,9 @@ var _Heap = class _Heap extends IterableElementBase {
910
963
 
911
964
 
912
965
 
966
+
967
+
968
+
913
969
 
914
970
 
915
971
 
@@ -1013,6 +1069,9 @@ var _Heap = class _Heap extends IterableElementBase {
1013
1069
 
1014
1070
 
1015
1071
 
1072
+
1073
+
1074
+
1016
1075
 
1017
1076
 
1018
1077
 
@@ -1097,6 +1156,9 @@ var _Heap = class _Heap extends IterableElementBase {
1097
1156
 
1098
1157
 
1099
1158
 
1159
+
1160
+
1161
+
1100
1162
 
1101
1163
 
1102
1164
 
@@ -1154,6 +1216,9 @@ var _Heap = class _Heap extends IterableElementBase {
1154
1216
 
1155
1217
 
1156
1218
 
1219
+
1220
+
1221
+
1157
1222
 
1158
1223
 
1159
1224
 
@@ -1210,6 +1275,9 @@ var _Heap = class _Heap extends IterableElementBase {
1210
1275
 
1211
1276
 
1212
1277
 
1278
+
1279
+
1280
+
1213
1281
 
1214
1282
 
1215
1283
 
@@ -1273,6 +1341,9 @@ var _Heap = class _Heap extends IterableElementBase {
1273
1341
 
1274
1342
 
1275
1343
 
1344
+
1345
+
1346
+
1276
1347
 
1277
1348
 
1278
1349
 
@@ -158,6 +158,35 @@ var _IterableElementBase = class _IterableElementBase {
158
158
  for (const ele of this) if (ele === element) return true;
159
159
  return false;
160
160
  }
161
+ /**
162
+ * Check whether a value exists (Array-compatible alias for `has`).
163
+ * @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1).
164
+ * @param element - Element to search for (uses `===`).
165
+ * @returns `true` if found.
166
+ */
167
+ includes(element) {
168
+ return this.has(element);
169
+ }
170
+ /**
171
+ * Return an iterator of `[index, value]` pairs (Array-compatible).
172
+ * @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1) per step.
173
+ */
174
+ *entries() {
175
+ let index = 0;
176
+ for (const value of this) {
177
+ yield [index++, value];
178
+ }
179
+ }
180
+ /**
181
+ * Return an iterator of numeric indices (Array-compatible).
182
+ * @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1) per step.
183
+ */
184
+ *keys() {
185
+ let index = 0;
186
+ for (const _ of this) {
187
+ yield index++;
188
+ }
189
+ }
161
190
  /**
162
191
  * Reduces all elements to a single accumulated value.
163
192
  *
@@ -466,6 +495,16 @@ var _LinearBase = class _LinearBase extends IterableElementBase {
466
495
  }
467
496
  return this;
468
497
  }
498
+ /**
499
+ * Return a new instance of the same type with elements in reverse order (non-mutating).
500
+ * @remarks Provided for familiarity when migrating from Array (ES2023 `toReversed`). Time O(n), Space O(n).
501
+ * @returns A new reversed instance.
502
+ */
503
+ toReversed() {
504
+ const cloned = this.clone();
505
+ cloned.reverse();
506
+ return cloned;
507
+ }
469
508
  };
470
509
  __name(_LinearBase, "LinearBase");
471
510
  var LinearBase = _LinearBase;
@@ -764,6 +803,9 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
764
803
 
765
804
 
766
805
 
806
+
807
+
808
+
767
809
 
768
810
 
769
811
 
@@ -835,6 +877,9 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
835
877
 
836
878
 
837
879
 
880
+
881
+
882
+
838
883
 
839
884
 
840
885
 
@@ -912,6 +957,9 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
912
957
 
913
958
 
914
959
 
960
+
961
+
962
+
915
963
 
916
964
 
917
965
 
@@ -970,6 +1018,9 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
970
1018
 
971
1019
 
972
1020
 
1021
+
1022
+
1023
+
973
1024
 
974
1025
 
975
1026
 
@@ -1089,6 +1140,9 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
1089
1140
 
1090
1141
 
1091
1142
 
1143
+
1144
+
1145
+
1092
1146
 
1093
1147
 
1094
1148
 
@@ -1152,6 +1206,9 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
1152
1206
 
1153
1207
 
1154
1208
 
1209
+
1210
+
1211
+
1155
1212
 
1156
1213
 
1157
1214
 
@@ -1204,6 +1261,9 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
1204
1261
 
1205
1262
 
1206
1263
 
1264
+
1265
+
1266
+
1207
1267
 
1208
1268
 
1209
1269
 
@@ -1262,6 +1322,9 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
1262
1322
 
1263
1323
 
1264
1324
 
1325
+
1326
+
1327
+
1265
1328
 
1266
1329
 
1267
1330
 
@@ -1325,6 +1388,9 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
1325
1388
 
1326
1389
 
1327
1390
 
1391
+
1392
+
1393
+
1328
1394
 
1329
1395
 
1330
1396
 
@@ -1396,6 +1462,9 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
1396
1462
 
1397
1463
 
1398
1464
 
1465
+
1466
+
1467
+
1399
1468
 
1400
1469
 
1401
1470
 
@@ -1444,6 +1513,9 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
1444
1513
 
1445
1514
 
1446
1515
 
1516
+
1517
+
1518
+
1447
1519
 
1448
1520
 
1449
1521
 
@@ -1498,6 +1570,9 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
1498
1570
 
1499
1571
 
1500
1572
 
1573
+
1574
+
1575
+
1501
1576
 
1502
1577
 
1503
1578
 
@@ -1718,6 +1793,9 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
1718
1793
 
1719
1794
 
1720
1795
 
1796
+
1797
+
1798
+
1721
1799
 
1722
1800
 
1723
1801
 
@@ -1776,6 +1854,9 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
1776
1854
 
1777
1855
 
1778
1856
 
1857
+
1858
+
1859
+
1779
1860
 
1780
1861
 
1781
1862
 
@@ -1862,6 +1943,9 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
1862
1943
 
1863
1944
 
1864
1945
 
1946
+
1947
+
1948
+
1865
1949
 
1866
1950
 
1867
1951
 
@@ -2100,6 +2184,9 @@ var _Queue = class _Queue extends LinearBase {
2100
2184
 
2101
2185
 
2102
2186
 
2187
+
2188
+
2189
+
2103
2190
 
2104
2191
 
2105
2192
 
@@ -2154,6 +2241,9 @@ var _Queue = class _Queue extends LinearBase {
2154
2241
 
2155
2242
 
2156
2243
 
2244
+
2245
+
2246
+
2157
2247
 
2158
2248
 
2159
2249
 
@@ -2232,6 +2322,9 @@ var _Queue = class _Queue extends LinearBase {
2232
2322
 
2233
2323
 
2234
2324
 
2325
+
2326
+
2327
+
2235
2328
 
2236
2329
 
2237
2330
 
@@ -2298,6 +2391,9 @@ var _Queue = class _Queue extends LinearBase {
2298
2391
 
2299
2392
 
2300
2393
 
2394
+
2395
+
2396
+
2301
2397
 
2302
2398
 
2303
2399
 
@@ -2371,6 +2467,9 @@ var _Queue = class _Queue extends LinearBase {
2371
2467
 
2372
2468
 
2373
2469
 
2470
+
2471
+
2472
+
2374
2473
 
2375
2474
 
2376
2475
 
@@ -2434,6 +2533,9 @@ var _Queue = class _Queue extends LinearBase {
2434
2533
 
2435
2534
 
2436
2535
 
2536
+
2537
+
2538
+
2437
2539
 
2438
2540
 
2439
2541
 
@@ -2490,6 +2592,9 @@ var _Queue = class _Queue extends LinearBase {
2490
2592
 
2491
2593
 
2492
2594
 
2595
+
2596
+
2597
+
2493
2598
 
2494
2599
 
2495
2600
 
@@ -2602,6 +2707,9 @@ var _Queue = class _Queue extends LinearBase {
2602
2707
 
2603
2708
 
2604
2709
 
2710
+
2711
+
2712
+
2605
2713
 
2606
2714
 
2607
2715
 
@@ -2652,6 +2760,9 @@ var _Queue = class _Queue extends LinearBase {
2652
2760
 
2653
2761
 
2654
2762
 
2763
+
2764
+
2765
+
2655
2766
 
2656
2767
 
2657
2768
 
@@ -2725,6 +2836,9 @@ var _Queue = class _Queue extends LinearBase {
2725
2836
 
2726
2837
 
2727
2838
 
2839
+
2840
+
2841
+
2728
2842
 
2729
2843
 
2730
2844
 
@@ -2782,6 +2896,9 @@ var _Queue = class _Queue extends LinearBase {
2782
2896
 
2783
2897
 
2784
2898
 
2899
+
2900
+
2901
+
2785
2902
 
2786
2903
 
2787
2904
 
@@ -2843,6 +2960,9 @@ var _Queue = class _Queue extends LinearBase {
2843
2960
 
2844
2961
 
2845
2962
 
2963
+
2964
+
2965
+
2846
2966
 
2847
2967
 
2848
2968
 
@@ -3153,7 +3273,10 @@ var _Deque = class _Deque extends LinearBase {
3153
3273
  }
3154
3274
  /**
3155
3275
  * Deque peek at both ends
3156
- * @example
3276
+
3277
+
3278
+
3279
+ * @example
3157
3280
  * // Deque peek at both ends
3158
3281
  * const deque = new Deque<number>([10, 20, 30, 40, 50]);
3159
3282
  *
@@ -3211,6 +3334,9 @@ var _Deque = class _Deque extends LinearBase {
3211
3334
 
3212
3335
 
3213
3336
 
3337
+
3338
+
3339
+
3214
3340
 
3215
3341
 
3216
3342
 
@@ -3278,6 +3404,9 @@ var _Deque = class _Deque extends LinearBase {
3278
3404
 
3279
3405
 
3280
3406
 
3407
+
3408
+
3409
+
3281
3410
 
3282
3411
 
3283
3412
 
@@ -3358,6 +3487,9 @@ var _Deque = class _Deque extends LinearBase {
3358
3487
 
3359
3488
 
3360
3489
 
3490
+
3491
+
3492
+
3361
3493
 
3362
3494
 
3363
3495
 
@@ -3425,6 +3557,9 @@ var _Deque = class _Deque extends LinearBase {
3425
3557
 
3426
3558
 
3427
3559
 
3560
+
3561
+
3562
+
3428
3563
 
3429
3564
 
3430
3565
 
@@ -3493,6 +3628,9 @@ var _Deque = class _Deque extends LinearBase {
3493
3628
 
3494
3629
 
3495
3630
 
3631
+
3632
+
3633
+
3496
3634
 
3497
3635
 
3498
3636
 
@@ -3602,6 +3740,9 @@ var _Deque = class _Deque extends LinearBase {
3602
3740
 
3603
3741
 
3604
3742
 
3743
+
3744
+
3745
+
3605
3746
 
3606
3747
 
3607
3748
 
@@ -3651,6 +3792,9 @@ var _Deque = class _Deque extends LinearBase {
3651
3792
 
3652
3793
 
3653
3794
 
3795
+
3796
+
3797
+
3654
3798
 
3655
3799
 
3656
3800
 
@@ -3704,6 +3848,9 @@ var _Deque = class _Deque extends LinearBase {
3704
3848
 
3705
3849
 
3706
3850
 
3851
+
3852
+
3853
+
3707
3854
 
3708
3855
 
3709
3856
 
@@ -3908,6 +4055,9 @@ var _Deque = class _Deque extends LinearBase {
3908
4055
 
3909
4056
 
3910
4057
 
4058
+
4059
+
4060
+
3911
4061
 
3912
4062
 
3913
4063
 
@@ -4002,6 +4152,64 @@ var _Deque = class _Deque extends LinearBase {
4002
4152
 
4003
4153
 
4004
4154
 
4155
+
4156
+ * @example
4157
+ * // Deque for...of iteration and reverse
4158
+ * const deque = new Deque<string>(['A', 'B', 'C', 'D']);
4159
+ *
4160
+ * // Iterate forward
4161
+ * const forward: string[] = [];
4162
+ * for (const item of deque) {
4163
+ * forward.push(item);
4164
+ * }
4165
+ * console.log(forward); // ['A', 'B', 'C', 'D'];
4166
+ *
4167
+ * // Reverse the deque
4168
+ * deque.reverse();
4169
+ * const backward: string[] = [];
4170
+ * for (const item of deque) {
4171
+ * backward.push(item);
4172
+ * }
4173
+ * console.log(backward); // ['D', 'C', 'B', 'A'];
4174
+ */
4175
+ /**
4176
+ * Find the last value matching a predicate (scans back-to-front).
4177
+ * @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1).
4178
+ * @param predicate - Function called with (value, index, deque).
4179
+ * @returns Matching value or undefined.
4180
+ * @example
4181
+ * // Find last matching value
4182
+ * const d = new Deque([1, 2, 3, 4, 5]);
4183
+ * console.log(d.findLast(v => v > 2)); // 5;
4184
+ * console.log(d.findLast(v => v % 2 === 0)); // 4;
4185
+ */
4186
+ findLast(predicate) {
4187
+ for (let i = this.length - 1; i >= 0; i--) {
4188
+ const val = this.at(i);
4189
+ if (predicate(val, i, this)) return val;
4190
+ }
4191
+ return void 0;
4192
+ }
4193
+ /**
4194
+ * Find the index of the last value matching a predicate (scans back-to-front).
4195
+ * @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1).
4196
+ * @param predicate - Function called with (value, index, deque).
4197
+ * @returns Matching index, or -1 if not found.
4198
+ * @example
4199
+ * // Find last matching index
4200
+ * const d = new Deque([10, 20, 30, 20, 10]);
4201
+ * console.log(d.findLastIndex(v => v === 20)); // 3;
4202
+ * console.log(d.findLastIndex(v => v === 10)); // 4;
4203
+ */
4204
+ findLastIndex(predicate) {
4205
+ for (let i = this.length - 1; i >= 0; i--) {
4206
+ if (predicate(this.at(i), i, this)) return i;
4207
+ }
4208
+ return -1;
4209
+ }
4210
+ /**
4211
+ * Deque for...of iteration and reverse
4212
+
4005
4213
 
4006
4214
  * @example
4007
4215
  * // Deque for...of iteration and reverse
@@ -4115,6 +4323,9 @@ var _Deque = class _Deque extends LinearBase {
4115
4323
 
4116
4324
 
4117
4325
 
4326
+
4327
+
4328
+
4118
4329
 
4119
4330
 
4120
4331
 
@@ -4190,6 +4401,9 @@ var _Deque = class _Deque extends LinearBase {
4190
4401
 
4191
4402
 
4192
4403
 
4404
+
4405
+
4406
+
4193
4407
 
4194
4408
 
4195
4409
 
@@ -4248,6 +4462,9 @@ var _Deque = class _Deque extends LinearBase {
4248
4462
 
4249
4463
 
4250
4464
 
4465
+
4466
+
4467
+
4251
4468
 
4252
4469
 
4253
4470
 
@@ -4326,6 +4543,9 @@ var _Deque = class _Deque extends LinearBase {
4326
4543
 
4327
4544
 
4328
4545
 
4546
+
4547
+
4548
+
4329
4549
 
4330
4550
 
4331
4551