Skip to content

Upgrade tsup v6 → v8 and tsx v3 → v4 (dev tooling)#20

Merged
jhamon merged 1 commit into
mainfrom
deps/upgrade-build-tools
Jul 9, 2026
Merged

Upgrade tsup v6 → v8 and tsx v3 → v4 (dev tooling)#20
jhamon merged 1 commit into
mainfrom
deps/upgrade-build-tools

Conversation

@jhamon

@jhamon jhamon commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

Root cause #4 — the remaining dev-tooling alerts

Merge #19 first. This branch is built on top of #19 (the recovery of the vitest + transformers work). Until #19 lands on main, this PR's diff also shows those commits; once #19 merges, it narrows to just the tsup/tsx change. Both PRs target main, so merging #19 then this one lands everything cleanly.

The last three moderates came from stale build tools: tsup@6 and tsx@3 bundled an old esbuild, and tsx@3 pulled the deprecated @esbuild-kit/* packages.

Changes

  • tsup ^6.7.0^8.5.1
  • tsx ^3.12.3^4.23.0 (drops @esbuild-kit/*, bundles current esbuild)

Impact

npm audit: 3 moderate → 1 low. The three moderates (esbuild dev-server SSRF, tsup DOM clobbering, tsx via @esbuild-kit) are gone.

The one remaining low (left override-free, by choice)

esbuild GHSA-g7r4-m6w7-qqqr — arbitrary file read via the dev server on Windows. It has no upstream fix: tsup@8.5.1 still caps esbuild at ^0.27, so it resolves 0.27.7, while tsx/vitest already use the fixed 0.28.1. It's dev-only + Windows-only, the audit CI job is non-blocking, and it becomes a no-op the moment tsup widens its esbuild range. A one-line overrides: { esbuild: "^0.28.1" } would zero it out (verified), but we're keeping the tree override-free per the approach taken across this whole effort.

Verification

  • npm run build — tsup 8 emits identical dist.
  • npm test (23 pass), npm run lint, npm run format:check — green.
  • Confirmed tsx -r dotenv/config still preloads env under tsx 4, so npm run recommend keeps working.

🤖 Generated with Claude Code

The remaining dev-tooling advisories came from stale build tools:
tsup@6 and tsx@3 bundled an old esbuild, and tsx@3 pulled the
deprecated @esbuild-kit/* packages (esbuild dev-server SSRF, tsup DOM
clobbering).

- tsup ^6.7.0 -> ^8.5.1
- tsx  ^3.12.3 -> ^4.23.0 (drops @esbuild-kit/*, bundles current esbuild)

npm audit: 3 moderate -> 1 low. The three moderates are gone.

The one remaining low (esbuild GHSA-g7r4-m6w7-qqqr: arbitrary file read
via the dev server on Windows) has no upstream fix yet: tsup@8.5.1 still
caps esbuild at ^0.27, so it resolves 0.27.7 while tsx/vitest already
use the fixed 0.28.1. It is dev-only and Windows-only, the audit CI job
is non-blocking, and it becomes a no-op the moment tsup widens its
esbuild range. Left override-free by choice to keep the tree honest.

Verified: npm run build (tsup 8 emits identical dist), npm test
(23 pass), npm run lint, npm run format:check all green, and
`tsx -r dotenv/config` still preloads env (so `npm run recommend`
keeps working) under tsx 4.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@jhamon jhamon merged commit 16a5453 into main Jul 9, 2026
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.

1 participant