{"version":3,"sources":["../../src/client/sse.ts"],"names":["SSEError","stream","EventSourceParserStream"],"mappings":";;;;;AAgBA,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":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { 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"]}