Skip to content

chore(deps): update ESLint to v10 and its plugins to their new majors - #422

Merged
GraemeF merged 1 commit into
mainfrom
chore/eslint-majors
Sep 30, 2026
Merged

GraemeF merged 1 commit into
mainfrom
chore/eslint-majors

Conversation

@GraemeF

@GraemeF GraemeF commented Sep 30, 2026

Copy link
Copy Markdown
Contributor

Moves the repo to ESLint 10 with eslint-plugin-functional 10 and typescript-eslint 8.71. The rules enforced on the repo are unchanged.

  • The three unused plugins are removed instead of upgraded. No ESLint config in the repo loads eslint-plugin-compat, eslint-plugin-package-json or eslint-plugin-expect-type. knip never reported them, because knip.json ignores every eslint-plugin-* dependency. Say if you want any of them back.
  • @codeforbreakfast/eslint-effect works under ESLint 10 now. ESLint 10 removed context.getSourceCode(), which most of its rules called. Its eslint peer range moves from >=8.0.0 to >=8.40.0, the first release with context.sourceCode. One rule already needed 8.40.
  • One lock entry was refreshed by hand. The lockfile held is-immutable-type 5.0.1 with its own copy of typescript-eslint 8.44, which crashes on load under ESLint 10. Deleting that entry let Bun resolve 5.0.4 against the shared typescript-eslint 8.71.
  • eslint-plugin-functional 10 now reports Record<…> parameters and return types as mutable. The fix wraps them in Readonly<…>, in the WebSocket server and in scripts/validate-changesets.ts.
  • eslint-plugin-import stays on 2.32.0. Its peer range stops at ESLint 9, and it has no newer release. The one rule the repo uses, import/extensions, reports the same violation under ESLint 9 and 10.

ESLint 10 removed context.getSourceCode(), so the eslint-effect rules
now read context.sourceCode, and its eslint peer range moves to
>=8.40.0. eslint-plugin-functional 10 reports Record types as mutable,
so those parameters are now Readonly.

eslint-plugin-compat, eslint-plugin-package-json and
eslint-plugin-expect-type are removed rather than upgraded, because no
ESLint config loads them.
@sonarqubecloud

Copy link
Copy Markdown

@GraemeF
GraemeF marked this pull request as ready for review September 30, 2026 13:27
@GraemeF
GraemeF merged commit 5e4de40 into main Sep 30, 2026
2 checks passed
@GraemeF
GraemeF deleted the chore/eslint-majors branch September 30, 2026 13:27
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.

1 participant