| 558 | ...traversals: TTraversals |
| 559 | ): EdgeTraversal<TSchema, GetTraversalPaths<UnionToIntersection<TTraversals>>>; |
| 560 | public intersect(...traversals: readonly Traversal<TSchema, any>[]) { |
| 561 | if (traversals.length === 0) { |
| 562 | throw new Error("At least one traversal must be provided."); |
| 563 | } |
| 564 | return traversals.reduce((previous, traversal) => { |
| 565 | if (previous instanceof VertexTraversal) { |
| 566 | if (traversal instanceof VertexTraversal) { |
| 567 | return previous.intersect(traversal); |
| 568 | } |
| 569 | return previous; |
| 570 | } |
| 571 | if (previous instanceof EdgeTraversal) { |
| 572 | if (traversal instanceof EdgeTraversal) { |
| 573 | return previous.intersect(traversal); |
| 574 | } |
| 575 | return previous; |
| 576 | } |
| 577 | return previous; |
| 578 | }); |
| 579 | } |
| 580 | } |
| 581 | |
| 582 | type GetTraversalPaths<T> = |