diff --git a/.gitignore b/.gitignore index 488a0281c..663acb445 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,4 @@ # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. -*.DS_Store # dependencies /node_modules diff --git a/next.config.js b/next.config.js index 5df7d844e..549114db3 100644 --- a/next.config.js +++ b/next.config.js @@ -1,74 +1,20 @@ const withPWA = require('next-pwa') -const SentryWebpackPlugin = require('@sentry/webpack-plugin') +const { withSentryConfig } = require('@sentry/nextjs') -const { - NEXT_PUBLIC_SENTRY_DSN: SENTRY_DSN, - SENTRY_ORG, - SENTRY_PROJECT, - SENTRY_AUTH_TOKEN, - NODE_ENV, - VERCEL_GIT_COMMIT_SHA, - SUPABASE_KEY, - SUPABASE_URL, - GA_MEASUREMENT_ID, -} = process.env +const SentryWebpackPluginOptions = { + silent: process.env.NODE_ENV === 'development', +} -process.env.SENTRY_DSN = SENTRY_DSN - -const basePath = '' - -module.exports = withPWA({ - future: { - webpack5: true, - }, - pwa: { - dest: 'public', - scope: '/', - disable: process.env.NODE_ENV === 'development', - }, - - productionBrowserSourceMaps: true, - env: { - NEXT_PUBLIC_COMMIT_SHA: VERCEL_GIT_COMMIT_SHA, - SUPABASE_KEY: SUPABASE_KEY, - SUPABASE_URL: SUPABASE_URL, - GA_MEASUREMENT_ID: GA_MEASUREMENT_ID, - }, - webpack: (config, options) => { - if (!options.isServer) { - config.resolve.alias['@sentry/node'] = '@sentry/browser' - } - - config.plugins.push( - new options.webpack.DefinePlugin({ - 'process.env.NEXT_IS_SERVER': JSON.stringify( - options.isServer.toString() - ), - }) - ) - - if ( - SENTRY_DSN && - SENTRY_ORG && - SENTRY_PROJECT && - SENTRY_AUTH_TOKEN && - VERCEL_GIT_COMMIT_SHA && - NODE_ENV === 'production' - ) { - config.plugins.push( - new SentryWebpackPlugin({ - include: '.next', - ignore: ['node_modules'], - stripPrefix: ['webpack://_N_E/'], - urlPrefix: `~${basePath}/_next`, - release: VERCEL_GIT_COMMIT_SHA, - authToken: SENTRY_AUTH_TOKEN, - org: SENTRY_PROJECT, - project: SENTRY_ORG, - }) - ) - } - return config - }, - basePath, -}) +module.exports = withSentryConfig( + withPWA({ + future: { + webpack5: true, + }, + pwa: { + dest: 'public', + scope: '/', + disable: process.env.NODE_ENV === 'development', + }, + }), + SentryWebpackPluginOptions +) diff --git a/pages/_app.tsx b/pages/_app.tsx index c805bc798..9ef607dfa 100644 --- a/pages/_app.tsx +++ b/pages/_app.tsx @@ -3,12 +3,10 @@ import { AppProps } from 'next/app' import { globalStyles } from 'styles' import 'styles/globals.css' import { Provider } from 'next-auth/client' -import { init } from 'utils/sentry' function MyApp({ Component, pageProps }: AppProps) { globalStyles() useGtag() - init() return ( diff --git a/sentry.client.config.js b/sentry.client.config.js new file mode 100644 index 000000000..46255988f --- /dev/null +++ b/sentry.client.config.js @@ -0,0 +1,14 @@ +// This file configures the initialization of Sentry on the browser. +// The config you add here will be used whenever a page is visited. +// https://docs.sentry.io/platforms/javascript/guides/nextjs/ + +import * as Sentry from '@sentry/nextjs'; + +const SENTRY_DSN = process.env.SENTRY_DSN || process.env.NEXT_PUBLIC_SENTRY_DSN; + +Sentry.init({ + dsn: SENTRY_DSN || 'https://d88435642612471d93823489a56ae053@o578706.ingest.sentry.io/5824198', + // Note: if you want to override the automatic release value, do not set a + // `release` value here - use the environment variable `SENTRY_RELEASE`, so + // that it will also get attached to your source maps +}); diff --git a/sentry.properties b/sentry.properties new file mode 100644 index 000000000..6b8ec057b --- /dev/null +++ b/sentry.properties @@ -0,0 +1,5 @@ +defaults.url=https://sentry.io/ +defaults.org=stephen-ruiz-ltd +defaults.project=tldraw +auth.token=ac78d09cacd9445abb362a84d071534aef34b84d39704b1fa03f271417b07d30 +cli.executable=../../../.npm/_npx/a8388072043b4cbc/node_modules/@sentry/cli/bin/sentry-cli diff --git a/sentry.server.config.js b/sentry.server.config.js new file mode 100644 index 000000000..314160d14 --- /dev/null +++ b/sentry.server.config.js @@ -0,0 +1,14 @@ +// This file configures the initialization of Sentry on the server. +// The config you add here will be used whenever the server handles a request. +// https://docs.sentry.io/platforms/javascript/guides/nextjs/ + +import * as Sentry from '@sentry/nextjs'; + +const SENTRY_DSN = process.env.SENTRY_DSN || process.env.NEXT_PUBLIC_SENTRY_DSN; + +Sentry.init({ + dsn: SENTRY_DSN || 'https://d88435642612471d93823489a56ae053@o578706.ingest.sentry.io/5824198', + // Note: if you want to override the automatic release value, do not set a + // `release` value here - use the environment variable `SENTRY_RELEASE`, so + // that it will also get attached to your source maps +}); diff --git a/utils/sentry.ts b/utils/sentry.ts deleted file mode 100644 index 1fbcd59c5..000000000 --- a/utils/sentry.ts +++ /dev/null @@ -1,32 +0,0 @@ -import * as Sentry from '@sentry/node' -import { RewriteFrames } from '@sentry/integrations' - -export const init = () => { - if (process.env.NEXT_PUBLIC_SENTRY_DSN) { - const integrations = [] - if ( - process.env.NEXT_IS_SERVER === 'true' && - process.env.NEXT_PUBLIC_SENTRY_SERVER_ROOT_DIR - ) { - integrations.push( - new RewriteFrames({ - iteratee: (frame) => { - frame.filename = frame.filename.replace( - process.env.NEXT_PUBLIC_SENTRY_SERVER_ROOT_DIR, - 'app:///' - ) - frame.filename = frame.filename.replace('.next', '_next') - return frame - }, - }) - ) - } - - Sentry.init({ - enabled: process.env.NODE_ENV === 'production', - integrations, - dsn: process.env.NEXT_PUBLIC_SENTRY_DSN, - release: process.env.NEXT_PUBLIC_COMMIT_SHA, - }) - } -}