- Raise use-swipe-gesture mutation score to 66.13% (target 65%+) - Maintain use-reduced-motion mutation score at 76.32% (target 50%+) - Fix use-reduced-motion.ts ESLint set-state-in-effect warning - Add UJ-10 deep searcher journey (category browse → article read → content discovery) - Add 40 new test files (analytics, detail, sections, ui, lib components) - Update test-strategy-plan.md to v2.0 (sync test count to 1591) - Sync README.md with final release metrics Quality gates: TS 0 errors, ESLint 0 errors, 121 suites / 1591 tests passed
46 lines
1.1 KiB
TypeScript
46 lines
1.1 KiB
TypeScript
// @ts-nocheck
|
|
import * as Sentry from '@sentry/nextjs';
|
|
|
|
const SENTRY_DSN = process.env.SENTRY_DSN || '';
|
|
|
|
if (SENTRY_DSN) {
|
|
Sentry.init({
|
|
dsn: SENTRY_DSN,
|
|
environment: process.env.NODE_ENV || 'development',
|
|
enabled: process.env.NODE_ENV !== 'development',
|
|
|
|
tracesSampleRate: 1.0,
|
|
|
|
beforeSend(event, hint) {
|
|
const error = hint.originalException;
|
|
|
|
if (error instanceof Error) {
|
|
event.contexts = {
|
|
...event.contexts,
|
|
runtime: {
|
|
name: 'node',
|
|
version: process.version,
|
|
},
|
|
application: {
|
|
name: 'novalon-website',
|
|
version: process.env.npm_package_version || 'unknown',
|
|
},
|
|
};
|
|
}
|
|
|
|
if (event.request?.cookies) {
|
|
delete event.request.cookies['session_id'];
|
|
delete event.request.cookies['token'];
|
|
}
|
|
|
|
return event;
|
|
},
|
|
});
|
|
|
|
console.log('[Sentry] Server-side monitoring initialized');
|
|
} else {
|
|
console.warn('[Sentry] SENTRY_DSN not configured, server-side error monitoring disabled');
|
|
}
|
|
|
|
export default Sentry;
|