feature: upgrade typescript-eslint and node packages to latest versions
- 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.
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.jspreserves 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.jsvs.eslintrc.js.backupto 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.
Comment @coderabbitai help to get the list of available commands and usage tips.
Quality Gate passed
Issues
0 New issues
0 Accepted issues
Measures
0 Security Hotspots
0.0% Coverage on New Code
0.0% Duplication on New Code