c9f72c4e-8bad-4367-99c3-565.../vite.config.ts
2025-12-04 22:47:06 +05:00

69 lines
1.8 KiB
TypeScript

import react from "@vitejs/plugin-react";
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);
};
});
export default defineConfig({
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
},
});