CodeVetter · Repo Unpack · Data flow
microsoft/rushstack
Configuration and filesystem inputs feed most tool flows, with CLI arguments determining selection and execution mode. API analysis transforms TypeScript declarations into structured models and generated files. Lockfile Explorer transfers a serialized dependency graph over HTTP into Redux, while bookmarks persist independently in browser storage. Daemon state combines workspace fingerprints with separately owned transport files and connection lifetimes.
- ExtractorConfig loads an extends chain, resolves relative or package-based references, normalizes file-relative paths before merging, applies defaults, and schema-validates the merged configuration.
- Extractor.invoke obtains CompilerState, sends its TypeScript program into Collector, then runs Collector.analyze, DocCommentEnhancer, ValidationEnhancer, and ApiModelGenerator before writing enabled outputs.
- API reports first persist to reportTempFolder, then compare against reportFolder; changed expected reports are rewritten during local builds, whereas production builds emit warnings instead.
- Documenter’s BaseAction loads matching .api.json files into ApiModel and applies inheritDoc resolution; MarkdownDocumenter emits TSDoc-derived text, lets a plugin alter pageContent, and writes files with configured line endings.
- GET /api/graph reads PNPM YAML, generates LfxGraph, and serializes JSON; readLockfileAsync fetches that endpoint, deserializes the graph, and returns entries for App’s loadEntries dispatch.
- lfxGraphLoader normalizes version-dependent dependency IDs, distinguishes regular/dev/peer dependencies, records transitive peers, and omits Rush’s synthetic '.' importer from workspace project entries.
- Redux owns entry filters and navigation stacks; bookmark mutations synchronously write rawEntryId keys under LOCKFILE_EXPLORER_BOOKMARKS, and loadEntries hydrates matching IDs from that storage.
- WorkspaceRequestLifecycle captures startup environment and workspace/runtime fingerprints in memory; DaemonFrameListener separately binds a socket, records PID/protocol/start-time metadata, and pins file identities for its lifetime owner.