Implemented SSE console logs
This commit is contained in:
parent
ce0ee186cc
commit
f60a2b7a76
|
|
@ -1,9 +1,66 @@
|
||||||
import react from "@vitejs/plugin-react";
|
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({
|
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: {
|
server: {
|
||||||
allowedHosts: [".develop.taylordb.ai", "localhost", "127.0.0.1"],
|
allowedHosts: [".develop.taylordb.ai", "localhost", "127.0.0.1"],
|
||||||
host: "0.0.0.0", // Listen on all network interfaces
|
host: "0.0.0.0", // Listen on all network interfaces
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user