42 lines
981 B
TypeScript
42 lines
981 B
TypeScript
import * as Sentry from '@sentry/react';
|
|
|
|
type AppSurface = 'guest' | 'admin' | 'inertia';
|
|
|
|
const defaultTracesSampleRate = 0.05;
|
|
|
|
const parseSampleRate = (value: string | undefined): number => {
|
|
const parsed = Number.parseFloat(value ?? '');
|
|
|
|
if (Number.isNaN(parsed) || parsed < 0) {
|
|
return defaultTracesSampleRate;
|
|
}
|
|
|
|
return parsed;
|
|
};
|
|
|
|
export const initSentry = (app: AppSurface): void => {
|
|
const dsn = import.meta.env.VITE_SENTRY_DSN;
|
|
|
|
if (! dsn) {
|
|
return;
|
|
}
|
|
|
|
Sentry.init({
|
|
dsn,
|
|
environment: import.meta.env.VITE_SENTRY_ENV ?? import.meta.env.MODE,
|
|
release: import.meta.env.VITE_SENTRY_RELEASE,
|
|
tracesSampleRate: parseSampleRate(import.meta.env.VITE_SENTRY_TRACES_SAMPLE_RATE),
|
|
beforeSend(event) {
|
|
event.tags = {
|
|
...event.tags,
|
|
app,
|
|
};
|
|
|
|
return event;
|
|
},
|
|
normalizeDepth: 6,
|
|
});
|
|
};
|
|
|
|
export { Sentry };
|