vite-plugin-react-server
Version:
Vite plugin for React Server Components (RSC)
36 lines (33 loc) • 3.62 kB
JavaScript
/**
* vite-plugin-react-server
* Copyright (c) Nico Brinkkemper
* MIT License
*/
import { Transform } from 'node:stream';
import { createStreamMetrics } from './createStreamMetrics.js';
function collectStreamMetrics(stream) {
const metrics = createStreamMetrics();
const startTime = performance.now();
return new Promise((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);
});
});
}
export { collectStreamMetrics };
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdFN0cmVhbU1ldHJpY3MuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BsdWdpbi9tZXRyaWNzL2NvbGxlY3RTdHJlYW1NZXRyaWNzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyYW5zZm9ybSB9IGZyb20gXCJub2RlOnN0cmVhbVwiO1xuaW1wb3J0IHsgY3JlYXRlU3RyZWFtTWV0cmljcyB9IGZyb20gXCIuL2NyZWF0ZVN0cmVhbU1ldHJpY3MuanNcIjtcbmltcG9ydCB0eXBlIHsgU3RyZWFtTWV0cmljcyB9IGZyb20gXCIuL3R5cGVzLmpzXCI7XG5cbi8qKlxuICogQ3JlYXRlcyBhIHRyYW5zZm9ybSBzdHJlYW0gdGhhdCBjb2xsZWN0cyBtZXRyaWNzIGZyb20gdGhlIGlucHV0IHN0cmVhbVxuICogQHBhcmFtIHN0cmVhbSBUaGUgc3RyZWFtIHRvIGNvbGxlY3QgbWV0cmljcyBmcm9tXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBtZXRyaWNzIHdoZW4gdGhlIHN0cmVhbSBlbmRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb2xsZWN0U3RyZWFtTWV0cmljcyhzdHJlYW06IGFueSB8IE5vZGVKUy5SZWFkYWJsZVN0cmVhbSk6IFByb21pc2U8U3RyZWFtTWV0cmljcz4ge1xuICBjb25zdCBtZXRyaWNzID0gY3JlYXRlU3RyZWFtTWV0cmljcygpO1xuICBjb25zdCBzdGFydFRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKVxuXG4gIHJldHVybiBuZXcgUHJvbWlzZTxTdHJlYW1NZXRyaWNzPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgdHJhbnNmb3JtID0gbmV3IFRyYW5zZm9ybSh7XG4gICAgICB0cmFuc2Zvcm0oY2h1bmssIF9lbmNvZGluZywgY2FsbGJhY2spIHtcbiAgICAgICAgbWV0cmljcy5jaHVua3MrKztcbiAgICAgICAgbWV0cmljcy5ieXRlcyArPSBjaHVuay5sZW5ndGg7XG4gICAgICAgIGNhbGxiYWNrKG51bGwsIGNodW5rKTtcbiAgICAgIH0sXG4gICAgICBmbHVzaChjYWxsYmFjaykge1xuICAgICAgICBtZXRyaWNzLmR1cmF0aW9uID0gRGF0ZS5ub3coKSAtIHN0YXJ0VGltZTtcbiAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHN0cmVhbS5waXBlKHRyYW5zZm9ybSk7XG5cbiAgICB0cmFuc2Zvcm0ub24oXCJlcnJvclwiLCAoZXJyb3IpID0+IHtcbiAgICAgIHJlamVjdChlcnJvcik7XG4gICAgfSk7XG5cbiAgICB0cmFuc2Zvcm0ub24oXCJlbmRcIiwgKCkgPT4ge1xuICAgICAgcmVzb2x2ZShtZXRyaWNzKTtcbiAgICB9KTtcbiAgfSk7XG59ICJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQVNPLFNBQVMscUJBQXFCLE1BQTZELEVBQUE7QUFDaEcsRUFBQSxNQUFNLFVBQVUsbUJBQW9CLEVBQUE7QUFDcEMsRUFBTSxNQUFBLFNBQUEsR0FBWSxZQUFZLEdBQUksRUFBQTtBQUVsQyxFQUFBLE9BQU8sSUFBSSxPQUFBLENBQXVCLENBQUMsT0FBQSxFQUFTLE1BQVcsS0FBQTtBQUNyRCxJQUFNLE1BQUEsU0FBQSxHQUFZLElBQUksU0FBVSxDQUFBO0FBQUEsTUFDOUIsU0FBQSxDQUFVLEtBQU8sRUFBQSxTQUFBLEVBQVcsUUFBVSxFQUFBO0FBQ3BDLFFBQVEsT0FBQSxDQUFBLE1BQUEsRUFBQTtBQUNSLFFBQUEsT0FBQSxDQUFRLFNBQVMsS0FBTSxDQUFBLE1BQUE7QUFDdkIsUUFBQSxRQUFBLENBQVMsTUFBTSxLQUFLLENBQUE7QUFBQSxPQUN0QjtBQUFBLE1BQ0EsTUFBTSxRQUFVLEVBQUE7QUFDZCxRQUFRLE9BQUEsQ0FBQSxRQUFBLEdBQVcsSUFBSyxDQUFBLEdBQUEsRUFBUSxHQUFBLFNBQUE7QUFDaEMsUUFBUyxRQUFBLEVBQUE7QUFBQTtBQUNYLEtBQ0QsQ0FBQTtBQUVELElBQUEsTUFBQSxDQUFPLEtBQUssU0FBUyxDQUFBO0FBRXJCLElBQVUsU0FBQSxDQUFBLEVBQUEsQ0FBRyxPQUFTLEVBQUEsQ0FBQyxLQUFVLEtBQUE7QUFDL0IsTUFBQSxNQUFBLENBQU8sS0FBSyxDQUFBO0FBQUEsS0FDYixDQUFBO0FBRUQsSUFBVSxTQUFBLENBQUEsRUFBQSxDQUFHLE9BQU8sTUFBTTtBQUN4QixNQUFBLE9BQUEsQ0FBUSxPQUFPLENBQUE7QUFBQSxLQUNoQixDQUFBO0FBQUEsR0FDRixDQUFBO0FBQ0g7Ozs7In0=