assistant-stream
Version:
Streaming utilities for AI assistants
41 lines (40 loc) • 1.18 kB
JavaScript
import { PipeableTransformStream } from "./PipeableTransformStream.js";
import { SSE_HEADERS, createSSEJsonDecoder, createSSEJsonEncoder } from "./SSEJson.js";
import sjson from "secure-json-parse";
// src/core/utils/stream/SSE.ts
var SSEEncoder = class SSEEncoder extends PipeableTransformStream {
static headers = new Headers(SSE_HEADERS);
headers = SSEEncoder.headers;
constructor() {
super(createSSEJsonEncoder());
}
};
var SSEDecoder = class extends PipeableTransformStream {
constructor(options = {}) {
const strict = options.strict ?? true;
const ignoredEvents = /* @__PURE__ */ new Set();
super(createSSEJsonDecoder({
parse(data, controller) {
let value;
try {
value = sjson.parse(data);
} catch {
console.warn(`Dropped invalid SSE message: ${data.slice(0, 200)}`);
return;
}
controller.enqueue(value);
},
...strict ? { strict: true } : {
strict: false,
onUnknownEvent(event) {
if (!ignoredEvents.has(event)) {
ignoredEvents.add(event);
console.error(`Ignored unknown SSE event type: ${event}`);
}
}
}
}));
}
};
export { SSEDecoder, SSEEncoder };
//# sourceMappingURL=SSE.js.map