architecture #
svelte-docinfo analyzes its own source and draws the result below. Each node is one module
under src/lib/; each arrow is an internal import. Hover any module to isolate its
immediate neighbors; click to jump to its API page.
How to read it #
- Arrows point from importer to imported: X depends on Y. Reads with gravity, so dependencies fall downward toward the foundation.
- Layers are assigned by longest-path-from-sink. A module's layer is one plus the deepest layer it transitively depends on. Sinks (no internal imports) land at the bottom.
- Hover a module to isolate its immediate neighbors. Edges split by direction: what the module depends on and what depends on it.
What the layers say #
The bottom rows are the primitives that nothing in the library depends on transitively: path normalization, types, concurrency caps, the diagnostics schema. The middle rows are the per-kind TypeScript extractors and the file-system helpers. The top rows are the orchestrators: the persistent session on top of core analysis, then the one-shot wrappers, then the vite plugin and cli entries.
Across 32 modules and 140 internal imports, the graph is naturally acyclic, so no back-edges had to be reversed to lay it out.
How this was drawn #
The layout is precomputed at build time by dependency_graph.gen.json.ts, which
calls analyzeFromFiles on this project and runs a Sugiyama-style layered layout: longest-path-from-sink for layer assignment,
dummy nodes on long edges, median-heuristic crossing reduction. The result is a small JSON sibling
the Svelte component renders to SVG. No layout libraries. About 300 lines, end to end.