vite-plugin-react-server
Version:
Vite plugin for React Server Components (RSC)
39 lines (37 loc) • 4.03 kB
JavaScript
/**
* vite-plugin-react-server
* Copyright (c) Nico Brinkkemper
* MIT License
*/
function formatMetrics(metrics) {
const {
route,
fileSize,
chunks,
chunkRate,
processingTime,
memoryUsage,
streamMetrics
} = metrics;
const formatMemory = (bytes) => `${(bytes / 1024 / 1024).toFixed(2)}MB`;
return `
Route: ${route}
Size: ${((fileSize ?? 0) / 1024).toFixed(2)}KB
Chunks: ${chunks} (${chunkRate.toFixed(2)} chunks/s)
Processing Time: ${processingTime.toFixed(2)}ms
Memory:
RSS: ${formatMemory(memoryUsage.rss)}
Heap Total: ${formatMemory(memoryUsage.heapTotal)}
Heap Used: ${formatMemory(memoryUsage.heapUsed)}
External: ${formatMemory(memoryUsage.external)}
Stream:
Duration: ${streamMetrics.duration.toFixed(2)}ms
Backpressure: ${streamMetrics.backpressureCount}
Errors: ${streamMetrics.errorCount}
`.trim();
}
function logMetrics(metrics, logger = console) {
logger.info(formatMetrics(metrics));
}
export { formatMetrics, logMetrics };
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0TWV0cmljcy5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGx1Z2luL21ldHJpY3MvZm9ybWF0TWV0cmljcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFJlbmRlck1ldHJpY3MgfSBmcm9tIFwiLi90eXBlcy5qc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0TWV0cmljcyhtZXRyaWNzOiBSZW5kZXJNZXRyaWNzKTogc3RyaW5nIHtcbiAgY29uc3Qge1xuICAgIHJvdXRlLFxuICAgIGZpbGVTaXplLFxuICAgIGNodW5rcyxcbiAgICBjaHVua1JhdGUsXG4gICAgcHJvY2Vzc2luZ1RpbWUsXG4gICAgbWVtb3J5VXNhZ2UsXG4gICAgc3RyZWFtTWV0cmljcyxcbiAgfSA9IG1ldHJpY3M7XG5cbiAgLy8gRm9ybWF0IG1lbW9yeSB1c2FnZSBpbiBNQlxuICBjb25zdCBmb3JtYXRNZW1vcnkgPSAoYnl0ZXM6IG51bWJlcikgPT5cbiAgICBgJHsoYnl0ZXMgLyAxMDI0IC8gMTAyNCkudG9GaXhlZCgyKX1NQmA7XG5cbiAgcmV0dXJuIGBcblJvdXRlOiAke3JvdXRlfVxuU2l6ZTogJHsoKGZpbGVTaXplID8/IDApIC8gMTAyNCkudG9GaXhlZCgyKX1LQlxuQ2h1bmtzOiAke2NodW5rc30gKCR7Y2h1bmtSYXRlLnRvRml4ZWQoMil9IGNodW5rcy9zKVxuUHJvY2Vzc2luZyBUaW1lOiAke3Byb2Nlc3NpbmdUaW1lLnRvRml4ZWQoMil9bXNcbk1lbW9yeTpcbiAgUlNTOiAke2Zvcm1hdE1lbW9yeShtZW1vcnlVc2FnZS5yc3MpfVxuICBIZWFwIFRvdGFsOiAke2Zvcm1hdE1lbW9yeShtZW1vcnlVc2FnZS5oZWFwVG90YWwpfVxuICBIZWFwIFVzZWQ6ICR7Zm9ybWF0TWVtb3J5KG1lbW9yeVVzYWdlLmhlYXBVc2VkKX1cbiAgRXh0ZXJuYWw6ICR7Zm9ybWF0TWVtb3J5KG1lbW9yeVVzYWdlLmV4dGVybmFsKX1cblN0cmVhbTpcbiAgICAgIER1cmF0aW9uOiAke3N0cmVhbU1ldHJpY3MuZHVyYXRpb24udG9GaXhlZCgyKX1tc1xuICAgIEJhY2twcmVzc3VyZTogJHtzdHJlYW1NZXRyaWNzLmJhY2twcmVzc3VyZUNvdW50fVxuICAgIEVycm9yczogJHtzdHJlYW1NZXRyaWNzLmVycm9yQ291bnR9XG5gLnRyaW0oKTtcbn1cblxuXG5leHBvcnQgZnVuY3Rpb24gbG9nTWV0cmljcyhtZXRyaWNzOiBSZW5kZXJNZXRyaWNzLCBsb2dnZXI6IHtpbmZvOiAobWVzc2FnZTogc3RyaW5nKSA9PiB2b2lkfSA9IGNvbnNvbGUpIHtcbiAgbG9nZ2VyLmluZm8oZm9ybWF0TWV0cmljcyhtZXRyaWNzKSk7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFFTyxTQUFTLGNBQWMsT0FBZ0MsRUFBQTtBQUM1RCxFQUFNLE1BQUE7QUFBQSxJQUNKLEtBQUE7QUFBQSxJQUNBLFFBQUE7QUFBQSxJQUNBLE1BQUE7QUFBQSxJQUNBLFNBQUE7QUFBQSxJQUNBLGNBQUE7QUFBQSxJQUNBLFdBQUE7QUFBQSxJQUNBO0FBQUEsR0FDRSxHQUFBLE9BQUE7QUFHSixFQUFNLE1BQUEsWUFBQSxHQUFlLENBQUMsS0FDcEIsS0FBQSxDQUFBLEVBQUEsQ0FBSSxRQUFRLElBQU8sR0FBQSxJQUFBLEVBQU0sT0FBUSxDQUFBLENBQUMsQ0FBQyxDQUFBLEVBQUEsQ0FBQTtBQUVyQyxFQUFPLE9BQUE7QUFBQSxPQUFBLEVBQ0EsS0FBSztBQUFBLE1BQUEsRUFBQSxDQUFBLENBQ0osUUFBWSxJQUFBLENBQUEsSUFBSyxJQUFNLEVBQUEsT0FBQSxDQUFRLENBQUMsQ0FBQyxDQUFBO0FBQUEsUUFBQSxFQUNqQyxNQUFNLENBQUEsRUFBQSxFQUFLLFNBQVUsQ0FBQSxPQUFBLENBQVEsQ0FBQyxDQUFDLENBQUE7QUFBQSxpQkFDdEIsRUFBQSxjQUFBLENBQWUsT0FBUSxDQUFBLENBQUMsQ0FBQyxDQUFBO0FBQUE7QUFBQSxPQUVuQyxFQUFBLFlBQUEsQ0FBYSxXQUFZLENBQUEsR0FBRyxDQUFDO0FBQUEsY0FDdEIsRUFBQSxZQUFBLENBQWEsV0FBWSxDQUFBLFNBQVMsQ0FBQztBQUFBLGFBQ3BDLEVBQUEsWUFBQSxDQUFhLFdBQVksQ0FBQSxRQUFRLENBQUM7QUFBQSxZQUNuQyxFQUFBLFlBQUEsQ0FBYSxXQUFZLENBQUEsUUFBUSxDQUFDO0FBQUE7QUFBQSxnQkFBQSxFQUU5QixhQUFjLENBQUEsUUFBQSxDQUFTLE9BQVEsQ0FBQSxDQUFDLENBQUMsQ0FBQTtBQUFBLGtCQUFBLEVBQy9CLGNBQWMsaUJBQWlCO0FBQUEsWUFBQSxFQUNyQyxjQUFjLFVBQVU7QUFBQSxDQUFBLENBQ3BDLElBQUssRUFBQTtBQUNQO0FBR08sU0FBUyxVQUFBLENBQVcsT0FBd0IsRUFBQSxNQUFBLEdBQTRDLE9BQVMsRUFBQTtBQUN0RyxFQUFPLE1BQUEsQ0FBQSxJQUFBLENBQUssYUFBYyxDQUFBLE9BQU8sQ0FBQyxDQUFBO0FBQ3BDOzs7OyJ9