Erster Docker-Stand
This commit is contained in:
62
_node_modules/hono/dist/helper/streaming/sse.js
generated
vendored
Normal file
62
_node_modules/hono/dist/helper/streaming/sse.js
generated
vendored
Normal file
@@ -0,0 +1,62 @@
|
||||
// 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("\n").map((line) => {
|
||||
return `data: ${line}`;
|
||||
}).join("\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
|
||||
};
|
||||
Reference in New Issue
Block a user