acp-sdk
Version:
Agent Communication Protocol SDK
59 lines (56 loc) • 1.68 kB
JavaScript
;
var stream = require('eventsource-parser/stream');
var errors_cjs = require('./errors.cjs');
async function createEventSource({
url,
fetch = globalThis.fetch,
options
}) {
const response = await fetch(url, getFetchOptions(options));
return {
response,
async *consume() {
if (response.status === 204) {
throw new errors_cjs.SSEError("Server sent HTTP 204, not connecting", response);
}
if (!response.ok) {
throw new errors_cjs.SSEError(
`Non-200 status code (${response.status})`,
response
);
}
if (!response.headers.get("content-type")?.startsWith("text/event-stream")) {
throw new errors_cjs.SSEError(
'Invalid content type, expected "text/event-stream"',
response
);
}
if (!response.body) {
throw new errors_cjs.SSEError("Missing response body", response);
}
const stream$1 = response.body.pipeThrough(new TextDecoderStream()).pipeThrough(new stream.EventSourceParserStream({ onError: "terminate" }));
try {
for await (const message of stream$1) {
yield message;
}
} catch (e) {
const err = e;
if (err.name !== "AbortError") {
throw new errors_cjs.SSEError(err.message, response, { cause: err });
} else {
throw err;
}
}
}
};
}
function getFetchOptions(options) {
return {
...options,
headers: { Accept: "text/event-stream", ...options?.headers },
cache: "no-store"
};
}
exports.createEventSource = createEventSource;
//# sourceMappingURL=sse.cjs.map
//# sourceMappingURL=sse.cjs.map