linked-list-typed 2.4.3 → 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 +62 -36
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs-legacy/index.cjs +62 -35
- package/dist/cjs-legacy/index.cjs.map +1 -1
- package/dist/esm/index.mjs +62 -37
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm-legacy/index.mjs +62 -36
- 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/base/iterable-element-base.d.ts +1 -1
- package/dist/types/data-structures/binary-tree/binary-tree.d.ts +15 -5
- package/dist/types/data-structures/binary-tree/bst.d.ts +1 -1
- 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 +3 -2
- package/dist/types/data-structures/graph/undirected-graph.d.ts +16 -2
- package/dist/types/data-structures/hash/hash-map.d.ts +2 -2
- package/dist/types/data-structures/heap/heap.d.ts +3 -7
- package/dist/types/data-structures/queue/deque.d.ts +41 -1
- package/dist/types/types/data-structures/binary-tree/avl-tree.d.ts +1 -1
- package/dist/types/types/data-structures/binary-tree/red-black-tree.d.ts +1 -1
- package/dist/types/types/data-structures/linked-list/doubly-linked-list.d.ts +1 -1
- package/dist/types/types/data-structures/linked-list/singly-linked-list.d.ts +1 -1
- package/dist/types/types/data-structures/priority-queue/priority-queue.d.ts +1 -1
- package/dist/types/types/data-structures/queue/deque.d.ts +6 -0
- package/dist/types/types/data-structures/stack/stack.d.ts +1 -1
- package/dist/umd/linked-list-typed.js +60 -33
- 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 +5 -4
- package/src/data-structures/binary-tree/binary-indexed-tree.ts +6 -5
- package/src/data-structures/binary-tree/binary-tree.ts +121 -49
- package/src/data-structures/binary-tree/bst.ts +12 -4
- 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 +10 -9
- package/src/data-structures/binary-tree/tree-set.ts +7 -6
- package/src/data-structures/graph/abstract-graph.ts +124 -19
- package/src/data-structures/graph/directed-graph.ts +8 -4
- package/src/data-structures/graph/map-graph.ts +1 -1
- package/src/data-structures/graph/undirected-graph.ts +99 -4
- package/src/data-structures/hash/hash-map.ts +19 -6
- package/src/data-structures/heap/heap.ts +21 -17
- package/src/data-structures/heap/max-heap.ts +2 -3
- package/src/data-structures/linked-list/doubly-linked-list.ts +4 -4
- package/src/data-structures/linked-list/singly-linked-list.ts +15 -9
- 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 +72 -4
- package/src/data-structures/stack/stack.ts +1 -1
- package/src/data-structures/trie/trie.ts +12 -6
- package/src/types/data-structures/binary-tree/avl-tree.ts +1 -1
- package/src/types/data-structures/binary-tree/red-black-tree.ts +1 -1
- package/src/types/data-structures/linked-list/doubly-linked-list.ts +1 -1
- package/src/types/data-structures/linked-list/singly-linked-list.ts +1 -1
- package/src/types/data-structures/priority-queue/priority-queue.ts +1 -1
- package/src/types/data-structures/queue/deque.ts +7 -0
- package/src/types/data-structures/stack/stack.ts +1 -1
- 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
|
}
|
|
@@ -654,7 +702,7 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
654
702
|
*/
|
|
655
703
|
constructor(elements = [], options) {
|
|
656
704
|
super(options);
|
|
657
|
-
__publicField(this, "_equals", Object.is);
|
|
705
|
+
__publicField(this, "_equals", /* @__PURE__ */ __name((a, b) => Object.is(a, b), "_equals"));
|
|
658
706
|
__publicField(this, "_head");
|
|
659
707
|
__publicField(this, "_tail");
|
|
660
708
|
__publicField(this, "_length", 0);
|
|
@@ -742,6 +790,7 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
742
790
|
* @returns Removed element or undefined.
|
|
743
791
|
*/
|
|
744
792
|
pop() {
|
|
793
|
+
var _a;
|
|
745
794
|
if (!this.head) return void 0;
|
|
746
795
|
if (this.head === this.tail) {
|
|
747
796
|
const value2 = this.head.value;
|
|
@@ -751,8 +800,8 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
751
800
|
return value2;
|
|
752
801
|
}
|
|
753
802
|
let current = this.head;
|
|
754
|
-
while (current.next !== this.tail) current = current.next;
|
|
755
|
-
const value = this.tail.value;
|
|
803
|
+
while (current.next && current.next !== this.tail) current = current.next;
|
|
804
|
+
const value = (_a = this.tail) == null ? void 0 : _a.value;
|
|
756
805
|
current.next = void 0;
|
|
757
806
|
this._tail = current;
|
|
758
807
|
this._length--;
|
|
@@ -840,8 +889,8 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
840
889
|
at(index) {
|
|
841
890
|
if (index < 0 || index >= this._length) return void 0;
|
|
842
891
|
let current = this.head;
|
|
843
|
-
for (let i = 0; i < index; i++) current = current.next;
|
|
844
|
-
return current.value;
|
|
892
|
+
for (let i = 0; i < index && current; i++) current = current.next;
|
|
893
|
+
return current == null ? void 0 : current.value;
|
|
845
894
|
}
|
|
846
895
|
/**
|
|
847
896
|
* Type guard: check whether the input is a SinglyLinkedListNode.
|
|
@@ -861,7 +910,7 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
861
910
|
getNodeAt(index) {
|
|
862
911
|
if (index < 0 || index >= this._length) return void 0;
|
|
863
912
|
let current = this.head;
|
|
864
|
-
for (let i = 0; i < index; i++) current = current.next;
|
|
913
|
+
for (let i = 0; i < index && current; i++) current = current.next;
|
|
865
914
|
return current;
|
|
866
915
|
}
|
|
867
916
|
/**
|
|
@@ -1377,7 +1426,7 @@ var _DoublyLinkedList = class _DoublyLinkedList extends LinearLinkedBase {
|
|
|
1377
1426
|
*/
|
|
1378
1427
|
constructor(elements = [], options) {
|
|
1379
1428
|
super(options);
|
|
1380
|
-
__publicField(this, "_equals", Object.is);
|
|
1429
|
+
__publicField(this, "_equals", /* @__PURE__ */ __name((a, b) => Object.is(a, b), "_equals"));
|
|
1381
1430
|
__publicField(this, "_head");
|
|
1382
1431
|
__publicField(this, "_tail");
|
|
1383
1432
|
__publicField(this, "_length", 0);
|
|
@@ -1565,8 +1614,8 @@ var _DoublyLinkedList = class _DoublyLinkedList extends LinearLinkedBase {
|
|
|
1565
1614
|
at(index) {
|
|
1566
1615
|
if (index < 0 || index >= this._length) return void 0;
|
|
1567
1616
|
let current = this.head;
|
|
1568
|
-
for (let i = 0; i < index; i++) current = current.next;
|
|
1569
|
-
return current.value;
|
|
1617
|
+
for (let i = 0; i < index && current; i++) current = current.next;
|
|
1618
|
+
return current == null ? void 0 : current.value;
|
|
1570
1619
|
}
|
|
1571
1620
|
/**
|
|
1572
1621
|
* Get the node reference at a given index.
|
|
@@ -1577,7 +1626,7 @@ var _DoublyLinkedList = class _DoublyLinkedList extends LinearLinkedBase {
|
|
|
1577
1626
|
getNodeAt(index) {
|
|
1578
1627
|
if (index < 0 || index >= this._length) return void 0;
|
|
1579
1628
|
let current = this.head;
|
|
1580
|
-
for (let i = 0; i < index; i++) current = current.next;
|
|
1629
|
+
for (let i = 0; i < index && current; i++) current = current.next;
|
|
1581
1630
|
return current;
|
|
1582
1631
|
}
|
|
1583
1632
|
/**
|
|
@@ -2077,29 +2126,6 @@ var _SkipList = class _SkipList {
|
|
|
2077
2126
|
};
|
|
2078
2127
|
__name(_SkipList, "SkipList");
|
|
2079
2128
|
var SkipList = _SkipList;
|
|
2080
|
-
|
|
2081
|
-
// src/common/index.ts
|
|
2082
|
-
var DFSOperation = /* @__PURE__ */ ((DFSOperation2) => {
|
|
2083
|
-
DFSOperation2[DFSOperation2["VISIT"] = 0] = "VISIT";
|
|
2084
|
-
DFSOperation2[DFSOperation2["PROCESS"] = 1] = "PROCESS";
|
|
2085
|
-
return DFSOperation2;
|
|
2086
|
-
})(DFSOperation || {});
|
|
2087
|
-
var _Range = class _Range {
|
|
2088
|
-
constructor(low, high, includeLow = true, includeHigh = true) {
|
|
2089
|
-
this.low = low;
|
|
2090
|
-
this.high = high;
|
|
2091
|
-
this.includeLow = includeLow;
|
|
2092
|
-
this.includeHigh = includeHigh;
|
|
2093
|
-
}
|
|
2094
|
-
// Determine whether a key is within the range
|
|
2095
|
-
isInRange(key, comparator) {
|
|
2096
|
-
const lowCheck = this.includeLow ? comparator(key, this.low) >= 0 : comparator(key, this.low) > 0;
|
|
2097
|
-
const highCheck = this.includeHigh ? comparator(key, this.high) <= 0 : comparator(key, this.high) < 0;
|
|
2098
|
-
return lowCheck && highCheck;
|
|
2099
|
-
}
|
|
2100
|
-
};
|
|
2101
|
-
__name(_Range, "Range");
|
|
2102
|
-
var Range = _Range;
|
|
2103
2129
|
/**
|
|
2104
2130
|
* data-structure-typed
|
|
2105
2131
|
*
|
|
@@ -2108,6 +2134,6 @@ var Range = _Range;
|
|
|
2108
2134
|
* @license MIT License
|
|
2109
2135
|
*/
|
|
2110
2136
|
|
|
2111
|
-
export { DFSOperation, DoublyLinkedList, DoublyLinkedListNode, Range, SinglyLinkedList, SinglyLinkedListNode, SkipList, SkipListNode };
|
|
2137
|
+
export { DFSOperation, DoublyLinkedList, DoublyLinkedListNode, ERR, Range, SinglyLinkedList, SinglyLinkedListNode, SkipList, SkipListNode };
|
|
2112
2138
|
//# sourceMappingURL=index.mjs.map
|
|
2113
2139
|
//# sourceMappingURL=index.mjs.map
|