{"version":3,"sources":["../../src/telemetry/composite-exporter.ts"],"names":["ExportResultCode"],"mappings":";;;;;;;;;;;;AAIO,IAAM,oBAAN,MAAgD;AAAA,EAC7C,SAAA;AAAA,EAER,YAAY,SAAA,EAA2B;AACrC,IAAA,IAAA,CAAK,SAAA,GAAY,SAAA;AAAA,EACnB;AAAA,EAEA,MAAA,CAAO,OAAuB,cAAA,EAAsD;AAElF,IAAA,MAAM,oBAAoB,IAAI,GAAA;AAAA,MAC5B,KAAA,CACG,OAAO,CAAA,IAAA,KAAQ;AACd,QAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,UAAA,IAAc,EAAC;AAClC,QAAA,MAAM,UAAA,GAAa,MAAM,aAAa,CAAA;AACtC,QAAA,OAAO,UAAA,KAAe,gBAAA;AAAA,MACxB,CAAC,CAAA,CACA,GAAA,CAAI,UAAQ,IAAA,CAAK,WAAA,GAAc,OAAO;AAAA,KAC3C;AAGA,IAAA,MAAM,aAAA,GAAgB,KAAA,CAAM,MAAA,CAAO,CAAA,IAAA,KAAQ,CAAC,iBAAA,CAAkB,GAAA,CAAI,IAAA,CAAK,WAAA,EAAY,CAAE,OAAO,CAAC,CAAA;AAG7F,IAAA,IAAI,aAAA,CAAc,WAAW,CAAA,EAAG;AAC9B,MAAA,cAAA,CAAe,EAAE,IAAA,EAAMA,qBAAA,CAAiB,OAAA,EAAS,CAAA;AACjD,MAAA;AAAA,IACF;AAEA,IAAA,KAAK,OAAA,CAAQ,GAAA;AAAA,MACX,KAAK,SAAA,CAAU,GAAA;AAAA,QACb,CAAA,QAAA,KACE,IAAI,OAAA,CAAsB,CAAA,OAAA,KAAW;AACnC,UAAA,IAAI,SAAS,MAAA,EAAQ;AACnB,YAAA,QAAA,CAAS,MAAA,CAAO,eAAe,OAAO,CAAA;AAAA,UACxC,CAAA,MAAO;AACL,YAAA,OAAA,CAAQ,EAAE,IAAA,EAAMA,qBAAA,CAAiB,MAAA,EAAQ,CAAA;AAAA,UAC3C;AAAA,QACF,CAAC;AAAA;AACL,KACF,CACG,KAAK,CAAA,OAAA,KAAW;AACf,MAAA,MAAM,WAAW,OAAA,CAAQ,IAAA,CAAK,OAAK,CAAA,CAAE,IAAA,KAASA,sBAAiB,MAAM,CAAA;AACrE,MAAA,cAAA,CAAe;AAAA,QACb,IAAA,EAAM,QAAA,GAAWA,qBAAA,CAAiB,MAAA,GAASA,qBAAA,CAAiB;AAAA,OAC7D,CAAA;AAAA,IACH,CAAC,CAAA,CACA,KAAA,CAAM,CAAA,KAAA,KAAS;AACd,MAAA,OAAA,CAAQ,KAAA,CAAM,qCAAqC,KAAK,CAAA;AACxD,MAAA,cAAA,CAAe,EAAE,IAAA,EAAMA,qBAAA,CAAiB,MAAA,EAAQ,OAAO,CAAA;AAAA,IACzD,CAAC,CAAA;AAAA,EACL;AAAA,EAEA,QAAA,GAA0B;AACxB,IAAA,OAAO,QAAQ,GAAA,CAAI,IAAA,CAAK,SAAA,CAAU,GAAA,CAAI,OAAK,CAAA,CAAE,QAAA,IAAW,IAAK,OAAA,CAAQ,SAAS,CAAC,CAAA,CAAE,IAAA,CAAK,MAAM,MAAS,CAAA;AAAA,EACvG;AAAA,EAEA,UAAA,GAA4B;AAC1B,IAAA,OAAO,QAAQ,GAAA,CAAI,IAAA,CAAK,SAAA,CAAU,GAAA,CAAI,OAAK,CAAA,CAAE,UAAA,IAAa,IAAK,OAAA,CAAQ,SAAS,CAAC,CAAA,CAAE,IAAA,CAAK,MAAM,MAAS,CAAA;AAAA,EACzG;AACF","file":"otel-vendor.cjs","sourcesContent":["import { ExportResultCode } from '@opentelemetry/core';\nimport type { ExportResult } from '@opentelemetry/core';\nimport type { ReadableSpan, SpanExporter } from '@opentelemetry/sdk-trace-base';\n\nexport class CompositeExporter implements SpanExporter {\n  private exporters: SpanExporter[];\n\n  constructor(exporters: SpanExporter[]) {\n    this.exporters = exporters;\n  }\n\n  export(spans: ReadableSpan[], resultCallback: (result: ExportResult) => void): void {\n    // First collect all traceIds from telemetry endpoint spans\n    const telemetryTraceIds = new Set(\n      spans\n        .filter(span => {\n          const attrs = span.attributes || {};\n          const httpTarget = attrs['http.target'] as string;\n          return httpTarget === '/api/telemetry';\n        })\n        .map(span => span.spanContext().traceId),\n    );\n\n    // Then filter out any spans that have those traceIds\n    const filteredSpans = spans.filter(span => !telemetryTraceIds.has(span.spanContext().traceId));\n\n    // Return early if no spans to export\n    if (filteredSpans.length === 0) {\n      resultCallback({ code: ExportResultCode.SUCCESS });\n      return;\n    }\n\n    void Promise.all(\n      this.exporters.map(\n        exporter =>\n          new Promise<ExportResult>(resolve => {\n            if (exporter.export) {\n              exporter.export(filteredSpans, resolve);\n            } else {\n              resolve({ code: ExportResultCode.FAILED });\n            }\n          }),\n      ),\n    )\n      .then(results => {\n        const hasError = results.some(r => r.code === ExportResultCode.FAILED);\n        resultCallback({\n          code: hasError ? ExportResultCode.FAILED : ExportResultCode.SUCCESS,\n        });\n      })\n      .catch(error => {\n        console.error('[CompositeExporter] Export error:', error);\n        resultCallback({ code: ExportResultCode.FAILED, error });\n      });\n  }\n\n  shutdown(): Promise<void> {\n    return Promise.all(this.exporters.map(e => e.shutdown?.() ?? Promise.resolve())).then(() => undefined);\n  }\n\n  forceFlush(): Promise<void> {\n    return Promise.all(this.exporters.map(e => e.forceFlush?.() ?? Promise.resolve())).then(() => undefined);\n  }\n}\n"]}