The overrides block in package.json pins transitive (and one direct) dependencies to versions that clear known CVEs. Each entry is debt — when the underlying ecosystem moves on, the corresponding entry should be removed.
This file documents the provenance and exit condition for each override. When adding or removing an override, update this file in the same commit.
- Class:
runtimeif the package ends up in the publisheddist/runtime path;devif it's used only by tooling (eslint, mocha, nyc, prettier, etc.). The published tarball excludes everything exceptdist/,thrift/,native/,LICENSE,NOTICE,package.json,README.md— so dev-tooling overrides do not ship to consumers but DO surface in customer-side scanners (Dependabot, Snyk, OSV) that read our lockfile. - Exit condition: the smallest change that would let us drop the override entry. Usually "upstream bump", sometimes "upstream widens the patched version into its dep range".
- Class: runtime
- Path:
proxy-agent → pac-proxy-agent → get-uri → basic-ftp - CVEs cleared: GHSA-5rq4-664w-9x2c, GHSA-6v7q-wjvx-w8wg, GHSA-rp42-5vxx-qpwr, GHSA-rpmf-866q-6p89
- Exit:
get-uribumps itsbasic-ftpdep range to include^5.3.1.
- Class: dev (apache-arrow's CLI tooling — not in runtime path)
- Path:
apache-arrow → command-line-usage → table-layout → @75lb/deep-merge - CVEs cleared: GHSA-28mc-g557-92m7
- Exit:
table-layoutbumps its dep. Noteapache-arrow@13ships unused CLI tooling — bumping arrow to15.x+drops this dep entirely.
- Class: runtime (thrift's WebSocket transport)
- Path:
thrift → wsANDthrift → isomorphic-ws → ws - CVEs cleared: GHSA-3h5v-q93c-6h6q (ws@5.x DoS)
- Exit:
thriftbumps its declaredwsrange to^8.x. Without the override,thriftwould pull the vulnerablews@5.x.
- Class: runtime
- Path:
proxy-agent → socks-proxy-agent → socks → ip-address - CVEs cleared: GHSA-v2v4-37r5-5v8g (IPv6 parsing DoS)
- Why an override is needed:
sockscaps itsip-addressdependency below the patched^10.1.1, so a plain bump of the parent can't reach the fix — the override is required to force the patched version. - Exit:
sockswidens itsip-addressrange to include^10.x. Note:ip-address@10is CommonJS with conditional exports — verify any future bump retains CJS compat for ourdist/.
- Class: runtime
- Path:
node-fetch → form-data(multipart bodies) - CVEs cleared: GHSA-fjxv-7rqg-78g4 (unsafe random boundary generation)
- Exit:
node-fetchbumps itsform-datadep range to include the patched line.
- Class: dev (mocha)
- Path:
mocha → serialize-javascript - CVEs cleared: GHSA-5c6j-r48x-rmvq (XSS via prototype pollution)
- Note: the patched line requires Node ≥ 20, which is satisfied by
engines.node >= 20. - Exit: mocha bumps its declared range to the patched line.
- Class: runtime — this one matters most
- Path: declared as a top-level runtime dep AND
thrift → uuid - CVEs cleared: GHSA-w5hq-g745-h8pq (buffer-bounds in v3/v5/v6; the driver only uses v4, but consumer scanners flag against our lockfile)
- Why an override is needed:
thriftdeclaresuuid: ^13.0.0, butuuid@13is ESM-only. The driver compiles to CJS (dist/*.js), so a top-leveluuid: ^11.1.1plus this matching override forcesthrift's transitive uuid down to v11 (which dual-publishes ESM + CJS via conditional exports). - Exit: any of (a) we migrate
dist/to ESM, (b)thriftdrops the uuid dep, or (c)thriftwidens its range to^11 || ^13in a CJS-compatible export shape. Today, removing this override would causerequire('uuid')fromdist/to crash on Node runtimes that don't supportrequire(esm).
# Show what depends on a specific override target:
npm ls <package-name>
# Re-run the lockfile against OSV-Scanner to verify findings are still cleared:
osv-scanner scan source --lockfile=package-lock.jsonWhen all entries' exit conditions are met, this file should be deleted along with the corresponding overrides block.