@sentry/nextjs
Version:
Official Sentry SDK for Next.js
42 lines (38 loc) • 1.76 kB
JavaScript
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
const core = require('@sentry/core');
const debugBuild = require('../common/debug-build.js');
const globalWithInjectedValues = core.GLOBAL_OBJ;
function applyTunnelRouteOption(options) {
const tunnelRouteOption = process.env._sentryRewritesTunnelPath || globalWithInjectedValues._sentryRewritesTunnelPath;
if (tunnelRouteOption && options.dsn) {
const dsnComponents = core.dsnFromString(options.dsn);
if (!dsnComponents) {
return;
}
const tunnelRouteMode = process.env._sentryTunnelRouteMode || globalWithInjectedValues._sentryTunnelRouteMode;
if (tunnelRouteMode === "handler") {
options.tunnel = tunnelRouteOption;
debugBuild.DEBUG_BUILD && core.debug.log(`Tunneling events to "${tunnelRouteOption}"`);
return;
}
const sentrySaasDsnMatch = dsnComponents.host.match(/^o(\d+)\.ingest(?:\.([a-z]{2}))?\.sentry\.io$/);
if (sentrySaasDsnMatch) {
const orgId = sentrySaasDsnMatch[1];
const regionCode = sentrySaasDsnMatch[2];
let tunnelPath = `${tunnelRouteOption}?o=${orgId}&p=${dsnComponents.projectId}`;
if (regionCode) {
tunnelPath += `&r=${regionCode}`;
}
options.tunnel = tunnelPath;
options.transportOptions = {
...options.transportOptions,
fetchOptions: { credentials: "omit", ...options.transportOptions?.fetchOptions }
};
debugBuild.DEBUG_BUILD && core.debug.log(`Tunneling events to "${tunnelPath}"`);
} else {
debugBuild.DEBUG_BUILD && core.debug.warn("Provided DSN is not a Sentry SaaS DSN. Will not tunnel events.");
}
}
}
exports.applyTunnelRouteOption = applyTunnelRouteOption;
//# sourceMappingURL=tunnelRoute.js.map