vite-plugin-react-server
Version:
Vite plugin for React Server Components (RSC)
70 lines (67 loc) • 1.79 kB
text/typescript
// React types are imported from vendor system at runtime
import type { ReactStreamHandlerFn, StreamMetrics } from "../types.js";
import type { PassThrough } from "node:stream";
export type CreateRenderToPipeableStreamHandlerReturn<
Env extends "client" | "server" = "client" | "server"
> = {
type: Env;
pipe: <Writable extends NodeJS.WritableStream>(
destination: Writable
) => Writable;
abort: (reason?: unknown) => void;
// in .client this is the node-stream (createNodeStream) and in .server this just the react elements
elements?: React.ReactElement | React.ReactNode | React.Usable<React.ReactElement | React.ReactNode>;
metrics: StreamMetrics;
} & (Env extends "server"
? {
rscStream: PassThrough;
htmlStream?: never;
}
: {
rscStream?: never;
htmlStream: PassThrough;
});
export type CreateRenderToPipeableStreamHandlerFn<
Env extends "client" | "server" = "client" | "server"
> = ReactStreamHandlerFn<
Env,
// make those optional which we can handle later or ignore
| "moduleID"
| "css"
| "normalizer"
| "onMetrics"
| "htmlTimeout"
| "fileWriteTimeout"
| "workerShutdownTimeout"
| "rscWorkerPath"
| "htmlWorkerPath"
| "panicThreshold"
| "logger"
| "serverPipeableStreamOptions"
| "clientPipeableStreamOptions"
| "verbose"
| "onEvent"
| "autoDiscover"
| "rscTimeout"
| "loader"
| "manifest"
| "cssFiles"
| "globalCss"
| "build"
| "dev"
| "PageComponent"
| "RootComponent"
| "HtmlComponent"
| "children"
| "pageExportName"
| "propsExportName"
| "rootExportName"
| "htmlExportName"
| "moduleBase"
| "publicOrigin"
| "projectRoot"
| "url"
| "reuseHeadlessStreamId"
| "headlessStreamElements",
CreateRenderToPipeableStreamHandlerReturn<Env>
>;