ai-utils.js
Version:
Build AI applications, chatbots, and agents with JavaScript and TypeScript.
27 lines (26 loc) • 757 B
JavaScript
import { createParser } from "eventsource-parser";
async function* convertReadableStreamToAsyncIterable(reader) {
while (true) {
const result = await reader.read();
if (result.done) {
break;
}
yield result.value;
}
}
/**
* @internal
*/
export async function parseEventSourceReadableStream({ stream, callback, }) {
try {
const parser = createParser(callback);
const decoder = new TextDecoder();
const iterable = convertReadableStreamToAsyncIterable(stream.getReader());
for await (const value of iterable) {
parser.feed(decoder.decode(value));
}
}
catch (error) {
console.error(error); // TODO introduce error handler param
}
}