# Extension points — typescript-eslint/typescript-eslint

> Canonical page: https://codevetter.com/unpack/typescript-eslint/extension-points

# Extension points — 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.

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.
- New plugin rules register in src/rules/index.ts, whose named rule map is imported into raw-plugin.ts and exposed as plugin.rules. — [packages/eslint-plugin/src/rules/index.ts#L140-175](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/eslint-plugin/src/rules/index.ts#L140-L175) [packages/eslint-plugin/src/raw-plugin.ts#L32-37](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/eslint-plugin/src/raw-plugin.ts#L32-L37) [packages/eslint-plugin/src/raw-plugin.ts#L65-71](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/eslint-plugin/src/raw-plugin.ts#L65-L71)
- The local createRule wraps ESLintUtils.RuleCreator with the repository’s rule-documentation URL; RuleCreator accepts typed metadata/options/listeners and supports withoutDocs for other consumers. — [packages/eslint-plugin/src/util/createRule.ts#L1-7](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/eslint-plugin/src/util/createRule.ts#L1-L7) [packages/utils/src/eslint-utils/RuleCreator.ts#L67-95](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/utils/src/eslint-utils/RuleCreator.ts#L67-L95) [packages/utils/src/eslint-utils/RuleCreator.ts#L131-144](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/utils/src/eslint-utils/RuleCreator.ts#L131-L144)
- Preset generation derives core-rule overrides from extendsBaseRule and filters requiresTypeChecking/deprecated metadata, rejecting rules that are simultaneously deprecated and recommended. — [tools/scripts/generate-configs.mts#L73-89](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/tools/scripts/generate-configs.mts#L73-L89) [tools/scripts/generate-configs.mts#L112-157](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/tools/scripts/generate-configs.mts#L112-L157)
- Flat presets are factory functions receiving plugin and parser objects; adding a preset requires wiring its factory into raw-plugin’s flatConfigs map and any desired umbrella export. — [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/eslint-plugin/src/raw-plugin.ts#L76-108](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/eslint-plugin/src/raw-plugin.ts#L76-L108) [packages/typescript-eslint/src/index.ts#L71-91](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/typescript-eslint/src/index.ts#L71-L91)
- Additional AST traversal keys are statically checked against node properties and merged with eslint-visitor-keys; their arrays must follow source visitation order. — [packages/visitor-keys/src/visitor-keys.ts#L5-10](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/visitor-keys/src/visitor-keys.ts#L5-L10) [packages/visitor-keys/src/visitor-keys.ts#L99-130](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/visitor-keys/src/visitor-keys.ts#L99-L130) [packages/visitor-keys/src/visitor-keys.ts#L260-273](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/visitor-keys/src/visitor-keys.ts#L260-L273)
- Scope integration accepts childVisitorKeys, library, JSX, and source-type options; Referencer supplies node-specific visitors and resolves transitive library definitions through TSLibraries. — [packages/scope-manager/src/analyze.ts#L14-18](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/scope-manager/src/analyze.ts#L14-L18) [packages/scope-manager/src/analyze.ts#L83-111](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/scope-manager/src/analyze.ts#L83-L111) [packages/scope-manager/src/referencer/Referencer.ts#L92-112](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/scope-manager/src/referencer/Referencer.ts#L92-L112) [packages/scope-manager/src/referencer/Referencer.ts#L532-543](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/scope-manager/src/referencer/Referencer.ts#L532-L543)
- createProjectService accepts a partial ServerHost and service options; RuleTester’s TestFramework adapter separately permits explicit afterAll, describe, and it implementations instead of globals. — [packages/project-service/src/createProjectService.ts#L71-113](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/project-service/src/createProjectService.ts#L71-L113) [packages/rule-tester/src/TestFramework.ts#L50-92](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/rule-tester/src/TestFramework.ts#L50-L92) [packages/rule-tester/src/TestFramework.ts#L131-146](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/rule-tester/src/TestFramework.ts#L131-L146)
- createLinter exposes rule/config maps, onLint/onParse registration, registerFile, and trigger methods; LoadedEditor derives JSON validation schemas from registered rule metadata with external schema requests disabled. — [packages/website/src/components/linter/createLinter.ts#L28-44](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/website/src/components/linter/createLinter.ts#L28-L44) [packages/website/src/components/linter/createLinter.ts#L90-105](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/website/src/components/linter/createLinter.ts#L90-L105) [packages/website/src/components/linter/createLinter.ts#L251-260](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/website/src/components/linter/createLinter.ts#L251-L260) [packages/website/src/components/editor/LoadedEditor.tsx#L166-180](https://github.com/typescript-eslint/typescript-eslint/blob/effa652828afba0aa730f106cb326c54a97ccfb5/packages/website/src/components/editor/LoadedEditor.tsx#L166-L180)

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)
