| 1 | /// <reference types="@vitejs/plugin-rsc/types" /> |
| 2 | import handler from "./entry.rsc.single"; |
| 3 | |
| 4 | // The Cloudflare worker wrapper expects a `{ fetch }` default export; the |
| 5 | // RSC single-worker handler is a bare (request) => Response function. |
| 6 | export default { |
| 7 | async fetch(request: Request): Promise<Response> { |
| 8 | const url = new URL(request.url); |
| 9 | |
| 10 | // Worker code that needs a non-`react-server` module (here |
| 11 | // `react-dom/server`) must not import it directly in this `rsc` entry — |
| 12 | // it loads it from the `ssr` environment via `loadModule`. |
| 13 | if (url.pathname === "/worker-render") { |
| 14 | const { renderWorkerHtml } = await import.meta.viteRsc.loadModule< |
| 15 | typeof import("./worker-ssr") |
| 16 | >("ssr", "worker-ssr"); |
| 17 | return Response.json({ ok: true, html: renderWorkerHtml() }); |
| 18 | } |
| 19 | |
| 20 | return handler(request); |
| 21 | }, |
| 22 | }; |