UNPKG

5.32 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 * nonce,
30 * async renderHTML(getPayload, options) {
31 * const payload = getPayload();
32 *
33 * return await renderHTMLToReadableStream(
34 * <RSCStaticRouter
35 * getPayload={getPayload}
36 * nonce={options.nonce}
37 * />,
38 * {
39 * ...options,
40 * bootstrapScriptContent,
41 * formState: await payload.formState,
42 * }
43 * );
44 * },
45 * });
46 *
47 * @name unstable_routeRSCServerRequest
48 * @public
49 * @category RSC
50 * @mode data
51 * @param opts Options
52 * @param opts.createFromReadableStream Your `react-server-dom-xyz/client`'s
53 * `createFromReadableStream` function, used to decode payloads from the server.
54 * @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}.
55 * @param opts.hydrate Whether to hydrate the server response with the RSC payload.
56 * Defaults to `true`.
57 * @param opts.nonce An optional [`nonce`](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Global_attributes/nonce)
58 * for inline scripts generated while rendering the HTML document.
59 * @param opts.renderHTML A function that renders the {@link unstable_RSCPayload} to
60 * HTML, usually using a {@link unstable_RSCStaticRouter | `<RSCStaticRouter>`}.
61 * @param opts.request The request to route.
62 * @returns A [`Response`](https://developer.mozilla.org/en-US/docs/Web/API/Response)
63 * that either contains the [RSC](https://react.dev/reference/rsc/server-components)
64 * payload for data requests, or renders the HTML for document requests.
65 */
66declare function routeRSCServerRequest({
67 request,
68 serverResponse,
69 createFromReadableStream,
70 renderHTML,
71 hydrate,
72 nonce
73}: {
74 request: Request;
75 serverResponse: Response;
76 createFromReadableStream: SSRCreateFromReadableStreamFunction;
77 renderHTML: (getPayload: () => DecodedPayload, options: {
78 nonce?: string;
79 onError(error: unknown): string | undefined;
80 onHeaders(headers: Headers): void;
81 }) => ReadableStream<Uint8Array> | Promise<ReadableStream<Uint8Array>>;
82 hydrate?: boolean;
83 nonce?: string;
84}): Promise<Response>;
85/**
86 * Props for the {@link unstable_RSCStaticRouter} component.
87 *
88 * @name unstable_RSCStaticRouterProps
89 * @category Types
90 */
91interface RSCStaticRouterProps {
92 /**
93 * A function that starts decoding of the {@link unstable_RSCPayload}. Usually passed
94 * through from {@link unstable_routeRSCServerRequest}'s `renderHTML`.
95 */
96 getPayload: () => DecodedPayload;
97 /**
98 * An optional [`nonce`](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Global_attributes/nonce)
99 * used as the default for nonce-aware components such as `<Links>` and
100 * `<ScrollRestoration>`.
101 */
102 nonce?: string;
103}
104/**
105 * Pre-renders an {@link unstable_RSCPayload} to HTML. Usually used in
106 * {@link unstable_routeRSCServerRequest}'s `renderHTML` callback.
107 *
108 * @example
109 * import { createFromReadableStream } from "@vitejs/plugin-rsc/ssr";
110 * import * as ReactDomServer from "react-dom/server.edge";
111 * import {
112 * unstable_RSCStaticRouter as RSCStaticRouter,
113 * unstable_routeRSCServerRequest as routeRSCServerRequest,
114 * } from "react-router";
115 *
116 * routeRSCServerRequest({
117 * request,
118 * serverResponse,
119 * createFromReadableStream,
120 * nonce,
121 * async renderHTML(getPayload, options) {
122 * const payload = getPayload();
123 *
124 * return await renderHTMLToReadableStream(
125 * <RSCStaticRouter
126 * getPayload={getPayload}
127 * nonce={options.nonce}
128 * />,
129 * {
130 * ...options,
131 * bootstrapScriptContent,
132 * formState: await payload.formState,
133 * }
134 * );
135 * },
136 * });
137 *
138 * @name unstable_RSCStaticRouter
139 * @public
140 * @category RSC
141 * @mode data
142 * @param props Props
143 * @param {unstable_RSCStaticRouterProps.getPayload} props.getPayload n/a
144 * @param {unstable_RSCStaticRouterProps.nonce} props.nonce n/a
145 * @returns A React component that renders the {@link unstable_RSCPayload} as HTML.
146 */
147declare function RSCStaticRouter({
148 getPayload,
149 nonce
150}: RSCStaticRouterProps): React$1.JSX.Element | null;
151//#endregion
152export { RSCStaticRouter, RSCStaticRouterProps, SSRCreateFromReadableStreamFunction, routeRSCServerRequest };
\No newline at end of file