import { addStream, deleteStream } from "~/server/streams"; export default defineEventHandler(async (event) => { const encoder = new TextEncoder(); const source = event.headers.get("x-forwarded-for"); console.log(`starting event stream for ${source}`) const stream = new TransformStream({ transform(chunk, controller) { controller.enqueue(encoder.encode(chunk)); }, flush(controller) { console.log(`finished event stream for ${source}`); deleteStream(stream.writable); }, // @ts-expect-error experimental API cancel(reason) { console.log(`cancelled event stream for ${source}`); deleteStream(stream.writable); } }) addStream(stream.writable); return new Response( stream.readable, { headers: { "Access-Control-Allow-Origin": "*", "Content-Type": "text/event-stream", } } ); });