UNPKG

@multiplayer-app/otlp-core

Version:

Multiplayer otlp core

86 lines 3.64 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MultiplayerHttpTraceExporterBrowser = void 0; const otlp_exporter_base_1 = require("@opentelemetry/otlp-exporter-base"); const browser_http_1 = require("@opentelemetry/otlp-exporter-base/browser-http"); const MultiplayerJsonTraceSerializer_1 = require("./MultiplayerJsonTraceSerializer"); const constants_base_1 = require("./constants.base"); /** * Trace Exporters for Web with postMessage fallback */ class MultiplayerHttpTraceExporterBrowser extends otlp_exporter_base_1.OTLPExporterBase { constructor(config = {}) { const _config = Object.assign(Object.assign({}, config), { url: config.url || constants_base_1.MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_URL, headers: Object.assign(Object.assign({}, (config.headers || {})), config.apiKey ? { Authorization: config.apiKey } : {}) }); super((0, browser_http_1.createLegacyOtlpBrowserExportDelegate)(_config, MultiplayerJsonTraceSerializer_1.MultiplayerJsonTraceSerializer, 'v1/traces', { 'Content-Type': 'application/json' })); this.usePostMessage = false; this.config = config; this.postMessageType = config.postMessageType || 'MULTIPLAYER_SESSION_DEBUGGER_LIB'; this.postMessageTargetOrigin = config.postMessageTargetOrigin || '*'; } export(spans, resultCallback) { if (this.usePostMessage) { this.exportViaPostMessage(spans, resultCallback); return; } super.export(spans, (result) => { if (result.code === 0) { resultCallback(result); } else if (this.config.usePostMessageFallback) { this.usePostMessage = true; this.exportViaPostMessage(spans, resultCallback); } else { resultCallback(result); } }); } exportViaPostMessage(spans, resultCallback) { if (typeof window === 'undefined') { resultCallback({ code: 1 }); return; } try { window.postMessage({ action: 'traces', type: this.postMessageType, payload: spans.map(span => this._serializeSpan(span)), }, this.postMessageTargetOrigin); resultCallback({ code: 0 }); } catch (e) { resultCallback({ code: 1 }); } } _serializeSpan(span) { return { _spanContext: span.spanContext(), name: span.name, kind: span.kind, links: span.links, ended: span.ended, events: span.events, status: span.status, endTime: span.endTime, startTime: span.startTime, duration: span.duration, attributes: span.attributes, parentSpanId: span.parentSpanId, instrumentationLibrary: span.instrumentationLibrary, droppedAttributesCount: span.droppedAttributesCount, droppedEventsCount: span.droppedEventsCount, droppedLinksCount: span.droppedLinksCount, resource: { attributes: span.resource.attributes, asyncAttributesPending: span.resource.asyncAttributesPending, }, }; } getDefaultUrl(config) { return config.url || constants_base_1.MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_URL; } } exports.MultiplayerHttpTraceExporterBrowser = MultiplayerHttpTraceExporterBrowser; //# sourceMappingURL=MultiplayerHttpTraceExporterBrowser.js.map