@mastra/core
Version:
The core foundation of the Mastra framework, providing essential components and interfaces for building AI-powered applications.
1 lines • 4.16 kB
Source Map (JSON)
{"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"]}