UNPKG

fully-react

Version:
75 lines (72 loc) 2.19 kB
import { renderToReadableStream2 as renderToReadableStream } from "./chunk-2LNACUKM.js"; // src/server/server-components.tsx async function renderServerComponentDev(src, props, env) { const { default: devServer } = await import("./dev-server-7Z7UZWCJ.js"); return devServer.rscWorker.render(src, props, env); } async function renderServerComponentProd(src, props, env) { const path = await import("path"); const rootDir = path.join(process.cwd(), process.env.OUT_ROOT_DIR ?? "."); const { default: entry } = await import( /* @vite-ignore */ path.join( rootDir, import.meta.env.REACT_SERVER_PROD_ENTRY ) ); const stream = await entry(src, props, env); return stream; } var renderServerComponent = import.meta.env.DEV ? renderServerComponentDev : renderServerComponentProd; async function createServerComponentResponse(component, props, env, responseInit = {}) { const serverElement = await renderServerComponent(component, props, env); return new Response(serverElement, { ...responseInit, headers: { "Content-Type": "text/x-component", ...responseInit.headers ?? {} } }); } async function createActionResponse(action, args, renderOptions, responseInit = {}) { return new Response( renderToReadableStream(await action(...args), renderOptions.clientModuleMap), { ...responseInit, headers: { "Content-Type": "application/json", ...responseInit.headers ?? {} } } ); } async function createMutationResponse(action, args, component, props, env, responseInit = {}) { try { await action(...args); return new Response(await renderServerComponent(component, props, env), { ...responseInit, headers: { "Content-Type": "text/x-component", ...responseInit.headers ?? {} } }); } catch (e) { console.log("error", e); return new Response(e.message, { ...responseInit, status: 500, headers: { "Content-Type": "text/plain", ...responseInit.headers ?? {} } }); } } export { renderServerComponent, createServerComponentResponse, createActionResponse, createMutationResponse };