@sentry/remix
Version:
Official Sentry SDK for Remix
49 lines (46 loc) • 1.55 kB
JavaScript
import { getTraceData, debug } from '@sentry/core';
import { isNodeEnv } from '@sentry/core/server';
import { DEBUG_BUILD } from '../utils/debug-build.js';
import { isCloudflareEnv } from '../utils/utils.js';
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;
}
}
function injectServerTimingHeaderValue(response, serverTimingValue) {
try {
const headers = new Headers(response.headers);
const existing = headers.get("Server-Timing");
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