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