/** * Конфигурация Sentry для серверной стороны */ import * as Sentry from '@sentry/nextjs'; Sentry.init({ dsn: process.env.NEXT_PUBLIC_SENTRY_DSN, environment: process.env.NODE_ENV || 'development', tracesSampleRate: process.env.NODE_ENV === 'production' ? 0.1 : 1.0, debug: process.env.NODE_ENV === 'development', beforeSend(event, _hint) { // Фильтрация чувствительных данных if (event.request?.data) { const data = event.request.data as any; if (data.password) delete data.password; if (data.token) delete data.token; if (data.apiKey) delete data.apiKey; } return event; }, }); // Инициализация мониторинга необработанных Promise rejections if (typeof process !== 'undefined') { try { // Динамический импорт для избежания проблем с SSR import('@/lib/monitoring/unhandled-rejections').then((module) => { module.initUnhandledRejectionMonitoring(); }).catch(() => { // Игнорируем ошибки при инициализации (может быть вызвано на клиенте) }); } catch { // Игнорируем ошибки } }