/
opt
/
canhelp
/
node_modules
/
hono
/
dist
/
helper
/
streaming
/
/opt/canhelp/node_modules/hono/dist/helper/streaming
mkdir
upload
Name
Size
Mode
Actions
index.js
233
0644
edit
dl
rm
sse.js
2058
0644
edit
dl
rm
stream.js
893
0644
edit
dl
rm
text.js
349
0644
edit
dl
rm
utils.js
367
0644
edit
dl
rm
Edit:
/opt/canhelp/node_modules/hono/dist/helper/streaming/sse.js
(2058B)
// src/helper/streaming/sse.ts import { HtmlEscapedCallbackPhase, resolveCallback } from "../../utils/html.js"; import { StreamingApi } from "../../utils/stream.js"; import { isOldBunVersion } from "./utils.js"; var SSEStreamingApi = class extends StreamingApi { constructor(writable, readable) { super(writable, readable); } async writeSSE(message) { const data = await resolveCallback(message.data, HtmlEscapedCallbackPhase.Stringify, false, {}); const dataLines = data.split(/\r\n|\r|\n/).map((line) => { return `data: ${line}`; }).join("\n"); for (const key of ["event", "id", "retry"]) { if (message[key] && /[\r\n]/.test(message[key])) { throw new Error(`${key} must not contain "\\r" or "\\n"`); } } const sseData = [ message.event && `event: ${message.event}`, dataLines, message.id && `id: ${message.id}`, message.retry && `retry: ${message.retry}` ].filter(Boolean).join("\n") + "\n\n"; await this.write(sseData); } }; var run = async (stream, cb, onError) => { try { await cb(stream); } catch (e) { if (e instanceof Error && onError) { await onError(e, stream); await stream.writeSSE({ event: "error", data: e.message }); } else { console.error(e); } } finally { stream.close(); } }; var contextStash = /* @__PURE__ */ new WeakMap(); var streamSSE = (c, cb, onError) => { const { readable, writable } = new TransformStream(); const stream = new SSEStreamingApi(writable, readable); if (isOldBunVersion()) { c.req.raw.signal.addEventListener("abort", () => { if (!stream.closed) { stream.abort(); } }); } contextStash.set(stream.responseReadable, c); c.header("Transfer-Encoding", "chunked"); c.header("Content-Type", "text/event-stream"); c.header("Cache-Control", "no-cache"); c.header("Connection", "keep-alive"); run(stream, cb, onError); return c.newResponse(stream.responseReadable); }; export { SSEStreamingApi, streamSSE };
Save
cmd:
run