Skip to content

Upgrade @typescript-eslint to v8 (from v6)#1956

Merged
rugpanov merged 2 commits into
mainfrom
deps/typescript-eslint-v8
Jul 3, 2026
Merged

Upgrade @typescript-eslint to v8 (from v6)#1956
rugpanov merged 2 commits into
mainfrom
deps/typescript-eslint-v8

Conversation

@rugpanov

@rugpanov rugpanov commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

Why

Replaces Dependabot's #1955, which bumped only @typescript-eslint/eslint-plugin to ^8.62.1 and failed CI because (a) it left parser/utils at ^6 (version mismatch → "No candidates found"), and (b) 8.62.1 is an alpha — only 8.62.0 is a stable release.

typescript-eslint v8 supports the repo's existing ESLint 8 / legacy .eslintrc setup (peer eslint: ^8.57.0 || ^9 || ^10), so this is a self-contained upgrade — no flat-config migration required.

What

  • Bump @typescript-eslint/{eslint-plugin,parser,utils}^8.62.0 (root + databricks-vscode package).
  • Bump eslint ^8.55.0^8.57.0 (v8's minimum peer; stays on ESLint 8, resolves to 8.57.1) across all three package.json files.
  • Add @types/semver@^7.5.0 as an explicit devDependency — it was previously present only transitively via typescript-eslint v6; v8 no longer pulls it in, and whatsNewPopup.ts imports semver.
  • Fix the 50 lint errors surfaced by v8's stricter defaults:
    • no-unused-vars (25): drop unused catch (e) bindings → bare catch {}.
    • no-require-imports (7): update stale no-var-requires disable directives to the renamed rule; convert import path = require("path")import * as path.
    • no-unused-expressions (16): rewrite 3 x && x() short-circuits in source as if (x) { x(); }; disable the rule for test/integ files (chai fluent + conditional assertions inherently trip it).
    • no-empty-object-type (2): replace empty interface X extends TreeItem {}type X = TreeItem.

Verification

  • eslint src --ext ts passes (0 errors); yarn install --immutable passes; yarn run build passes.
  • Resolved versions: plugin/parser 8.62.0, eslint 8.57.1.

Backward compatibility: dev/lint tooling + test-only assertion changes; no runtime, API, persisted-state, or config-format change to the shipped extension.

Closes #1955.

This pull request and its description were written by Isaac.

*Why*
Dependabot's #1955 bumped only @typescript-eslint/eslint-plugin to ^8.62.1 and
failed: (a) it left parser/utils at ^6 (version-mismatch), and (b) 8.62.1 is an
alpha — only 8.62.0 is a stable release. This does the upgrade properly.
typescript-eslint v8 supports the repo's existing ESLint 8 / legacy .eslintrc
setup (no flat-config migration required), so this is a self-contained bump.

*What*
- Bump @typescript-eslint/eslint-plugin, parser, and utils to ^8.62.0 (root +
  databricks-vscode package). Bump eslint ^8.55.0 -> ^8.57.0 (v8's minimum peer;
  stays on ESLint 8, resolves to 8.57.1) in all three package.json files.
- Add @types/semver ^7.5.0 as an explicit devDependency: it was previously only
  present transitively via typescript-eslint v6; v8 no longer pulls it in, and
  whatsNewPopup.ts imports semver.
- Fix the 50 lint errors surfaced by v8's stricter defaults:
  - no-unused-vars (25): drop unused `catch (e)` bindings -> bare `catch {}`.
  - no-require-imports (7): update stale `no-var-requires` disable directives to
    the renamed rule; convert `import path = require("path")` to `import * as`.
  - no-unused-expressions (16): rewrite 3 `x && x()` short-circuits in source as
    `if (x) { x(); }`; disable the rule for test/integ files (chai fluent + conditional
    assertions inherently trip it).
  - no-empty-object-type (2): replace empty `interface X extends TreeItem {}` with
    `type X = TreeItem`.

*Verification*
- `eslint src --ext ts` passes (0 errors); `yarn install --immutable` passes.
- `yarn run build` passes; resolved versions: plugin/parser 8.62.0, eslint 8.57.1.

Backward compatibility: dev/lint tooling + test-only assertions; no runtime, API,
persisted-state, or config-format change to the shipped extension.

Closes #1955.

Co-authored-by: Isaac
@rugpanov rugpanov temporarily deployed to test-trigger-is July 3, 2026 09:57 — with GitHub Actions Inactive
@rugpanov

rugpanov commented Jul 3, 2026

Copy link
Copy Markdown
Contributor Author

🤖 Integration tests triggered automatically for 478d5b13 via vscode-isolated-pr.yml.

Checks will be approved automatically on success.

@rugpanov

rugpanov commented Jul 3, 2026

Copy link
Copy Markdown
Contributor Author

Integration tests: https://github.com/databricks-eng/eng-dev-ecosystem/actions/runs/28653140957

TLDR: no regressions — 26 passing / 6 failing, matching the current e2e baseline. Zero Can't find view control "CONFIGURATION" (activation) failures, and none of the failures stem from the typescript-eslint v8 upgrade or the lint fixes (catch-binding, import, and if-block rewrites all behave correctly at runtime). The 6 reds are the known pre-existing environmental flakes (terraform-registry network, UC Item "access" not found, Login didn't finish, element click intercepted, ENOENT) that fail identically on main regardless of this change.

@rugpanov rugpanov temporarily deployed to test-trigger-is July 3, 2026 11:00 — with GitHub Actions Inactive
@github-actions

github-actions Bot commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

If integration tests don't run automatically, an authorized user can run them manually by following the instructions below:

Trigger:
go/deco-tests-run/vscode

Inputs:

  • PR number: 1956
  • Commit SHA: cc8d0e8e76f723825ee5f67340c02511e633f86c

Checks will be approved automatically on success.

@rugpanov rugpanov merged commit 2b6da70 into main Jul 3, 2026
6 of 7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants