A tool for people curious about the React Server Components protocol
rscexplorer.dev/
rsc
react
1// Type declarations for react-server-dom-webpack
2// Based on Flow types from React source
3
4declare module "react-server-dom-webpack/server" {
5 import type { Thenable, ReactNode } from "react";
6
7 export type TemporaryReferenceSet = Set<unknown>;
8
9 export type ClientManifest = {
10 [moduleId: string]: {
11 id: string;
12 chunks: string[];
13 name: string;
14 };
15 };
16
17 export type ServerManifest = {
18 [id: string]: {
19 id: string;
20 chunks: string[];
21 name: string;
22 };
23 };
24
25 export type RenderOptions = {
26 debugChannel?: { readable?: ReadableStream; writable?: WritableStream };
27 environmentName?: string | (() => string);
28 filterStackFrame?: (url: string, functionName: string) => boolean;
29 identifierPrefix?: string;
30 signal?: AbortSignal;
31 temporaryReferences?: TemporaryReferenceSet;
32 onError?: (error: unknown) => void;
33 };
34
35 export type StaticResult = {
36 prelude: ReadableStream;
37 };
38
39 export function renderToReadableStream(
40 model: ReactNode,
41 webpackMap: ClientManifest,
42 options?: RenderOptions,
43 ): ReadableStream;
44
45 export function prerender(
46 model: ReactNode,
47 webpackMap: ClientManifest,
48 options?: RenderOptions,
49 ): Promise<StaticResult>;
50
51 export function decodeReply<T = unknown>(
52 body: string | FormData,
53 webpackMap: ServerManifest,
54 options?: { temporaryReferences?: TemporaryReferenceSet },
55 ): Thenable<T>;
56
57 export function decodeAction<T = unknown>(
58 body: FormData,
59 serverManifest: ServerManifest,
60 ): Promise<() => T> | null;
61
62 export function decodeFormState<S>(
63 actionResult: S,
64 body: FormData,
65 serverManifest: ServerManifest,
66 ): Promise<unknown>;
67
68 export function registerServerReference<T extends Function>(
69 reference: T,
70 id: string,
71 exportName: string | null,
72 ): T;
73
74 export function registerClientReference<T>(
75 proxyImplementation: T,
76 id: string,
77 exportName: string,
78 ): T;
79
80 export function createClientModuleProxy<T = Record<string, unknown>>(moduleId: string): T;
81
82 export function createTemporaryReferenceSet(): TemporaryReferenceSet;
83}
84
85declare module "react-server-dom-webpack/client" {
86 import type { Thenable } from "react";
87
88 export type TemporaryReferenceSet = Set<unknown>;
89
90 export type CallServerCallback = (id: string, args: unknown[]) => Promise<unknown>;
91
92 export type FindSourceMapURLCallback = (
93 fileName: string,
94 environmentName: string,
95 ) => string | null | undefined;
96
97 export type Options = {
98 callServer?: CallServerCallback;
99 debugChannel?: { writable?: WritableStream; readable?: ReadableStream };
100 temporaryReferences?: TemporaryReferenceSet;
101 findSourceMapURL?: FindSourceMapURLCallback;
102 replayConsoleLogs?: boolean;
103 environmentName?: string;
104 startTime?: number;
105 endTime?: number;
106 };
107
108 export function createFromReadableStream<T = unknown>(
109 stream: ReadableStream,
110 options?: Options,
111 ): Thenable<T>;
112
113 export function createFromFetch<T = unknown>(
114 promiseForResponse: Promise<Response>,
115 options?: Options,
116 ): Thenable<T>;
117
118 export function encodeReply(
119 value: unknown,
120 options?: { temporaryReferences?: TemporaryReferenceSet; signal?: AbortSignal },
121 ): Promise<string | FormData>;
122
123 export function createServerReference<T extends Function>(
124 id: string,
125 callServer: CallServerCallback,
126 ): T;
127
128 export function registerServerReference<T extends Function>(
129 reference: T,
130 id: string,
131 exportName: string | null,
132 ): T;
133
134 export function createTemporaryReferenceSet(): TemporaryReferenceSet;
135}