# Behavior traces — typescript-eslint/typescript-eslint

> Canonical page: https://codevetter.com/unpack/typescript-eslint/behavior-traces

# Behavior traces — 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.

These traces follow source-level call order rather than observed executions. Configuration startup establishes shared plugin identity before ESLint parsing and rule dispatch. Typed linting adds project-service creation, file admission, and compiler lookup. Playground startup, editing, and persistence connect browser state to virtual files, lint events, and restored examples.
- Configuration startup: the package entrypoint checks TypeScript’s major version, imports pluginBase/rawPlugin, exposes their shared parser/plugin, and creates getters whose reads call getTSConfigRootDirFromStack then addCandidateTSConfigRootDir. — [packages/typescript-eslint/src/index.ts#L3-38](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/typescript-eslint/src/index.ts#L3-L38) [packages/typescript-eslint/src/index.ts#L42-71](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/typescript-eslint/src/index.ts#L42-L71) [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)
- Syntax-only linting: parseForESLint normalizes options and forces comments/locations/ranges/tokens → parseAndGenerateServices creates settings → getProgramAndAST uses createNoProgram → astConverter and createParserServices return structures → analyze supplies scopes. — [packages/parser/src/parser.ts#L99-160](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/parser/src/parser.ts#L99-L160) [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) [packages/typescript-estree/src/parser.ts#L257-280](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/typescript-estree/src/parser.ts#L257-L280) [packages/parser/src/parser.ts#L197-206](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/parser/src/parser.ts#L197-L206)
- Typed service initialization: createParseSettings → populateProjectService validates default-project globs and initializes the cached service → createProjectService loads tsserverlibrary, constructs its host, creates ProjectService, applies cleanup throttling, and reads default compiler options. — [packages/typescript-estree/src/parseSettings/createParseSettings.ts#L285-299](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/typescript-estree/src/parseSettings/createParseSettings.ts#L285-L299) [packages/project-service/src/createProjectService.ts#L108-145](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/project-service/src/createProjectService.ts#L108-L145) [packages/project-service/src/createProjectService.ts#L179-220](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/project-service/src/createProjectService.ts#L179-L220)
- Typed file admission: useProgramFromProjectService updates extensions and matches allowDefaultProject → openClientFileFromProjectService opens current text, may retry a symlink path or reload stale projects, and rejects invalid admission → retrieveASTAndProgramFor obtains the language-service Program → createProjectProgram selects the AST. — [packages/typescript-estree/src/useProgramFromProjectService.ts#L80-132](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/typescript-estree/src/useProgramFromProjectService.ts#L80-L132) [packages/typescript-estree/src/useProgramFromProjectService.ts#L181-228](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/typescript-estree/src/useProgramFromProjectService.ts#L181-L228) [packages/typescript-estree/src/useProgramFromProjectService.ts#L282-305](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/typescript-estree/src/useProgramFromProjectService.ts#L282-L305) [packages/typescript-estree/src/useProgramFromProjectService.ts#L330-389](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/typescript-estree/src/useProgramFromProjectService.ts#L330-L389)
- Promise diagnostic: no-floating-promises.create obtains parser services/checker → ExpressionStatement skips allowed IIFEs and unwraps chains → checkNode skips known-safe calls and calls isUnhandledPromise → context.report selects array, handler, or ordinary messages and applicable suggestions. — [packages/eslint-plugin/src/rules/no-floating-promises.ts#L128-154](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/eslint-plugin/src/rules/no-floating-promises.ts#L128-L154) [packages/eslint-plugin/src/rules/no-floating-promises.ts#L157-223](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/eslint-plugin/src/rules/no-floating-promises.ts#L157-L223)
- Playground startup: Play renders BrowserOnly/Suspense → Playground initializes useHashState → useSandboxServices calls sandboxSingleton/loadSandbox → the loader checks the requested Monaco bundle and loads modules → the hook creates the sandbox, virtual filesystem, library files, and web linter. — [packages/website/src/pages/play.tsx#L6-20](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/website/src/pages/play.tsx#L6-L20) [packages/website/src/components/Playground.tsx#L32-43](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/website/src/components/Playground.tsx#L32-L43) [packages/website/src/components/editor/loadSandbox.ts#L18-60](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/website/src/components/editor/loadSandbox.ts#L18-L60) [packages/website/src/components/editor/useSandboxServices.ts#L47-124](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/website/src/components/editor/useSandboxServices.ts#L47-L124)
- Playground edit: LoadedEditor.onDidChangeModelContent → system.writeFile → the /input watcher invokes triggerLint → linter.verify calls the virtual parser, which updates/creates the source and converts its Program AST → onLint updates Monaco markers and onParse updates AST views. — [packages/website/src/components/editor/LoadedEditor.tsx#L144-164](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/website/src/components/editor/LoadedEditor.tsx#L144-L164) [packages/website/src/components/editor/LoadedEditor.tsx#L271-279](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/website/src/components/editor/LoadedEditor.tsx#L271-L279) [packages/website/src/components/linter/createLinter.ts#L108-117](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/website/src/components/linter/createLinter.ts#L108-L117) [packages/website/src/components/linter/createParser.ts#L40-85](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/website/src/components/linter/createParser.ts#L40-L85)
- Playground persistence: virtual-file watchers call onChange with code/eslintrc/tsconfig → updateState merges changes and skips shallow-equal updates → writeStateToLocalStorage saves preferences → writeStateToUrl encodes the example → history.replace stores the hash used by the next initialization. — [packages/website/src/components/editor/LoadedEditor.tsx#L253-269](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/website/src/components/editor/LoadedEditor.tsx#L253-L269) [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#L193-225](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/website/src/components/hooks/useHashState.ts#L193-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)
