UNPKG

acp-sdk

Version:

Agent Communication Protocol SDK

1 lines 3.48 kB
{"version":3,"sources":["../../src/client/sse.ts"],"names":["SSEError","stream","EventSourceParserStream"],"mappings":";;;;;AAWA,eAAsB,iBAAkB,CAAA;AAAA,EACtC,GAAA;AAAA,EACA,QAAQ,UAAW,CAAA,KAAA;AAAA,EACnB;AACF,CAAsB,EAAA;AACpB,EAAA,MAAM,WAAW,MAAM,KAAA,CAAM,GAAK,EAAA,eAAA,CAAgB,OAAO,CAAC,CAAA;AAC1D,EAAO,OAAA;AAAA,IACL,QAAA;AAAA,IACA,OAAO,OAAU,GAAA;AACf,MAAI,IAAA,QAAA,CAAS,WAAW,GAAK,EAAA;AAC3B,QAAM,MAAA,IAAIA,mBAAS,CAAA,sCAAA,EAAwC,QAAQ,CAAA;AAAA;AAGrE,MAAI,IAAA,CAAC,SAAS,EAAI,EAAA;AAChB,QAAA,MAAM,IAAIA,mBAAA;AAAA,UACR,CAAA,qBAAA,EAAwB,SAAS,MAAM,CAAA,CAAA,CAAA;AAAA,UACvC;AAAA,SACF;AAAA;AAGF,MACE,IAAA,CAAC,SAAS,OAAQ,CAAA,GAAA,CAAI,cAAc,CAAG,EAAA,UAAA,CAAW,mBAAmB,CACrE,EAAA;AACA,QAAA,MAAM,IAAIA,mBAAA;AAAA,UACR,oDAAA;AAAA,UACA;AAAA,SACF;AAAA;AAGF,MAAI,IAAA,CAAC,SAAS,IAAM,EAAA;AAClB,QAAM,MAAA,IAAIA,mBAAS,CAAA,uBAAA,EAAyB,QAAQ,CAAA;AAAA;AAGtD,MAAA,MAAMC,QAAS,GAAA,QAAA,CAAS,IACrB,CAAA,WAAA,CAAY,IAAI,iBAAkB,EAAC,CACnC,CAAA,WAAA,CAAY,IAAIC,8BAAwB,CAAA,EAAE,OAAS,EAAA,WAAA,EAAa,CAAC,CAAA;AAEpE,MAAI,IAAA;AACF,QAAA,WAAA,MAAiB,WAAWD,QAAQ,EAAA;AAClC,UAAM,MAAA,OAAA;AAAA;AACR,eACO,CAAG,EAAA;AACV,QAAA,MAAM,GAAM,GAAA,CAAA;AACZ,QAAI,IAAA,GAAA,CAAI,SAAS,YAAc,EAAA;AAC7B,UAAM,MAAA,IAAID,oBAAS,GAAI,CAAA,OAAA,EAAS,UAAU,EAAE,KAAA,EAAO,KAAK,CAAA;AAAA,SACnD,MAAA;AACL,UAAM,MAAA,GAAA;AAAA;AACR;AACF;AACF,GACF;AACF;AAMA,SAAS,gBAAgB,OAAoC,EAAA;AAC3D,EAAO,OAAA;AAAA,IACL,GAAG,OAAA;AAAA,IACH,SAAS,EAAE,MAAA,EAAQ,mBAAqB,EAAA,GAAG,SAAS,OAAQ,EAAA;AAAA,IAC5D,KAAO,EAAA;AAAA,GACT;AACF","file":"sse.cjs","sourcesContent":["import { EventSourceParserStream } from \"eventsource-parser/stream\";\nimport { SSEError } from \"./errors.js\";\n\ntype FetchLike = typeof fetch;\n\ninterface EventSourceParams {\n url: URL | string;\n fetch?: FetchLike;\n options?: RequestInit;\n}\n\nexport async function createEventSource({\n url,\n fetch = globalThis.fetch,\n options,\n}: EventSourceParams) {\n const response = await fetch(url, getFetchOptions(options));\n return {\n response,\n async *consume() {\n if (response.status === 204) {\n throw new SSEError(\"Server sent HTTP 204, not connecting\", response);\n }\n\n if (!response.ok) {\n throw new SSEError(\n `Non-200 status code (${response.status})`,\n response\n );\n }\n\n if (\n !response.headers.get(\"content-type\")?.startsWith(\"text/event-stream\")\n ) {\n throw new SSEError(\n 'Invalid content type, expected \"text/event-stream\"',\n response\n );\n }\n\n if (!response.body) {\n throw new SSEError(\"Missing response body\", response);\n }\n\n const stream = response.body\n .pipeThrough(new TextDecoderStream())\n .pipeThrough(new EventSourceParserStream({ onError: \"terminate\" }));\n\n try {\n for await (const message of stream) {\n yield message;\n }\n } catch (e) {\n const err = e as Error;\n if (err.name !== 'AbortError') {\n throw new SSEError(err.message, response, { cause: err });\n } else {\n throw err;\n }\n }\n },\n };\n}\n\nexport type EventSource = Awaited<ReturnType<typeof createEventSource>>;\n\nexport type { EventSourceMessage } from 'eventsource-parser';\n\nfunction getFetchOptions(options?: RequestInit): RequestInit {\n return {\n ...options,\n headers: { Accept: \"text/event-stream\", ...options?.headers },\n cache: \"no-store\",\n };\n}\n"]}