chore(deps): consolidate Dependabot updates - #240
Conversation
Folds all 7 open Dependabot PRs into one change: eslint 9 (with the .eslintrc -> flat config migration and an optional catch binding), commitlint 20, prettier, lint-staged, js-yaml and two GitHub Actions majors. Closes #239
Resolve conflicts against the Dependabot PRs that auto-merged into master since this branch was opened. master wins wherever it is ahead: - .github/workflows/ci.yml: keep master's actions/checkout@v7 and actions/setup-node@v7; drop this branch's v6 hunk (now a downgrade). - @commitlint/cli / @commitlint/config-conventional: take master's ^21.2.2 over this branch's ^20.x. - package-lock.json: reset to master's and re-derived with npm install. The eslint 9 major (eslint ^9.39.1, @eslint/js, globals, .eslintrc -> eslint.config.mjs) and the parse-report.js optional-catch fix are preserved.
SociableSteve
left a comment
There was a problem hiding this comment.
Checked the bumps against what this repo actually touches. eslint 8 to 9 is the only one with real breakage here, and both halves are handled: the flat config exists and does its job, and the catch (error) to catch {} change in parse-report.js is exactly what eslint 9's new no-unused-vars caughtErrors: 'all' default requires.
I confirmed the config is not a silent no-op by linting a probe file: no-unused-vars fired on an unused catch binding, prettier/prettier, no-undef and no-empty all fired, and no-case-declarations correctly stayed quiet. The flat config also covers all 11 files in the repo, so there is no lint coverage regression, and globals.es2021 is a real export rather than an undefined spread.
Manifest and lockfile agree exactly, including the legacy dependencies tree (187 entries, no drift or orphans), and I queried the registry for each resolved version rather than trusting the lock. No engines field and everything here is a devDependency, so consumers are unaffected. npm ci clean, lint 0 problems, tests pass both halves.
One small thing for whoever touches the config next, not blocking: the comment at the top says the .mjs extension is required because the package is "type": "module". That is inverted. "type": "module" is precisely the case where eslint.config.js is already ESM and needs no rename (I renamed it and eslint loaded it fine); .mjs is what a CommonJS package would need. Also ecmaVersion: 2021 is carried over faithfully from the old .eslintrc, but flat config defaults to latest, and this is the natural moment to drop the cap.
Approving.
|
This PR is merged ( The correction is right and I confirmed both halves against
No other outstanding work — the eslint 8 -> 9 migration itself and the |
Consolidates the open Dependabot PRs into a single change.
Since this PR was opened,
github-action-merge-dependabotauto-merged a batch of freshDependabot PRs straight into
master.masterhas been merged in and, wherevermasteris now ahead,
masterwins — so four of the original targets are no longer part of thisdiff. They are listed as superseded below.
Dropped as superseded by
mastermasterMerging this PR's
.github/workflows/ci.ymlhunk would have downgraded both actions fromv7 back to v6, so that hunk is dropped entirely — this PR no longer touches any workflow
file. The commitlint pair is likewise taken from
masterat^21.2.2.Pipeline fixes needed to land eslint 9
.eslintrc→eslint.config.mjs. eslint 9 no longer reads.eslintrc. Faithful port:eslint:recommended+eslint-plugin-prettier's recommended config,ecmaVersion: 2021,sourceType: 'module', node + es2021 globals, and the repo's existingno-case-declarations: 'off'..mjsbecause this package is"type": "module".@eslint/jsand
globalsare added as explicit dev dependencies, since flat config imports them directly.Optional catch binding in
parse-report.js. eslint 9 changedno-unused-varsto reportunused caught errors by default (
caughtErrors: 'all'), flagging} catch (error) {in thefile:URL check where the binding is unused. Rewritten as} catch {rather than weakeningthe rule.
Verification
npm ci: ✅ lockfile resolvesnpm run lint: ✅ 0 problemsnpm test: ✅ both halves — thetest/e2e/compare.jsend-to-end comparison andtstychetype tests — matching the
masterbaselineThe flat config was also checked against input that must trip it, rather than trusting a
green run:
no-unused-varson an unused catch binding,prettier/prettier,no-dupe-keysand
no-undefall report as expected, andno-case-declarationscorrectly stays silent.The lockfile was reset to
master's and re-derived withnpm install; a version-by-versioncomparison confirms no package resolves lower than it does on
master.Closes #239