UNPKG

@sentry/browser

Version:
48 lines (44 loc) 1.86 kB
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); const browser = require('@sentry/core/browser'); const helpers = require('../helpers.js'); const attributes = require('@sentry/conventions/attributes'); const httpContextIntegration = browser.defineIntegration(() => { return { name: "HttpContext", preprocessEvent(event) { if (!helpers.WINDOW.navigator && !helpers.WINDOW.location && !helpers.WINDOW.document) { return; } const reqData = helpers.getHttpRequestData(); const headers = { ...reqData.headers, ...event.request?.headers }; event.request = { ...reqData, ...event.request, headers }; }, processSpan(span) { if (!helpers.WINDOW.navigator && !helpers.WINDOW.location && !helpers.WINDOW.document) { return; } const reqData = helpers.getHttpRequestData(); browser.safeSetSpanJSONAttributes(span, { // This attribute is used by the "Filter out events from legacy browsers and crawlers" features on the Sentry backend. // Therefore, it's set on every span. [attributes.USER_AGENT_ORIGINAL]: reqData.headers["User-Agent"], // These attributes, we only need on the segment span (analogous to the `request` context for events) ...span.is_segment && { // Coerce empty string to undefined so the helper's nullish check drops it, // rather than writing an empty `url.full` attribute onto the span. [attributes.URL_FULL]: span.attributes?.[attributes.SENTRY_OP] !== "http.client" ? reqData.url : void 0, [`${attributes.HTTP_REQUEST_HEADER_KEY_BASE}.referer`]: reqData.headers["Referer"] } }); } }; }); exports.httpContextIntegration = httpContextIntegration; //# sourceMappingURL=httpcontext.js.map