UNPKG

4.57 kBTypeScriptView Raw
1
2import { RSCPayload } from "./server.rsc.js";
3import * as React$1 from "react";
4
5//#region lib/rsc/server.ssr.d.ts
6type DecodedPayload = Promise<RSCPayload> & {
7 _deepestRenderedBoundaryId?: string | null;
8 formState: Promise<any>;
9};
10type SSRCreateFromReadableStreamFunction = (body: ReadableStream<Uint8Array>) => Promise<unknown>;
11/**
12 * Routes the incoming [`Request`](https://developer.mozilla.org/en-US/docs/Web/API/Request)
13 * to the [RSC](https://react.dev/reference/rsc/server-components) server and
14 * appropriately proxies the server response for data / resource requests, or
15 * renders to HTML for a document request.
16 *
17 * @example
18 * import { createFromReadableStream } from "@vitejs/plugin-rsc/ssr";
19 * import * as ReactDomServer from "react-dom/server.edge";
20 * import {
21 * unstable_RSCStaticRouter as RSCStaticRouter,
22 * unstable_routeRSCServerRequest as routeRSCServerRequest,
23 * } from "react-router";
24 *
25 * routeRSCServerRequest({
26 * request,
27 * serverResponse,
28 * createFromReadableStream,
29 * async renderHTML(getPayload) {
30 * const payload = getPayload();
31 *
32 * return await renderHTMLToReadableStream(
33 * <RSCStaticRouter getPayload={getPayload} />,
34 * {
35 * bootstrapScriptContent,
36 * formState: await payload.formState,
37 * }
38 * );
39 * },
40 * });
41 *
42 * @name unstable_routeRSCServerRequest
43 * @public
44 * @category RSC
45 * @mode data
46 * @param opts Options
47 * @param opts.createFromReadableStream Your `react-server-dom-xyz/client`'s
48 * `createFromReadableStream` function, used to decode payloads from the server.
49 * @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}.
50 * @param opts.hydrate Whether to hydrate the server response with the RSC payload.
51 * Defaults to `true`.
52 * @param opts.renderHTML A function that renders the {@link unstable_RSCPayload} to
53 * HTML, usually using a {@link unstable_RSCStaticRouter | `<RSCStaticRouter>`}.
54 * @param opts.request The request to route.
55 * @returns A [`Response`](https://developer.mozilla.org/en-US/docs/Web/API/Response)
56 * that either contains the [RSC](https://react.dev/reference/rsc/server-components)
57 * payload for data requests, or renders the HTML for document requests.
58 */
59declare function routeRSCServerRequest({
60 request,
61 serverResponse,
62 createFromReadableStream,
63 renderHTML,
64 hydrate
65}: {
66 request: Request;
67 serverResponse: Response;
68 createFromReadableStream: SSRCreateFromReadableStreamFunction;
69 renderHTML: (getPayload: () => DecodedPayload, options: {
70 onError(error: unknown): string | undefined;
71 onHeaders(headers: Headers): void;
72 }) => ReadableStream<Uint8Array> | Promise<ReadableStream<Uint8Array>>;
73 hydrate?: boolean;
74}): Promise<Response>;
75/**
76 * Props for the {@link unstable_RSCStaticRouter} component.
77 *
78 * @name unstable_RSCStaticRouterProps
79 * @category Types
80 */
81interface RSCStaticRouterProps {
82 /**
83 * A function that starts decoding of the {@link unstable_RSCPayload}. Usually passed
84 * through from {@link unstable_routeRSCServerRequest}'s `renderHTML`.
85 */
86 getPayload: () => DecodedPayload;
87}
88/**
89 * Pre-renders an {@link unstable_RSCPayload} to HTML. Usually used in
90 * {@link unstable_routeRSCServerRequest}'s `renderHTML` callback.
91 *
92 * @example
93 * import { createFromReadableStream } from "@vitejs/plugin-rsc/ssr";
94 * import * as ReactDomServer from "react-dom/server.edge";
95 * import {
96 * unstable_RSCStaticRouter as RSCStaticRouter,
97 * unstable_routeRSCServerRequest as routeRSCServerRequest,
98 * } from "react-router";
99 *
100 * routeRSCServerRequest({
101 * request,
102 * serverResponse,
103 * createFromReadableStream,
104 * async renderHTML(getPayload) {
105 * const payload = getPayload();
106 *
107 * return await renderHTMLToReadableStream(
108 * <RSCStaticRouter getPayload={getPayload} />,
109 * {
110 * bootstrapScriptContent,
111 * formState: await payload.formState,
112 * }
113 * );
114 * },
115 * });
116 *
117 * @name unstable_RSCStaticRouter
118 * @public
119 * @category RSC
120 * @mode data
121 * @param props Props
122 * @param {unstable_RSCStaticRouterProps.getPayload} props.getPayload n/a
123 * @returns A React component that renders the {@link unstable_RSCPayload} as HTML.
124 */
125declare function RSCStaticRouter({
126 getPayload
127}: RSCStaticRouterProps): React$1.JSX.Element | null;
128//#endregion
129export { RSCStaticRouter, RSCStaticRouterProps, SSRCreateFromReadableStreamFunction, routeRSCServerRequest };
\No newline at end of file