From c8eb8b9a219ad7debab26e5bd833764ac141c546 Mon Sep 17 00:00:00 2001 From: Matthias Mair Date: Wed, 23 Aug 2023 12:45:58 +0200 Subject: [PATCH] [FR/P_UI] Sentry.io integration for front-end (#5453) Fixes #5313 --- InvenTree/config_template.yaml | 2 + src/frontend/package.json | 1 + src/frontend/src/main.tsx | 12 ++++++ src/frontend/yarn.lock | 71 +++++++++++++++++++++++++++++++++- 4 files changed, 85 insertions(+), 1 deletion(-) diff --git a/InvenTree/config_template.yaml b/InvenTree/config_template.yaml index 62a190963e..2e25d5b832 100644 --- a/InvenTree/config_template.yaml +++ b/InvenTree/config_template.yaml @@ -248,6 +248,8 @@ remote_login_header: HTTP_REMOTE_USER # name: InvenTree Demo # default_server: my_server1 # show_server_selector: false +# sentry_dsn: https://84f0c3ea90c64e5092e2bf5dfe325725@o1047628.ingest.sentry.io/4504160008273920 +# environment: development # Custom flags # InvenTree uses django-flags; read more in their docs at https://cfpb.github.io/django-flags/conditions/ diff --git a/src/frontend/package.json b/src/frontend/package.json index f6735125c2..524b39ee27 100644 --- a/src/frontend/package.json +++ b/src/frontend/package.json @@ -26,6 +26,7 @@ "@mantine/hooks": "^6.0.17", "@mantine/modals": "^6.0.17", "@mantine/notifications": "^6.0.17", + "@sentry/react": "^7.64.0", "@tabler/icons-react": "^2.28.0", "@tanstack/react-query": "^4.32.0", "axios": "^1.4.0", diff --git a/src/frontend/src/main.tsx b/src/frontend/src/main.tsx index d6a6e65512..205de488cb 100644 --- a/src/frontend/src/main.tsx +++ b/src/frontend/src/main.tsx @@ -1,3 +1,4 @@ +import * as Sentry from '@sentry/react'; import React from 'react'; import ReactDOM from 'react-dom/client'; import 'react-grid-layout/css/styles.css'; @@ -13,6 +14,8 @@ declare global { server_list: HostList; default_server: string; show_server_selector: boolean; + sentry_dsn?: string; + environment?: string; }; } } @@ -43,6 +46,15 @@ window.INVENTREE_SETTINGS = { ...((window.INVENTREE_SETTINGS || {}) as any) }; +if (window.INVENTREE_SETTINGS.sentry_dsn) { + console.log('Sentry enabled'); + Sentry.init({ + dsn: window.INVENTREE_SETTINGS.sentry_dsn, + tracesSampleRate: 1.0, + environment: window.INVENTREE_SETTINGS.environment || 'default' + }); +} + ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render( diff --git a/src/frontend/yarn.lock b/src/frontend/yarn.lock index bc95d955db..46779937b5 100644 --- a/src/frontend/yarn.lock +++ b/src/frontend/yarn.lock @@ -1064,6 +1064,70 @@ resolved "https://registry.npmjs.org/@remix-run/router/-/router-1.7.2.tgz" integrity sha512-7Lcn7IqGMV+vizMPoEl5F0XDshcdDYtMI6uJLQdQz5CfZAwy3vvGKYSUk789qndt5dEC4HfSjviSYlSoHGL2+A== +"@sentry-internal/tracing@7.64.0": + version "7.64.0" + resolved "https://registry.yarnpkg.com/@sentry-internal/tracing/-/tracing-7.64.0.tgz#3e110473b8edf805b799cc91d6ee592830237bb4" + integrity sha512-1XE8W6ki7hHyBvX9hfirnGkKDBKNq3bDJyXS86E0bYVDl94nvbRM9BD9DHsCFetqYkVm1yDGEK+6aUVs4CztoQ== + dependencies: + "@sentry/core" "7.64.0" + "@sentry/types" "7.64.0" + "@sentry/utils" "7.64.0" + tslib "^2.4.1 || ^1.9.3" + +"@sentry/browser@7.64.0": + version "7.64.0" + resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-7.64.0.tgz#76db08a5d32ffe7c5aa907f258e6c845ce7f10d7" + integrity sha512-lB2IWUkZavEDclxfLBp554dY10ZNIEvlDZUWWathW+Ws2wRb6PNLtuPUNu12R7Q7z0xpkOLrM1kRNN0OdldgKA== + dependencies: + "@sentry-internal/tracing" "7.64.0" + "@sentry/core" "7.64.0" + "@sentry/replay" "7.64.0" + "@sentry/types" "7.64.0" + "@sentry/utils" "7.64.0" + tslib "^2.4.1 || ^1.9.3" + +"@sentry/core@7.64.0": + version "7.64.0" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.64.0.tgz#9d61cdc29ba299dedbdcbe01cfadf94bd0b7df48" + integrity sha512-IzmEyl5sNG7NyEFiyFHEHC+sizsZp9MEw1+RJRLX6U5RITvcsEgcajSkHQFafaBPzRrcxZMdm47Cwhl212LXcw== + dependencies: + "@sentry/types" "7.64.0" + "@sentry/utils" "7.64.0" + tslib "^2.4.1 || ^1.9.3" + +"@sentry/react@^7.64.0": + version "7.64.0" + resolved "https://registry.yarnpkg.com/@sentry/react/-/react-7.64.0.tgz#edee24ac232990204e0fb43dd83994642d4b0f54" + integrity sha512-wOyJUQi7OoT1q+F/fVVv1fzbyO4OYbTu6m1DliLOGQPGEHPBsgPc722smPIExd1/rAMK/FxOuNN5oNhubH8nhg== + dependencies: + "@sentry/browser" "7.64.0" + "@sentry/types" "7.64.0" + "@sentry/utils" "7.64.0" + hoist-non-react-statics "^3.3.2" + tslib "^2.4.1 || ^1.9.3" + +"@sentry/replay@7.64.0": + version "7.64.0" + resolved "https://registry.yarnpkg.com/@sentry/replay/-/replay-7.64.0.tgz#bdf09b0c4712f9dc6b24b3ebefa55a4ac76708e6" + integrity sha512-alaMCZDZhaAVmEyiUnszZnvfdbiZx5MmtMTGrlDd7tYq3K5OA9prdLqqlmfIJYBfYtXF3lD0iZFphOZQD+4CIw== + dependencies: + "@sentry/core" "7.64.0" + "@sentry/types" "7.64.0" + "@sentry/utils" "7.64.0" + +"@sentry/types@7.64.0": + version "7.64.0" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.64.0.tgz#21fc545ea05c3c8c4c3e518583eca1a8c5429506" + integrity sha512-LqjQprWXjUFRmzIlUjyA+KL+38elgIYmAeoDrdyNVh8MK5IC1W2Lh1Q87b4yOiZeMiIhIVNBd7Ecoh2rodGrGA== + +"@sentry/utils@7.64.0": + version "7.64.0" + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.64.0.tgz#6fe3ce9a56d3433ed32119f914907361a54cc184" + integrity sha512-HRlM1INzK66Gt+F4vCItiwGKAng4gqzCR4C5marsL3qv6SrKH98dQnCGYgXluSWaaa56h97FRQu7TxCk6jkSvQ== + dependencies: + "@sentry/types" "7.64.0" + tslib "^2.4.1 || ^1.9.3" + "@sinclair/typebox@^0.27.8": version "0.27.8" resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz" @@ -1825,7 +1889,7 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" -hoist-non-react-statics@^3.3.1: +hoist-non-react-statics@^3.3.1, hoist-non-react-statics@^3.3.2: version "3.3.2" resolved "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz" integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== @@ -2631,6 +2695,11 @@ tslib@^2.0.0, tslib@^2.1.0, tslib@^2.4.0: resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz" integrity sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA== +"tslib@^2.4.1 || ^1.9.3": + version "2.6.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.1.tgz#fd8c9a0ff42590b25703c0acb3de3d3f4ede0410" + integrity sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig== + type-fest@^0.21.3: version "0.21.3" resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz"