@sentry/nextjs
Version:
Official Sentry SDK for Next.js
32 lines (29 loc) • 1.17 kB
JavaScript
import { suppressTracing, handleTunnelRequest, makeDsn, dsnToString, getClient } from '@sentry/core';
function createSentryTunnelRoute(options = {}) {
const allowedDsnsFromOptions = options.allowedDsns?.length ? normalizeDsns(options.allowedDsns) : void 0;
return {
POST: async (request) => {
const allowedDsns = allowedDsnsFromOptions ?? getServerDsns();
if (!allowedDsns.length) {
return new Response(
allowedDsnsFromOptions ? "Tunnel route has no valid DSN in allowedDsns." : "Tunnel route requires Sentry server SDK initialized with a DSN, or pass allowedDsns explicitly.",
{ status: 500 }
);
}
return suppressTracing(() => handleTunnelRequest(request, { allowedDsns }));
}
};
}
const POST = createSentryTunnelRoute().POST;
function getServerDsns() {
const dsn = getClient()?.getDsn();
return dsn ? [dsnToString(dsn)] : [];
}
function normalizeDsns(dsns) {
return dsns.flatMap((dsn) => {
const dsnComponents = makeDsn(dsn.trim());
return dsnComponents ? [dsnToString(dsnComponents)] : [];
});
}
export { POST, createSentryTunnelRoute };
//# sourceMappingURL=index.js.map