UNPKG

rwsdk

Version:

Build fast, server-driven webapps on Cloudflare with SSR, RSC, and realtime

32 lines (31 loc) 1.21 kB
import { renderToReadableStream } from "react-dom/server.edge"; export const renderHtmlStream = async ({ node, identifierPrefix, requestInfo, onError, }) => { return await renderToReadableStream(node, { nonce: requestInfo.rw.nonce, identifierPrefix, onError(error, { componentStack }) { try { if (!error) { error = new Error(`A falsy value was thrown during rendering: ${String(error)}.`); } const message = error ? (error.stack ?? error.message ?? error) : error; const wrappedMessage = `${message}\n\nComponent stack:${componentStack}`; if (error instanceof Error) { const wrappedError = new Error(wrappedMessage); wrappedError.stack = error.stack; error = wrappedError; } else { error = new Error(wrappedMessage); error.stack = componentStack; } onError(error); } catch { onError(error); } }, }); };