UNPKG

vite-plugin-react-server

Version:
37 lines (32 loc) 1.07 kB
import { Transform } from "node:stream"; import { createStreamMetrics } from "./createStreamMetrics.js"; import type { StreamMetrics } from "./types.js"; /** * Creates a transform stream that collects metrics from the input stream * @param stream The stream to collect metrics from * @returns A promise that resolves with the metrics when the stream ends */ export function collectStreamMetrics(stream: any | NodeJS.ReadableStream): Promise<StreamMetrics> { const metrics = createStreamMetrics(); const startTime = performance.now() return new Promise<StreamMetrics>((resolve, reject) => { const transform = new Transform({ transform(chunk, _encoding, callback) { metrics.chunks++; metrics.bytes += chunk.length; callback(null, chunk); }, flush(callback) { metrics.duration = Date.now() - startTime; callback(); } }); stream.pipe(transform); transform.on("error", (error) => { reject(error); }); transform.on("end", () => { resolve(metrics); }); }); }