singly-linked-list-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 (75) hide show
  1. package/dist/cjs/index.cjs +163 -51
  2. package/dist/cjs/index.cjs.map +1 -1
  3. package/dist/cjs-legacy/index.cjs +162 -50
  4. package/dist/cjs-legacy/index.cjs.map +1 -1
  5. package/dist/esm/index.mjs +163 -52
  6. package/dist/esm/index.mjs.map +1 -1
  7. package/dist/esm-legacy/index.mjs +162 -51
  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 +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 +189 -13
  14. package/dist/types/data-structures/binary-tree/bst.d.ts +270 -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 +1089 -161
  18. package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +1243 -350
  19. package/dist/types/data-structures/binary-tree/tree-multi-set.d.ts +980 -255
  20. package/dist/types/data-structures/binary-tree/tree-set.d.ts +1174 -284
  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 +126 -0
  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 +127 -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/types/types/data-structures/binary-tree/bst.d.ts +1 -0
  35. package/dist/types/types/data-structures/binary-tree/tree-map.d.ts +5 -0
  36. package/dist/types/types/data-structures/binary-tree/tree-multi-set.d.ts +4 -0
  37. package/dist/types/types/data-structures/binary-tree/tree-set.d.ts +4 -0
  38. package/dist/umd/singly-linked-list-typed.js +160 -49
  39. package/dist/umd/singly-linked-list-typed.js.map +1 -1
  40. package/dist/umd/singly-linked-list-typed.min.js +1 -1
  41. package/dist/umd/singly-linked-list-typed.min.js.map +1 -1
  42. package/package.json +2 -2
  43. package/src/common/error.ts +19 -1
  44. package/src/common/index.ts +1 -1
  45. package/src/data-structures/base/iterable-element-base.ts +3 -2
  46. package/src/data-structures/binary-tree/avl-tree.ts +99 -5
  47. package/src/data-structures/binary-tree/binary-indexed-tree.ts +102 -4
  48. package/src/data-structures/binary-tree/binary-tree.ts +239 -78
  49. package/src/data-structures/binary-tree/bst.ts +542 -13
  50. package/src/data-structures/binary-tree/red-black-tree.ts +155 -15
  51. package/src/data-structures/binary-tree/segment-tree.ts +42 -0
  52. package/src/data-structures/binary-tree/tree-map.ts +1223 -261
  53. package/src/data-structures/binary-tree/tree-multi-map.ts +939 -30
  54. package/src/data-structures/binary-tree/tree-multi-set.ts +746 -10
  55. package/src/data-structures/binary-tree/tree-set.ts +1018 -99
  56. package/src/data-structures/graph/abstract-graph.ts +2 -2
  57. package/src/data-structures/graph/directed-graph.ts +71 -1
  58. package/src/data-structures/graph/undirected-graph.ts +64 -1
  59. package/src/data-structures/hash/hash-map.ts +102 -16
  60. package/src/data-structures/heap/heap.ts +153 -23
  61. package/src/data-structures/heap/max-heap.ts +2 -2
  62. package/src/data-structures/linked-list/doubly-linked-list.ts +139 -0
  63. package/src/data-structures/linked-list/singly-linked-list.ts +106 -1
  64. package/src/data-structures/linked-list/skip-linked-list.ts +131 -5
  65. package/src/data-structures/matrix/matrix.ts +65 -9
  66. package/src/data-structures/priority-queue/max-priority-queue.ts +2 -2
  67. package/src/data-structures/queue/deque.ts +130 -0
  68. package/src/data-structures/queue/queue.ts +109 -0
  69. package/src/data-structures/stack/stack.ts +75 -5
  70. package/src/data-structures/trie/trie.ts +86 -2
  71. package/src/interfaces/binary-tree.ts +1 -9
  72. package/src/types/data-structures/binary-tree/bst.ts +1 -0
  73. package/src/types/data-structures/binary-tree/tree-map.ts +6 -0
  74. package/src/types/data-structures/binary-tree/tree-multi-set.ts +5 -0
  75. package/src/types/data-structures/binary-tree/tree-set.ts +5 -0
@@ -3,6 +3,61 @@
3
3
  var __defProp = Object.defineProperty;
4
4
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
5
5
 
6
+ // src/common/error.ts
7
+ function raise(ErrorClass, message) {
8
+ throw new ErrorClass(message);
9
+ }
10
+ __name(raise, "raise");
11
+ var ERR = {
12
+ // Range / index
13
+ indexOutOfRange: /* @__PURE__ */ __name((index, min, max, ctx) => `${ctx ? ctx + ": " : ""}Index ${index} is out of range [${min}, ${max}].`, "indexOutOfRange"),
14
+ invalidIndex: /* @__PURE__ */ __name((ctx) => `${ctx ? ctx + ": " : ""}Index must be an integer.`, "invalidIndex"),
15
+ // Type / argument
16
+ invalidArgument: /* @__PURE__ */ __name((reason, ctx) => `${ctx ? ctx + ": " : ""}${reason}`, "invalidArgument"),
17
+ comparatorRequired: /* @__PURE__ */ __name((ctx) => `${ctx ? ctx + ": " : ""}Comparator is required for non-number/non-string/non-Date keys.`, "comparatorRequired"),
18
+ invalidKey: /* @__PURE__ */ __name((reason, ctx) => `${ctx ? ctx + ": " : ""}${reason}`, "invalidKey"),
19
+ notAFunction: /* @__PURE__ */ __name((name, ctx) => `${ctx ? ctx + ": " : ""}${name} must be a function.`, "notAFunction"),
20
+ invalidEntry: /* @__PURE__ */ __name((ctx) => `${ctx ? ctx + ": " : ""}Each entry must be a [key, value] tuple.`, "invalidEntry"),
21
+ invalidNaN: /* @__PURE__ */ __name((ctx) => `${ctx ? ctx + ": " : ""}NaN is not a valid key.`, "invalidNaN"),
22
+ invalidDate: /* @__PURE__ */ __name((ctx) => `${ctx ? ctx + ": " : ""}Invalid Date key.`, "invalidDate"),
23
+ reduceEmpty: /* @__PURE__ */ __name((ctx) => `${ctx ? ctx + ": " : ""}Reduce of empty structure with no initial value.`, "reduceEmpty"),
24
+ callbackReturnType: /* @__PURE__ */ __name((expected, got, ctx) => `${ctx ? ctx + ": " : ""}Callback must return ${expected}; got ${got}.`, "callbackReturnType"),
25
+ // State / operation
26
+ invalidOperation: /* @__PURE__ */ __name((reason, ctx) => `${ctx ? ctx + ": " : ""}${reason}`, "invalidOperation"),
27
+ // Matrix
28
+ matrixDimensionMismatch: /* @__PURE__ */ __name((op) => `Matrix: Dimensions must be compatible for ${op}.`, "matrixDimensionMismatch"),
29
+ matrixSingular: /* @__PURE__ */ __name(() => "Matrix: Singular matrix, inverse does not exist.", "matrixSingular"),
30
+ matrixNotSquare: /* @__PURE__ */ __name(() => "Matrix: Must be square for inversion.", "matrixNotSquare"),
31
+ matrixNotRectangular: /* @__PURE__ */ __name(() => "Matrix: Must be rectangular for transposition.", "matrixNotRectangular"),
32
+ matrixRowMismatch: /* @__PURE__ */ __name((expected, got) => `Matrix: Expected row length ${expected}, but got ${got}.`, "matrixRowMismatch"),
33
+ // Order statistic
34
+ orderStatisticNotEnabled: /* @__PURE__ */ __name((method, ctx) => `${ctx ? ctx + ": " : ""}${method}() requires enableOrderStatistic: true.`, "orderStatisticNotEnabled")
35
+ };
36
+
37
+ // src/common/index.ts
38
+ var DFSOperation = /* @__PURE__ */ ((DFSOperation2) => {
39
+ DFSOperation2[DFSOperation2["VISIT"] = 0] = "VISIT";
40
+ DFSOperation2[DFSOperation2["PROCESS"] = 1] = "PROCESS";
41
+ return DFSOperation2;
42
+ })(DFSOperation || {});
43
+ var Range = class {
44
+ constructor(low, high, includeLow = true, includeHigh = true) {
45
+ this.low = low;
46
+ this.high = high;
47
+ this.includeLow = includeLow;
48
+ this.includeHigh = includeHigh;
49
+ }
50
+ static {
51
+ __name(this, "Range");
52
+ }
53
+ // Determine whether a key is within the range
54
+ isInRange(key, comparator) {
55
+ const lowCheck = this.includeLow ? comparator(key, this.low) >= 0 : comparator(key, this.low) > 0;
56
+ const highCheck = this.includeHigh ? comparator(key, this.high) <= 0 : comparator(key, this.high) < 0;
57
+ return lowCheck && highCheck;
58
+ }
59
+ };
60
+
6
61
  // src/data-structures/base/iterable-element-base.ts
7
62
  var IterableElementBase = class {
8
63
  static {
@@ -21,7 +76,7 @@ var IterableElementBase = class {
21
76
  if (options) {
22
77
  const { toElementFn } = options;
23
78
  if (typeof toElementFn === "function") this._toElementFn = toElementFn;
24
- else if (toElementFn) throw new TypeError("toElementFn must be a function type");
79
+ else if (toElementFn) raise(TypeError, "toElementFn must be a function type");
25
80
  }
26
81
  }
27
82
  /**
@@ -184,7 +239,7 @@ var IterableElementBase = class {
184
239
  acc = initialValue;
185
240
  } else {
186
241
  const first = iter.next();
187
- if (first.done) throw new TypeError("Reduce of empty structure with no initial value");
242
+ if (first.done) raise(TypeError, "Reduce of empty structure with no initial value");
188
243
  acc = first.value;
189
244
  index = 1;
190
245
  }
@@ -753,6 +808,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
753
808
 
754
809
 
755
810
 
811
+
812
+
813
+
814
+
815
+
816
+
817
+
756
818
 
757
819
 
758
820
 
@@ -817,6 +879,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
817
879
 
818
880
 
819
881
 
882
+
883
+
884
+
885
+
886
+
887
+
888
+
820
889
 
821
890
 
822
891
 
@@ -886,6 +955,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
886
955
 
887
956
 
888
957
 
958
+
959
+
960
+
961
+
962
+
963
+
964
+
889
965
 
890
966
 
891
967
 
@@ -937,6 +1013,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
937
1013
 
938
1014
 
939
1015
 
1016
+
1017
+
1018
+
1019
+
1020
+
1021
+
1022
+
940
1023
 
941
1024
 
942
1025
 
@@ -1049,6 +1132,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
1049
1132
 
1050
1133
 
1051
1134
 
1135
+
1136
+
1137
+
1138
+
1139
+
1140
+
1141
+
1052
1142
 
1053
1143
 
1054
1144
 
@@ -1105,6 +1195,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
1105
1195
 
1106
1196
 
1107
1197
 
1198
+
1199
+
1200
+
1201
+
1202
+
1203
+
1204
+
1108
1205
 
1109
1206
 
1110
1207
 
@@ -1150,6 +1247,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
1150
1247
 
1151
1248
 
1152
1249
 
1250
+
1251
+
1252
+
1253
+
1254
+
1255
+
1256
+
1153
1257
 
1154
1258
 
1155
1259
 
@@ -1201,6 +1305,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
1201
1305
 
1202
1306
 
1203
1307
 
1308
+
1309
+
1310
+
1311
+
1312
+
1313
+
1314
+
1204
1315
 
1205
1316
 
1206
1317
 
@@ -1257,6 +1368,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
1257
1368
 
1258
1369
 
1259
1370
 
1371
+
1372
+
1373
+
1374
+
1375
+
1376
+
1377
+
1260
1378
 
1261
1379
 
1262
1380
 
@@ -1321,6 +1439,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
1321
1439
 
1322
1440
 
1323
1441
 
1442
+
1443
+
1444
+
1445
+
1446
+
1447
+
1448
+
1324
1449
 
1325
1450
 
1326
1451
 
@@ -1362,6 +1487,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
1362
1487
 
1363
1488
 
1364
1489
 
1490
+
1491
+
1492
+
1493
+
1494
+
1495
+
1496
+
1365
1497
 
1366
1498
 
1367
1499
 
@@ -1409,6 +1541,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
1409
1541
 
1410
1542
 
1411
1543
 
1544
+
1545
+
1546
+
1547
+
1548
+
1549
+
1550
+
1412
1551
 
1413
1552
 
1414
1553
 
@@ -1622,6 +1761,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
1622
1761
 
1623
1762
 
1624
1763
 
1764
+
1765
+
1766
+
1767
+
1768
+
1769
+
1770
+
1625
1771
 
1626
1772
 
1627
1773
 
@@ -1673,6 +1819,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
1673
1819
 
1674
1820
 
1675
1821
 
1822
+
1823
+
1824
+
1825
+
1826
+
1827
+
1828
+
1676
1829
 
1677
1830
 
1678
1831
 
@@ -1752,6 +1905,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
1752
1905
 
1753
1906
 
1754
1907
 
1908
+
1909
+
1910
+
1911
+
1912
+
1913
+
1914
+
1755
1915
 
1756
1916
 
1757
1917
 
@@ -1899,55 +2059,6 @@ function elementOrPredicate(input, equals) {
1899
2059
  return (node) => equals(node.value, value);
1900
2060
  }
1901
2061
  __name(elementOrPredicate, "elementOrPredicate");
1902
-
1903
- // src/common/error.ts
1904
- var ERR = {
1905
- // Range / index
1906
- indexOutOfRange: /* @__PURE__ */ __name((index, min, max, ctx) => `${ctx ? ctx + ": " : ""}Index ${index} is out of range [${min}, ${max}].`, "indexOutOfRange"),
1907
- invalidIndex: /* @__PURE__ */ __name((ctx) => `${ctx ? ctx + ": " : ""}Index must be an integer.`, "invalidIndex"),
1908
- // Type / argument
1909
- invalidArgument: /* @__PURE__ */ __name((reason, ctx) => `${ctx ? ctx + ": " : ""}${reason}`, "invalidArgument"),
1910
- comparatorRequired: /* @__PURE__ */ __name((ctx) => `${ctx ? ctx + ": " : ""}Comparator is required for non-number/non-string/non-Date keys.`, "comparatorRequired"),
1911
- invalidKey: /* @__PURE__ */ __name((reason, ctx) => `${ctx ? ctx + ": " : ""}${reason}`, "invalidKey"),
1912
- notAFunction: /* @__PURE__ */ __name((name, ctx) => `${ctx ? ctx + ": " : ""}${name} must be a function.`, "notAFunction"),
1913
- invalidEntry: /* @__PURE__ */ __name((ctx) => `${ctx ? ctx + ": " : ""}Each entry must be a [key, value] tuple.`, "invalidEntry"),
1914
- invalidNaN: /* @__PURE__ */ __name((ctx) => `${ctx ? ctx + ": " : ""}NaN is not a valid key.`, "invalidNaN"),
1915
- invalidDate: /* @__PURE__ */ __name((ctx) => `${ctx ? ctx + ": " : ""}Invalid Date key.`, "invalidDate"),
1916
- reduceEmpty: /* @__PURE__ */ __name((ctx) => `${ctx ? ctx + ": " : ""}Reduce of empty structure with no initial value.`, "reduceEmpty"),
1917
- callbackReturnType: /* @__PURE__ */ __name((expected, got, ctx) => `${ctx ? ctx + ": " : ""}Callback must return ${expected}; got ${got}.`, "callbackReturnType"),
1918
- // State / operation
1919
- invalidOperation: /* @__PURE__ */ __name((reason, ctx) => `${ctx ? ctx + ": " : ""}${reason}`, "invalidOperation"),
1920
- // Matrix
1921
- matrixDimensionMismatch: /* @__PURE__ */ __name((op) => `Matrix: Dimensions must be compatible for ${op}.`, "matrixDimensionMismatch"),
1922
- matrixSingular: /* @__PURE__ */ __name(() => "Matrix: Singular matrix, inverse does not exist.", "matrixSingular"),
1923
- matrixNotSquare: /* @__PURE__ */ __name(() => "Matrix: Must be square for inversion.", "matrixNotSquare"),
1924
- matrixNotRectangular: /* @__PURE__ */ __name(() => "Matrix: Must be rectangular for transposition.", "matrixNotRectangular"),
1925
- matrixRowMismatch: /* @__PURE__ */ __name((expected, got) => `Matrix: Expected row length ${expected}, but got ${got}.`, "matrixRowMismatch")
1926
- };
1927
-
1928
- // src/common/index.ts
1929
- var DFSOperation = /* @__PURE__ */ ((DFSOperation2) => {
1930
- DFSOperation2[DFSOperation2["VISIT"] = 0] = "VISIT";
1931
- DFSOperation2[DFSOperation2["PROCESS"] = 1] = "PROCESS";
1932
- return DFSOperation2;
1933
- })(DFSOperation || {});
1934
- var Range = class {
1935
- constructor(low, high, includeLow = true, includeHigh = true) {
1936
- this.low = low;
1937
- this.high = high;
1938
- this.includeLow = includeLow;
1939
- this.includeHigh = includeHigh;
1940
- }
1941
- static {
1942
- __name(this, "Range");
1943
- }
1944
- // Determine whether a key is within the range
1945
- isInRange(key, comparator) {
1946
- const lowCheck = this.includeLow ? comparator(key, this.low) >= 0 : comparator(key, this.low) > 0;
1947
- const highCheck = this.includeHigh ? comparator(key, this.high) <= 0 : comparator(key, this.high) < 0;
1948
- return lowCheck && highCheck;
1949
- }
1950
- };
1951
2062
  /**
1952
2063
  * data-structure-typed
1953
2064
  *
@@ -1961,5 +2072,6 @@ exports.ERR = ERR;
1961
2072
  exports.Range = Range;
1962
2073
  exports.SinglyLinkedList = SinglyLinkedList;
1963
2074
  exports.SinglyLinkedListNode = SinglyLinkedListNode;
2075
+ exports.raise = raise;
1964
2076
  //# sourceMappingURL=index.cjs.map
1965
2077
  //# sourceMappingURL=index.cjs.map