vite-plugin-react-server
Version:
Vite plugin for React Server Components (RSC)
52 lines • 1.74 kB
TypeScript
/**
* createBufferedRscStream.ts
*
* PURPOSE: Creates a buffered RSC stream factory that can generate multiple readable streams
*
* PROBLEM: Node.js streams can only be consumed once, but in client-side static generation
* we need to consume the RSC stream twice:
* 1. Write RSC content to index.rsc file
* 2. Transform RSC content to HTML for index.html file
*
* SOLUTION: Buffer all RSC chunks and create a factory that can generate multiple
* readable streams from the same buffered data.
*
* USAGE:
* ```typescript
* const bufferedStreamFactory = createBufferedRscStream(rscStream, {
* route: "/",
* logger: myLogger,
* verbose: true
* });
*
* // Create separate streams for each consumer
* const rscStream = bufferedStreamFactory.createStream();
* const htmlStream = bufferedStreamFactory.createStream();
*
* // Can be piped to different destinations
* rscStream.pipe(rscFileWriter);
* htmlStream.pipe(htmlTransform);
* ```
*/
import { Readable } from "node:stream";
export interface BufferedRscStreamOptions {
route: string;
logger?: any;
verbose?: boolean;
}
export interface BufferedRscStreamFactory {
createStream(): Readable;
getBufferInfo(): {
chunks: number;
bytes: number;
};
}
/**
* Creates a buffered RSC stream factory that can generate multiple readable streams
*
* @param rscStream - The original RSC stream from the worker
* @param options - Configuration options
* @returns A factory that can create multiple readable streams from the same buffered data
*/
export declare function createBufferedRscStream(rscStream: Readable, options: BufferedRscStreamOptions): BufferedRscStreamFactory;
//# sourceMappingURL=createBufferedRscStream.d.ts.map