Files
prowler/ui/instrumentation.ts
2026-07-09 13:09:35 +02:00

50 lines
1.4 KiB
TypeScript

/**
* Next.js Instrumentation Hook
*
* This file is automatically executed by Next.js at startup to initialize server-side SDKs.
*
* Configuration Flow:
* 1. This file (instrumentation.ts) - Server-side initialization
* 2. Runtime-specific configs:
* - sentry/sentry.server.config.ts (Node.js runtime)
* - sentry/sentry.edge.config.ts (Edge runtime)
* 3. Client-side init:
* - instrumentation-client.ts (Browser/Client; reads the runtime data island)
*
* @see https://nextjs.org/docs/app/building-your-application/optimizing/instrumentation
*/
// Fail fast at server boot if required runtime env is missing.
import "@/lib/env";
import * as Sentry from "@sentry/nextjs";
import { readGatedEnv } from "@/lib/integrations";
const sentryDsn = readGatedEnv(
"UI_SENTRY_ENABLED",
"UI_SENTRY_DSN",
"NEXT_PUBLIC_SENTRY_DSN",
);
export async function register() {
// Skip Sentry initialization if DSN is not configured
if (!sentryDsn) {
return;
}
// The Sentry SDK automatically loads the appropriate config based on runtime
if (process.env.NEXT_RUNTIME === "nodejs") {
await import("./sentry/sentry.server.config");
}
if (process.env.NEXT_RUNTIME === "edge") {
await import("./sentry/sentry.edge.config");
}
}
// Only capture request errors if Sentry is configured
export const onRequestError = sentryDsn
? Sentry.captureRequestError
: undefined;