dd-trace
Version:
Datadog APM tracing client for JavaScript
39 lines (31 loc) • 943 B
JavaScript
if (!global._ddtrace) {
const ddTraceSymbol = Symbol.for('dd-trace')
// Set up beforeExitHandlers before loading the tracer so that modules loaded
// during require('./src') can register handlers.
Object.defineProperty(globalThis, ddTraceSymbol, {
value: {
beforeExitHandlers: new Set(),
},
enumerable: false,
configurable: true,
writable: false,
})
process.once('beforeExit', function mainBeforeExit () {
if (globalThis[ddTraceSymbol]?.beforeExitHandlers) {
for (const handler of globalThis[ddTraceSymbol].beforeExitHandlers) {
handler()
}
}
})
const TracerProxy = require('./src')
Object.defineProperty(global, '_ddtrace', {
value: new TracerProxy(),
enumerable: false,
configurable: true,
writable: true,
})
global._ddtrace.default = global._ddtrace
global._ddtrace.tracer = global._ddtrace
}
module.exports = global._ddtrace