From 83b7ebcb441fb3f370f601bb5fd19255e24c2847 Mon Sep 17 00:00:00 2001 From: Torsten Dittmann Date: Mon, 14 Nov 2022 16:06:25 +0100 Subject: [PATCH] feat: sentry --- .env.example | 3 +- package-lock.json | 228 ++++++++++++++++++++++++++++++++++++-- package.json | 2 + src/global.d.ts | 1 + src/routes/+layout.svelte | 14 +++ 5 files changed, 240 insertions(+), 8 deletions(-) diff --git a/.env.example b/.env.example index 6433976466..f403c6f090 100644 --- a/.env.example +++ b/.env.example @@ -1,3 +1,4 @@ VITE_APP_DOMAIN_TARGET= VITE_APPWRITE_ENDPOINT= -VITE_GOOGLE_ANALYTICS= \ No newline at end of file +VITE_GOOGLE_ANALYTICS= +VITE_SENTRY_DSN= \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index a1ffcfa0f8..5b34633685 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,6 +12,8 @@ "@aw-labs/icons": "0.0.0-76", "@aw-labs/ui": "0.0.0-76", "@popperjs/core": "^2.11.6", + "@sentry/svelte": "^7.19.0", + "@sentry/tracing": "^7.19.0", "echarts": "^5.4.0", "pretty-bytes": "^6.0.0", "prismjs": "^1.29.0", @@ -1268,6 +1270,121 @@ "url": "https://opencollective.com/popperjs" } }, + "node_modules/@sentry/browser": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.19.0.tgz", + "integrity": "sha512-dWi5VjEwiLb4ofata0UCLdTbXLD1uDUebe9rNSBkHZ3fHF4eap4ZJlu3dYePKB0CKZhZrjzbydimMhaMUNdnug==", + "dependencies": { + "@sentry/core": "7.19.0", + "@sentry/types": "7.19.0", + "@sentry/utils": "7.19.0", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@sentry/browser/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/@sentry/core": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.19.0.tgz", + "integrity": "sha512-YF9cTBcAnO4R44092BJi5Wa2/EO02xn2ziCtmNgAVTN2LD31a/YVGxGBt/FDr4Y6yeuVehaqijVVvtpSmXrGJw==", + "dependencies": { + "@sentry/types": "7.19.0", + "@sentry/utils": "7.19.0", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@sentry/core/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/@sentry/svelte": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@sentry/svelte/-/svelte-7.19.0.tgz", + "integrity": "sha512-SngzaNKsRA22f3PvcZglCQbzG9ddCg9yl42XIa/HMDokm+gnARKA7VbR/9ogkGlSuVyHcFsWWNdk8MBnUBIFRQ==", + "dependencies": { + "@sentry/browser": "7.19.0", + "@sentry/types": "7.19.0", + "@sentry/utils": "7.19.0", + "magic-string": "^0.26.2", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=8" + }, + "peerDependencies": { + "svelte": "3.x" + } + }, + "node_modules/@sentry/svelte/node_modules/magic-string": { + "version": "0.26.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz", + "integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==", + "dependencies": { + "sourcemap-codec": "^1.4.8" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@sentry/svelte/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/@sentry/tracing": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-7.19.0.tgz", + "integrity": "sha512-SWY17M3TsgBePaGowUcSqBwaT0TJQzuNexVnLojuU0k6F57L9hubvP9zaoosoCfARXQ/3NypAFWnlJyf570rFQ==", + "dependencies": { + "@sentry/core": "7.19.0", + "@sentry/types": "7.19.0", + "@sentry/utils": "7.19.0", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@sentry/tracing/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/@sentry/types": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.19.0.tgz", + "integrity": "sha512-oGRAT6lfzoKrxO1mvxiSj0XHxWPd6Gd1wpPGuu6iJo03xgWDS+MIlD1h2unqL4N5fAzLjzmbC2D2lUw50Kn2pA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@sentry/utils": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.19.0.tgz", + "integrity": "sha512-2L6lq+c9Ol2uiRxQDdcgoapmHJp24MhMN0gIkn2alSfMJ+ls6bGXzQHx6JAIdoOiwFQXRZHKL9ecfAc8O+vItA==", + "dependencies": { + "@sentry/types": "7.19.0", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@sentry/utils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, "node_modules/@sinclair/typebox": { "version": "0.24.20", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.20.tgz", @@ -6465,8 +6582,7 @@ "node_modules/sourcemap-codec": { "version": "1.4.8", "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "dev": true + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" }, "node_modules/spawn-sync": { "version": "1.0.15", @@ -6666,7 +6782,6 @@ "version": "3.52.0", "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.52.0.tgz", "integrity": "sha512-FxcnEUOAVfr10vDU5dVgJN19IvqeHQCS1zfe8vayTfis9A2t5Fhx+JDe5uv/C3j//bB1umpLJ6quhgs9xyUbCQ==", - "dev": true, "engines": { "node": ">= 8" } @@ -8399,6 +8514,107 @@ "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz", "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==" }, + "@sentry/browser": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.19.0.tgz", + "integrity": "sha512-dWi5VjEwiLb4ofata0UCLdTbXLD1uDUebe9rNSBkHZ3fHF4eap4ZJlu3dYePKB0CKZhZrjzbydimMhaMUNdnug==", + "requires": { + "@sentry/core": "7.19.0", + "@sentry/types": "7.19.0", + "@sentry/utils": "7.19.0", + "tslib": "^1.9.3" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@sentry/core": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.19.0.tgz", + "integrity": "sha512-YF9cTBcAnO4R44092BJi5Wa2/EO02xn2ziCtmNgAVTN2LD31a/YVGxGBt/FDr4Y6yeuVehaqijVVvtpSmXrGJw==", + "requires": { + "@sentry/types": "7.19.0", + "@sentry/utils": "7.19.0", + "tslib": "^1.9.3" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@sentry/svelte": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@sentry/svelte/-/svelte-7.19.0.tgz", + "integrity": "sha512-SngzaNKsRA22f3PvcZglCQbzG9ddCg9yl42XIa/HMDokm+gnARKA7VbR/9ogkGlSuVyHcFsWWNdk8MBnUBIFRQ==", + "requires": { + "@sentry/browser": "7.19.0", + "@sentry/types": "7.19.0", + "@sentry/utils": "7.19.0", + "magic-string": "^0.26.2", + "tslib": "^1.9.3" + }, + "dependencies": { + "magic-string": { + "version": "0.26.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz", + "integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==", + "requires": { + "sourcemap-codec": "^1.4.8" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@sentry/tracing": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-7.19.0.tgz", + "integrity": "sha512-SWY17M3TsgBePaGowUcSqBwaT0TJQzuNexVnLojuU0k6F57L9hubvP9zaoosoCfARXQ/3NypAFWnlJyf570rFQ==", + "requires": { + "@sentry/core": "7.19.0", + "@sentry/types": "7.19.0", + "@sentry/utils": "7.19.0", + "tslib": "^1.9.3" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@sentry/types": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.19.0.tgz", + "integrity": "sha512-oGRAT6lfzoKrxO1mvxiSj0XHxWPd6Gd1wpPGuu6iJo03xgWDS+MIlD1h2unqL4N5fAzLjzmbC2D2lUw50Kn2pA==" + }, + "@sentry/utils": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.19.0.tgz", + "integrity": "sha512-2L6lq+c9Ol2uiRxQDdcgoapmHJp24MhMN0gIkn2alSfMJ+ls6bGXzQHx6JAIdoOiwFQXRZHKL9ecfAc8O+vItA==", + "requires": { + "@sentry/types": "7.19.0", + "tslib": "^1.9.3" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, "@sinclair/typebox": { "version": "0.24.20", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.20.tgz", @@ -12373,8 +12589,7 @@ "sourcemap-codec": { "version": "1.4.8", "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "dev": true + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" }, "spawn-sync": { "version": "1.0.15", @@ -12526,8 +12741,7 @@ "svelte": { "version": "3.52.0", "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.52.0.tgz", - "integrity": "sha512-FxcnEUOAVfr10vDU5dVgJN19IvqeHQCS1zfe8vayTfis9A2t5Fhx+JDe5uv/C3j//bB1umpLJ6quhgs9xyUbCQ==", - "dev": true + "integrity": "sha512-FxcnEUOAVfr10vDU5dVgJN19IvqeHQCS1zfe8vayTfis9A2t5Fhx+JDe5uv/C3j//bB1umpLJ6quhgs9xyUbCQ==" }, "svelte-check": { "version": "2.9.2", diff --git a/package.json b/package.json index f67b846223..ea83462733 100644 --- a/package.json +++ b/package.json @@ -23,6 +23,8 @@ "@aw-labs/icons": "0.0.0-76", "@aw-labs/ui": "0.0.0-76", "@popperjs/core": "^2.11.6", + "@sentry/svelte": "^7.19.0", + "@sentry/tracing": "^7.19.0", "echarts": "^5.4.0", "pretty-bytes": "^6.0.0", "prismjs": "^1.29.0", diff --git a/src/global.d.ts b/src/global.d.ts index 88b6c4fd06..02ec2c2b89 100644 --- a/src/global.d.ts +++ b/src/global.d.ts @@ -3,4 +3,5 @@ interface Window { GOOGLE_ANALYTICS: string | false; VERCEL_ANALYTICS_ID: string | false; + SENTRY_DSN: string | false; } diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 790b7efa11..edec0dd2e9 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -11,10 +11,13 @@ import { Progress, Notifications } from '$lib/layout'; import { loading } from './store'; import Loading from './loading.svelte'; + import * as Sentry from '@sentry/svelte'; + import { BrowserTracing } from '@sentry/tracing'; if (browser) { window.VERCEL_ANALYTICS_ID = import.meta.env.VERCEL_ANALYTICS_ID?.toString() ?? false; window.GOOGLE_ANALYTICS = import.meta.env.VITE_GOOGLE_ANALYTICS?.toString() ?? false; + window.SENTRY_DSN = import.meta.env.VITE_SENTRY_DSN?.toString() ?? false; } onMount(async () => { @@ -30,6 +33,17 @@ onTTFB(reportWebVitals); } + /** + * Sentry Error Logging + */ + if (!dev && window.SENTRY_DSN) { + Sentry.init({ + dsn: window.SENTRY_DSN, + integrations: [new BrowserTracing()], + tracesSampleRate: 1.0 + }); + } + /** * Handle initial load. */