UNPKG

@opentelemetry/sdk-trace-web

Version:
76 lines 2.67 kB
/* * Copyright The OpenTelemetry Authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import { BasicTracerProvider, } from '@opentelemetry/sdk-trace-base'; import { StackContextManager } from './StackContextManager'; import { trace, context, propagation, } from '@opentelemetry/api'; import { CompositePropagator, W3CBaggagePropagator, W3CTraceContextPropagator, } from '@opentelemetry/core'; function setupContextManager(contextManager) { // null means 'do not register' if (contextManager === null) { return; } // undefined means 'register default' if (contextManager === undefined) { const defaultContextManager = new StackContextManager(); defaultContextManager.enable(); context.setGlobalContextManager(defaultContextManager); return; } contextManager.enable(); context.setGlobalContextManager(contextManager); } function setupPropagator(propagator) { // null means 'do not register' if (propagator === null) { return; } // undefined means 'register default' if (propagator === undefined) { propagation.setGlobalPropagator(new CompositePropagator({ propagators: [ new W3CTraceContextPropagator(), new W3CBaggagePropagator(), ], })); return; } propagation.setGlobalPropagator(propagator); } /** * This class represents a web tracer with {@link StackContextManager} */ export class WebTracerProvider extends BasicTracerProvider { /** * Constructs a new Tracer instance. * @param config Web Tracer config */ constructor(config = {}) { super(config); } /** * Register this TracerProvider for use with the OpenTelemetry API. * Undefined values may be replaced with defaults, and * null values will be skipped. * * @param config Configuration object for SDK registration */ register(config = {}) { trace.setGlobalTracerProvider(this); setupPropagator(config.propagator); setupContextManager(config.contextManager); } } //# sourceMappingURL=WebTracerProvider.js.map