platform icon indicating copy to clipboard operation
platform copied to clipboard

feature: upgrade typescript-eslint and node packages to latest versions

Open DeepDN opened this issue 3 months ago • 2 comments

  • Upgrade @typescript-eslint/eslint-plugin from ^6.2.1 to ^8.14.0
  • Upgrade @typescript-eslint/parser from ^6.2.1 to ^8.14.0
  • Upgrade eslint from ^8.46.0 to ^9.14.0
  • Migrate from legacy .eslintrc.js to flat config eslint.config.js
  • Update @types/node from ^20.4.6 to ^22.9.0
  • Update typescript from ^5.1.6 to ^5.6.3
  • Update prettier and related plugins to latest versions
  • Update Node.js engine requirement from >=18 to >=20 (LTS)
  • Add @eslint/js dependency for flat config support
  • Remove outdated eslint plugins no longer needed
  • Create migration guide documentation
  • Backup original .eslintrc.js configuration

Resolves: #1478

Summary by CodeRabbit

  • Chores
    • Upgraded ESLint and related tooling to latest versions.
    • Migrated to new ESLint configuration format.
    • Updated minimum Node.js version requirement to 20.
    • Updated development dependencies including TypeScript and Prettier.

DeepDN avatar Nov 03 '25 17:11 DeepDN

Walkthrough

This pull request migrates ESLint configuration from v8 (legacy format) to v9 (flat config), updates TypeScript-ESLint and related tooling to major versions, increases the Node.js engine requirement from >=18 to >=20, and includes migration documentation and configuration backups.

Changes

Cohort / File(s) Summary
ESLint v9 Flat Config
eslint.config.js
New ESLint v9 flat configuration file replacing legacy .eslintrc.js. Exports default array with @eslint/js recommended preset, TypeScript parser configuration for .ts/.tsx files, @typescript-eslint and prettier plugins, comprehensive rules for strictness (no-console, no-unused-vars, no-explicit-any), and ignore patterns.
Configuration Migration & Backup
ESLINT_MIGRATION.md, .eslintrc.js.backup
Added migration guide documenting the transition from ESLint v8 to v9 with setup steps and verification commands. Backup of legacy ESLint configuration with v8 rules preserved.
Dependency & Version Updates
package.json
Major version bumps: @typescript-eslint/* (v6→v8), eslint (v8→v9), prettier (v3.0→v3.3), @types/node (v20→v22); added @eslint/js v9.14.0; updated eslint-config-prettier, eslint-plugin-prettier, eslint-plugin-promise. Node.js engine requirement increased from >=18 to >=20.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

  • The changes are cohesive and migration-focused, reducing heterogeneity
  • Requires careful validation that the new eslint.config.js preserves all critical rules from the backed-up legacy config
  • Major version bumps across multiple interdependent tools (ESLint, TypeScript-ESLint, Prettier) require cross-compatibility verification
  • Node.js version constraint change (>=18 to >=20) should be verified against platform requirements
  • May benefit from testing the new lint rules against the codebase to detect any unexpected failures

Areas requiring extra attention:

  • Comparison of rules in eslint.config.js vs .eslintrc.js.backup to ensure no regressions or loss of strictness
  • Verification that @eslint/js integration and globals (node, jest) function correctly in the flat config
  • Validation of Prettier/ESLint conflict resolution in the new config
  • Testing compatibility of TypeScript type definitions bump (@types/node v22)

Poem

🐰 Hop, hop—the linting rules now rise,
From legacy v8 to v9 skies,
Flat configs dance, dependencies bloom,
TypeScript and Prettier clear the room,
A fresher Node.js fills the air,
ESLint's migration—handled with care! 🌟

Pre-merge checks and finishing touches

✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The PR title 'feature: upgrade typescript-eslint and node packages to latest versions' clearly and concisely summarizes the main objective of the changeset. It directly references the primary changes: upgrading typescript-eslint packages and node-related packages to their latest versions. The title is specific enough to convey the core intent without being overly verbose.
Linked Issues check ✅ Passed The pull request successfully addresses all coding-related objectives from linked issue #1478. It upgrades typescript-eslint packages (@typescript-eslint/eslint-plugin and @typescript-eslint/parser) to version ^8.14.0, upgrades ESLint from ^8.46.0 to ^9.14.0, updates @types/node to ^22.9.0, updates TypeScript and related tooling, and migrates the ESLint configuration from legacy .eslintrc.js to the flat config approach (eslint.config.js) as required by the ESLint migration guide.
Out of Scope Changes check ✅ Passed All changes in the pull request are directly related to the scope defined in issue #1478. The modifications include package upgrades (typescript-eslint, eslint, node types, typescript, prettier), migration from legacy to flat ESLint configuration, updated Node.js engine requirement to >=20, and supporting documentation. No extraneous changes outside the stated objectives are present.
✨ Finishing touches
  • [ ] 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • [ ] Create PR with unit tests
  • [ ] Post copyable unit tests in a comment

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

coderabbitai[bot] avatar Nov 03 '25 17:11 coderabbitai[bot]