import * as Sentry from '@sentry/nextjs' import { shouldDropExpectedProductSentryEvent } from './lib/observability/expectedProductError' const dsn = process.env.SENTRY_DSN?.trim() || process.env.NEXT_PUBLIC_SENTRY_DSN?.trim() function tracesSampleRate(): number { const raw = process.env.SENTRY_TRACES_SAMPLE_RATE ?? '0.1' const parsed = Number.parseFloat(raw) return Number.isFinite(parsed) ? parsed : 0.1 } export function initServerSentry() { // فقط در production — در local/dev نویز و مصرف سهمیه نمی‌خواهیم if (process.env.NODE_ENV !== 'production' || !dsn) return Sentry.init({ dsn, environment: process.env.SENTRY_ENVIRONMENT?.trim() || process.env.NODE_ENV || 'production', release: process.env.SENTRY_RELEASE?.trim() || process.env.NEXT_PUBLIC_APP_VERSION || undefined, tracesSampleRate: tracesSampleRate(), sendDefaultPii: false, beforeSend(event, hint) { if (shouldDropExpectedProductSentryEvent(event, hint.originalException)) return null return event }, }) }