Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 20s
Build & Deploy / 🧪 QA (push) Failing after 34s
Build & Deploy / 🏗️ Build (push) Has started running
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Smoke Test (push) Has been cancelled
Build & Deploy / ⚡ Lighthouse (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
1 line
8.3 KiB
Plaintext
1 line
8.3 KiB
Plaintext
{"version":3,"file":"outgoingHttpRequest.js","sources":["../../../src/utils/outgoingHttpRequest.ts"],"sourcesContent":["import type { LRUMap, SanitizedRequestData } from '@sentry/core';\nimport {\n addBreadcrumb,\n debug,\n getBreadcrumbLogLevelFromHttpStatusCode,\n getClient,\n getSanitizedUrlString,\n getTraceData,\n isError,\n parseUrl,\n shouldPropagateTraceForUrl,\n} from '@sentry/core';\nimport type { ClientRequest, IncomingMessage, RequestOptions } from 'http';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { mergeBaggageHeaders } from './baggage';\n\nconst LOG_PREFIX = '@sentry/instrumentation-http';\n\n/** Add a breadcrumb for outgoing requests. */\nexport function addRequestBreadcrumb(request: ClientRequest, response: IncomingMessage | undefined): void {\n const data = getBreadcrumbData(request);\n\n const statusCode = response?.statusCode;\n const level = getBreadcrumbLogLevelFromHttpStatusCode(statusCode);\n\n addBreadcrumb(\n {\n category: 'http',\n data: {\n status_code: statusCode,\n ...data,\n },\n type: 'http',\n level,\n },\n {\n event: 'response',\n request,\n response,\n },\n );\n}\n\n/**\n * Add trace propagation headers to an outgoing request.\n * This must be called _before_ the request is sent!\n */\n// eslint-disable-next-line complexity\nexport function addTracePropagationHeadersToOutgoingRequest(\n request: ClientRequest,\n propagationDecisionMap: LRUMap<string, boolean>,\n): void {\n const url = getRequestUrl(request);\n\n const { tracePropagationTargets, propagateTraceparent } = getClient()?.getOptions() || {};\n const headersToAdd = shouldPropagateTraceForUrl(url, tracePropagationTargets, propagationDecisionMap)\n ? getTraceData({ propagateTraceparent })\n : undefined;\n\n if (!headersToAdd) {\n return;\n }\n\n const { 'sentry-trace': sentryTrace, baggage, traceparent } = headersToAdd;\n\n if (sentryTrace && !request.getHeader('sentry-trace')) {\n try {\n request.setHeader('sentry-trace', sentryTrace);\n DEBUG_BUILD && debug.log(LOG_PREFIX, 'Added sentry-trace header to outgoing request');\n } catch (error) {\n DEBUG_BUILD &&\n debug.error(\n LOG_PREFIX,\n 'Failed to add sentry-trace header to outgoing request:',\n isError(error) ? error.message : 'Unknown error',\n );\n }\n }\n\n if (traceparent && !request.getHeader('traceparent')) {\n try {\n request.setHeader('traceparent', traceparent);\n DEBUG_BUILD && debug.log(LOG_PREFIX, 'Added traceparent header to outgoing request');\n } catch (error) {\n DEBUG_BUILD &&\n debug.error(\n LOG_PREFIX,\n 'Failed to add traceparent header to outgoing request:',\n isError(error) ? error.message : 'Unknown error',\n );\n }\n }\n\n if (baggage) {\n const newBaggage = mergeBaggageHeaders(request.getHeader('baggage'), baggage);\n if (newBaggage) {\n try {\n request.setHeader('baggage', newBaggage);\n DEBUG_BUILD && debug.log(LOG_PREFIX, 'Added baggage header to outgoing request');\n } catch (error) {\n DEBUG_BUILD &&\n debug.error(\n LOG_PREFIX,\n 'Failed to add baggage header to outgoing request:',\n isError(error) ? error.message : 'Unknown error',\n );\n }\n }\n }\n}\n\nfunction getBreadcrumbData(request: ClientRequest): Partial<SanitizedRequestData> {\n try {\n // `request.host` does not contain the port, but the host header does\n const host = request.getHeader('host') || request.host;\n const url = new URL(request.path, `${request.protocol}//${host}`);\n const parsedUrl = parseUrl(url.toString());\n\n const data: Partial<SanitizedRequestData> = {\n url: getSanitizedUrlString(parsedUrl),\n 'http.method': request.method || 'GET',\n };\n\n if (parsedUrl.search) {\n data['http.query'] = parsedUrl.search;\n }\n if (parsedUrl.hash) {\n data['http.fragment'] = parsedUrl.hash;\n }\n\n return data;\n } catch {\n return {};\n }\n}\n\n/** Convert an outgoing request to request options. */\nexport function getRequestOptions(request: ClientRequest): RequestOptions {\n return {\n method: request.method,\n protocol: request.protocol,\n host: request.host,\n hostname: request.host,\n path: request.path,\n headers: request.getHeaders(),\n };\n}\n\nfunction getRequestUrl(request: ClientRequest): string {\n const hostname = request.getHeader('host') || request.host;\n const protocol = request.protocol;\n const path = request.path;\n\n return `${protocol}//${hostname}${path}`;\n}\n"],"names":["getBreadcrumbLogLevelFromHttpStatusCode","addBreadcrumb","getClient","shouldPropagateTraceForUrl","getTraceData","baggage","DEBUG_BUILD","debug","isError","mergeBaggageHeaders","parseUrl","getSanitizedUrlString"],"mappings":"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"} |