diff --git a/package.json b/package.json index 5f2412b..408ea26 100644 --- a/package.json +++ b/package.json @@ -16,11 +16,13 @@ "convert-md-to-pdf": "yarn run md-to-pdf ./docs/*.md ./docs/**/*.md" }, "dependencies": { + "@sentry/react": "^7.114.0", + "@sentry/tracing": "^7.114.0", "autoprefixer": "^10.4.19", "i18next": "^23.11.4", "md-to-pdf": "^5.2.4", "postcss": "^8.4.38", - "react": "^18.2.0", + "react": "^18.3.1", "react-dom": "^18.2.0", "react-i18next": "^14.1.1", "react-router-dom": "^6.23.0", @@ -57,7 +59,7 @@ "typedoc": "^0.25.13", "typedoc-plugin-markdown": "^3.17.1", "typedoc-plugin-mdn-links": "^3.1.22", - "typescript": "^5.2.2", + "typescript": "^5.4.5", "vite": "^5.2.0", "vite-plugin-eslint": "^1.8.1" }, diff --git a/src/main.tsx b/src/main.tsx index 5e757ba..b4eaf8b 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -1,10 +1,27 @@ import React from 'react'; import ReactDOM from 'react-dom/client'; import { App } from './app.tsx'; +import * as Sentry from '@sentry/react'; import { I18nextProvider } from 'react-i18next'; import i18n from './i18n'; + import './index.scss'; +Sentry.init({ + dsn: 'https://9fd06d22381ef360013d83b6b0c8375e@o4507214219313152.ingest.de.sentry.io/4507214225801296', + integrations: [ + Sentry.browserTracingIntegration(), + Sentry.replayIntegration(), + ], + // Performance Monitoring + tracesSampleRate: 1.0, // Capture 100% of the transactions + // Set 'tracePropagationTargets' to control for which URLs distributed tracing should be enabled + tracePropagationTargets: ['localhost', /^https:\/\/localhost:\d+\/api/], + // Session Replay + replaysSessionSampleRate: 0.1, + replaysOnErrorSampleRate: 1.0, +}); + const rootElement = document.getElementById('root') as HTMLElement; const root = ReactDOM.createRoot(rootElement); root.render( diff --git a/yarn.lock b/yarn.lock index c5da2f8..92c2de4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1711,6 +1711,106 @@ resolved "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.2.tgz" integrity sha512-hw437iINopmQuxWPSUEvqE56NCPsiU8N4AYtfHmJFckclktzK9YQJieD3XkDCDH4OjL+C7zgPUh73R/nrcHrqw== +"@sentry-internal/feedback@7.114.0": + version "7.114.0" + resolved "https://registry.yarnpkg.com/@sentry-internal/feedback/-/feedback-7.114.0.tgz#8a1c3d8bbd014c1823d30b9b1128eb244d357c3e" + integrity sha512-kUiLRUDZuh10QE9JbSVVLgqxFoD9eDPOzT0MmzlPuas8JlTmJuV4FtSANNcqctd5mBuLt2ebNXH0MhRMwyae4A== + dependencies: + "@sentry/core" "7.114.0" + "@sentry/types" "7.114.0" + "@sentry/utils" "7.114.0" + +"@sentry-internal/replay-canvas@7.114.0": + version "7.114.0" + resolved "https://registry.yarnpkg.com/@sentry-internal/replay-canvas/-/replay-canvas-7.114.0.tgz#b81e2c2ebec01c436ad6e687e563ba456e33b615" + integrity sha512-6rTiqmKi/FYtesdM2TM2U+rh6BytdPjLP65KTUodtxohJ+r/3m+termj2o4BhIYPE1YYOZNmbZfwebkuQPmWeg== + dependencies: + "@sentry/core" "7.114.0" + "@sentry/replay" "7.114.0" + "@sentry/types" "7.114.0" + "@sentry/utils" "7.114.0" + +"@sentry-internal/tracing@7.114.0": + version "7.114.0" + resolved "https://registry.yarnpkg.com/@sentry-internal/tracing/-/tracing-7.114.0.tgz#bdcd364f511e2de45db6e3004faf5685ca2e0f86" + integrity sha512-dOuvfJN7G+3YqLlUY4HIjyWHaRP8vbOgF+OsE5w2l7ZEn1rMAaUbPntAR8AF9GBA6j2zWNoSo8e7GjbJxVofSg== + dependencies: + "@sentry/core" "7.114.0" + "@sentry/types" "7.114.0" + "@sentry/utils" "7.114.0" + +"@sentry/browser@7.114.0": + version "7.114.0" + resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-7.114.0.tgz#b0741bff89189d16c8b19f0775fe6e078147ec33" + integrity sha512-ijJ0vOEY6U9JJADVYGkUbLrAbpGSQgA4zV+KW3tcsBLX9M1jaWq4BV1PWHdzDPPDhy4OgfOjIfaMb5BSPn1U+g== + dependencies: + "@sentry-internal/feedback" "7.114.0" + "@sentry-internal/replay-canvas" "7.114.0" + "@sentry-internal/tracing" "7.114.0" + "@sentry/core" "7.114.0" + "@sentry/integrations" "7.114.0" + "@sentry/replay" "7.114.0" + "@sentry/types" "7.114.0" + "@sentry/utils" "7.114.0" + +"@sentry/core@7.114.0": + version "7.114.0" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.114.0.tgz#3efe86b92a5379c44dfd0fd4685266b1a30fa898" + integrity sha512-YnanVlmulkjgZiVZ9BfY9k6I082n+C+LbZo52MTvx3FY6RE5iyiPMpaOh67oXEZRWcYQEGm+bKruRxLVP6RlbA== + dependencies: + "@sentry/types" "7.114.0" + "@sentry/utils" "7.114.0" + +"@sentry/integrations@7.114.0": + version "7.114.0" + resolved "https://registry.yarnpkg.com/@sentry/integrations/-/integrations-7.114.0.tgz#baf249cfa9e359510f41e486a75bf184db18927d" + integrity sha512-BJIBWXGKeIH0ifd7goxOS29fBA8BkEgVVCahs6xIOXBjX1IRS6PmX0zYx/GP23nQTfhJiubv2XPzoYOlZZmDxg== + dependencies: + "@sentry/core" "7.114.0" + "@sentry/types" "7.114.0" + "@sentry/utils" "7.114.0" + localforage "^1.8.1" + +"@sentry/react@^7.114.0": + version "7.114.0" + resolved "https://registry.yarnpkg.com/@sentry/react/-/react-7.114.0.tgz#aca57bbf943abe069c95f584184b5690bcb34733" + integrity sha512-zVPtvSy00Al25Z21f5GNzo3rd/TKS+iOX9wQwLrUZAxyf9RwBxKATLVJNJPkf8dQml6Qx+lfr0BHIlVcr1a1SQ== + dependencies: + "@sentry/browser" "7.114.0" + "@sentry/core" "7.114.0" + "@sentry/types" "7.114.0" + "@sentry/utils" "7.114.0" + hoist-non-react-statics "^3.3.2" + +"@sentry/replay@7.114.0": + version "7.114.0" + resolved "https://registry.yarnpkg.com/@sentry/replay/-/replay-7.114.0.tgz#f552e4803cacb233a2f5f2a4afbf5bed9052a744" + integrity sha512-UvEajoLIX9n2poeW3R4Ybz7D0FgCGXoFr/x/33rdUEMIdTypknxjJWxg6fJngIduzwrlrvWpvP8QiZXczYQy2Q== + dependencies: + "@sentry-internal/tracing" "7.114.0" + "@sentry/core" "7.114.0" + "@sentry/types" "7.114.0" + "@sentry/utils" "7.114.0" + +"@sentry/tracing@^7.114.0": + version "7.114.0" + resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-7.114.0.tgz#32a3438b0f2d02fb7b7359fe7712c5a349a2a329" + integrity sha512-eldEYGADReZ4jWdN5u35yxLUSTOvjsiZAYd4KBEpf+Ii65n7g/kYOKAjNl7tHbrEG1EsMW4nDPWStUMk1w+tfg== + dependencies: + "@sentry-internal/tracing" "7.114.0" + +"@sentry/types@7.114.0": + version "7.114.0" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.114.0.tgz#ab8009d5f6df23b7342121083bed34ee2452e856" + integrity sha512-tsqkkyL3eJtptmPtT0m9W/bPLkU7ILY7nvwpi1hahA5jrM7ppoU0IMaQWAgTD+U3rzFH40IdXNBFb8Gnqcva4w== + +"@sentry/utils@7.114.0": + version "7.114.0" + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.114.0.tgz#59d30a79f4acff3c9268de0b345f0bcbc6335112" + integrity sha512-319N90McVpupQ6vws4+tfCy/03AdtsU0MurIE4+W5cubHME08HtiEWlfacvAxX+yuKFhvdsO4K4BB/dj54ideg== + dependencies: + "@sentry/types" "7.114.0" + "@samverschueren/stream-to-observable@^0.3.0": version "0.3.1" resolved "https://registry.yarnpkg.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.1.tgz#a21117b19ee9be70c379ec1877537ef2e1c63301" @@ -1723,6 +1823,7 @@ resolved "https://registry.yarnpkg.com/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz#db4ecfd499a9765ab24002c3b696d02e6d32a12c" integrity sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA== + "@types/babel__core@^7.20.5": version "7.20.5" resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz" @@ -3970,6 +4071,14 @@ hasown@^2.0.0, hasown@^2.0.1, hasown@^2.0.2: dependencies: function-bind "^1.1.2" + +hoist-non-react-statics@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== + dependencies: + react-is "^16.7.0" + highlight.js@^11.7.0: version "11.9.0" resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-11.9.0.tgz#04ab9ee43b52a41a047432c8103e2158a1b8b5b0" @@ -4044,6 +4153,11 @@ ignore@^5.2.0, ignore@^5.3.1: resolved "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz" integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== +immediate@~3.0.5: + version "3.0.6" + resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" + integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ== + immutable@^4.0.0: version "4.3.5" resolved "https://registry.npmjs.org/immutable/-/immutable-4.3.5.tgz" @@ -4545,6 +4659,13 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" +lie@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e" + integrity sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw== + dependencies: + immediate "~3.0.5" + lilconfig@3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-3.0.0.tgz" @@ -4567,7 +4688,7 @@ lines-and-columns@^1.1.6: lint-staged@^15.2.2: version "15.2.2" - resolved "https://registry.npmjs.org/lint-staged/-/lint-staged-15.2.2.tgz" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-15.2.2.tgz#ad7cbb5b3ab70e043fa05bff82a09ed286bc4c5f" integrity sha512-TiTt93OPh1OZOsb5B7k96A/ATl2AjIZo+vnzFZ6oHK5FuTk63ByDtxGQpHm+kFETjEWqgkF95M8FRXKR/LEBcw== dependencies: chalk "5.3.0" @@ -4622,6 +4743,13 @@ listr2@8.0.1: rfdc "^1.3.0" wrap-ansi "^9.0.0" +localforage@^1.8.1: + version "1.10.0" + resolved "https://registry.yarnpkg.com/localforage/-/localforage-1.10.0.tgz#5c465dc5f62b2807c3a84c0c6a1b1b3212781dd4" + integrity sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg== + dependencies: + lie "3.1.1" + listr@^0.14.3: version "0.14.3" resolved "https://registry.yarnpkg.com/listr/-/listr-0.14.3.tgz#2fea909604e434be464c50bddba0d496928fa586" @@ -4637,6 +4765,7 @@ listr@^0.14.3: p-map "^2.0.0" rxjs "^6.3.3" + locate-path@^6.0.0: version "6.0.0" resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" @@ -5429,7 +5558,7 @@ react-i18next@^14.1.1: react-is@^16.13.1: version "16.13.1" - resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== react-refresh@^0.14.0: @@ -5452,10 +5581,10 @@ react-router@6.23.0: dependencies: "@remix-run/router" "1.16.0" -react@^18.2.0: - version "18.2.0" - resolved "https://registry.npmjs.org/react/-/react-18.2.0.tgz" - integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== +react@^18.3.1: + version "18.3.1" + resolved "https://registry.yarnpkg.com/react/-/react-18.3.1.tgz#49ab892009c53933625bd16b2533fc754cab2891" + integrity sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ== dependencies: loose-envify "^1.1.0" @@ -6425,9 +6554,9 @@ typedoc@^0.25.13: minimatch "^9.0.3" shiki "^0.14.7" -typescript@^5.2.2: +typescript@^5.4.5: version "5.4.5" - resolved "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.5.tgz#42ccef2c571fdbd0f6718b1d1f5e6e5ef006f611" integrity sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ== uglify-js@^3.1.4: