From bdc8893a72dde7cd70f32944e5a02cea7bd4a32a Mon Sep 17 00:00:00 2001 From: uonr Date: Sat, 21 Dec 2024 12:50:18 +0900 Subject: [PATCH] feat(site): sentry --- apps/site/next.config.js | 18 ++- apps/site/package.json | 1 + apps/site/sentry.edge.config.ts | 12 ++ apps/site/sentry.server.config.ts | 12 ++ apps/site/src/app/[lang]/echo/page.tsx | 4 +- apps/spa/next.config.js | 2 +- package-lock.json | 190 ++++++++++++++----------- 7 files changed, 148 insertions(+), 91 deletions(-) create mode 100644 apps/site/sentry.edge.config.ts create mode 100644 apps/site/sentry.server.config.ts diff --git a/apps/site/next.config.js b/apps/site/next.config.js index e9c546e0..5a8dac6e 100644 --- a/apps/site/next.config.js +++ b/apps/site/next.config.js @@ -1,5 +1,6 @@ const path = require('path'); const withBundleAnalyzer = require('@next/bundle-analyzer')(); +const { withSentryConfig } = require('@sentry/nextjs'); const BACKEND_URL = process.env.BACKEND_URL; const STANDALONE = process.env.STANDALONE === 'true'; if (!BACKEND_URL) { @@ -27,6 +28,7 @@ const config = { BACKEND_URL: process.env.BACKEND_URL, APP_URL: process.env.APP_URL, DOMAIN: process.env.DOMAIN, + SENTRY_DSN: process.env.SENTRY_DSN, }, transpilePackages: ['@boluo/ui', '@boluo/common'], experimental: { @@ -43,4 +45,18 @@ const config = { }, }; -module.exports = process.env.ANALYZE === 'true' ? withBundleAnalyzer(config) : config; +if (process.env.SENTRY_DSN) { + module.exports = withSentryConfig(config, { + org: 'mythal' ?? process.env.SENTRY_ORG, + sentryUrl: process.env.SENTRY_URL ?? 'https://sentry.io/', + project: 'boluo-site' ?? process.env.SENTRY_PROJECT_SITE, + disableLogger: true, + authToken: process.env.SENTRY_TOKEN, + widenClientFileUpload: true, + silent: true, + }); +} else if (process.env.ANALYZE === 'true') { + module.exports = withBundleAnalyzer(config); +} else { + module.exports = config; +} diff --git a/apps/site/package.json b/apps/site/package.json index 614e5121..d3c82b62 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -24,6 +24,7 @@ "@boluo/utils": "*", "@formatjs/intl": "^3.0.4", "@next/mdx": "^14.1.1", + "@sentry/nextjs": "^8.47.0", "clsx": "^2.1.0", "jotai": "^2.7.0", "negotiator": "^1.0.0", diff --git a/apps/site/sentry.edge.config.ts b/apps/site/sentry.edge.config.ts new file mode 100644 index 00000000..c1bf5e11 --- /dev/null +++ b/apps/site/sentry.edge.config.ts @@ -0,0 +1,12 @@ +import * as Sentry from '@sentry/nextjs'; + +Sentry.init({ + dsn: process.env.SENTRY_DSN, + + // Set tracesSampleRate to 1.0 to capture 100% + // of transactions for tracing. + // We recommend adjusting this value in production + // Learn more at + // https://docs.sentry.io/platforms/javascript/configuration/options/#traces-sample-rate + tracesSampleRate: 1.0, +}); diff --git a/apps/site/sentry.server.config.ts b/apps/site/sentry.server.config.ts new file mode 100644 index 00000000..c1bf5e11 --- /dev/null +++ b/apps/site/sentry.server.config.ts @@ -0,0 +1,12 @@ +import * as Sentry from '@sentry/nextjs'; + +Sentry.init({ + dsn: process.env.SENTRY_DSN, + + // Set tracesSampleRate to 1.0 to capture 100% + // of transactions for tracing. + // We recommend adjusting this value in production + // Learn more at + // https://docs.sentry.io/platforms/javascript/configuration/options/#traces-sample-rate + tracesSampleRate: 1.0, +}); diff --git a/apps/site/src/app/[lang]/echo/page.tsx b/apps/site/src/app/[lang]/echo/page.tsx index ea8e2f5f..24143093 100644 --- a/apps/site/src/app/[lang]/echo/page.tsx +++ b/apps/site/src/app/[lang]/echo/page.tsx @@ -1,6 +1,6 @@ -import { Metadata } from 'next'; +import { type Metadata } from 'next'; import { cookies, headers } from 'next/headers'; -import { getIntl, LangParams } from '@boluo/common/server'; +import { getIntl, type LangParams } from '@boluo/common/server'; export function generateMetadata({ params }: { params: LangParams }): Metadata { const intl = getIntl(params); diff --git a/apps/spa/next.config.js b/apps/spa/next.config.js index 75696a38..6b82ae12 100644 --- a/apps/spa/next.config.js +++ b/apps/spa/next.config.js @@ -30,7 +30,7 @@ if (process.env.SENTRY_DSN) { module.exports = withSentryConfig(config, { org: 'mythal' ?? process.env.SENTRY_ORG, sentryUrl: process.env.SENTRY_URL ?? 'https://sentry.io/', - project: 'boluo-app' ?? process.env.SENTRY_PROJECT, + project: 'boluo-spa' ?? process.env.SENTRY_PROJECT, autoInstrumentServerFunctions: false, autoInstrumentMiddleware: false, disableLogger: true, diff --git a/package-lock.json b/package-lock.json index e261da7a..b8dc64de 100644 --- a/package-lock.json +++ b/package-lock.json @@ -118,6 +118,7 @@ "@boluo/utils": "*", "@formatjs/intl": "^3.0.4", "@next/mdx": "^14.1.1", + "@sentry/nextjs": "^8.47.0", "clsx": "^2.1.0", "jotai": "^2.7.0", "negotiator": "^1.0.0", @@ -4677,9 +4678,9 @@ } }, "node_modules/@opentelemetry/context-async-hooks": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.29.0.tgz", - "integrity": "sha512-TKT91jcFXgHyIDF1lgJF3BHGIakn6x0Xp7Tq3zoS3TMPzT9IlP0xEavWP8C1zGjU9UmZP2VR1tJhW9Az1A3w8Q==", + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.30.0.tgz", + "integrity": "sha512-roCetrG/cz0r/gugQm/jFo75UxblVvHaNSRoR0kSSRSzXFAiIBqFCZuH458BHBNRtRe+0yJdIJ21L9t94bw7+g==", "license": "Apache-2.0", "engines": { "node": ">=14" @@ -4689,9 +4690,9 @@ } }, "node_modules/@opentelemetry/core": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.29.0.tgz", - "integrity": "sha512-gmT7vAreXl0DTHD2rVZcw3+l2g84+5XiHIqdBUxXbExymPCvSsGOpiwMmn8nkiJur28STV31wnhIDrzWDPzjfA==", + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.30.0.tgz", + "integrity": "sha512-Q/3u/K73KUjTCnFUP97ZY+pBjQ1kPEgjOfXj/bJl8zW7GbXdkw6cwuyZk6ZTXkVgCBsYRYUzx4fvYK1jxdb9MA==", "license": "Apache-2.0", "dependencies": { "@opentelemetry/semantic-conventions": "1.28.0" @@ -4889,6 +4890,21 @@ "@opentelemetry/api": "^1.3.0" } }, + "node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.29.0.tgz", + "integrity": "sha512-gmT7vAreXl0DTHD2rVZcw3+l2g84+5XiHIqdBUxXbExymPCvSsGOpiwMmn8nkiJur28STV31wnhIDrzWDPzjfA==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "1.28.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, "node_modules/@opentelemetry/instrumentation-ioredis": { "version": "0.46.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-ioredis/-/instrumentation-ioredis-0.46.0.tgz", @@ -5142,12 +5158,12 @@ } }, "node_modules/@opentelemetry/resources": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.29.0.tgz", - "integrity": "sha512-s7mLXuHZE7RQr1wwweGcaRp3Q4UJJ0wazeGlc/N5/XSe6UyXfsh1UQGMADYeg7YwD+cEdMtU1yJAUXdnFzYzyQ==", + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.30.0.tgz", + "integrity": "sha512-5mGMjL0Uld/99t7/pcd7CuVtJbkARckLVuiOX84nO8RtLtIz0/J6EOHM2TGvPZ6F4K+XjUq13gMx14w80SVCQg==", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "1.29.0", + "@opentelemetry/core": "1.30.0", "@opentelemetry/semantic-conventions": "1.28.0" }, "engines": { @@ -5158,13 +5174,13 @@ } }, "node_modules/@opentelemetry/sdk-trace-base": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.29.0.tgz", - "integrity": "sha512-hEOpAYLKXF3wGJpXOtWsxEtqBgde0SCv+w+jvr3/UusR4ll3QrENEGnSl1WDCyRrpqOQ5NCNOvZch9UFVa7MnQ==", + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.30.0.tgz", + "integrity": "sha512-RKQDaDIkV7PwizmHw+rE/FgfB2a6MBx+AEVVlAHXRG1YYxLiBpPX2KhmoB99R5vA4b72iJrjle68NDWnbrE9Dg==", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "1.29.0", - "@opentelemetry/resources": "1.29.0", + "@opentelemetry/core": "1.30.0", + "@opentelemetry/resources": "1.30.0", "@opentelemetry/semantic-conventions": "1.28.0" }, "engines": { @@ -5217,20 +5233,20 @@ "license": "MIT" }, "node_modules/@prisma/instrumentation": { - "version": "5.19.1", - "resolved": "https://registry.npmjs.org/@prisma/instrumentation/-/instrumentation-5.19.1.tgz", - "integrity": "sha512-VLnzMQq7CWroL5AeaW0Py2huiNKeoMfCH3SUxstdzPrlWQi6UQ9UrfcbUkNHlVFqOMacqy8X/8YtE0kuKDpD9w==", + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@prisma/instrumentation/-/instrumentation-5.22.0.tgz", + "integrity": "sha512-LxccF392NN37ISGxIurUljZSh1YWnphO34V5a0+T7FVQG2u9bhAXRTJpgmQ3483woVhkraQZFF7cbRrpbw/F4Q==", "license": "Apache-2.0", "dependencies": { "@opentelemetry/api": "^1.8", - "@opentelemetry/instrumentation": "^0.49 || ^0.50 || ^0.51 || ^0.52.0", + "@opentelemetry/instrumentation": "^0.49 || ^0.50 || ^0.51 || ^0.52.0 || ^0.53.0", "@opentelemetry/sdk-trace-base": "^1.22" } }, "node_modules/@prisma/instrumentation/node_modules/@opentelemetry/api-logs": { - "version": "0.52.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.52.1.tgz", - "integrity": "sha512-qnSqB2DQ9TPP96dl8cDubDvrUyWc0/sK81xHTK8eSUspzDM3bsewX903qclQFvVhgStjRWdC5bLb3kQqMkfV5A==", + "version": "0.53.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.53.0.tgz", + "integrity": "sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw==", "license": "Apache-2.0", "dependencies": { "@opentelemetry/api": "^1.0.0" @@ -5240,13 +5256,13 @@ } }, "node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation": { - "version": "0.52.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.52.1.tgz", - "integrity": "sha512-uXJbYU/5/MBHjMp1FqrILLRuiJCs3Ofk0MeRDk8g1S1gD47U8X3JnSwcMO1rtRo1x1a7zKaQHaoYu49p/4eSKw==", + "version": "0.53.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.53.0.tgz", + "integrity": "sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A==", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/api-logs": "0.52.1", - "@types/shimmer": "^1.0.2", + "@opentelemetry/api-logs": "0.53.0", + "@types/shimmer": "^1.2.0", "import-in-the-middle": "^1.8.1", "require-in-the-middle": "^7.1.1", "semver": "^7.5.2", @@ -5632,50 +5648,50 @@ "license": "MIT" }, "node_modules/@sentry-internal/browser-utils": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-8.43.0.tgz", - "integrity": "sha512-5WhJZ3SA5sZVDBwOsChDd5JCzYcwBX7sEqBqEcm3pFru6TUihEnFIJmDIbreIyrQMwUhs3dTxnfnidgjr5z1Ag==", + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-8.47.0.tgz", + "integrity": "sha512-vOXzYzHTKkahTLDzWWIA4EiVCQ+Gk+7xGWUlNcR2ZiEPBqYZVb5MjsUozAcc7syrSUy6WicyFjcomZ3rlCVQhg==", "license": "MIT", "dependencies": { - "@sentry/core": "8.43.0" + "@sentry/core": "8.47.0" }, "engines": { "node": ">=14.18" } }, "node_modules/@sentry-internal/feedback": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-8.43.0.tgz", - "integrity": "sha512-rcGR2kzFu4vLXBQbI9eGJwjyToyjl36O2q/UKbiZBNJ5IFtDvKRLke6jIHq/YqiHPfFGpVtq5M/lYduDfA/eaQ==", + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-8.47.0.tgz", + "integrity": "sha512-IAiIemTQIalxAOYhUENs9bZ8pMNgJnX3uQSuY7v0gknEqClOGpGkG04X/cxCmtJUj1acZ9ShTGDxoh55a+ggAQ==", "license": "MIT", "dependencies": { - "@sentry/core": "8.43.0" + "@sentry/core": "8.47.0" }, "engines": { "node": ">=14.18" } }, "node_modules/@sentry-internal/replay": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-8.43.0.tgz", - "integrity": "sha512-geV5/zejLfGGwWHjylzrb1w8NI3U37GMG9/53nmv13FmTXUDF5XF2lh41KXFVYwvp7Ha4bd1FRQ9IU9YtBWskw==", + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-8.47.0.tgz", + "integrity": "sha512-G/S40ZBORj0HSMLw/uVC6YDEPN/dqVk901vf4VYfml686DEhJrZesfAfp5SydJumQ0NKZQrdtvny+BWnlI5H1w==", "license": "MIT", "dependencies": { - "@sentry-internal/browser-utils": "8.43.0", - "@sentry/core": "8.43.0" + "@sentry-internal/browser-utils": "8.47.0", + "@sentry/core": "8.47.0" }, "engines": { "node": ">=14.18" } }, "node_modules/@sentry-internal/replay-canvas": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-8.43.0.tgz", - "integrity": "sha512-rL8G7E1GtozH8VNalRrBQNjYDJ5ChWS/vpQI5hUG11PZfvQFXEVatLvT3uO2l0xIlHm4idTsHOSLTe/usxnogQ==", + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-8.47.0.tgz", + "integrity": "sha512-M4W9UGouEeELbGbP3QsXLDVtGiQSZoWJlKwqMWyqdQgZuLoKw0S33+60t6teLVMhuQZR0UI9VJTF5coiXysnnA==", "license": "MIT", "dependencies": { - "@sentry-internal/replay": "8.43.0", - "@sentry/core": "8.43.0" + "@sentry-internal/replay": "8.47.0", + "@sentry/core": "8.47.0" }, "engines": { "node": ">=14.18" @@ -5691,16 +5707,16 @@ } }, "node_modules/@sentry/browser": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-8.43.0.tgz", - "integrity": "sha512-LGvLLnfmR8+AEgFmd7Q7KHiOTiV0P1Lvio2ENDELhEqJOIiICauttibVmig+AW02qg4kMeywvleMsUYaZv2RVA==", + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-8.47.0.tgz", + "integrity": "sha512-K6BzHisykmbFy/wORtGyfsAlw7ShevLALzu3ReZZZ18dVubO1bjSNjkZQU9MJD5Jcb9oLwkq89n3N9XIBfvdRA==", "license": "MIT", "dependencies": { - "@sentry-internal/browser-utils": "8.43.0", - "@sentry-internal/feedback": "8.43.0", - "@sentry-internal/replay": "8.43.0", - "@sentry-internal/replay-canvas": "8.43.0", - "@sentry/core": "8.43.0" + "@sentry-internal/browser-utils": "8.47.0", + "@sentry-internal/feedback": "8.47.0", + "@sentry-internal/replay": "8.47.0", + "@sentry-internal/replay-canvas": "8.47.0", + "@sentry/core": "8.47.0" }, "engines": { "node": ">=14.18" @@ -5924,29 +5940,29 @@ } }, "node_modules/@sentry/core": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-8.43.0.tgz", - "integrity": "sha512-ktyovtjkTMNud+kC/XfqHVCoQKreIKgx/hgeRvzPwuPyd1t1KzYmRL3DBkbcWVnyOPpVTHn+RsEI1eRcVYHtvw==", + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-8.47.0.tgz", + "integrity": "sha512-iSEJZMe3DOcqBFZQAqgA3NB2lCWBc4Gv5x/SCri/TVg96wAlss4VrUunSI2Mp0J4jJ5nJcJ2ChqHSBAU48k3FA==", "license": "MIT", "engines": { "node": ">=14.18" } }, "node_modules/@sentry/nextjs": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/@sentry/nextjs/-/nextjs-8.43.0.tgz", - "integrity": "sha512-dqTrLpuo9sDGK6G6qTbVlA+7eLSzK3g94p0szymDlavpl2su3h1517te9DM5sl/gbD1Ot9SLXqyOrbY+BUtECw==", + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@sentry/nextjs/-/nextjs-8.47.0.tgz", + "integrity": "sha512-qr++MBYhyAwF25hGq7LAxe3Xehs+w2V4b8mVxilRYFXNkWFazY1ukZcVzq9pKrrt5uTiURTf68e8eVMraHnHEQ==", "license": "MIT", "dependencies": { "@opentelemetry/api": "^1.9.0", "@opentelemetry/semantic-conventions": "^1.28.0", "@rollup/plugin-commonjs": "28.0.1", - "@sentry-internal/browser-utils": "8.43.0", - "@sentry/core": "8.43.0", - "@sentry/node": "8.43.0", - "@sentry/opentelemetry": "8.43.0", - "@sentry/react": "8.43.0", - "@sentry/vercel-edge": "8.43.0", + "@sentry-internal/browser-utils": "8.47.0", + "@sentry/core": "8.47.0", + "@sentry/node": "8.47.0", + "@sentry/opentelemetry": "8.47.0", + "@sentry/react": "8.47.0", + "@sentry/vercel-edge": "8.47.0", "@sentry/webpack-plugin": "2.22.7", "chalk": "3.0.0", "resolve": "1.22.8", @@ -5974,9 +5990,9 @@ } }, "node_modules/@sentry/node": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/@sentry/node/-/node-8.43.0.tgz", - "integrity": "sha512-qCQU9vFxf03ejw1h+qWJXCf0erV56HBi5xgi262lHiBLcRtuwj1xjufMVKOWX0sQEvAxzqpMZmqRE64lXLY4Ig==", + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-8.47.0.tgz", + "integrity": "sha512-tMzeU3KkmDi2OVvSu+Ah5pwoi7srsSyc1DovBbRQU96RFf/lOFzGe9JERa1MyDUqqLH95NqnPTNsa4Amb8/Vxg==", "license": "MIT", "dependencies": { "@opentelemetry/api": "^1.9.0", @@ -6010,9 +6026,9 @@ "@opentelemetry/resources": "^1.29.0", "@opentelemetry/sdk-trace-base": "^1.29.0", "@opentelemetry/semantic-conventions": "^1.28.0", - "@prisma/instrumentation": "5.19.1", - "@sentry/core": "8.43.0", - "@sentry/opentelemetry": "8.43.0", + "@prisma/instrumentation": "5.22.0", + "@sentry/core": "8.47.0", + "@sentry/opentelemetry": "8.47.0", "import-in-the-middle": "^1.11.2" }, "engines": { @@ -6020,12 +6036,12 @@ } }, "node_modules/@sentry/opentelemetry": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/@sentry/opentelemetry/-/opentelemetry-8.43.0.tgz", - "integrity": "sha512-Ey+z1+JuMsb+LNY5MddJhjJpCnmkVwGZwoc5T/wWfh+5WKnvZ5RSNwaUl71Ho0lpVhhejwuUtaNxc4Ilk1KjhA==", + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@sentry/opentelemetry/-/opentelemetry-8.47.0.tgz", + "integrity": "sha512-wunyBIUPeY6Kx3SFhOQqOPs+hyRADO5bztpo8aZ3N3xfzhefSTOdrgUroKvHx1DvoQO6MAlykcuUFps3yfaqmg==", "license": "MIT", "dependencies": { - "@sentry/core": "8.43.0" + "@sentry/core": "8.47.0" }, "engines": { "node": ">=14.18" @@ -6039,13 +6055,13 @@ } }, "node_modules/@sentry/react": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/@sentry/react/-/react-8.43.0.tgz", - "integrity": "sha512-PsTzLrYio/FOJU537Y5Gj9jJi7OMHEjdttsC9INUxy5062LOd8ObtHsjE0mopLaSYEwUfSROQOBZCwmISh8ByQ==", + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@sentry/react/-/react-8.47.0.tgz", + "integrity": "sha512-SRk2Up+qBTow4rQGiRXViC2i4M5w/tae5w8I/rmX+IxFoPyh8wXERcLAj/8xbbRm8aR+A4i5gNgfFtrYsyFJFA==", "license": "MIT", "dependencies": { - "@sentry/browser": "8.43.0", - "@sentry/core": "8.43.0", + "@sentry/browser": "8.47.0", + "@sentry/core": "8.47.0", "hoist-non-react-statics": "^3.3.2" }, "engines": { @@ -6056,13 +6072,13 @@ } }, "node_modules/@sentry/vercel-edge": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/@sentry/vercel-edge/-/vercel-edge-8.43.0.tgz", - "integrity": "sha512-xtHjpfNSXgRgq6185jEHdRBvVa3gDwaBPc+KYLTGmkn+hKGqwE3jEjUWHUZoMbTdrteJ/r6fiCyu+tZy8V8/SA==", + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@sentry/vercel-edge/-/vercel-edge-8.47.0.tgz", + "integrity": "sha512-oEVyoFehBnbao1aKd5OagkA5H2zowMsbgRZRPLFHELCSyoJbpShEM6L33rVvDz9xnkcaahuEO8op9U/4pUj1vA==", "license": "MIT", "dependencies": { "@opentelemetry/api": "^1.9.0", - "@sentry/core": "8.43.0" + "@sentry/core": "8.47.0" }, "engines": { "node": ">=14.18" @@ -15016,9 +15032,9 @@ } }, "node_modules/import-in-the-middle": { - "version": "1.11.3", - "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.11.3.tgz", - "integrity": "sha512-tNpKEb4AjZrCyrxi+Eyu43h5ig0O8ZRFSXPHh/00/o+4P4pKzVEW/m5lsVtsAT7fCIgmQOAPjdqecGDsBXRxsw==", + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.12.0.tgz", + "integrity": "sha512-yAgSE7GmtRcu4ZUSFX/4v69UGXwugFFSdIQJ14LHPOPPQrWv8Y7O9PHsw8Ovk7bKCLe4sjXMbZFqGFcLHpZ89w==", "license": "Apache-2.0", "dependencies": { "acorn": "^8.8.2",