From fd4e549a0f8a19a17ceefe51632ec8c79b11580d Mon Sep 17 00:00:00 2001 From: johndoe6345789 Date: Mon, 9 Mar 2026 23:44:50 +0000 Subject: [PATCH] fix: update storybook to 10.2.17 across all workspaces, patch @esbuild-kit/core-utils MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Update storybook packages to 10.2.17 in root, storybook/, frontends/postgres, frontends/workflowui - Move @storybook/react-vite from postgres dependencies→devDependencies - Add storybook version pinned overrides to resolve peer dep conflicts - Remove storybook from root devDependencies (managed by workspaces) - Add @esbuild-kit/core-utils@3.3.3-metabuilder.0 patched tarball to deployment/npm-patches/ - Update publish-npm-patches.sh to handle pre-patched local tarballs - Add @esbuild-kit scoped registry in .npmrc pointing to Nexus - Publish @esbuild-kit/core-utils@3.3.3-metabuilder.0 to Nexus (esbuild dep widened to >=0.18.20) - 2 residual moderate vulns remain: esbuild dev-server in drizzle-kit (dev-only, no prod impact) Co-Authored-By: Claude Sonnet 4.6 --- .npmrc | 6 ++ ...ild-kit-core-utils-3.3.3-metabuilder.0.tgz | Bin 0 -> 24946 bytes deployment/publish-npm-patches.sh | 63 +++++++++++++++++- frontends/postgres/package.json | 14 ++-- frontends/workflowui/package.json | 2 +- package.json | 18 +++-- storybook/package.json | 12 ++-- 7 files changed, 93 insertions(+), 22 deletions(-) create mode 100644 deployment/npm-patches/esbuild-kit-core-utils-3.3.3-metabuilder.0.tgz diff --git a/.npmrc b/.npmrc index f3dff282a..3d3102336 100644 --- a/.npmrc +++ b/.npmrc @@ -42,3 +42,9 @@ workspaces-update=true # These are documented in package.json engines field # Current: Node 22.22.1, npm 11.11.0 + +# SCOPED NEXUS REGISTRY - @esbuild-kit patched packages +# Start Nexus: cd deployment && docker compose -f docker-compose.nexus.yml up -d +# Publish patches: cd deployment && ./publish-npm-patches.sh +@esbuild-kit:registry=http://localhost:8091/repository/npm-group/ +//localhost:8091/repository/npm-group/:_auth=YWRtaW46bmV4dXM= diff --git a/deployment/npm-patches/esbuild-kit-core-utils-3.3.3-metabuilder.0.tgz b/deployment/npm-patches/esbuild-kit-core-utils-3.3.3-metabuilder.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..d1a646631a0d364bed4ba35aa79f166a55809c5a GIT binary patch literal 24946 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 B{;U81 literal 0 HcmV?d00001 diff --git a/deployment/publish-npm-patches.sh b/deployment/publish-npm-patches.sh index 24820ff63..063269454 100755 --- a/deployment/publish-npm-patches.sh +++ b/deployment/publish-npm-patches.sh @@ -29,6 +29,12 @@ PATCHES=( "tar@7.5.11" ) +# Pre-patched local packages (tarball already in deployment/npm-patches/) +# Format: "name@version:filename" +LOCAL_PATCHES=( + "@esbuild-kit/core-utils@3.3.3-metabuilder.0:esbuild-kit-core-utils-3.3.3-metabuilder.0.tgz" +) + WORK_DIR=$(mktemp -d) trap 'rm -rf "$WORK_DIR"' EXIT @@ -54,6 +60,61 @@ EOF published=0 skipped=0 +PATCHES_DIR="$SCRIPT_DIR/npm-patches" + +# Publish pre-patched local tarballs first +for entry in "${LOCAL_PATCHES[@]}"; do + pkg_spec="${entry%%:*}" + tarball_name="${entry##*:}" + pkg_name="${pkg_spec%%@*}" + # handle scoped packages like @scope/name + if [[ "$pkg_spec" == @* ]]; then + pkg_name="$(echo "$pkg_spec" | cut -d@ -f1-2 | tr -d '@')" + pkg_name="@${pkg_name}" + pkg_version="$(echo "$pkg_spec" | cut -d@ -f3)" + else + pkg_version="${pkg_spec##*@}" + fi + + log "Processing local patch $pkg_name@$pkg_version..." + + TARBALL="$PATCHES_DIR/$tarball_name" + if [ ! -f "$TARBALL" ]; then + fail " Patched tarball not found: $TARBALL" + fi + + # Check if already published + ENCODED_NAME=$(echo "$pkg_name" | sed 's|/|%2F|g') + CHECK_URL="${NEXUS_URL}/repository/npm-hosted/${ENCODED_NAME}/${pkg_version}" + HTTP=$(curl -s -o /dev/null -w "%{http_code}" "$CHECK_URL") + if [ "$HTTP" = "200" ]; then + warn " $pkg_name@$pkg_version already in Nexus, skipping" + ((skipped++)) || true + continue + fi + + log " Publishing $tarball_name to Nexus..." + HTTP=$(curl -s -o /dev/null -w "%{http_code}" -X PUT \ + -u "$NEXUS_USER:$NEXUS_PASS" \ + -H "Content-Type: application/octet-stream" \ + --data-binary "@$TARBALL" \ + "${NEXUS_NPM_HOSTED}${pkg_name}/-/${tarball_name}") + + case "$HTTP" in + 200|201) + log " ${GREEN}Published${NC} $pkg_name@$pkg_version" + ((published++)) || true + ;; + 400) + warn " $pkg_name@$pkg_version already exists (HTTP 400)" + ((skipped++)) || true + ;; + *) + fail " Failed to publish $pkg_name@$pkg_version (HTTP $HTTP)" + ;; + esac +done + for pkg_spec in "${PATCHES[@]}"; do pkg_name="${pkg_spec%%@*}" pkg_version="${pkg_spec##*@}" @@ -108,4 +169,4 @@ log "To use patched packages, add to .npmrc:" log " registry=${NEXUS_URL}/repository/npm-group/" echo "" log "Or use scoped overrides in package.json:" -log ' "overrides": { "minimatch": "10.2.4", "tar": "7.5.11" }' +log ' "overrides": { "minimatch": "10.2.4", "tar": "7.5.11", "@esbuild-kit/core-utils": "3.3.3-metabuilder.0" }' diff --git a/frontends/postgres/package.json b/frontends/postgres/package.json index d14739ead..f71755427 100644 --- a/frontends/postgres/package.json +++ b/frontends/postgres/package.json @@ -48,7 +48,6 @@ "@metabuilder/hooks": "file:../../hooks", "@mui/icons-material": "^7.3.8", "@mui/material": "^7.3.8", - "@storybook/react-vite": "10.2.13", "@t3-oss/env-nextjs": "^0.13.10", "bcryptjs": "^3.0.3", "drizzle-orm": "^0.45.1", @@ -87,10 +86,11 @@ "@playwright/test": "^1.58.2", "@sentry/nextjs": "^10.39.0", "@spotlightjs/spotlight": "^4.10.0", - "@storybook/addon-a11y": "^10.2.10", - "@storybook/addon-docs": "^10.2.10", - "@storybook/addon-vitest": "^10.2.10", - "@storybook/nextjs-vite": "^10.2.10", + "@storybook/addon-a11y": "^10.2.17", + "@storybook/addon-docs": "^10.2.17", + "@storybook/addon-vitest": "^10.2.17", + "@storybook/nextjs-vite": "^10.2.17", + "@storybook/react-vite": "^10.2.17", "@tailwindcss/postcss": "^4.2.0", "@types/node": "^25.3.0", "@types/pg": "^8.16.0", @@ -113,7 +113,7 @@ "eslint-plugin-react": "^7.37.5", "eslint-plugin-react-hooks": "^7.0.1", "eslint-plugin-react-refresh": "^0.5.0", - "eslint-plugin-storybook": "^10.2.10", + "eslint-plugin-storybook": "^10.2.17", "eslint-plugin-tailwindcss": "^4.0.0-beta.0", "get-db": "^0.13.0", "jest": "^30.2.0", @@ -124,7 +124,7 @@ "postcss-load-config": "^6.0.1", "rimraf": "^6.1.3", "semantic-release": "^25.0.3", - "storybook": "^10.2.10", + "storybook": "^10.2.17", "tailwindcss": "^4.2.0", "tsx": "^4.21.0", "typescript": "5.9.3", diff --git a/frontends/workflowui/package.json b/frontends/workflowui/package.json index 2fa34790a..241407b5d 100644 --- a/frontends/workflowui/package.json +++ b/frontends/workflowui/package.json @@ -55,7 +55,7 @@ "react-dom": "^19.2.4" }, "devDependencies": { - "@storybook/react": "^10.2.10", + "@storybook/react": "^10.2.17", "@testing-library/jest-dom": "^6.9.1", "@testing-library/react": "^16.3.2", "@testing-library/user-event": "^14.6.1", diff --git a/package.json b/package.json index e28819a46..f33b554aa 100644 --- a/package.json +++ b/package.json @@ -26,8 +26,6 @@ "@playwright/test": "^1.58.2", "@sentry/nextjs": "^10.39.0", "@spotlightjs/spotlight": "^4.10.0", - "@storybook/react": "^10.2.10", - "@storybook/react-vite": "^10.2.13", "@tailwindcss/vite": "^4.2.0", "checkly": "^7.1.0", "eslint": "^10.0.1", @@ -37,8 +35,7 @@ "eslint-plugin-react-refresh": "^0.5.0", "jest": "^30.2.0", "jsdom": "^28.1.0", - "npm-run-all2": "8.0.4", - "storybook": "^10.2.10" + "npm-run-all2": "8.0.4" }, "dependencies": { "@hookform/resolvers": "^5.2.2", @@ -68,15 +65,19 @@ "eslint": "$eslint" }, "hono": "^4.12.0", - "@storybook/react-vite": { - "vite": "^7.3.1" - }, + "@storybook/react-vite": "10.2.17", "@storybook/builder-vite": { "vite": "^7.3.1" }, "@joshwooding/vite-plugin-react-docgen-typescript": { "vite": "^7.3.1" }, + "storybook": "10.2.17", + "@storybook/react": "10.2.17", + "@storybook/nextjs-vite": "10.2.17", + "@storybook/addon-docs": "10.2.17", + "@storybook/addon-a11y": "10.2.17", + "@storybook/addon-vitest": "10.2.17", "minimatch": "10.2.4", "tar": "7.5.11", "monaco-editor": "0.53.0", @@ -93,6 +94,9 @@ }, "eslint-plugin-format": { "eslint": "$eslint" + }, + "@esbuild-kit/core-utils": { + "esbuild": ">=0.25.0" } } } diff --git a/storybook/package.json b/storybook/package.json index d521df418..bb514c0f0 100644 --- a/storybook/package.json +++ b/storybook/package.json @@ -15,16 +15,16 @@ "react-dom": "^19.2.4" }, "devDependencies": { - "@storybook/addon-docs": "^10.2.10", - "@storybook/addon-a11y": "^10.2.10", - "@storybook/react": "^10.2.10", - "@storybook/react-vite": "^10.2.13", - "@storybook/addon-vitest": "^10.2.10", + "@storybook/addon-docs": "^10.2.17", + "@storybook/addon-a11y": "^10.2.17", + "@storybook/react": "^10.2.17", + "@storybook/react-vite": "^10.2.17", + "@storybook/addon-vitest": "^10.2.17", "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^5.1.4", "sass": "^1.97.3", - "storybook": "^10.2.10", + "storybook": "^10.2.17", "typescript": "^5.9.3", "vite": "^7.3.1" }