feat: add sentry

This commit is contained in:
Paul Pan 2024-03-17 12:50:30 +08:00
parent 3e3425b2c6
commit e5f94f9219
3 changed files with 128 additions and 3 deletions

View File

@ -22,6 +22,7 @@
"@emotion/react": "^11.11.4",
"@emotion/styled": "^11.11.0",
"@reduxjs/toolkit": "^2.2.1",
"@sentry/react": "^7.107.0",
"@tanstack/react-table": "^8.13.2",
"ace-builds": "^1.32.7",
"framer-motion": "^11.0.14",

View File

@ -26,6 +26,9 @@ dependencies:
'@reduxjs/toolkit':
specifier: ^2.2.1
version: 2.2.1(react-redux@9.1.0)(react@18.2.0)
'@sentry/react':
specifier: ^7.107.0
version: 7.107.0(react@18.2.0)
'@tanstack/react-table':
specifier: ^8.13.2
version: 8.13.2(react-dom@18.2.0)(react@18.2.0)
@ -2372,6 +2375,91 @@ packages:
dev: true
optional: true
/@sentry-internal/feedback@7.107.0:
resolution: {integrity: sha512-okF0B9AJHrpkwNMxNs/Lffw3N5ZNbGwz4uvCfyOfnMxc7E2VfDM18QzUvTBRvNr3bA9wl+InJ+EMG3aZhyPunA==}
engines: {node: '>=12'}
dependencies:
'@sentry/core': 7.107.0
'@sentry/types': 7.107.0
'@sentry/utils': 7.107.0
dev: false
/@sentry-internal/replay-canvas@7.107.0:
resolution: {integrity: sha512-dmDL9g3QDfo7axBOsVnpiKdJ/DXrdeuRv1AqsLgwzJKvItsv0ZizX0u+rj5b1UoxcwbXRMxJ0hit5a1yt3t/ow==}
engines: {node: '>=12'}
dependencies:
'@sentry/core': 7.107.0
'@sentry/replay': 7.107.0
'@sentry/types': 7.107.0
'@sentry/utils': 7.107.0
dev: false
/@sentry-internal/tracing@7.107.0:
resolution: {integrity: sha512-le9wM8+OHBbq7m/8P7JUJ1UhSPIty+Z/HmRXc5Z64ODZcOwFV6TmDpYx729IXDdz36XUKmeI+BeM7yQdTTZPfQ==}
engines: {node: '>=8'}
dependencies:
'@sentry/core': 7.107.0
'@sentry/types': 7.107.0
'@sentry/utils': 7.107.0
dev: false
/@sentry/browser@7.107.0:
resolution: {integrity: sha512-KnqaQDhxv6w9dJ+mYLsNwPeGZfgbpM3vaismBNyJCKLgWn2V75kxkSq+bDX8LQT/13AyK7iFp317L6P8EuNa3g==}
engines: {node: '>=8'}
dependencies:
'@sentry-internal/feedback': 7.107.0
'@sentry-internal/replay-canvas': 7.107.0
'@sentry-internal/tracing': 7.107.0
'@sentry/core': 7.107.0
'@sentry/replay': 7.107.0
'@sentry/types': 7.107.0
'@sentry/utils': 7.107.0
dev: false
/@sentry/core@7.107.0:
resolution: {integrity: sha512-C7ogye6+KPyBi8NVL0P8Rxx3Ur7Td8ufnjxosVy678lqY+dcYPk/HONROrzUFYW5fMKWL4/KYnwP+x9uHnkDmw==}
engines: {node: '>=8'}
dependencies:
'@sentry/types': 7.107.0
'@sentry/utils': 7.107.0
dev: false
/@sentry/react@7.107.0(react@18.2.0):
resolution: {integrity: sha512-3sXNKcDQjEimxwBPnRkewy3xNLt3KqStMAdDZ/dAF3rviOSVyk80DCQ3P6+HIqeB+IAXqWptg4eSWRA1qNZquA==}
engines: {node: '>=8'}
peerDependencies:
react: 15.x || 16.x || 17.x || 18.x
dependencies:
'@sentry/browser': 7.107.0
'@sentry/core': 7.107.0
'@sentry/types': 7.107.0
'@sentry/utils': 7.107.0
hoist-non-react-statics: 3.3.2
react: 18.2.0
dev: false
/@sentry/replay@7.107.0:
resolution: {integrity: sha512-BNJDEVaEwr/YnV22qnyVA1almx/3p615m3+KaF8lPo7YleYgJGSJv1auH64j1G8INkrJ0J0wFBujb1EFjMYkxA==}
engines: {node: '>=12'}
dependencies:
'@sentry-internal/tracing': 7.107.0
'@sentry/core': 7.107.0
'@sentry/types': 7.107.0
'@sentry/utils': 7.107.0
dev: false
/@sentry/types@7.107.0:
resolution: {integrity: sha512-H7qcPjPSUWHE/Zf5bR1EE24G0pGVuJgrSx8Tvvl5nKEepswMYlbXHRVSDN0gTk/E5Z7cqf+hUBOpkQgZyps77w==}
engines: {node: '>=8'}
dev: false
/@sentry/utils@7.107.0:
resolution: {integrity: sha512-C6PbN5gHh73MRHohnReeQ60N8rrLYa9LciHue3Ru2290eSThg4CzsPnx4SzkGpkSeVlhhptKtKZ+hp/ha3iVuw==}
engines: {node: '>=8'}
dependencies:
'@sentry/types': 7.107.0
dev: false
/@sindresorhus/is@4.6.0:
resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==}
engines: {node: '>=10'}

View File

@ -1,12 +1,48 @@
import React from "react";
import React, { useEffect } from "react";
import { createRoot } from "react-dom/client";
import { createBrowserRouter, RouterProvider } from "react-router-dom";
import {
createBrowserRouter,
createRoutesFromChildren,
matchRoutes,
RouterProvider,
useLocation,
useNavigationType,
} from "react-router-dom";
import { Provider } from "react-redux";
import { ChakraProvider } from "@chakra-ui/react";
import * as Sentry from "@sentry/react";
import { store } from "./app/store";
import { router } from "./routes";
Sentry.init({
dsn:
import.meta.env.MODE === "production"
? "https://f06fbc2dbd7e593835d702419ff610bf@o4506423190355968.ingest.us.sentry.io/4506924460933120"
: "",
release: "woj-ui-2@" + import.meta.env.PACKAGE_VERSION,
integrations: [
Sentry.reactRouterV6BrowserTracingIntegration({
useEffect,
useLocation,
useNavigationType,
createRoutesFromChildren,
matchRoutes,
}),
// eslint-disable-next-line import/namespace
Sentry.replayIntegration({
maskAllText: false,
blockAllMedia: false,
}),
],
tracesSampleRate: 0.5,
tracePropagationTargets: ["localhost", /^https:\/\/oj\.0x7f\.app\/api/],
replaysSessionSampleRate: 0.1,
replaysOnErrorSampleRate: 1.0,
});
const sentryCreateBrowserRouter = Sentry.wrapCreateBrowserRouter(createBrowserRouter);
const container = document.getElementById("root");
if (container) {
@ -16,7 +52,7 @@ if (container) {
<React.StrictMode>
<Provider store={store}>
<ChakraProvider>
<RouterProvider router={createBrowserRouter(router)} />
<RouterProvider router={sentryCreateBrowserRouter(router)} />
</ChakraProvider>
</Provider>
</React.StrictMode>,