# Data flow — typescript-eslint/typescript-eslint

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

# Data flow — typescript-eslint/typescript-eslint

Scanned commit effa652828afba0aa730f106cb326c54a97ccfb5 (2026-10-01). Generated by codevetter codevetter 1.15.0 on 2026-10-02.

Source inspection; upstream code and tests were not executed.

Configuration enters through exported presets and parser options, then determines how source text acquires a TypeScript AST and optional Program. Conversion and scope analysis produce the structures ESLint rules consume. Compiler services translate ESTree nodes back to TypeScript nodes for typed queries. The playground follows a parallel browser path through a virtual filesystem, with URL and local-storage state at its persistence boundary.
- Flat base configuration installs the parser and @typescript-eslint plugin with module sourceType; preset getters additionally record candidate tsconfig roots inferred from the caller’s stack. — [packages/eslint-plugin/src/configs/flat/base.ts#L8-20](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/eslint-plugin/src/configs/flat/base.ts#L8-L20) [packages/typescript-eslint/src/index.ts#L172-195](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/typescript-eslint/src/index.ts#L172-L195)
- createParseSettings converts input to full text, infers single-run mode, validates an explicit absolute tsconfigRootDir, and resolves the input filename against that root. — [packages/typescript-estree/src/parseSettings/createParseSettings.ts#L47-98](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/typescript-estree/src/parseSettings/createParseSettings.ts#L47-L98) [packages/typescript-estree/src/parseSettings/createParseSettings.ts#L267-272](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/typescript-estree/src/parseSettings/createParseSettings.ts#L267-L272)
- getProgramAndAST tries project-service first, then supplied Programs, then standalone parsing without type information, and finally watched legacy project Programs. — [packages/typescript-estree/src/parser.ts#L54-83](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/typescript-estree/src/parser.ts#L54-L83)
- astConverter rejects the first fundamental parse diagnostic, invokes Converter.convertProgram, optionally strips locations/ranges, and attaches requested token and comment arrays. — [packages/typescript-estree/src/ast-converter.ts#L12-37](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/typescript-estree/src/ast-converter.ts#L12-L37) [packages/typescript-estree/src/ast-converter.ts#L39-75](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/typescript-estree/src/ast-converter.ts#L39-L75)
- Converter owns bidirectional WeakMaps; createParserServices returns maps even without a Program and, with a Program, translates ESTree nodes into checker calls for types, symbols, signatures, and contextual types. — [packages/typescript-estree/src/convert.ts#L65-85](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/typescript-estree/src/convert.ts#L65-L85) [packages/typescript-estree/src/createParserServices.ts#L6-52](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/typescript-estree/src/createParserServices.ts#L6-L52)
- analyze creates ScopeManager and Referencer, then visits the AST; Referencer combines library definitions’ type/value flags and defines an implicit type-only const binding. — [packages/scope-manager/src/analyze.ts#L83-114](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/scope-manager/src/analyze.ts#L83-L114) [packages/scope-manager/src/referencer/Referencer.ts#L54-85](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/scope-manager/src/referencer/Referencer.ts#L54-L85)
- Playground files live in a Map seeded with /.eslintrc, /tsconfig.json, and optional /input content; changed writes notify matching debounced watchers, which drive linter.verify and diagnostic events. — [packages/website/src/components/linter/bridge.ts#L10-43](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/website/src/components/linter/bridge.ts#L10-L43) [packages/website/src/components/linter/bridge.ts#L46-75](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/website/src/components/linter/bridge.ts#L46-L75) [packages/website/src/components/linter/createLinter.ts#L108-135](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/website/src/components/linter/createLinter.ts#L108-L135) [packages/website/src/components/linter/createLinter.ts#L238-249](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/website/src/components/linter/createLinter.ts#L238-L249)
- useHashState merges defaults, local preferences, and URL state in that order; updates save preferences and replace the hash with compressed code/configuration, reloading the page when cfg.ts is provided. — [packages/website/src/components/hooks/useHashState.ts#L112-135](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/website/src/components/hooks/useHashState.ts#L112-L135) [packages/website/src/components/hooks/useHashState.ts#L182-225](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/website/src/components/hooks/useHashState.ts#L182-L225)

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)
