Implemented SSE console logs
This commit is contained in:
parent
ce0ee186cc
commit
f60a2b7a76
|
|
@ -1,9 +1,66 @@
|
|||
import react from "@vitejs/plugin-react";
|
||||
import { defineConfig } from "vite";
|
||||
import { PassThrough } from "stream";
|
||||
import { defineConfig, type ViteDevServer } from "vite";
|
||||
|
||||
// A simple connection manager for SSE
|
||||
const clients = new Set<PassThrough>();
|
||||
|
||||
type ConsoleLevel = "log" | "warn" | "error" | "info";
|
||||
|
||||
function sendLog(message: { level: ConsoleLevel; message: string }) {
|
||||
clients.forEach((client) =>
|
||||
client.write(`data: ${JSON.stringify(message)}\n\n`)
|
||||
);
|
||||
}
|
||||
|
||||
// Intercept console messages
|
||||
const originalConsole = {
|
||||
log: console.log,
|
||||
warn: console.warn,
|
||||
error: console.error,
|
||||
info: console.info,
|
||||
};
|
||||
|
||||
Object.keys(originalConsole).forEach((level) => {
|
||||
console[level as ConsoleLevel] = (
|
||||
...args: Parameters<Console[ConsoleLevel]>
|
||||
) => {
|
||||
sendLog({ level: level as ConsoleLevel, message: args.join(" ") });
|
||||
originalConsole[level as ConsoleLevel](...args);
|
||||
};
|
||||
});
|
||||
|
||||
// https://vite.dev/config/
|
||||
export default defineConfig({
|
||||
plugins: [react()],
|
||||
plugins: [
|
||||
react(),
|
||||
{
|
||||
name: "sse-plugin",
|
||||
apply: "serve" as const,
|
||||
configureServer(server: ViteDevServer) {
|
||||
server.middlewares.use("/sse-logs", (req, res) => {
|
||||
res.writeHead(200, {
|
||||
"Content-Type": "text/event-stream",
|
||||
"Cache-Control": "no-cache",
|
||||
Connection: "keep-alive",
|
||||
});
|
||||
|
||||
const stream = new PassThrough();
|
||||
clients.add(stream);
|
||||
sendLog({ level: "info", message: "Client connected to SSE logs" });
|
||||
|
||||
stream.pipe(res);
|
||||
|
||||
req.on("close", () => {
|
||||
clients.delete(stream);
|
||||
sendLog({
|
||||
level: "info",
|
||||
message: "Client disconnected from SSE logs",
|
||||
});
|
||||
});
|
||||
});
|
||||
},
|
||||
},
|
||||
],
|
||||
server: {
|
||||
allowedHosts: [".develop.taylordb.ai", "localhost", "127.0.0.1"],
|
||||
host: "0.0.0.0", // Listen on all network interfaces
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user