Skip to content

chore: update all dependencies #78

@michaeldistel

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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions