diff --git a/packages/plugin-rsc/examples/react-router/package.json b/packages/plugin-rsc/examples/react-router/package.json index 2a1686e8..41018c32 100644 --- a/packages/plugin-rsc/examples/react-router/package.json +++ b/packages/plugin-rsc/examples/react-router/package.json @@ -18,7 +18,7 @@ "react-router": "7.9.6" }, "devDependencies": { - "@cloudflare/vite-plugin": "^1.14.2", + "@cloudflare/vite-plugin": "^1.15.3", "@tailwindcss/typography": "^0.5.19", "@tailwindcss/vite": "^4.1.17", "@types/react": "^19.2.7", @@ -27,6 +27,6 @@ "@vitejs/plugin-rsc": "latest", "tailwindcss": "^4.1.17", "vite": "^7.2.2", - "wrangler": "^4.47.0" + "wrangler": "^4.51.0" } } diff --git a/packages/plugin-rsc/examples/starter-cf-single/package.json b/packages/plugin-rsc/examples/starter-cf-single/package.json index 4053c020..ddc1181f 100644 --- a/packages/plugin-rsc/examples/starter-cf-single/package.json +++ b/packages/plugin-rsc/examples/starter-cf-single/package.json @@ -15,12 +15,13 @@ "react-dom": "^19.2.0" }, "devDependencies": { - "@cloudflare/vite-plugin": "^1.14.2", + "@cloudflare/vite-plugin": "^1.15.3", "@types/react": "^19.2.7", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "latest", "@vitejs/plugin-rsc": "latest", "rsc-html-stream": "^0.0.7", - "vite": "^7.2.2" + "vite": "^7.2.2", + "wrangler": "^4.51.0" } } diff --git a/packages/plugin-rsc/src/plugin.ts b/packages/plugin-rsc/src/plugin.ts index 4851bbab..b1870467 100644 --- a/packages/plugin-rsc/src/plugin.ts +++ b/packages/plugin-rsc/src/plugin.ts @@ -728,18 +728,7 @@ export default function vitePluginRsc( this.environment.mode === 'dev' && rscPluginOptions.loadModuleDevProxy ) { - const origin = server.resolvedUrls?.local[0] - assert(origin, '[vite-rsc] no server for loadModueleDevProxy') - const endpoint = - origin + - '__vite_rsc_load_module_dev_proxy?' + - new URLSearchParams({ environmentName, entryName }) - replacement = `__vite_rsc_rpc.createRpcClient(${JSON.stringify({ - endpoint, - })})` - s.prepend( - `import * as __vite_rsc_rpc from "@vitejs/plugin-rsc/utils/rpc";`, - ) + replacement = `import("virtual:vite-rsc/rpc-client").then((module) => module.createRpcClient(${JSON.stringify({ environmentName, entryName })}))` } else if (this.environment.mode === 'dev') { const environment = server.environments[environmentName]! const source = getEntrySource(environment.config, entryName) @@ -851,6 +840,32 @@ export default function vitePluginRsc( }) }, }, + { + name: 'rsc:virtual:vite-rsc/rpc-client', + resolveId(source) { + if (source === 'virtual:vite-rsc/rpc-client') { + return `\0${source}` + } + }, + load(id) { + if (id === '\0virtual:vite-rsc/rpc-client') { + const { server } = manager + const origin = server.resolvedUrls?.local[0] + assert(origin, '[vite-rsc] no server for loadModuleDevProxy') + + return `\ +import * as __vite_rsc_rpc from "@vitejs/plugin-rsc/utils/rpc"; +export function createRpcClient(params) { + const endpoint = + "${origin}" + + "__vite_rsc_load_module_dev_proxy?" + + new URLSearchParams(params); + return __vite_rsc_rpc.createRpcClient({ endpoint }); +} + ` + } + }, + }, { name: 'rsc:virtual:vite-rsc/assets-manifest', resolveId(source) { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 213e1576..8af46842 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -680,8 +680,8 @@ importers: version: 7.9.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0) devDependencies: '@cloudflare/vite-plugin': - specifier: ^1.14.2 - version: 1.14.2(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1))(workerd@1.20251109.0)(wrangler@4.47.0) + specifier: ^1.15.3 + version: 1.15.3(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1))(workerd@1.20251125.0)(wrangler@4.51.0) '@tailwindcss/typography': specifier: ^0.5.19 version: 0.5.19(tailwindcss@4.1.17) @@ -707,8 +707,8 @@ importers: specifier: ^7.2.2 version: 7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1) wrangler: - specifier: ^4.47.0 - version: 4.47.0 + specifier: ^4.51.0 + version: 4.51.0 packages/plugin-rsc/examples/ssg: dependencies: @@ -779,8 +779,8 @@ importers: version: 19.2.0(react@19.2.0) devDependencies: '@cloudflare/vite-plugin': - specifier: ^1.14.2 - version: 1.14.2(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1))(workerd@1.20251109.0)(wrangler@4.47.0) + specifier: ^1.15.3 + version: 1.15.3(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1))(workerd@1.20251125.0)(wrangler@4.51.0) '@types/react': specifier: ^19.2.7 version: 19.2.7 @@ -799,6 +799,9 @@ importers: vite: specifier: ^7.2.2 version: 7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1) + wrangler: + specifier: ^4.51.0 + version: 4.51.0 playground: devDependencies: @@ -1254,6 +1257,10 @@ packages: resolution: {integrity: sha512-+tv3z+SPp+gqTIcImN9o0hqE9xyfQjI1XD9pL6NuKjua9B1y7mNYv0S9cP+QEbA4ppVgGZEmKOvHX5G5Ei1CVA==} engines: {node: '>=18.0.0'} + '@cloudflare/kv-asset-handler@0.4.1': + resolution: {integrity: sha512-Nu8ahitGFFJztxUml9oD/DLb7Z28C8cd8F46IVQ7y5Btz575pvMY8AqZsXkX7Gds29eCKdMgIHjIvzskHgPSFg==} + engines: {node: '>=18.0.0'} + '@cloudflare/unenv-preset@2.7.10': resolution: {integrity: sha512-mvsNAiJSduC/9yxv1ZpCxwgAXgcuoDvkl8yaHjxoLpFxXy2ugc6TZK20EKgv4yO0vZhAEKwqJm+eGOzf8Oc45w==} peerDependencies: @@ -1263,11 +1270,20 @@ packages: workerd: optional: true - '@cloudflare/vite-plugin@1.14.2': - resolution: {integrity: sha512-PTsoikIKsQKAmjPiSR3WI8FwCp6sLV/WRkwvTk5c+0ShXJdTyQCjzpTBzdSS4afpcoGdU5QFMZaQ8X3H6KTtSQ==} + '@cloudflare/unenv-preset@2.7.11': + resolution: {integrity: sha512-se23f1D4PxKrMKOq+Stz+Yn7AJ9ITHcEecXo2Yjb+UgbUDCEBch1FXQC6hx6uT5fNA3kmX3mfzeZiUmpK1W9IQ==} + peerDependencies: + unenv: 2.0.0-rc.24 + workerd: ^1.20251106.1 + peerDependenciesMeta: + workerd: + optional: true + + '@cloudflare/vite-plugin@1.15.3': + resolution: {integrity: sha512-o199VPWhPoKolIW7bfdk1Vzfpa/gE+1wA+J/B8Is8MH/pAVhNQG1rVxAXjNsOAuRMwfJxRwBKDScwVVZFuUUlw==} peerDependencies: vite: ^6.1.0 || ^7.0.0 - wrangler: ^4.48.0 + wrangler: ^4.51.0 '@cloudflare/workerd-darwin-64@1.20251109.0': resolution: {integrity: sha512-GAYXHOgPTJm6F+mOt0/Zf+rL+xPfMp8zAxGN4pqkzJ6QVQA/mNVMMuj22dI5x8+Ey+lCulKC3rNs4K3VE12hlA==} @@ -1275,30 +1291,60 @@ packages: cpu: [x64] os: [darwin] + '@cloudflare/workerd-darwin-64@1.20251125.0': + resolution: {integrity: sha512-xDIVJi8fPxBseRoEIzLiUJb0N+DXnah/ynS+Unzn58HEoKLetUWiV/T1Fhned//lo5krnToG9KRgVRs0SOOTpw==} + engines: {node: '>=16'} + cpu: [x64] + os: [darwin] + '@cloudflare/workerd-darwin-arm64@1.20251109.0': resolution: {integrity: sha512-fpLJvZi3i+btgrXJcOtKYrbmdnHVTKpaZigoKIcpBX4mbwxUh/GVbrCmOqLebr57asQC+PmBfghUEYniqRgnhA==} engines: {node: '>=16'} cpu: [arm64] os: [darwin] + '@cloudflare/workerd-darwin-arm64@1.20251125.0': + resolution: {integrity: sha512-k5FQET5PXnWjeDqZUpl4Ah/Rn0bH6mjfUtTyeAy6ky7QB3AZpwIhgWQD0vOFB3OvJaK4J/K4cUtNChYXB9mY/A==} + engines: {node: '>=16'} + cpu: [arm64] + os: [darwin] + '@cloudflare/workerd-linux-64@1.20251109.0': resolution: {integrity: sha512-5NjCnXQoaySFAGGn10w0rPfmEhTSKTP/k7f3aduvt1syt462+66X7luOME/k2x5EB/Z5L8xvwf3/LejSSZ4EVA==} engines: {node: '>=16'} cpu: [x64] os: [linux] + '@cloudflare/workerd-linux-64@1.20251125.0': + resolution: {integrity: sha512-at6n/FomkftykWx0EqVLUZ0juUFz3ORtEPeBbW9ZZ3BQEyfVUtYfdcz/f1cN8Yyb7TE9ovF071P0mBRkx83ODw==} + engines: {node: '>=16'} + cpu: [x64] + os: [linux] + '@cloudflare/workerd-linux-arm64@1.20251109.0': resolution: {integrity: sha512-f2AeJlpSwrEvEV57+JU+vRPL8c/Dv8nwY4XW+YwnzPo2TpbI/zzqloPXQ6PY79ftDfEsJJPzQuaDDPq3UOGJQA==} engines: {node: '>=16'} cpu: [arm64] os: [linux] + '@cloudflare/workerd-linux-arm64@1.20251125.0': + resolution: {integrity: sha512-EiRn+jrNaIs1QveabXGHFoyn3s/l02ui6Yp3nssyNhtmtgviddtt8KObBfM1jQKjXTpZlunhwdN4Bxf4jhlOMw==} + engines: {node: '>=16'} + cpu: [arm64] + os: [linux] + '@cloudflare/workerd-windows-64@1.20251109.0': resolution: {integrity: sha512-IGo/lzbYoeJdfLkpaKLoeG6C7Rwcf5kXjzV0wO8fLUSmlfOLQvXTIehWc7EkbHFHjPapDqYqR0KsmbizBi68Lg==} engines: {node: '>=16'} cpu: [x64] os: [win32] + '@cloudflare/workerd-windows-64@1.20251125.0': + resolution: {integrity: sha512-6fdIsSeu65g++k8Y2DKzNKs0BkoU+KKI6GAAVBOLh2vvVWWnCP1OgMdVb5JAdjDrjDT5i0GSQu0bgQ8fPsW6zw==} + engines: {node: '>=16'} + cpu: [x64] + os: [win32] + '@conventional-changelog/git-client@2.5.1': resolution: {integrity: sha512-lAw7iA5oTPWOLjiweb7DlGEMDEvzqzLLa6aWOly2FSZ64IwLE8T458rC+o+WvI31Doz6joM7X2DoNog7mX8r4A==} engines: {node: '>=18'} @@ -3625,8 +3671,8 @@ packages: engines: {node: '>=18.0.0'} hasBin: true - miniflare@4.20251109.1: - resolution: {integrity: sha512-btcTw1pH40PGVMwn1pZDcrodQkgY8ijKJA/r7LKgJQGqVZ1k9gqfHHtbelZp8O9bJ995eQqdURyvXMflZwCo+g==} + miniflare@4.20251125.0: + resolution: {integrity: sha512-xY6deLx0Drt8GfGG2Fv0fHUocHAIG/Iv62Kl36TPfDzgq7/+DQ5gYNisxnmyISQdA/sm7kOvn2XRBncxjWYrLg==} engines: {node: '>=18.0.0'} hasBin: true @@ -4574,6 +4620,11 @@ packages: engines: {node: '>=16'} hasBin: true + workerd@1.20251125.0: + resolution: {integrity: sha512-oQYfgu3UZ15HlMcEyilKD1RdielRnKSG5MA0xoi1theVs99Rop9AEFYicYCyK1R4YjYblLRYEiL1tMgEFqpReA==} + engines: {node: '>=16'} + hasBin: true + wrangler@4.47.0: resolution: {integrity: sha512-JP0U8oqUETK9D+ZbrSjFFOxGdufYsS6HsT0vLU1IAQrban9a6woMHdBZlGNn/lt8QA70xv1uFiJK8DUMPzC73A==} engines: {node: '>=18.0.0'} @@ -4584,6 +4635,16 @@ packages: '@cloudflare/workers-types': optional: true + wrangler@4.51.0: + resolution: {integrity: sha512-JHv+58UxM2//e4kf9ASDwg016xd/OdDNDUKW6zLQyE7Uc9ayYKX1QJ9NsYtpo4dC1dfg6rT67pf1aNK1cTzUDg==} + engines: {node: '>=20.0.0'} + hasBin: true + peerDependencies: + '@cloudflare/workers-types': ^4.20251125.0 + peerDependenciesMeta: + '@cloudflare/workers-types': + optional: true + wrap-ansi@9.0.0: resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==} engines: {node: '>=18'} @@ -4829,23 +4890,33 @@ snapshots: dependencies: mime: 3.0.0 + '@cloudflare/kv-asset-handler@0.4.1': + dependencies: + mime: 3.0.0 + '@cloudflare/unenv-preset@2.7.10(unenv@2.0.0-rc.24)(workerd@1.20251109.0)': dependencies: unenv: 2.0.0-rc.24 optionalDependencies: workerd: 1.20251109.0 - '@cloudflare/vite-plugin@1.14.2(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1))(workerd@1.20251109.0)(wrangler@4.47.0)': + '@cloudflare/unenv-preset@2.7.11(unenv@2.0.0-rc.24)(workerd@1.20251125.0)': dependencies: - '@cloudflare/unenv-preset': 2.7.10(unenv@2.0.0-rc.24)(workerd@1.20251109.0) + unenv: 2.0.0-rc.24 + optionalDependencies: + workerd: 1.20251125.0 + + '@cloudflare/vite-plugin@1.15.3(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1))(workerd@1.20251125.0)(wrangler@4.51.0)': + dependencies: + '@cloudflare/unenv-preset': 2.7.11(unenv@2.0.0-rc.24)(workerd@1.20251125.0) '@remix-run/node-fetch-server': 0.8.0 get-port: 7.1.0 - miniflare: 4.20251109.1 + miniflare: 4.20251125.0 picocolors: 1.1.1 tinyglobby: 0.2.15 unenv: 2.0.0-rc.24 vite: 7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1) - wrangler: 4.47.0 + wrangler: 4.51.0 ws: 8.18.0 transitivePeerDependencies: - bufferutil @@ -4855,18 +4926,33 @@ snapshots: '@cloudflare/workerd-darwin-64@1.20251109.0': optional: true + '@cloudflare/workerd-darwin-64@1.20251125.0': + optional: true + '@cloudflare/workerd-darwin-arm64@1.20251109.0': optional: true + '@cloudflare/workerd-darwin-arm64@1.20251125.0': + optional: true + '@cloudflare/workerd-linux-64@1.20251109.0': optional: true + '@cloudflare/workerd-linux-64@1.20251125.0': + optional: true + '@cloudflare/workerd-linux-arm64@1.20251109.0': optional: true + '@cloudflare/workerd-linux-arm64@1.20251125.0': + optional: true + '@cloudflare/workerd-windows-64@1.20251109.0': optional: true + '@cloudflare/workerd-windows-64@1.20251125.0': + optional: true + '@conventional-changelog/git-client@2.5.1(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.2.0)': dependencies: '@simple-libs/child-process-utils': 1.0.1 @@ -7230,7 +7316,7 @@ snapshots: - bufferutil - utf-8-validate - miniflare@4.20251109.1: + miniflare@4.20251125.0: dependencies: '@cspotcode/source-map-support': 0.8.1 acorn: 8.14.0 @@ -7240,7 +7326,7 @@ snapshots: sharp: 0.33.5 stoppable: 1.1.0 undici: 7.14.0 - workerd: 1.20251109.0 + workerd: 1.20251125.0 ws: 8.18.0 youch: 4.1.0-beta.10 zod: 3.22.3 @@ -8173,6 +8259,14 @@ snapshots: '@cloudflare/workerd-linux-arm64': 1.20251109.0 '@cloudflare/workerd-windows-64': 1.20251109.0 + workerd@1.20251125.0: + optionalDependencies: + '@cloudflare/workerd-darwin-64': 1.20251125.0 + '@cloudflare/workerd-darwin-arm64': 1.20251125.0 + '@cloudflare/workerd-linux-64': 1.20251125.0 + '@cloudflare/workerd-linux-arm64': 1.20251125.0 + '@cloudflare/workerd-windows-64': 1.20251125.0 + wrangler@4.47.0: dependencies: '@cloudflare/kv-asset-handler': 0.4.0 @@ -8189,6 +8283,22 @@ snapshots: - bufferutil - utf-8-validate + wrangler@4.51.0: + dependencies: + '@cloudflare/kv-asset-handler': 0.4.1 + '@cloudflare/unenv-preset': 2.7.11(unenv@2.0.0-rc.24)(workerd@1.20251125.0) + blake3-wasm: 2.1.5 + esbuild: 0.25.4 + miniflare: 4.20251125.0 + path-to-regexp: 6.3.0 + unenv: 2.0.0-rc.24 + workerd: 1.20251125.0 + optionalDependencies: + fsevents: 2.3.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + wrap-ansi@9.0.0: dependencies: ansi-styles: 6.2.1