vite-plugin-react-server
Version:
Vite plugin for React Server Components (RSC)
78 lines (67 loc) • 2.25 kB
text/typescript
import type { Manifest, ViteDevServer, Logger, ResolvedConfig, ConfigEnv } from "vite";
import type {
AutoDiscoveredFiles,
CreateHandlerOptions,
ResolvedUserOptions,
} from "../types.js";
import type { IncomingMessage, ServerResponse } from "http";
import type { MessageChannel, Worker } from "node:worker_threads";
import type { PassThrough } from "node:stream";
import type { RscChunkOutputMessage } from "../worker/rsc/types.js";
import type { MessageHandler } from "../types.js";
export type ConfigureRequestHandlerFn = (
req: IncomingMessage,
res: ServerResponse,
worker: Worker,
logger: ViteDevServer["config"]["logger"]
) => Promise<void>;
/**
* React Worker Server - configures worker-based rendering infrastructure
* Similar to configureReactServer but for worker-based rendering
*/
export type CreateReactWorkerServerFn = (props: {
server: ViteDevServer;
autoDiscoveredFiles: AutoDiscoveredFiles;
userOptions: ResolvedUserOptions;
configEnv: ConfigEnv;
hmrChannel?: MessageChannel;
serverManifest: Manifest;
resolvedConfig: ResolvedConfig;
onWorkerCreated?: (worker: any, restart?: () => Promise<void>) => void;
}) => {
sendHmrUpdate: (file: string, routes?: string[]) => void;
} | null;
export type HandleServerActionFn = (
req: IncomingMessage,
res: ServerResponse,
server: ViteDevServer,
handlerOptions: Pick<
CreateHandlerOptions,
"verbose" | "moduleBasePath" | "projectRoot" | "loader"
>
) => Promise<void>;
export type ConfigureReactServerFn = (options: {
server: ViteDevServer;
autoDiscoveredFiles: AutoDiscoveredFiles;
userOptions: ResolvedUserOptions;
serverManifest: Manifest;
resolvedConfig: ResolvedConfig;
hmrChannel?: MessageChannel;
onWorkerCreated?: (worker: Worker, restart?: () => Promise<void>) => void;
}) => void;
export type CleanupWorkerServerActionFn = (
passThrough: PassThrough,
worker: Worker,
messageHandler: MessageHandler<RscChunkOutputMessage>,
res: ServerResponse,
error?: unknown,
logger?: Logger
) => void;
export type CleanupServerActionFn = (
passThrough: PassThrough,
worker: Worker,
messageHandler: MessageHandler<RscChunkOutputMessage>,
res: ServerResponse,
error?: unknown,
logger?: Logger
) => void;