Skip to content

chore: update all dependencies #78

Description

@michaeldistel

@thiagoralves it would be a good idea to update the dependencies but only when you finished with the last phase and before next release.

Update all outdated packages. Impact analysis below.

Non-major (low risk, just run npm update)

Package Current Latest Impact
chevrotain 11.0.3 11.2.0 patch/minor fixes to the parser DSL; no API changes expected
esbuild 0.27.0 0.27.3 bundler bug fixes; no config changes needed
prettier 3.7.4 3.8.1 formatter updates; may reformat some files, run npm run format after

Major bumps (require manual migration work)

vitest + @vitest/coverage-v8: 1.x → 4.x

Impact: medium. 3 major versions (v2, v3, v4). Key breaking changes:

  • v2: vi.spyOn and expect type changes; browser mode API overhaul (not used here)
  • v3: Reporter API rewritten (onTaskUpdate removed); workspace config moved inline; test filtering by line number added
  • v4: (incremental on v3, mostly performance/stability)
  • Action needed: check vite.config.ts reporter usage; likely zero code changes needed since this project uses only basic describe/it/expect/beforeEach APIs. Run tests and fix any failures.

@typescript-eslint/eslint-plugin + @typescript-eslint/parser: 7.x → 8.x

Impact: medium. Key breaking changes:

  • ban-types rule deleted; replaced by no-empty-object-type, no-unsafe-function-type, no-wrapper-object-typescurrent config uses recommended which inherited ban-types; will get new rules automatically
  • no-var-requires deprecated in favour of no-require-imports
  • no-throw-literal removed in favour of only-throw-error
  • recommended-requiring-type-checking renamed to recommended-type-checkedcurrent .eslintrc.cjs uses old name; must update
  • Requires ESLint ^8.57.0 (already satisfied) and Node ^18.18.0 || ^20.9.0 (satisfied)
  • Action needed: rename plugin:@typescript-eslint/recommended-requiring-type-checkingplugin:@typescript-eslint/recommended-type-checked in .eslintrc.cjs; fix any new lint errors surfaced by added rules

eslint: 8.x → 10.x

Impact: high. Two major jumps (v9, v10):

  • v9: Legacy .eslintrc.* config format still supported but deprecated; flat config (eslint.config.*) is now default
  • v10: Drops Node 18 support (requires Node 20+, satisfied); removes several long-deprecated formatters and rules
  • Blocker: current config uses legacy .eslintrc.cjs format. v9/v10 will warn on every run. Full migration to flat config (eslint.config.mjs) is needed to silence warnings and stay supported.
  • Action needed: migrate .eslintrc.cjseslint.config.mjs with flat config syntax; also bumps typescript-eslint dependency since v8 of that package added ESLint v9 support

lint-staged: 15.x → 16.x

Impact: low. Breaking changes:

  • Drops --shell flag (not used in this project's config)
  • Switches subprocess runner from execa to nano-spawn; bare JS scripts now need explicit node prefix on Windows
  • Drops Node <20.18 (satisfied)
  • Action needed: none — current config only calls eslint and prettier --write, no shell tricks or JS scripts

@types/node: 20.x → 25.x

Impact: low. Type definitions only; no runtime effect. May expose new Node.js API types or change existing ones causing type errors.

  • Action needed: run npm run typecheck after update and fix any new type errors

Recommended order

  1. Non-major: npm update chevrotain esbuild prettier
  2. @types/node (isolated): update + typecheck
  3. lint-staged (isolated): update + test
  4. vitest + @vitest/coverage-v8 together: update + full test run
  5. @typescript-eslint/* + eslint together (coupled): update + migrate .eslintrc.cjs → flat config + fix lint errors + full test run

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions