UNPKG

react-router

Version:
129 lines (127 loc) 4.57 kB
import { RSCPayload } from "./server.rsc.js"; import * as React$1 from "react"; //#region lib/rsc/server.ssr.d.ts type DecodedPayload = Promise<RSCPayload> & { _deepestRenderedBoundaryId?: string | null; formState: Promise<any>; }; type SSRCreateFromReadableStreamFunction = (body: ReadableStream<Uint8Array>) => Promise<unknown>; /** * Routes the incoming [`Request`](https://developer.mozilla.org/en-US/docs/Web/API/Request) * to the [RSC](https://react.dev/reference/rsc/server-components) server and * appropriately proxies the server response for data / resource requests, or * renders to HTML for a document request. * * @example * import { createFromReadableStream } from "@vitejs/plugin-rsc/ssr"; * import * as ReactDomServer from "react-dom/server.edge"; * import { * unstable_RSCStaticRouter as RSCStaticRouter, * unstable_routeRSCServerRequest as routeRSCServerRequest, * } from "react-router"; * * routeRSCServerRequest({ * request, * serverResponse, * createFromReadableStream, * async renderHTML(getPayload) { * const payload = getPayload(); * * return await renderHTMLToReadableStream( * <RSCStaticRouter getPayload={getPayload} />, * { * bootstrapScriptContent, * formState: await payload.formState, * } * ); * }, * }); * * @name unstable_routeRSCServerRequest * @public * @category RSC * @mode data * @param opts Options * @param opts.createFromReadableStream Your `react-server-dom-xyz/client`'s * `createFromReadableStream` function, used to decode payloads from the server. * @param opts.serverResponse A Response or partial response generated by the [RSC](https://react.dev/reference/rsc/server-components) handler containing a serialized {@link unstable_RSCPayload}. * @param opts.hydrate Whether to hydrate the server response with the RSC payload. * Defaults to `true`. * @param opts.renderHTML A function that renders the {@link unstable_RSCPayload} to * HTML, usually using a {@link unstable_RSCStaticRouter | `<RSCStaticRouter>`}. * @param opts.request The request to route. * @returns A [`Response`](https://developer.mozilla.org/en-US/docs/Web/API/Response) * that either contains the [RSC](https://react.dev/reference/rsc/server-components) * payload for data requests, or renders the HTML for document requests. */ declare function routeRSCServerRequest({ request, serverResponse, createFromReadableStream, renderHTML, hydrate }: { request: Request; serverResponse: Response; createFromReadableStream: SSRCreateFromReadableStreamFunction; renderHTML: (getPayload: () => DecodedPayload, options: { onError(error: unknown): string | undefined; onHeaders(headers: Headers): void; }) => ReadableStream<Uint8Array> | Promise<ReadableStream<Uint8Array>>; hydrate?: boolean; }): Promise<Response>; /** * Props for the {@link unstable_RSCStaticRouter} component. * * @name unstable_RSCStaticRouterProps * @category Types */ interface RSCStaticRouterProps { /** * A function that starts decoding of the {@link unstable_RSCPayload}. Usually passed * through from {@link unstable_routeRSCServerRequest}'s `renderHTML`. */ getPayload: () => DecodedPayload; } /** * Pre-renders an {@link unstable_RSCPayload} to HTML. Usually used in * {@link unstable_routeRSCServerRequest}'s `renderHTML` callback. * * @example * import { createFromReadableStream } from "@vitejs/plugin-rsc/ssr"; * import * as ReactDomServer from "react-dom/server.edge"; * import { * unstable_RSCStaticRouter as RSCStaticRouter, * unstable_routeRSCServerRequest as routeRSCServerRequest, * } from "react-router"; * * routeRSCServerRequest({ * request, * serverResponse, * createFromReadableStream, * async renderHTML(getPayload) { * const payload = getPayload(); * * return await renderHTMLToReadableStream( * <RSCStaticRouter getPayload={getPayload} />, * { * bootstrapScriptContent, * formState: await payload.formState, * } * ); * }, * }); * * @name unstable_RSCStaticRouter * @public * @category RSC * @mode data * @param props Props * @param {unstable_RSCStaticRouterProps.getPayload} props.getPayload n/a * @returns A React component that renders the {@link unstable_RSCPayload} as HTML. */ declare function RSCStaticRouter({ getPayload }: RSCStaticRouterProps): React$1.JSX.Element | null; //#endregion export { RSCStaticRouter, RSCStaticRouterProps, SSRCreateFromReadableStreamFunction, routeRSCServerRequest };