queue-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 (63) hide show
  1. package/dist/cjs/index.cjs +435 -0
  2. package/dist/cjs/index.cjs.map +1 -1
  3. package/dist/cjs-legacy/index.cjs +435 -0
  4. package/dist/cjs-legacy/index.cjs.map +1 -1
  5. package/dist/esm/index.mjs +435 -0
  6. package/dist/esm/index.mjs.map +1 -1
  7. package/dist/esm-legacy/index.mjs +435 -0
  8. package/dist/esm-legacy/index.mjs.map +1 -1
  9. package/dist/types/data-structures/base/iterable-element-base.d.ts +17 -0
  10. package/dist/types/data-structures/base/linear-base.d.ts +6 -0
  11. package/dist/types/data-structures/binary-tree/avl-tree.d.ts +86 -2
  12. package/dist/types/data-structures/binary-tree/binary-indexed-tree.d.ts +98 -0
  13. package/dist/types/data-structures/binary-tree/binary-tree.d.ts +191 -15
  14. package/dist/types/data-structures/binary-tree/bst.d.ts +171 -3
  15. package/dist/types/data-structures/binary-tree/red-black-tree.d.ts +136 -8
  16. package/dist/types/data-structures/binary-tree/segment-tree.d.ts +42 -0
  17. package/dist/types/data-structures/binary-tree/tree-map.d.ts +1061 -167
  18. package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +1232 -355
  19. package/dist/types/data-structures/binary-tree/tree-multi-set.d.ts +916 -194
  20. package/dist/types/data-structures/binary-tree/tree-set.d.ts +1078 -141
  21. package/dist/types/data-structures/graph/directed-graph.d.ts +70 -0
  22. package/dist/types/data-structures/graph/undirected-graph.d.ts +63 -0
  23. package/dist/types/data-structures/hash/hash-map.d.ts +84 -6
  24. package/dist/types/data-structures/heap/heap.d.ts +140 -12
  25. package/dist/types/data-structures/linked-list/doubly-linked-list.d.ts +150 -2
  26. package/dist/types/data-structures/linked-list/singly-linked-list.d.ts +106 -1
  27. package/dist/types/data-structures/linked-list/skip-linked-list.d.ts +126 -0
  28. package/dist/types/data-structures/matrix/matrix.d.ts +56 -0
  29. package/dist/types/data-structures/queue/deque.d.ts +171 -0
  30. package/dist/types/data-structures/queue/queue.d.ts +97 -0
  31. package/dist/types/data-structures/stack/stack.d.ts +72 -2
  32. package/dist/types/data-structures/trie/trie.d.ts +84 -0
  33. package/dist/types/interfaces/binary-tree.d.ts +2 -3
  34. package/dist/umd/queue-typed.js +435 -0
  35. package/dist/umd/queue-typed.js.map +1 -1
  36. package/dist/umd/queue-typed.min.js +1 -1
  37. package/dist/umd/queue-typed.min.js.map +1 -1
  38. package/package.json +2 -2
  39. package/src/data-structures/base/iterable-element-base.ts +32 -0
  40. package/src/data-structures/base/linear-base.ts +11 -0
  41. package/src/data-structures/binary-tree/avl-tree.ts +88 -5
  42. package/src/data-structures/binary-tree/binary-indexed-tree.ts +98 -0
  43. package/src/data-structures/binary-tree/binary-tree.ts +242 -81
  44. package/src/data-structures/binary-tree/bst.ts +173 -7
  45. package/src/data-structures/binary-tree/red-black-tree.ts +139 -15
  46. package/src/data-structures/binary-tree/segment-tree.ts +42 -0
  47. package/src/data-structures/binary-tree/tree-map.ts +948 -36
  48. package/src/data-structures/binary-tree/tree-multi-map.ts +893 -13
  49. package/src/data-structures/binary-tree/tree-multi-set.ts +761 -33
  50. package/src/data-structures/binary-tree/tree-set.ts +1260 -251
  51. package/src/data-structures/graph/directed-graph.ts +71 -1
  52. package/src/data-structures/graph/undirected-graph.ts +64 -1
  53. package/src/data-structures/hash/hash-map.ts +100 -12
  54. package/src/data-structures/heap/heap.ts +149 -19
  55. package/src/data-structures/linked-list/doubly-linked-list.ts +178 -2
  56. package/src/data-structures/linked-list/singly-linked-list.ts +106 -1
  57. package/src/data-structures/linked-list/skip-linked-list.ts +126 -0
  58. package/src/data-structures/matrix/matrix.ts +56 -0
  59. package/src/data-structures/queue/deque.ts +187 -0
  60. package/src/data-structures/queue/queue.ts +109 -0
  61. package/src/data-structures/stack/stack.ts +75 -5
  62. package/src/data-structures/trie/trie.ts +84 -0
  63. package/src/interfaces/binary-tree.ts +1 -9
@@ -232,6 +232,35 @@ var queueTyped = (() => {
232
232
  for (const ele of this) if (ele === element) return true;
233
233
  return false;
234
234
  }
235
+ /**
236
+ * Check whether a value exists (Array-compatible alias for `has`).
237
+ * @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1).
238
+ * @param element - Element to search for (uses `===`).
239
+ * @returns `true` if found.
240
+ */
241
+ includes(element) {
242
+ return this.has(element);
243
+ }
244
+ /**
245
+ * Return an iterator of `[index, value]` pairs (Array-compatible).
246
+ * @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1) per step.
247
+ */
248
+ *entries() {
249
+ let index = 0;
250
+ for (const value of this) {
251
+ yield [index++, value];
252
+ }
253
+ }
254
+ /**
255
+ * Return an iterator of numeric indices (Array-compatible).
256
+ * @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1) per step.
257
+ */
258
+ *keys() {
259
+ let index = 0;
260
+ for (const _ of this) {
261
+ yield index++;
262
+ }
263
+ }
235
264
  /**
236
265
  * Reduces all elements to a single accumulated value.
237
266
  *
@@ -536,6 +565,16 @@ var queueTyped = (() => {
536
565
  }
537
566
  return this;
538
567
  }
568
+ /**
569
+ * Return a new instance of the same type with elements in reverse order (non-mutating).
570
+ * @remarks Provided for familiarity when migrating from Array (ES2023 `toReversed`). Time O(n), Space O(n).
571
+ * @returns A new reversed instance.
572
+ */
573
+ toReversed() {
574
+ const cloned = this.clone();
575
+ cloned.reverse();
576
+ return cloned;
577
+ }
539
578
  };
540
579
  var LinearLinkedBase = class extends LinearBase {
541
580
  constructor(options) {
@@ -820,6 +859,13 @@ var queueTyped = (() => {
820
859
 
821
860
 
822
861
 
862
+
863
+
864
+
865
+
866
+
867
+
868
+
823
869
 
824
870
 
825
871
 
@@ -887,6 +933,13 @@ var queueTyped = (() => {
887
933
 
888
934
 
889
935
 
936
+
937
+
938
+
939
+
940
+
941
+
942
+
890
943
 
891
944
 
892
945
 
@@ -960,6 +1013,13 @@ var queueTyped = (() => {
960
1013
 
961
1014
 
962
1015
 
1016
+
1017
+
1018
+
1019
+
1020
+
1021
+
1022
+
963
1023
 
964
1024
 
965
1025
 
@@ -1014,6 +1074,13 @@ var queueTyped = (() => {
1014
1074
 
1015
1075
 
1016
1076
 
1077
+
1078
+
1079
+
1080
+
1081
+
1082
+
1083
+
1017
1084
 
1018
1085
 
1019
1086
 
@@ -1129,6 +1196,13 @@ var queueTyped = (() => {
1129
1196
 
1130
1197
 
1131
1198
 
1199
+
1200
+
1201
+
1202
+
1203
+
1204
+
1205
+
1132
1206
 
1133
1207
 
1134
1208
 
@@ -1188,6 +1262,13 @@ var queueTyped = (() => {
1188
1262
 
1189
1263
 
1190
1264
 
1265
+
1266
+
1267
+
1268
+
1269
+
1270
+
1271
+
1191
1272
 
1192
1273
 
1193
1274
 
@@ -1236,6 +1317,13 @@ var queueTyped = (() => {
1236
1317
 
1237
1318
 
1238
1319
 
1320
+
1321
+
1322
+
1323
+
1324
+
1325
+
1326
+
1239
1327
 
1240
1328
 
1241
1329
 
@@ -1290,6 +1378,13 @@ var queueTyped = (() => {
1290
1378
 
1291
1379
 
1292
1380
 
1381
+
1382
+
1383
+
1384
+
1385
+
1386
+
1387
+
1293
1388
 
1294
1389
 
1295
1390
 
@@ -1349,6 +1444,13 @@ var queueTyped = (() => {
1349
1444
 
1350
1445
 
1351
1446
 
1447
+
1448
+
1449
+
1450
+
1451
+
1452
+
1453
+
1352
1454
 
1353
1455
 
1354
1456
 
@@ -1416,6 +1518,13 @@ var queueTyped = (() => {
1416
1518
 
1417
1519
 
1418
1520
 
1521
+
1522
+
1523
+
1524
+
1525
+
1526
+
1527
+
1419
1528
 
1420
1529
 
1421
1530
 
@@ -1460,6 +1569,13 @@ var queueTyped = (() => {
1460
1569
 
1461
1570
 
1462
1571
 
1572
+
1573
+
1574
+
1575
+
1576
+
1577
+
1578
+
1463
1579
 
1464
1580
 
1465
1581
 
@@ -1510,6 +1626,13 @@ var queueTyped = (() => {
1510
1626
 
1511
1627
 
1512
1628
 
1629
+
1630
+
1631
+
1632
+
1633
+
1634
+
1635
+
1513
1636
 
1514
1637
 
1515
1638
 
@@ -1726,6 +1849,13 @@ var queueTyped = (() => {
1726
1849
 
1727
1850
 
1728
1851
 
1852
+
1853
+
1854
+
1855
+
1856
+
1857
+
1858
+
1729
1859
 
1730
1860
 
1731
1861
 
@@ -1780,6 +1910,13 @@ var queueTyped = (() => {
1780
1910
 
1781
1911
 
1782
1912
 
1913
+
1914
+
1915
+
1916
+
1917
+
1918
+
1919
+
1783
1920
 
1784
1921
 
1785
1922
 
@@ -1862,6 +1999,13 @@ var queueTyped = (() => {
1862
1999
 
1863
2000
 
1864
2001
 
2002
+
2003
+
2004
+
2005
+
2006
+
2007
+
2008
+
1865
2009
 
1866
2010
 
1867
2011
 
@@ -2093,6 +2237,13 @@ var queueTyped = (() => {
2093
2237
 
2094
2238
 
2095
2239
 
2240
+
2241
+
2242
+
2243
+
2244
+
2245
+
2246
+
2096
2247
 
2097
2248
 
2098
2249
 
@@ -2143,6 +2294,13 @@ var queueTyped = (() => {
2143
2294
 
2144
2295
 
2145
2296
 
2297
+
2298
+
2299
+
2300
+
2301
+
2302
+
2303
+
2146
2304
 
2147
2305
 
2148
2306
 
@@ -2160,6 +2318,14 @@ var queueTyped = (() => {
2160
2318
  get first() {
2161
2319
  return this.length > 0 ? this.elements[this._offset] : void 0;
2162
2320
  }
2321
+ /**
2322
+ * Peek at the front element without removing it (alias for `first`).
2323
+ * @remarks Time O(1), Space O(1)
2324
+ * @returns Front element or undefined.
2325
+ */
2326
+ peek() {
2327
+ return this.first;
2328
+ }
2163
2329
  /**
2164
2330
  * Get the last element (back) without removing it.
2165
2331
  * @remarks Time O(1), Space O(1)
@@ -2209,6 +2375,13 @@ var queueTyped = (() => {
2209
2375
 
2210
2376
 
2211
2377
 
2378
+
2379
+
2380
+
2381
+
2382
+
2383
+
2384
+
2212
2385
 
2213
2386
 
2214
2387
 
@@ -2271,6 +2444,13 @@ var queueTyped = (() => {
2271
2444
 
2272
2445
 
2273
2446
 
2447
+
2448
+
2449
+
2450
+
2451
+
2452
+
2453
+
2274
2454
 
2275
2455
 
2276
2456
 
@@ -2340,6 +2520,13 @@ var queueTyped = (() => {
2340
2520
 
2341
2521
 
2342
2522
 
2523
+
2524
+
2525
+
2526
+
2527
+
2528
+
2529
+
2343
2530
 
2344
2531
 
2345
2532
 
@@ -2399,6 +2586,13 @@ var queueTyped = (() => {
2399
2586
 
2400
2587
 
2401
2588
 
2589
+
2590
+
2591
+
2592
+
2593
+
2594
+
2595
+
2402
2596
 
2403
2597
 
2404
2598
 
@@ -2451,6 +2645,13 @@ var queueTyped = (() => {
2451
2645
 
2452
2646
 
2453
2647
 
2648
+
2649
+
2650
+
2651
+
2652
+
2653
+
2654
+
2454
2655
 
2455
2656
 
2456
2657
 
@@ -2505,6 +2706,21 @@ var queueTyped = (() => {
2505
2706
  this._elements[this._offset + index] = newElement;
2506
2707
  return true;
2507
2708
  }
2709
+ /**
2710
+ * Delete the first element that satisfies a predicate.
2711
+ * @remarks Time O(N), Space O(N)
2712
+ * @param predicate - Function (value, index, queue) → boolean to decide deletion.
2713
+ * @returns True if a match was removed.
2714
+ */
2715
+ deleteWhere(predicate) {
2716
+ for (let i = 0; i < this.length; i++) {
2717
+ if (predicate(this._elements[this._offset + i], i, this)) {
2718
+ this.deleteAt(i);
2719
+ return true;
2720
+ }
2721
+ }
2722
+ return false;
2723
+ }
2508
2724
  /**
2509
2725
  * Reverse the queue in-place by compacting then reversing.
2510
2726
  * @remarks Time O(N), Space O(N)
@@ -2544,6 +2760,13 @@ var queueTyped = (() => {
2544
2760
 
2545
2761
 
2546
2762
 
2763
+
2764
+
2765
+
2766
+
2767
+
2768
+
2769
+
2547
2770
 
2548
2771
 
2549
2772
 
@@ -2590,6 +2813,13 @@ var queueTyped = (() => {
2590
2813
 
2591
2814
 
2592
2815
 
2816
+
2817
+
2818
+
2819
+
2820
+
2821
+
2822
+
2593
2823
 
2594
2824
 
2595
2825
 
@@ -2659,6 +2889,13 @@ var queueTyped = (() => {
2659
2889
 
2660
2890
 
2661
2891
 
2892
+
2893
+
2894
+
2895
+
2896
+
2897
+
2898
+
2662
2899
 
2663
2900
 
2664
2901
 
@@ -2712,6 +2949,13 @@ var queueTyped = (() => {
2712
2949
 
2713
2950
 
2714
2951
 
2952
+
2953
+
2954
+
2955
+
2956
+
2957
+
2958
+
2715
2959
 
2716
2960
 
2717
2961
 
@@ -2769,6 +3013,13 @@ var queueTyped = (() => {
2769
3013
 
2770
3014
 
2771
3015
 
3016
+
3017
+
3018
+
3019
+
3020
+
3021
+
3022
+
2772
3023
 
2773
3024
 
2774
3025
 
@@ -3049,6 +3300,37 @@ var queueTyped = (() => {
3049
3300
 
3050
3301
 
3051
3302
 
3303
+
3304
+
3305
+
3306
+
3307
+
3308
+ * @example
3309
+ * // Deque peek at both ends
3310
+ * const deque = new Deque<number>([10, 20, 30, 40, 50]);
3311
+ *
3312
+ * // Get first element without removing
3313
+ * const first = deque.at(0);
3314
+ * console.log(first); // 10;
3315
+ *
3316
+ * // Get last element without removing
3317
+ * const last = deque.at(deque.length - 1);
3318
+ * console.log(last); // 50;
3319
+ *
3320
+ * // Length unchanged
3321
+ * console.log(deque.length); // 5;
3322
+ */
3323
+ /**
3324
+ * Peek at the front element without removing it (alias for `first`).
3325
+ * @remarks Time O(1), Space O(1)
3326
+ * @returns Front element or undefined.
3327
+ */
3328
+ peek() {
3329
+ return this.first;
3330
+ }
3331
+ /**
3332
+ * Deque peek at both ends
3333
+
3052
3334
 
3053
3335
 
3054
3336
  * @example
@@ -3101,6 +3383,13 @@ var queueTyped = (() => {
3101
3383
 
3102
3384
 
3103
3385
 
3386
+
3387
+
3388
+
3389
+
3390
+
3391
+
3392
+
3104
3393
 
3105
3394
 
3106
3395
 
@@ -3164,6 +3453,13 @@ var queueTyped = (() => {
3164
3453
 
3165
3454
 
3166
3455
 
3456
+
3457
+
3458
+
3459
+
3460
+
3461
+
3462
+
3167
3463
 
3168
3464
 
3169
3465
 
@@ -3240,6 +3536,13 @@ var queueTyped = (() => {
3240
3536
 
3241
3537
 
3242
3538
 
3539
+
3540
+
3541
+
3542
+
3543
+
3544
+
3545
+
3243
3546
 
3244
3547
 
3245
3548
 
@@ -3303,6 +3606,13 @@ var queueTyped = (() => {
3303
3606
 
3304
3607
 
3305
3608
 
3609
+
3610
+
3611
+
3612
+
3613
+
3614
+
3615
+
3306
3616
 
3307
3617
 
3308
3618
 
@@ -3367,6 +3677,13 @@ var queueTyped = (() => {
3367
3677
 
3368
3678
 
3369
3679
 
3680
+
3681
+
3682
+
3683
+
3684
+
3685
+
3686
+
3370
3687
 
3371
3688
 
3372
3689
 
@@ -3472,6 +3789,13 @@ var queueTyped = (() => {
3472
3789
 
3473
3790
 
3474
3791
 
3792
+
3793
+
3794
+
3795
+
3796
+
3797
+
3798
+
3475
3799
 
3476
3800
 
3477
3801
 
@@ -3517,6 +3841,13 @@ var queueTyped = (() => {
3517
3841
 
3518
3842
 
3519
3843
 
3844
+
3845
+
3846
+
3847
+
3848
+
3849
+
3850
+
3520
3851
 
3521
3852
 
3522
3853
 
@@ -3566,6 +3897,13 @@ var queueTyped = (() => {
3566
3897
 
3567
3898
 
3568
3899
 
3900
+
3901
+
3902
+
3903
+
3904
+
3905
+
3906
+
3569
3907
 
3570
3908
 
3571
3909
 
@@ -3766,6 +4104,13 @@ var queueTyped = (() => {
3766
4104
 
3767
4105
 
3768
4106
 
4107
+
4108
+
4109
+
4110
+
4111
+
4112
+
4113
+
3769
4114
 
3770
4115
 
3771
4116
 
@@ -3860,6 +4205,68 @@ var queueTyped = (() => {
3860
4205
 
3861
4206
 
3862
4207
 
4208
+
4209
+
4210
+
4211
+
4212
+
4213
+ * @example
4214
+ * // Deque for...of iteration and reverse
4215
+ * const deque = new Deque<string>(['A', 'B', 'C', 'D']);
4216
+ *
4217
+ * // Iterate forward
4218
+ * const forward: string[] = [];
4219
+ * for (const item of deque) {
4220
+ * forward.push(item);
4221
+ * }
4222
+ * console.log(forward); // ['A', 'B', 'C', 'D'];
4223
+ *
4224
+ * // Reverse the deque
4225
+ * deque.reverse();
4226
+ * const backward: string[] = [];
4227
+ * for (const item of deque) {
4228
+ * backward.push(item);
4229
+ * }
4230
+ * console.log(backward); // ['D', 'C', 'B', 'A'];
4231
+ */
4232
+ /**
4233
+ * Find the last value matching a predicate (scans back-to-front).
4234
+ * @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1).
4235
+ * @param predicate - Function called with (value, index, deque).
4236
+ * @returns Matching value or undefined.
4237
+ * @example
4238
+ * // Find last matching value
4239
+ * const d = new Deque([1, 2, 3, 4, 5]);
4240
+ * console.log(d.findLast(v => v > 2)); // 5;
4241
+ * console.log(d.findLast(v => v % 2 === 0)); // 4;
4242
+ */
4243
+ findLast(predicate) {
4244
+ for (let i = this.length - 1; i >= 0; i--) {
4245
+ const val = this.at(i);
4246
+ if (predicate(val, i, this)) return val;
4247
+ }
4248
+ return void 0;
4249
+ }
4250
+ /**
4251
+ * Find the index of the last value matching a predicate (scans back-to-front).
4252
+ * @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1).
4253
+ * @param predicate - Function called with (value, index, deque).
4254
+ * @returns Matching index, or -1 if not found.
4255
+ * @example
4256
+ * // Find last matching index
4257
+ * const d = new Deque([10, 20, 30, 20, 10]);
4258
+ * console.log(d.findLastIndex(v => v === 20)); // 3;
4259
+ * console.log(d.findLastIndex(v => v === 10)); // 4;
4260
+ */
4261
+ findLastIndex(predicate) {
4262
+ for (let i = this.length - 1; i >= 0; i--) {
4263
+ if (predicate(this.at(i), i, this)) return i;
4264
+ }
4265
+ return -1;
4266
+ }
4267
+ /**
4268
+ * Deque for...of iteration and reverse
4269
+
3863
4270
 
3864
4271
  * @example
3865
4272
  * // Deque for...of iteration and reverse
@@ -3965,6 +4372,13 @@ var queueTyped = (() => {
3965
4372
 
3966
4373
 
3967
4374
 
4375
+
4376
+
4377
+
4378
+
4379
+
4380
+
4381
+
3968
4382
 
3969
4383
 
3970
4384
 
@@ -4036,6 +4450,13 @@ var queueTyped = (() => {
4036
4450
 
4037
4451
 
4038
4452
 
4453
+
4454
+
4455
+
4456
+
4457
+
4458
+
4459
+
4039
4460
 
4040
4461
 
4041
4462
 
@@ -4090,6 +4511,13 @@ var queueTyped = (() => {
4090
4511
 
4091
4512
 
4092
4513
 
4514
+
4515
+
4516
+
4517
+
4518
+
4519
+
4520
+
4093
4521
 
4094
4522
 
4095
4523
 
@@ -4164,6 +4592,13 @@ var queueTyped = (() => {
4164
4592
 
4165
4593
 
4166
4594
 
4595
+
4596
+
4597
+
4598
+
4599
+
4600
+
4601
+
4167
4602
 
4168
4603
 
4169
4604