linked-list-typed 2.4.4 → 2.4.5

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 (45) hide show
  1. package/dist/cjs/index.cjs +52 -26
  2. package/dist/cjs/index.cjs.map +1 -1
  3. package/dist/cjs-legacy/index.cjs +51 -25
  4. package/dist/cjs-legacy/index.cjs.map +1 -1
  5. package/dist/esm/index.mjs +52 -27
  6. package/dist/esm/index.mjs.map +1 -1
  7. package/dist/esm-legacy/index.mjs +51 -26
  8. package/dist/esm-legacy/index.mjs.map +1 -1
  9. package/dist/types/common/error.d.ts +23 -0
  10. package/dist/types/common/index.d.ts +1 -0
  11. package/dist/types/data-structures/binary-tree/binary-tree.d.ts +10 -0
  12. package/dist/types/data-structures/binary-tree/red-black-tree.d.ts +7 -1
  13. package/dist/types/data-structures/graph/abstract-graph.d.ts +44 -0
  14. package/dist/types/data-structures/graph/directed-graph.d.ts +1 -0
  15. package/dist/types/data-structures/graph/undirected-graph.d.ts +14 -0
  16. package/dist/types/data-structures/queue/deque.d.ts +41 -1
  17. package/dist/types/types/data-structures/queue/deque.d.ts +6 -0
  18. package/dist/umd/linked-list-typed.js +49 -23
  19. package/dist/umd/linked-list-typed.js.map +1 -1
  20. package/dist/umd/linked-list-typed.min.js +1 -1
  21. package/dist/umd/linked-list-typed.min.js.map +1 -1
  22. package/package.json +2 -2
  23. package/src/common/error.ts +60 -0
  24. package/src/common/index.ts +2 -0
  25. package/src/data-structures/base/iterable-element-base.ts +3 -2
  26. package/src/data-structures/binary-tree/binary-indexed-tree.ts +6 -5
  27. package/src/data-structures/binary-tree/binary-tree.ts +113 -42
  28. package/src/data-structures/binary-tree/bst.ts +11 -3
  29. package/src/data-structures/binary-tree/red-black-tree.ts +20 -0
  30. package/src/data-structures/binary-tree/tree-map.ts +8 -7
  31. package/src/data-structures/binary-tree/tree-multi-map.ts +4 -4
  32. package/src/data-structures/binary-tree/tree-multi-set.ts +5 -4
  33. package/src/data-structures/binary-tree/tree-set.ts +7 -6
  34. package/src/data-structures/graph/abstract-graph.ts +106 -1
  35. package/src/data-structures/graph/directed-graph.ts +4 -0
  36. package/src/data-structures/graph/undirected-graph.ts +95 -0
  37. package/src/data-structures/hash/hash-map.ts +13 -2
  38. package/src/data-structures/heap/heap.ts +4 -3
  39. package/src/data-structures/heap/max-heap.ts +2 -3
  40. package/src/data-structures/matrix/matrix.ts +9 -10
  41. package/src/data-structures/priority-queue/max-priority-queue.ts +2 -3
  42. package/src/data-structures/queue/deque.ts +71 -3
  43. package/src/data-structures/trie/trie.ts +2 -1
  44. package/src/types/data-structures/queue/deque.ts +7 -0
  45. package/src/utils/utils.ts +4 -2
@@ -5,6 +5,54 @@ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { en
5
5
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
6
6
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
7
7
 
8
+ // src/common/error.ts
9
+ var ERR = {
10
+ // Range / index
11
+ indexOutOfRange: /* @__PURE__ */ __name((index, min, max, ctx) => `${ctx ? ctx + ": " : ""}Index ${index} is out of range [${min}, ${max}].`, "indexOutOfRange"),
12
+ invalidIndex: /* @__PURE__ */ __name((ctx) => `${ctx ? ctx + ": " : ""}Index must be an integer.`, "invalidIndex"),
13
+ // Type / argument
14
+ invalidArgument: /* @__PURE__ */ __name((reason, ctx) => `${ctx ? ctx + ": " : ""}${reason}`, "invalidArgument"),
15
+ comparatorRequired: /* @__PURE__ */ __name((ctx) => `${ctx ? ctx + ": " : ""}Comparator is required for non-number/non-string/non-Date keys.`, "comparatorRequired"),
16
+ invalidKey: /* @__PURE__ */ __name((reason, ctx) => `${ctx ? ctx + ": " : ""}${reason}`, "invalidKey"),
17
+ notAFunction: /* @__PURE__ */ __name((name, ctx) => `${ctx ? ctx + ": " : ""}${name} must be a function.`, "notAFunction"),
18
+ invalidEntry: /* @__PURE__ */ __name((ctx) => `${ctx ? ctx + ": " : ""}Each entry must be a [key, value] tuple.`, "invalidEntry"),
19
+ invalidNaN: /* @__PURE__ */ __name((ctx) => `${ctx ? ctx + ": " : ""}NaN is not a valid key.`, "invalidNaN"),
20
+ invalidDate: /* @__PURE__ */ __name((ctx) => `${ctx ? ctx + ": " : ""}Invalid Date key.`, "invalidDate"),
21
+ reduceEmpty: /* @__PURE__ */ __name((ctx) => `${ctx ? ctx + ": " : ""}Reduce of empty structure with no initial value.`, "reduceEmpty"),
22
+ callbackReturnType: /* @__PURE__ */ __name((expected, got, ctx) => `${ctx ? ctx + ": " : ""}Callback must return ${expected}; got ${got}.`, "callbackReturnType"),
23
+ // State / operation
24
+ invalidOperation: /* @__PURE__ */ __name((reason, ctx) => `${ctx ? ctx + ": " : ""}${reason}`, "invalidOperation"),
25
+ // Matrix
26
+ matrixDimensionMismatch: /* @__PURE__ */ __name((op) => `Matrix: Dimensions must be compatible for ${op}.`, "matrixDimensionMismatch"),
27
+ matrixSingular: /* @__PURE__ */ __name(() => "Matrix: Singular matrix, inverse does not exist.", "matrixSingular"),
28
+ matrixNotSquare: /* @__PURE__ */ __name(() => "Matrix: Must be square for inversion.", "matrixNotSquare"),
29
+ matrixNotRectangular: /* @__PURE__ */ __name(() => "Matrix: Must be rectangular for transposition.", "matrixNotRectangular"),
30
+ matrixRowMismatch: /* @__PURE__ */ __name((expected, got) => `Matrix: Expected row length ${expected}, but got ${got}.`, "matrixRowMismatch")
31
+ };
32
+
33
+ // src/common/index.ts
34
+ var DFSOperation = /* @__PURE__ */ ((DFSOperation2) => {
35
+ DFSOperation2[DFSOperation2["VISIT"] = 0] = "VISIT";
36
+ DFSOperation2[DFSOperation2["PROCESS"] = 1] = "PROCESS";
37
+ return DFSOperation2;
38
+ })(DFSOperation || {});
39
+ var _Range = class _Range {
40
+ constructor(low, high, includeLow = true, includeHigh = true) {
41
+ this.low = low;
42
+ this.high = high;
43
+ this.includeLow = includeLow;
44
+ this.includeHigh = includeHigh;
45
+ }
46
+ // Determine whether a key is within the range
47
+ isInRange(key, comparator) {
48
+ const lowCheck = this.includeLow ? comparator(key, this.low) >= 0 : comparator(key, this.low) > 0;
49
+ const highCheck = this.includeHigh ? comparator(key, this.high) <= 0 : comparator(key, this.high) < 0;
50
+ return lowCheck && highCheck;
51
+ }
52
+ };
53
+ __name(_Range, "Range");
54
+ var Range = _Range;
55
+
8
56
  // src/data-structures/base/iterable-element-base.ts
9
57
  var _IterableElementBase = class _IterableElementBase {
10
58
  /**
@@ -27,7 +75,7 @@ var _IterableElementBase = class _IterableElementBase {
27
75
  if (options) {
28
76
  const { toElementFn } = options;
29
77
  if (typeof toElementFn === "function") this._toElementFn = toElementFn;
30
- else if (toElementFn) throw new TypeError("toElementFn must be a function type");
78
+ else if (toElementFn) throw new TypeError(ERR.notAFunction("toElementFn"));
31
79
  }
32
80
  }
33
81
  /**
@@ -183,7 +231,7 @@ var _IterableElementBase = class _IterableElementBase {
183
231
  acc = initialValue;
184
232
  } else {
185
233
  const first = iter.next();
186
- if (first.done) throw new TypeError("Reduce of empty structure with no initial value");
234
+ if (first.done) throw new TypeError(ERR.reduceEmpty());
187
235
  acc = first.value;
188
236
  index = 1;
189
237
  }
@@ -2080,29 +2128,6 @@ var _SkipList = class _SkipList {
2080
2128
  };
2081
2129
  __name(_SkipList, "SkipList");
2082
2130
  var SkipList = _SkipList;
2083
-
2084
- // src/common/index.ts
2085
- var DFSOperation = /* @__PURE__ */ ((DFSOperation2) => {
2086
- DFSOperation2[DFSOperation2["VISIT"] = 0] = "VISIT";
2087
- DFSOperation2[DFSOperation2["PROCESS"] = 1] = "PROCESS";
2088
- return DFSOperation2;
2089
- })(DFSOperation || {});
2090
- var _Range = class _Range {
2091
- constructor(low, high, includeLow = true, includeHigh = true) {
2092
- this.low = low;
2093
- this.high = high;
2094
- this.includeLow = includeLow;
2095
- this.includeHigh = includeHigh;
2096
- }
2097
- // Determine whether a key is within the range
2098
- isInRange(key, comparator) {
2099
- const lowCheck = this.includeLow ? comparator(key, this.low) >= 0 : comparator(key, this.low) > 0;
2100
- const highCheck = this.includeHigh ? comparator(key, this.high) <= 0 : comparator(key, this.high) < 0;
2101
- return lowCheck && highCheck;
2102
- }
2103
- };
2104
- __name(_Range, "Range");
2105
- var Range = _Range;
2106
2131
  /**
2107
2132
  * data-structure-typed
2108
2133
  *
@@ -2114,6 +2139,7 @@ var Range = _Range;
2114
2139
  exports.DFSOperation = DFSOperation;
2115
2140
  exports.DoublyLinkedList = DoublyLinkedList;
2116
2141
  exports.DoublyLinkedListNode = DoublyLinkedListNode;
2142
+ exports.ERR = ERR;
2117
2143
  exports.Range = Range;
2118
2144
  exports.SinglyLinkedList = SinglyLinkedList;
2119
2145
  exports.SinglyLinkedListNode = SinglyLinkedListNode;