UNPKG

@sentry/remix

Version:
61 lines (48 loc) 1.69 kB
import { isNodeEnv, getTraceData, debug } from '@sentry/core'; import { DEBUG_BUILD } from '../utils/debug-build.js'; import { isCloudflareEnv } from '../utils/utils.js'; /** Generate a Server-Timing header value containing Sentry trace context. */ function generateSentryServerTimingHeader() { if (!isNodeEnv() && !isCloudflareEnv()) { return null; } try { const traceData = getTraceData(); const sentryTrace = traceData['sentry-trace']; const baggage = traceData.baggage; if (!sentryTrace) { return null; } const parts = []; parts.push(`sentry-trace;desc="${sentryTrace}"`); if (baggage) { parts.push(`baggage;desc="${baggage}"`); } return parts.join(', '); } catch (e) { DEBUG_BUILD && debug.warn('Failed to generate Server-Timing header', e); return null; } } /** @internal */ function injectServerTimingHeaderValue(response, serverTimingValue) { try { const headers = new Headers(response.headers); const existing = headers.get('Server-Timing'); // Avoid duplicate entries when manually injected in entry.server.tsx if (existing?.includes('sentry-trace')) { return response; } headers.set('Server-Timing', existing ? `${existing}, ${serverTimingValue}` : serverTimingValue); return new Response(response.body, { status: response.status, statusText: response.statusText, headers, }); } catch (e) { DEBUG_BUILD && debug.warn('Failed to add Server-Timing header to response', e); return response; } } export { generateSentryServerTimingHeader, injectServerTimingHeaderValue }; //# sourceMappingURL=serverTimingTracePropagation.js.map