Skip to content

Upgrade core deps and modernize lint stack - #402

Merged
jhesch merged 1 commit into
mainfrom
upgrade-deps
Apr 27, 2026
Merged

jhesch merged 1 commit into
mainfrom
upgrade-deps

Conversation

@jhesch

@jhesch jhesch commented Apr 27, 2026

Copy link
Copy Markdown
Owner

Brings the toolchain up to current versions to unblock @actions/github
v9 and @octokit/rest v22 (both now ESM-only).

  • TypeScript 4.3 -> 5.9; tsconfig switched to ES2022 / module esnext /
    moduleResolution bundler with skipLibCheck for octokit interop.
  • Jest 26 -> 30, ts-jest 26 -> 29, nock 13 -> 14 (needed for fetch
    interception now that @octokit/request uses native fetch). Jest
    config moved to ESM mode (useESM, extensionsToTreatAsEsm,
    --experimental-vm-modules).
  • Replaced @typescript-eslint/parser v4 + eslint v7 +
    eslint-plugin-github v4 with eslint 9 + typescript-eslint 8;
    migrated config from .eslintrc.json to flat eslint.config.js. Drops
    the github preset (transitive bloat for rules we don't use) and the
    ts-eslint stylistic rules now owned by @Stylistic.

Source adjustments for the new APIs:

  • octokit.repos.X -> octokit.rest.repos.X
  • guarded response.data.files (now optional) and coerced
    DiffEntry.sha (now string | null)
  • narrowed unknown error before reading .message
  • replaced ternary-as-statement and removed unnecessary type
    assertion that the new lint rules flagged

Tests updated for ESM imports and Jest 30 (toThrowError -> toThrow).

Brings the toolchain up to current versions to unblock @actions/github
v9 and @octokit/rest v22 (both now ESM-only).

- TypeScript 4.3 -> 5.9; tsconfig switched to ES2022 / module esnext /
  moduleResolution bundler with skipLibCheck for octokit interop.
- Jest 26 -> 30, ts-jest 26 -> 29, nock 13 -> 14 (needed for fetch
  interception now that @octokit/request uses native fetch). Jest
  config moved to ESM mode (useESM, extensionsToTreatAsEsm,
  --experimental-vm-modules).
- Replaced @typescript-eslint/parser v4 + eslint v7 +
  eslint-plugin-github v4 with eslint 9 + typescript-eslint 8;
  migrated config from .eslintrc.json to flat eslint.config.js. Drops
  the github preset (transitive bloat for rules we don't use) and the
  ts-eslint stylistic rules now owned by @Stylistic.

Source adjustments for the new APIs:
- octokit.repos.X -> octokit.rest.repos.X
- guarded response.data.files (now optional) and coerced
  DiffEntry.sha (now string | null)
- narrowed unknown error before reading .message
- replaced ternary-as-statement and removed unnecessary type
  assertion that the new lint rules flagged

Tests updated for ESM imports and Jest 30 (toThrowError -> toThrow).
@jhesch
jhesch merged commit 4d784f8 into main Apr 27, 2026
3 checks passed
@jhesch
jhesch deleted the upgrade-deps branch April 27, 2026 20:38
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.

1 participant