UNPKG

@multiplayer-app/otlp-core

Version:

Multiplayer otlp core

55 lines (50 loc) 1.49 kB
import { ReadableSpan, SpanExporter, } from '@opentelemetry/sdk-trace-base' import { OTLPExporterNodeConfigBase, OTLPExporterBase, } from '@opentelemetry/otlp-exporter-base' import { convertLegacyOtlpGrpcOptions, createOtlpGrpcExportDelegate, OTLPGRPCExporterConfigNode, } from '@opentelemetry/otlp-grpc-exporter-base' import { MultiplayerJsonTraceSerializer } from './MultiplayerJsonTraceSerializer' import { MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_URL } from './constants.base' interface MultiplayerGrpcExporterNodeConfig extends OTLPGRPCExporterConfigNode { apiKey?: string } /** * Collector Trace Exporter for Web */ export class MultiplayerGrpcTraceExporterNode extends OTLPExporterBase<ReadableSpan[]> implements SpanExporter { constructor(config: MultiplayerGrpcExporterNodeConfig = {}) { const _config = { ...config, url: config.url || MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_URL, headers: { ...(config.headers || {}), ...config.apiKey ? { Authorization: config.apiKey } : {}, }, } super( createOtlpGrpcExportDelegate( convertLegacyOtlpGrpcOptions(_config, 'TRACES'), MultiplayerJsonTraceSerializer, 'TraceExportService', '/opentelemetry.proto.collector.trace.v1.TraceService/Export', ), ) } getDefaultUrl(config: OTLPExporterNodeConfigBase): string { return config.url || MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_URL } }