From 4805842f89af461a383c571ada696be1fe303917 Mon Sep 17 00:00:00 2001 From: wvffle Date: Mon, 25 Jul 2022 20:08:41 +0000 Subject: [PATCH] Add sentry support --- docker/nginx/conf.dev | 4 +-- front/package.json | 6 +++- front/src/init/sentry.ts | 33 ++++++++++++++++++ front/yarn.lock | 75 +++++++++++++++++++++++++++++++++++++++- 4 files changed, 114 insertions(+), 4 deletions(-) create mode 100644 front/src/init/sentry.ts diff --git a/docker/nginx/conf.dev b/docker/nginx/conf.dev index 6d27ed4a1..5cd43b1e5 100644 --- a/docker/nginx/conf.dev +++ b/docker/nginx/conf.dev @@ -69,12 +69,12 @@ http { text/x-component text/x-cross-domain-policy; - add_header Content-Security-Policy "default-src 'self' 'unsafe-eval'; connect-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; font-src 'self' data:; object-src 'none'; media-src 'self' data:"; + add_header Content-Security-Policy "default-src 'self' 'unsafe-eval'; connect-src https: 'unsafe-eval'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; font-src 'self' data:; object-src 'none'; media-src 'self' data:"; add_header Referrer-Policy "strict-origin-when-cross-origin"; add_header X-Frame-Options "SAMEORIGIN" always; location /front/ { - add_header Content-Security-Policy "default-src 'self' 'unsafe-eval'; connect-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; font-src 'self' data:; object-src 'none'; media-src 'self' data:"; + add_header Content-Security-Policy "default-src 'self' 'unsafe-eval'; connect-src https: 'unsafe-eval'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; font-src 'self' data:; object-src 'none'; media-src 'self' data:"; add_header Referrer-Policy "strict-origin-when-cross-origin"; add_header Service-Worker-Allowed "/"; # uncomment the following line and comment the proxy-pass one diff --git a/front/package.json b/front/package.json index 06dab1a23..3b0b8e075 100644 --- a/front/package.json +++ b/front/package.json @@ -18,11 +18,14 @@ "postinstall": "yarn run fix-fomantic-css" }, "dependencies": { + "@sentry/tracing": "^7.7.0", + "@sentry/vue": "^7.7.0", "@tiptap/starter-kit": "^2.0.0-beta.191", "@tiptap/vue-3": "^2.0.0-beta.96", "@vue/runtime-core": "3.2.37", "@vueuse/core": "8.9.4", "@vueuse/integrations": "8.9.4", + "add": "^2.0.6", "axios": "0.27.2", "axios-auth-refresh": "3.3.3", "diff": "5.1.0", @@ -55,7 +58,8 @@ "vuedraggable": "4.1.0", "vuex": "4.0.2", "vuex-persistedstate": "4.1.0", - "vuex-router-sync": "5.0.0" + "vuex-router-sync": "5.0.0", + "yarn": "^1.22.19" }, "devDependencies": { "@types/dompurify": "2.3.3", diff --git a/front/src/init/sentry.ts b/front/src/init/sentry.ts new file mode 100644 index 000000000..e7c118647 --- /dev/null +++ b/front/src/init/sentry.ts @@ -0,0 +1,33 @@ +import type { InitModule } from '~/types' + +import * as Sentry from '@sentry/vue' +import { BrowserTracing } from '@sentry/tracing' + +export const install: InitModule = ({ app, router }) => { + if (import.meta.env.DEV) { + if (!document.cookie.split(';').map(cookie => cookie.split('=')[0].trim()).includes('sentry_dev')) { + alert(`This instance uses ${new URL(import.meta.env.VUE_SENTRY_DSN).hostname} to collect information about crashes and stack traces.\n\nPlease unlock the domain in your adblock to allow us debug the branch.\n\nIf you do not want to share the data with us, please delete \`x-test-server\` cookie.`) + + const expires = new Date() + expires.setTime(expires.getTime() + (100 * 24 * 60 * 60 * 1000)) + document.cookie = `sentry_dev=1;expires=${expires.toUTCString()}` + } + } + + if (import.meta.env.VUE_SENTRY_DSN) { + Sentry.init({ + app, + dsn: import.meta.env.VUE_SENTRY_DSN, + logErrors: true, + integrations: [ + new BrowserTracing({ + routingInstrumentation: Sentry.vueRouterInstrumentation(router) + }) + ], + // Set tracesSampleRate to 1.0 to capture 100% + // of transactions for performance monitoring. + // We recommend adjusting this value in production + tracesSampleRate: 1.0 + }) + } +} diff --git a/front/yarn.lock b/front/yarn.lock index 81c143b1e..aaa015a92 100644 --- a/front/yarn.lock +++ b/front/yarn.lock @@ -1313,6 +1313,69 @@ estree-walker "^1.0.1" picomatch "^2.2.2" +"@sentry/browser@7.7.0": + version "7.7.0" + resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-7.7.0.tgz#7810ee98d4969bd0367e29ac0af6c5779db7e6c4" + integrity sha512-oyzpWcsjVZTaf14zAL89Ng1DUHlbjN+V8pl8dR9Y9anphbzL5BK9p0fSK4kPIrO4GukK+XrKnLJDPuE/o7WR3g== + dependencies: + "@sentry/core" "7.7.0" + "@sentry/types" "7.7.0" + "@sentry/utils" "7.7.0" + tslib "^1.9.3" + +"@sentry/core@7.7.0": + version "7.7.0" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.7.0.tgz#1a2d477897552d179380f7c54c7d81a4e98ea29a" + integrity sha512-Z15ACiuiFINFcK4gbMrnejLn4AVjKBPJOWKrrmpIe8mh+Y9diOuswt5mMUABs+jhpZvqht3PBLLGBL0WMsYMYA== + dependencies: + "@sentry/hub" "7.7.0" + "@sentry/types" "7.7.0" + "@sentry/utils" "7.7.0" + tslib "^1.9.3" + +"@sentry/hub@7.7.0": + version "7.7.0" + resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-7.7.0.tgz#9ad3471cf5ecaf1a9d3a3a04ca2515ffec9e2c09" + integrity sha512-6gydK234+a0nKhBRDdIJ7Dp42CaiW2juTiHegUVDq+482balVzbZyEAmESCmuzKJhx5BhlCElVxs/cci1NjMpg== + dependencies: + "@sentry/types" "7.7.0" + "@sentry/utils" "7.7.0" + tslib "^1.9.3" + +"@sentry/tracing@^7.7.0": + version "7.7.0" + resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-7.7.0.tgz#67324b755a28e115289755e44a0b8b467a63d0b2" + integrity sha512-HNmvTwemuc21q/K6HXsSp9njkne6N1JQ71TB+QGqYU5VtxsVgYSUhhYqV6WcHz7LK4Hj6TvNFoeu69/rO0ysgw== + dependencies: + "@sentry/hub" "7.7.0" + "@sentry/types" "7.7.0" + "@sentry/utils" "7.7.0" + tslib "^1.9.3" + +"@sentry/types@7.7.0": + version "7.7.0" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.7.0.tgz#dd6bd3d119d7efea0e85dbaa4b17de1c22b63c7a" + integrity sha512-4x8O7uerSGLnYC10krHl9t8h7xXHn5FextqKYbTCXCnx2hC8D+9lz8wcbQAFo0d97wiUYqI8opmEgFVGx7c5hQ== + +"@sentry/utils@7.7.0": + version "7.7.0" + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.7.0.tgz#013e3097c4268a76de578494c7df999635fb0ad4" + integrity sha512-fD+ROSFpeJlK7bEvUT2LOW7QqgjBpXJwVISKZ0P2fuzclRC3KoB2pbZgBM4PXMMTiSzRGWhvfRRjBiBvQJBBJQ== + dependencies: + "@sentry/types" "7.7.0" + tslib "^1.9.3" + +"@sentry/vue@^7.7.0": + version "7.7.0" + resolved "https://registry.yarnpkg.com/@sentry/vue/-/vue-7.7.0.tgz#7462d3957250a08f77972dc55d624d4c688e33b9" + integrity sha512-0gtUJ5ngdEYS2CnlOW76U6sMs5RoALpfhk7QMqPn7nGCMHP2uthwi8/T1HMKjg5JTZqLcfssf059fg3ZnhpGYQ== + dependencies: + "@sentry/browser" "7.7.0" + "@sentry/core" "7.7.0" + "@sentry/types" "7.7.0" + "@sentry/utils" "7.7.0" + tslib "^1.9.3" + "@sinclair/typebox@^0.24.1": version "0.24.35" resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.35.tgz#7b5ca127aefe3ed482bb60f874bebbe3143e82f5" @@ -2420,6 +2483,11 @@ acorn@^8.5.0, acorn@^8.8.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8" integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== +add@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/add/-/add-2.0.6.tgz#248f0a9f6e5a528ef2295dbeec30532130ae2235" + integrity sha512-j5QzrmsokwWWp6kUcJQySpbG+xfOBqqKnup3OIk1pz+kB/80SLorZ9V8zHFLO92Lcd+hbvq8bT+zOGoPkmBV0Q== + ajv@^6.10.0, ajv@^6.12.4: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" @@ -6870,7 +6938,7 @@ tsconfig@^7.0.0: strip-bom "^3.0.0" strip-json-comments "^2.0.0" -tslib@^1.8.1: +tslib@^1.8.1, tslib@^1.9.3: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== @@ -7566,6 +7634,11 @@ yargs@^17.3.1, yargs@^17.5.1: y18n "^5.0.5" yargs-parser "^21.0.0" +yarn@^1.22.19: + version "1.22.19" + resolved "https://registry.yarnpkg.com/yarn/-/yarn-1.22.19.tgz#4ba7fc5c6e704fce2066ecbfb0b0d8976fe62447" + integrity sha512-/0V5q0WbslqnwP91tirOvldvYISzaqhClxzyUKXYxs07yUILIs5jx/k6CFe8bvKSkds5w+eiOqta39Wk3WxdcQ== + yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"