data-structure-typed 2.6.0 → 2.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (160) hide show
  1. package/.github/workflows/ci.yml +7 -2
  2. package/.github/workflows/release-package.yml +9 -2
  3. package/CHANGELOG.md +9 -1
  4. package/dist/cjs/binary-tree.cjs +2927 -23688
  5. package/dist/cjs/graph.cjs +845 -2634
  6. package/dist/cjs/hash.cjs +185 -616
  7. package/dist/cjs/heap.cjs +266 -818
  8. package/dist/cjs/index.cjs +5116 -31358
  9. package/dist/cjs/linked-list.cjs +644 -2615
  10. package/dist/cjs/matrix.cjs +220 -535
  11. package/dist/cjs/priority-queue.cjs +266 -818
  12. package/dist/cjs/queue.cjs +637 -2343
  13. package/dist/cjs/stack.cjs +124 -530
  14. package/dist/cjs/trie.cjs +145 -592
  15. package/dist/cjs-legacy/binary-tree.cjs +4352 -25113
  16. package/dist/cjs-legacy/graph.cjs +847 -2636
  17. package/dist/cjs-legacy/hash.cjs +181 -612
  18. package/dist/cjs-legacy/heap.cjs +266 -818
  19. package/dist/cjs-legacy/index.cjs +6657 -32899
  20. package/dist/cjs-legacy/linked-list.cjs +640 -2611
  21. package/dist/cjs-legacy/matrix.cjs +220 -535
  22. package/dist/cjs-legacy/priority-queue.cjs +266 -818
  23. package/dist/cjs-legacy/queue.cjs +634 -2340
  24. package/dist/cjs-legacy/stack.cjs +124 -530
  25. package/dist/cjs-legacy/trie.cjs +145 -592
  26. package/dist/esm/binary-tree.mjs +2927 -23688
  27. package/dist/esm/graph.mjs +845 -2634
  28. package/dist/esm/hash.mjs +185 -616
  29. package/dist/esm/heap.mjs +266 -818
  30. package/dist/esm/index.mjs +5116 -31358
  31. package/dist/esm/linked-list.mjs +644 -2615
  32. package/dist/esm/matrix.mjs +220 -535
  33. package/dist/esm/priority-queue.mjs +266 -818
  34. package/dist/esm/queue.mjs +637 -2343
  35. package/dist/esm/stack.mjs +124 -530
  36. package/dist/esm/trie.mjs +145 -592
  37. package/dist/esm-legacy/binary-tree.mjs +4352 -25113
  38. package/dist/esm-legacy/graph.mjs +847 -2636
  39. package/dist/esm-legacy/hash.mjs +181 -612
  40. package/dist/esm-legacy/heap.mjs +266 -818
  41. package/dist/esm-legacy/index.mjs +6657 -32899
  42. package/dist/esm-legacy/linked-list.mjs +640 -2611
  43. package/dist/esm-legacy/matrix.mjs +220 -535
  44. package/dist/esm-legacy/priority-queue.mjs +266 -818
  45. package/dist/esm-legacy/queue.mjs +634 -2340
  46. package/dist/esm-legacy/stack.mjs +124 -530
  47. package/dist/esm-legacy/trie.mjs +145 -592
  48. package/dist/types/data-structures/binary-tree/avl-tree.d.ts +29 -500
  49. package/dist/types/data-structures/binary-tree/binary-indexed-tree.d.ts +38 -563
  50. package/dist/types/data-structures/binary-tree/binary-tree.d.ts +230 -1212
  51. package/dist/types/data-structures/binary-tree/bst.d.ts +124 -1063
  52. package/dist/types/data-structures/binary-tree/red-black-tree.d.ts +99 -854
  53. package/dist/types/data-structures/binary-tree/segment-tree.d.ts +62 -314
  54. package/dist/types/data-structures/binary-tree/tree-map.d.ts +366 -5057
  55. package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +277 -4885
  56. package/dist/types/data-structures/binary-tree/tree-multi-set.d.ts +253 -3929
  57. package/dist/types/data-structures/binary-tree/tree-set.d.ts +261 -4782
  58. package/dist/types/data-structures/graph/abstract-graph.d.ts +44 -44
  59. package/dist/types/data-structures/graph/directed-graph.d.ts +130 -527
  60. package/dist/types/data-structures/graph/undirected-graph.d.ts +125 -482
  61. package/dist/types/data-structures/hash/hash-map.d.ts +132 -562
  62. package/dist/types/data-structures/heap/heap.d.ts +194 -746
  63. package/dist/types/data-structures/linked-list/doubly-linked-list.d.ts +120 -809
  64. package/dist/types/data-structures/linked-list/singly-linked-list.d.ts +121 -733
  65. package/dist/types/data-structures/linked-list/skip-linked-list.d.ts +193 -863
  66. package/dist/types/data-structures/matrix/matrix.d.ts +159 -474
  67. package/dist/types/data-structures/priority-queue/max-priority-queue.d.ts +1 -6
  68. package/dist/types/data-structures/priority-queue/min-priority-queue.d.ts +6 -11
  69. package/dist/types/data-structures/priority-queue/priority-queue.d.ts +1 -1
  70. package/dist/types/data-structures/queue/deque.d.ts +196 -804
  71. package/dist/types/data-structures/queue/queue.d.ts +99 -585
  72. package/dist/types/data-structures/stack/stack.d.ts +75 -481
  73. package/dist/types/data-structures/trie/trie.d.ts +98 -584
  74. package/dist/umd/data-structure-typed.js +6580 -32822
  75. package/dist/umd/data-structure-typed.min.js +3 -3
  76. package/docs-site-docusaurus/docs/api/classes/AVLTree.md +162 -215
  77. package/docs-site-docusaurus/docs/api/classes/AVLTreeNode.md +9 -9
  78. package/docs-site-docusaurus/docs/api/classes/AbstractGraph.md +47 -47
  79. package/docs-site-docusaurus/docs/api/classes/BST.md +155 -208
  80. package/docs-site-docusaurus/docs/api/classes/BSTNode.md +7 -7
  81. package/docs-site-docusaurus/docs/api/classes/BinaryIndexedTree.md +13 -29
  82. package/docs-site-docusaurus/docs/api/classes/BinaryTree.md +104 -158
  83. package/docs-site-docusaurus/docs/api/classes/BinaryTreeNode.md +13 -13
  84. package/docs-site-docusaurus/docs/api/classes/Deque.md +253 -101
  85. package/docs-site-docusaurus/docs/api/classes/DirectedGraph.md +60 -80
  86. package/docs-site-docusaurus/docs/api/classes/DoublyLinkedList.md +244 -114
  87. package/docs-site-docusaurus/docs/api/classes/DoublyLinkedListNode.md +6 -6
  88. package/docs-site-docusaurus/docs/api/classes/FibonacciHeap.md +9 -9
  89. package/docs-site-docusaurus/docs/api/classes/FibonacciHeapNode.md +1 -1
  90. package/docs-site-docusaurus/docs/api/classes/HashMap.md +52 -48
  91. package/docs-site-docusaurus/docs/api/classes/Heap.md +119 -64
  92. package/docs-site-docusaurus/docs/api/classes/IterableElementBase.md +84 -14
  93. package/docs-site-docusaurus/docs/api/classes/LinearBase.md +138 -34
  94. package/docs-site-docusaurus/docs/api/classes/LinearLinkedBase.md +149 -41
  95. package/docs-site-docusaurus/docs/api/classes/LinkedHashMap.md +23 -23
  96. package/docs-site-docusaurus/docs/api/classes/LinkedListQueue.md +172 -92
  97. package/docs-site-docusaurus/docs/api/classes/MapGraph.md +60 -80
  98. package/docs-site-docusaurus/docs/api/classes/Matrix.md +57 -52
  99. package/docs-site-docusaurus/docs/api/classes/MaxHeap.md +117 -62
  100. package/docs-site-docusaurus/docs/api/classes/MaxPriorityQueue.md +120 -70
  101. package/docs-site-docusaurus/docs/api/classes/MinHeap.md +117 -62
  102. package/docs-site-docusaurus/docs/api/classes/MinPriorityQueue.md +125 -75
  103. package/docs-site-docusaurus/docs/api/classes/PriorityQueue.md +119 -64
  104. package/docs-site-docusaurus/docs/api/classes/Queue.md +158 -74
  105. package/docs-site-docusaurus/docs/api/classes/RedBlackTree.md +171 -225
  106. package/docs-site-docusaurus/docs/api/classes/SegmentTree.md +10 -22
  107. package/docs-site-docusaurus/docs/api/classes/SinglyLinkedList.md +172 -94
  108. package/docs-site-docusaurus/docs/api/classes/SinglyLinkedListNode.md +4 -4
  109. package/docs-site-docusaurus/docs/api/classes/SkipList.md +98 -75
  110. package/docs-site-docusaurus/docs/api/classes/Stack.md +112 -50
  111. package/docs-site-docusaurus/docs/api/classes/TreeMap.md +104 -129
  112. package/docs-site-docusaurus/docs/api/classes/TreeMultiMap.md +90 -121
  113. package/docs-site-docusaurus/docs/api/classes/TreeSet.md +298 -107
  114. package/docs-site-docusaurus/docs/api/classes/Trie.md +116 -58
  115. package/docs-site-docusaurus/docs/api/classes/TrieNode.md +8 -8
  116. package/docs-site-docusaurus/docs/api/classes/UndirectedGraph.md +59 -77
  117. package/package.json +45 -46
  118. package/src/common/error.ts +15 -32
  119. package/src/common/index.ts +0 -3
  120. package/src/data-structures/base/iterable-element-base.ts +0 -3
  121. package/src/data-structures/base/linear-base.ts +2 -36
  122. package/src/data-structures/binary-tree/avl-tree.ts +31 -529
  123. package/src/data-structures/binary-tree/binary-indexed-tree.ts +47 -572
  124. package/src/data-structures/binary-tree/binary-tree.ts +326 -1311
  125. package/src/data-structures/binary-tree/bst.ts +158 -1082
  126. package/src/data-structures/binary-tree/red-black-tree.ts +451 -1290
  127. package/src/data-structures/binary-tree/segment-tree.ts +73 -351
  128. package/src/data-structures/binary-tree/tree-map.ts +462 -5124
  129. package/src/data-structures/binary-tree/tree-multi-map.ts +302 -4914
  130. package/src/data-structures/binary-tree/tree-multi-set.ts +299 -3983
  131. package/src/data-structures/binary-tree/tree-set.ts +338 -4836
  132. package/src/data-structures/graph/abstract-graph.ts +98 -167
  133. package/src/data-structures/graph/directed-graph.ts +137 -562
  134. package/src/data-structures/graph/map-graph.ts +0 -3
  135. package/src/data-structures/graph/undirected-graph.ts +132 -511
  136. package/src/data-structures/hash/hash-map.ts +154 -582
  137. package/src/data-structures/heap/heap.ts +200 -795
  138. package/src/data-structures/linked-list/doubly-linked-list.ts +121 -865
  139. package/src/data-structures/linked-list/singly-linked-list.ts +122 -794
  140. package/src/data-structures/linked-list/skip-linked-list.ts +211 -918
  141. package/src/data-structures/matrix/matrix.ts +179 -518
  142. package/src/data-structures/matrix/navigator.ts +0 -1
  143. package/src/data-structures/priority-queue/max-priority-queue.ts +1 -6
  144. package/src/data-structures/priority-queue/min-priority-queue.ts +6 -11
  145. package/src/data-structures/priority-queue/priority-queue.ts +1 -2
  146. package/src/data-structures/queue/deque.ts +214 -882
  147. package/src/data-structures/queue/queue.ts +102 -625
  148. package/src/data-structures/stack/stack.ts +76 -505
  149. package/src/data-structures/trie/trie.ts +98 -628
  150. package/src/types/common.ts +0 -10
  151. package/src/types/data-structures/binary-tree/bst.ts +0 -7
  152. package/src/types/data-structures/binary-tree/red-black-tree.ts +0 -1
  153. package/src/types/data-structures/graph/abstract-graph.ts +0 -2
  154. package/src/types/data-structures/hash/hash-map.ts +0 -3
  155. package/src/types/data-structures/hash/index.ts +0 -1
  156. package/src/types/data-structures/matrix/navigator.ts +0 -2
  157. package/src/types/utils/utils.ts +0 -7
  158. package/src/types/utils/validate-type.ts +0 -7
  159. package/src/utils/number.ts +0 -2
  160. package/src/utils/utils.ts +0 -5
@@ -110,13 +110,13 @@ export declare class DirectedGraph<V = any, E = any, VO extends DirectedVertex<V
110
110
  * @remarks Time O(1), Space O(1)
111
111
  */
112
112
  constructor(options?: Partial<GraphOptions<V>>);
113
- protected get _edgeConnector(): string;
114
113
  protected _outEdgeMap: Map<VO, EO[]>;
115
114
  get outEdgeMap(): Map<VO, EO[]>;
116
115
  set outEdgeMap(v: Map<VO, EO[]>);
117
116
  protected _inEdgeMap: Map<VO, EO[]>;
118
117
  get inEdgeMap(): Map<VO, EO[]>;
119
118
  set inEdgeMap(v: Map<VO, EO[]>);
119
+ protected get _edgeConnector(): string;
120
120
  /**
121
121
  * Construct a directed graph from keys with value initializer `v => v`.
122
122
  * @template K - Vertex key type.
@@ -157,53 +157,14 @@ export declare class DirectedGraph<V = any, E = any, VO extends DirectedVertex<V
157
157
  * @param destOrKey - Destination vertex or key.
158
158
  * @returns Edge instance or `undefined`.
159
159
  * @remarks Time O(1) avg, Space O(1)
160
-
161
-
162
-
163
-
164
-
165
-
166
-
167
-
168
-
169
-
170
-
171
-
172
-
173
-
174
-
175
-
176
-
177
-
178
-
179
-
180
-
181
-
182
-
183
-
184
-
185
-
186
-
187
-
188
-
189
-
190
-
191
-
192
-
193
-
194
-
195
-
196
-
197
-
198
-
199
- * @example
200
- * // Get edge between vertices
201
- * const g = new DirectedGraph();
202
- * g.addVertex('A');
203
- * g.addVertex('B');
204
- * g.addEdge('A', 'B', 5);
205
- * const edge = g.getEdge('A', 'B');
206
- * console.log(edge?.weight); // 5;
160
+ * @example
161
+ * // Get edge between vertices
162
+ * const g = new DirectedGraph();
163
+ * g.addVertex('A');
164
+ * g.addVertex('B');
165
+ * g.addEdge('A', 'B', 5);
166
+ * const edge = g.getEdge('A', 'B');
167
+ * console.log(edge?.weight); // 5;
207
168
  */
208
169
  getEdge(srcOrKey: VO | VertexKey | undefined, destOrKey: VO | VertexKey | undefined): EO | undefined;
209
170
  /**
@@ -220,126 +181,45 @@ export declare class DirectedGraph<V = any, E = any, VO extends DirectedVertex<V
220
181
  * @param destVertexKey - Optional destination vertex/key when deleting by pair.
221
182
  * @returns Removed edge or `undefined`.
222
183
  * @remarks Time O(1) avg, Space O(1)
223
-
224
-
225
-
226
-
227
-
228
-
229
-
230
-
231
-
232
-
233
-
234
-
235
-
236
-
237
-
238
-
239
-
240
-
241
-
242
-
243
-
244
-
245
-
246
-
247
-
248
-
249
-
250
-
251
-
252
-
253
-
254
-
255
-
256
-
257
-
258
-
259
-
260
-
261
-
262
-
263
-
264
-
265
- * @example
266
- * // DirectedGraph deleteEdge and vertex operations
267
- * const graph = new DirectedGraph<string>();
268
- *
269
- * // Build a small graph
270
- * graph.addVertex('X');
271
- * graph.addVertex('Y');
272
- * graph.addVertex('Z');
273
- * graph.addEdge('X', 'Y', 1);
274
- * graph.addEdge('Y', 'Z', 2);
275
- *
276
- * // Delete an edge
277
- * graph.deleteEdgeSrcToDest('X', 'Y');
278
- * console.log(graph.hasEdge('X', 'Y')); // false;
279
- *
280
- * // Edge in other direction should not exist
281
- * console.log(graph.hasEdge('Y', 'X')); // false;
282
- *
283
- * // Other edges should remain
284
- * console.log(graph.hasEdge('Y', 'Z')); // true;
285
- *
286
- * // Delete a vertex
287
- * graph.deleteVertex('Y');
288
- * console.log(graph.hasVertex('Y')); // false;
289
- * console.log(graph.size); // 2;
184
+ * @example
185
+ * // DirectedGraph deleteEdge and vertex operations
186
+ * const graph = new DirectedGraph<string>();
187
+ *
188
+ * // Build a small graph
189
+ * graph.addVertex('X');
190
+ * graph.addVertex('Y');
191
+ * graph.addVertex('Z');
192
+ * graph.addEdge('X', 'Y', 1);
193
+ * graph.addEdge('Y', 'Z', 2);
194
+ *
195
+ * // Delete an edge
196
+ * graph.deleteEdgeSrcToDest('X', 'Y');
197
+ * console.log(graph.hasEdge('X', 'Y')); // false;
198
+ *
199
+ * // Edge in other direction should not exist
200
+ * console.log(graph.hasEdge('Y', 'X')); // false;
201
+ *
202
+ * // Other edges should remain
203
+ * console.log(graph.hasEdge('Y', 'Z')); // true;
204
+ *
205
+ * // Delete a vertex
206
+ * graph.deleteVertex('Y');
207
+ * console.log(graph.hasVertex('Y')); // false;
208
+ * console.log(graph.size); // 2;
290
209
  */
291
210
  deleteEdge(edgeOrSrcVertexKey: EO | VertexKey, destVertexKey?: VertexKey): EO | undefined;
292
211
  /**
293
- * Remove a vertex
294
-
295
-
296
-
297
-
298
-
299
-
300
-
301
-
302
-
303
-
304
-
305
-
306
-
307
-
308
-
309
-
310
-
311
-
312
-
313
-
314
-
315
-
316
-
317
-
318
-
319
-
320
-
321
-
322
-
323
-
324
-
325
-
326
-
327
-
328
-
329
-
330
-
331
-
332
-
333
- * @example
334
- * // Remove a vertex
335
- * const g = new DirectedGraph();
336
- * g.addVertex('A');
337
- * g.addVertex('B');
338
- * g.addEdge('A', 'B');
339
- * g.deleteVertex('A');
340
- * console.log(g.hasVertex('A')); // false;
341
- * console.log(g.hasEdge('A', 'B')); // false;
342
- */
212
+ * Remove a vertex
213
+ * @example
214
+ * // Remove a vertex
215
+ * const g = new DirectedGraph();
216
+ * g.addVertex('A');
217
+ * g.addVertex('B');
218
+ * g.addEdge('A', 'B');
219
+ * g.deleteVertex('A');
220
+ * console.log(g.hasVertex('A')); // false;
221
+ * console.log(g.hasEdge('A', 'B')); // false;
222
+ */
343
223
  deleteVertex(vertexOrKey: VO | VertexKey): boolean;
344
224
  deleteEdgesBetween(v1: VertexKey | VO, v2: VertexKey | VO): EO[];
345
225
  /**
@@ -347,54 +227,15 @@ export declare class DirectedGraph<V = any, E = any, VO extends DirectedVertex<V
347
227
  * @param vertexOrKey - Vertex or key.
348
228
  * @returns Array of incoming edges.
349
229
  * @remarks Time O(deg_in), Space O(deg_in)
350
-
351
-
352
-
353
-
354
-
355
-
356
-
357
-
358
-
359
-
360
-
361
-
362
-
363
-
364
-
365
-
366
-
367
-
368
-
369
-
370
-
371
-
372
-
373
-
374
-
375
-
376
-
377
-
378
-
379
-
380
-
381
-
382
-
383
-
384
-
385
-
386
-
387
-
388
-
389
- * @example
390
- * // Get incoming edges
391
- * const g = new DirectedGraph();
392
- * g.addVertex('A');
393
- * g.addVertex('B');
394
- * g.addVertex('C');
395
- * g.addEdge('A', 'C');
396
- * g.addEdge('B', 'C');
397
- * console.log(g.incomingEdgesOf('C').length); // 2;
230
+ * @example
231
+ * // Get incoming edges
232
+ * const g = new DirectedGraph();
233
+ * g.addVertex('A');
234
+ * g.addVertex('B');
235
+ * g.addVertex('C');
236
+ * g.addEdge('A', 'C');
237
+ * g.addEdge('B', 'C');
238
+ * console.log(g.incomingEdgesOf('C').length); // 2;
398
239
  */
399
240
  incomingEdgesOf(vertexOrKey: VO | VertexKey): EO[];
400
241
  /**
@@ -402,54 +243,15 @@ export declare class DirectedGraph<V = any, E = any, VO extends DirectedVertex<V
402
243
  * @param vertexOrKey - Vertex or key.
403
244
  * @returns Array of outgoing edges.
404
245
  * @remarks Time O(deg_out), Space O(deg_out)
405
-
406
-
407
-
408
-
409
-
410
-
411
-
412
-
413
-
414
-
415
-
416
-
417
-
418
-
419
-
420
-
421
-
422
-
423
-
424
-
425
-
426
-
427
-
428
-
429
-
430
-
431
-
432
-
433
-
434
-
435
-
436
-
437
-
438
-
439
-
440
-
441
-
442
-
443
-
444
- * @example
445
- * // Get outgoing edges
446
- * const g = new DirectedGraph();
447
- * g.addVertex('A');
448
- * g.addVertex('B');
449
- * g.addVertex('C');
450
- * g.addEdge('A', 'B');
451
- * g.addEdge('A', 'C');
452
- * console.log(g.outgoingEdgesOf('A').length); // 2;
246
+ * @example
247
+ * // Get outgoing edges
248
+ * const g = new DirectedGraph();
249
+ * g.addVertex('A');
250
+ * g.addVertex('B');
251
+ * g.addVertex('C');
252
+ * g.addEdge('A', 'B');
253
+ * g.addEdge('A', 'C');
254
+ * console.log(g.outgoingEdgesOf('A').length); // 2;
453
255
  */
454
256
  outgoingEdgesOf(vertexOrKey: VO | VertexKey): EO[];
455
257
  /**
@@ -482,175 +284,54 @@ export declare class DirectedGraph<V = any, E = any, VO extends DirectedVertex<V
482
284
  * @param propertyName - `'key'` to map to keys; `'vertex'` to keep instances.
483
285
  * @returns Array of keys/vertices, or `undefined` when cycle is found.
484
286
  * @remarks Time O(V + E), Space O(V)
485
-
486
-
487
-
488
-
489
-
490
-
491
-
492
-
493
-
494
-
495
-
496
-
497
-
498
-
499
-
500
-
501
-
502
-
503
-
504
-
505
-
506
-
507
-
508
-
509
-
510
-
511
-
512
-
513
-
514
-
515
-
516
-
517
-
518
-
519
-
520
-
521
-
522
-
523
-
524
-
525
-
526
-
527
- * @example
528
- * // DirectedGraph topologicalSort for task scheduling
529
- * const graph = new DirectedGraph<string>();
530
- *
531
- * // Build a DAG (Directed Acyclic Graph) for task dependencies
532
- * graph.addVertex('Design');
533
- * graph.addVertex('Implement');
534
- * graph.addVertex('Test');
535
- * graph.addVertex('Deploy');
536
- *
537
- * // Add dependency edges
538
- * graph.addEdge('Design', 'Implement', 1); // Design must come before Implement
539
- * graph.addEdge('Implement', 'Test', 1); // Implement must come before Test
540
- * graph.addEdge('Test', 'Deploy', 1); // Test must come before Deploy
541
- *
542
- * // Topological sort gives valid execution order
543
- * const executionOrder = graph.topologicalSort();
544
- * console.log(executionOrder); // defined;
545
- * console.log(executionOrder); // ['Design', 'Implement', 'Test', 'Deploy'];
546
- *
547
- * // All vertices should be included
548
- * console.log(executionOrder?.length); // 4;
287
+ * @example
288
+ * // DirectedGraph topologicalSort for task scheduling
289
+ * const graph = new DirectedGraph<string>();
290
+ *
291
+ * // Build a DAG (Directed Acyclic Graph) for task dependencies
292
+ * graph.addVertex('Design');
293
+ * graph.addVertex('Implement');
294
+ * graph.addVertex('Test');
295
+ * graph.addVertex('Deploy');
296
+ *
297
+ * // Add dependency edges
298
+ * graph.addEdge('Design', 'Implement', 1); // Design must come before Implement
299
+ * graph.addEdge('Implement', 'Test', 1); // Implement must come before Test
300
+ * graph.addEdge('Test', 'Deploy', 1); // Test must come before Deploy
301
+ *
302
+ * // Topological sort gives valid execution order
303
+ * const executionOrder = graph.topologicalSort();
304
+ * console.log(executionOrder); // defined;
305
+ * console.log(executionOrder); // ['Design', 'Implement', 'Test', 'Deploy'];
306
+ *
307
+ * // All vertices should be included
308
+ * console.log(executionOrder?.length); // 4;
549
309
  */
550
310
  topologicalSort(propertyName?: 'vertex' | 'key'): Array<VO | VertexKey> | undefined;
551
311
  /**
552
- * Get all edges
553
-
554
-
555
-
556
-
557
-
558
-
559
-
560
-
561
-
562
-
563
-
564
-
565
-
566
-
567
-
568
-
569
-
570
-
571
-
572
-
573
-
574
-
575
-
576
-
577
-
578
-
579
-
580
-
581
-
582
-
583
-
584
-
585
-
586
-
587
-
588
-
589
-
590
-
591
-
592
- * @example
593
- * // Get all edges
594
- * const g = new DirectedGraph();
595
- * g.addVertex('A');
596
- * g.addVertex('B');
597
- * g.addEdge('A', 'B', 3);
598
- * console.log(g.edgeSet().length); // 1;
599
- */
312
+ * Get all edges
313
+ * @example
314
+ * // Get all edges
315
+ * const g = new DirectedGraph();
316
+ * g.addVertex('A');
317
+ * g.addVertex('B');
318
+ * g.addEdge('A', 'B', 3);
319
+ * console.log(g.edgeSet().length); // 1;
320
+ */
600
321
  edgeSet(): EO[];
601
322
  /**
602
- * Get outgoing neighbors
603
-
604
-
605
-
606
-
607
-
608
-
609
-
610
-
611
-
612
-
613
-
614
-
615
-
616
-
617
-
618
-
619
-
620
-
621
-
622
-
623
-
624
-
625
-
626
-
627
-
628
-
629
-
630
-
631
-
632
-
633
-
634
-
635
-
636
-
637
-
638
-
639
-
640
-
641
-
642
-
643
- * @example
644
- * // Get outgoing neighbors
645
- * const g = new DirectedGraph();
646
- * g.addVertex('A');
647
- * g.addVertex('B');
648
- * g.addVertex('C');
649
- * g.addEdge('A', 'B');
650
- * g.addEdge('A', 'C');
651
- * const neighbors = g.getNeighbors('A');
652
- * console.log(neighbors.map(v => v.key).sort()); // ['B', 'C'];
653
- */
323
+ * Get outgoing neighbors
324
+ * @example
325
+ * // Get outgoing neighbors
326
+ * const g = new DirectedGraph();
327
+ * g.addVertex('A');
328
+ * g.addVertex('B');
329
+ * g.addVertex('C');
330
+ * g.addEdge('A', 'B');
331
+ * g.addEdge('A', 'C');
332
+ * const neighbors = g.getNeighbors('A');
333
+ * console.log(neighbors.map(v => v.key).sort()); // ['B', 'C'];
334
+ */
654
335
  getNeighbors(vertexOrKey: VO | VertexKey): VO[];
655
336
  /**
656
337
  * Resolve an edge's `[src, dest]` endpoints to vertex instances.
@@ -679,58 +360,19 @@ export declare class DirectedGraph<V = any, E = any, VO extends DirectedVertex<V
679
360
  * Tarjan's algorithm for strongly connected components.
680
361
  * @returns `{ dfnMap, lowMap, SCCs }`.
681
362
  * @remarks Time O(V + E), Space O(V + E)
682
-
683
-
684
-
685
-
686
-
687
-
688
-
689
-
690
-
691
-
692
-
693
-
694
-
695
-
696
-
697
-
698
-
699
-
700
-
701
-
702
-
703
-
704
-
705
-
706
-
707
-
708
-
709
-
710
-
711
-
712
-
713
-
714
-
715
-
716
-
717
-
718
-
719
-
720
-
721
- * @example
722
- * // Find strongly connected components
723
- * const g = new DirectedGraph();
724
- * g.addVertex('A');
725
- * g.addVertex('B');
726
- * g.addVertex('C');
727
- * g.addEdge('A', 'B');
728
- * g.addEdge('B', 'C');
729
- * g.addEdge('C', 'A');
730
- * const { SCCs } = g.tarjan();
731
- * // A→B→C→A forms one SCC with 3 members
732
- * const sccArrays = [...SCCs.values()];
733
- * console.log(sccArrays.some(scc => scc.length === 3)); // true;
363
+ * @example
364
+ * // Find strongly connected components
365
+ * const g = new DirectedGraph();
366
+ * g.addVertex('A');
367
+ * g.addVertex('B');
368
+ * g.addVertex('C');
369
+ * g.addEdge('A', 'B');
370
+ * g.addEdge('B', 'C');
371
+ * g.addEdge('C', 'A');
372
+ * const { SCCs } = g.tarjan();
373
+ * // A→B→C→A forms one SCC with 3 members
374
+ * const sccArrays = [...SCCs.values()];
375
+ * console.log(sccArrays.some(scc => scc.length === 3)); // true;
734
376
  */
735
377
  tarjan(): {
736
378
  dfnMap: Map<VO, number>;
@@ -753,56 +395,17 @@ export declare class DirectedGraph<V = any, E = any, VO extends DirectedVertex<V
753
395
  * Strongly connected components computed by `tarjan()`.
754
396
  * @returns Map from SCC id to vertices.
755
397
  * @remarks Time O(#SCC + V), Space O(V)
756
-
757
-
758
-
759
-
760
-
761
-
762
-
763
-
764
-
765
-
766
-
767
-
768
-
769
-
770
-
771
-
772
-
773
-
774
-
775
-
776
-
777
-
778
-
779
-
780
-
781
-
782
-
783
-
784
-
785
-
786
-
787
-
788
-
789
-
790
-
791
-
792
-
793
-
794
-
795
- * @example
796
- * // Get strongly connected components
797
- * const g = new DirectedGraph();
798
- * g.addVertex(1);
799
- * g.addVertex(2);
800
- * g.addVertex(3);
801
- * g.addEdge(1, 2);
802
- * g.addEdge(2, 3);
803
- * g.addEdge(3, 1);
804
- * const sccs = g.getSCCs(); // Map<number, VO[]>
805
- * console.log(sccs.size); // >= 1;
398
+ * @example
399
+ * // Get strongly connected components
400
+ * const g = new DirectedGraph();
401
+ * g.addVertex(1);
402
+ * g.addVertex(2);
403
+ * g.addVertex(3);
404
+ * g.addEdge(1, 2);
405
+ * g.addEdge(2, 3);
406
+ * g.addEdge(3, 1);
407
+ * const sccs = g.getSCCs(); // Map<number, VO[]>
408
+ * console.log(sccs.size); // >= 1;
806
409
  */
807
410
  getSCCs(): Map<number, VO[]>;
808
411
  /**