UNPKG

hono

Version:

Web framework built on Web Standards

31 lines (30 loc) 773 B
// src/helper/streaming/stream.ts import { StreamingApi } from "../../utils/stream.js"; var contextStash = /* @__PURE__ */ new WeakMap(); var stream = (c, cb, onError) => { const { readable, writable } = new TransformStream(); const stream2 = new StreamingApi(writable, readable); c.req.raw.signal.addEventListener("abort", () => { if (!stream2.closed) { stream2.abort(); } }); contextStash.set(stream2.responseReadable, c); (async () => { try { await cb(stream2); } catch (e) { if (e instanceof Error && onError) { await onError(e, stream2); } else { console.error(e); } } finally { stream2.close(); } })(); return c.newResponse(stream2.responseReadable); }; export { stream };