vite-plugin-react-server
Version:
Vite plugin for React Server Components (RSC)
96 lines (86 loc) • 2.71 kB
text/typescript
import type { ConfigEnv, Logger, Manifest, ResolvedConfig, ViteDevServer } from "vite";
import type {
AutoDiscoveredFiles,
MessageHandler,
PanicThreshold,
ResolvedUserOptions,
SerializedUserOptions,
} from "../../types.js";
import type { MessageChannel, Worker } from "node:worker_threads";
import type { IncomingMessage, ServerResponse } from "node:http";
import type {
RscChunkOutputMessage,
RscWorkerOutputMessage,
} from "../worker/rsc/types.js";
import type { StreamHandlers } from "../worker/types.js";
import type { PassThrough } from "node:stream";
export type RestartWorkerFn = (props: {
server: ViteDevServer;
autoDiscoveredFiles: AutoDiscoveredFiles;
userOptions: SerializedUserOptions;
configEnv: ConfigEnv;
hmrChannel: MessageChannel;
}) => Promise<Worker | null>;
export type HandleWorkerServerActionFn = (
req: IncomingMessage,
res: ServerResponse,
worker: Worker,
logger: ViteDevServer["config"]["logger"]
) => Promise<void>;
export type CreateWorkerStreamFn = (props: {
route: string;
url: string;
projectRoot: string;
moduleBasePath: string;
moduleBaseURL: string;
moduleRootPath: string;
cssFiles: Map<string, any>;
globalCss: Map<string, any>;
manifest: any;
serverPipeableStreamOptions?: any;
clientPipeableStreamOptions?: any;
verbose?: boolean;
panicThreshold?: PanicThreshold;
logger?: any;
rscWorkerPath?: string;
onEvent?: (event: any) => void;
moduleBase: string;
HtmlComponent: any;
PageComponent: any;
RootComponent: any;
pageProps: any;
as: any;
}) => {
abort: (reason?: unknown) => void;
pipe: <Writable extends NodeJS.WritableStream>(destination: Writable) => Writable;
};
// Removed GenerateWorkerStreamFn - using CreateWorkerStreamFn from helpers instead
export type CreateMessageHandlerFn = (props: {
handlers: StreamHandlers;
logger: Logger;
verbose?: boolean;
}) => (message: RscWorkerOutputMessage | undefined) => void;
export type ConfigureWorkerRequestHandlerFn = (props: {
server: ViteDevServer;
autoDiscoveredFiles: AutoDiscoveredFiles;
userOptions: ResolvedUserOptions;
configEnv: ConfigEnv;
serverManifest: Manifest;
resolvedConfig: ResolvedConfig;
hmrChannel: MessageChannel;
onWorkerCreated?: (worker: Worker, restart?: () => Promise<void>) => void;
}) => void;
export type ConfigureRequestHandlerFn = (
req: IncomingMessage,
res: ServerResponse,
worker: Worker,
logger: ViteDevServer["config"]["logger"]
) => Promise<void>;
export type CleanupWorkerServerActionFn = (
passThrough: PassThrough,
worker: Worker,
messageHandler: MessageHandler<RscChunkOutputMessage>,
res: ServerResponse,
error?: unknown,
logger?: Logger
) => void;