data-structure-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.
- package/CHANGELOG.md +5 -1
- package/MIGRATION.md +169 -0
- package/README.md +135 -23
- package/README_CN.md +551 -143
- package/SPECIFICATION.md +20 -14
- package/SPECIFICATION.zh-CN.md +20 -14
- package/dist/cjs/binary-tree.cjs +6460 -1591
- package/dist/cjs/graph.cjs +440 -20
- package/dist/cjs/hash.cjs +125 -22
- package/dist/cjs/heap.cjs +196 -47
- package/dist/cjs/index.cjs +8486 -2429
- package/dist/cjs/linked-list.cjs +456 -31
- package/dist/cjs/matrix.cjs +79 -9
- package/dist/cjs/priority-queue.cjs +193 -44
- package/dist/cjs/queue.cjs +391 -2
- package/dist/cjs/stack.cjs +92 -6
- package/dist/cjs/trie.cjs +122 -28
- package/dist/cjs-legacy/binary-tree.cjs +6484 -1612
- package/dist/cjs-legacy/graph.cjs +440 -20
- package/dist/cjs-legacy/hash.cjs +125 -22
- package/dist/cjs-legacy/heap.cjs +196 -47
- package/dist/cjs-legacy/index.cjs +8654 -2594
- package/dist/cjs-legacy/linked-list.cjs +456 -31
- package/dist/cjs-legacy/matrix.cjs +79 -9
- package/dist/cjs-legacy/priority-queue.cjs +193 -44
- package/dist/cjs-legacy/queue.cjs +391 -2
- package/dist/cjs-legacy/stack.cjs +92 -6
- package/dist/cjs-legacy/trie.cjs +122 -28
- package/dist/esm/binary-tree.mjs +6460 -1591
- package/dist/esm/graph.mjs +440 -20
- package/dist/esm/hash.mjs +125 -22
- package/dist/esm/heap.mjs +196 -47
- package/dist/esm/index.mjs +8486 -2430
- package/dist/esm/linked-list.mjs +456 -31
- package/dist/esm/matrix.mjs +79 -9
- package/dist/esm/priority-queue.mjs +193 -44
- package/dist/esm/queue.mjs +391 -2
- package/dist/esm/stack.mjs +92 -6
- package/dist/esm/trie.mjs +122 -28
- package/dist/esm-legacy/binary-tree.mjs +6484 -1612
- package/dist/esm-legacy/graph.mjs +440 -20
- package/dist/esm-legacy/hash.mjs +125 -22
- package/dist/esm-legacy/heap.mjs +196 -47
- package/dist/esm-legacy/index.mjs +8654 -2595
- package/dist/esm-legacy/linked-list.mjs +456 -31
- package/dist/esm-legacy/matrix.mjs +79 -9
- package/dist/esm-legacy/priority-queue.mjs +193 -44
- package/dist/esm-legacy/queue.mjs +391 -2
- package/dist/esm-legacy/stack.mjs +92 -6
- package/dist/esm-legacy/trie.mjs +122 -28
- package/dist/types/common/error.d.ts +9 -0
- package/dist/types/common/index.d.ts +1 -1
- package/dist/types/data-structures/binary-tree/avl-tree.d.ts +98 -2
- package/dist/types/data-structures/binary-tree/binary-indexed-tree.d.ts +112 -0
- package/dist/types/data-structures/binary-tree/binary-tree.d.ts +214 -13
- package/dist/types/data-structures/binary-tree/bst.d.ts +294 -3
- package/dist/types/data-structures/binary-tree/red-black-tree.d.ts +155 -8
- package/dist/types/data-structures/binary-tree/segment-tree.d.ts +48 -0
- package/dist/types/data-structures/binary-tree/tree-map.d.ts +1370 -323
- package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +1329 -316
- package/dist/types/data-structures/binary-tree/tree-multi-set.d.ts +1116 -295
- package/dist/types/data-structures/binary-tree/tree-set.d.ts +1330 -326
- package/dist/types/data-structures/graph/directed-graph.d.ts +80 -0
- package/dist/types/data-structures/graph/undirected-graph.d.ts +72 -0
- package/dist/types/data-structures/hash/hash-map.d.ts +95 -6
- package/dist/types/data-structures/heap/heap.d.ts +154 -12
- package/dist/types/data-structures/linked-list/doubly-linked-list.d.ts +143 -0
- package/dist/types/data-structures/linked-list/singly-linked-list.d.ts +121 -1
- package/dist/types/data-structures/linked-list/skip-linked-list.d.ts +144 -0
- package/dist/types/data-structures/matrix/matrix.d.ts +64 -0
- package/dist/types/data-structures/queue/deque.d.ts +142 -0
- package/dist/types/data-structures/queue/queue.d.ts +109 -0
- package/dist/types/data-structures/stack/stack.d.ts +82 -2
- package/dist/types/data-structures/trie/trie.d.ts +96 -0
- package/dist/types/interfaces/binary-tree.d.ts +2 -3
- package/dist/types/types/data-structures/binary-tree/bst.d.ts +1 -0
- package/dist/types/types/data-structures/binary-tree/tree-map.d.ts +5 -0
- package/dist/types/types/data-structures/binary-tree/tree-multi-set.d.ts +4 -0
- package/dist/types/types/data-structures/binary-tree/tree-set.d.ts +4 -0
- package/dist/umd/data-structure-typed.js +8623 -2564
- package/dist/umd/data-structure-typed.min.js +5 -5
- package/docs-site-docusaurus/docs/api/classes/AVLTree.md +696 -194
- package/docs-site-docusaurus/docs/api/classes/AVLTreeNode.md +11 -11
- package/docs-site-docusaurus/docs/api/classes/AbstractGraph.md +71 -71
- package/docs-site-docusaurus/docs/api/classes/BST.md +639 -189
- package/docs-site-docusaurus/docs/api/classes/BSTNode.md +13 -13
- package/docs-site-docusaurus/docs/api/classes/BinaryIndexedTree.md +15 -15
- package/docs-site-docusaurus/docs/api/classes/BinaryTree.md +148 -160
- package/docs-site-docusaurus/docs/api/classes/BinaryTreeNode.md +13 -13
- package/docs-site-docusaurus/docs/api/classes/Deque.md +105 -91
- package/docs-site-docusaurus/docs/api/classes/DirectedGraph.md +82 -82
- package/docs-site-docusaurus/docs/api/classes/DoublyLinkedList.md +104 -74
- package/docs-site-docusaurus/docs/api/classes/DoublyLinkedListNode.md +8 -8
- package/docs-site-docusaurus/docs/api/classes/FibonacciHeap.md +12 -12
- package/docs-site-docusaurus/docs/api/classes/FibonacciHeapNode.md +1 -1
- package/docs-site-docusaurus/docs/api/classes/HashMap.md +51 -51
- package/docs-site-docusaurus/docs/api/classes/Heap.md +96 -85
- package/docs-site-docusaurus/docs/api/classes/IterableElementBase.md +25 -25
- package/docs-site-docusaurus/docs/api/classes/IterableEntryBase.md +33 -33
- package/docs-site-docusaurus/docs/api/classes/LinearBase.md +50 -50
- package/docs-site-docusaurus/docs/api/classes/LinearLinkedBase.md +55 -55
- package/docs-site-docusaurus/docs/api/classes/LinkedHashMap.md +55 -55
- package/docs-site-docusaurus/docs/api/classes/LinkedListNode.md +6 -6
- package/docs-site-docusaurus/docs/api/classes/LinkedListQueue.md +78 -78
- package/docs-site-docusaurus/docs/api/classes/MapGraph.md +82 -82
- package/docs-site-docusaurus/docs/api/classes/Matrix.md +31 -31
- package/docs-site-docusaurus/docs/api/classes/MaxHeap.md +104 -89
- package/docs-site-docusaurus/docs/api/classes/MaxPriorityQueue.md +104 -89
- package/docs-site-docusaurus/docs/api/classes/MinHeap.md +104 -89
- package/docs-site-docusaurus/docs/api/classes/MinPriorityQueue.md +104 -89
- package/docs-site-docusaurus/docs/api/classes/Navigator.md +5 -5
- package/docs-site-docusaurus/docs/api/classes/PriorityQueue.md +103 -88
- package/docs-site-docusaurus/docs/api/classes/Queue.md +112 -60
- package/docs-site-docusaurus/docs/api/classes/RedBlackTree.md +708 -206
- package/docs-site-docusaurus/docs/api/classes/SegmentTree.md +10 -10
- package/docs-site-docusaurus/docs/api/classes/SinglyLinkedList.md +79 -79
- package/docs-site-docusaurus/docs/api/classes/SinglyLinkedListNode.md +6 -6
- package/docs-site-docusaurus/docs/api/classes/SkipList.md +44 -44
- package/docs-site-docusaurus/docs/api/classes/Stack.md +42 -42
- package/docs-site-docusaurus/docs/api/classes/TreeMap.md +236 -33
- package/docs-site-docusaurus/docs/api/classes/TreeMultiMap.md +162 -46
- package/docs-site-docusaurus/docs/api/classes/TreeSet.md +232 -32
- package/docs-site-docusaurus/docs/api/classes/Trie.md +47 -47
- package/docs-site-docusaurus/docs/api/classes/TrieNode.md +8 -8
- package/docs-site-docusaurus/docs/api/classes/UndirectedGraph.md +81 -81
- package/docs-site-docusaurus/docs/guide/architecture.md +75 -5
- package/docs-site-docusaurus/docs/guide/concepts.md +53 -3
- package/docs-site-docusaurus/docs/guide/faq.md +233 -0
- package/docs-site-docusaurus/docs/guide/guides.md +43 -58
- package/docs-site-docusaurus/docs/guide/installation.md +2 -0
- package/docs-site-docusaurus/docs/guide/integrations.md +75 -176
- package/docs-site-docusaurus/docs/guide/overview.md +132 -11
- package/docs-site-docusaurus/docs/guide/performance.md +2 -0
- package/docs-site-docusaurus/docs/guide/quick-start.md +31 -0
- package/docs-site-docusaurus/docs/guide/use-cases/_category_.json +6 -0
- package/docs-site-docusaurus/docs/guide/use-cases/array-sort-alternative.md +158 -0
- package/docs-site-docusaurus/docs/guide/use-cases/heap-vs-sorting.md +92 -0
- package/docs-site-docusaurus/docs/guide/use-cases/map-vs-treemap.md +151 -0
- package/docs-site-docusaurus/docs/guide/use-cases/priority-queue-typescript.md +113 -0
- package/docs-site-docusaurus/docs/guide/use-cases/treemap-javascript.md +151 -0
- package/docs-site-docusaurus/docusaurus.config.ts +1 -1
- package/docs-site-docusaurus/src/pages/index.tsx +55 -2
- package/docs-site-docusaurus/static/llms.txt +37 -0
- package/docs-site-docusaurus/typedoc.json +1 -0
- package/llms.txt +37 -0
- package/package.json +65 -56
- package/src/common/error.ts +19 -1
- package/src/common/index.ts +1 -1
- package/src/data-structures/base/iterable-element-base.ts +3 -2
- package/src/data-structures/binary-tree/avl-tree.ts +99 -5
- package/src/data-structures/binary-tree/binary-indexed-tree.ts +102 -4
- package/src/data-structures/binary-tree/binary-tree.ts +239 -78
- package/src/data-structures/binary-tree/bst.ts +542 -13
- package/src/data-structures/binary-tree/red-black-tree.ts +155 -15
- package/src/data-structures/binary-tree/segment-tree.ts +42 -0
- package/src/data-structures/binary-tree/tree-map.ts +1223 -261
- package/src/data-structures/binary-tree/tree-multi-map.ts +939 -30
- package/src/data-structures/binary-tree/tree-multi-set.ts +746 -10
- package/src/data-structures/binary-tree/tree-set.ts +1018 -99
- package/src/data-structures/graph/abstract-graph.ts +2 -2
- package/src/data-structures/graph/directed-graph.ts +71 -1
- package/src/data-structures/graph/undirected-graph.ts +64 -1
- package/src/data-structures/hash/hash-map.ts +102 -16
- package/src/data-structures/heap/heap.ts +153 -23
- package/src/data-structures/heap/max-heap.ts +2 -2
- package/src/data-structures/linked-list/doubly-linked-list.ts +139 -0
- package/src/data-structures/linked-list/singly-linked-list.ts +106 -1
- package/src/data-structures/linked-list/skip-linked-list.ts +131 -5
- package/src/data-structures/matrix/matrix.ts +65 -9
- package/src/data-structures/priority-queue/max-priority-queue.ts +2 -2
- package/src/data-structures/queue/deque.ts +130 -0
- package/src/data-structures/queue/queue.ts +109 -0
- package/src/data-structures/stack/stack.ts +75 -5
- package/src/data-structures/trie/trie.ts +86 -2
- package/src/interfaces/binary-tree.ts +1 -9
- package/src/types/data-structures/binary-tree/bst.ts +1 -0
- package/src/types/data-structures/binary-tree/tree-map.ts +6 -0
- package/src/types/data-structures/binary-tree/tree-multi-set.ts +5 -0
- package/src/types/data-structures/binary-tree/tree-set.ts +5 -0
- package/.vitepress/cache/deps_temp_51f5f1b0/chunk-7OIKW5WK.js +0 -12984
- package/.vitepress/cache/deps_temp_51f5f1b0/package.json +0 -3
- package/.vitepress/cache/deps_temp_51f5f1b0/vitepress___@vue_devtools-api.js +0 -4505
- package/.vitepress/cache/deps_temp_51f5f1b0/vitepress___@vueuse_core.js +0 -9731
- package/.vitepress/cache/deps_temp_51f5f1b0/vue.js +0 -347
package/dist/cjs/graph.cjs
CHANGED
|
@@ -25,6 +25,10 @@ var arrayRemove = /* @__PURE__ */ __name(function(array, predicate) {
|
|
|
25
25
|
}, "arrayRemove");
|
|
26
26
|
|
|
27
27
|
// src/common/error.ts
|
|
28
|
+
function raise(ErrorClass, message) {
|
|
29
|
+
throw new ErrorClass(message);
|
|
30
|
+
}
|
|
31
|
+
__name(raise, "raise");
|
|
28
32
|
var ERR = {
|
|
29
33
|
// Range / index
|
|
30
34
|
indexOutOfRange: /* @__PURE__ */ __name((index, min, max, ctx) => `${ctx ? ctx + ": " : ""}Index ${index} is out of range [${min}, ${max}].`, "indexOutOfRange"),
|
|
@@ -46,7 +50,9 @@ var ERR = {
|
|
|
46
50
|
matrixSingular: /* @__PURE__ */ __name(() => "Matrix: Singular matrix, inverse does not exist.", "matrixSingular"),
|
|
47
51
|
matrixNotSquare: /* @__PURE__ */ __name(() => "Matrix: Must be square for inversion.", "matrixNotSquare"),
|
|
48
52
|
matrixNotRectangular: /* @__PURE__ */ __name(() => "Matrix: Must be rectangular for transposition.", "matrixNotRectangular"),
|
|
49
|
-
matrixRowMismatch: /* @__PURE__ */ __name((expected, got) => `Matrix: Expected row length ${expected}, but got ${got}.`, "matrixRowMismatch")
|
|
53
|
+
matrixRowMismatch: /* @__PURE__ */ __name((expected, got) => `Matrix: Expected row length ${expected}, but got ${got}.`, "matrixRowMismatch"),
|
|
54
|
+
// Order statistic
|
|
55
|
+
orderStatisticNotEnabled: /* @__PURE__ */ __name((method, ctx) => `${ctx ? ctx + ": " : ""}${method}() requires enableOrderStatistic: true.`, "orderStatisticNotEnabled")
|
|
50
56
|
};
|
|
51
57
|
|
|
52
58
|
// src/data-structures/base/iterable-entry-base.ts
|
|
@@ -249,7 +255,7 @@ var IterableElementBase = class {
|
|
|
249
255
|
if (options) {
|
|
250
256
|
const { toElementFn } = options;
|
|
251
257
|
if (typeof toElementFn === "function") this._toElementFn = toElementFn;
|
|
252
|
-
else if (toElementFn)
|
|
258
|
+
else if (toElementFn) raise(TypeError, "toElementFn must be a function type");
|
|
253
259
|
}
|
|
254
260
|
}
|
|
255
261
|
/**
|
|
@@ -412,7 +418,7 @@ var IterableElementBase = class {
|
|
|
412
418
|
acc = initialValue;
|
|
413
419
|
} else {
|
|
414
420
|
const first = iter.next();
|
|
415
|
-
if (first.done)
|
|
421
|
+
if (first.done) raise(TypeError, "Reduce of empty structure with no initial value");
|
|
416
422
|
acc = first.value;
|
|
417
423
|
index = 1;
|
|
418
424
|
}
|
|
@@ -703,6 +709,14 @@ var Heap = class _Heap extends IterableElementBase {
|
|
|
703
709
|
|
|
704
710
|
|
|
705
711
|
|
|
712
|
+
|
|
713
|
+
|
|
714
|
+
|
|
715
|
+
|
|
716
|
+
|
|
717
|
+
|
|
718
|
+
|
|
719
|
+
|
|
706
720
|
|
|
707
721
|
|
|
708
722
|
|
|
@@ -760,7 +774,7 @@ var Heap = class _Heap extends IterableElementBase {
|
|
|
760
774
|
}
|
|
761
775
|
/**
|
|
762
776
|
* Insert an element.
|
|
763
|
-
* @remarks Time O(
|
|
777
|
+
* @remarks Time O(log N) amortized, Space O(1)
|
|
764
778
|
* @param element - Element to insert.
|
|
765
779
|
* @returns True.
|
|
766
780
|
|
|
@@ -785,6 +799,14 @@ var Heap = class _Heap extends IterableElementBase {
|
|
|
785
799
|
|
|
786
800
|
|
|
787
801
|
|
|
802
|
+
|
|
803
|
+
|
|
804
|
+
|
|
805
|
+
|
|
806
|
+
|
|
807
|
+
|
|
808
|
+
|
|
809
|
+
|
|
788
810
|
|
|
789
811
|
|
|
790
812
|
|
|
@@ -838,6 +860,14 @@ var Heap = class _Heap extends IterableElementBase {
|
|
|
838
860
|
|
|
839
861
|
|
|
840
862
|
|
|
863
|
+
|
|
864
|
+
|
|
865
|
+
|
|
866
|
+
|
|
867
|
+
|
|
868
|
+
|
|
869
|
+
|
|
870
|
+
|
|
841
871
|
|
|
842
872
|
|
|
843
873
|
|
|
@@ -902,6 +932,41 @@ var Heap = class _Heap extends IterableElementBase {
|
|
|
902
932
|
|
|
903
933
|
|
|
904
934
|
|
|
935
|
+
|
|
936
|
+
|
|
937
|
+
|
|
938
|
+
|
|
939
|
+
|
|
940
|
+
|
|
941
|
+
|
|
942
|
+
* @example
|
|
943
|
+
* // Heap with custom comparator (MaxHeap behavior)
|
|
944
|
+
* interface Task {
|
|
945
|
+
* id: number;
|
|
946
|
+
* priority: number;
|
|
947
|
+
* name: string;
|
|
948
|
+
* }
|
|
949
|
+
*
|
|
950
|
+
* // Custom comparator for max heap behavior (higher priority first)
|
|
951
|
+
* const tasks: Task[] = [
|
|
952
|
+
* { id: 1, priority: 5, name: 'Email' },
|
|
953
|
+
* { id: 2, priority: 3, name: 'Chat' },
|
|
954
|
+
* { id: 3, priority: 8, name: 'Alert' }
|
|
955
|
+
* ];
|
|
956
|
+
*
|
|
957
|
+
* const maxHeap = new Heap(tasks, {
|
|
958
|
+
* comparator: (a: Task, b: Task) => b.priority - a.priority
|
|
959
|
+
* });
|
|
960
|
+
*
|
|
961
|
+
* console.log(maxHeap.size); // 3;
|
|
962
|
+
*
|
|
963
|
+
* // Peek returns highest priority task
|
|
964
|
+
* const topTask = maxHeap.peek();
|
|
965
|
+
* console.log(topTask?.priority); // 8;
|
|
966
|
+
* console.log(topTask?.name); // 'Alert';
|
|
967
|
+
*/
|
|
968
|
+
/**
|
|
969
|
+
* @deprecated Use `pop` instead. Will be removed in a future major version.
|
|
905
970
|
* @example
|
|
906
971
|
* // Heap with custom comparator (MaxHeap behavior)
|
|
907
972
|
* interface Task {
|
|
@@ -929,6 +994,14 @@ var Heap = class _Heap extends IterableElementBase {
|
|
|
929
994
|
* console.log(topTask?.name); // 'Alert';
|
|
930
995
|
*/
|
|
931
996
|
poll() {
|
|
997
|
+
return this.pop();
|
|
998
|
+
}
|
|
999
|
+
/**
|
|
1000
|
+
* Remove and return the top element (min or max depending on comparator).
|
|
1001
|
+
* @remarks Time O(log N) amortized, Space O(1)
|
|
1002
|
+
* @returns The removed top element, or undefined if empty.
|
|
1003
|
+
*/
|
|
1004
|
+
pop() {
|
|
932
1005
|
if (this.elements.length === 0) return;
|
|
933
1006
|
const value = this.elements[0];
|
|
934
1007
|
const last = this.elements.pop();
|
|
@@ -964,6 +1037,14 @@ var Heap = class _Heap extends IterableElementBase {
|
|
|
964
1037
|
|
|
965
1038
|
|
|
966
1039
|
|
|
1040
|
+
|
|
1041
|
+
|
|
1042
|
+
|
|
1043
|
+
|
|
1044
|
+
|
|
1045
|
+
|
|
1046
|
+
|
|
1047
|
+
|
|
967
1048
|
|
|
968
1049
|
|
|
969
1050
|
|
|
@@ -1060,6 +1141,14 @@ var Heap = class _Heap extends IterableElementBase {
|
|
|
1060
1141
|
|
|
1061
1142
|
|
|
1062
1143
|
|
|
1144
|
+
|
|
1145
|
+
|
|
1146
|
+
|
|
1147
|
+
|
|
1148
|
+
|
|
1149
|
+
|
|
1150
|
+
|
|
1151
|
+
|
|
1063
1152
|
|
|
1064
1153
|
|
|
1065
1154
|
|
|
@@ -1103,6 +1192,14 @@ var Heap = class _Heap extends IterableElementBase {
|
|
|
1103
1192
|
|
|
1104
1193
|
|
|
1105
1194
|
|
|
1195
|
+
|
|
1196
|
+
|
|
1197
|
+
|
|
1198
|
+
|
|
1199
|
+
|
|
1200
|
+
|
|
1201
|
+
|
|
1202
|
+
|
|
1106
1203
|
|
|
1107
1204
|
|
|
1108
1205
|
|
|
@@ -1121,16 +1218,6 @@ var Heap = class _Heap extends IterableElementBase {
|
|
|
1121
1218
|
clear() {
|
|
1122
1219
|
this._elements = [];
|
|
1123
1220
|
}
|
|
1124
|
-
/**
|
|
1125
|
-
* Replace the backing array and rebuild the heap.
|
|
1126
|
-
* @remarks Time O(N), Space O(N)
|
|
1127
|
-
* @param elements - Iterable used to refill the heap.
|
|
1128
|
-
* @returns Array of per-node results from fixing steps.
|
|
1129
|
-
*/
|
|
1130
|
-
refill(elements) {
|
|
1131
|
-
this._elements = Array.from(elements);
|
|
1132
|
-
return this.fix();
|
|
1133
|
-
}
|
|
1134
1221
|
/**
|
|
1135
1222
|
* Check if an equal element exists in the heap.
|
|
1136
1223
|
* @remarks Time O(N), Space O(1)
|
|
@@ -1149,6 +1236,14 @@ var Heap = class _Heap extends IterableElementBase {
|
|
|
1149
1236
|
|
|
1150
1237
|
|
|
1151
1238
|
|
|
1239
|
+
|
|
1240
|
+
|
|
1241
|
+
|
|
1242
|
+
|
|
1243
|
+
|
|
1244
|
+
|
|
1245
|
+
|
|
1246
|
+
|
|
1152
1247
|
|
|
1153
1248
|
|
|
1154
1249
|
|
|
@@ -1192,6 +1287,14 @@ var Heap = class _Heap extends IterableElementBase {
|
|
|
1192
1287
|
|
|
1193
1288
|
|
|
1194
1289
|
|
|
1290
|
+
|
|
1291
|
+
|
|
1292
|
+
|
|
1293
|
+
|
|
1294
|
+
|
|
1295
|
+
|
|
1296
|
+
|
|
1297
|
+
|
|
1195
1298
|
|
|
1196
1299
|
|
|
1197
1300
|
|
|
@@ -1217,7 +1320,7 @@ var Heap = class _Heap extends IterableElementBase {
|
|
|
1217
1320
|
}
|
|
1218
1321
|
if (index < 0) return false;
|
|
1219
1322
|
if (index === 0) {
|
|
1220
|
-
this.
|
|
1323
|
+
this.pop();
|
|
1221
1324
|
} else if (index === this.elements.length - 1) {
|
|
1222
1325
|
this.elements.pop();
|
|
1223
1326
|
} else {
|
|
@@ -1227,13 +1330,19 @@ var Heap = class _Heap extends IterableElementBase {
|
|
|
1227
1330
|
}
|
|
1228
1331
|
return true;
|
|
1229
1332
|
}
|
|
1333
|
+
/**
|
|
1334
|
+
* @deprecated Use `deleteWhere` instead. Will be removed in a future major version.
|
|
1335
|
+
*/
|
|
1336
|
+
deleteBy(predicate) {
|
|
1337
|
+
return this.deleteWhere(predicate);
|
|
1338
|
+
}
|
|
1230
1339
|
/**
|
|
1231
1340
|
* Delete the first element that matches a predicate.
|
|
1232
1341
|
* @remarks Time O(N), Space O(1)
|
|
1233
1342
|
* @param predicate - Function (element, index, heap) → boolean.
|
|
1234
1343
|
* @returns True if an element was removed.
|
|
1235
1344
|
*/
|
|
1236
|
-
|
|
1345
|
+
deleteWhere(predicate) {
|
|
1237
1346
|
let idx = -1;
|
|
1238
1347
|
for (let i = 0; i < this.elements.length; i++) {
|
|
1239
1348
|
if (predicate(this.elements[i], i, this)) {
|
|
@@ -1243,7 +1352,7 @@ var Heap = class _Heap extends IterableElementBase {
|
|
|
1243
1352
|
}
|
|
1244
1353
|
if (idx < 0) return false;
|
|
1245
1354
|
if (idx === 0) {
|
|
1246
|
-
this.
|
|
1355
|
+
this.pop();
|
|
1247
1356
|
} else if (idx === this.elements.length - 1) {
|
|
1248
1357
|
this.elements.pop();
|
|
1249
1358
|
} else {
|
|
@@ -1281,6 +1390,14 @@ var Heap = class _Heap extends IterableElementBase {
|
|
|
1281
1390
|
|
|
1282
1391
|
|
|
1283
1392
|
|
|
1393
|
+
|
|
1394
|
+
|
|
1395
|
+
|
|
1396
|
+
|
|
1397
|
+
|
|
1398
|
+
|
|
1399
|
+
|
|
1400
|
+
|
|
1284
1401
|
|
|
1285
1402
|
|
|
1286
1403
|
|
|
@@ -1357,6 +1474,14 @@ var Heap = class _Heap extends IterableElementBase {
|
|
|
1357
1474
|
|
|
1358
1475
|
|
|
1359
1476
|
|
|
1477
|
+
|
|
1478
|
+
|
|
1479
|
+
|
|
1480
|
+
|
|
1481
|
+
|
|
1482
|
+
|
|
1483
|
+
|
|
1484
|
+
|
|
1360
1485
|
|
|
1361
1486
|
|
|
1362
1487
|
|
|
@@ -1406,6 +1531,14 @@ var Heap = class _Heap extends IterableElementBase {
|
|
|
1406
1531
|
|
|
1407
1532
|
|
|
1408
1533
|
|
|
1534
|
+
|
|
1535
|
+
|
|
1536
|
+
|
|
1537
|
+
|
|
1538
|
+
|
|
1539
|
+
|
|
1540
|
+
|
|
1541
|
+
|
|
1409
1542
|
|
|
1410
1543
|
|
|
1411
1544
|
|
|
@@ -1454,6 +1587,14 @@ var Heap = class _Heap extends IterableElementBase {
|
|
|
1454
1587
|
|
|
1455
1588
|
|
|
1456
1589
|
|
|
1590
|
+
|
|
1591
|
+
|
|
1592
|
+
|
|
1593
|
+
|
|
1594
|
+
|
|
1595
|
+
|
|
1596
|
+
|
|
1597
|
+
|
|
1457
1598
|
|
|
1458
1599
|
|
|
1459
1600
|
|
|
@@ -1509,6 +1650,14 @@ var Heap = class _Heap extends IterableElementBase {
|
|
|
1509
1650
|
|
|
1510
1651
|
|
|
1511
1652
|
|
|
1653
|
+
|
|
1654
|
+
|
|
1655
|
+
|
|
1656
|
+
|
|
1657
|
+
|
|
1658
|
+
|
|
1659
|
+
|
|
1660
|
+
|
|
1512
1661
|
|
|
1513
1662
|
|
|
1514
1663
|
|
|
@@ -1526,7 +1675,7 @@ var Heap = class _Heap extends IterableElementBase {
|
|
|
1526
1675
|
*/
|
|
1527
1676
|
map(callback, options, thisArg) {
|
|
1528
1677
|
const { comparator, toElementFn, ...rest } = options ?? {};
|
|
1529
|
-
if (!comparator)
|
|
1678
|
+
if (!comparator) raise(TypeError, ERR.comparatorRequired("Heap.map"));
|
|
1530
1679
|
const out = this._createLike([], { ...rest, comparator, toElementFn });
|
|
1531
1680
|
let i = 0;
|
|
1532
1681
|
for (const x of this) {
|
|
@@ -1553,7 +1702,7 @@ var Heap = class _Heap extends IterableElementBase {
|
|
|
1553
1702
|
}
|
|
1554
1703
|
_DEFAULT_COMPARATOR = /* @__PURE__ */ __name((a, b) => {
|
|
1555
1704
|
if (typeof a === "object" || typeof b === "object") {
|
|
1556
|
-
|
|
1705
|
+
raise(TypeError, ERR.comparatorRequired("Heap"));
|
|
1557
1706
|
}
|
|
1558
1707
|
if (a > b) return 1;
|
|
1559
1708
|
if (a < b) return -1;
|
|
@@ -1718,6 +1867,14 @@ var Queue = class _Queue extends LinearBase {
|
|
|
1718
1867
|
|
|
1719
1868
|
|
|
1720
1869
|
|
|
1870
|
+
|
|
1871
|
+
|
|
1872
|
+
|
|
1873
|
+
|
|
1874
|
+
|
|
1875
|
+
|
|
1876
|
+
|
|
1877
|
+
|
|
1721
1878
|
|
|
1722
1879
|
|
|
1723
1880
|
|
|
@@ -1764,6 +1921,14 @@ var Queue = class _Queue extends LinearBase {
|
|
|
1764
1921
|
|
|
1765
1922
|
|
|
1766
1923
|
|
|
1924
|
+
|
|
1925
|
+
|
|
1926
|
+
|
|
1927
|
+
|
|
1928
|
+
|
|
1929
|
+
|
|
1930
|
+
|
|
1931
|
+
|
|
1767
1932
|
|
|
1768
1933
|
|
|
1769
1934
|
|
|
@@ -1782,6 +1947,14 @@ var Queue = class _Queue extends LinearBase {
|
|
|
1782
1947
|
get first() {
|
|
1783
1948
|
return this.length > 0 ? this.elements[this._offset] : void 0;
|
|
1784
1949
|
}
|
|
1950
|
+
/**
|
|
1951
|
+
* Peek at the front element without removing it (alias for `first`).
|
|
1952
|
+
* @remarks Time O(1), Space O(1)
|
|
1953
|
+
* @returns Front element or undefined.
|
|
1954
|
+
*/
|
|
1955
|
+
peek() {
|
|
1956
|
+
return this.first;
|
|
1957
|
+
}
|
|
1785
1958
|
/**
|
|
1786
1959
|
* Get the last element (back) without removing it.
|
|
1787
1960
|
* @remarks Time O(1), Space O(1)
|
|
@@ -1826,6 +1999,14 @@ var Queue = class _Queue extends LinearBase {
|
|
|
1826
1999
|
|
|
1827
2000
|
|
|
1828
2001
|
|
|
2002
|
+
|
|
2003
|
+
|
|
2004
|
+
|
|
2005
|
+
|
|
2006
|
+
|
|
2007
|
+
|
|
2008
|
+
|
|
2009
|
+
|
|
1829
2010
|
|
|
1830
2011
|
|
|
1831
2012
|
|
|
@@ -1884,6 +2065,14 @@ var Queue = class _Queue extends LinearBase {
|
|
|
1884
2065
|
|
|
1885
2066
|
|
|
1886
2067
|
|
|
2068
|
+
|
|
2069
|
+
|
|
2070
|
+
|
|
2071
|
+
|
|
2072
|
+
|
|
2073
|
+
|
|
2074
|
+
|
|
2075
|
+
|
|
1887
2076
|
|
|
1888
2077
|
|
|
1889
2078
|
|
|
@@ -1949,6 +2138,14 @@ var Queue = class _Queue extends LinearBase {
|
|
|
1949
2138
|
|
|
1950
2139
|
|
|
1951
2140
|
|
|
2141
|
+
|
|
2142
|
+
|
|
2143
|
+
|
|
2144
|
+
|
|
2145
|
+
|
|
2146
|
+
|
|
2147
|
+
|
|
2148
|
+
|
|
1952
2149
|
|
|
1953
2150
|
|
|
1954
2151
|
|
|
@@ -2004,6 +2201,14 @@ var Queue = class _Queue extends LinearBase {
|
|
|
2004
2201
|
|
|
2005
2202
|
|
|
2006
2203
|
|
|
2204
|
+
|
|
2205
|
+
|
|
2206
|
+
|
|
2207
|
+
|
|
2208
|
+
|
|
2209
|
+
|
|
2210
|
+
|
|
2211
|
+
|
|
2007
2212
|
|
|
2008
2213
|
|
|
2009
2214
|
|
|
@@ -2052,6 +2257,14 @@ var Queue = class _Queue extends LinearBase {
|
|
|
2052
2257
|
|
|
2053
2258
|
|
|
2054
2259
|
|
|
2260
|
+
|
|
2261
|
+
|
|
2262
|
+
|
|
2263
|
+
|
|
2264
|
+
|
|
2265
|
+
|
|
2266
|
+
|
|
2267
|
+
|
|
2055
2268
|
|
|
2056
2269
|
|
|
2057
2270
|
|
|
@@ -2107,6 +2320,21 @@ var Queue = class _Queue extends LinearBase {
|
|
|
2107
2320
|
this._elements[this._offset + index] = newElement;
|
|
2108
2321
|
return true;
|
|
2109
2322
|
}
|
|
2323
|
+
/**
|
|
2324
|
+
* Delete the first element that satisfies a predicate.
|
|
2325
|
+
* @remarks Time O(N), Space O(N)
|
|
2326
|
+
* @param predicate - Function (value, index, queue) → boolean to decide deletion.
|
|
2327
|
+
* @returns True if a match was removed.
|
|
2328
|
+
*/
|
|
2329
|
+
deleteWhere(predicate) {
|
|
2330
|
+
for (let i = 0; i < this.length; i++) {
|
|
2331
|
+
if (predicate(this._elements[this._offset + i], i, this)) {
|
|
2332
|
+
this.deleteAt(i);
|
|
2333
|
+
return true;
|
|
2334
|
+
}
|
|
2335
|
+
}
|
|
2336
|
+
return false;
|
|
2337
|
+
}
|
|
2110
2338
|
/**
|
|
2111
2339
|
* Reverse the queue in-place by compacting then reversing.
|
|
2112
2340
|
* @remarks Time O(N), Space O(N)
|
|
@@ -2141,6 +2369,14 @@ var Queue = class _Queue extends LinearBase {
|
|
|
2141
2369
|
|
|
2142
2370
|
|
|
2143
2371
|
|
|
2372
|
+
|
|
2373
|
+
|
|
2374
|
+
|
|
2375
|
+
|
|
2376
|
+
|
|
2377
|
+
|
|
2378
|
+
|
|
2379
|
+
|
|
2144
2380
|
|
|
2145
2381
|
|
|
2146
2382
|
|
|
@@ -2183,6 +2419,14 @@ var Queue = class _Queue extends LinearBase {
|
|
|
2183
2419
|
|
|
2184
2420
|
|
|
2185
2421
|
|
|
2422
|
+
|
|
2423
|
+
|
|
2424
|
+
|
|
2425
|
+
|
|
2426
|
+
|
|
2427
|
+
|
|
2428
|
+
|
|
2429
|
+
|
|
2186
2430
|
|
|
2187
2431
|
|
|
2188
2432
|
|
|
@@ -2248,6 +2492,14 @@ var Queue = class _Queue extends LinearBase {
|
|
|
2248
2492
|
|
|
2249
2493
|
|
|
2250
2494
|
|
|
2495
|
+
|
|
2496
|
+
|
|
2497
|
+
|
|
2498
|
+
|
|
2499
|
+
|
|
2500
|
+
|
|
2501
|
+
|
|
2502
|
+
|
|
2251
2503
|
|
|
2252
2504
|
|
|
2253
2505
|
|
|
@@ -2297,6 +2549,14 @@ var Queue = class _Queue extends LinearBase {
|
|
|
2297
2549
|
|
|
2298
2550
|
|
|
2299
2551
|
|
|
2552
|
+
|
|
2553
|
+
|
|
2554
|
+
|
|
2555
|
+
|
|
2556
|
+
|
|
2557
|
+
|
|
2558
|
+
|
|
2559
|
+
|
|
2300
2560
|
|
|
2301
2561
|
|
|
2302
2562
|
|
|
@@ -2350,6 +2610,14 @@ var Queue = class _Queue extends LinearBase {
|
|
|
2350
2610
|
|
|
2351
2611
|
|
|
2352
2612
|
|
|
2613
|
+
|
|
2614
|
+
|
|
2615
|
+
|
|
2616
|
+
|
|
2617
|
+
|
|
2618
|
+
|
|
2619
|
+
|
|
2620
|
+
|
|
2353
2621
|
|
|
2354
2622
|
|
|
2355
2623
|
|
|
@@ -2594,7 +2862,7 @@ var AbstractGraph = class extends IterableEntryBase {
|
|
|
2594
2862
|
const newEdge = this.createEdge(srcOrEdge, dest, weight, value);
|
|
2595
2863
|
return this._addEdge(newEdge);
|
|
2596
2864
|
} else {
|
|
2597
|
-
|
|
2865
|
+
raise(TypeError, ERR.invalidArgument("dest must be a Vertex or vertex key when srcOrEdge is an Edge.", "Graph"));
|
|
2598
2866
|
}
|
|
2599
2867
|
}
|
|
2600
2868
|
}
|
|
@@ -3485,6 +3753,14 @@ var DirectedGraph = class _DirectedGraph extends AbstractGraph {
|
|
|
3485
3753
|
|
|
3486
3754
|
|
|
3487
3755
|
|
|
3756
|
+
|
|
3757
|
+
|
|
3758
|
+
|
|
3759
|
+
|
|
3760
|
+
|
|
3761
|
+
|
|
3762
|
+
|
|
3763
|
+
|
|
3488
3764
|
|
|
3489
3765
|
|
|
3490
3766
|
|
|
@@ -3569,6 +3845,14 @@ var DirectedGraph = class _DirectedGraph extends AbstractGraph {
|
|
|
3569
3845
|
|
|
3570
3846
|
|
|
3571
3847
|
|
|
3848
|
+
|
|
3849
|
+
|
|
3850
|
+
|
|
3851
|
+
|
|
3852
|
+
|
|
3853
|
+
|
|
3854
|
+
|
|
3855
|
+
|
|
3572
3856
|
|
|
3573
3857
|
|
|
3574
3858
|
|
|
@@ -3651,6 +3935,14 @@ var DirectedGraph = class _DirectedGraph extends AbstractGraph {
|
|
|
3651
3935
|
|
|
3652
3936
|
|
|
3653
3937
|
|
|
3938
|
+
|
|
3939
|
+
|
|
3940
|
+
|
|
3941
|
+
|
|
3942
|
+
|
|
3943
|
+
|
|
3944
|
+
|
|
3945
|
+
|
|
3654
3946
|
|
|
3655
3947
|
|
|
3656
3948
|
|
|
@@ -3724,6 +4016,14 @@ var DirectedGraph = class _DirectedGraph extends AbstractGraph {
|
|
|
3724
4016
|
|
|
3725
4017
|
|
|
3726
4018
|
|
|
4019
|
+
|
|
4020
|
+
|
|
4021
|
+
|
|
4022
|
+
|
|
4023
|
+
|
|
4024
|
+
|
|
4025
|
+
|
|
4026
|
+
|
|
3727
4027
|
|
|
3728
4028
|
|
|
3729
4029
|
|
|
@@ -3774,6 +4074,14 @@ var DirectedGraph = class _DirectedGraph extends AbstractGraph {
|
|
|
3774
4074
|
|
|
3775
4075
|
|
|
3776
4076
|
|
|
4077
|
+
|
|
4078
|
+
|
|
4079
|
+
|
|
4080
|
+
|
|
4081
|
+
|
|
4082
|
+
|
|
4083
|
+
|
|
4084
|
+
|
|
3777
4085
|
|
|
3778
4086
|
|
|
3779
4087
|
|
|
@@ -3877,6 +4185,14 @@ var DirectedGraph = class _DirectedGraph extends AbstractGraph {
|
|
|
3877
4185
|
|
|
3878
4186
|
|
|
3879
4187
|
|
|
4188
|
+
|
|
4189
|
+
|
|
4190
|
+
|
|
4191
|
+
|
|
4192
|
+
|
|
4193
|
+
|
|
4194
|
+
|
|
4195
|
+
|
|
3880
4196
|
|
|
3881
4197
|
|
|
3882
4198
|
|
|
@@ -3961,6 +4277,14 @@ var DirectedGraph = class _DirectedGraph extends AbstractGraph {
|
|
|
3961
4277
|
|
|
3962
4278
|
|
|
3963
4279
|
|
|
4280
|
+
|
|
4281
|
+
|
|
4282
|
+
|
|
4283
|
+
|
|
4284
|
+
|
|
4285
|
+
|
|
4286
|
+
|
|
4287
|
+
|
|
3964
4288
|
|
|
3965
4289
|
|
|
3966
4290
|
|
|
@@ -4007,6 +4331,14 @@ var DirectedGraph = class _DirectedGraph extends AbstractGraph {
|
|
|
4007
4331
|
|
|
4008
4332
|
|
|
4009
4333
|
|
|
4334
|
+
|
|
4335
|
+
|
|
4336
|
+
|
|
4337
|
+
|
|
4338
|
+
|
|
4339
|
+
|
|
4340
|
+
|
|
4341
|
+
|
|
4010
4342
|
|
|
4011
4343
|
|
|
4012
4344
|
|
|
@@ -4106,6 +4438,14 @@ var DirectedGraph = class _DirectedGraph extends AbstractGraph {
|
|
|
4106
4438
|
|
|
4107
4439
|
|
|
4108
4440
|
|
|
4441
|
+
|
|
4442
|
+
|
|
4443
|
+
|
|
4444
|
+
|
|
4445
|
+
|
|
4446
|
+
|
|
4447
|
+
|
|
4448
|
+
|
|
4109
4449
|
|
|
4110
4450
|
|
|
4111
4451
|
|
|
@@ -4208,6 +4548,14 @@ var DirectedGraph = class _DirectedGraph extends AbstractGraph {
|
|
|
4208
4548
|
|
|
4209
4549
|
|
|
4210
4550
|
|
|
4551
|
+
|
|
4552
|
+
|
|
4553
|
+
|
|
4554
|
+
|
|
4555
|
+
|
|
4556
|
+
|
|
4557
|
+
|
|
4558
|
+
|
|
4211
4559
|
|
|
4212
4560
|
|
|
4213
4561
|
|
|
@@ -4376,6 +4724,14 @@ var UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
|
|
|
4376
4724
|
|
|
4377
4725
|
|
|
4378
4726
|
|
|
4727
|
+
|
|
4728
|
+
|
|
4729
|
+
|
|
4730
|
+
|
|
4731
|
+
|
|
4732
|
+
|
|
4733
|
+
|
|
4734
|
+
|
|
4379
4735
|
|
|
4380
4736
|
|
|
4381
4737
|
|
|
@@ -4456,6 +4812,14 @@ var UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
|
|
|
4456
4812
|
|
|
4457
4813
|
|
|
4458
4814
|
|
|
4815
|
+
|
|
4816
|
+
|
|
4817
|
+
|
|
4818
|
+
|
|
4819
|
+
|
|
4820
|
+
|
|
4821
|
+
|
|
4822
|
+
|
|
4459
4823
|
|
|
4460
4824
|
|
|
4461
4825
|
|
|
@@ -4536,6 +4900,14 @@ var UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
|
|
|
4536
4900
|
|
|
4537
4901
|
|
|
4538
4902
|
|
|
4903
|
+
|
|
4904
|
+
|
|
4905
|
+
|
|
4906
|
+
|
|
4907
|
+
|
|
4908
|
+
|
|
4909
|
+
|
|
4910
|
+
|
|
4539
4911
|
|
|
4540
4912
|
|
|
4541
4913
|
|
|
@@ -4630,6 +5002,14 @@ var UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
|
|
|
4630
5002
|
|
|
4631
5003
|
|
|
4632
5004
|
|
|
5005
|
+
|
|
5006
|
+
|
|
5007
|
+
|
|
5008
|
+
|
|
5009
|
+
|
|
5010
|
+
|
|
5011
|
+
|
|
5012
|
+
|
|
4633
5013
|
|
|
4634
5014
|
|
|
4635
5015
|
|
|
@@ -4680,6 +5060,14 @@ var UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
|
|
|
4680
5060
|
|
|
4681
5061
|
|
|
4682
5062
|
|
|
5063
|
+
|
|
5064
|
+
|
|
5065
|
+
|
|
5066
|
+
|
|
5067
|
+
|
|
5068
|
+
|
|
5069
|
+
|
|
5070
|
+
|
|
4683
5071
|
|
|
4684
5072
|
|
|
4685
5073
|
|
|
@@ -4800,6 +5188,14 @@ var UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
|
|
|
4800
5188
|
|
|
4801
5189
|
|
|
4802
5190
|
|
|
5191
|
+
|
|
5192
|
+
|
|
5193
|
+
|
|
5194
|
+
|
|
5195
|
+
|
|
5196
|
+
|
|
5197
|
+
|
|
5198
|
+
|
|
4803
5199
|
|
|
4804
5200
|
|
|
4805
5201
|
|
|
@@ -4942,6 +5338,14 @@ var UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
|
|
|
4942
5338
|
|
|
4943
5339
|
|
|
4944
5340
|
|
|
5341
|
+
|
|
5342
|
+
|
|
5343
|
+
|
|
5344
|
+
|
|
5345
|
+
|
|
5346
|
+
|
|
5347
|
+
|
|
5348
|
+
|
|
4945
5349
|
|
|
4946
5350
|
|
|
4947
5351
|
|
|
@@ -5006,6 +5410,14 @@ var UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
|
|
|
5006
5410
|
|
|
5007
5411
|
|
|
5008
5412
|
|
|
5413
|
+
|
|
5414
|
+
|
|
5415
|
+
|
|
5416
|
+
|
|
5417
|
+
|
|
5418
|
+
|
|
5419
|
+
|
|
5420
|
+
|
|
5009
5421
|
|
|
5010
5422
|
|
|
5011
5423
|
|
|
@@ -5052,6 +5464,14 @@ var UndirectedGraph = class _UndirectedGraph extends AbstractGraph {
|
|
|
5052
5464
|
|
|
5053
5465
|
|
|
5054
5466
|
|
|
5467
|
+
|
|
5468
|
+
|
|
5469
|
+
|
|
5470
|
+
|
|
5471
|
+
|
|
5472
|
+
|
|
5473
|
+
|
|
5474
|
+
|
|
5055
5475
|
|
|
5056
5476
|
|
|
5057
5477
|
|