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
@M9nx
M9nx deleted the fix/vscode-toolchain-peers branch October 7, 2026 19:41
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