@opentelemetry/node
Version:
OpenTelemetry Node SDK provides automatic telemetry (tracing, metrics, etc) for Node.js applications
48 lines • 1.93 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.NodeTracerProvider = void 0;
const context_async_hooks_1 = require("@opentelemetry/context-async-hooks");
const propagator_b3_1 = require("@opentelemetry/propagator-b3");
const tracing_1 = require("@opentelemetry/tracing");
const semver = require("semver");
const propagator_jaeger_1 = require("@opentelemetry/propagator-jaeger");
/**
* 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
*/
class NodeTracerProvider extends tracing_1.BasicTracerProvider {
constructor(config = {}) {
super(config);
}
register(config = {}) {
if (config.contextManager === undefined) {
const ContextManager = semver.gte(process.version, '14.8.0')
? context_async_hooks_1.AsyncLocalStorageContextManager
: context_async_hooks_1.AsyncHooksContextManager;
config.contextManager = new ContextManager();
config.contextManager.enable();
}
super.register(config);
}
_getPropagator(name) {
var _a;
return (super._getPropagator(name) ||
((_a = NodeTracerProvider._registeredPropagators.get(name)) === null || _a === void 0 ? void 0 : _a()));
}
}
exports.NodeTracerProvider = NodeTracerProvider;
NodeTracerProvider._registeredPropagators = new Map([
[
'b3',
() => new propagator_b3_1.B3Propagator({ injectEncoding: propagator_b3_1.B3InjectEncoding.SINGLE_HEADER }),
],
[
'b3multi',
() => new propagator_b3_1.B3Propagator({ injectEncoding: propagator_b3_1.B3InjectEncoding.MULTI_HEADER }),
],
['jaeger', () => new propagator_jaeger_1.JaegerPropagator()],
]);
//# sourceMappingURL=NodeTracerProvider.js.map
;