feat!: return indexed subgraph result with adjacency maps#83
Merged
Conversation
Replace the flat `{ nodes[], edges[] }` return type of `store.subgraph()`
with an indexed structure for immediate traversal:
root: Node | undefined
nodes: ReadonlyMap<string, Node>
adjacency: ReadonlyMap<string, ReadonlyMap<EK, Edge[]>>
reverseAdjacency: ReadonlyMap<string, ReadonlyMap<EK, Edge[]>>
Every consumer of the old API rebuilt adjacency indexes before doing
anything useful. The new shape eliminates that boilerplate — nodes are
keyed by ID for O(1) lookup, and edges are organized into forward/reverse
adjacency maps keyed by nodeId → edgeKind.
- Export new SubgraphNodeResult and SubgraphEdgeResult type aliases
- Add insertAdjacencyEntry helper for two-level Map construction
- Add collectAllEdges test utility to test-utils.ts
- Add type-level tests for root narrowing and adjacency map access
- Update benchmarks package to new result shape
- Update schemas-stores.md and types.md documentation
Closes #82
46dad5c to
73c4e12
Compare
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
store.subgraph()now returns{ root, nodes: Map, adjacency, reverseAdjacency }instead of{ nodes: Node[], edges: Edge[] }nodeId → edgeKindrootprovides direct access to the traversal starting pointMigration
Closes #82