data-structure-typed 2.0.4 → 2.1.0
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 +3 -1
- package/COMMANDS.md +17 -0
- package/README.md +11 -11
- package/benchmark/report.html +13 -77
- package/benchmark/report.json +158 -190
- package/dist/cjs/data-structures/base/iterable-element-base.d.ts +186 -83
- package/dist/cjs/data-structures/base/iterable-element-base.js +149 -107
- package/dist/cjs/data-structures/base/iterable-element-base.js.map +1 -1
- package/dist/cjs/data-structures/base/iterable-entry-base.d.ts +95 -119
- package/dist/cjs/data-structures/base/iterable-entry-base.js +59 -116
- package/dist/cjs/data-structures/base/iterable-entry-base.js.map +1 -1
- package/dist/cjs/data-structures/base/linear-base.d.ts +250 -192
- package/dist/cjs/data-structures/base/linear-base.js +137 -274
- package/dist/cjs/data-structures/base/linear-base.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/avl-tree-counter.d.ts +126 -158
- package/dist/cjs/data-structures/binary-tree/avl-tree-counter.js +171 -205
- package/dist/cjs/data-structures/binary-tree/avl-tree-counter.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.d.ts +100 -69
- package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.js +135 -87
- package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/avl-tree.d.ts +138 -149
- package/dist/cjs/data-structures/binary-tree/avl-tree.js +208 -195
- package/dist/cjs/data-structures/binary-tree/avl-tree.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/binary-tree.d.ts +476 -632
- package/dist/cjs/data-structures/binary-tree/binary-tree.js +608 -875
- package/dist/cjs/data-structures/binary-tree/binary-tree.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/bst.d.ts +258 -306
- package/dist/cjs/data-structures/binary-tree/bst.js +505 -481
- package/dist/cjs/data-structures/binary-tree/bst.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/red-black-tree.d.ts +107 -179
- package/dist/cjs/data-structures/binary-tree/red-black-tree.js +114 -209
- package/dist/cjs/data-structures/binary-tree/red-black-tree.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/tree-counter.d.ts +132 -154
- package/dist/cjs/data-structures/binary-tree/tree-counter.js +172 -203
- package/dist/cjs/data-structures/binary-tree/tree-counter.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/tree-multi-map.d.ts +72 -69
- package/dist/cjs/data-structures/binary-tree/tree-multi-map.js +105 -85
- package/dist/cjs/data-structures/binary-tree/tree-multi-map.js.map +1 -1
- package/dist/cjs/data-structures/graph/abstract-graph.d.ts +238 -233
- package/dist/cjs/data-structures/graph/abstract-graph.js +267 -237
- package/dist/cjs/data-structures/graph/abstract-graph.js.map +1 -1
- package/dist/cjs/data-structures/graph/directed-graph.d.ts +108 -224
- package/dist/cjs/data-structures/graph/directed-graph.js +146 -233
- package/dist/cjs/data-structures/graph/directed-graph.js.map +1 -1
- package/dist/cjs/data-structures/graph/map-graph.d.ts +49 -55
- package/dist/cjs/data-structures/graph/map-graph.js +56 -59
- package/dist/cjs/data-structures/graph/map-graph.js.map +1 -1
- package/dist/cjs/data-structures/graph/undirected-graph.d.ts +103 -146
- package/dist/cjs/data-structures/graph/undirected-graph.js +129 -149
- package/dist/cjs/data-structures/graph/undirected-graph.js.map +1 -1
- package/dist/cjs/data-structures/hash/hash-map.d.ts +164 -338
- package/dist/cjs/data-structures/hash/hash-map.js +270 -457
- package/dist/cjs/data-structures/hash/hash-map.js.map +1 -1
- package/dist/cjs/data-structures/heap/heap.d.ts +214 -289
- package/dist/cjs/data-structures/heap/heap.js +340 -349
- package/dist/cjs/data-structures/heap/heap.js.map +1 -1
- package/dist/cjs/data-structures/heap/max-heap.d.ts +11 -47
- package/dist/cjs/data-structures/heap/max-heap.js +11 -66
- package/dist/cjs/data-structures/heap/max-heap.js.map +1 -1
- package/dist/cjs/data-structures/heap/min-heap.d.ts +12 -47
- package/dist/cjs/data-structures/heap/min-heap.js +11 -66
- package/dist/cjs/data-structures/heap/min-heap.js.map +1 -1
- package/dist/cjs/data-structures/linked-list/doubly-linked-list.d.ts +231 -347
- package/dist/cjs/data-structures/linked-list/doubly-linked-list.js +368 -494
- package/dist/cjs/data-structures/linked-list/doubly-linked-list.js.map +1 -1
- package/dist/cjs/data-structures/linked-list/singly-linked-list.d.ts +261 -310
- package/dist/cjs/data-structures/linked-list/singly-linked-list.js +447 -466
- package/dist/cjs/data-structures/linked-list/singly-linked-list.js.map +1 -1
- package/dist/cjs/data-structures/linked-list/skip-linked-list.d.ts +0 -107
- package/dist/cjs/data-structures/linked-list/skip-linked-list.js +0 -100
- package/dist/cjs/data-structures/linked-list/skip-linked-list.js.map +1 -1
- package/dist/cjs/data-structures/priority-queue/max-priority-queue.d.ts +12 -56
- package/dist/cjs/data-structures/priority-queue/max-priority-queue.js +11 -78
- package/dist/cjs/data-structures/priority-queue/max-priority-queue.js.map +1 -1
- package/dist/cjs/data-structures/priority-queue/min-priority-queue.d.ts +11 -57
- package/dist/cjs/data-structures/priority-queue/min-priority-queue.js +10 -79
- package/dist/cjs/data-structures/priority-queue/min-priority-queue.js.map +1 -1
- package/dist/cjs/data-structures/priority-queue/priority-queue.d.ts +2 -61
- package/dist/cjs/data-structures/priority-queue/priority-queue.js +8 -83
- package/dist/cjs/data-structures/priority-queue/priority-queue.js.map +1 -1
- package/dist/cjs/data-structures/queue/deque.d.ts +227 -254
- package/dist/cjs/data-structures/queue/deque.js +309 -348
- package/dist/cjs/data-structures/queue/deque.js.map +1 -1
- package/dist/cjs/data-structures/queue/queue.d.ts +180 -201
- package/dist/cjs/data-structures/queue/queue.js +265 -248
- package/dist/cjs/data-structures/queue/queue.js.map +1 -1
- package/dist/cjs/data-structures/stack/stack.d.ts +124 -102
- package/dist/cjs/data-structures/stack/stack.js +181 -125
- package/dist/cjs/data-structures/stack/stack.js.map +1 -1
- package/dist/cjs/data-structures/trie/trie.d.ts +164 -165
- package/dist/cjs/data-structures/trie/trie.js +189 -172
- package/dist/cjs/data-structures/trie/trie.js.map +1 -1
- package/dist/cjs/interfaces/binary-tree.d.ts +56 -6
- package/dist/cjs/interfaces/graph.d.ts +16 -0
- package/dist/cjs/types/data-structures/base/base.d.ts +1 -1
- package/dist/cjs/types/data-structures/graph/abstract-graph.d.ts +4 -0
- package/dist/cjs/types/utils/utils.d.ts +6 -6
- package/dist/cjs/utils/utils.d.ts +110 -49
- package/dist/cjs/utils/utils.js +148 -73
- package/dist/cjs/utils/utils.js.map +1 -1
- package/dist/esm/data-structures/base/iterable-element-base.d.ts +186 -83
- package/dist/esm/data-structures/base/iterable-element-base.js +155 -107
- package/dist/esm/data-structures/base/iterable-element-base.js.map +1 -1
- package/dist/esm/data-structures/base/iterable-entry-base.d.ts +95 -119
- package/dist/esm/data-structures/base/iterable-entry-base.js +59 -116
- package/dist/esm/data-structures/base/iterable-entry-base.js.map +1 -1
- package/dist/esm/data-structures/base/linear-base.d.ts +250 -192
- package/dist/esm/data-structures/base/linear-base.js +137 -274
- package/dist/esm/data-structures/base/linear-base.js.map +1 -1
- package/dist/esm/data-structures/binary-tree/avl-tree-counter.d.ts +126 -158
- package/dist/esm/data-structures/binary-tree/avl-tree-counter.js +171 -212
- package/dist/esm/data-structures/binary-tree/avl-tree-counter.js.map +1 -1
- package/dist/esm/data-structures/binary-tree/avl-tree-multi-map.d.ts +100 -69
- package/dist/esm/data-structures/binary-tree/avl-tree-multi-map.js +133 -94
- package/dist/esm/data-structures/binary-tree/avl-tree-multi-map.js.map +1 -1
- package/dist/esm/data-structures/binary-tree/avl-tree.d.ts +138 -149
- package/dist/esm/data-structures/binary-tree/avl-tree.js +206 -200
- package/dist/esm/data-structures/binary-tree/avl-tree.js.map +1 -1
- package/dist/esm/data-structures/binary-tree/binary-tree.d.ts +476 -632
- package/dist/esm/data-structures/binary-tree/binary-tree.js +613 -885
- package/dist/esm/data-structures/binary-tree/binary-tree.js.map +1 -1
- package/dist/esm/data-structures/binary-tree/bst.d.ts +258 -306
- package/dist/esm/data-structures/binary-tree/bst.js +507 -487
- package/dist/esm/data-structures/binary-tree/bst.js.map +1 -1
- package/dist/esm/data-structures/binary-tree/red-black-tree.d.ts +107 -179
- package/dist/esm/data-structures/binary-tree/red-black-tree.js +114 -215
- package/dist/esm/data-structures/binary-tree/red-black-tree.js.map +1 -1
- package/dist/esm/data-structures/binary-tree/tree-counter.d.ts +132 -154
- package/dist/esm/data-structures/binary-tree/tree-counter.js +175 -209
- package/dist/esm/data-structures/binary-tree/tree-counter.js.map +1 -1
- package/dist/esm/data-structures/binary-tree/tree-multi-map.d.ts +72 -69
- package/dist/esm/data-structures/binary-tree/tree-multi-map.js +103 -92
- package/dist/esm/data-structures/binary-tree/tree-multi-map.js.map +1 -1
- package/dist/esm/data-structures/graph/abstract-graph.d.ts +238 -233
- package/dist/esm/data-structures/graph/abstract-graph.js +267 -237
- package/dist/esm/data-structures/graph/abstract-graph.js.map +1 -1
- package/dist/esm/data-structures/graph/directed-graph.d.ts +108 -224
- package/dist/esm/data-structures/graph/directed-graph.js +145 -233
- package/dist/esm/data-structures/graph/directed-graph.js.map +1 -1
- package/dist/esm/data-structures/graph/map-graph.d.ts +49 -55
- package/dist/esm/data-structures/graph/map-graph.js +56 -59
- package/dist/esm/data-structures/graph/map-graph.js.map +1 -1
- package/dist/esm/data-structures/graph/undirected-graph.d.ts +103 -146
- package/dist/esm/data-structures/graph/undirected-graph.js +128 -149
- package/dist/esm/data-structures/graph/undirected-graph.js.map +1 -1
- package/dist/esm/data-structures/hash/hash-map.d.ts +164 -338
- package/dist/esm/data-structures/hash/hash-map.js +270 -457
- package/dist/esm/data-structures/hash/hash-map.js.map +1 -1
- package/dist/esm/data-structures/heap/heap.d.ts +214 -289
- package/dist/esm/data-structures/heap/heap.js +329 -349
- package/dist/esm/data-structures/heap/heap.js.map +1 -1
- package/dist/esm/data-structures/heap/max-heap.d.ts +11 -47
- package/dist/esm/data-structures/heap/max-heap.js +11 -66
- package/dist/esm/data-structures/heap/max-heap.js.map +1 -1
- package/dist/esm/data-structures/heap/min-heap.d.ts +12 -47
- package/dist/esm/data-structures/heap/min-heap.js +11 -66
- package/dist/esm/data-structures/heap/min-heap.js.map +1 -1
- package/dist/esm/data-structures/linked-list/doubly-linked-list.d.ts +231 -347
- package/dist/esm/data-structures/linked-list/doubly-linked-list.js +368 -495
- package/dist/esm/data-structures/linked-list/doubly-linked-list.js.map +1 -1
- package/dist/esm/data-structures/linked-list/singly-linked-list.d.ts +261 -310
- package/dist/esm/data-structures/linked-list/singly-linked-list.js +448 -467
- package/dist/esm/data-structures/linked-list/singly-linked-list.js.map +1 -1
- package/dist/esm/data-structures/linked-list/skip-linked-list.d.ts +0 -107
- package/dist/esm/data-structures/linked-list/skip-linked-list.js +0 -100
- package/dist/esm/data-structures/linked-list/skip-linked-list.js.map +1 -1
- package/dist/esm/data-structures/priority-queue/max-priority-queue.d.ts +12 -56
- package/dist/esm/data-structures/priority-queue/max-priority-queue.js +11 -78
- package/dist/esm/data-structures/priority-queue/max-priority-queue.js.map +1 -1
- package/dist/esm/data-structures/priority-queue/min-priority-queue.d.ts +11 -57
- package/dist/esm/data-structures/priority-queue/min-priority-queue.js +10 -79
- package/dist/esm/data-structures/priority-queue/min-priority-queue.js.map +1 -1
- package/dist/esm/data-structures/priority-queue/priority-queue.d.ts +2 -61
- package/dist/esm/data-structures/priority-queue/priority-queue.js +8 -83
- package/dist/esm/data-structures/priority-queue/priority-queue.js.map +1 -1
- package/dist/esm/data-structures/queue/deque.d.ts +227 -254
- package/dist/esm/data-structures/queue/deque.js +313 -348
- package/dist/esm/data-structures/queue/deque.js.map +1 -1
- package/dist/esm/data-structures/queue/queue.d.ts +180 -201
- package/dist/esm/data-structures/queue/queue.js +263 -248
- package/dist/esm/data-structures/queue/queue.js.map +1 -1
- package/dist/esm/data-structures/stack/stack.d.ts +124 -102
- package/dist/esm/data-structures/stack/stack.js +181 -125
- package/dist/esm/data-structures/stack/stack.js.map +1 -1
- package/dist/esm/data-structures/trie/trie.d.ts +164 -165
- package/dist/esm/data-structures/trie/trie.js +193 -172
- package/dist/esm/data-structures/trie/trie.js.map +1 -1
- package/dist/esm/interfaces/binary-tree.d.ts +56 -6
- package/dist/esm/interfaces/graph.d.ts +16 -0
- package/dist/esm/types/data-structures/base/base.d.ts +1 -1
- package/dist/esm/types/data-structures/graph/abstract-graph.d.ts +4 -0
- package/dist/esm/types/utils/utils.d.ts +6 -6
- package/dist/esm/utils/utils.d.ts +110 -49
- package/dist/esm/utils/utils.js +139 -68
- package/dist/esm/utils/utils.js.map +1 -1
- package/dist/umd/data-structure-typed.js +4737 -6525
- package/dist/umd/data-structure-typed.min.js +8 -6
- package/dist/umd/data-structure-typed.min.js.map +1 -1
- package/package.json +3 -4
- package/src/data-structures/base/iterable-element-base.ts +238 -115
- package/src/data-structures/base/iterable-entry-base.ts +96 -120
- package/src/data-structures/base/linear-base.ts +271 -277
- package/src/data-structures/binary-tree/avl-tree-counter.ts +198 -216
- package/src/data-structures/binary-tree/avl-tree-multi-map.ts +192 -101
- package/src/data-structures/binary-tree/avl-tree.ts +239 -206
- package/src/data-structures/binary-tree/binary-tree.ts +677 -901
- package/src/data-structures/binary-tree/bst.ts +568 -570
- package/src/data-structures/binary-tree/red-black-tree.ts +161 -222
- package/src/data-structures/binary-tree/tree-counter.ts +199 -218
- package/src/data-structures/binary-tree/tree-multi-map.ts +131 -97
- package/src/data-structures/graph/abstract-graph.ts +339 -264
- package/src/data-structures/graph/directed-graph.ts +146 -236
- package/src/data-structures/graph/map-graph.ts +63 -60
- package/src/data-structures/graph/undirected-graph.ts +129 -152
- package/src/data-structures/hash/hash-map.ts +274 -496
- package/src/data-structures/heap/heap.ts +389 -402
- package/src/data-structures/heap/max-heap.ts +12 -76
- package/src/data-structures/heap/min-heap.ts +13 -76
- package/src/data-structures/linked-list/doubly-linked-list.ts +426 -530
- package/src/data-structures/linked-list/singly-linked-list.ts +495 -517
- package/src/data-structures/linked-list/skip-linked-list.ts +1 -108
- package/src/data-structures/priority-queue/max-priority-queue.ts +12 -87
- package/src/data-structures/priority-queue/min-priority-queue.ts +11 -88
- package/src/data-structures/priority-queue/priority-queue.ts +3 -92
- package/src/data-structures/queue/deque.ts +381 -357
- package/src/data-structures/queue/queue.ts +310 -264
- package/src/data-structures/stack/stack.ts +217 -131
- package/src/data-structures/trie/trie.ts +240 -175
- package/src/interfaces/binary-tree.ts +240 -6
- package/src/interfaces/graph.ts +37 -0
- package/src/types/data-structures/base/base.ts +5 -5
- package/src/types/data-structures/graph/abstract-graph.ts +5 -0
- package/src/types/utils/utils.ts +9 -5
- package/src/utils/utils.ts +152 -86
- package/test/integration/index.html +1 -1
- package/test/performance/benchmark-runner.ts +528 -0
- package/test/performance/reportor.mjs +43 -43
- package/test/performance/runner-config.json +39 -0
- package/test/performance/single-suite-runner.ts +69 -0
- package/test/unit/data-structures/binary-tree/avl-tree-counter.test.ts +3 -3
- package/test/unit/data-structures/binary-tree/avl-tree-multi-map.test.ts +5 -5
- package/test/unit/data-structures/binary-tree/avl-tree.test.ts +4 -4
- package/test/unit/data-structures/binary-tree/binary-tree.test.ts +350 -90
- package/test/unit/data-structures/binary-tree/bst.test.ts +84 -5
- package/test/unit/data-structures/binary-tree/red-black-tree.test.ts +2 -2
- package/test/unit/data-structures/binary-tree/tree-counter.test.ts +25 -24
- package/test/unit/data-structures/binary-tree/tree-multi-map.test.ts +3 -3
- package/test/unit/data-structures/graph/abstract-graph.test.ts +0 -4
- package/test/unit/data-structures/graph/directed-graph.test.ts +1 -1
- package/test/unit/data-structures/heap/heap.test.ts +14 -21
- package/test/unit/data-structures/heap/max-heap.test.ts +5 -9
- package/test/unit/data-structures/heap/min-heap.test.ts +1 -4
- package/test/unit/data-structures/linked-list/doubly-linked-list.test.ts +14 -14
- package/test/unit/data-structures/linked-list/singly-linked-list.test.ts +0 -7
- package/test/unit/data-structures/priority-queue/max-priority-queue.test.ts +8 -11
- package/test/unit/data-structures/priority-queue/min-priority-queue.test.ts +1 -4
- package/test/unit/data-structures/priority-queue/priority-queue.test.ts +1 -4
- package/test/unit/data-structures/queue/queue.test.ts +4 -5
- package/test/unit/utils/utils.test.ts +0 -1
- package/test/performance/data-structures/binary-tree/avl-tree.test.mjs +0 -71
- package/test/performance/data-structures/binary-tree/red-black-tree.test.mjs +0 -81
|
@@ -1,47 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* data-structure-typed
|
|
3
|
+
*
|
|
4
|
+
* @author Pablo Zeng
|
|
5
|
+
* @copyright Copyright (c) 2022 Pablo Zeng <zrwusa@gmail.com>
|
|
6
|
+
* @license MIT License
|
|
7
|
+
*/
|
|
1
8
|
import type { MapGraphCoordinate, VertexKey } from '../../types';
|
|
2
9
|
import { DirectedEdge, DirectedGraph, DirectedVertex } from './directed-graph';
|
|
3
10
|
export declare class MapVertex<V = any> extends DirectedVertex<V> {
|
|
4
11
|
lat: number;
|
|
5
12
|
long: number;
|
|
6
|
-
/**
|
|
7
|
-
* The constructor function initializes an object with an key, latitude, longitude, and an optional value.
|
|
8
|
-
* @param {VertexKey} key - The `key` parameter is of type `VertexKey` and represents the identifier of the vertex.
|
|
9
|
-
* @param {number} lat - The "lat" parameter represents the latitude of a vertex. Latitude is a geographic coordinate
|
|
10
|
-
* that specifies the north-south position of a point on the Earth's surface. It is measured in degrees, with positive
|
|
11
|
-
* values representing points north of the equator and negative values representing points south of the equator.
|
|
12
|
-
* @param {number} long - The "long" parameter represents the longitude of a location. Longitude is a geographic
|
|
13
|
-
* coordinate that specifies the east-west position of a point on the Earth's surface. It is measured in degrees, with
|
|
14
|
-
* values ranging from -180 to 180.
|
|
15
|
-
* @param {V} [value] - The "value" parameter is an optional value of type V. It is not required to be provided when
|
|
16
|
-
* creating an instance of the class.
|
|
17
|
-
*/
|
|
18
13
|
constructor(key: VertexKey, value: V, lat: number, long: number);
|
|
19
14
|
}
|
|
20
15
|
export declare class MapEdge<E = any> extends DirectedEdge<E> {
|
|
21
|
-
/**
|
|
22
|
-
* The constructor function initializes a new instance of a class with the given source, destination, weight, and
|
|
23
|
-
* value.
|
|
24
|
-
* @param {VertexKey} src - The `src` parameter is the source vertex ID. It represents the starting point of an edge in
|
|
25
|
-
* a graph.
|
|
26
|
-
* @param {VertexKey} dest - The `dest` parameter is the identifier of the destination vertex for an edge.
|
|
27
|
-
* @param {number} [weight] - The weight parameter is an optional number that represents the weight of the edge.
|
|
28
|
-
* @param {E} [value] - The "value" parameter is an optional parameter of type E. It is used to store additional
|
|
29
|
-
* information or data associated with the edge.
|
|
30
|
-
*/
|
|
31
16
|
constructor(src: VertexKey, dest: VertexKey, weight?: number, value?: E);
|
|
32
17
|
}
|
|
33
18
|
/**
|
|
34
|
-
*
|
|
19
|
+
* Directed graph variant carrying geospatial coordinates.
|
|
20
|
+
* @template V - Vertex value type.
|
|
21
|
+
* @template E - Edge value type.
|
|
22
|
+
* @template VO - Concrete vertex class (MapVertex<V>).
|
|
23
|
+
* @template EO - Concrete edge class (MapEdge<E>).
|
|
24
|
+
* @remarks Time O(1), Space O(1)
|
|
25
|
+
* @example examples will be generated by unit test
|
|
35
26
|
*/
|
|
36
27
|
export declare class MapGraph<V = any, E = any, VO extends MapVertex<V> = MapVertex<V>, EO extends MapEdge<E> = MapEdge<E>> extends DirectedGraph<V, E, VO, EO> {
|
|
37
28
|
/**
|
|
38
|
-
*
|
|
39
|
-
* @param
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
* @param {MapGraphCoordinate} [bottomRight] - The `bottomRight` parameter is an optional parameter of type
|
|
43
|
-
* `MapGraphCoordinate`. It represents the bottom right coordinate of a map graph. If this parameter is not provided,
|
|
44
|
-
* it will default to `undefined`.
|
|
29
|
+
* Construct a MapGraph.
|
|
30
|
+
* @param originCoord - Origin coordinate `[lat, long]` used as default.
|
|
31
|
+
* @param bottomRight - Optional bottom-right coordinate for bounding boxes.
|
|
32
|
+
* @remarks Time O(1), Space O(1)
|
|
45
33
|
*/
|
|
46
34
|
constructor(originCoord: MapGraphCoordinate, bottomRight?: MapGraphCoordinate);
|
|
47
35
|
protected _originCoord: MapGraphCoordinate;
|
|
@@ -49,36 +37,42 @@ export declare class MapGraph<V = any, E = any, VO extends MapVertex<V> = MapVer
|
|
|
49
37
|
protected _bottomRight: MapGraphCoordinate | undefined;
|
|
50
38
|
get bottomRight(): MapGraphCoordinate | undefined;
|
|
51
39
|
/**
|
|
52
|
-
*
|
|
53
|
-
* @param
|
|
54
|
-
*
|
|
55
|
-
* @param
|
|
56
|
-
*
|
|
57
|
-
* @
|
|
58
|
-
*
|
|
59
|
-
* @param {number} long - The `long` parameter represents the longitude coordinate of the vertex.
|
|
60
|
-
* @returns The method is returning a new instance of the `MapVertex` class, casted as type `VO`.
|
|
40
|
+
* Create a map vertex with optional coordinates.
|
|
41
|
+
* @param key - Vertex identifier.
|
|
42
|
+
* @param value - Optional payload.
|
|
43
|
+
* @param lat - Latitude (defaults to `originCoord[0]`).
|
|
44
|
+
* @param long - Longitude (defaults to `originCoord[1]`).
|
|
45
|
+
* @returns MapVertex instance.
|
|
46
|
+
* @remarks Time O(1), Space O(1)
|
|
61
47
|
*/
|
|
62
48
|
createVertex(key: VertexKey, value?: V, lat?: number, long?: number): VO;
|
|
63
49
|
/**
|
|
64
|
-
*
|
|
65
|
-
* @param
|
|
66
|
-
* @param
|
|
67
|
-
*
|
|
68
|
-
* @param
|
|
69
|
-
*
|
|
70
|
-
*
|
|
71
|
-
* @param [value] - The `value` parameter is an optional value that can be assigned to the edge. It can be of any type,
|
|
72
|
-
* depending on the specific implementation of the `MapEdge` class.
|
|
73
|
-
* @returns a new instance of the `MapEdge` class, cast as type `EO`.
|
|
50
|
+
* Create a map edge (directed) with optional weight/value.
|
|
51
|
+
* @param src - Source key.
|
|
52
|
+
* @param dest - Destination key.
|
|
53
|
+
* @param weight - Edge weight.
|
|
54
|
+
* @param value - Edge payload.
|
|
55
|
+
* @returns MapEdge instance.
|
|
56
|
+
* @remarks Time O(1), Space O(1)
|
|
74
57
|
*/
|
|
75
58
|
createEdge(src: VertexKey, dest: VertexKey, weight?: number, value?: E): EO;
|
|
76
59
|
/**
|
|
77
|
-
*
|
|
78
|
-
*
|
|
79
|
-
*
|
|
80
|
-
|
|
81
|
-
|
|
60
|
+
* Deep clone as the same concrete class.
|
|
61
|
+
* @returns A new graph of the same concrete class (`this` type).
|
|
62
|
+
* @remarks Time O(V + E), Space O(V + E)
|
|
63
|
+
*/
|
|
64
|
+
clone(): this;
|
|
65
|
+
/**
|
|
66
|
+
* Include `originCoord` and `bottomRight` so `clone()/filter()` preserve geospatial settings.
|
|
67
|
+
* @returns Options bag extending super snapshot.
|
|
68
|
+
* @remarks Time O(1), Space O(1)
|
|
69
|
+
*/
|
|
70
|
+
protected _snapshotOptions(): Record<string, unknown>;
|
|
71
|
+
/**
|
|
72
|
+
* Re-create a same-species MapGraph instance from snapshot options.
|
|
73
|
+
* @param options - Snapshot options providing `originCoord`/`bottomRight`.
|
|
74
|
+
* @returns Empty MapGraph instance of `this` type.
|
|
75
|
+
* @remarks Time O(1), Space O(1)
|
|
82
76
|
*/
|
|
83
|
-
|
|
77
|
+
protected _createInstance(options?: Partial<Record<string, unknown>>): this;
|
|
84
78
|
}
|
|
@@ -1,20 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* data-structure-typed
|
|
4
|
+
*
|
|
5
|
+
* @author Pablo Zeng
|
|
6
|
+
* @copyright Copyright (c) 2022 Pablo Zeng <zrwusa@gmail.com>
|
|
7
|
+
* @license MIT License
|
|
8
|
+
*/
|
|
2
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
10
|
exports.MapGraph = exports.MapEdge = exports.MapVertex = void 0;
|
|
4
11
|
const directed_graph_1 = require("./directed-graph");
|
|
5
12
|
class MapVertex extends directed_graph_1.DirectedVertex {
|
|
6
|
-
/**
|
|
7
|
-
* The constructor function initializes an object with an key, latitude, longitude, and an optional value.
|
|
8
|
-
* @param {VertexKey} key - The `key` parameter is of type `VertexKey` and represents the identifier of the vertex.
|
|
9
|
-
* @param {number} lat - The "lat" parameter represents the latitude of a vertex. Latitude is a geographic coordinate
|
|
10
|
-
* that specifies the north-south position of a point on the Earth's surface. It is measured in degrees, with positive
|
|
11
|
-
* values representing points north of the equator and negative values representing points south of the equator.
|
|
12
|
-
* @param {number} long - The "long" parameter represents the longitude of a location. Longitude is a geographic
|
|
13
|
-
* coordinate that specifies the east-west position of a point on the Earth's surface. It is measured in degrees, with
|
|
14
|
-
* values ranging from -180 to 180.
|
|
15
|
-
* @param {V} [value] - The "value" parameter is an optional value of type V. It is not required to be provided when
|
|
16
|
-
* creating an instance of the class.
|
|
17
|
-
*/
|
|
18
13
|
constructor(key, value, lat, long) {
|
|
19
14
|
super(key, value);
|
|
20
15
|
this.lat = lat;
|
|
@@ -23,33 +18,26 @@ class MapVertex extends directed_graph_1.DirectedVertex {
|
|
|
23
18
|
}
|
|
24
19
|
exports.MapVertex = MapVertex;
|
|
25
20
|
class MapEdge extends directed_graph_1.DirectedEdge {
|
|
26
|
-
/**
|
|
27
|
-
* The constructor function initializes a new instance of a class with the given source, destination, weight, and
|
|
28
|
-
* value.
|
|
29
|
-
* @param {VertexKey} src - The `src` parameter is the source vertex ID. It represents the starting point of an edge in
|
|
30
|
-
* a graph.
|
|
31
|
-
* @param {VertexKey} dest - The `dest` parameter is the identifier of the destination vertex for an edge.
|
|
32
|
-
* @param {number} [weight] - The weight parameter is an optional number that represents the weight of the edge.
|
|
33
|
-
* @param {E} [value] - The "value" parameter is an optional parameter of type E. It is used to store additional
|
|
34
|
-
* information or data associated with the edge.
|
|
35
|
-
*/
|
|
36
21
|
constructor(src, dest, weight, value) {
|
|
37
22
|
super(src, dest, weight, value);
|
|
38
23
|
}
|
|
39
24
|
}
|
|
40
25
|
exports.MapEdge = MapEdge;
|
|
41
26
|
/**
|
|
42
|
-
*
|
|
27
|
+
* Directed graph variant carrying geospatial coordinates.
|
|
28
|
+
* @template V - Vertex value type.
|
|
29
|
+
* @template E - Edge value type.
|
|
30
|
+
* @template VO - Concrete vertex class (MapVertex<V>).
|
|
31
|
+
* @template EO - Concrete edge class (MapEdge<E>).
|
|
32
|
+
* @remarks Time O(1), Space O(1)
|
|
33
|
+
* @example examples will be generated by unit test
|
|
43
34
|
*/
|
|
44
35
|
class MapGraph extends directed_graph_1.DirectedGraph {
|
|
45
36
|
/**
|
|
46
|
-
*
|
|
47
|
-
* @param
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
* @param {MapGraphCoordinate} [bottomRight] - The `bottomRight` parameter is an optional parameter of type
|
|
51
|
-
* `MapGraphCoordinate`. It represents the bottom right coordinate of a map graph. If this parameter is not provided,
|
|
52
|
-
* it will default to `undefined`.
|
|
37
|
+
* Construct a MapGraph.
|
|
38
|
+
* @param originCoord - Origin coordinate `[lat, long]` used as default.
|
|
39
|
+
* @param bottomRight - Optional bottom-right coordinate for bounding boxes.
|
|
40
|
+
* @remarks Time O(1), Space O(1)
|
|
53
41
|
*/
|
|
54
42
|
constructor(originCoord, bottomRight) {
|
|
55
43
|
super();
|
|
@@ -64,47 +52,56 @@ class MapGraph extends directed_graph_1.DirectedGraph {
|
|
|
64
52
|
return this._bottomRight;
|
|
65
53
|
}
|
|
66
54
|
/**
|
|
67
|
-
*
|
|
68
|
-
* @param
|
|
69
|
-
*
|
|
70
|
-
* @param
|
|
71
|
-
*
|
|
72
|
-
* @
|
|
73
|
-
*
|
|
74
|
-
* @param {number} long - The `long` parameter represents the longitude coordinate of the vertex.
|
|
75
|
-
* @returns The method is returning a new instance of the `MapVertex` class, casted as type `VO`.
|
|
55
|
+
* Create a map vertex with optional coordinates.
|
|
56
|
+
* @param key - Vertex identifier.
|
|
57
|
+
* @param value - Optional payload.
|
|
58
|
+
* @param lat - Latitude (defaults to `originCoord[0]`).
|
|
59
|
+
* @param long - Longitude (defaults to `originCoord[1]`).
|
|
60
|
+
* @returns MapVertex instance.
|
|
61
|
+
* @remarks Time O(1), Space O(1)
|
|
76
62
|
*/
|
|
77
63
|
createVertex(key, value, lat = this.originCoord[0], long = this.originCoord[1]) {
|
|
78
64
|
return new MapVertex(key, value, lat, long);
|
|
79
65
|
}
|
|
80
66
|
/**
|
|
81
|
-
*
|
|
82
|
-
* @param
|
|
83
|
-
* @param
|
|
84
|
-
*
|
|
85
|
-
* @param
|
|
86
|
-
*
|
|
87
|
-
*
|
|
88
|
-
* @param [value] - The `value` parameter is an optional value that can be assigned to the edge. It can be of any type,
|
|
89
|
-
* depending on the specific implementation of the `MapEdge` class.
|
|
90
|
-
* @returns a new instance of the `MapEdge` class, cast as type `EO`.
|
|
67
|
+
* Create a map edge (directed) with optional weight/value.
|
|
68
|
+
* @param src - Source key.
|
|
69
|
+
* @param dest - Destination key.
|
|
70
|
+
* @param weight - Edge weight.
|
|
71
|
+
* @param value - Edge payload.
|
|
72
|
+
* @returns MapEdge instance.
|
|
73
|
+
* @remarks Time O(1), Space O(1)
|
|
91
74
|
*/
|
|
92
75
|
createEdge(src, dest, weight, value) {
|
|
93
76
|
return new MapEdge(src, dest, weight, value);
|
|
94
77
|
}
|
|
95
78
|
/**
|
|
96
|
-
*
|
|
97
|
-
*
|
|
98
|
-
*
|
|
99
|
-
*
|
|
100
|
-
* @return A mapgraph<v, e, vo, eo>
|
|
79
|
+
* Deep clone as the same concrete class.
|
|
80
|
+
* @returns A new graph of the same concrete class (`this` type).
|
|
81
|
+
* @remarks Time O(V + E), Space O(V + E)
|
|
101
82
|
*/
|
|
102
83
|
clone() {
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
84
|
+
return super.clone();
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Include `originCoord` and `bottomRight` so `clone()/filter()` preserve geospatial settings.
|
|
88
|
+
* @returns Options bag extending super snapshot.
|
|
89
|
+
* @remarks Time O(1), Space O(1)
|
|
90
|
+
*/
|
|
91
|
+
_snapshotOptions() {
|
|
92
|
+
return Object.assign(Object.assign({}, super._snapshotOptions()), { originCoord: this.originCoord, bottomRight: this.bottomRight });
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Re-create a same-species MapGraph instance from snapshot options.
|
|
96
|
+
* @param options - Snapshot options providing `originCoord`/`bottomRight`.
|
|
97
|
+
* @returns Empty MapGraph instance of `this` type.
|
|
98
|
+
* @remarks Time O(1), Space O(1)
|
|
99
|
+
*/
|
|
100
|
+
_createInstance(options) {
|
|
101
|
+
const { originCoord, bottomRight } = (options || {});
|
|
102
|
+
const oc = (originCoord !== null && originCoord !== void 0 ? originCoord : this.originCoord);
|
|
103
|
+
const br = (bottomRight !== null && bottomRight !== void 0 ? bottomRight : this.bottomRight);
|
|
104
|
+
return new MapGraph(oc, br);
|
|
108
105
|
}
|
|
109
106
|
}
|
|
110
107
|
exports.MapGraph = MapGraph;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map-graph.js","sourceRoot":"","sources":["../../../../src/data-structures/graph/map-graph.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"map-graph.js","sourceRoot":"","sources":["../../../../src/data-structures/graph/map-graph.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAGH,qDAA+E;AAE/E,MAAa,SAAmB,SAAQ,+BAAiB;IAIvD,YAAY,GAAc,EAAE,KAAQ,EAAE,GAAW,EAAE,IAAY;QAC7D,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAClB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AATD,8BASC;AAED,MAAa,OAAiB,SAAQ,6BAAe;IACnD,YAAY,GAAc,EAAE,IAAe,EAAE,MAAe,EAAE,KAAS;QACrE,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;CACF;AAJD,0BAIC;AAED;;;;;;;;GAQG;AACH,MAAa,QAKX,SAAQ,8BAA2B;IACnC;;;;;OAKG;IACH,YAAY,WAA+B,EAAE,WAAgC;QAC3E,KAAK,EAAE,CAAC;QAKA,iBAAY,GAAuB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAJlD,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAChC,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;IAClC,CAAC;IAID,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAID,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED;;;;;;;;OAQG;IACM,YAAY,CACnB,GAAc,EACd,KAAS,EACT,MAAc,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EACjC,OAAe,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QAElC,OAAO,IAAI,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAO,CAAC;IACpD,CAAC;IAED;;;;;;;;OAQG;IACM,UAAU,CAAC,GAAc,EAAE,IAAe,EAAE,MAAe,EAAE,KAAS;QAC7E,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAO,CAAC;IACrD,CAAC;IAED;;;;OAIG;IACM,KAAK;QACZ,OAAO,KAAK,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;IAED;;;;OAIG;IACgB,gBAAgB;QACjC,uCAAa,KAAK,CAAC,gBAAgB,EAAU,KAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,IAAG;IAChH,CAAC;IAED;;;;;OAKG;IACgB,eAAe,CAAC,OAA0C;QAC3E,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE,CAGlD,CAAC;QACF,MAAM,EAAE,GAAG,CAAC,WAAW,aAAX,WAAW,cAAX,WAAW,GAAI,IAAI,CAAC,WAAW,CAAqB,CAAC;QACjE,MAAM,EAAE,GAAG,CAAC,WAAW,aAAX,WAAW,cAAX,WAAW,GAAI,IAAI,CAAC,WAAW,CAAiC,CAAC;QAC7E,OAAO,IAAI,QAAQ,CAAe,EAAE,EAAE,EAAE,CAAS,CAAC;IACpD,CAAC;CACF;AA9FD,4BA8FC"}
|