@opentelemetry/sdk-trace-web
Version:
80 lines • 2.83 kB
JavaScript
/*
* 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.
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.WebTracerProvider = void 0;
const sdk_trace_base_1 = require("@opentelemetry/sdk-trace-base");
const StackContextManager_1 = require("./StackContextManager");
const api_1 = require("@opentelemetry/api");
const core_1 = require("@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_1.StackContextManager();
defaultContextManager.enable();
api_1.context.setGlobalContextManager(defaultContextManager);
return;
}
contextManager.enable();
api_1.context.setGlobalContextManager(contextManager);
}
function setupPropagator(propagator) {
// null means 'do not register'
if (propagator === null) {
return;
}
// undefined means 'register default'
if (propagator === undefined) {
api_1.propagation.setGlobalPropagator(new core_1.CompositePropagator({
propagators: [
new core_1.W3CTraceContextPropagator(),
new core_1.W3CBaggagePropagator(),
],
}));
return;
}
api_1.propagation.setGlobalPropagator(propagator);
}
/**
* This class represents a web tracer with {@link StackContextManager}
*/
class WebTracerProvider extends sdk_trace_base_1.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 = {}) {
api_1.trace.setGlobalTracerProvider(this);
setupPropagator(config.propagator);
setupContextManager(config.contextManager);
}
}
exports.WebTracerProvider = WebTracerProvider;
//# sourceMappingURL=WebTracerProvider.js.map
;