From 75d9d4635b84dcd2fc437180fd600abd3ee6d9f0 Mon Sep 17 00:00:00 2001 From: Lucas Santana Date: Sat, 11 Jan 2025 13:54:02 -0300 Subject: [PATCH] feat: Sentry implementado --- netlify.toml | 4 +- package-lock.json | 108 ++++++++++++++++++++++++++++++++++++++++++++++ package.json | 1 + src/main.tsx | 30 +++++++++++++ 4 files changed, 141 insertions(+), 2 deletions(-) diff --git a/netlify.toml b/netlify.toml index 1fd9d7e..1e2f368 100644 --- a/netlify.toml +++ b/netlify.toml @@ -23,9 +23,9 @@ Referrer-Policy = "strict-origin-when-cross-origin" Content-Security-Policy = """ default-src 'self'; - connect-src 'self' https://bsjlbnyslxzsdwxvkaap.supabase.co wss://bsjlbnyslxzsdwxvkaap.supabase.co; + connect-src 'self' https://bsjlbnyslxzsdwxvkaap.supabase.co wss://bsjlbnyslxzsdwxvkaap.supabase.co *.sentry.io *.ingest.sentry.io; img-src 'self' data: https: blob:; - script-src 'self' 'unsafe-inline' 'unsafe-eval' https://bsjlbnyslxzsdwxvkaap.supabase.co; + script-src 'self' 'unsafe-inline' 'unsafe-eval' https://bsjlbnyslxzsdwxvkaap.supabase.co *.sentry-cdn.com; style-src 'self' 'unsafe-inline'; frame-src 'self' https://bsjlbnyslxzsdwxvkaap.supabase.co; font-src 'self' data:; diff --git a/package-lock.json b/package-lock.json index edf6ee8..9f178b4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,6 +14,7 @@ "@radix-ui/react-dialog": "^1.1.4", "@radix-ui/react-tabs": "^1.1.2", "@radix-ui/react-toast": "^1.2.4", + "@sentry/react": "^8.48.0", "@supabase/supabase-js": "^2.39.7", "@tanstack/react-query": "^5.62.8", "@testing-library/react": "^16.1.0", @@ -2556,6 +2557,98 @@ "url": "https://ko-fi.com/killymxi" } }, + "node_modules/@sentry-internal/browser-utils": { + "version": "8.48.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-8.48.0.tgz", + "integrity": "sha512-pLtu0Fa1Ou0v3M1OEO1MB1EONJVmXEGtoTwFRCO1RPQI2ulmkG6BikINClFG5IBpoYKZ33WkEXuM6U5xh+pdZg==", + "license": "MIT", + "dependencies": { + "@sentry/core": "8.48.0" + }, + "engines": { + "node": ">=14.18" + } + }, + "node_modules/@sentry-internal/feedback": { + "version": "8.48.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-8.48.0.tgz", + "integrity": "sha512-6PwcJNHVPg0EfZxmN+XxVOClfQpv7MBAweV8t9i5l7VFr8sM/7wPNSeU/cG7iK19Ug9ZEkBpzMOe3G4GXJ5bpw==", + "license": "MIT", + "dependencies": { + "@sentry/core": "8.48.0" + }, + "engines": { + "node": ">=14.18" + } + }, + "node_modules/@sentry-internal/replay": { + "version": "8.48.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-8.48.0.tgz", + "integrity": "sha512-csILVupc5RkrsTrncuUTGmlB56FQSFjXPYWG8I8yBTGlXEJ+o8oTuF6+55R4vbw3EIzBveXWi4kEBbnQlXW/eg==", + "license": "MIT", + "dependencies": { + "@sentry-internal/browser-utils": "8.48.0", + "@sentry/core": "8.48.0" + }, + "engines": { + "node": ">=14.18" + } + }, + "node_modules/@sentry-internal/replay-canvas": { + "version": "8.48.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-8.48.0.tgz", + "integrity": "sha512-LdivLfBXXB9us1aAc6XaL7/L2Ob4vi3C/fEOXElehg3qHjX6q6pewiv5wBvVXGX1NfZTRvu+X11k6TZoxKsezw==", + "license": "MIT", + "dependencies": { + "@sentry-internal/replay": "8.48.0", + "@sentry/core": "8.48.0" + }, + "engines": { + "node": ">=14.18" + } + }, + "node_modules/@sentry/browser": { + "version": "8.48.0", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-8.48.0.tgz", + "integrity": "sha512-fuuVULB5/1vI8NoIwXwR3xwhJJqk+y4RdSdajExGF7nnUDBpwUJyXsmYJnOkBO+oLeEs58xaCpotCKiPUNnE3g==", + "license": "MIT", + "dependencies": { + "@sentry-internal/browser-utils": "8.48.0", + "@sentry-internal/feedback": "8.48.0", + "@sentry-internal/replay": "8.48.0", + "@sentry-internal/replay-canvas": "8.48.0", + "@sentry/core": "8.48.0" + }, + "engines": { + "node": ">=14.18" + } + }, + "node_modules/@sentry/core": { + "version": "8.48.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-8.48.0.tgz", + "integrity": "sha512-VGwYgTfLpvJ5LRO5A+qWo1gpo6SfqaGXL9TOzVgBucAdpzbrYHpZ87sEarDVq/4275uk1b0S293/mfsskFczyw==", + "license": "MIT", + "engines": { + "node": ">=14.18" + } + }, + "node_modules/@sentry/react": { + "version": "8.48.0", + "resolved": "https://registry.npmjs.org/@sentry/react/-/react-8.48.0.tgz", + "integrity": "sha512-J8XAUOJYbsjXnowTEXE+zWJWLWUzQGP8kMb+smoGdRzFJwwXKrbE709Kr/Boz6rK48EbbRT4UUINoTbHgL3RHQ==", + "license": "MIT", + "dependencies": { + "@sentry/browser": "8.48.0", + "@sentry/core": "8.48.0", + "hoist-non-react-statics": "^3.3.2" + }, + "engines": { + "node": ">=14.18" + }, + "peerDependencies": { + "react": "^16.14.0 || 17.x || 18.x || 19.x" + } + }, "node_modules/@sinclair/typebox": { "version": "0.27.8", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", @@ -5565,6 +5658,21 @@ "node": ">= 0.4" } }, + "node_modules/hoist-non-react-statics": { + "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==", + "license": "BSD-3-Clause", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/hoist-non-react-statics/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, "node_modules/html-to-text": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/html-to-text/-/html-to-text-9.0.5.tgz", diff --git a/package.json b/package.json index 564e8e3..abda08d 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,7 @@ "@radix-ui/react-dialog": "^1.1.4", "@radix-ui/react-tabs": "^1.1.2", "@radix-ui/react-toast": "^1.2.4", + "@sentry/react": "^8.48.0", "@supabase/supabase-js": "^2.39.7", "@tanstack/react-query": "^5.62.8", "@testing-library/react": "^16.1.0", diff --git a/src/main.tsx b/src/main.tsx index 62214dd..2ed1204 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -2,10 +2,40 @@ import { StrictMode } from 'react'; import { createRoot } from 'react-dom/client'; import { RouterProvider } from 'react-router-dom'; import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; +import * as Sentry from "@sentry/react"; import { router } from './routes'; import { Toaster } from './components/ui/toaster'; import './index.css'; +// Inicialização do Sentry +Sentry.init({ + dsn: "https://6c15876055bf4a860c1b63a8e4e7ca65@o544400.ingest.us.sentry.io/4508626073092096", + integrations: [ + Sentry.browserTracingIntegration(), + Sentry.replayIntegration(), + ], + // Configurações de ambiente + environment: import.meta.env.MODE, + // Tracing + tracesSampleRate: import.meta.env.DEV ? 1.0 : 0.2, // 100% em dev, 20% em prod + tracePropagationTargets: [ + "localhost", + "historiasmagicas.netlify.app", + "bsjlbnyslxzsdwxvkaap.supabase.co" + ], + // Session Replay + replaysSessionSampleRate: import.meta.env.DEV ? 1.0 : 0.1, // 100% em dev, 10% em prod + replaysOnErrorSampleRate: 1.0, + // Configurações adicionais + beforeSend(event) { + // Não enviar eventos em desenvolvimento + if (import.meta.env.DEV) { + return null; + } + return event; + }, +}); + const queryClient = new QueryClient({ defaultOptions: { queries: {