UNPKG

@sentry/core

Version:
82 lines (70 loc) 3.27 kB
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); const currentScopes = require('../../currentScopes.js'); const debugBuild = require('../../debug-build.js'); const debugLogger = require('../../utils/debug-logger.js'); const is = require('../../utils/is.js'); const traceData = require('../../utils/traceData.js'); const tracePropagationTargets = require('../../utils/tracePropagationTargets.js'); const constants = require('./constants.js'); const getRequestUrl = require('./get-request-url.js'); const baggage = require('../../utils/baggage.js'); /** * Inject Sentry trace-propagation headers into an outgoing request if the * target URL matches the configured `tracePropagationTargets`. * * Note: this must be called *before* calling `request.end()` (or firing the * `http.client.request.start` diagnostics channel), because at that point, * the headers have already been sent, and cannot be modified. */ function injectTracePropagationHeaders( request, propagationDecisionMap, ) { const url = getRequestUrl.getRequestUrlFromClientRequest(request); const clientOptions = currentScopes.getClient()?.getOptions(); const { tracePropagationTargets: tracePropagationTargets$1, propagateTraceparent } = clientOptions ?? {}; if (!tracePropagationTargets.shouldPropagateTraceForUrl(url, tracePropagationTargets$1, propagationDecisionMap)) { return; } const hasExistingSentryTraceHeader = !!request.getHeader('sentry-trace'); if (hasExistingSentryTraceHeader) { // add nothing if there's already a sentry-trace header, // or else baggage can be sent twice. return; } const traceData$1 = traceData.getTraceData({ propagateTraceparent }); if (!traceData$1) return; const { 'sentry-trace': sentryTrace, baggage: baggage$1, traceparent } = traceData$1; if (sentryTrace) { try { request.setHeader('sentry-trace', sentryTrace); debugBuild.DEBUG_BUILD && debugLogger.debug.log(constants.LOG_PREFIX, 'Added sentry-trace header'); } catch (e) { debugBuild.DEBUG_BUILD && debugLogger.debug.error(constants.LOG_PREFIX, 'Failed to set sentry-trace header:', is.isError(e) ? e.message : 'Unknown error'); } } if (traceparent && !request.getHeader('traceparent')) { try { request.setHeader('traceparent', traceparent); debugBuild.DEBUG_BUILD && debugLogger.debug.log(constants.LOG_PREFIX, 'Added traceparent header'); } catch (e) { debugBuild.DEBUG_BUILD && debugLogger.debug.error(constants.LOG_PREFIX, 'Failed to set traceparent header:', is.isError(e) ? e.message : 'Unknown error'); } } if (baggage$1) { const merged = baggage.mergeBaggageHeaders(request.getHeader('baggage'), baggage$1); if (merged) { try { request.setHeader('baggage', merged); debugBuild.DEBUG_BUILD && debugLogger.debug.log(constants.LOG_PREFIX, 'Added baggage header'); } catch (e) { debugBuild.DEBUG_BUILD && debugLogger.debug.error(constants.LOG_PREFIX, 'Failed to set baggage header:', is.isError(e) ? e.message : 'Unknown error'); } } } } exports.injectTracePropagationHeaders = injectTracePropagationHeaders; //# sourceMappingURL=inject-trace-propagation-headers.js.map