hono
Version:
Web framework built on Web Standards
31 lines (30 loc) • 773 B
JavaScript
// 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
};