@vitejs/plugin-rsc
Version:
React Server Components (RSC) support for Vite.
38 lines (36 loc) • 1.38 kB
JavaScript
import "../dist-DEF94lDJ.js";
import "../shared-CEyKoKAb.js";
import "../ssr-MYoobcMC.js";
import { createFromReadableStream } from "../ssr-BLt64xPK.js";
import "../ssr-ClDiSAPx.js";
import { injectRSCPayload } from "../server-D0-DavPP.js";
import React from "react";
import { jsx } from "react/jsx-runtime";
import ReactDomServer from "react-dom/server.edge";
//#region src/extra/ssr.tsx
/**
* @deprecated Use `@vitejs/plugin-rsc/ssr` API instead.
*/
async function renderHtml(rscStream, options) {
const [rscStream1, rscStream2] = rscStream.tee();
let payload;
function SsrRoot() {
payload ??= createFromReadableStream(rscStream1, { nonce: options?.nonce });
const root = React.use(payload).root;
return root;
}
const bootstrapScriptContent = await import.meta.viteRsc.loadBootstrapScriptContent("index");
const htmlStream = await ReactDomServer.renderToReadableStream(/* @__PURE__ */ jsx(SsrRoot, {}), {
bootstrapScriptContent: options?.debugNoJs ? void 0 : bootstrapScriptContent,
nonce: options?.nonce,
formState: options?.formState
});
let responseStream = htmlStream;
if (!options?.debugNoJs) responseStream = responseStream.pipeThrough(injectRSCPayload(rscStream2, { nonce: options?.nonce }));
return new Response(responseStream, { headers: {
"content-type": "text/html;charset=utf-8",
vary: "accept"
} });
}
//#endregion
export { renderHtml };