# Data flow — nestjs/nest

> Canonical page: https://codevetter.com/unpack/nest/data-flow

# Data flow — nestjs/nest

Scanned commit 35142c3eca8edaaf6abc5984d915da2fbd458aa2 (2026-10-02). Generated by codevetter codevetter 1.15.0 on 2026-10-02.

Source inspection; upstream code and tests were not executed.

Decorator metadata enters module scanning and becomes container-owned instances and registered routes. HTTP requests pass through contextual guards, interceptors, and parameter pipes before reaching application methods. Application state can remain in a provider or move through a repository into an external database. Results return through framework response normalization and native adapter serialization.
- Module scanning merges reflected imports with dynamic-module imports, unwraps promises and forward references, and recursively scans dependencies. — [packages/core/scanner.ts#L119-171](https://github.com/nestjs/nest/blob/35142c3eca8edaaf6abc5984d915da2fbd458aa2/packages/core/scanner.ts#L119-L171)
- InstanceLoader creates prototypes first, then asynchronously creates module instances and records graph inspection data. — [packages/core/injector/instance-loader.ts#L25-59](https://github.com/nestjs/nest/blob/35142c3eca8edaaf6abc5984d915da2fbd458aa2/packages/core/injector/instance-loader.ts#L25-L59)
- Injector.loadInstance selects an instance by context and inquirer, detects pending dependency cycles, and combines constructor instantiation with property injection. — [packages/core/injector/injector.ts#L144-198](https://github.com/nestjs/nest/blob/35142c3eca8edaaf6abc5984d915da2fbd458aa2/packages/core/injector/injector.ts#L144-L198)
- RoutesResolver enumerates container controllers, combines prefix, module path, controller path, and version metadata, then delegates exploration. — [packages/core/router/routes-resolver.ts#L69-85](https://github.com/nestjs/nest/blob/35142c3eca8edaaf6abc5984d915da2fbd458aa2/packages/core/router/routes-resolver.ts#L69-L85) [packages/core/router/routes-resolver.ts#L103-149](https://github.com/nestjs/nest/blob/35142c3eca8edaaf6abc5984d915da2fbd458aa2/packages/core/router/routes-resolver.ts#L103-L149)
- HTTP execution prepares contextual pipes, guards, and interceptors; its handler applies pipes before callback.apply(instance, args). — [packages/core/router/router-execution-context.ts#L124-171](https://github.com/nestjs/nest/blob/35142c3eca8edaaf6abc5984d915da2fbd458aa2/packages/core/router/router-execution-context.ts#L124-L171)
- For a metatype selected for DTO validation, ValidationPipe strips prototype keys, converts plain input to that metatype, validates it, and throws an exception generated from validation errors. Without a metatype or when toValidate() is false, it instead returns the input or applies primitive transformation. — [packages/common/pipes/validation.pipe.ts#L134-175](https://github.com/nestjs/nest/blob/35142c3eca8edaaf6abc5984d915da2fbd458aa2/packages/common/pipes/validation.pipe.ts#L134-L175)
- CatsService owns an in-memory Cat array; create appends to it and findAll resolves that same array. — [sample/01-cats-app/src/cats/cats.service.ts#L4-14](https://github.com/nestjs/nest/blob/35142c3eca8edaaf6abc5984d915da2fbd458aa2/sample/01-cats-app/src/cats/cats.service.ts#L4-L14)
- UsersService maps firstName and lastName into User and passes it to repository.save; reads and deletes use repository methods. — [sample/05-sql-typeorm/src/users/users.service.ts#L14-31](https://github.com/nestjs/nest/blob/35142c3eca8edaaf6abc5984d915da2fbd458aa2/sample/05-sql-typeorm/src/users/users.service.ts#L14-L31) [sample/05-sql-typeorm/src/users/user.entity.ts#L3-15](https://github.com/nestjs/nest/blob/35142c3eca8edaaf6abc5984d915da2fbd458aa2/sample/05-sql-typeorm/src/users/user.entity.ts#L3-L15)
- Observable HTTP results are converted with lastValueFrom; ExpressAdapter serializes objects as JSON and other ordinary values as strings. — [packages/core/router/router-response-controller.ts#L67-71](https://github.com/nestjs/nest/blob/35142c3eca8edaaf6abc5984d915da2fbd458aa2/packages/core/router/router-response-controller.ts#L67-L71) [packages/platform-express/adapters/express-adapter.ts#L144-155](https://github.com/nestjs/nest/blob/35142c3eca8edaaf6abc5984d915da2fbd458aa2/packages/platform-express/adapters/express-adapter.ts#L144-L155)
- StreamableFile wraps a buffer or existing Readable; ExpressAdapter applies stream headers, pipes to the response, and destroys unfinished streams when the response finishes. — [packages/common/file-stream/streamable-file.ts#L40-73](https://github.com/nestjs/nest/blob/35142c3eca8edaaf6abc5984d915da2fbd458aa2/packages/common/file-stream/streamable-file.ts#L40-L73) [packages/platform-express/adapters/express-adapter.ts#L127-142](https://github.com/nestjs/nest/blob/35142c3eca8edaaf6abc5984d915da2fbd458aa2/packages/platform-express/adapters/express-adapter.ts#L127-L142)

Every claim links to its cited files at the pinned commit. Citations identify source evidence; they do not establish runtime correctness. Independent CodeVetter scan — not reviewed by upstream maintainers.

## Public product links

- [CodeVetter](https://codevetter.com/)
- [Download](https://codevetter.com/download)
- [Documentation](https://codevetter.com/docs/)
- [Source](https://github.com/Codevetter/codevetter)
