CodeVetter
← All unpacks
CodeVetter · Repo Unpack evidence

typescript-eslint/typescript-eslint

Scanned commit effa652828 dated 2026-10-01 — last upstream commit. Generated by codevetter 1.15.0 on 2026-10-02.

github.com/typescript-eslint/typescript-eslint ↗ · 4000 files · 12.6 MB · scan capped

typescript-eslint Monorepo for typescript-eslint: powerful static analysis for JavaScript and TypeScript 👇 See typescript-eslint.io for documentation on the latest released version.

Deep analysis by cli:codex via the codex CLI on 2026-10-02 (478s) — every claim below links to its cited source files. Source inspection; upstream code and tests were not executed.

Overview

typescript-eslint connects ESLint’s rule engine to TypeScript syntax, scopes, and compiler type information. Its published packages serve application developers configuring linting and tool authors building parsers, rules, and tests; the repository also contains a Docusaurus documentation site with an interactive browser playground. This brief examines commit effa652828afba0aa730f106cb326c54a97ccfb5 through bounded, read-only source inspection, including configuration startup, typed linting, and playground editing and persistence.

System map

The repository distributes a set of cooperating linting libraries and a separate documentation application. ESLint supplies the execution environment; the parser supplies ESTree, scopes, and optional compiler services. Nx coordinates package builds, checks, and releases across the pnpm workspace. Core parser state resides in process memory, while the playground uses virtual files and browser persistence.

Feature catalog

The primary user surface is ESLint configuration and diagnostics, supported by reusable parser and rule-author APIs. Presets distinguish correctness, strictness, style, and type-information requirements. The browser playground adds editable configurations, diagnostic markers, structural inspection, and shareable examples. The following catalog groups features found in inspected files rather than claiming exhaustive coverage of every rule.

Data flow

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.

Behavior traces

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.

Testing signals

Tests and CI were inspected, not executed; no passing result or measured coverage is asserted. Vitest supplies package suites, with RuleTester cases, parser snapshots, mocked service tests, and packed-package integrations. CI conditionally selects affected packages and adds compatibility and snapshot checks. The inspected configuration excludes website suites from the root test project, so it does not establish browser-flow coverage; the inventory remains bounded.

Risk map

These are source observations and explicitly labeled hypotheses, not confirmed vulnerabilities or reproduced failures. Sensitive boundaries include filesystem-backed compiler services, third-party browser code, shell-based integration tooling, and privileged workflow artifacts. Several playground call sites expose concrete inconsistencies suitable for targeted verification. Compiler internals and process-wide caches also require compatibility-focused review.

Extension points

Rules plug into an explicit registry and a typed factory API. Preset generation consumes rule metadata, while syntax support spans conversion, visitor keys, and scope visitors. Project-service hosts and RuleTester framework adapters offer controlled integration boundaries. Playground configuration and diagnostics use maps, schemas, and event callbacks rather than a server router.

Contributor handoff

Tests and CI were inspected, not executed, and all described flows are source traces. Future agents should begin with the owning package and preserve public parser, plugin, and generated-config contracts. Test and build commands below describe repository workflows for a separately authorized implementation task; they do not authorize execution during this read-only investigation. This bounded inventory leaves additional packages, rules, fixtures, and browser behavior for task-specific inspection.

Languages

LanguageFilesShare of source
TypeScript265897%
Markdown292docs/config
JSON134docs/config
JavaScript713%
CSS37docs/config
YAML35docs/config
Vue70%
TOML10%

Start reading here

Probable source entrypoint: packages/ — inferred from the directory tree and manifest, not the upstream docs.

Source roots

packages/ (3846 files)

Source layout — packages/

PathFiles
packages/ast-spec/168

Repository structure

Top-level pathFiles
packages/3846
docs/53
.github/39
tools/19
.agents/9
typings/1
.husky/1

Docs found: CONTRIBUTING.mdREADME.md

Package

package.json — @typescript-eslint/typescript-eslint, 54 declared dependencies.

@actions/github@arethetypeswrong/cli@eslint-community/eslint-plugin-eslint-comments@eslint/compat@eslint/config-helpers@eslint/js@nx/devkit@nx/js@nx/vitest@nx/workspace@swc/core@types/debug

CI & config entrypoints

Structural health signals

Average score 6.8/10 across 96 analyzed source files; 37 hotspots surfaced.

These are deterministic review leads — size, churn, and structural signals — not proof of a bug in this project.

Recent history