directed-graph-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 +359 -14
  2. package/dist/cjs/index.cjs.map +1 -1
  3. package/dist/cjs-legacy/index.cjs +359 -14
  4. package/dist/cjs-legacy/index.cjs.map +1 -1
  5. package/dist/esm/index.mjs +359 -14
  6. package/dist/esm/index.mjs.map +1 -1
  7. package/dist/esm-legacy/index.mjs +359 -14
  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/directed-graph-typed.js +359 -14
  35. package/dist/umd/directed-graph-typed.js.map +1 -1
  36. package/dist/umd/directed-graph-typed.min.js +1 -1
  37. package/dist/umd/directed-graph-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
@@ -435,6 +435,35 @@ var directedGraphTyped = (() => {
435
435
  for (const ele of this) if (ele === element) return true;
436
436
  return false;
437
437
  }
438
+ /**
439
+ * Check whether a value exists (Array-compatible alias for `has`).
440
+ * @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1).
441
+ * @param element - Element to search for (uses `===`).
442
+ * @returns `true` if found.
443
+ */
444
+ includes(element) {
445
+ return this.has(element);
446
+ }
447
+ /**
448
+ * Return an iterator of `[index, value]` pairs (Array-compatible).
449
+ * @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1) per step.
450
+ */
451
+ *entries() {
452
+ let index = 0;
453
+ for (const value of this) {
454
+ yield [index++, value];
455
+ }
456
+ }
457
+ /**
458
+ * Return an iterator of numeric indices (Array-compatible).
459
+ * @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1) per step.
460
+ */
461
+ *keys() {
462
+ let index = 0;
463
+ for (const _ of this) {
464
+ yield index++;
465
+ }
466
+ }
438
467
  /**
439
468
  * Reduces all elements to a single accumulated value.
440
469
  *
@@ -694,6 +723,16 @@ var directedGraphTyped = (() => {
694
723
  }
695
724
  return this;
696
725
  }
726
+ /**
727
+ * Return a new instance of the same type with elements in reverse order (non-mutating).
728
+ * @remarks Provided for familiarity when migrating from Array (ES2023 `toReversed`). Time O(n), Space O(n).
729
+ * @returns A new reversed instance.
730
+ */
731
+ toReversed() {
732
+ const cloned = this.clone();
733
+ cloned.reverse();
734
+ return cloned;
735
+ }
697
736
  };
698
737
 
699
738
  // src/data-structures/heap/heap.ts
@@ -763,6 +802,13 @@ var directedGraphTyped = (() => {
763
802
 
764
803
 
765
804
 
805
+
806
+
807
+
808
+
809
+
810
+
811
+
766
812
 
767
813
 
768
814
 
@@ -820,7 +866,7 @@ var directedGraphTyped = (() => {
820
866
  }
821
867
  /**
822
868
  * Insert an element.
823
- * @remarks Time O(1) amortized, Space O(1)
869
+ * @remarks Time O(log N) amortized, Space O(1)
824
870
  * @param element - Element to insert.
825
871
  * @returns True.
826
872
 
@@ -850,6 +896,13 @@ var directedGraphTyped = (() => {
850
896
 
851
897
 
852
898
 
899
+
900
+
901
+
902
+
903
+
904
+
905
+
853
906
 
854
907
 
855
908
 
@@ -907,6 +960,13 @@ var directedGraphTyped = (() => {
907
960
 
908
961
 
909
962
 
963
+
964
+
965
+
966
+
967
+
968
+
969
+
910
970
 
911
971
 
912
972
 
@@ -971,6 +1031,40 @@ var directedGraphTyped = (() => {
971
1031
 
972
1032
 
973
1033
 
1034
+
1035
+
1036
+
1037
+
1038
+
1039
+
1040
+ * @example
1041
+ * // Heap with custom comparator (MaxHeap behavior)
1042
+ * interface Task {
1043
+ * id: number;
1044
+ * priority: number;
1045
+ * name: string;
1046
+ * }
1047
+ *
1048
+ * // Custom comparator for max heap behavior (higher priority first)
1049
+ * const tasks: Task[] = [
1050
+ * { id: 1, priority: 5, name: 'Email' },
1051
+ * { id: 2, priority: 3, name: 'Chat' },
1052
+ * { id: 3, priority: 8, name: 'Alert' }
1053
+ * ];
1054
+ *
1055
+ * const maxHeap = new Heap(tasks, {
1056
+ * comparator: (a: Task, b: Task) => b.priority - a.priority
1057
+ * });
1058
+ *
1059
+ * console.log(maxHeap.size); // 3;
1060
+ *
1061
+ * // Peek returns highest priority task
1062
+ * const topTask = maxHeap.peek();
1063
+ * console.log(topTask?.priority); // 8;
1064
+ * console.log(topTask?.name); // 'Alert';
1065
+ */
1066
+ /**
1067
+ * @deprecated Use `pop` instead. Will be removed in a future major version.
974
1068
 
975
1069
 
976
1070
 
@@ -1001,6 +1095,14 @@ var directedGraphTyped = (() => {
1001
1095
  * console.log(topTask?.name); // 'Alert';
1002
1096
  */
1003
1097
  poll() {
1098
+ return this.pop();
1099
+ }
1100
+ /**
1101
+ * Remove and return the top element (min or max depending on comparator).
1102
+ * @remarks Time O(log N) amortized, Space O(1)
1103
+ * @returns The removed top element, or undefined if empty.
1104
+ */
1105
+ pop() {
1004
1106
  if (this.elements.length === 0) return;
1005
1107
  const value = this.elements[0];
1006
1108
  const last = this.elements.pop();
@@ -1041,6 +1143,13 @@ var directedGraphTyped = (() => {
1041
1143
 
1042
1144
 
1043
1145
 
1146
+
1147
+
1148
+
1149
+
1150
+
1151
+
1152
+
1044
1153
 
1045
1154
 
1046
1155
 
@@ -1141,6 +1250,13 @@ var directedGraphTyped = (() => {
1141
1250
 
1142
1251
 
1143
1252
 
1253
+
1254
+
1255
+
1256
+
1257
+
1258
+
1259
+
1144
1260
 
1145
1261
 
1146
1262
 
@@ -1188,6 +1304,13 @@ var directedGraphTyped = (() => {
1188
1304
 
1189
1305
 
1190
1306
 
1307
+
1308
+
1309
+
1310
+
1311
+
1312
+
1313
+
1191
1314
 
1192
1315
 
1193
1316
 
@@ -1205,16 +1328,6 @@ var directedGraphTyped = (() => {
1205
1328
  clear() {
1206
1329
  this._elements = [];
1207
1330
  }
1208
- /**
1209
- * Replace the backing array and rebuild the heap.
1210
- * @remarks Time O(N), Space O(N)
1211
- * @param elements - Iterable used to refill the heap.
1212
- * @returns Array of per-node results from fixing steps.
1213
- */
1214
- refill(elements) {
1215
- this._elements = Array.from(elements);
1216
- return this.fix();
1217
- }
1218
1331
  /**
1219
1332
  * Check if an equal element exists in the heap.
1220
1333
  * @remarks Time O(N), Space O(1)
@@ -1238,6 +1351,13 @@ var directedGraphTyped = (() => {
1238
1351
 
1239
1352
 
1240
1353
 
1354
+
1355
+
1356
+
1357
+
1358
+
1359
+
1360
+
1241
1361
 
1242
1362
 
1243
1363
 
@@ -1285,6 +1405,13 @@ var directedGraphTyped = (() => {
1285
1405
 
1286
1406
 
1287
1407
 
1408
+
1409
+
1410
+
1411
+
1412
+
1413
+
1414
+
1288
1415
 
1289
1416
 
1290
1417
 
@@ -1309,7 +1436,7 @@ var directedGraphTyped = (() => {
1309
1436
  }
1310
1437
  if (index < 0) return false;
1311
1438
  if (index === 0) {
1312
- this.poll();
1439
+ this.pop();
1313
1440
  } else if (index === this.elements.length - 1) {
1314
1441
  this.elements.pop();
1315
1442
  } else {
@@ -1319,13 +1446,19 @@ var directedGraphTyped = (() => {
1319
1446
  }
1320
1447
  return true;
1321
1448
  }
1449
+ /**
1450
+ * @deprecated Use `deleteWhere` instead. Will be removed in a future major version.
1451
+ */
1452
+ deleteBy(predicate) {
1453
+ return this.deleteWhere(predicate);
1454
+ }
1322
1455
  /**
1323
1456
  * Delete the first element that matches a predicate.
1324
1457
  * @remarks Time O(N), Space O(1)
1325
1458
  * @param predicate - Function (element, index, heap) → boolean.
1326
1459
  * @returns True if an element was removed.
1327
1460
  */
1328
- deleteBy(predicate) {
1461
+ deleteWhere(predicate) {
1329
1462
  let idx = -1;
1330
1463
  for (let i = 0; i < this.elements.length; i++) {
1331
1464
  if (predicate(this.elements[i], i, this)) {
@@ -1335,7 +1468,7 @@ var directedGraphTyped = (() => {
1335
1468
  }
1336
1469
  if (idx < 0) return false;
1337
1470
  if (idx === 0) {
1338
- this.poll();
1471
+ this.pop();
1339
1472
  } else if (idx === this.elements.length - 1) {
1340
1473
  this.elements.pop();
1341
1474
  } else {
@@ -1378,6 +1511,13 @@ var directedGraphTyped = (() => {
1378
1511
 
1379
1512
 
1380
1513
 
1514
+
1515
+
1516
+
1517
+
1518
+
1519
+
1520
+
1381
1521
 
1382
1522
 
1383
1523
 
@@ -1458,6 +1598,13 @@ var directedGraphTyped = (() => {
1458
1598
 
1459
1599
 
1460
1600
 
1601
+
1602
+
1603
+
1604
+
1605
+
1606
+
1607
+
1461
1608
 
1462
1609
 
1463
1610
 
@@ -1511,6 +1658,13 @@ var directedGraphTyped = (() => {
1511
1658
 
1512
1659
 
1513
1660
 
1661
+
1662
+
1663
+
1664
+
1665
+
1666
+
1667
+
1514
1668
 
1515
1669
 
1516
1670
 
@@ -1563,6 +1717,13 @@ var directedGraphTyped = (() => {
1563
1717
 
1564
1718
 
1565
1719
 
1720
+
1721
+
1722
+
1723
+
1724
+
1725
+
1726
+
1566
1727
 
1567
1728
 
1568
1729
 
@@ -1622,6 +1783,13 @@ var directedGraphTyped = (() => {
1622
1783
 
1623
1784
 
1624
1785
 
1786
+
1787
+
1788
+
1789
+
1790
+
1791
+
1792
+
1625
1793
 
1626
1794
 
1627
1795
 
@@ -1823,6 +1991,13 @@ var directedGraphTyped = (() => {
1823
1991
 
1824
1992
 
1825
1993
 
1994
+
1995
+
1996
+
1997
+
1998
+
1999
+
2000
+
1826
2001
 
1827
2002
 
1828
2003
 
@@ -1873,6 +2048,13 @@ var directedGraphTyped = (() => {
1873
2048
 
1874
2049
 
1875
2050
 
2051
+
2052
+
2053
+
2054
+
2055
+
2056
+
2057
+
1876
2058
 
1877
2059
 
1878
2060
 
@@ -1890,6 +2072,14 @@ var directedGraphTyped = (() => {
1890
2072
  get first() {
1891
2073
  return this.length > 0 ? this.elements[this._offset] : void 0;
1892
2074
  }
2075
+ /**
2076
+ * Peek at the front element without removing it (alias for `first`).
2077
+ * @remarks Time O(1), Space O(1)
2078
+ * @returns Front element or undefined.
2079
+ */
2080
+ peek() {
2081
+ return this.first;
2082
+ }
1893
2083
  /**
1894
2084
  * Get the last element (back) without removing it.
1895
2085
  * @remarks Time O(1), Space O(1)
@@ -1939,6 +2129,13 @@ var directedGraphTyped = (() => {
1939
2129
 
1940
2130
 
1941
2131
 
2132
+
2133
+
2134
+
2135
+
2136
+
2137
+
2138
+
1942
2139
 
1943
2140
 
1944
2141
 
@@ -2001,6 +2198,13 @@ var directedGraphTyped = (() => {
2001
2198
 
2002
2199
 
2003
2200
 
2201
+
2202
+
2203
+
2204
+
2205
+
2206
+
2207
+
2004
2208
 
2005
2209
 
2006
2210
 
@@ -2070,6 +2274,13 @@ var directedGraphTyped = (() => {
2070
2274
 
2071
2275
 
2072
2276
 
2277
+
2278
+
2279
+
2280
+
2281
+
2282
+
2283
+
2073
2284
 
2074
2285
 
2075
2286
 
@@ -2129,6 +2340,13 @@ var directedGraphTyped = (() => {
2129
2340
 
2130
2341
 
2131
2342
 
2343
+
2344
+
2345
+
2346
+
2347
+
2348
+
2349
+
2132
2350
 
2133
2351
 
2134
2352
 
@@ -2181,6 +2399,13 @@ var directedGraphTyped = (() => {
2181
2399
 
2182
2400
 
2183
2401
 
2402
+
2403
+
2404
+
2405
+
2406
+
2407
+
2408
+
2184
2409
 
2185
2410
 
2186
2411
 
@@ -2235,6 +2460,21 @@ var directedGraphTyped = (() => {
2235
2460
  this._elements[this._offset + index] = newElement;
2236
2461
  return true;
2237
2462
  }
2463
+ /**
2464
+ * Delete the first element that satisfies a predicate.
2465
+ * @remarks Time O(N), Space O(N)
2466
+ * @param predicate - Function (value, index, queue) → boolean to decide deletion.
2467
+ * @returns True if a match was removed.
2468
+ */
2469
+ deleteWhere(predicate) {
2470
+ for (let i = 0; i < this.length; i++) {
2471
+ if (predicate(this._elements[this._offset + i], i, this)) {
2472
+ this.deleteAt(i);
2473
+ return true;
2474
+ }
2475
+ }
2476
+ return false;
2477
+ }
2238
2478
  /**
2239
2479
  * Reverse the queue in-place by compacting then reversing.
2240
2480
  * @remarks Time O(N), Space O(N)
@@ -2274,6 +2514,13 @@ var directedGraphTyped = (() => {
2274
2514
 
2275
2515
 
2276
2516
 
2517
+
2518
+
2519
+
2520
+
2521
+
2522
+
2523
+
2277
2524
 
2278
2525
 
2279
2526
 
@@ -2320,6 +2567,13 @@ var directedGraphTyped = (() => {
2320
2567
 
2321
2568
 
2322
2569
 
2570
+
2571
+
2572
+
2573
+
2574
+
2575
+
2576
+
2323
2577
 
2324
2578
 
2325
2579
 
@@ -2389,6 +2643,13 @@ var directedGraphTyped = (() => {
2389
2643
 
2390
2644
 
2391
2645
 
2646
+
2647
+
2648
+
2649
+
2650
+
2651
+
2652
+
2392
2653
 
2393
2654
 
2394
2655
 
@@ -2442,6 +2703,13 @@ var directedGraphTyped = (() => {
2442
2703
 
2443
2704
 
2444
2705
 
2706
+
2707
+
2708
+
2709
+
2710
+
2711
+
2712
+
2445
2713
 
2446
2714
 
2447
2715
 
@@ -2499,6 +2767,13 @@ var directedGraphTyped = (() => {
2499
2767
 
2500
2768
 
2501
2769
 
2770
+
2771
+
2772
+
2773
+
2774
+
2775
+
2776
+
2502
2777
 
2503
2778
 
2504
2779
 
@@ -3629,6 +3904,13 @@ var directedGraphTyped = (() => {
3629
3904
 
3630
3905
 
3631
3906
 
3907
+
3908
+
3909
+
3910
+
3911
+
3912
+
3913
+
3632
3914
 
3633
3915
 
3634
3916
 
@@ -3717,6 +3999,13 @@ var directedGraphTyped = (() => {
3717
3999
 
3718
4000
 
3719
4001
 
4002
+
4003
+
4004
+
4005
+
4006
+
4007
+
4008
+
3720
4009
 
3721
4010
 
3722
4011
 
@@ -3803,6 +4092,13 @@ var directedGraphTyped = (() => {
3803
4092
 
3804
4093
 
3805
4094
 
4095
+
4096
+
4097
+
4098
+
4099
+
4100
+
4101
+
3806
4102
 
3807
4103
 
3808
4104
 
@@ -3880,6 +4176,13 @@ var directedGraphTyped = (() => {
3880
4176
 
3881
4177
 
3882
4178
 
4179
+
4180
+
4181
+
4182
+
4183
+
4184
+
4185
+
3883
4186
 
3884
4187
 
3885
4188
 
@@ -3934,6 +4237,13 @@ var directedGraphTyped = (() => {
3934
4237
 
3935
4238
 
3936
4239
 
4240
+
4241
+
4242
+
4243
+
4244
+
4245
+
4246
+
3937
4247
 
3938
4248
 
3939
4249
 
@@ -4041,6 +4351,13 @@ var directedGraphTyped = (() => {
4041
4351
 
4042
4352
 
4043
4353
 
4354
+
4355
+
4356
+
4357
+
4358
+
4359
+
4360
+
4044
4361
 
4045
4362
 
4046
4363
 
@@ -4129,6 +4446,13 @@ var directedGraphTyped = (() => {
4129
4446
 
4130
4447
 
4131
4448
 
4449
+
4450
+
4451
+
4452
+
4453
+
4454
+
4455
+
4132
4456
 
4133
4457
 
4134
4458
 
@@ -4179,6 +4503,13 @@ var directedGraphTyped = (() => {
4179
4503
 
4180
4504
 
4181
4505
 
4506
+
4507
+
4508
+
4509
+
4510
+
4511
+
4512
+
4182
4513
 
4183
4514
 
4184
4515
 
@@ -4282,6 +4613,13 @@ var directedGraphTyped = (() => {
4282
4613
 
4283
4614
 
4284
4615
 
4616
+
4617
+
4618
+
4619
+
4620
+
4621
+
4622
+
4285
4623
 
4286
4624
 
4287
4625
 
@@ -4388,6 +4726,13 @@ var directedGraphTyped = (() => {
4388
4726
 
4389
4727
 
4390
4728
 
4729
+
4730
+
4731
+
4732
+
4733
+
4734
+
4735
+
4391
4736
 
4392
4737
 
4393
4738