Skip to content

fix(vscode): align TypeScript and typescript-eslint peer ranges - #102

Merged
M9nx merged 2 commits into
mainfrom
fix/vscode-toolchain-peers
Oct 3, 2026
Merged

M9nx merged 2 commits into
mainfrom
fix/vscode-toolchain-peers

Conversation

@M9nx

@M9nx M9nx commented Oct 3, 2026

Copy link
Copy Markdown
Owner

Refs #95 (release gate 3, PR 1 of 4) · tracker #101

Problem

npm ci in vscode-extension fails on main (efccb5a):

npm error ERESOLVE could not resolve
npm error While resolving: @typescript-eslint/eslint-plugin@6.21.0
npm error Found: @typescript-eslint/parser@8.70.1

Declared toolchain was typescript ^7.0.2, plugin ^6.0.0, parser ^8.70.1. Verified peer ranges (npm view @typescript-eslint/eslint-plugin@8.71.0 peerDependencies):

eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
typescript: >=4.8.4 <6.1.0
@typescript-eslint/parser: ^8.71.0

So TypeScript 7 is unsupported, and Dependabot #85 (plugin only → 8.70.1) cannot fix this alone.

Changes (2 commits)

  1. fix(vscode): align TypeScript and typescript-eslint peer ranges — typescript ~6.0.3 (tilde keeps it under the <6.1.0 peer ceiling), plugin + parser ^8.71.0; lockfile regenerated.
  2. build(vscode): declare node types explicitly for TypeScript 6 — TS 6 no longer includes all @types/* by default; add "types": ["node"].

Non-goals

Validation (local, Node 24.19.0 / npm 11.17.0)

Command Result
npm ci --ignore-scripts exit 0
npx tsc -p ./ exit 0 (TypeScript 6.0.3)
npm ls typescript @typescript-eslint/* eslint single deduped TS 6.0.3, ts-eslint 8.71.0, eslint 10.11.0; no peer errors
npm audit 0 vulnerabilities

npm run lint is expected to still fail until PR 2 (missing config) — unchanged from main.

GitHub evidence: note that the current ci-required does not exercise Node, so a green check here is not evidence for this change; the table above is.

Risk / rollback

Dev-only dependencies; extension runtime unaffected (compiled output only). Rollback: revert both commits.

Acceptance criteria advanced (#95)

M9nx added 2 commits October 3, 2026 22:21
Pin TypeScript to ~6.0.3 and both @typescript-eslint packages to ^8.71.0, whose peer range is typescript >=4.8.4 <6.1.0 and eslint ^8.57 || ^9 || ^10. Regenerate the lockfile so npm ci resolves without --force or --legacy-peer-deps.

Refs #95
TypeScript 6 no longer includes every @types package by default, so Node globals (process, setTimeout, built-in modules) must be listed in compilerOptions.types.

Refs #95
@M9nx

M9nx commented Oct 3, 2026

Copy link
Copy Markdown
Owner Author

Independent re-test (fresh worktrees, 2026-10-03) — PASS on stated scope.

Check main efccb5a PR 08f6259
npm ci --ignore-scripts exit 1 (ERESOLVE) exit 0, 0 vulnerabilities
npx tsc -p ./ — exit 0 (TS 6.0.3)
npm ls toolchain — single deduped TS 6.0.3 / ts-eslint 8.71.0 / eslint 10.11.0
remove "types": ["node"] → tsc — exit 2 (TS2591 ×5, TS2552) — line is required
npm run lint fails (no config) fails identically — pre-existing, #95 PR 2
vsce package fails (@types/vscode > engines.vscode) fails identically — pre-existing, #95 PR 5

Commits: 2, author M9nx only, no Co-authored-by, signatures verified by GitHub. Lockfile: all resolved URLs on registry.npmjs.org with integrity hashes. ~6.0.3 is a semver subset of the peer range >=4.8.4 <6.1.0.

CI: all 15 checks green incl. ci-required — but no CI job exercises vscode-extension, so the table above is the evidence for this change (Node CI tracked in #94 PR 3 / #95 PR 3).

@M9nx
M9nx merged commit 2a94db0 into main Oct 3, 2026
16 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant