Skip to content

Commit 90f9ca8

Browse files
authored
Add filter for scripts that give an error outside the current host (#10)
1 parent 8cb7972 commit 90f9ca8

File tree

5 files changed

+25
-4
lines changed

5 files changed

+25
-4
lines changed

config/rapidez/sentry-vue.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,12 @@
2222
],
2323
],
2424

25+
'filters' => [
26+
// This filters out any errors that come from scripts not hosted from the current host.
27+
// For example, you don't want to see any errors coming from user extensions.
28+
'filterExternalUrls' => true
29+
],
30+
2531
// For integrations, see: https://docs.sentry.io/platforms/javascript/guides/vue/configuration/integrations/
2632
// If you want to add extra configuration to the constructor of an integration, change the `true` to an array like so:
2733
// 'replay' => [

resources/js/filters.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import { addBeforeSendMethodHandler } from "./stores/useBeforeSendHandlers"
2+
3+
if (window.config.sentry.filters.filterExternalUrls) {
4+
addBeforeSendMethodHandler((event) => {
5+
event.exception.values = event.exception.values.filter((error) => {
6+
return (new URL(error.stacktrace.frames[0].filename)).hostname == window.location.hostname
7+
})
8+
9+
if (event.exception.values.length == 0) {
10+
return null
11+
}
12+
13+
return event
14+
})
15+
}

resources/js/sentry.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import * as Sentry from '@sentry/vue'
22
import { runBeforeSendMethodHandlers } from './stores/useBeforeSendHandlers'
3+
import './filters.js'
34

45
// Collect all configured integrations
56
let integrations = Object.entries(window.config.sentry.integrations).map(([integration, value]) => {
@@ -22,9 +23,7 @@ let configuration = Object.assign(
2223
dsn: import.meta.env.VITE_SENTRY_DSN,
2324
environment: import.meta.env.MODE,
2425
integrations: integrations,
25-
beforeSend(event) {
26-
return runBeforeSendMethodHandlers(event)
27-
}
26+
beforeSend: runBeforeSendMethodHandlers,
2827
},
2928
window.config.sentry.configuration
3029
)

resources/js/stores/useBeforeSendHandlers.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,5 @@ export function addBeforeSendMethodHandler(handler) {
55
}
66

77
export function runBeforeSendMethodHandlers(event) {
8-
return beforeSendMethodHandlers.reduce((event, handler) => handler(event), event)
8+
return beforeSendMethodHandlers.reduce((event, handler) => event === null ? null : handler(event), event)
99
}

src/Http/ViewComposers/ConfigComposer.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ public function compose(View $view)
1111
{
1212
Config::set('frontend.sentry.configuration', config('rapidez.sentry-vue.configuration'));
1313
Config::set('frontend.sentry.enabled', config('rapidez.sentry-vue.configuration.enabled'));
14+
Config::set('frontend.sentry.filters', config('rapidez.sentry-vue.filters'));
1415
Config::set('frontend.sentry.integrations', config('rapidez.sentry-vue.integrations'));
1516
}
1617
}

0 commit comments

Comments
 (0)