How counterfact/api-simulator works
Counterfact is an OpenAPI-driven mock API server: developers provide a contract, generate editable route scaffolding and types, then send client requests to a local API that simulates responses or selectively proxies them. The CLI and application coordinate setup; runtime middleware routes requests into dispatch and can forward selected paths. The repository also includes a typed client and interactive REPL. The graph follows README-described capabilities and sampled/indexed imports; several runtime internals are unsampled, so their relationships are omitted rather than inferred.
Main entry points: app.ts Application setup · load-openapi-document.ts OpenAPI loading · routes-middleware.ts HTTP middleware · run.ts Counterfact CLI
Components 17
CLI and application
- Counterfact CLI
packages/counterfact/src/cli/run.ts - Application setup
packages/counterfact/src/app.ts - API runner
packages/counterfact/src/api-runner.ts
Contract and generation
- OpenAPI loading
packages/openapi/src/load-openapi-document.ts - Generated repository
packages/generator/src/repository.ts - Scenario scaffolding
packages/generator/src/scenario-file-generator.ts - Editable routes
packages/generator/src/repository.ts - Generated types
packages/generator/src/operation-type-coder.ts - Response types
packages/types/src/generic-response-builder.ts
API runtime
- HTTP middleware
packages/runtime/src/server/web-server/routes-middleware.ts - Request dispatcher
packages/runtime/src/server/dispatcher.ts
Developer tools
- Interactive REPL
packages/repl/src/repl.ts - Typed route client
packages/client/src/route-builder.ts - HTTP client
packages/client/src/raw-http-client.ts
Other components
- API developer
- Frontend clients
- Real API service
Connections 20
- API developer → Counterfact CLI: starts
README.md - Counterfact CLI → OpenAPI loading: loads contract
- Counterfact CLI → Application setup: starts application
packages/counterfact/src/cli/run.ts - Application setup → API runner: configures APIs
packages/counterfact/src/app.ts - Application setup → Generated repository: creates generated files
packages/counterfact/src/app.ts - Application setup → Scenario scaffolding: generates scenarios
packages/counterfact/src/app.ts - Generated repository → Editable routes: writes routes
packages/generator/src/repository.ts - Generated repository → Generated types: writes types
packages/generator/src/repository.ts - API developer → OpenAPI loading: provides contract
README.md - OpenAPI loading → Editable routes: defines interface
README.md - OpenAPI loading → Generated types: drives type generation
README.md - Frontend clients → HTTP middleware: sends requests
README.md - Application setup → HTTP middleware: starts local API
packages/counterfact/src/app.ts - HTTP middleware → Request dispatcher: dispatches requests
packages/runtime/src/server/web-server/routes-middleware.ts - HTTP middleware → Real API service: forwards selected paths
packages/runtime/src/server/web-server/routes-middleware.ts - Application setup → Interactive REPL: launches REPL
packages/counterfact/src/app.ts - Application setup → Typed route client: provides route client
packages/counterfact/src/app.ts - Typed route client → HTTP client: sends HTTP
packages/client/src/route-builder.ts - Interactive REPL → Typed route client: uses typed routes
packages/repl/src/repl.ts - Editable routes → Response types: enables typed responses