forked from coracle/flotilla
Add bugsnag
This commit is contained in:
@@ -5,3 +5,4 @@ VITE_PLATFORM_LOGO=static/flotilla.png
|
||||
VITE_PLATFORM_RELAY=
|
||||
VITE_PLATFORM_ACCENT="#7161FF"
|
||||
VITE_PLATFORM_DESCRIPTION="Flotilla is nostr — for communities."
|
||||
VITE_BUGSNAG_API_KEY=
|
||||
|
||||
Generated
+98
@@ -8,6 +8,7 @@
|
||||
"name": "flotilla",
|
||||
"version": "0.0.1",
|
||||
"dependencies": {
|
||||
"@bugsnag/js": "^8.1.2",
|
||||
"@noble/curves": "^1.5.0",
|
||||
"@noble/hashes": "^1.4.0",
|
||||
"@poppanator/sveltekit-svg": "^4.2.1",
|
||||
@@ -1787,6 +1788,64 @@
|
||||
"resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-7.1.0.tgz",
|
||||
"integrity": "sha512-o+UlMLt49RvtCASlOMW0AkHnabN9wR9rwCCherxO0yG4Npy34GkvrAqdXQvrhNs+jh+gkK8gB8Lf05qL/O7KWg=="
|
||||
},
|
||||
"node_modules/@bugsnag/browser": {
|
||||
"version": "8.1.2",
|
||||
"resolved": "https://registry.npmjs.org/@bugsnag/browser/-/browser-8.1.2.tgz",
|
||||
"integrity": "sha512-COP3OanbGCOS/K4g0rGwSYk2/RcIooG2PqxqdrF0MDY4u3Nz44iOaJg8w7WlOr8CckmDEiwSW2DVR+M7qZcoQw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@bugsnag/core": "^8.1.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@bugsnag/core": {
|
||||
"version": "8.1.1",
|
||||
"resolved": "https://registry.npmjs.org/@bugsnag/core/-/core-8.1.1.tgz",
|
||||
"integrity": "sha512-ytOWqwm4H2h8rADqYPR+tQpDHsBav3NEZ5E2VSCCxPbT2R89Q0/t0PZTbQVlOS+TRutajO29VxTV9qsAREfpSw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@bugsnag/cuid": "^3.0.0",
|
||||
"@bugsnag/safe-json-stringify": "^6.0.0",
|
||||
"error-stack-parser": "^2.0.3",
|
||||
"iserror": "^0.0.2",
|
||||
"stack-generator": "^2.0.3"
|
||||
}
|
||||
},
|
||||
"node_modules/@bugsnag/cuid": {
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npmjs.org/@bugsnag/cuid/-/cuid-3.1.1.tgz",
|
||||
"integrity": "sha512-d2z4b0rEo3chI07FNN1Xds8v25CNeekecU6FC/2Fs9MxY2EipkZTThVcV2YinMn8dvRUlViKOyC50evoUxg8tw==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@bugsnag/js": {
|
||||
"version": "8.1.2",
|
||||
"resolved": "https://registry.npmjs.org/@bugsnag/js/-/js-8.1.2.tgz",
|
||||
"integrity": "sha512-vMl/TlMTpm0Xv4IKqYpmsjeVE4nPWAZL8uOxOi0JI6dgTaWE8+VQF6KuSpeKiA7Pr34uUxpWhSBrkZ3uSwCBdg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@bugsnag/browser": "^8.1.2",
|
||||
"@bugsnag/node": "^8.1.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@bugsnag/node": {
|
||||
"version": "8.1.1",
|
||||
"resolved": "https://registry.npmjs.org/@bugsnag/node/-/node-8.1.1.tgz",
|
||||
"integrity": "sha512-Ckdgj4tQto3CH4wWo12BAG0lQuS9s5SUpZvwmYF3meW5Qxq7D8XHZzrfGQo9nb1VTvmwOB+uyMt8En6Cy86Jcg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@bugsnag/core": "^8.1.1",
|
||||
"byline": "^5.0.0",
|
||||
"error-stack-parser": "^2.0.3",
|
||||
"iserror": "^0.0.2",
|
||||
"pump": "^3.0.0",
|
||||
"stack-generator": "^2.0.3"
|
||||
}
|
||||
},
|
||||
"node_modules/@bugsnag/safe-json-stringify": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@bugsnag/safe-json-stringify/-/safe-json-stringify-6.0.0.tgz",
|
||||
"integrity": "sha512-htzFO1Zc57S8kgdRK9mLcPVTW1BY2ijfH7Dk2CeZmspTWKdKqSo1iwmqrq2WtRjFlo8aRZYgLX0wFrDXF/9DLA==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@canvas/image-data": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@canvas/image-data/-/image-data-1.0.0.tgz",
|
||||
@@ -4095,6 +4154,15 @@
|
||||
"license": "MIT",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/byline": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz",
|
||||
"integrity": "sha512-s6webAy+R4SR8XVuJWt2V2rGvhnrhxN+9S15GNuTK3wKPOXFF6RNc+8ug2XhH+2s4f+uudG4kUVYmYOQWL2g0Q==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/cac": {
|
||||
"version": "6.7.14",
|
||||
"resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz",
|
||||
@@ -4859,6 +4927,15 @@
|
||||
"url": "https://github.com/fb55/entities?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/error-stack-parser": {
|
||||
"version": "2.1.4",
|
||||
"resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz",
|
||||
"integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"stackframe": "^1.3.4"
|
||||
}
|
||||
},
|
||||
"node_modules/es-abstract": {
|
||||
"version": "1.23.3",
|
||||
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz",
|
||||
@@ -6287,6 +6364,12 @@
|
||||
"license": "MIT",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/iserror": {
|
||||
"version": "0.0.2",
|
||||
"resolved": "https://registry.npmjs.org/iserror/-/iserror-0.0.2.tgz",
|
||||
"integrity": "sha512-oKGGrFVaWwETimP3SiWwjDeY27ovZoyZPHtxblC4hCq9fXxed/jasx+ATWFFjCVSRZng8VTMsN1nDnGo6zMBSw==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/isexe": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
|
||||
@@ -8447,6 +8530,21 @@
|
||||
"license": "MIT",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/stack-generator": {
|
||||
"version": "2.0.10",
|
||||
"resolved": "https://registry.npmjs.org/stack-generator/-/stack-generator-2.0.10.tgz",
|
||||
"integrity": "sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"stackframe": "^1.3.4"
|
||||
}
|
||||
},
|
||||
"node_modules/stackframe": {
|
||||
"version": "1.3.4",
|
||||
"resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz",
|
||||
"integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/streamx": {
|
||||
"version": "2.20.1",
|
||||
"resolved": "https://registry.npmjs.org/streamx/-/streamx-2.20.1.tgz",
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
},
|
||||
"type": "module",
|
||||
"dependencies": {
|
||||
"@bugsnag/js": "^8.1.2",
|
||||
"@noble/curves": "^1.5.0",
|
||||
"@noble/hashes": "^1.4.0",
|
||||
"@poppanator/sveltekit-svg": "^4.2.1",
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
<script lang="ts">
|
||||
import "@src/app.css"
|
||||
import Bugsnag from "@bugsnag/js"
|
||||
import {onMount} from "svelte"
|
||||
import {get} from "svelte/store"
|
||||
import {dev} from "$app/environment"
|
||||
@@ -43,6 +44,32 @@
|
||||
import {loadUserData} from "@app/commands"
|
||||
import * as state from "@app/state"
|
||||
|
||||
const setupBugsnag = () => {
|
||||
// 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]"),
|
||||
)
|
||||
|
||||
// Wait for bugsnag to be started in main
|
||||
setTimeout(() => {
|
||||
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
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
// Migration: old nostrtalk instance used different sessions
|
||||
if ($session && !$signer) {
|
||||
dropSession($session.pubkey)
|
||||
@@ -53,6 +80,15 @@
|
||||
onMount(() => {
|
||||
Object.assign(window, {get, ...lib, ...util, ...app, ...state})
|
||||
|
||||
if (import.meta.env.VITE_BUGSNAG_API_KEY) {
|
||||
Bugsnag.start({
|
||||
apiKey: import.meta.env.VITE_BUGSNAG_API_KEY,
|
||||
collectUserIp: false,
|
||||
})
|
||||
}
|
||||
|
||||
setupBugsnag()
|
||||
|
||||
const getScoreEvent = () => {
|
||||
const ALWAYS_KEEP = Infinity
|
||||
const NEVER_KEEP = 0
|
||||
|
||||
Reference in New Issue
Block a user