@sentry/remix
Version:
Official Sentry SDK for Remix
52 lines (48 loc) • 1.72 kB
JavaScript
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
const core = require('@sentry/core');
const server = require('@sentry/core/server');
const debugBuild = require('../utils/debug-build.js');
const utils = require('../utils/utils.js');
function generateSentryServerTimingHeader() {
if (!server.isNodeEnv() && !utils.isCloudflareEnv()) {
return null;
}
try {
const traceData = core.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) {
debugBuild.DEBUG_BUILD && core.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) {
debugBuild.DEBUG_BUILD && core.debug.warn("Failed to add Server-Timing header to response", e);
return response;
}
}
exports.generateSentryServerTimingHeader = generateSentryServerTimingHeader;
exports.injectServerTimingHeaderValue = injectServerTimingHeaderValue;
//# sourceMappingURL=serverTimingTracePropagation.js.map