-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathsentry.client.config.ts
57 lines (53 loc) · 2.2 KB
/
sentry.client.config.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
// This file configures the initialization of Sentry on the browser.
// The config you add here will be used whenever a page is visited.
// https://docs.sentry.io/platforms/javascript/guides/nextjs/
import * as Sentry from '@sentry/nextjs';
import { BrowserTracing } from '@sentry/browser';
import config from './config';
Sentry.init({
// eslint-disable-next-line no-process-env
debug: process.env.NODE_ENV === 'development',
dsn: config.sentryDSN,
enabled:
// eslint-disable-next-line no-process-env
process.env.NODE_ENV !== 'development' && config.useTestNet !== true,
integrations: [
new BrowserTracing({
beforeNavigate: (context) => {
return {
...context,
// You could use your UI's routing library to find the matching
// route template here. We don't have one right now, so do some basic
// parameter replacements.
name: location.pathname
.replace(/\/(es|fr|pt|en|lg)\//g, '/[language]/')
.replace(
/learn-and-earn\/[\w\d-]+\/[\w\d-]+(\?.*)?/g,
'/learn-and-earn/[level]/[lesson]'
)
.replace(/\/\d+/g, '/[id]')
};
}
})
],
// Adjust this value in production, or use tracesSampler for greater control
tracesSampler: (samplingContext) => {
const error = samplingContext.transactionContext;
if (error) {
if (error.tags && error.tags['user_activity']) {
// if there's any user action, send 100%
// (it tracks only extremely important errors)
return 1;
} else if (
error.description &&
(error.description.match(/GeolocationPositionError/i) ||
error.description.match(/denied transaction signature/i))
) {
// some things we know and want to ignore
return 0;
}
}
return 0.1;
},
transport: Sentry.makeBrowserOfflineTransport(Sentry.makeFetchTransport)
});