Skip to content

Upgrade ESLint to 10 with a flat config - #70

Merged
ashirman merged 1 commit into
mainfrom
feature/rev-135-eslint
Oct 15, 2026
Merged

ashirman merged 1 commit into
mainfrom
feature/rev-135-eslint

Conversation

@revopushbot

Copy link
Copy Markdown
Contributor

Part of REV-135 (dependency cleanup, step 4). ESLint 8 is end-of-life. There's no change to runtime behaviour.

Changes

  • Dependencies:
    • eslint 8.45 → 10.11.0.
    • typescript-eslint 8.71.0 replaces the separate @typescript-eslint/parser and @typescript-eslint/eslint-plugin v6 packages.
    • The lock file shrinks from 323 to 298 packages, all of them still in use.
  • Config: eslint.config.mjs (ESLint's defineConfig extending tseslint.configs.base, with type information from projectService) replaces .eslintrc.json.
    • It keeps the old rules: no-var, prefer-const, eqeqeq, no-eval, and unused variables with _-prefixed names allowed.
  • Two new rules:
    • @typescript-eslint/consistent-type-assertions: the 103 old-style <Type>x casts were auto-fixed to x as Type.
    • @typescript-eslint/no-floating-promises: there were no violations. From now on, a promise that nobody awaits or handles fails lint.
  • Unused catch variables: typescript-eslint 8 now reports them by default, so the 12 unused ones are written as catch {.
  • Cleanups found in review (type-only):
    • Redundant casts removed: createHash(...) as any as stream.Transform, (chalk as any).dim, (knownLocations as any).find, and command as any in the two release flows.
    • resolve(null as void) → resolve() in the two bundler helpers. The SDK's release() and releaseNative() still resolve to null, as before.
    • collaborator remove cast its command to the add type when setting email. It now uses the remove type.

The source diff is mostly the cast rewrite.

Verification

  • Build, lint and format check: tsc, npm run lint (0 problems) and npm run format:check are clean.
  • Rules apply: every rule fires on a throwaway file with deliberate mistakes.
  • Tests: all 158 pass on macOS and on Linux (Docker, Node 20.19.0). Lint and the format check are clean on Linux too.

🤖 Generated with Claude Code

- eslint 8 → 10 and typescript-eslint 8; eslint.config.mjs replaces
  .eslintrc.json with the same rules
- Add consistent-type-assertions (casts use `x as T`) and
  no-floating-promises
- Drop unused catch bindings, now reported by default
- Remove casts that are no longer needed and fix the collaborator remove
  command's cast type

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@ashirman
ashirman merged commit e289a2c into main Oct 15, 2026
2 checks passed
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