1/// <reference types="@vitejs/plugin-rsc/types" />
2import 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.
6export 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};