fully-react
Version:
React Server for Vite
75 lines (72 loc) • 2.19 kB
JavaScript
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
};