Skip to content

Combine Dependabot PRs and raise CI Node to 22.20.0 - #19

Merged
Mudaafi merged 14 commits into
mainfrom
combined-dependabot-upgrades
Oct 14, 2026
Merged

Mudaafi merged 14 commits into
mainfrom
combined-dependabot-upgrades

Conversation

@Mudaafi

@Mudaafi Mudaafi commented Oct 14, 2026

Copy link
Copy Markdown
Contributor

Combines the six open Dependabot PRs onto main and raises CI's Node version so the upgraded tooling can actually run.

Supersedes #9, #12, #13, #14, #17, #18. Dependabot's original commits are preserved in the history; the package-lock.json conflicts between them were resolved by re-resolving the tree from the merged package.json.

Dependency updates

Package From To
eslint 9.39.2 10.12.0
@eslint/js 9.39.2 10.0.1
vite 7.3.1 8.3.4
@vitejs/plugin-react 5.1.1 5.2.0
typescript-eslint 8.54.0 8.71.2
eslint-plugin-react-hooks 7.0.1 7.1.1
postcss 8.5.6 8.5.30
nanoid 3.3.11 3.3.20
source-map-js 1.2.1 1.2.2
brace-expansion 2.0.2 5.0.12

Three things reviewers should know

1. eslint-plugin-react-hooks 7.0.1 → 7.1.1 was mandatory, not opportunistic. ESLint 10 falls outside the peer range 7.0.1 declares, so npm ci fails outright with ERESOLVE. 7.1.1 is the first release accepting ^10.0.0. This is why #12 could not have merged green on its own.

2. CI's Node was below its own dependencies' floor. All workflows pinned 18.13.0, but ESLint 10 and Vite 8 declare ^20.19.0 || ^22.13.0 || >=24. Workflows now pin 22.20.0. The deprecated actions/checkout@v2,v3 and actions/setup-node@v2 are bumped to v4 in the same pass.

Worth noting: CI reported no checks at all on #9 and #12, so none of this surfaced upstream.

3. #14 and #9 are satisfied incidentally and can be closed rather than merged. ESLint 10 no longer depends on @eslint/eslintrc (which brought in js-yaml), and Vite 8 bundles rolldown instead of esbuild — both target packages leave the tree entirely.

Deliberate exclusion: constructorio-ui-plp held at 1.8.0

No Dependabot PR asked to move it, and letting it float to 1.20.0 has two side effects worth their own PR:

  • It pulls in @constructor-io/constructorio-ui-components → @tailwindcss/vite → lightningcss (MPL-2.0) as a production dependency, which fails npm run check-license — MPL-2.0 is not on the allowlist.
  • It bumps @constructor-io/constructorio-client-javascript 2.73.1 → 2.94.0, i.e. 21 minor versions of the live API client — a runtime behaviour change that shouldn't ride along in a lockfile merge.

With it pinned, the production dependency tree is unchanged from main apart from react/react-dom 19.2.4 → 19.3.0.

Verification (local, Node 22.20.0)

Check Result
npm ci ✅ clean
npm run lint ✅ no errors
tsc --noEmit ✅ clean
npm run build:plp ✅ 364.63 kB (gzip 106.82 kB)
cspell ✅ 0 issues
npm audit ✅ 0 vulnerabilities
Bundle smoke test ✅ IIFE evaluates, exposes CioPlp global
npm run check-license ⚠️ see below

Pre-existing: check-license fails on main too

license-checker reads the root package as UNLICENSED (private: true, no resolvable license field), so the job exits non-zero. I confirmed this fails identically on a clean main worktree — it is not caused by these upgrades, but it does mean the job is currently red on every PR. Every dependency license passes the allowlist. Happy to fix it here or separately.

New Vite 8 build warnings (non-fatal)

(!) Your Vite config uses features that are unsupported by `configLoader: 'native'`:
  - `__dirname` (vite.config.ts:18:20). Use `import.meta.dirname` instead

WARN  inlineDynamicImports option is ignored because codeSplitting: false is set.

Both build fine today but will matter in a future Vite major. Left alone to keep this PR to dependencies.

🤖 Generated with Claude Code

dependabot Bot and others added 13 commits June 14, 2026 12:31
Removes [esbuild](https://github.com/evanw/esbuild). It's no longer used after updating ancestor dependencies [esbuild](https://github.com/evanw/esbuild), [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/tree/HEAD/packages/plugin-react) and [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite). These dependencies need to be updated together.


Removes `esbuild`

Updates `@vitejs/plugin-react` from 5.1.2 to 5.2.0
- [Release notes](https://github.com/vitejs/vite-plugin-react/releases)
- [Changelog](https://github.com/vitejs/vite-plugin-react/blob/plugin-react@5.2.0/packages/plugin-react/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite-plugin-react/commits/plugin-react@5.2.0/packages/plugin-react)

Updates `vite` from 7.3.1 to 8.0.16
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v8.0.16/packages/vite)

---
updated-dependencies:
- dependency-name: esbuild
  dependency-version:
  dependency-type: indirect
- dependency-name: "@vitejs/plugin-react"
  dependency-version: 5.2.0
  dependency-type: direct:development
- dependency-name: vite
  dependency-version: 8.0.16
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [brace-expansion](https://github.com/juliangruber/brace-expansion) to 5.0.9 and updates ancestor dependencies [brace-expansion](https://github.com/juliangruber/brace-expansion), [eslint](https://github.com/eslint/eslint) and [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint). These dependencies need to be updated together.


Updates `brace-expansion` from 2.0.2 to 5.0.9
- [Release notes](https://github.com/juliangruber/brace-expansion/releases)
- [Commits](juliangruber/brace-expansion@v2.0.2...v5.0.9)

Updates `eslint` from 9.39.2 to 10.8.0
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](eslint/eslint@v9.39.2...v10.8.0)

Updates `typescript-eslint` from 8.54.0 to 8.65.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.65.0/packages/typescript-eslint)

---
updated-dependencies:
- dependency-name: brace-expansion
  dependency-version: 5.0.9
  dependency-type: indirect
- dependency-name: eslint
  dependency-version: 10.8.0
  dependency-type: direct:development
- dependency-name: typescript-eslint
  dependency-version: 8.65.0
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [postcss](https://github.com/postcss/postcss) from 8.5.6 to 8.5.25.
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](postcss/postcss@8.5.6...8.5.25)

---
updated-dependencies:
- dependency-name: postcss
  dependency-version: 8.5.25
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [js-yaml](https://github.com/nodeca/js-yaml) from 4.1.1 to 4.3.1.
- [Changelog](https://github.com/nodeca/js-yaml/blob/4.3.1/CHANGELOG.md)
- [Commits](nodeca/js-yaml@4.1.1...4.3.1)

---
updated-dependencies:
- dependency-name: js-yaml
  dependency-version: 4.3.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps  and [brace-expansion](https://github.com/juliangruber/brace-expansion). These dependencies needed to be updated together.

Updates `brace-expansion` from 1.1.12 to 1.1.21
- [Release notes](https://github.com/juliangruber/brace-expansion/releases)
- [Commits](juliangruber/brace-expansion@v1.1.12...v1.1.21)

Updates `brace-expansion` from 2.0.2 to 2.1.7
- [Release notes](https://github.com/juliangruber/brace-expansion/releases)
- [Commits](juliangruber/brace-expansion@v1.1.12...v1.1.21)

---
updated-dependencies:
- dependency-name: brace-expansion
  dependency-version: 1.1.21
  dependency-type: indirect
- dependency-name: brace-expansion
  dependency-version: 2.1.7
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [source-map-js](https://github.com/7rulnik/source-map-js) from 1.2.1 to 1.2.2.
- [Release notes](https://github.com/7rulnik/source-map-js/releases)
- [Changelog](https://github.com/7rulnik/source-map-js/blob/main/CHANGELOG.md)
- [Commits](7rulnik/source-map-js@v1.2.1...v1.2.2)

---
updated-dependencies:
- dependency-name: source-map-js
  dependency-version: 1.2.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
…8.5.25' into combined-dependabot-test

# Conflicts:
#	package-lock.json
…52c55c59' into combined-dependabot-test

# Conflicts:
#	package-lock.json
#	package.json
Merges the six open Dependabot PRs (#9, #12, #13, #14, #17, #18) onto
main and resolves the package-lock.json conflicts by re-resolving the
tree from the merged package.json.

Dependency updates:
- eslint 9.39.2 -> 10.12.0 (+ @eslint/js 10.0.1)
- vite 7.3.1 -> 8.3.4 (+ @vitejs/plugin-react 5.2.0)
- typescript-eslint 8.54.0 -> 8.71.2
- postcss, nanoid, source-map-js, brace-expansion to current patches

ESLint 10 drops the peer range that eslint-plugin-react-hooks 7.0.1
declared, so that plugin is bumped to 7.1.1 (the first release
accepting ^10). Without it `npm ci` fails outright with ERESOLVE.

PRs #14 (js-yaml) and #9 (esbuild) are satisfied incidentally: ESLint 10
no longer depends on @eslint/eslintrc (js-yaml) and Vite 8 bundles
rolldown instead of esbuild, so both packages leave the tree.

CI ran Node 18.13.0, which is below the ^20.19.0 || ^22.13.0 || >=24
floor that ESLint 10 and Vite 8 declare; all workflows now pin 22.20.0.
Also bumps the deprecated actions/checkout@v2,v3 and
actions/setup-node@v2 to v4.

constructorio-ui-plp is held at 1.8.0. Allowing it to float to 1.20.0
pulls in @constructor-io/constructorio-ui-components, which depends on
@tailwindcss/vite and thus lightningcss (MPL-2.0) as a production
dependency, failing npm run check-license.

Verified locally on Node 22.20.0: npm ci, lint, tsc --noEmit, build,
and cspell all pass, npm audit reports 0 vulnerabilities, and the built
IIFE evaluates and exposes the CioPlp global.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@Mudaafi
Mudaafi requested a review from a team as a code owner October 14, 2026 13:34
Raising this job to 22.20.0 made `diffend npm install` fail with
"npm error s.warn is not a function" -- diffend's npm wrapper does not
support the npm that ships with Node 22. The job only runs npm install
for the supply-chain scan and never invokes eslint or vite, so it does
not need the newer runtime.

The lint, license-check and spell-check jobs stay on 22.20.0, which is
what ESLint 10 and Vite 8 require.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@Mudaafi
Mudaafi merged commit 5616092 into main Oct 14, 2026
5 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