Skip to content

fix(deps): Clear 230 of the 323 open npm Dependabot alerts - #11853

Open
ovr wants to merge 23 commits into
masterfrom
dependabot-js-alerts-table
Open

ovr wants to merge 23 commits into
masterfrom
dependabot-js-alerts-table

Conversation

@ovr

@ovr ovr commented Sep 11, 2026

Copy link
Copy Markdown
Member

Closes 230 of the 323 open npm Dependabot alerts across all five lockfiles, as 23 independently revertable commits — one logical change each, every one verified before the next was applied. Every fix is either a plain lockfile re-resolution or a direct bump of the parent that pinned the vulnerable version; no new resolutions entries were added (the only resolutions edit is raising the existing lodash floor from ^4.17.0 to ^4.18.0), because forcing qs@^6.16.0 that way turned out to break @cubejs-backend/api-gateway. Four dead dependencies came out along the way — cypress-plugin-snapshots, @ant-design/compatible (a CSS-only import dragging draft-js/immutable@3/node-fetch@1), and vizard's unused react-router-dom and toml — and aws-sdk v2, which hit end-of-support in September 2025, is gone entirely. .github/dependabot.yml was also pointed at the manifests that actually carry the alerts; it was scoped to /packages, so the root yarn.lock, docs-mintlify and the vizard lockfiles were never covered by version updates at all. The 93 that remain are structural: 44 are held by Angular 18's exact pins in cubejs-client-ngx (deliberately out of scope), 14 by node-gyp 9/10 under duckdb and @angular/cli, and the rest by upstream exact pins or have no patched release.

manifest closed still open of
packages/cubejs-playground/vizard/yarn.lock 47 0 47
.../vizard/apps/react-typescript-antd-table/yarn.lock 31 0 31
.../vizard/apps/react-typescript-chartjs-.../yarn.lock 31 0 31
docs-mintlify/yarn.lock 58 6 64
root yarn.lock 61 79 140
package.json manifests 2 8 10
total 230 93 323

Largest single wins: vite 5 -> 7 in vizard (45), testcontainers 10 -> 12 (12 undici), dropping cypress-plugin-snapshots (10), regenerating docs-mintlify on mintlify@4.2.887 (58), express -> 4.22.2 (6), and @ant-design/compatible (4).

Check List

  • Tests have been run in packages where changes have been made if available
  • Linter has been run for changed code
  • Tests for the changes have been added if not covered yet
  • Docs have been added / updated if required

Verification

yarn install --frozen-lockfile is a no-op after every commit, plus yarn tsc, yarn lint and yarn build. Unit suites: api-gateway 284/284, shared 455/455, query-orchestrator 146/146, server-core 117/117, clickhouse-driver 90/90, vue3 36/36, cubestore-driver 22/22, base-driver 17/17, plus cli/server/dremio/duckdb/ksql/pinot/trino/athena/crate/jdbc/prestodb/snowflake/sqlite/cloud/react/playground/maven/aurora — all green. Docker-backed: postgres-driver 12/12, mysql-driver 5/5, cubestore 3/3, and mysql-aurora-serverless-driver 3/3 against a real local-data-api + MySQL 5.6 stack, which is what proves the aws-sdk v2 -> v3 migration. yarn build:vizard builds both app templates, both download zips and the preview site.

Two suites fail identically on origin/master with the same tree, so neither is a regression: schema-compiler fails the same 12 of 954 tests on both, and @cubejs-backend/native fails the same 3 SQLInterface tests on both (a stale index.node copied from another checkout).

🤖 Generated with Claude Code

ovr and others added 23 commits September 11, 2026 17:36
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>
`docs-mintlify` has exactly one devDependency, `mintlify: "^4"`, and every
flagged package was an exact pin inside a `@mintlify/*` package — nothing there
is reachable by a targeted float. The lockfile had also drifted onto two
generations at once (`@mintlify/models` 0.0.255 *and* 0.0.292, hence two axios
copies). Regenerating collapses it onto 4.2.887.

Closes 58 of the 64 Dependabot alerts on `docs-mintlify/yarn.lock`:

| package | before | after | alerts |
| --- | --- | --- | ---: |
| axios | 1.10.0, 1.13.2 | 1.18.0 | 20 |
| tar | 6.1.15 | 7.5.21 | 8 |
| js-yaml | 3.14.2, 4.1.0, 4.1.1 | 3.15.2, 4.3.1, 4.3.2 | 8 |
| postcss | 8.5.6 | 8.5.23, 8.5.28 | 4 |
| lodash | 4.17.21 | 4.18.1 | 3 |
| engine.io | 6.5.x | 6.6.10 | 2 |
| express | 4.18.2 | 4.22.0, 5.2.1 | 2 |
| ip-address | 9.x | 10.7.0 | 2 |
| qs | 6.11.0 | 6.14.2, 6.16.0 | 2 |
| adm-zip | 0.5.16 | 0.6.0 | 1 |
| body-parser | 1.20.1 | 1.20.8, 2.3.0 | 1 |
| cookie | 0.5.0 | 0.7.2 | 1 |
| send | 0.18.0 | 0.19.2, 1.2.1 | 1 |
| serve-static | 1.15.0 | 1.16.3, 2.2.1 | 1 |
| uuid | 11.1.0 | 11.1.1 | 1 |
| ws | 8.17.x | 8.21.3 | 1 |

Still blocked upstream, all exact pins inside `@mintlify/*`: `sharp@0.33.5` (2),
`extract-zip@2.0.1` (2, no patched version exists), `adm-zip` (1, no patched
version), and one `js-yaml@4.3.1` copy that needs 4.3.2.

Verified with `yarn broken-links`, which reports the same single pre-existing
broken anchor in `reference/control-plane-api.mdx` on the old lockfile
(mintlify 4.2.527) and the new one — no regression. Nothing in CI installs this
lockfile; the hosted site is built by the Mintlify GitHub App from `docs.json`.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
….lock

`packages/cubejs-client-react` moved to `@types/react: "^18.3.0"` but the
lockfile kept the old `^16.9.41` descriptor (and the `@types/scheduler` block
only it needed). Nothing resolves through them: `^18.3.0` is already satisfied by
the existing `"@types/react@*", "@types/react@^18.3.4"` entry, which is why
`--frozen-lockfile` never complained — yarn 1 validates satisfiability, it does
not prune.

Pruned by a plain `yarn install`. Split out so the dependency-security commits
that follow carry only their own resolution changes.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Pure lockfile re-resolutions, the same technique as #11846: every target already
satisfies a range recorded in the lockfile, so no package.json edit and no
`resolutions` entry is involved. `yarn upgrade` cannot reach transitive-only
packages in yarn 1, so the entries were stripped and re-resolved by a plain
`yarn install`.

Closes 13 Dependabot alerts on the root lockfile:

| package | before | after | alerts |
| --- | --- | --- | ---: |
| immutable | 4.0.0, 5.1.1 | 4.3.9, 5.1.9 | 5 |
| minimatch | 5.1.6 | 5.1.9 | 3 |
| vite | 8.0.8 | 8.3.0 | 2 |
| http-proxy-middleware | 2.0.9 | 2.0.10 | 1 |
| picomatch | 2.3.1 | 2.3.2 | 1 |
| diff | 4.0.2 | 4.0.4 | 1 |

| GHSA | package |
| --- | --- |
| GHSA-xvcm-6775-5m9r | immutable |
| GHSA-wf6x-7x77-mvgw | immutable |
| GHSA-v56q-mh7h-f735 | immutable |
| GHSA-7r86-cg39-jmmj | minimatch |
| GHSA-23c5-xmqv-rm74 | minimatch |
| GHSA-3ppc-4f35-3m26 | minimatch |
| GHSA-v6wh-96g9-6wx3 | vite |
| GHSA-fx2h-pf6j-xcff | vite |
| GHSA-64mm-vxmg-q3vj | http-proxy-middleware |
| GHSA-3v7f-55p6-f55p | picomatch |
| GHSA-73rr-hh4g-fpgx | diff |

The remaining copies are held by exact pins and are handled separately:
`immutable@3.7.6` (draft-js via @ant-design/compatible), `minimatch@9.0.1`
(editorconfig), `picomatch@4.0.2` and `vite@5.4.21` and
`http-proxy-middleware@3.0.5` (the Angular 18 toolchain), `diff@2.2.3` (unidiff)
and `diff@7.0.0` (@cube-dev/ui-kit).

Verified: `yarn install --frozen-lockfile` is a no-op, `yarn tsc`, `yarn lint`,
`yarn workspace @cubejs-client/playground unit` (vitest on the new vite 8.3.0)
and `yarn workspace @cubejs-client/ngx build`.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The root `resolutions` block already funnelled every lodash copy through one
entry, but pinned it at `^4.17.0`, which resolved to the vulnerable 4.17.23.
Raising the floor to `^4.18.0` lands 4.18.1.

Closes 2 Dependabot alerts on the root lockfile:

| GHSA | severity | vulnerable | fixed in |
| --- | --- | --- | --- |
| GHSA-r5fr-rjxr-66jc | high | >= 4.0.0, <= 4.17.23 | 4.18.0 |
| GHSA-f23m-r3pf-42rh | medium | <= 4.17.23 | 4.18.0 |

No package in the repo imports `lodash` directly — the single direct consumer is
`lodash.clonedeep`, a separate package. Every copy here is transitive, via dev
tooling (antd, oclif, archiver, benchmark).

`es5-ext` deliberately stays pinned at 0.10.53: 0.10.62 reintroduced the
`_postinstall` script, and the advisory the pin misses (GHSA-4btm-hmg2-6w4j) is a
low-severity ReDoS.

Verified: `yarn install --frozen-lockfile` is a no-op, `yarn tsc`, `yarn lint`.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Five root-lockfile alerts all sat inside two subtrees that pin their transitives
exactly, so no float could reach them. Bumping the two parents directly moves
them all — no `resolutions` entry needed:

* `express ^4.21.1` -> `^4.22.2` in `@cubejs-backend/api-gateway` and
  `@cubejs-backend/server`. 4.22.2 pins `body-parser ~1.20.5`, `qs ~6.15.1`,
  `path-to-regexp ~0.1.12`, `cookie ~0.7.1`, `send ~0.19.0`,
  `serve-static ~1.16.2`.
* `compression@1.7.4` -> 1.8.2, a pure float of the `^1.7.4` that
  `webpack-dev-server` records; 1.8.2 already requires `on-headers ~1.1.0`.

Closes 6 Dependabot alerts on the root lockfile:

| package | before | after | alerts |
| --- | --- | --- | ---: |
| qs | 6.13.0 | 6.15.3 | 3 |
| body-parser | 1.20.3 | 1.20.8 | 1 |
| path-to-regexp | 0.1.12 | 0.1.13 | 1 |
| on-headers | 1.0.2 | 1.1.0 | 1 |

`react-router@5.2.1` keeps its own `path-to-regexp@1.9.0` — only express's 0.1.x
line moved.

One `qs` advisory stays open (GHSA-6rmr-r4mv-pfrv, `>= 2.2.5, < 6.16.0`):
express 4.22.2 caps it at `~6.15.1`. Forcing 6.16.0 across the tree was tried and
reverted — it breaks `@cubejs-backend/api-gateway` (2 tests fail with 401 on
`/v1/meta` and `/v1/sql`). The 6.16.0 copy that `@cypress/request` and
`superagent` pull is unaffected.

Verified: `yarn install --frozen-lockfile` is a no-op, `yarn tsc`, `yarn lint`,
`yarn workspace @cubejs-backend/api-gateway unit` (284/284) and
`yarn workspace @cubejs-backend/server unit` (6/6).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
`testcontainers@10.28.0` is the last 10.x and pins `undici: "^5.29.0"`, so the
twelve undici advisories were unreachable by any float. 11.x moves to undici 7
and 12.x to undici 8; CI runs Node 24/26, comfortably above 12.x's
`engines: node >= 22.22`, so this goes straight to the current line.

`testcontainers ^10.28.0` -> `^12.1.0` across 15 packages and
`@testcontainers/kafka ~10.28.0` -> `~12.1.0` in `@cubejs-backend/testing-shared`.
`undici` 5.29.0 -> 8.10.2.

Closes 12 Dependabot alerts on the root lockfile:

| GHSA | severity | fixed in |
| --- | --- | --- |
| GHSA-c76r-6mm9-97p6 | high | 6.24.0 |
| GHSA-cxrh-j4jr-qwg3 | high | 6.24.0 |
| GHSA-9qxr-qj54-h672 | high | 6.27.0 |
| GHSA-q768-x9m6-m9qp | medium | 6.23.0 |
| GHSA-m4v8-wqvr-p9f7 | medium | 6.24.0 |
| GHSA-cgvx-p34g-cxqv | medium | 6.24.0 |
| GHSA-47rq-92c3-5895 | medium | 6.27.0 |
| GHSA-fwq9-5wj3-p2v9 | medium | 6.28.0 |
| GHSA-2hjw-q9p4-5g9v | medium | 6.28.0 |
| GHSA-x4c7-9r8m-9g4x | medium | 6.28.0 |
| GHSA-8mgv-6v9m-8g8g | low | 6.27.0 |
| GHSA-hhr4-8wr3-xvv3 | low | 6.27.0 |

The repo only touches the stable part of the API (`GenericContainer`,
`DockerComposeEnvironment`, `withEnvironment`/`withExposedPorts`/
`withHealthCheck`/`withNetwork`/`withWaitStrategy`, `Wait.forLogMessage`,
`Wait.forHealthCheck`), none of which changed across 10 -> 12.

Verified with real containers: `yarn workspace @cubejs-backend/postgres-driver
integration` (12/12) and `yarn workspace @cubejs-backend/mysql-driver
integration` (5/5), plus `yarn tsc` and a no-op
`yarn install --frozen-lockfile`.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
`cypress-plugin-snapshots@1.4.4` (last published 2019) is no longer wired up:
its plugin registration in `cypress/plugins/index.js` and its command import in
`cypress/support/e2e.ts` are both commented out, and `matchImageSnapshot` now
comes from `@simonsmith/cypress-image-snapshot`. Only the dependency entry and
two stale comments remained.

It was, however, the sole root of a large dead subtree — `socket.io@2.5.1` /
`engine.io@3.6.2`, `jimp@0.10.3`, `diff2html`, `unidiff` — and 830 lockfile
lines go with it.

Closes 10 Dependabot alerts on the root lockfile:

| GHSA | package | severity |
| --- | --- | --- |
| GHSA-xvf7-4v9q-58w6 | jpeg-js | high |
| GHSA-7wpw-2hjm-89gp | merge | high |
| GHSA-h6ch-v84p-w6p9 | diff | high |
| GHSA-6fx8-h7jm-663j | parseuri | medium |
| GHSA-x565-32qp-m3vf | phin | medium |
| GHSA-776f-qx25-q3cc | xml2js | medium |
| GHSA-w7q9-p3jq-fmhm | jpeg-js | medium |
| GHSA-pxg6-pf52-xh8x | cookie | low |
| GHSA-gxpj-cx7g-858c | debug | low |
| GHSA-73rr-hh4g-fpgx | diff | low |

Verified: `yarn install --frozen-lockfile` is a no-op, `yarn tsc`, `yarn lint`.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…erts

`xmlbuilder2@2.4.1` was the only thing holding `js-yaml@3.14.0` in the tree — it
pinned the old 3.x line, and every advisory on it needs 3.14.2 or later. 4.0.3
depends on `js-yaml ^4.1.1`, and re-resolving the remaining `^3.13.1` spec floats
it to 3.15.2.

`@cubejs-backend/maven` uses exactly one xmlbuilder2 export, `create`, whose
signature is unchanged across 2 -> 4.

Closes 5 Dependabot alerts on the root lockfile:

| GHSA | severity | vulnerable | fixed in |
| --- | --- | --- | --- |
| GHSA-mvj4-3fpj-92p8 | high | >= 3.0.0, < 3.15.2 | 3.15.2 |
| GHSA-w9vq-2q9x-m3fq | high | >= 3.0.0, < 3.15.1 | 3.15.1 |
| GHSA-g8x5-f2h9-4rw6 | high | >= 3.0.0, < 3.15.0 | 3.15.0 |
| GHSA-8j8c-7jfh-h6hx | high | < 3.14.2 | 3.14.2 |
| GHSA-2pr6-76vf-7546 | medium | < 3.15.0 | 3.15.0 |

Two `js-yaml` alerts stay open: `lerna@10.0.1` pins `js-yaml 4.3.0` exactly and
10.0.1 is the current release.

Verified: `yarn install --frozen-lockfile` is a no-op, `yarn tsc`, and
`yarn workspace @cubejs-backend/maven unit:disabled-for-ci` (2/2, exercises the
real Maven resolve path).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The last vulnerable `minimatch@9.0.1` was pinned exactly by
`editorconfig@1.0.4`, pulled in by `js-beautify@1.14.9`, pulled in by
`@vue/test-utils@2.4.2` — a devDependency of `@cubejs-client/vue3` already
declared as `^2.4`. The lockfile had simply frozen 2.4.2; 2.5.0 depends on
`js-beautify ^2.0.0`, whose `editorconfig ^3.0.2` uses `minimatch ~10.2.4`.

Pure lockfile re-resolution, no package.json change.

Closes 3 Dependabot alerts on the root lockfile:

| GHSA | severity | vulnerable | fixed in |
| --- | --- | --- | --- |
| GHSA-7r86-cg39-jmmj | high | >= 9.0.0, < 9.0.7 | 9.0.7 |
| GHSA-23c5-xmqv-rm74 | high | >= 9.0.0, < 9.0.7 | 9.0.7 |
| GHSA-3ppc-4f35-3m26 | high | >= 9.0.0, < 9.0.6 | 9.0.6 |

Every remaining minimatch copy is now on a patched release: 3.1.4, 3.1.5, 5.1.9,
9.0.9, 10.2.5, 10.2.6.

Verified: `yarn install --frozen-lockfile` is a no-op, `yarn tsc`, and
`@cubejs-client/vue3`'s jest suite (36/36) after `yarn build`.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…er alert

`@google-cloud/storage@7.13.0` pins `fast-xml-parser ^4.4.1`, capping it below
the 5.7.0 that GHSA-jr48-27g9-4h5h needs; 8.1.0 depends on `^5.3.4`, which
resolves to 5.11.1.

`@google-cloud/storage ^7.13.0` -> `^8.1.0` in `@cubejs-backend/bigquery-driver`
and `@cubejs-backend/base-driver`. Both use only `Storage` (and `Bucket` in the
BigQuery driver), unchanged across 7 -> 8.

Closes 1 Dependabot alert on the root lockfile: GHSA-jr48-27g9-4h5h (medium,
`fast-xml-parser < 5.7.0`). The only remaining copies are 5.7.2 and 5.11.1.

Verified: `yarn install --frozen-lockfile` is a no-op, `yarn tsc`, and
`yarn workspace @cubejs-backend/base-driver unit` (17/17). The BigQuery driver
has integration tests only, which need GCP credentials.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
`js-cookie@2.2.1` is below the 3.0.7 that GHSA-vxvm-qww3-2fh7 needs. The only
importer is `packages/cubejs-playground/src/events.ts`, which calls `get` and
`remove` inside a one-time localStorage migration; both are unchanged across
2 -> 3, and the one API v3 removed (`getJSON`) was never used.

Closes 1 Dependabot alert on the root lockfile: GHSA-vxvm-qww3-2fh7 (high,
`js-cookie <= 3.0.5`). Resolved to 3.0.8.

Verified: `yarn install --frozen-lockfile` is a no-op, `tsc` and `vitest run` in
`packages/cubejs-playground`, and
`yarn workspace @cubejs-client/playground build:playground` — which confirms the
bundler resolves v3's `exports` map for the default import.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…sdk/client-rds-data

`aws-sdk` v2 reached end-of-support on 2025-09-08, so GHSA-rvhx-wmgm-m6q9 will
never get a patched release. The driver never used it at runtime — it talks to
Aurora through `data-api-client` — so the only real work was the type import and
the test's global SDK config.

* `aws-sdk ^2.787.0` -> `@aws-sdk/client-rds-data ^3.1048.0`
* `data-api-client ^1.1.0` -> `^2.4.1`, which takes `@aws-sdk/client-rds-data` as
  an optional peer instead of bundling the v2 SDK
* `driver/index.d.ts`: `ClientConfiguration` from `aws-sdk/clients/rdsdataservice`
  -> `RDSDataClientConfig` from `@aws-sdk/client-rds-data`
* the integration test drops the `AWS.config.*` globals and passes
  `region` / `credentials` / `endpoint` through the driver's `options`, which is
  now an `RDSDataClientConfig`

`driver/AuroraServerlessMySqlDriver.js` needs no change. `@types/data-api-client`
floats 1.2.3 -> 1.2.11, which swapped its `aws-sdk` dependency for
`@types/aws-sdk2-types`, so `aws-sdk` leaves the lockfile entirely.

Closes 2 Dependabot alerts (GHSA-rvhx-wmgm-m6q9, low) — one on the root lockfile
and one on the driver's package.json.

Verified with the real local-data-api + MySQL 5.6.50 compose stack:
`yarn workspace @cubejs-backend/mysql-aurora-serverless-driver integration`
passes 3/3 (needs `DOCKER_DEFAULT_PLATFORM=linux/amd64` on Apple Silicon, since
`mysql:5.6.50` publishes no arm64 image). Plus `unit` (2/2), `yarn tsc` and a
no-op `yarn install --frozen-lockfile`.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The package's only trace in the playground is a stylesheet import in
`src/App.tsx`. Its 1227 lines define exactly three families of selectors —
`.ant-legacy-form*`, `.ant-mention-*`, and the antd-3-era
`.has-error` / `.has-warning` / `.is-validating` / `.show-help-*` states — all of
which are emitted only by `@ant-design/compatible`'s own `Form` and `Mention`
components. Neither is imported anywhere, and none of those class names appear in
`packages/cubejs-playground/src`, so the stylesheet matched nothing.

Behind the import sat a large abandoned subtree: `rc-editor-mention` ->
`rc-editor-core` -> `draft-js@0.10.5` -> `immutable@3.7.6` and `fbjs` ->
`isomorphic-fetch` -> `node-fetch@1.7.3`.

Closes 4 Dependabot alerts on the root lockfile:

| GHSA | package | severity |
| --- | --- | --- |
| GHSA-887c-mr87-cxwp | node-fetch | high |
| GHSA-xvcm-6775-5m9r | immutable | high |
| GHSA-wf6x-7x77-mvgw | immutable | high |
| GHSA-v56q-mh7h-f735 | immutable | high |

`immutable` is now 4.3.9 / 5.1.9 (sass) and `node-fetch` 2.7.0 / 3.3.2; `draft-js`
is gone entirely.

Upgrading instead was not an option: `@ant-design/compatible@5` peer-requires
`antd ^5.0.1` and the playground is on antd 4.16.13.

Verified: `yarn install --frozen-lockfile` is a no-op, `yarn tsc`, `tsc` in
`packages/cubejs-playground`, and
`yarn workspace @cubejs-client/playground build:playground`.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
`sqlite3@5.1.7` depended on `tar ^6.1.11` and dragged in `node-gyp@8` ->
`make-fetch-happen@9` -> `http-proxy-agent@4` -> `@tootallnate/once@1.1.2`, the
only copy of that package below the 2.0.1 fix. 6.0.1 drops the node-gyp 8 path
entirely and uses `tar ^7.5.10`.

Closes 1 Dependabot alert on the root lockfile: GHSA-px4h-xg32-q955 (low,
`@tootallnate/once < 2.0.1`). `node-gyp@8`, `cacache@15` and `make-fetch-happen@9`
leave the tree with it.

This does not close the `tar` alerts: `tar@6.2.1` is still held by `node-gyp@9`
(under `duckdb@1.4.1`, whose latest release still pins `node-gyp ^9.4.1`) and by
`node-gyp@10` under the `@angular/cli@18` -> `pacote@18` chain.

sqlite3 6 requires Node >= 20.17.0; CI runs 24/26.

Verified: `yarn install --frozen-lockfile` is a no-op, `yarn tsc`, and
`yarn workspace @cubejs-backend/sqlite-driver unit` (2/2) against a freshly
fetched 6.0.1 prebuilt binary.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
`rust/cubestore`'s js-wrapper uses `@octokit/core` to look up the CubeStore
release to download. It declared `^3.2.5`, which pins `@octokit/request@5.6.3` and
`@octokit/request-error@2.1.0`, both below their fixes.

5.2.2 is the last CJS release — `@octokit/core@6` and later set
`"type": "module"`, which the CommonJS js-wrapper cannot require. It depends on
`@octokit/request ^8.4.1`, which still supports the `request: { agent }` option
that `download.ts` passes for proxy support (removed in v9, which switched to
native fetch).

Closes 2 Dependabot alerts on the root lockfile:

| GHSA | package | severity | fixed in |
| --- | --- | --- | --- |
| GHSA-x4c8-mmvw-jvxg | @octokit/request | medium | 8.4.1 |
| GHSA-xx4v-prfh-6cgc | @octokit/request-error | medium | 5.1.1 |

Verified: `yarn install --frozen-lockfile` is a no-op, `yarn tsc`, and
`yarn workspace @cubejs-backend/cubestore unit` (3/3, which acquires and restarts
a real cubestored through the download path).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…erts

The npm entry was scoped to `directory: "/packages"`, which does not cover the
root `yarn.lock` — the largest manifest in the repo and the one holding 140 of
the 323 open npm alerts. `docs-mintlify` (64) and the three
`packages/cubejs-playground/vizard` lockfiles (109) were not registered either;
all of those alerts were reaching us through the security-advisory channel only,
with no version-update PRs behind them.

Replaced with a `directories` list covering the root workspace, docs-mintlify,
the vizard preview and its app templates. The `/examples` entry (deliberately
muted with `ignore: "*"`) and the github-actions entry are unchanged.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@ovr
ovr requested review from a team and keydunov as code owners September 11, 2026 16:44
@mintlify

mintlify Bot commented Sep 11, 2026

Copy link
Copy Markdown
Contributor

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated
cubed3 🟢 Ready View Preview Sep 11, 2026, 4:45 PM

💡 Tip: Enable Automations to automatically generate PRs for you.

@github-actions github-actions Bot added docs Issues that require a documentation improvement driver:mongodb Issues relating to the MongoBI driver driver:mysql Issues relating to the MySQL/MariaDB driver driver:bigquery Issues related to the BigQuery driver driver:prestodb Issues relating to the PrestoDB driver driver:postgres Issues relating to the Postgres driver client:playground Issues relating to the Developer Playground cube store Issues relating to Cube Store driver:mysql-aurora-serverless Issues relating to the AWS MySQL Aurora Serverless driver driver:sqlite Issues relating to the SQLite driver driver:druid Issues relating to the Druid driver driver:crate rust Pull requests that update Rust code driver:questdb javascript Pull requests that update Javascript code data source driver driver:trino Issues relating to the Trino driver driver:pinot labels Sep 11, 2026
@claude

claude Bot commented Sep 11, 2026

Copy link
Copy Markdown
Contributor

Claude finished @ovr's task in 7m 18s —— View job


Review: solid, well-sequenced dependency PR — 2 medium, 2 low, 1 verification gap

Full review
  • Gather PR context & diff
  • Review non-lockfile source changes (aurora-serverless driver, playground, vizard, cypress)
  • Review dependency/manifest changes for semver & breaking-change risk
  • Review .github/dependabot.yml
  • Verify lockfile/manifest consistency
  • Post findings

What I checked

The interesting surface here isn't the lockfile churn, it's the handful of major bumps on packages with real call sites. I traced each one to its consumer:

bump call site verdict
@octokit/core 3 → 5 rust/cubestore/js-wrapper/src/download.ts:19 ⚠️ proxy regression (below)
aws-sdk v2 → @aws-sdk/client-rds-data AuroraServerlessMySqlDriver.js:63 works; breaking user-facing options shape
@google-cloud/storage 7 → 8 gcs.fs.ts, BigQueryDriver.unload() unverified export-bucket path
sqlite3 5 → 6 SqliteDriver.js:42 (new Database, db.all) fine; API untouched, engines already >=20
xmlbuilder2 2 → 4 maven.ts:23 (create().ele().txt().up()) fine
js-cookie 2 → 3 events.ts (get/remove) fine; v3 ships its own types, and the existing <string> cast covers string | undefined
testcontainers 10 → 12 no removed APIs in use (withHealthCheck, withEnvironment, DockerComposeEnvironment all still current); @testcontainers/kafka moved in lockstep fine
@cubejs-client/* 0.35 → 1.7.37 in vizard templates import cube from '@cubejs-client/core' — default export still present at client-core/src/index.ts:1016, WebSocketTransport default at ws-transport/src/index.ts:269 fine

Dead-code removals all verified clean: no remaining references to @ant-design/compatible, cypress-plugin-snapshots, react-router-dom or toml. The dropped @ant-design/compatible/assets/index.css import was the only style import in the playground besides graphiql, but antd's stylesheet comes from <link rel="stylesheet" href="/antd.min.css"> in index.html, so styling isn't load-bearing on that import. chart.js/react-chartjs-2 really are unused in the antd-table template, and its old name (vizard-react-typescript-chartjs) isn't referenced anywhere, so the rename is safe.

Lockfile/manifest consistency spot-checked: every new range resolves (testcontainers@^12.1.0 → 12.1.0, @testcontainers/kafka@~12.1.0 → 12.1.0, express@^4.22.2 → 4.22.2, lodash → 4.18.1, @aws-sdk/client-rds-data, @google-cloud/storage@^8.1.0, xmlbuilder2@^4.0.3, js-cookie@^3.0.7, mintlify@^4 → 4.2.887), and aws-sdk is genuinely absent from both the root lockfile and every manifest. qs@~6.15.1 → 6.15.3 does survive, consistent with the PR description's note about not forcing qs@^6.16.0.

.github/dependabot.yml looks right, and the reasoning in the description holds up: root workspaces is ["rust/*", "packages/*"], so / covers every workspace member, while docs-mintlify and packages/cubejs-playground/vizard{,/apps/*} are outside those globs and genuinely needed their own entries. The old directory: "/packages" had no package.json to point at at all. Optional nit: four directories on a weekly schedule against the default open-PR limit of 5 may crowd out each other — a groups block (as the github-actions entry already has) would keep it tidy.

Findings

Medium — @octokit/core 5 silently drops proxy support (thread). @octokit/request 5.6.3 depended on node-fetch@^2 and forwarded request.agent; 8.4.1 has no fetch dep at all and uses global fetch, which ignores agent. @octokit/types still types agent?: unknown, so yarn tsc passes and it breaks only at runtime, only behind a proxy, only on the 404 release-metadata fallback. Pinning to 5 rather than 6/7 was the right call for CJS (before-after-hook@^2, universal-user-agent@^6 are still dual) — it's the fetch migration inside the 5 line that bites. Same thread also notes rust/cubestore's engines still advertises Node 12/14/16 while @octokit/core@5 needs ≥ 18.

Medium — the Aurora driver's options is a breaking public-API change with nothing recording it (thread). options flows into new RDSDataClient(...) now, so user configs with sslEnabled/httpOptions/maxRetries/top-level credentials stop working. The migration is correct — I confirmed downloadQueryResults' transaction() path is covered by the integration test you ran, and CI's mysql-aurora-serverless matrix entry will exercise it — but there's no doc page for this driver, so it needs a README note plus a breaking-change callout.

Low — stale @types/data-api-client@^1.2.1 (same thread). Describes the v1 surface and pulls @types/aws-sdk2-types, re-adding the aws-sdk v2 typings this PR removes; nothing imports it.

Low — directories PR-volume nit on .github/dependabot.yml (above).

Verification gap — GCS v8 (thread). The export-bucket paths (bucket.getFiles, file.getSignedUrl, createExtractJob) aren't reachable from any suite in the verification list. Worth one confirmation from the bigquery integration job.

Praise

23 commits that each do one thing and each got verified before the next went on is the right shape for a PR this size, and it's what made this reviewable at all. Adding no new resolutions — and reporting that qs@^6.16.0 broke api-gateway rather than forcing it — is the correct instinct. Calling out the two suites that fail identically on origin/master pre-empts exactly the question a reviewer would otherwise ask.

No prior review threads existed on this PR, so nothing to resolve or dedupe against.

· branch [`dependabot-js-alerts-table`](https://github.com/cube-js/cube/tree/dependabot-js-alerts-table)

"dependencies": {
"@cubejs-backend/shared": "1.7.37",
"@octokit/core": "^3.2.5",
"@octokit/core": "^5.2.2",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@octokit/core 3 → 5 silently drops proxy support for the release lookup.

js-wrapper/src/download.ts:19-24 passes request.agent = await getHttpAgentForProxySettings(), which is a proxy-agent http.Agent.

  • On master, @octokit/core@3@octokit/request@5.6.3, which depends on node-fetch@^2.6.7 and forwards agent — so HTTP_PROXY/HTTPS_PROXY was honored.
  • With @octokit/core@5.2.2@octokit/request@8.4.1 (no node-fetch/undici dep — it uses global fetch), the agent option is no longer forwarded; native fetch ignores it.

@octokit/types still declares agent?: unknown on RequestRequestOptions, so this compiles and typechecks and fails only at runtime, for users behind a proxy, on the 404 fallback path that resolves release metadata. The primary downloadAndExtractFile path is unaffected, which makes it easy to miss.

Fix direction: pass a custom request.fetch that applies an undici ProxyAgent as dispatcher (add a helper alongside getHttpAgentForProxySettings), or leave @octokit/core on 3 in this commit if the fetch-based proxy plumbing is out of scope for a dependency PR.

Also engines (line 7-9) still claims ^12.0.0 || ^14.0.0 || >=16.0.0; @octokit/core@5 requires Node ≥ 18. Worth aligning with the >=20.0.0 the other packages declare.

resourceArn?: string,
database?: string,
options?: ClientConfiguration
options?: RDSDataClientConfig

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This retypes a published config surface, and the shape change is user-visible: options is handed straight to dataApi({ ..., options }), which under data-api-client@2 becomes new RDSDataClient(options) instead of new AWS.RDSDataService(options).

So any existing cube.js using v2-style keys breaks silently or throws — sslEnabled, httpOptions, maxRetries, and top-level accessKeyId/secretAccessKey are all gone in v3 (credentials: { ... }, requestHandler, maxAttempts instead). The test diff is exactly that migration, so the delta is known; it just isn't recorded anywhere a user would see it.

There's no docs page for this driver (nothing matches aurora under docs-mintlify/), so a short note in the driver's README plus a release-note/breaking-change callout is probably the cheapest place to land it.

Relatedly, @types/data-api-client@^1.2.1 is still in devDependencies: it describes the v1 surface and pulls @types/aws-sdk2-types, quietly re-adding the aws-sdk v2 typings this PR set out to remove. Nothing imports it (the driver is plain JS and this .d.ts is hand-written), so it looks droppable.

"@azure/storage-blob": "^12.9.0",
"@cubejs-backend/shared": "1.7.37",
"@google-cloud/storage": "^7.13.0"
"@google-cloud/storage": "^8.1.0"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@google-cloud/storage 7 → 8 is the one major here whose code paths aren't in the verification list. The consumers are src/storage-fs/gcs.fs.ts (new Storage(...), bucket.getFiles, file.getSignedUrl) and BigQueryDriver.unload() (bucket.file()createExtractJobgetFilesgetSignedUrl) — export-bucket-only code that no unit suite touches, and base-driver 17/17 won't exercise it.

engines is >=20.0.0 here so the Node floor is fine. Could you confirm the bigquery integration job with an export bucket configured came back green (or run the GCS unload path once by hand)? Everything else in this PR has a green suite behind it; this is the gap.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

client:playground Issues relating to the Developer Playground cube store Issues relating to Cube Store data source driver docs Issues that require a documentation improvement driver:bigquery Issues related to the BigQuery driver driver:crate driver:druid Issues relating to the Druid driver driver:mongodb Issues relating to the MongoBI driver driver:mysql Issues relating to the MySQL/MariaDB driver driver:mysql-aurora-serverless Issues relating to the AWS MySQL Aurora Serverless driver driver:pinot driver:postgres Issues relating to the Postgres driver driver:prestodb Issues relating to the PrestoDB driver driver:questdb driver:sqlite Issues relating to the SQLite driver driver:trino Issues relating to the Trino driver javascript Pull requests that update Javascript code rust Pull requests that update Rust code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant