fix(deps): Clear all 109 Dependabot alerts in the vizard lockfiles - #11900
Conversation
Neither package is imported anywhere in `vizard/`. `react-router-dom` appeared only as a `manualChunks` entry in `vite.config.ts`, and `toml` only collided by name with the `toml: 'toml'` Monaco language-id mapping in `src/monaco/config.ts` — nothing ever calls its parser. Closes 8 Dependabot alerts on `packages/cubejs-playground/vizard/yarn.lock`: | package | locked | advisories | | --- | --- | --- | | react-router | 6.22.3 | GHSA-wrjc-x8rr-h8h6, GHSA-337j-9hxr-rhxg, GHSA-2j2x-hqr9-3h42, GHSA-9jcx-v3wj-wh4m | | @remix-run/router | 1.15.3 | GHSA-2w69-qvjg-hvjx, GHSA-2j2x-hqr9-3h42 | | toml | 3.0.0 | GHSA-82x6-q7mm-w9cf, GHSA-v5mp-jgw5-2x6j | Removed via `yarn remove` so only those entries leave the lockfile — the rest of the tree is untouched. A full regeneration is not an option here: it floats the react-aria family from 3.35.x to 3.52.x, which drops `useMessageFormatter` and breaks `@cube-dev/ui-kit`. Verified with `yarn build` in `packages/cubejs-playground/vizard` (builds both app templates, regenerates `src/apps.json` and `src/stats.json`, then builds the preview site). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
`vite@5.1.x` is where the entire cluster of dev-server path-traversal and `server.fs.deny` bypass advisories lives — 15 of them per lockfile, in all three vizard projects. Moving to 7.3.6 clears them and drags the bundler chain forward with it. Closes 64 Dependabot alerts across the three vizard lockfiles: | package | before | after | alerts | | --- | --- | --- | ---: | | vite | 5.1.4 / 5.1.6 | 7.3.6 | 45 | | rollup | 4.12.0 / 4.13.0 | 4.63.1 | 6 | | postcss | 8.4.35 / 8.4.36 | 8.5.28 | 8 | | esbuild | 0.19.12 | 0.28.2 | 3 | | @babel/core | 7.24.0 | 7.29.7 | 2 | `@vitejs/plugin-react` goes `^4.2.1` -> `^5.2.0` for the vite 7 peer range. Applied with `yarn upgrade <pkg>@<range>` rather than regenerating the lockfiles, so only the bundler subtree moves; in particular the react-aria family stays at 3.35.x, which `@cube-dev/ui-kit` still needs. Verified with `yarn build` in `packages/cubejs-playground/vizard`: both app templates build, both download zips and both preview bundles are produced, and the preview site builds. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The vizard preview and both starter templates still declared `@cubejs-client/* ^0.35.0` — a client two majors behind what the monorepo publishes, which is also what users got when they downloaded a template zip. `@cubejs-client/core@0.35.0` is the sole reason `uuid@8.3.2` was in the tree. Bumped alongside it: `styled-components ^6.1.8` -> `^6.5.3`, which dropped its `postcss` dependency and with it the last `postcss@8.4.31` copy in the preview. Closes 7 Dependabot alerts across the three vizard lockfiles: | package | before | after | alerts | | --- | --- | --- | ---: | | uuid | 8.3.2 | 11.1.1 | 3 | | postcss | 8.4.31 (preview only) | 8.5.28 | 4 | Still open in the preview lockfile: `@babel/core@7.24.1`, pinned by the `@vitejs/plugin-react@4.2.1` that `@cube-dev/ui-kit@0.33.4` carries as a direct dependency. Verified with `yarn build` in `packages/cubejs-playground/vizard` — `tsc` passes against the 1.7 client types in all three projects. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…iles These three come in through the eslint 8 / @typescript-eslint 7 toolchain that all three vizard projects share. `yarn upgrade` cannot reach them — yarn 1 only operates on declared dependencies — so the lockfile entries were stripped and re-resolved against their recorded ranges. `minimatch@9.0.3` was pinned exactly by `@typescript-eslint/typescript-estree@7.3.1`, so the linter packages move to `^8.70.0` (which uses `minimatch ^10.2.2`); eslint itself stays at 8.57.0, still inside the v8 peer range. Closes 26 Dependabot alerts across the three vizard lockfiles: | package | before | after | alerts | | --- | --- | --- | ---: | | js-yaml | 4.1.1 | 4.3.2 | 12 | | minimatch | 3.1.2, 5.1.6, 9.0.3 | 3.1.5, 5.1.9, 9.0.9, 10.2.6 | 11 | | picomatch | 2.3.1 | 4.0.7 (2.x gone) | 3 | `@typescript-eslint` 8 turns on `caughtErrors: 'all'` for `no-unused-vars`, which flagged three `catch (e)` bindings that are never read; they become optional catch bindings. `yarn lint` is back to its pre-existing 13 problems / 2 errors — it was already red before this change and is not run by CI. Verified with `yarn build` in `packages/cubejs-playground/vizard`. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
`@cube-dev/ui-kit@0.33.4` ships `@vitejs/plugin-react@4.2.1` as a direct dependency, which held a second `@babel/core@7.24.1` alongside the 7.29.7 that vite 7 pulls. Stripping both entries re-resolves them onto one 7.29.7 block. Closes 1 Dependabot alert (GHSA-4x5r-pxfx-6jf8, `@babel/core <= 7.29.0`) on `packages/cubejs-playground/vizard/yarn.lock`. Verified with `yarn build` in `packages/cubejs-playground/vizard`. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
`lodash@^4.17.15` came in through the eslint toolchain and was pinned at 4.17.21. Stripping the entry re-resolves it to 4.18.1, above all three open advisories. Closes 3 Dependabot alerts on `packages/cubejs-playground/vizard/yarn.lock`: GHSA-r5fr-rjxr-66jc, GHSA-f23m-r3pf-42rh, GHSA-xxjr-mmjv-4gpg. Verified with `yarn build` in `packages/cubejs-playground/vizard`. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…rt.js Both starter templates shipped as `"name": "vizard-react-typescript-chartjs"`, and the antd/table one carried `chart.js` + `react-chartjs-2` it never imports — copy-paste leftovers that users inherit when they download the zip. No Dependabot alerts involved. Verified with `yarn build` in `packages/cubejs-playground/vizard`. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Claude finished @ovr's task in 6m 42s —— View job Review complete — no blockers; 0 high, 0 medium, 3 low (all posted inline)Full review
What holds up
Findings (all low, all posted inline)
Not verified
Review threadsThe listing returned 0 threads on this PR (none mine, none human) — nothing to resolve, and no finding was skipped as a duplicate. |
| "@cubejs-client/core": "^0.35.0", | ||
| "@cubejs-client/react": "^0.35.0", | ||
| "@cubejs-client/core": "^1.7.37", | ||
| "@cubejs-client/react": "^1.7.37", |
There was a problem hiding this comment.
@cubejs-client/react is in exactly the position react-router-dom was in before this PR: nothing under vizard/src imports it — the only reference is the clients entry in vite.config.ts:17, which forces it into a manual chunk and so into the preview bundle. @cubejs-client/core next to it is imported, but only for types (src/types.ts:1, src/Vizard.tsx:1, src/Setup.tsx:11), so the clients chunk is shipping two runtime libraries the preview never calls.
Dropping @cubejs-client/react and the clients manualChunks entry (leaving @cubejs-client/core as a devDependency for the types) applies the same rule the react-router-dom/toml commit already established. Out of scope if you'd rather keep this PR purely lockfile-shaped — but then the two cases read inconsistently.
The per-package `yarn upgrade` passes in this branch each pulled in a fresh copy of a transitive dep without retiring the old one, so the three lockfiles ended up carrying two resolutions of packages whose ranges one version already satisfies. Master had none of these. | package | duplicate versions | collapsed to | lockfiles | | --- | --- | --- | --- | | @babel/helper-plugin-utils | 7.24.0, 7.29.7 | 7.29.7 | preview | | @babel/plugin-transform-react-jsx-self | 7.24.1, 7.29.7 | 7.29.7 | preview | | @babel/plugin-transform-react-jsx-source | 7.24.1, 7.29.7 | 7.29.7 | preview | | @jridgewell/gen-mapping | 0.3.5, 0.3.13 | 0.3.13 | preview | | @jridgewell/trace-mapping | 0.3.25, 0.3.31 | 0.3.31 | preview | | csstype | 3.1.3, 3.2.3 | 3.2.3 | preview | | @eslint-community/eslint-utils | 4.4.0, 4.10.1 | 4.10.1 | all three | | @eslint-community/regexpp | 4.10.0, 4.12.2 | 4.12.2 | all three | | @jridgewell/sourcemap-codec | 1.4.15, 1.6.0 | 1.6.0 | all three | | debug | 4.3.4, 4.4.3 | 4.4.3 | all three | Collapsing `debug` orphaned `ms@2.1.2` and collapsing `@jridgewell/gen-mapping` orphaned `@jridgewell/set-array`; `yarn install` pruned both. No package gains a version — the diff is deletions plus the merged spec keys — and the four `minimatch` majors stay as they are, since no single version spans them. Verified with `yarn install --frozen-lockfile` and `yarn build` in all three packages, a from-scratch install+build of both downloadable zips, the playground's own `yarn build`, and a headless load of the built vizard (both the standalone bundle and the copy shipped in cubejs-server-core/playground) with zero console errors. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #11900 +/- ##
=======================================
Coverage 60.67% 60.67%
=======================================
Files 240 240
Lines 19297 19297
Branches 3914 3914
=======================================
Hits 11709 11709
Misses 7040 7040
Partials 548 548
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
|
Claude finished @ovr's task in 5m 34s —— View job Review round 4 — no new findings; 3 prior threads re-affirmed, 0 resolved. (0 new high/medium/low) Review detail
Review threadsListing returned 3 unresolved threads, all mine. 0 resolved — each concern is still reproducible on the branch:
Both findings I arrived at this round (the vite 7 Node floor, and What I verified
I could not independently confirm the "109 alerts closed" count — |
…s peer bound `@typescript-eslint/eslint-plugin@8` declares `eslint: ^8.57.0 || ^9.0.0 || ^10.0.0`, but both downloadable templates still advertised `eslint: ^8.56.0` — a range a user's own install could satisfy below the plugin's peer bound. The preview shell was already on `^8.57.0`. Re-resolving picks up the final 8.x release and its transitive bumps: | package | before | after | | --- | --- | --- | | eslint | 8.57.0 | 8.57.1 | | @eslint/js | 8.57.0 | 8.57.1 | | @humanwhocodes/config-array | 0.11.14 | 0.13.0 | | @humanwhocodes/object-schema | 2.0.2 | 2.0.3 | Nothing else moves, and neither lockfile gains a duplicate. Verified with `yarn install --frozen-lockfile`, `yarn build` and `yarn lint` in both templates, a rebuild of the vizard bundle, and a from-scratch install + build of both regenerated download zips. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Claude finished @ovr's task in 4m 43s —— View job Review: no new findings — 1 prior finding still live (
|
It pinned `18.19.1`, which vite 7 and `@vitejs/plugin-react` 5 (both `^20.19.0 || >=22.12.0`) refuse to run on, so anyone honouring the pin was on an unsupported Node for this package. Rather than keep a second Node contract in sync, delete it: `nvm use` walks up from `vizard/` and finds the repo root `.nvmrc` (24.18.0), which is what CI installs and what every other package in the tree already relies on. Nothing referenced this file — the only `node-version-file` in CI points at the root one. Verified by wiping node_modules and running `yarn install --frozen-lockfile` plus `yarn build` in `vizard/` under Node 24.18.0: green, no engine warnings. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Claude finished @ovr's task in 7m 45s —— View job Reviewed — no blockers; 1 low posted inline, 1 prior thread re-affirmedReview detail
What holds upThe targeted-upgrade approach is verifiable from the lockfiles themselves. All three resolve Spot-checking the hand-edited entries for internal consistency: The dep removals check out against the source. Posted inline
Review threadsThe listing returned 2 of my own unresolved threads. Resolved 1 ( Not verified
|
| "eslint-plugin-react-refresh": "^0.4.5", | ||
| "typescript": "^5.2.2", | ||
| "vite": "^5.1.4" | ||
| "vite": "^7.3.6" |
There was a problem hiding this comment.
vite 7 requires Node ^20.19.0 || >=22.12.0 and @vitejs/plugin-react 5 the same, but neither starter template declares engines, and the only Node pin in the tree (vizard/.nvmrc, 18.19.1) is deleted in this PR. A user who downloads the zip on Node 18 — still the pin this repo shipped until this commit — gets vite's bare You are using Node.js 18.x. Vite requires Node.js version 20.19+ or 22.12+. and no hint from the template that the requirement changed.
Adding the field to both apps/*/package.json makes yarn install say it up front:
"engines": {
"node": "^20.19.0 || >=22.12.0"
},
Split out of #11853, which was getting large. Closes all 109 open Dependabot alerts across the three
packages/cubejs-playground/vizardlockfiles — the preview shell and both downloadable starter templates — as 7 independently revertable commits, touching nothing outsidepackages/cubejs-playground/vizard/. The lockfiles could not simply be regenerated: a full regen floats the react-aria family from 3.32.x to 3.52.x, which droppeduseMessageFormatterand breaks@cube-dev/ui-kitat build time, so every change here is a targetedyarn upgrade <pkg>@<range>or a stripped-and-re-resolved lockfile entry. Along the wayreact-router-domandtomlcame out entirely — both were declared but never imported (react-router-domappeared only as amanualChunksentry invite.config.ts), and the starter templates now hand users a current@cubejs-client/*instead of^0.35.0.Check List
Verification
Nothing in PR CI installs or builds vizard — it is built only by
publish.ymlvialerna run build->build:vizard->build-apps.js— so every commit was verified locally withyarn buildinpackages/cubejs-playground/vizard, which builds both app templates, regeneratessrc/apps.json/src/stats.json, produces both download zips and both preview bundles, and then builds the preview site.@typescript-eslint8 (needed to unpinminimatch@9.0.3) turns oncaughtErrors: 'all', which flagged three never-readcatch (e)bindings; they became optional catch bindings, andyarn lintis back to its pre-existing 13 problems / 2 errors — it was already red before this change and is not run by CI.🤖 Generated with Claude Code