1/// <reference types="@vitejs/plugin-rsc/types" />
2import handler from "./entry.rsc.single";
3
4// The distilled Cloudflare worker wrapper expects a `{ fetch }` default export;
5// the 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 `react-dom/server`)
11 // must not import it directly in this `rsc` entry — it loads it from the
12 // `ssr` environment via `loadModule`. Exercises a custom (non-`index`) ssr
13 // input + cross-environment load through the distilled plugin.
14 if (url.pathname === "/worker-render") {
15 const { renderWorkerHtml } = await import.meta.viteRsc.loadModule<
16 typeof import("./worker-ssr")
17 >("ssr", "worker-ssr");
18 return Response.json({ ok: true, html: renderWorkerHtml() });
19 }
20
21 return handler(request);
22 },
23};