Skip to content

Migrate to ESLint 10 (flat config), @typescript-eslint v8, TypeScript 5.9, @types/node 22#25998

Draft
Copilot wants to merge 2 commits into
mainfrom
copilot/migrate-eslint-10-flat-config
Draft

Migrate to ESLint 10 (flat config), @typescript-eslint v8, TypeScript 5.9, @types/node 22#25998
Copilot wants to merge 2 commits into
mainfrom
copilot/migrate-eslint-10-flat-config

Conversation

Copilot AI commented Jun 8, 2026

Copy link
Copy Markdown

Upgrades the linting and TypeScript toolchain: ESLint 8→10, @typescript-eslint v6→v8, TypeScript 5.2→5.9, and aligns supporting packages. The repo already had a flat config (eslint.config.mjs), so no config format migration was needed.

package.json

  • eslint: ^8.57.1^10.0.0
  • @eslint/js: added ^10.0.0 (now required as an explicit dep)
  • @typescript-eslint/{eslint-plugin,parser}: ^6.21.0^8.61.0
  • eslint-config-prettier: ^8.3.0^10.1.8
  • eslint-plugin-import → replaced with eslint-plugin-import-x ^4.16.2 (maintained ESLint 10-compatible fork; all rules were already 'off' so this is a drop-in swap)
  • typescript: ~5.2~5.9

eslint.config.mjs

  • Switch import to eslint-plugin-import-x
  • Remove eslint-config-prettier from plugins (it's a config object, not an ESLint plugin)
  • Remove rules deleted in @typescript-eslint v8: ban-types, no-loss-of-precision, no-extra-parens, no-var-requires
  • no-empty-interfaceno-empty-object-type (v8 rename); no-var-requiresno-require-imports (v8 rename)
  • Suppress new rules added to @typescript-eslint v8 recommended to avoid flagging pre-existing code: no-unsafe-function-type, no-wrapper-object-types, no-unused-expressions
  • Suppress new ESLint 10 core rules added to js.configs.recommended: no-unassigned-vars, no-useless-assignment, preserve-caught-error

Source files (11 files)

Removed stale // eslint-disable @typescript-eslint/ban-types directives from src/client/ and src/test/. The rule was removed in @typescript-eslint v8, causing ESLint to error on unresolvable rule references.

tsconfig.json / tsconfig.extension.json / pythonExtensionApi/tsconfig.json

Added "skipLibCheck": true to resolve a type conflict between @types/eslint-scope (transitive dep via webpack) and ESLint 10's newly bundled TypeScript declarations.

Original prompt

Migrate to ESLint 10 with flat config, types/node 22, and TypeScript 5.9.x. Create a PR.

Created from VS Code.

- Bump eslint ^8.57.1 → ^10.0.0
- Add @eslint/js ^10.0.0 (now a required explicit dep for flat config)
- Bump @typescript-eslint/{eslint-plugin,parser} ^6.21.0 → ^8.61.0
- Bump eslint-config-prettier ^8.3.0 → ^10.1.8
- Bump typescript ~5.2 → ~5.9
- Replace eslint-plugin-import ^2 (no ESLint 10 support) with
  eslint-plugin-import-x ^4.16.2 (drop-in fork with ESLint 10 support)

eslint.config.mjs:
- Update import to use eslint-plugin-import-x
- Remove prettier from plugins (eslint-config-prettier is not a plugin)
- Remove rules deleted in @typescript-eslint v8:
    ban-types, no-loss-of-precision, no-extra-parens, no-var-requires
- Rename no-empty-interface → no-empty-object-type (v8 replacement)
- Turn off new v8 recommended rules to avoid flagging pre-existing code:
    no-unsafe-function-type, no-wrapper-object-types,
    no-unused-expressions
- Turn off new ESLint 10 recommended rules:
    no-unassigned-vars, no-useless-assignment, preserve-caught-error

Source files: remove stale eslint-disable @typescript-eslint/ban-types
comments (rule removed in v8) from 11 files across src/client and src/test

tsconfig.json, tsconfig.extension.json, pythonExtensionApi/tsconfig.json:
- Add skipLibCheck: true to resolve type conflict between
  @types/eslint-scope (webpack transitive dep) and ESLint 10 bundled types
Copilot AI changed the title [WIP] Migrate to ESLint 10 with flat config Migrate to ESLint 10 (flat config), @typescript-eslint v8, TypeScript 5.9, @types/node 22 Jun 8, 2026
Copilot AI requested a review from rzhao271 June 8, 2026 20:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants