graph-typed 2.5.1 → 2.5.2

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 (73) hide show
  1. package/dist/cjs/index.cjs +148 -6
  2. package/dist/cjs/index.cjs.map +1 -1
  3. package/dist/cjs-legacy/index.cjs +148 -6
  4. package/dist/cjs-legacy/index.cjs.map +1 -1
  5. package/dist/esm/index.mjs +148 -7
  6. package/dist/esm/index.mjs.map +1 -1
  7. package/dist/esm-legacy/index.mjs +148 -7
  8. package/dist/esm-legacy/index.mjs.map +1 -1
  9. package/dist/types/common/error.d.ts +9 -0
  10. package/dist/types/common/index.d.ts +1 -1
  11. package/dist/types/data-structures/binary-tree/avl-tree.d.ts +36 -0
  12. package/dist/types/data-structures/binary-tree/binary-indexed-tree.d.ts +42 -0
  13. package/dist/types/data-structures/binary-tree/binary-tree.d.ts +77 -2
  14. package/dist/types/data-structures/binary-tree/bst.d.ts +171 -0
  15. package/dist/types/data-structures/binary-tree/red-black-tree.d.ts +57 -0
  16. package/dist/types/data-structures/binary-tree/segment-tree.d.ts +18 -0
  17. package/dist/types/data-structures/binary-tree/tree-map.d.ts +409 -0
  18. package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +411 -6
  19. package/dist/types/data-structures/binary-tree/tree-multi-set.d.ts +339 -6
  20. package/dist/types/data-structures/binary-tree/tree-set.d.ts +391 -0
  21. package/dist/types/data-structures/graph/directed-graph.d.ts +30 -0
  22. package/dist/types/data-structures/graph/undirected-graph.d.ts +27 -0
  23. package/dist/types/data-structures/hash/hash-map.d.ts +33 -0
  24. package/dist/types/data-structures/heap/heap.d.ts +42 -0
  25. package/dist/types/data-structures/linked-list/doubly-linked-list.d.ts +51 -0
  26. package/dist/types/data-structures/linked-list/singly-linked-list.d.ts +45 -0
  27. package/dist/types/data-structures/linked-list/skip-linked-list.d.ts +54 -0
  28. package/dist/types/data-structures/matrix/matrix.d.ts +24 -0
  29. package/dist/types/data-structures/queue/deque.d.ts +45 -0
  30. package/dist/types/data-structures/queue/queue.d.ts +36 -0
  31. package/dist/types/data-structures/stack/stack.d.ts +30 -0
  32. package/dist/types/data-structures/trie/trie.d.ts +36 -0
  33. package/dist/types/types/data-structures/binary-tree/bst.d.ts +1 -0
  34. package/dist/types/types/data-structures/binary-tree/tree-map.d.ts +5 -0
  35. package/dist/types/types/data-structures/binary-tree/tree-multi-set.d.ts +4 -0
  36. package/dist/types/types/data-structures/binary-tree/tree-set.d.ts +4 -0
  37. package/dist/umd/graph-typed.js +148 -7
  38. package/dist/umd/graph-typed.js.map +1 -1
  39. package/dist/umd/graph-typed.min.js +2 -2
  40. package/dist/umd/graph-typed.min.js.map +1 -1
  41. package/package.json +2 -2
  42. package/src/common/error.ts +19 -1
  43. package/src/common/index.ts +1 -1
  44. package/src/data-structures/base/iterable-element-base.ts +3 -2
  45. package/src/data-structures/binary-tree/avl-tree.ts +47 -0
  46. package/src/data-structures/binary-tree/binary-indexed-tree.ts +46 -4
  47. package/src/data-structures/binary-tree/binary-tree.ts +79 -4
  48. package/src/data-structures/binary-tree/bst.ts +441 -6
  49. package/src/data-structures/binary-tree/red-black-tree.ts +73 -0
  50. package/src/data-structures/binary-tree/segment-tree.ts +18 -0
  51. package/src/data-structures/binary-tree/tree-map.ts +434 -9
  52. package/src/data-structures/binary-tree/tree-multi-map.ts +426 -5
  53. package/src/data-structures/binary-tree/tree-multi-set.ts +350 -6
  54. package/src/data-structures/binary-tree/tree-set.ts +410 -8
  55. package/src/data-structures/graph/abstract-graph.ts +2 -2
  56. package/src/data-structures/graph/directed-graph.ts +30 -0
  57. package/src/data-structures/graph/undirected-graph.ts +27 -0
  58. package/src/data-structures/hash/hash-map.ts +35 -4
  59. package/src/data-structures/heap/heap.ts +46 -4
  60. package/src/data-structures/heap/max-heap.ts +2 -2
  61. package/src/data-structures/linked-list/doubly-linked-list.ts +51 -0
  62. package/src/data-structures/linked-list/singly-linked-list.ts +45 -0
  63. package/src/data-structures/linked-list/skip-linked-list.ts +59 -5
  64. package/src/data-structures/matrix/matrix.ts +33 -9
  65. package/src/data-structures/priority-queue/max-priority-queue.ts +2 -2
  66. package/src/data-structures/queue/deque.ts +45 -0
  67. package/src/data-structures/queue/queue.ts +36 -0
  68. package/src/data-structures/stack/stack.ts +30 -0
  69. package/src/data-structures/trie/trie.ts +38 -2
  70. package/src/types/data-structures/binary-tree/bst.ts +1 -0
  71. package/src/types/data-structures/binary-tree/tree-map.ts +6 -0
  72. package/src/types/data-structures/binary-tree/tree-multi-set.ts +5 -0
  73. package/src/types/data-structures/binary-tree/tree-set.ts +5 -0
@@ -8,6 +8,11 @@ export interface TreeMapOptions<K, V, R = [K, V]> {
8
8
  * - `false`: store values on tree nodes (Node Mode).
9
9
  */
10
10
  isMapMode?: boolean;
11
+ /**
12
+ * Enable order-statistic operations (select, rank, rangeByRank).
13
+ * When true, subtree counts are maintained on every node.
14
+ */
15
+ enableOrderStatistic?: boolean;
11
16
  /**
12
17
  * Transform raw elements into `[key, value]` entries.
13
18
  * When provided, the constructor accepts `Iterable<R>` instead of `Iterable<[K, V]>`.
@@ -8,6 +8,10 @@ export interface TreeMultiSetOptions<K, R = K> {
8
8
  * - `false`: Node Mode.
9
9
  */
10
10
  isMapMode?: boolean;
11
+ /**
12
+ * Enable order-statistic operations (select, rank, rangeByRank).
13
+ */
14
+ enableOrderStatistic?: boolean;
11
15
  /**
12
16
  * Transform raw elements into keys.
13
17
  * When provided, the constructor accepts `Iterable<R>` instead of `Iterable<K>`.
@@ -8,6 +8,10 @@ export interface TreeSetOptions<K, R = K> {
8
8
  * - `false`: store values on tree nodes (Node Mode).
9
9
  */
10
10
  isMapMode?: boolean;
11
+ /**
12
+ * Enable order-statistic operations (select, rank, rangeByRank).
13
+ */
14
+ enableOrderStatistic?: boolean;
11
15
  /**
12
16
  * Transform raw elements into keys.
13
17
  * When provided, the constructor accepts `Iterable<R>` instead of `Iterable<K>`.
@@ -37,7 +37,8 @@ var graphTyped = (() => {
37
37
  Range: () => Range,
38
38
  UndirectedEdge: () => UndirectedEdge,
39
39
  UndirectedGraph: () => UndirectedGraph,
40
- UndirectedVertex: () => UndirectedVertex
40
+ UndirectedVertex: () => UndirectedVertex,
41
+ raise: () => raise
41
42
  });
42
43
 
43
44
  // src/utils/utils.ts
@@ -62,6 +63,9 @@ var graphTyped = (() => {
62
63
  };
63
64
 
64
65
  // src/common/error.ts
66
+ function raise(ErrorClass, message) {
67
+ throw new ErrorClass(message);
68
+ }
65
69
  var ERR = {
66
70
  // Range / index
67
71
  indexOutOfRange: (index, min, max, ctx) => `${ctx ? ctx + ": " : ""}Index ${index} is out of range [${min}, ${max}].`,
@@ -83,7 +87,9 @@ var graphTyped = (() => {
83
87
  matrixSingular: () => "Matrix: Singular matrix, inverse does not exist.",
84
88
  matrixNotSquare: () => "Matrix: Must be square for inversion.",
85
89
  matrixNotRectangular: () => "Matrix: Must be rectangular for transposition.",
86
- matrixRowMismatch: (expected, got) => `Matrix: Expected row length ${expected}, but got ${got}.`
90
+ matrixRowMismatch: (expected, got) => `Matrix: Expected row length ${expected}, but got ${got}.`,
91
+ // Order statistic
92
+ orderStatisticNotEnabled: (method, ctx) => `${ctx ? ctx + ": " : ""}${method}() requires enableOrderStatistic: true.`
87
93
  };
88
94
 
89
95
  // src/common/index.ts
@@ -308,7 +314,7 @@ var graphTyped = (() => {
308
314
  if (options) {
309
315
  const { toElementFn } = options;
310
316
  if (typeof toElementFn === "function") this._toElementFn = toElementFn;
311
- else if (toElementFn) throw new TypeError("toElementFn must be a function type");
317
+ else if (toElementFn) raise(TypeError, "toElementFn must be a function type");
312
318
  }
313
319
  }
314
320
  /**
@@ -464,7 +470,7 @@ var graphTyped = (() => {
464
470
  acc = initialValue;
465
471
  } else {
466
472
  const first = iter.next();
467
- if (first.done) throw new TypeError("Reduce of empty structure with no initial value");
473
+ if (first.done) raise(TypeError, "Reduce of empty structure with no initial value");
468
474
  acc = first.value;
469
475
  index = 1;
470
476
  }
@@ -711,7 +717,7 @@ var graphTyped = (() => {
711
717
  __publicField(this, "_elements", []);
712
718
  __publicField(this, "_DEFAULT_COMPARATOR", (a, b) => {
713
719
  if (typeof a === "object" || typeof b === "object") {
714
- throw new TypeError(ERR.comparatorRequired("Heap"));
720
+ raise(TypeError, ERR.comparatorRequired("Heap"));
715
721
  }
716
722
  if (a > b) return 1;
717
723
  if (a < b) return -1;
@@ -764,6 +770,9 @@ var graphTyped = (() => {
764
770
 
765
771
 
766
772
 
773
+
774
+
775
+
767
776
 
768
777
 
769
778
 
@@ -848,6 +857,9 @@ var graphTyped = (() => {
848
857
 
849
858
 
850
859
 
860
+
861
+
862
+
851
863
 
852
864
 
853
865
 
@@ -902,6 +914,9 @@ var graphTyped = (() => {
902
914
 
903
915
 
904
916
 
917
+
918
+
919
+
905
920
 
906
921
 
907
922
 
@@ -958,6 +973,9 @@ var graphTyped = (() => {
958
973
 
959
974
 
960
975
 
976
+
977
+
978
+
961
979
 
962
980
 
963
981
 
@@ -1030,6 +1048,9 @@ var graphTyped = (() => {
1030
1048
 
1031
1049
 
1032
1050
 
1051
+
1052
+
1053
+
1033
1054
 
1034
1055
 
1035
1056
 
@@ -1127,6 +1148,9 @@ var graphTyped = (() => {
1127
1148
 
1128
1149
 
1129
1150
 
1151
+
1152
+
1153
+
1130
1154
 
1131
1155
 
1132
1156
 
@@ -1171,6 +1195,9 @@ var graphTyped = (() => {
1171
1195
 
1172
1196
 
1173
1197
 
1198
+
1199
+
1200
+
1174
1201
 
1175
1202
 
1176
1203
 
@@ -1218,6 +1245,9 @@ var graphTyped = (() => {
1218
1245
 
1219
1246
 
1220
1247
 
1248
+
1249
+
1250
+
1221
1251
 
1222
1252
 
1223
1253
 
@@ -1262,6 +1292,9 @@ var graphTyped = (() => {
1262
1292
 
1263
1293
 
1264
1294
 
1295
+
1296
+
1297
+
1265
1298
 
1266
1299
 
1267
1300
 
@@ -1352,6 +1385,9 @@ var graphTyped = (() => {
1352
1385
 
1353
1386
 
1354
1387
 
1388
+
1389
+
1390
+
1355
1391
 
1356
1392
 
1357
1393
 
@@ -1429,6 +1465,9 @@ var graphTyped = (() => {
1429
1465
 
1430
1466
 
1431
1467
 
1468
+
1469
+
1470
+
1432
1471
 
1433
1472
 
1434
1473
 
@@ -1479,6 +1518,9 @@ var graphTyped = (() => {
1479
1518
 
1480
1519
 
1481
1520
 
1521
+
1522
+
1523
+
1482
1524
 
1483
1525
 
1484
1526
 
@@ -1528,6 +1570,9 @@ var graphTyped = (() => {
1528
1570
 
1529
1571
 
1530
1572
 
1573
+
1574
+
1575
+
1531
1576
 
1532
1577
 
1533
1578
 
@@ -1584,6 +1629,9 @@ var graphTyped = (() => {
1584
1629
 
1585
1630
 
1586
1631
 
1632
+
1633
+
1634
+
1587
1635
 
1588
1636
 
1589
1637
 
@@ -1596,7 +1644,7 @@ var graphTyped = (() => {
1596
1644
  */
1597
1645
  map(callback, options, thisArg) {
1598
1646
  const { comparator, toElementFn, ...rest } = options != null ? options : {};
1599
- if (!comparator) throw new TypeError(ERR.comparatorRequired("Heap.map"));
1647
+ if (!comparator) raise(TypeError, ERR.comparatorRequired("Heap.map"));
1600
1648
  const out = this._createLike([], { ...rest, comparator, toElementFn });
1601
1649
  let i = 0;
1602
1650
  for (const x of this) {
@@ -1782,6 +1830,9 @@ var graphTyped = (() => {
1782
1830
 
1783
1831
 
1784
1832
 
1833
+
1834
+
1835
+
1785
1836
 
1786
1837
 
1787
1838
 
@@ -1829,6 +1880,9 @@ var graphTyped = (() => {
1829
1880
 
1830
1881
 
1831
1882
 
1883
+
1884
+
1885
+
1832
1886
 
1833
1887
 
1834
1888
 
@@ -1892,6 +1946,9 @@ var graphTyped = (() => {
1892
1946
 
1893
1947
 
1894
1948
 
1949
+
1950
+
1951
+
1895
1952
 
1896
1953
 
1897
1954
 
@@ -1951,6 +2008,9 @@ var graphTyped = (() => {
1951
2008
 
1952
2009
 
1953
2010
 
2011
+
2012
+
2013
+
1954
2014
 
1955
2015
 
1956
2016
 
@@ -2017,6 +2077,9 @@ var graphTyped = (() => {
2017
2077
 
2018
2078
 
2019
2079
 
2080
+
2081
+
2082
+
2020
2083
 
2021
2084
 
2022
2085
 
@@ -2073,6 +2136,9 @@ var graphTyped = (() => {
2073
2136
 
2074
2137
 
2075
2138
 
2139
+
2140
+
2141
+
2076
2142
 
2077
2143
 
2078
2144
 
@@ -2122,6 +2188,9 @@ var graphTyped = (() => {
2122
2188
 
2123
2189
 
2124
2190
 
2191
+
2192
+
2193
+
2125
2194
 
2126
2195
 
2127
2196
 
@@ -2212,6 +2281,9 @@ var graphTyped = (() => {
2212
2281
 
2213
2282
 
2214
2283
 
2284
+
2285
+
2286
+
2215
2287
 
2216
2288
 
2217
2289
 
@@ -2255,6 +2327,9 @@ var graphTyped = (() => {
2255
2327
 
2256
2328
 
2257
2329
 
2330
+
2331
+
2332
+
2258
2333
 
2259
2334
 
2260
2335
 
@@ -2321,6 +2396,9 @@ var graphTyped = (() => {
2321
2396
 
2322
2397
 
2323
2398
 
2399
+
2400
+
2401
+
2324
2402
 
2325
2403
 
2326
2404
 
@@ -2371,6 +2449,9 @@ var graphTyped = (() => {
2371
2449
 
2372
2450
 
2373
2451
 
2452
+
2453
+
2454
+
2374
2455
 
2375
2456
 
2376
2457
 
@@ -2425,6 +2506,9 @@ var graphTyped = (() => {
2425
2506
 
2426
2507
 
2427
2508
 
2509
+
2510
+
2511
+
2428
2512
 
2429
2513
 
2430
2514
 
@@ -2657,7 +2741,7 @@ var graphTyped = (() => {
2657
2741
  const newEdge = this.createEdge(srcOrEdge, dest, weight, value);
2658
2742
  return this._addEdge(newEdge);
2659
2743
  } else {
2660
- throw new TypeError(ERR.invalidArgument("dest must be a Vertex or vertex key when srcOrEdge is an Edge.", "Graph"));
2744
+ raise(TypeError, ERR.invalidArgument("dest must be a Vertex or vertex key when srcOrEdge is an Edge.", "Graph"));
2661
2745
  }
2662
2746
  }
2663
2747
  }
@@ -3552,6 +3636,9 @@ var graphTyped = (() => {
3552
3636
 
3553
3637
 
3554
3638
 
3639
+
3640
+
3641
+
3555
3642
 
3556
3643
 
3557
3644
 
@@ -3637,6 +3724,9 @@ var graphTyped = (() => {
3637
3724
 
3638
3725
 
3639
3726
 
3727
+
3728
+
3729
+
3640
3730
 
3641
3731
 
3642
3732
 
@@ -3720,6 +3810,9 @@ var graphTyped = (() => {
3720
3810
 
3721
3811
 
3722
3812
 
3813
+
3814
+
3815
+
3723
3816
 
3724
3817
 
3725
3818
 
@@ -3794,6 +3887,9 @@ var graphTyped = (() => {
3794
3887
 
3795
3888
 
3796
3889
 
3890
+
3891
+
3892
+
3797
3893
 
3798
3894
 
3799
3895
 
@@ -3845,6 +3941,9 @@ var graphTyped = (() => {
3845
3941
 
3846
3942
 
3847
3943
 
3944
+
3945
+
3946
+
3848
3947
 
3849
3948
 
3850
3949
 
@@ -3949,6 +4048,9 @@ var graphTyped = (() => {
3949
4048
 
3950
4049
 
3951
4050
 
4051
+
4052
+
4053
+
3952
4054
 
3953
4055
 
3954
4056
 
@@ -4034,6 +4136,9 @@ var graphTyped = (() => {
4034
4136
 
4035
4137
 
4036
4138
 
4139
+
4140
+
4141
+
4037
4142
 
4038
4143
 
4039
4144
 
@@ -4081,6 +4186,9 @@ var graphTyped = (() => {
4081
4186
 
4082
4187
 
4083
4188
 
4189
+
4190
+
4191
+
4084
4192
 
4085
4193
 
4086
4194
 
@@ -4181,6 +4289,9 @@ var graphTyped = (() => {
4181
4289
 
4182
4290
 
4183
4291
 
4292
+
4293
+
4294
+
4184
4295
 
4185
4296
 
4186
4297
 
@@ -4284,6 +4395,9 @@ var graphTyped = (() => {
4284
4395
 
4285
4396
 
4286
4397
 
4398
+
4399
+
4400
+
4287
4401
 
4288
4402
 
4289
4403
 
@@ -4445,6 +4559,9 @@ var graphTyped = (() => {
4445
4559
 
4446
4560
 
4447
4561
 
4562
+
4563
+
4564
+
4448
4565
 
4449
4566
 
4450
4567
 
@@ -4527,6 +4644,9 @@ var graphTyped = (() => {
4527
4644
 
4528
4645
 
4529
4646
 
4647
+
4648
+
4649
+
4530
4650
 
4531
4651
 
4532
4652
 
@@ -4608,6 +4728,9 @@ var graphTyped = (() => {
4608
4728
 
4609
4729
 
4610
4730
 
4731
+
4732
+
4733
+
4611
4734
 
4612
4735
 
4613
4736
 
@@ -4704,6 +4827,9 @@ var graphTyped = (() => {
4704
4827
 
4705
4828
 
4706
4829
 
4830
+
4831
+
4832
+
4707
4833
 
4708
4834
 
4709
4835
 
@@ -4755,6 +4881,9 @@ var graphTyped = (() => {
4755
4881
 
4756
4882
 
4757
4883
 
4884
+
4885
+
4886
+
4758
4887
 
4759
4888
 
4760
4889
 
@@ -4876,6 +5005,9 @@ var graphTyped = (() => {
4876
5005
 
4877
5006
 
4878
5007
 
5008
+
5009
+
5010
+
4879
5011
 
4880
5012
 
4881
5013
 
@@ -5019,6 +5151,9 @@ var graphTyped = (() => {
5019
5151
 
5020
5152
 
5021
5153
 
5154
+
5155
+
5156
+
5022
5157
 
5023
5158
 
5024
5159
 
@@ -5084,6 +5219,9 @@ var graphTyped = (() => {
5084
5219
 
5085
5220
 
5086
5221
 
5222
+
5223
+
5224
+
5087
5225
 
5088
5226
 
5089
5227
 
@@ -5131,6 +5269,9 @@ var graphTyped = (() => {
5131
5269
 
5132
5270
 
5133
5271
 
5272
+
5273
+
5274
+
5134
5275
 
5135
5276
 
5136
5277