Move error tracking and analytics to their own files
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
import {page} from "$app/stores"
|
||||
|
||||
const w = window as any
|
||||
|
||||
w.plausible =
|
||||
w.plausible ||
|
||||
function () {
|
||||
;(w.plausible.q = w.plausible.q || []).push(arguments)
|
||||
}
|
||||
|
||||
export const setupAnalytics = () => {
|
||||
page.subscribe($page => {
|
||||
if ($page.route) {
|
||||
w.plausible("pageview", {u: $page.route.id})
|
||||
}
|
||||
})
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
import Bugsnag from "@bugsnag/js"
|
||||
|
||||
export const setupTracking = () => {
|
||||
if (!import.meta.env.VITE_BUGSNAG_API_KEY) return
|
||||
|
||||
// Initialize
|
||||
Bugsnag.start({
|
||||
apiKey: import.meta.env.VITE_BUGSNAG_API_KEY,
|
||||
collectUserIp: false,
|
||||
})
|
||||
|
||||
// Redact long strings, especially hex and bech32 keys which are 64 and 63
|
||||
// characters long, respectively. Put the threshold a little lower in case
|
||||
// someone accidentally enters a key with the last few digits missing
|
||||
const redactErrorInfo = (info: any) =>
|
||||
JSON.parse(
|
||||
JSON.stringify(info || null)
|
||||
.replace(/\d+:{60}\w+:\w+/g, "[REDACTED]")
|
||||
.replace(/\w{60}\w+/g, "[REDACTED]"),
|
||||
)
|
||||
|
||||
Bugsnag.addOnError((event: any) => {
|
||||
// Redact individual properties since the event needs to be
|
||||
// mutated, and we don't want to lose the prototype
|
||||
event.context = redactErrorInfo(event.context)
|
||||
event.request = redactErrorInfo(event.request)
|
||||
event.exceptions = redactErrorInfo(event.exceptions)
|
||||
event.breadcrumbs = redactErrorInfo(event.breadcrumbs)
|
||||
|
||||
return true
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user