diff --git a/.changeset/v1-r2-s3-signed-encoding.md b/.changeset/v1-r2-s3-signed-encoding.md new file mode 100644 index 0000000000..41223990fc --- /dev/null +++ b/.changeset/v1-r2-s3-signed-encoding.md @@ -0,0 +1,9 @@ +--- +"@cloudflare/vite-plugin": patch +--- + +Fix signed Accept-Encoding headers on the experimental local R2 S3 endpoint + +Upgrade Miniflare to `5.20261023.3-beta` and Wrangler to `4.156.0` so S3 clients that sign `Accept-Encoding: identity` can use the endpoint exposed by Vite development and preview without `SignatureDoesNotMatch` errors. + +Preserve the original S3 request header in the Vite request adapter so the runtime verifies the exact value signed by the client. diff --git a/fixtures/dev-registry/package.json b/fixtures/dev-registry/package.json index ba2d254fb1..a9ef614973 100644 --- a/fixtures/dev-registry/package.json +++ b/fixtures/dev-registry/package.json @@ -16,6 +16,6 @@ "typescript": "catalog:default", "vite": "catalog:default", "vitest": "catalog:default", - "wrangler": "4.155.0" + "wrangler": "4.156.0" } } diff --git a/fixtures/shared/package.json b/fixtures/shared/package.json index 09da8c3986..68da4e3285 100644 --- a/fixtures/shared/package.json +++ b/fixtures/shared/package.json @@ -3,7 +3,7 @@ "private": true, "description": "Shared fixtures for testing", "devDependencies": { - "@cloudflare/workers-utils": "0.50.0", - "wrangler": "4.155.0" + "@cloudflare/workers-utils": "0.50.1", + "wrangler": "4.156.0" } } diff --git a/packages/mock-npm-registry/package.json b/packages/mock-npm-registry/package.json index cafd3c3632..b292c72a0c 100644 --- a/packages/mock-npm-registry/package.json +++ b/packages/mock-npm-registry/package.json @@ -19,7 +19,7 @@ "test:ci": "vitest run" }, "devDependencies": { - "@cloudflare/workers-utils": "0.50.0", + "@cloudflare/workers-utils": "0.50.1", "@types/node": "catalog:default", "@verdaccio/types": "^10.8.0", "get-port": "^7.0.0", diff --git a/packages/remote-bindings/package.json b/packages/remote-bindings/package.json index 16c05763c7..ea4497dc7e 100644 --- a/packages/remote-bindings/package.json +++ b/packages/remote-bindings/package.json @@ -31,12 +31,12 @@ "test:watch": "vitest" }, "dependencies": { - "@cloudflare/cli-shared-helpers": "0.2.10", - "@cloudflare/deploy-helpers": "0.24.2", + "@cloudflare/cli-shared-helpers": "0.3.0", + "@cloudflare/deploy-helpers": "0.24.3", "@cloudflare/workers-auth": "0.15.1", - "@cloudflare/workers-utils": "0.50.0", + "@cloudflare/workers-utils": "0.50.1", "chalk": "catalog:default", - "miniflare": "5.20261023.2-beta", + "miniflare": "5.20261023.3-beta", "undici": "catalog:default", "ws": "catalog:default" }, diff --git a/packages/vite-plugin-cloudflare/e2e/fixtures/remote-bindings-config-account-id/package.json b/packages/vite-plugin-cloudflare/e2e/fixtures/remote-bindings-config-account-id/package.json index 37a39acab4..b732aae319 100644 --- a/packages/vite-plugin-cloudflare/e2e/fixtures/remote-bindings-config-account-id/package.json +++ b/packages/vite-plugin-cloudflare/e2e/fixtures/remote-bindings-config-account-id/package.json @@ -14,7 +14,7 @@ "@cloudflare/vite-plugin": "*", "@cloudflare/workers-types": "^5.20260706.1", "globals": "^15.14.0", - "miniflare": "5.20261023.2-beta", + "miniflare": "5.20261023.3-beta", "typescript": "~5.7.2", "vite": "^8.0.0", "wrangler": "*" diff --git a/packages/vite-plugin-cloudflare/package.json b/packages/vite-plugin-cloudflare/package.json index 37cc9cfbd1..6f6fbac6a6 100644 --- a/packages/vite-plugin-cloudflare/package.json +++ b/packages/vite-plugin-cloudflare/package.json @@ -46,19 +46,19 @@ }, "dependencies": { "@cloudflare/unenv-preset": "2.16.2", - "miniflare": "5.20261023.2-beta", + "miniflare": "5.20261023.3-beta", "unenv": "2.0.0-rc.24", - "wrangler": "4.155.0", + "wrangler": "4.156.0", "ws": "8.22.0" }, "devDependencies": { - "@cloudflare/containers-shared": "0.23.4", + "@cloudflare/containers-shared": "0.23.5", "@cloudflare/mock-npm-registry": "workspace:*", "@cloudflare/remote-bindings": "workspace:*", "@cloudflare/workers-shared": "workspace:*", "@cloudflare/workers-tsconfig": "workspace:*", "@cloudflare/workers-types": "5.20261023.1", - "@cloudflare/workers-utils": "0.50.0", + "@cloudflare/workers-utils": "0.50.1", "@remix-run/node-fetch-server": "1.0.0", "@types/node": "22.15.17", "@types/semver": "7.8.0", @@ -82,7 +82,7 @@ }, "peerDependencies": { "vite": "^6.1.0 || ^7.0.0 || ^8.0.0", - "wrangler": "^4.155.0" + "wrangler": "^4.156.0" }, "workers-sdk": { "prerelease": true diff --git a/packages/vite-plugin-cloudflare/src/__tests__/utils.spec.ts b/packages/vite-plugin-cloudflare/src/__tests__/utils.spec.ts index 5550c7cc1e..644ff7a770 100644 --- a/packages/vite-plugin-cloudflare/src/__tests__/utils.spec.ts +++ b/packages/vite-plugin-cloudflare/src/__tests__/utils.spec.ts @@ -358,6 +358,61 @@ describe("createRequestHandler", () => { ); } + test.for([ + { + pathname: "/cdn-cgi/local/r2/s3", + encoding: "identity", + expected: "identity", + }, + { + pathname: "/cdn-cgi/local/r2/s3/bucket/object", + encoding: "identity", + expected: "identity", + }, + { + pathname: "/cdn-cgi/local/r2/s3/bucket/object", + encoding: "gzip, deflate", + expected: "gzip, deflate", + }, + { + pathname: "/cdn-cgi/local/r2/s3/bucket/object", + encoding: undefined, + expected: null, + }, + { + pathname: "/cdn-cgi/local/r2/s3-other", + encoding: "gzip", + expected: "identity, gzip", + }, + { pathname: "/worker", encoding: "gzip", expected: "identity, gzip" }, + ])( + "forwards Accept-Encoding for $pathname ($encoding)", + async ({ pathname, encoding, expected }, { expect }) => { + await startServer(async (request) => + MiniflareResponse.json({ + acceptEncoding: request.headers.get("accept-encoding"), + }) + ); + // Use Node HTTP because Fetch supplies its own Accept-Encoding when absent. + const response = await new Promise( + (resolve, reject) => { + http + .get( + `http://127.0.0.1:${port}${pathname}`, + { + headers: + encoding === undefined ? {} : { "Accept-Encoding": encoding }, + }, + resolve + ) + .on("error", reject); + } + ); + expect(response.statusCode).toBe(200); + expect(await json(response)).toEqual({ acceptEncoding: expected }); + } + ); + test("preserves repeated request Set-Cookie headers", async ({ expect }) => { await startServer(async (request) => MiniflareResponse.json({ diff --git a/packages/vite-plugin-cloudflare/src/utils.ts b/packages/vite-plugin-cloudflare/src/utils.ts index dd79aa40fc..dd41ff8f55 100644 --- a/packages/vite-plugin-cloudflare/src/utils.ts +++ b/packages/vite-plugin-cloudflare/src/utils.ts @@ -239,6 +239,7 @@ function createCancellableRequestBody( }); } +/** Convert a Vite request for the local runtime, preserving signed S3 headers. */ export function toMiniflareRequest(request: Request): MiniflareRequest { const host = request.headers.get("Host") ?? new URL(request.url).host; const xForwardedHost = request.headers.get("X-Forwarded-Host"); @@ -259,9 +260,16 @@ export function toMiniflareRequest(request: Request): MiniflareRequest { if (secFetchMode) { request.headers.set(CoreHeaders.SEC_FETCH_MODE, secFetchMode); } + const pathname = new URL(request.url).pathname; + // S3 signatures include the original header value; adding identity invalidates them. + const isLocalS3Request = + pathname === "/cdn-cgi/local/r2/s3" || + pathname.startsWith("/cdn-cgi/local/r2/s3/"); return new MiniflareRequest(request.url, { method: request.method, - headers: [["accept-encoding", "identity"], ...request.headers], + headers: isLocalS3Request + ? [...request.headers] + : [["accept-encoding", "identity"], ...request.headers], body: request.body, duplex: "half", signal: request.signal, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a56b40a925..d0a5635a85 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -195,17 +195,17 @@ importers: specifier: catalog:default version: 5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0)) wrangler: - specifier: 4.155.0 - version: 4.155.0(@cloudflare/workers-types@5.20261023.1)(@types/node@22.15.17) + specifier: 4.156.0 + version: 4.156.0(@cloudflare/workers-types@5.20261023.1)(@types/node@22.15.17) fixtures/shared: devDependencies: '@cloudflare/workers-utils': - specifier: 0.50.0 - version: 0.50.0(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0))) + specifier: 0.50.1 + version: 0.50.1(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0))) wrangler: - specifier: 4.155.0 - version: 4.155.0(@cloudflare/workers-types@5.20261023.1)(@types/node@22.15.17) + specifier: 4.156.0 + version: 4.156.0(@cloudflare/workers-types@5.20261023.1)(@types/node@22.15.17) packages/lint-config-shared: devDependencies: @@ -219,8 +219,8 @@ importers: packages/mock-npm-registry: devDependencies: '@cloudflare/workers-utils': - specifier: 0.50.0 - version: 0.50.0(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0))) + specifier: 0.50.1 + version: 0.50.1(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0))) '@types/node': specifier: 22.15.17 version: 22.15.17 @@ -249,23 +249,23 @@ importers: packages/remote-bindings: dependencies: '@cloudflare/cli-shared-helpers': - specifier: 0.2.10 - version: 0.2.10(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0))) + specifier: 0.3.0 + version: 0.3.0(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0))) '@cloudflare/deploy-helpers': - specifier: 0.24.2 - version: 0.24.2(@types/node@22.15.17)(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0))) + specifier: 0.24.3 + version: 0.24.3(@types/node@22.15.17)(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0))) '@cloudflare/workers-auth': specifier: 0.15.1 version: 0.15.1(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0))) '@cloudflare/workers-utils': - specifier: 0.50.0 - version: 0.50.0(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0))) + specifier: 0.50.1 + version: 0.50.1(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0))) chalk: specifier: catalog:default version: 5.3.0 miniflare: - specifier: 5.20261023.2-beta - version: 5.20261023.2-beta(@types/node@22.15.17) + specifier: 5.20261023.3-beta + version: 5.20261023.3-beta(@types/node@22.15.17) undici: specifier: catalog:default version: 7.30.1 @@ -304,21 +304,21 @@ importers: specifier: 2.16.2 version: 2.16.2(unenv@2.0.0-rc.24)(workerd@1.20261023.1) miniflare: - specifier: 5.20261023.2-beta - version: 5.20261023.2-beta(@types/node@22.15.17) + specifier: 5.20261023.3-beta + version: 5.20261023.3-beta(@types/node@22.15.17) unenv: specifier: 2.0.0-rc.24 version: 2.0.0-rc.24 wrangler: - specifier: 4.155.0 - version: 4.155.0(@cloudflare/workers-types@5.20261023.1)(@types/node@22.15.17) + specifier: 4.156.0 + version: 4.156.0(@cloudflare/workers-types@5.20261023.1)(@types/node@22.15.17) ws: specifier: 8.22.0 version: 8.22.0 devDependencies: '@cloudflare/containers-shared': - specifier: 0.23.4 - version: 0.23.4(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0))) + specifier: 0.23.5 + version: 0.23.5(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0))) '@cloudflare/mock-npm-registry': specifier: workspace:* version: link:../mock-npm-registry @@ -335,8 +335,8 @@ importers: specifier: 5.20261023.1 version: 5.20261023.1 '@cloudflare/workers-utils': - specifier: 0.50.0 - version: 0.50.0(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0))) + specifier: 0.50.1 + version: 0.50.1(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0))) '@remix-run/node-fetch-server': specifier: 1.0.0 version: 1.0.0 @@ -1927,18 +1927,18 @@ packages: '@cloudflare/build-output-utils@0.9.6': resolution: {integrity: sha512-JjNSJPctyGbQn4XDXzsqy1/M/xdNAh3XRPj0c/4KY1BYCUWA/ejcrnj3nuTHyoN8Zl+RmVIThIj+am29jTV+kQ==} - '@cloudflare/cli-shared-helpers@0.2.10': - resolution: {integrity: sha512-glYLuQlNaXcu440+mSWofXBKKtvFwqNbUIrQqRfERDrCqlLA9Om3vRe+AAgdtGgLVbhbJTB6sIH5mjwceufAuA==} + '@cloudflare/cli-shared-helpers@0.3.0': + resolution: {integrity: sha512-AoA3hckTXlVQCdUpdFS9SvHHdEVc9spOKxiOMgO5OykepFU7dJDj/lygQ+5f5GFFJvRcyoHtDmWouY4U+9uLbw==} '@cloudflare/config@0.29.0': resolution: {integrity: sha512-0sD73G6xRdz6/9DXNcAuLv6VbnNiWA09zo7VwhPyaa3ysIGvLMXJR5G19r3+iG5ZIB9ErGMwqgprVOVaYKsIpw==} - '@cloudflare/containers-shared@0.23.4': - resolution: {integrity: sha512-/9WBTGwl7SbW5MVv3jcYVdV5wzudsh3qLxO/pSE9Y9ZkscJ69eR0l997ZjkgefecopfO/DeonXiuWz2UD5VvGg==} + '@cloudflare/containers-shared@0.23.5': + resolution: {integrity: sha512-tqC/sHgV1fXtPuRCOZP2JFtB8gvt52DstrGFn8MM8H1Qg5uYx4oY1vOcAlt+7YqqyKz1Nr9mFp7bJ/oqaWfkLQ==} engines: {node: '>=22.0.0'} - '@cloudflare/deploy-helpers@0.24.2': - resolution: {integrity: sha512-7B2Na/BA9ImJ7F2sFlZaf10QgJ0e53PJoHb0iyysIoy8MUlvIYrgSUc3t9rcQsyVVnQ/N3TrXVTCOUe/L5wFHA==} + '@cloudflare/deploy-helpers@0.24.3': + resolution: {integrity: sha512-RWuBl5GjFHIpMFki4zXjIHMqkCMnFiu2+rtnoDc1Y/WVMf2oQyM9/ogaUE9JfRYAN0Z64nijxTEbAoCi0SkVDg==} '@cloudflare/kv-asset-handler@0.1.3': resolution: {integrity: sha512-FNcunDuTmEfQTLRLtA6zz+buIXUHj1soPvSWzzQFBC+n2lsy+CGf/NIrR3SEPCmsVNQj70/Jx2lViCpq+09YpQ==} @@ -2054,6 +2054,14 @@ packages: vitest: optional: true + '@cloudflare/workers-utils@0.50.1': + resolution: {integrity: sha512-b2sKwfyafHkXNp6lfsG7ZPKR5XQqI4i2qqXP5YzoiZV559I4kI+Dq0hXoj2jeq2Cxr88//IWDv0eKEZGN9iVSw==} + peerDependencies: + vitest: ^4.1.0 || ^5.0.0 + peerDependenciesMeta: + vitest: + optional: true + '@cspotcode/source-map-support@0.8.1': resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} @@ -5828,8 +5836,8 @@ packages: resolution: {integrity: sha512-Cjrs+vHHQ7krLO4HYELYpYBJBuMhcnNZD/Z5z/UcQSnFqWSQY3DhtTCFalXgI1/yO1iK+YrRKK8EYkumrEopxg==} engines: {node: '>=22.0.0'} - miniflare@5.20261023.2-beta: - resolution: {integrity: sha512-sXpZloQnIUe4raXXdwwqd2ioRHox9a/1B4nB2/p4JWKDwGuVgEK4DugCNgIeQf0iVuSgBItdYpodJe4iwY6SrQ==} + miniflare@5.20261023.3-beta: + resolution: {integrity: sha512-thdXzlktu5GE1o/BlmMAPeJ0Cu6Tu5LpMbRlyfRrpVvMRrhd6p52TMqcITCZZLVzt1UO92VGBkLDhLOpryUAyQ==} engines: {node: '>=22.0.0'} minimatch@10.2.6: @@ -7268,8 +7276,8 @@ packages: '@cloudflare/workers-types': optional: true - wrangler@4.155.0: - resolution: {integrity: sha512-gBKtAg2e0abQDvXPRQu611YMTd/cfAaJTOLAs/89tTxFxEeUyC260MRJRK+m3gLmQjDYWFwJv+ErwuJ/GuALpA==} + wrangler@4.156.0: + resolution: {integrity: sha512-kVLAShuLiNgE3jcrmXcymDf/iPKDPrSxACe5ueugW/33HeNB9E9CkKYchudCeBwgmsnl4k+1zt4NO7vqb/fRuQ==} engines: {node: '>=22.0.0'} hasBin: true peerDependencies: @@ -8197,10 +8205,10 @@ snapshots: dependencies: '@cloudflare/config': 0.29.0 - '@cloudflare/cli-shared-helpers@0.2.10(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0)))': + '@cloudflare/cli-shared-helpers@0.3.0(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0)))': dependencies: '@clack/core': 1.2.0 - '@cloudflare/workers-utils': 0.50.0(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0))) + '@cloudflare/workers-utils': 0.50.1(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0))) chalk: 5.3.0 ci-info: 4.4.0 cross-spawn: 7.0.6 @@ -8212,27 +8220,27 @@ snapshots: dependencies: zod: 4.6.6 - '@cloudflare/containers-shared@0.23.4(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0)))': + '@cloudflare/containers-shared@0.23.5(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0)))': dependencies: '@cloudflare/build-output-utils': 0.9.6 - '@cloudflare/cli-shared-helpers': 0.2.10(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0))) + '@cloudflare/cli-shared-helpers': 0.3.0(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0))) '@cloudflare/config': 0.29.0 - '@cloudflare/workers-utils': 0.50.0(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0))) + '@cloudflare/workers-utils': 0.50.1(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0))) transitivePeerDependencies: - vitest - '@cloudflare/deploy-helpers@0.24.2(@types/node@22.15.17)(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0)))': + '@cloudflare/deploy-helpers@0.24.3(@types/node@22.15.17)(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0)))': dependencies: - '@cloudflare/cli-shared-helpers': 0.2.10(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0))) + '@cloudflare/cli-shared-helpers': 0.3.0(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0))) '@cloudflare/config': 0.29.0 - '@cloudflare/containers-shared': 0.23.4(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0))) - '@cloudflare/workers-utils': 0.50.0(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0))) + '@cloudflare/containers-shared': 0.23.5(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0))) + '@cloudflare/workers-utils': 0.50.1(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0))) blake3-wasm: 2.1.5 chalk: 5.3.0 command-exists: 1.2.9 devtools-protocol: 0.0.1182435 dotenv: 16.3.1 - miniflare: 5.20261023.2-beta(@types/node@22.15.17) + miniflare: 5.20261023.3-beta(@types/node@22.15.17) p-queue: 9.0.0 pretty-bytes: 6.1.1 undici: 7.30.1 @@ -8333,6 +8341,14 @@ snapshots: optionalDependencies: vitest: 5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0)) + '@cloudflare/workers-utils@0.50.1(vitest@5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0)))': + dependencies: + chalk: 5.3.0 + dotenv: 16.3.1 + undici: 7.30.1 + optionalDependencies: + vitest: 5.0.4(@opentelemetry/api@1.9.1)(@types/node@22.15.17)(msw@2.14.6(@types/node@22.15.17)(typescript@5.8.3))(vite@8.3.4(@types/node@22.15.17)(esbuild@0.28.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.9.0)) + '@cspotcode/source-map-support@0.8.1': dependencies: '@jridgewell/trace-mapping': 0.3.9 @@ -11754,7 +11770,7 @@ snapshots: - bufferutil - utf-8-validate - miniflare@5.20261023.2-beta(@types/node@22.15.17): + miniflare@5.20261023.3-beta(@types/node@22.15.17): dependencies: '@cspotcode/source-map-support': 0.8.1 sharp: 0.35.5(@types/node@22.15.17) @@ -13219,13 +13235,13 @@ snapshots: - bufferutil - utf-8-validate - wrangler@4.155.0(@cloudflare/workers-types@5.20261023.1)(@types/node@22.15.17): + wrangler@4.156.0(@cloudflare/workers-types@5.20261023.1)(@types/node@22.15.17): dependencies: '@cloudflare/kv-asset-handler': 0.5.0 '@cloudflare/unenv-preset': 2.16.2(unenv@2.0.0-rc.24)(workerd@1.20261023.1) blake3-wasm: 2.1.5 esbuild: 0.28.2 - miniflare: 5.20261023.2-beta(@types/node@22.15.17) + miniflare: 5.20261023.3-beta(@types/node@22.15.17) path-to-regexp: 6.3.0 unenv: 2.0.0-rc.24 workerd: 1.20261023.1