Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
5f6eb30
chore: modernize toolchain (TS 6, @oclif/core 5, Node 22, test-utils …
eablack Oct 7, 2026
9143cd4
style: re-enable pure-formatting eslint rules
eablack Oct 7, 2026
7f7213b
style: re-enable type-only syntax eslint rules
eablack Oct 7, 2026
b25cdd0
test: allow @oclif/core range change in packed-consumer verifier
eablack Oct 7, 2026
b5bea6f
refactor: re-enable behavior-preserving semantic eslint rules
eablack Oct 7, 2026
2fd448d
test: pass --ignoreConfig to isolated tsc in rollback verifier (TS6 T…
eablack Oct 7, 2026
5978b18
refactor: re-enable @typescript-eslint/promise-function-async
eablack Oct 7, 2026
2288059
refactor: re-enable 4 behavior-preserving semantic eslint rules
eablack Oct 7, 2026
47bd84c
refactor: re-enable 9 mechanical semantic eslint rules
eablack Oct 8, 2026
eefaf34
refactor: re-enable 9 more low-count safe eslint rules
eablack Oct 8, 2026
df4dc1f
refactor: re-enable 4 error-handling eslint rules
eablack Oct 8, 2026
2d0d076
refactor: re-enable @typescript-eslint/strict-void-return
eablack Oct 8, 2026
8dd1a9c
refactor: re-enable @typescript-eslint/restrict-template-expressions
eablack Oct 8, 2026
a6afaad
refactor: re-enable unicorn/no-array-sort and no-unsafe-string-replac…
eablack Oct 8, 2026
5629b0d
docs(eslint): document the final deferred-rules keep-off set and reasons
eablack Oct 8, 2026
f1f0fd8
refactor: re-enable unicorn/import-style
eablack Oct 8, 2026
6188612
fix: address PR review — mutex sync-throw stall and token leak via er…
eablack Oct 8, 2026
8b955d7
fix: revert RequestId static methods to explicit class references
eablack Oct 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/ci-acceptance.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ jobs:
fail-fast: false
matrix:
os: [windows-latest, ubuntu-latest, macos-latest]
node-version: [20.x, 22.x]
node-version: [22.x, 24.x]
env:
ACCEPTANCE_TESTS: 'true'
steps:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ jobs:
fail-fast: false
matrix:
os: [windows-latest, ubuntu-latest, macos-latest]
node-version: [20.x, 22.x]
node-version: [22.x, 24.x]
steps:
- name: Check out trusted action definition
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
Expand Down
2 changes: 1 addition & 1 deletion .tool-versions
Original file line number Diff line number Diff line change
@@ -1 +1 @@
nodejs 22.15.0
nodejs 24.21.0
63 changes: 61 additions & 2 deletions eslint.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@ export default [
'./lib',
'**/*.js',
'**/*.mjs',
// Not part of the compiled project (tsconfig excludes deprecated and does
// not include examples), so the type-aware parser cannot resolve them.
'examples/**',
'src/deprecated/**',
],
},
{
Expand All @@ -23,16 +27,71 @@ export default [
sourceType: 'module',
},
},
// The upgrade to eslint-config-oclif v7 made several directives in the
// existing code redundant. Leave them in place (and don't let `--fix`
// strip them) until the deferred cleanup below is tackled.
linterOptions: {
reportUnusedDisableDirectives: 'off',
},
rules: {
'camelcase': 'off',
'jsdoc/require-returns-check': 'off',
'mocha/max-top-level-suites': 'warn',
'n/no-deprecated-api': 'warn',
'unicorn/consistent-function-scoping': 'warn',
'unicorn/no-array-for-each': 'warn',
'unicorn/no-array-push-push': 'warn',
'unicorn/no-static-only-class': 'warn',
'unicorn/prefer-top-level-await': 'warn'
'unicorn/prefer-top-level-await': 'warn',
// Rules surfaced by the eslint-config-oclif v6 -> v7 upgrade that we have
// deliberately left OFF after re-enabling the rest of the newly-surfaced
// set one rule at a time. They are 'off' (not 'warn') on purpose: `eslint
// --fix` rewrites warn-level violations too, so a 'warn' here still lets a
// semantic fixer corrupt code. Each is kept off for one of these reasons:
//
// Behavior-changing fixers (auto-fix would alter runtime semantics):
// prefer-nullish-coalescing (|| vs ?? differ on '' / 0 / false),
// require-unicode-regexp (adding the u flag changes matching),
// unicorn/prefer-then-catch (.then(f,g) and .then(f).catch(g) catch
// different errors), unicorn/prefer-https (rewrites the http:// test
// fixtures that must stay http:// — this was the original burn).
//
// Type-unsafety family: the five no-unsafe-* rules flag genuine `any`
// flow from untyped API payloads; silencing them needs real typing
// work and is its own dedicated pass, not a mechanical cleanup.
//
// Structural / API / high-churn, no behavior benefit:
// import-x/no-cycle (real module cycles; breaking them is a refactor),
// consistent-type-assertions ('never' mode conflicts with the mock
// Config / HTTP<T> structural casts in tests), n/prefer-global/buffer,
// unicorn/consistent-class-member-order,
// unicorn/prefer-private-class-fields (_x -> #x changes visibility and
// breaks the reflective _-member access used in tests).
//
// Identifier-rename clusters (ripple across call sites / public API):
// no-shadow, unicorn/consistent-boolean-name,
// unicorn/no-non-function-verb-prefix.
//
// Intentional patterns: no-empty-function (empty stubs/noops in tests),
// no-restricted-types (needs type replacements, low value).
'@typescript-eslint/consistent-type-assertions': 'off',
'@typescript-eslint/no-empty-function': 'off',
'@typescript-eslint/no-restricted-types': 'off',
'@typescript-eslint/no-shadow': 'off',
'@typescript-eslint/no-unsafe-argument': 'off',
'@typescript-eslint/no-unsafe-assignment': 'off',
'@typescript-eslint/no-unsafe-call': 'off',
'@typescript-eslint/no-unsafe-member-access': 'off',
'@typescript-eslint/no-unsafe-return': 'off',
'@typescript-eslint/prefer-nullish-coalescing': 'off',
'import-x/no-cycle': 'off',
'n/prefer-global/buffer': 'off',
'require-unicode-regexp': 'off',
'unicorn/consistent-boolean-name': 'off',
'unicorn/consistent-class-member-order': 'off',
'unicorn/no-non-function-verb-prefix': 'off',
'unicorn/prefer-https': 'off',
'unicorn/prefer-private-class-fields': 'off',
'unicorn/prefer-then-catch': 'off',
},
},
]
Loading
Loading