opnform-host-nginx/client/sentry.client.config.ts

63 lines
1.8 KiB
TypeScript

import * as Sentry from "@sentry/nuxt";
Sentry.init({
// If set up, you can use your runtime config here
// dsn: useRuntimeConfig().public.sentry.dsn,
dsn: useRuntimeConfig().public.SENTRY_DSN_PUBLIC ?? null,
// This sets the sample rate to be 10%. You may want this to be 100% while
// in development and sample at a lower rate in production
replaysSessionSampleRate: 0.1,
// If the entire session is not sampled, use the below sample rate to sample
// sessions when an error occurs.
replaysOnErrorSampleRate: 1.0,
// If you don't want to use Session Replay, just remove the line below:
integrations: [Sentry.replayIntegration()],
// Setting this option to true will print useful information to the console while you're setting up Sentry.
debug: false,
// Ensure that source maps are properly handled
attachStacktrace: true,
beforeSend (event) {
if (event.exception?.values?.length) {
const errorType = event.exception.values[0]?.type || '';
const errorValue = event.exception.values[0]?.value || '';
// Don't send validation exceptions to Sentry
if (
errorType === 'FetchError' &&
(errorValue.includes('422') || errorValue.includes('401'))
) {
return null
}
// Filter out chunk loading errors
if (
errorValue.includes('Failed to fetch dynamically imported module') ||
errorValue.includes('Loading chunk') ||
errorValue.includes('Failed to load resource')
) {
return null
}
}
const authStore = useAuthStore()
if (authStore.check) {
const user = authStore.user as { id?: string; email?: string } | null
Sentry.setUser({
id: user?.id,
email: user?.email
})
event.user = {
id: user?.id,
email: user?.email
}
}
return event
}
});