From c6ad30319f488ca20bb8340d8010948f77bc92ab Mon Sep 17 00:00:00 2001 From: Charly Gomez Date: Mon, 2 Feb 2026 19:06:37 +0100 Subject: [PATCH 1/7] rm toucan --- .../icons/cloudflare.png | Bin 1091 -> 0 bytes .../communitySupportedPlatforms/index.tsx | 6 ------ 2 files changed, 6 deletions(-) delete mode 100644 src/components/communitySupportedPlatforms/icons/cloudflare.png diff --git a/src/components/communitySupportedPlatforms/icons/cloudflare.png b/src/components/communitySupportedPlatforms/icons/cloudflare.png deleted file mode 100644 index d49f18e7e87d6ef229f3434efbce631f300f9e41..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1091 zcmV-J1ibr+P)G<1D*#qNx&mAf?Ii z+$M$6rXOjOv~kXFrb&A9{lDkl^AP|+5ClOG1VIo4K@bE%5ClOG1VI=9!W{D3Ru+Q) z4gnPbtZ|d-+U@Ee0bcUjd11Q_%#gVekZfh%pug)A?(svJF-~<2q(da*V##)0$e6hh z@TRPGJt8}%aJ{(vI^`AHJ%$XKsere(QXbF|Z(5KXP62QyD{GvYfT4I*csjo&h07wA zvJi150;ViphfGAwTtMwC8bDW&u6P}4_blQ|+pR-N7?3dy@IOH|;%U|vz(0T#$c8yl^04rW(Rs9@QG-a0N4j^Xe@~ zfvE&+1RhR7KA0v=9LU5&I1GmOAUEK-Uf!QtmJb-r#mI9sL5(+R2*$<2hi?wVWMT{S z2sR)`uoL^D*B%-hU5zHUTf~OogIB#fD_u8F-fTk*CKiy8UPFFxJ094eAq_`Qy_ zkhc{}!5CzoiOdEp>!lVYEYJ>zg)~}tb@%n{$Wb=A1p@wpe85G8Abc^r!f5dxF~RUF ztut$=_m1U6+QBk$pp5W}=Z#zpVGdvRI~5rsPhrg5!6Q6uo>)JgZ9286{bLE(u+;{& z(;-^Z_b12+g!{{7_x#~6S7#Gb(|L?%a{|;Vd2Wlfa`fzZ6GARSW^nJtRwc^Qg3$Q=K@}W># z>It?ZEwE8mTJ0&tYnPD{O`p6W=@`bWI^%n%&Z5I&5!@nojX}kFLAMik(tvSUAipoH z>9fF$zE>npSUNjiv48FlJcg~V)iQS3AzG8ngM5?P^UdlLXVRy&7hG6D&In6qdkuTF z6186k#Z3>deRhpB>AW5>tfP!Im9kG(us9pN)o?B#9O$4}=e{rx%Q3!t5L8J=;Fz_5Lw?V)>!5->97%Ms4w zhxFh(O;WG}x&T2C1VIo4K@bE%5ClOG1VIo4K@bE%5CkDF`~!DnV!=9M1<(Kh002ov JPDHLkV1f*V Date: Wed, 4 Feb 2026 15:19:01 +0100 Subject: [PATCH 2/7] bump? --- .eslintignore | 1 - .eslintrc.js | 10 - .../data-forwarding/amazon-sqs/index.mdx | 6 +- .../data-forwarding/grafana/index.mdx | 5 +- .../integrations/data-forwarding/index.mdx | 5 +- .../data-forwarding/segment/index.mdx | 6 +- .../data-forwarding/splunk/index.mdx | 6 +- .../seer/ai-code-review/index.mdx | 6 +- .../seer/root-cause-analysis/index.mdx | 6 +- .../new-monitors-and-alerts/alerts/index.mdx | 2 +- .../alerts/notifications/index.mdx | 2 +- .../notifications/notification-settings.mdx | 3 +- .../alerts-backend-insights-migration.mdx | 3 +- .../monitors/index.mdx | 7 +- .../monitors/uptime-monitoring/index.mdx | 2 +- .../uptime-monitoring/uptime-tracing.mdx | 3 +- eslint.config.mjs | 28 + next-env.d.ts | 1 + next.config.ts | 9 +- package.json | 15 +- {src/pages => pages}/_error.jsx | 0 {src/pages => public}/geo-back.svg | 0 scripts/no-vercel-json-redirects.mjs | 2 +- src/components/codeTabs.tsx | 6 +- src/components/imageLightbox/index.tsx | 4 +- src/components/onboarding/index.tsx | 3 +- src/middleware.ts | 2 +- src/proxy.ts | 4207 +++++++++++++++++ tsconfig.json | 7 +- yarn.lock | 1647 ++++++- 30 files changed, 5770 insertions(+), 234 deletions(-) delete mode 100644 .eslintignore delete mode 100644 .eslintrc.js create mode 100644 eslint.config.mjs rename {src/pages => pages}/_error.jsx (100%) rename {src/pages => public}/geo-back.svg (100%) create mode 100644 src/proxy.ts diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index 199b0e5673faf..0000000000000 --- a/.eslintignore +++ /dev/null @@ -1 +0,0 @@ -.babelrc.js diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 08a147474ab21..0000000000000 --- a/.eslintrc.js +++ /dev/null @@ -1,10 +0,0 @@ -module.exports = { - extends: ['sentry-docs', 'plugin:@next/next/recommended'], - globals: { - Atomics: 'readonly', - SharedArrayBuffer: 'readonly', - }, - rules: { - 'import/no-nodejs-modules': 'off', - }, -}; diff --git a/docs/organization/integrations/data-forwarding/amazon-sqs/index.mdx b/docs/organization/integrations/data-forwarding/amazon-sqs/index.mdx index 1b2828d9adf63..c712438171778 100644 --- a/docs/organization/integrations/data-forwarding/amazon-sqs/index.mdx +++ b/docs/organization/integrations/data-forwarding/amazon-sqs/index.mdx @@ -2,7 +2,9 @@ title: Amazon SQS sidebar_order: 3 description: >- - Learn about Sentry's Amazon SQS data forwarder, which enables creating custom data pipelines with Sentry errors through AWS. + Learn about Sentry's Amazon SQS data forwarder, which enables creating custom + data pipelines with Sentry errors through AWS. +og_image: /og-images/organization-integrations-data-forwarding-amazon-sqs.png --- @@ -47,4 +49,4 @@ If you wish to modify your forwarder configuration per project, you can do so by - Unlike the other data forwarders, Sentry does not rate limit its sending of events to Amazon SQS. This is separate from the rate limit Amazon SQS enforces. Keep that in mind if you are noticing inconsistencies in your data, or missing events. - Double check that your specified region is correct, both when monitoring the queue/bucket in AWS, and configuring the forwarder in Sentry. Sentry expects the region in the format of `us-east-1`, `us-west-1`, etc. - If your Sentry event payloads are greater than 256KB and you have not provided an S3 Bucket, the event will _not_ be forwarded to your SQS queue. You'll need to setup an S3 Bucket for these events to be forwarded. -- If you are using an S3 Bucket, ensure it is in the same AWS region as the SQS queue otherwise you may experience issues with forwarding events. \ No newline at end of file +- If you are using an S3 Bucket, ensure it is in the same AWS region as the SQS queue otherwise you may experience issues with forwarding events. diff --git a/docs/organization/integrations/data-forwarding/grafana/index.mdx b/docs/organization/integrations/data-forwarding/grafana/index.mdx index 9b3c281468774..db3aa67f68408 100644 --- a/docs/organization/integrations/data-forwarding/grafana/index.mdx +++ b/docs/organization/integrations/data-forwarding/grafana/index.mdx @@ -1,7 +1,10 @@ --- title: Grafana sidebar_order: 4 -description: "Learn about Sentry's Grafana integration, which allows you to query and visualize Sentry data within Grafana." +description: >- + Learn about Sentry's Grafana integration, which allows you to query and + visualize Sentry data within Grafana. +og_image: /og-images/organization-integrations-data-forwarding-grafana.png --- diff --git a/docs/organization/integrations/data-forwarding/index.mdx b/docs/organization/integrations/data-forwarding/index.mdx index 3aca55565e2a0..c7b81ee751e88 100644 --- a/docs/organization/integrations/data-forwarding/index.mdx +++ b/docs/organization/integrations/data-forwarding/index.mdx @@ -1,7 +1,8 @@ --- -title: "Data Forwarding" +title: Data Forwarding sidebar_order: 60 -description: "Learn about forwarding processed events to third-party providers." +description: Learn about forwarding processed events to third-party providers. +og_image: /og-images/organization-integrations-data-forwarding.png --- diff --git a/docs/organization/integrations/data-forwarding/segment/index.mdx b/docs/organization/integrations/data-forwarding/segment/index.mdx index 5c1ffa71ea3c3..f866cd47bf61f 100644 --- a/docs/organization/integrations/data-forwarding/segment/index.mdx +++ b/docs/organization/integrations/data-forwarding/segment/index.mdx @@ -2,7 +2,9 @@ title: Segment sidebar_order: 2 description: >- - Learn about Sentry's Segment data forwarder, which enables tracking Sentry errors as Segment events. + Learn about Sentry's Segment data forwarder, which enables tracking Sentry + errors as Segment events. +og_image: /og-images/organization-integrations-data-forwarding-segment.png --- @@ -61,4 +63,4 @@ If you wish to modify your forwarder configuration per project, you can do so by }, "timestamp": "2017-05-20T15:29:06Z" } -``` \ No newline at end of file +``` diff --git a/docs/organization/integrations/data-forwarding/splunk/index.mdx b/docs/organization/integrations/data-forwarding/splunk/index.mdx index 49e802d865704..9d97334bcd979 100644 --- a/docs/organization/integrations/data-forwarding/splunk/index.mdx +++ b/docs/organization/integrations/data-forwarding/splunk/index.mdx @@ -2,7 +2,9 @@ title: Splunk sidebar_order: 1 description: >- - Learn about Sentry's Splunk data forwarder, which enables collecting Sentry Errors in your Splunk Cloud instance through an HTTP Event Collector. + Learn about Sentry's Splunk data forwarder, which enables collecting Sentry + Errors in your Splunk Cloud instance through an HTTP Event Collector. +og_image: /og-images/organization-integrations-data-forwarding-splunk.png --- Data Forwarding is currently in a limited preview, and may not be accessible to all organizations. @@ -105,4 +107,4 @@ If you wish to modify your forwarder configuration per project, you can do so by ## Troubleshooting -- Sentry rate limits its sending of events to Splunk at approximately 1000 requests per second per _unique token_. This is separate from the rate limit Splunk enforces. Keep that in mind if you are noticing inconsistencies in your data, or missing events. \ No newline at end of file +- Sentry rate limits its sending of events to Splunk at approximately 1000 requests per second per _unique token_. This is separate from the rate limit Splunk enforces. Keep that in mind if you are noticing inconsistencies in your data, or missing events. diff --git a/docs/product/ai-in-sentry/seer/ai-code-review/index.mdx b/docs/product/ai-in-sentry/seer/ai-code-review/index.mdx index 9029ebef39656..f937a236bbe51 100644 --- a/docs/product/ai-in-sentry/seer/ai-code-review/index.mdx +++ b/docs/product/ai-in-sentry/seer/ai-code-review/index.mdx @@ -1,10 +1,8 @@ --- title: AI Code Review sidebar_order: 30 -description: >- - Get error predictions and code reviews for better code and - coverage. -og_image: /og-images/product-ai-in-sentry-ai-code-review.png +description: Get error predictions and code reviews for better code and coverage. +og_image: /og-images/product-ai-in-sentry-seer-ai-code-review.png --- AI Code Review helps you reviews your code changes, predicting errors and offering suggestions for improvement before merging pull requests. diff --git a/docs/product/ai-in-sentry/seer/root-cause-analysis/index.mdx b/docs/product/ai-in-sentry/seer/root-cause-analysis/index.mdx index 9a277fa7ef59d..54add7e65d00d 100644 --- a/docs/product/ai-in-sentry/seer/root-cause-analysis/index.mdx +++ b/docs/product/ai-in-sentry/seer/root-cause-analysis/index.mdx @@ -1,10 +1,10 @@ --- title: Root Cause Analysis description: >- - Use Seer's Root Cause Analysis to automatically find the root cause of issues and - generate code fixes. + Use Seer's Root Cause Analysis to automatically find the root cause of issues + and generate code fixes. sidebar_order: 20 -og_image: /og-images/product-ai-in-sentry-seer-issue-fix.png +og_image: /og-images/product-ai-in-sentry-seer-root-cause-analysis.png --- **Root Cause Analysis** is Seer's collaborative workflow to find the root cause of, and solution to, issues. It uses Sentry's context (issue details, tracing data, logs, and profiles), your codebases (integrated through GitHub), and its interactions with you to identify and reason through problems in your code. diff --git a/docs/product/new-monitors-and-alerts/alerts/index.mdx b/docs/product/new-monitors-and-alerts/alerts/index.mdx index 09e2f6adcb9be..3ae0b0805c29e 100644 --- a/docs/product/new-monitors-and-alerts/alerts/index.mdx +++ b/docs/product/new-monitors-and-alerts/alerts/index.mdx @@ -2,7 +2,7 @@ title: Alerts description: Create custom Alerts to pair with Issues. sidebar_order: 60 -og_image: /og-images/product-alerts.png +og_image: /og-images/product-new-monitors-and-alerts-alerts.png --- diff --git a/docs/product/new-monitors-and-alerts/alerts/notifications/index.mdx b/docs/product/new-monitors-and-alerts/alerts/notifications/index.mdx index 66a7b6a689220..7f0a3574aa665 100644 --- a/docs/product/new-monitors-and-alerts/alerts/notifications/index.mdx +++ b/docs/product/new-monitors-and-alerts/alerts/notifications/index.mdx @@ -4,7 +4,7 @@ sidebar_order: 40 description: >- Learn about the types of notifications that Sentry sends you, and how to manage them. -og_image: /og-images/product-alerts-notifications.png +og_image: /og-images/product-new-monitors-and-alerts-alerts-notifications.png --- Sentry sends you notifications regarding workflow activities, [release deploys](/product/releases/), and [quota usage](/pricing/quotas/), as well as weekly reports. These notifications let you know about: diff --git a/docs/product/new-monitors-and-alerts/alerts/notifications/notification-settings.mdx b/docs/product/new-monitors-and-alerts/alerts/notifications/notification-settings.mdx index c44a515d03445..07dc3d42e5e93 100644 --- a/docs/product/new-monitors-and-alerts/alerts/notifications/notification-settings.mdx +++ b/docs/product/new-monitors-and-alerts/alerts/notifications/notification-settings.mdx @@ -2,7 +2,8 @@ title: Personal Notification Settings sidebar_order: null description: Learn how to manage your personal notifications settings. -og_image: /og-images/product-alerts-notifications-notification-settings.png +og_image: >- + /og-images/product-new-monitors-and-alerts-alerts-notifications-notification-settings.png --- You can update your personal notification settings for things like [workflow](/product/new-monitors-and-alerts/alerts/notifications/), deploy, issue alert, and [spike protection](/pricing/quotas/spike-protection/) by turning them on or off, specifying how you'd like to be notified (via email, Slack, or both), and more. Users who **aren't** on an [Enterprise](https://sentry.io/pricing/) plan can also configure their quota notifications. diff --git a/docs/product/new-monitors-and-alerts/monitors/crons/alerts-backend-insights-migration.mdx b/docs/product/new-monitors-and-alerts/monitors/crons/alerts-backend-insights-migration.mdx index 45ab3258daad7..a7f50e54f3b9d 100644 --- a/docs/product/new-monitors-and-alerts/monitors/crons/alerts-backend-insights-migration.mdx +++ b/docs/product/new-monitors-and-alerts/monitors/crons/alerts-backend-insights-migration.mdx @@ -3,7 +3,8 @@ title: Cron Monitoring Updates for Developers noindex: true draft: true sidebar_hidden: true -og_image: /og-images/product-crons-alerts-backend-insights-migration.png +og_image: >- + /og-images/product-new-monitors-and-alerts-monitors-crons-alerts-backend-insights-migration.png --- The **Cron Monitoring** feature has been relocated and restructured to improve accessibility and functionality. Previously, it was found in the sidebar under **"Crons"**, but it has now been split into two different locations: diff --git a/docs/product/new-monitors-and-alerts/monitors/index.mdx b/docs/product/new-monitors-and-alerts/monitors/index.mdx index a89f8d27b4ce6..59383f5aeea45 100644 --- a/docs/product/new-monitors-and-alerts/monitors/index.mdx +++ b/docs/product/new-monitors-and-alerts/monitors/index.mdx @@ -1,7 +1,10 @@ --- title: Monitors -description: Generate issues and trigger alerts by creating custom monitors to track errors, performance, and metrics. +description: >- + Generate issues and trigger alerts by creating custom monitors to track + errors, performance, and metrics. sidebar_order: 70 +og_image: /og-images/product-new-monitors-and-alerts-monitors.png --- @@ -105,4 +108,4 @@ Monitors are a Project-level feature, but the permission set is organization-lev By clicking on a Monitor, you can view the details, edit the Monitor, or disable it. -The details page will show a high level chart of the Monitor's performance, the configuration, created issue, and connected automations. \ No newline at end of file +The details page will show a high level chart of the Monitor's performance, the configuration, created issue, and connected automations. diff --git a/docs/product/new-monitors-and-alerts/monitors/uptime-monitoring/index.mdx b/docs/product/new-monitors-and-alerts/monitors/uptime-monitoring/index.mdx index 9fab7c4cc1e2e..a5a29b1873084 100644 --- a/docs/product/new-monitors-and-alerts/monitors/uptime-monitoring/index.mdx +++ b/docs/product/new-monitors-and-alerts/monitors/uptime-monitoring/index.mdx @@ -4,7 +4,7 @@ sidebar_order: 50 description: >- Learn how to help maintain uptime for your web services by monitoring relevant URLs with Sentry's Uptime Monitoring. -og_image: /og-images/product-uptime-monitoring.png +og_image: /og-images/product-new-monitors-and-alerts-monitors-uptime-monitoring.png --- Sentry's Uptime Monitoring lets you monitor the availability and reliability of your web services effortlessly. Once enabled, it continuously tracks configured URLs, delivering instant alerts and insights to quickly identify downtime and troubleshoot issues. diff --git a/docs/product/new-monitors-and-alerts/monitors/uptime-monitoring/uptime-tracing.mdx b/docs/product/new-monitors-and-alerts/monitors/uptime-monitoring/uptime-tracing.mdx index f2044d9ccecbd..206a3fd1a132f 100644 --- a/docs/product/new-monitors-and-alerts/monitors/uptime-monitoring/uptime-tracing.mdx +++ b/docs/product/new-monitors-and-alerts/monitors/uptime-monitoring/uptime-tracing.mdx @@ -2,7 +2,8 @@ title: Distributed Tracing with Uptime sidebar_order: 52 description: Learn how to use distributed tracing to troubleshoot downtime. -og_image: /og-images/product-uptime-monitoring-uptime-tracing.png +og_image: >- + /og-images/product-new-monitors-and-alerts-monitors-uptime-monitoring-uptime-tracing.png --- Sentry's Uptime Monitoring uses [distributed tracing](/product/tracing/#whats-distributed-tracing) to track the flow and timing of requests and operations during uptime checks. This helps you quickly find the root cause of downtime by connecting related errors and performance data. diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 0000000000000..a1d297e704c1c --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,28 @@ +import {dirname} from 'path'; +import {fileURLToPath} from 'url'; +import {FlatCompat} from '@eslint/eslintrc'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); + +const compat = new FlatCompat({ + baseDirectory: __dirname, +}); + +export default [ + { + ignores: ['.babelrc.js'], + }, + ...compat.extends('sentry-docs', 'plugin:@next/next/recommended'), + { + languageOptions: { + globals: { + Atomics: 'readonly', + SharedArrayBuffer: 'readonly', + }, + }, + rules: { + 'import/no-nodejs-modules': 'off', + }, + }, +]; diff --git a/next-env.d.ts b/next-env.d.ts index 3cd7048ed9471..2d5420ebae639 100644 --- a/next-env.d.ts +++ b/next-env.d.ts @@ -1,6 +1,7 @@ /// /// /// +import "./.next/types/routes.d.ts"; // NOTE: This file should not be edited // see https://nextjs.org/docs/app/api-reference/config/typescript for more information. diff --git a/next.config.ts b/next.config.ts index bf35ce67e9a10..55b182b5d2526 100644 --- a/next.config.ts +++ b/next.config.ts @@ -118,6 +118,13 @@ const nextConfig = { images: { contentDispositionType: 'inline', // "open image in new tab" instead of downloading remotePatterns: REMOTE_IMAGE_PATTERNS, + // Next.js 16 requires localPatterns for images with query strings + // Omitting 'search' allows any query string (used for cache busting) + localPatterns: [ + { + pathname: '/**', + }, + ], }, webpack: (config, options) => { config.plugins.push( @@ -132,7 +139,7 @@ const nextConfig = { return config; }, env: { - // This is used on middleware + // This is used on proxy DEVELOPER_DOCS_: process.env.NEXT_PUBLIC_DEVELOPER_DOCS, }, redirects, diff --git a/package.json b/package.json index e9115480a6d72..339810cc481f9 100644 --- a/package.json +++ b/package.json @@ -12,18 +12,18 @@ }, "private": true, "scripts": { - "dev:minimal": "yarn enforce-redirects && concurrently \"node ./src/hotReloadWatcher.mjs\" \"next dev\"", - "dev": "yarn enforce-redirects && concurrently \"yarn sidecar\" \"node ./src/hotReloadWatcher.mjs\" \"next dev\"", + "dev:minimal": "yarn enforce-redirects && concurrently \"node ./src/hotReloadWatcher.mjs\" \"next dev --webpack\"", + "dev": "yarn enforce-redirects && concurrently \"yarn sidecar\" \"node ./src/hotReloadWatcher.mjs\" \"next dev --webpack\"", "dev:developer-docs": "yarn enforce-redirects && NEXT_PUBLIC_DEVELOPER_DOCS=1 yarn dev", "build:developer-docs": "yarn enforce-redirects && git submodule init && git submodule update && NEXT_PUBLIC_DEVELOPER_DOCS=1 yarn build", - "build": "yarn enforce-redirects && yarn generate-og-images && yarn generate-doctree && next build && yarn generate-md-exports", + "build": "yarn enforce-redirects && yarn generate-og-images && yarn generate-doctree && next build --webpack && yarn generate-md-exports", "generate-md-exports": "node scripts/generate-md-exports.mjs", "generate-og-images": "ts-node scripts/add-og-images.ts", "generate-doctree": "esbuild scripts/generate-doctree.ts --bundle --platform=node --packages=external --outfile=.next/generate-doctree.mjs --format=esm && node .next/generate-doctree.mjs", "vercel:build:developer-docs": "yarn enforce-redirects && git submodule init && git submodule update && NEXT_PUBLIC_DEVELOPER_DOCS=1 yarn build", "start:dev": "NODE_ENV=development yarn build && yarn start", "start": "next start", - "lint": "next lint", + "lint": "eslint \"{src,app,scripts}/**/*.{ts,tsx,js,jsx}\"", "lint:ts": "tsc --skipLibCheck", "lint:eslint": "eslint \"{src,app,scripts}/**/*.{ts,tsx,js,jsx}\"", "lint:eslint:fix": "eslint --fix \"{src,app,scripts}/**/*.{ts,tsx,js,jsx}\"", @@ -76,7 +76,7 @@ "mdx-bundler": "^10.0.1", "mermaid": "^11.11.0", "micromark": "^4.0.0", - "next": "15.1.12", + "next": "^16.1.6", "next-mdx-remote": "^4.4.1", "next-plausible": "^3.12.4", "next-themes": "^0.3.0", @@ -130,7 +130,8 @@ "concurrently": "^9.1.0", "dotenv-cli": "^7.4.1", "eslint": "^8", - "eslint-config-next": "15.0.3", + "@eslint/eslintrc": "^3.2.0", + "eslint-config-next": "^16.1.6", "eslint-config-sentry-docs": "^2.10.0", "jest": "^29.5.0", "jest-dom": "^4.0.0", @@ -153,4 +154,4 @@ "node": "22.16.0", "yarn": "1.22.22" } -} +} \ No newline at end of file diff --git a/src/pages/_error.jsx b/pages/_error.jsx similarity index 100% rename from src/pages/_error.jsx rename to pages/_error.jsx diff --git a/src/pages/geo-back.svg b/public/geo-back.svg similarity index 100% rename from src/pages/geo-back.svg rename to public/geo-back.svg diff --git a/scripts/no-vercel-json-redirects.mjs b/scripts/no-vercel-json-redirects.mjs index 9f154ae9f7193..c8644405b7b73 100644 --- a/scripts/no-vercel-json-redirects.mjs +++ b/scripts/no-vercel-json-redirects.mjs @@ -4,6 +4,6 @@ const vercelConfig = JSON.parse(readFileSync('./vercel.json', 'utf8')); if (vercelConfig.redirects && vercelConfig.redirects.length > 0) { throw new Error( - '🔴 ERROR: vercel.json redirects are not recommended.\n 👉 Please add dynamic redirects to redirects.js and static redirects to ./src/middleware.ts' + '🔴 ERROR: vercel.json redirects are not recommended.\n 👉 Please add dynamic redirects to redirects.js and static redirects to ./src/proxy.ts' ); } diff --git a/src/components/codeTabs.tsx b/src/components/codeTabs.tsx index 994cbf1be213f..702930f529ff6 100644 --- a/src/components/codeTabs.tsx +++ b/src/components/codeTabs.tsx @@ -55,7 +55,11 @@ export function CodeTabs({children}: CodeTabProps) { // The title is what we use for sorting and also for remembering the // selection. If there is no title fall back to the title cased language name // (or override from `LANGUAGES`). - const possibleChoices = codeBlocks.map(({props: {title, language}}) => { + const possibleChoices = codeBlocks.map(child => { + const props = child?.props; + const title = props?.title; + const language = props?.language; + if (title) { return title; } diff --git a/src/components/imageLightbox/index.tsx b/src/components/imageLightbox/index.tsx index 3ebff606c177a..7501a366037be 100644 --- a/src/components/imageLightbox/index.tsx +++ b/src/components/imageLightbox/index.tsx @@ -91,8 +91,8 @@ export function ImageLightbox({ }; // Filter out props that are incompatible with Next.js Image component - // Next.js Image has stricter typing for certain props like 'placeholder' - const {placeholder: _placeholder, ...imageCompatibleProps} = props; + // Next.js Image has stricter typing for certain props like 'placeholder' and 'preload' + const {placeholder: _placeholder, preload: _preload, ...imageCompatibleProps} = props; const renderImage = (isInline: boolean = true) => { const renderedSrc = getImageUrl(src, imgPath); diff --git a/src/components/onboarding/index.tsx b/src/components/onboarding/index.tsx index 41d440f0880c7..0127dd3534948 100644 --- a/src/components/onboarding/index.tsx +++ b/src/components/onboarding/index.tsx @@ -1,7 +1,6 @@ 'use client'; -// eslint-disable-next-line no-restricted-imports -- Required for JSX in test environment -import React, {ReactNode, useContext, useEffect, useReducer, useState} from 'react'; +import {type ReactNode, useContext, useEffect, useReducer, useState} from 'react'; import {QuestionMarkCircledIcon} from '@radix-ui/react-icons'; import * as Tooltip from '@radix-ui/react-tooltip'; import {Button, Checkbox, Theme} from '@radix-ui/themes'; diff --git a/src/middleware.ts b/src/middleware.ts index 0bcde0c1d3161..a6706cee7126e 100644 --- a/src/middleware.ts +++ b/src/middleware.ts @@ -19,7 +19,7 @@ export const config = { }; // This function can be marked `async` if using `await` inside -export function middleware(request: NextRequest) { +export function proxy(request: NextRequest) { // First, handle canonical URL redirects for deprecated paths const canonicalRedirect = handleRedirects(request); if (canonicalRedirect) { diff --git a/src/proxy.ts b/src/proxy.ts new file mode 100644 index 0000000000000..a6706cee7126e --- /dev/null +++ b/src/proxy.ts @@ -0,0 +1,4207 @@ +import * as Sentry from '@sentry/nextjs'; +import type {NextRequest} from 'next/server'; +import {NextResponse} from 'next/server'; + +// This env var is set in next.config.js based on the `NEXT_PUBLIC_DEVELOPER_DOCS` env var at build time +// a workaround edge middleware not having access to env vars +const isDeveloperDocs = process.env.DEVELOPER_DOCS_; + +export const config = { + // learn more: https://nextjs.org/docs/pages/building-your-application/routing/middleware#matcher + matcher: [ + // Match all request paths except for the ones starting with: + // - api (API routes) + // - _next/static (static files) + // - _next/image (image optimization files) + // - favicon.ico (favicon file) + '/((?!api|_next/static|_next/image|favicon.ico).*)', + ], +}; + +// This function can be marked `async` if using `await` inside +export function proxy(request: NextRequest) { + // First, handle canonical URL redirects for deprecated paths + const canonicalRedirect = handleRedirects(request); + if (canonicalRedirect) { + return canonicalRedirect; + } + + // Then, check for AI/LLM clients and redirect to markdown if appropriate + return handleAIClientRedirect(request); +} + +// don't send Permanent Redirects (301) in dev mode - it gets cached for "localhost" by the browser +const redirectStatusCode = process.env.NODE_ENV === 'development' ? 302 : 301; + +/** + * Detects if the user agent belongs to an AI/LLM tool or development environment + * that would benefit from markdown format + */ +function isAIOrDevTool(userAgent: string): boolean { + const patterns = [ + /claude/i, // Claude Desktop/Code + /cursor/i, // Cursor IDE + /copilot/i, // GitHub Copilot + /chatgpt/i, // ChatGPT + /openai/i, // OpenAI tools + /anthropic/i, // Anthropic tools + /vscode/i, // VS Code extensions + /intellij/i, // IntelliJ plugins + /sublime/i, // Sublime Text plugins + /got/i, // Got HTTP library (sindresorhus/got) + // Add more patterns as needed + ]; + + return patterns.some(pattern => pattern.test(userAgent)); +} + +/** + * Detects if client wants markdown via Accept header (standards-compliant) + */ +function wantsMarkdownViaAccept(acceptHeader: string): boolean { + return ( + acceptHeader.includes('text/markdown') || + acceptHeader.includes('text/x-markdown') || + acceptHeader.includes('text/plain') + ); +} + +/** + * Detects if client wants markdown via Accept header or user-agent + */ +function wantsMarkdown(request: NextRequest): boolean { + const userAgent = request.headers.get('user-agent') || ''; + const acceptHeader = request.headers.get('accept') || ''; + + // Strategy 1: Accept header content negotiation (standards-compliant) + if (wantsMarkdownViaAccept(acceptHeader)) { + return true; + } + + // Strategy 2: User-agent detection (fallback for tools that don't set Accept) + return isAIOrDevTool(userAgent); +} + +/** + * Handles redirection to markdown versions for AI/LLM clients + */ +const handleAIClientRedirect = (request: NextRequest) => { + const userAgent = request.headers.get('user-agent') || ''; + const acceptHeader = request.headers.get('accept') || ''; + const url = request.nextUrl; + + // Determine if this will be served as markdown + const forceMarkdown = url.searchParams.get('format') === 'md'; + const clientWantsMarkdown = wantsMarkdown(request); + const willServeMarkdown = + (clientWantsMarkdown || forceMarkdown) && !url.pathname.endsWith('.md'); + + // Determine detection method for logging + const detectionMethod = wantsMarkdownViaAccept(acceptHeader) + ? 'Accept header' + : isAIOrDevTool(userAgent) + ? 'User-agent' + : 'Manual'; + + // Log user agent for debugging (only for non-static assets) + if ( + !url.pathname.startsWith('/_next/') && + !url.pathname.includes('.') && + !url.pathname.startsWith('/api/') + ) { + Sentry.logger.info(`Middleware request processed: ${url.pathname}`, { + urlPath: url.pathname, + acceptHeader: request.headers.get('accept') || '', + userAgent: request.headers.get('user-agent') || '', + contentType: willServeMarkdown ? 'markdown' : 'html', + detectionMethod: willServeMarkdown ? detectionMethod : null, + }); + } + + // Skip if already requesting a markdown file + if (url.pathname.endsWith('.md')) { + return undefined; + } + + // Skip API routes and static assets (should already be filtered by matcher) + if ( + url.pathname.startsWith('/api/') || + url.pathname.startsWith('/_next/') || + /\.(js|json|png|jpg|jpeg|gif|ico|pdf|css|woff|woff2|ttf|map|xml|txt|zip|svg)$/i.test( + url.pathname + ) + ) { + return undefined; + } + + // Check for markdown request (Accept header, user-agent, or manual) + if (clientWantsMarkdown || forceMarkdown) { + // Log the rewrite for debugging + Sentry.logger.info('Markdown rewrite triggered', { + urlPath: url.pathname, + detectionMethod: forceMarkdown ? 'Manual format=md' : detectionMethod, + targetUrl: url.pathname.replace(/\/+$/, '') + '.md', + }); + + // Create new URL with .md extension + const newUrl = url.clone(); + // Handle root path and ensure proper .md extension + let pathname = url.pathname === '/' ? '/index' : url.pathname; + // Remove all trailing slashes if present, then add .md + pathname = pathname.replace(/\/+$/, '') + '.md'; + newUrl.pathname = pathname; + + // Clean up the format query parameter if it was used + if (forceMarkdown) { + newUrl.searchParams.delete('format'); + } + + // Rewrite to serve markdown inline (same URL, different content) + // The next.config.ts rewrite rule maps *.md to /md-exports/*.md + return NextResponse.rewrite(newUrl); + } + + return undefined; +}; + +const handleRedirects = (request: NextRequest) => { + const urlPath = request.nextUrl.pathname; + + const redirectTo = redirectMap.get(urlPath); + if (redirectTo) { + return NextResponse.redirect(new URL(redirectTo, request.url), { + status: redirectStatusCode, + }); + } + + // If we don't find an exact match, we try to look for a :guide placeholder + const guidePlaceholder = '/guides/:guide/'; + const guideRegex = /\/guides\/(\w+)\//g; + const match = guideRegex.exec(urlPath); + + if (!match) { + return undefined; + } + + const pathWithPlaceholder = urlPath.replace(guideRegex, guidePlaceholder); + const guide = match[1]; + + const redirectToGuide = redirectMap.get(pathWithPlaceholder); + if (redirectToGuide) { + const finalRedirectToPath = redirectToGuide.replace( + guidePlaceholder, + `/guides/${guide}/` + ); + + return NextResponse.redirect(new URL(finalRedirectToPath, request.url), { + status: redirectStatusCode, + }); + } + + return undefined; +}; + +type Redirect = { + /** a string with a leading and a trailing slash */ + from: `/${string}/` | '/'; + to: string; +}; + +/** Note: if you want to set redirects for developer docs, set them below in `DEVELOPER_DOCS_REDIRECTS` */ +const USER_DOCS_REDIRECTS: Redirect[] = [ + { + from: '/platforms/python/http_errors/', + to: '/platforms/python/integrations/django/http_errors/', + }, + { + from: '/platforms/javascript/guides/react/configuration/integrations/trycatch/', + to: '/platforms/javascript/configuration/integrations/browserapierrors/', + }, + { + from: '/platforms/javascript/performance/instrumentation/custom-instrumentation/caches-module/', + to: '/platforms/javascript/guides/node/performance/instrumentation/custom-instrumentation/caches-module/', + }, + { + from: '/platforms/javascript/guides/nuxt/install/top-level-import/', + to: '/platforms/javascript/guides/nuxt/install/limited-server-tracing/', + }, + { + from: '/account/early-adopter-features/discord/', + to: '/organization/integrations/notification-incidents/discord/', + }, + { + from: '/platforms/python/migration/configuration/filtering/', + to: '/platforms/python/configuration/filtering/', + }, + { + from: '/organization/integrations/github/', + to: '/organization/integrations/source-code-mgmt/github/', + }, + { + from: '/organization/integrations/gitlab/', + to: '/organization/integrations/source-code-mgmt/gitlab/', + }, + { + from: '/organization/integrations/bitbucket/', + to: '/organization/integrations/source-code-mgmt/bitbucket/', + }, + { + from: '/organization/integrations/rookout/', + to: '/organization/integrations/debugging/rookout/', + }, + { + from: '/organization/integrations/split/', + to: '/organization/integrations/feature-flag/split/', + }, + { + from: '/organization/integrations/teamwork/', + to: '/organization/integrations/issue-tracking/teamwork/', + }, + { + from: '/organization/integrations/jira/', + to: '/organization/integrations/issue-tracking/jira/', + }, + { + from: '/organization/integrations/linear/', + to: '/organization/integrations/issue-tracking/linear/', + }, + { + from: '/organization/integrations/clickup/', + to: '/organization/integrations/issue-tracking/clickup/', + }, + { + from: '/organization/integrations/project-mgmt/shortcut/', + to: '/organization/integrations/issue-tracking/shortcut/', + }, + { + from: '/organization/integrations/slack/', + to: '/organization/integrations/notification-incidents/slack/', + }, + { + from: '/organization/integrations/pagerduty/', + to: '/organization/integrations/notification-incidents/pagerduty/', + }, + { + from: '/organization/integrations/vanta/', + to: '/organization/integrations/compliance/vanta/', + }, + { + from: '/organization/integrations/jam/', + to: '/organization/integrations/session-replay/jam/', + }, + { + from: '/organization/integrations/cloud-monitoring/cloudflare-workers/', + to: '/platforms/javascript/guides/cloudflare/', + }, + { + from: '/product/crons/getting-started/cli/', + to: '/cli/crons/', + }, + { + from: '/product/data-management-settings/dynamic-sampling/', + to: '/product/insights/overview/', + }, + { + from: '/product/data-management-settings/event-grouping/', + to: '/concepts/data-management/event-grouping/', + }, + { + from: '/product/data-management-settings/data-forwarding/', + to: '/concepts/data-management/data-forwarding/', + }, + { + from: '/product/data-management-settings/filtering/', + to: '/concepts/data-management/filtering/', + }, + { + from: '/platforms/data-management/', + to: '/concepts/data-management/', + }, + { + from: '/platforms/javascript/sourcemaps/troubleshooting/', + to: '/platforms/javascript/sourcemaps/', + }, + { + from: '/platforms/react-native/install/cocoapods/', + to: '/platforms/react-native/manual-setup/manual-setup/', + }, + { + from: '/platforms/react-native/install/', + to: '/platforms/react-native/manual-setup/manual-setup/', + }, + { + from: '/platforms/unity/data-management/event-grouping/sdk-fingerprinting/', + to: '/platforms/unity/usage/sdk-fingerprinting/', + }, + { + from: '/platforms/unity/native-support/building-ios/', + to: '/platforms/unity/native-support/', + }, + { + from: '/platforms/unity/unity-lite/', + to: '/platforms/unity/migration/', + }, + { + from: '/platforms/go/config/', + to: '/platforms/go/configuration/options/', + }, + { + from: '/platforms/go/goroutines/', + to: '/platforms/go/usage/concurrency/', + }, + { + from: '/platforms/go/concurrency/', + to: '/platforms/go/usage/concurrency/', + }, + { + from: '/platforms/go/panics/', + to: '/platforms/go/usage/panics/', + }, + { + from: '/platforms/go/serverless/', + to: '/platforms/go/usage/serverless/', + }, + { + from: '/platforms/go/fasthttp/', + to: '/platforms/go/guides/fasthttp/', + }, + { + from: '/platforms/go/fiber/', + to: '/platforms/go/guides/fiber/', + }, + { + from: '/platforms/go/echo/', + to: '/platforms/go/guides/echo/', + }, + { + from: '/platforms/go/iris/', + to: '/platforms/go/guides/iris/', + }, + { + from: '/platforms/go/negroni/', + to: '/platforms/go/guides/negroni/', + }, + { + from: '/platforms/go/zerolog/', + to: '/platforms/go/guides/zerolog/', + }, + { + from: '/platforms/go/slog/', + to: '/platforms/go/guides/slog/', + }, + { + from: '/platforms/go/logrus/', + to: '/platforms/go/guides/logrus/', + }, + { + from: '/clients/go/integrations/http/', + to: '/platforms/go/guides/http/', + }, + { + from: '/platforms/go/http/', + to: '/platforms/go/guides/http/', + }, + { + from: '/platforms/go/gin/', + to: '/platforms/go/guides/gin/', + }, + { + from: '/clients/go/config/', + to: '/platforms/go/legacy-sdk/config/', + }, + { + from: '/clients/go/index/', + to: '/platforms/go/legacy-sdk/', + }, + { + from: '/clients/go/integrations/', + to: '/platforms/go/legacy-sdk/integrations/', + }, + { + from: '/clients/go/usage/', + to: '/platforms/go/legacy-sdk/usage/', + }, + { + from: '/clients/go/context/', + to: '/platforms/go/legacy-sdk/context/', + }, + { + from: '/platforms/qt/', + to: '/platforms/native/guides/qt/', + }, + { + from: '/platforms/native/qt/', + to: '/platforms/native/guides/qt/', + }, + { + from: '/platforms/breakpad/', + to: '/platforms/native/guides/breakpad/', + }, + { + from: '/platforms/native/breakpad/', + to: '/platforms/native/guides/breakpad/', + }, + { + from: '/platforms/minidump/', + to: '/platforms/native/guides/minidumps/', + }, + { + from: '/platforms/native/minidump/', + to: '/platforms/native/guides/minidumps/', + }, + { + from: '/clients/minidump/', + to: '/platforms/native/guides/minidumps/', + }, + { + from: '/platforms/react-native/advanced-setup/', + to: '/platforms/react-native/manual-setup/manual-setup/', + }, + { + from: '/platforms/react-native/codepush/', + to: '/platforms/react-native/manual-setup/codepush/', + }, + { + from: '/platforms/react-native/hermes/', + to: '/platforms/react-native/manual-setup/hermes/', + }, + { + from: '/platforms/react-native/ram-bundles/', + to: '/platforms/react-native/manual-setup/ram-bundles/', + }, + { + from: '/platforms/react-native/performance/sampling/', + to: '/platforms/react-native/configuration/sampling/', + }, + { + from: '/platforms/react-native/configuration/integrations/plugin/', + to: '/platforms/react-native/integrations/plugin/', + }, + { + from: '/platforms/react-native/configuration/integrations/', + to: '/platforms/react-native/integrations/', + }, + { + from: '/platforms/react-native/configuration/integrations/custom/', + to: '/platforms/react-native/integrations/custom/', + }, + { + from: '/platforms/react-native/configuration/integrations/default/', + to: '/platforms/react-native/integrations/default/', + }, + { + from: '/platforms/react-native/configuration/integrations/redux/', + to: '/platforms/react-native/integrations/redux/', + }, + { + from: '/platforms/react-native/manual-setup/sourcemaps/', + to: '/platforms/react-native/sourcemaps/', + }, + { + from: '/platforms/react-native/touchevents/', + to: '/platforms/react-native/configuration/touchevents/', + }, + { + from: '/platforms/python/data-collected/', + to: '/platforms/python/data-management/data-collected/', + }, + { + from: '/platforms/python/flask/', + to: '/platforms/python/integrations/flask/', + }, + { + from: '/platforms/python/aiohttp/', + to: '/platforms/python/integrations/aiohttp/', + }, + { + from: '/platforms/python/gcp_functions/', + to: '/platforms/python/integrations/gcp-functions/', + }, + { + from: '/platforms/python/serverless/', + to: '/platforms/python/integrations/serverless/', + }, + { + from: '/clients/python/integrations/pyramid/', + to: '/platforms/python/integrations/pyramid/', + }, + { + from: '/platforms/python/pyramid/', + to: '/platforms/python/integrations/pyramid/', + }, + { + from: '/clients/python/integrations/starlette/', + to: '/platforms/python/integrations/starlette/', + }, + { + from: '/platforms/python/starlette/', + to: '/platforms/python/integrations/starlette/', + }, + { + from: '/clients/python/integrations/lambda/', + to: '/platforms/python/integrations/aws-lambda/', + }, + { + from: '/platforms/python/aws_lambda/', + to: '/platforms/python/integrations/aws-lambda/', + }, + { + from: '/platforms/python/airflow/', + to: '/platforms/python/integrations/airflow/', + }, + { + from: '/platforms/python/tornado/', + to: '/platforms/python/integrations/tornado/', + }, + { + from: '/clients/python/integrations/tornado/', + to: '/platforms/python/integrations/tornado/', + }, + { + from: '/platforms/python/chalice/', + to: '/platforms/python/integrations/chalice/', + }, + { + from: '/clients/python/integrations/fastapi/', + to: '/platforms/python/integrations/fastapi/', + }, + { + from: '/platforms/python/fastapi/', + to: '/platforms/python/integrations/fastapi/', + }, + { + from: '/platforms/python/sanic/', + to: '/platforms/python/integrations/sanic/', + }, + { + from: '/clients/python/integrations/starlite/', + to: '/platforms/python/integrations/starlite/', + }, + { + from: '/platforms/python/starlite/', + to: '/platforms/python/integrations/starlite/', + }, + { + from: '/clients/python/integrations/litestar/', + to: '/platforms/python/integrations/litestar/', + }, + { + from: '/platforms/python/litestar/', + to: '/platforms/python/integrations/litestar/', + }, + { + from: '/platforms/python/beam/', + to: '/platforms/python/integrations/beam/', + }, + { + from: '/clients/python/integrations/celery/', + to: '/platforms/python/integrations/celery/', + }, + { + from: '/platforms/python/celery/', + to: '/platforms/python/integrations/celery/', + }, + { + from: '/platforms/python/hints/', + to: '/platforms/python/integrations/celery/', + }, + { + from: '/clients/python/integrations/django/', + to: '/platforms/python/integrations/django/', + }, + { + from: '/platforms/python/django/', + to: '/platforms/python/integrations/django/', + }, + { + from: '/platforms/python/falcon/', + to: '/platforms/python/integrations/falcon/', + }, + { + from: '/clients/python/integrations/logging/', + to: '/platforms/python/integrations/logging/', + }, + { + from: '/platforms/python/logging/', + to: '/platforms/python/integrations/logging/', + }, + { + from: '/clients/python/integrations/rq/', + to: '/platforms/python/integrations/rq/', + }, + { + from: '/platforms/python/rq/', + to: '/platforms/python/integrations/rq/', + }, + { + from: '/clients/python/integrations/bottle/', + to: '/platforms/python/integrations/bottle/', + }, + { + from: '/platforms/python/bottle/', + to: '/platforms/python/integrations/bottle/', + }, + { + from: '/platforms/python/pyspark/', + to: '/platforms/python/integrations/spark/', + }, + { + from: '/platforms/python/integrations/pyspark/', + to: '/platforms/python/integrations/spark/', + }, + { + from: '/platforms/python/tryton/', + to: '/platforms/python/integrations/tryton/', + }, + { + from: '/platforms/python/integrations/feature-flags/launchdarkly/', + to: '/platforms/python/integrations/launchdarkly/', + }, + { + from: '/platforms/python/integrations/feature-flags/openfeature/', + to: '/platforms/python/integrations/openfeature/', + }, + { + from: '/platforms/python/integrations/feature-flags/unleash/', + to: '/platforms/python/integrations/unleash/', + }, + { + from: '/clients/python/breadcrumbs/', + to: '/platforms/python/legacy-sdk/breadcrumbs/', + }, + { + from: '/clients/python/platform-support/', + to: '/platforms/python/legacy-sdk/platform-support/', + }, + { + from: '/clients/python/integrations/', + to: '/platforms/python/legacy-sdk/integrations/', + }, + { + from: '/clients/python/api/', + to: '/platforms/python/legacy-sdk/api/', + }, + { + from: '/clients/python/advanced/', + to: '/platforms/python/legacy-sdk/advanced/', + }, + { + from: '/clients/python/usage/', + to: '/platforms/python/legacy-sdk/usage/', + }, + { + from: '/clients/python/transports/', + to: '/platforms/python/legacy-sdk/transports/', + }, + { + from: '/platforms/python/contextvars/', + to: '/platforms/python/troubleshooting/', + }, + { + from: '/platforms/dart/usage/advanced-usage/', + to: '/platforms/dart/integrations/http-integration/', + }, + { + from: '/platforms/dart/configuration/integrations/http-integration/', + to: '/platforms/dart/integrations/http-integration/', + }, + { + from: '/platforms/dart/configuration/integrations/file/', + to: '/platforms/dart/integrations/file/', + }, + { + from: '/platforms/dart/configuration/integrations/', + to: '/platforms/dart/integrations/', + }, + { + from: '/platforms/dart/configuration/integrations/logging/', + to: '/platforms/dart/integrations/logging/', + }, + { + from: '/platforms/dart/configuration/integrations/dio/', + to: '/platforms/dart/integrations/dio/', + }, + { + from: '/platforms/dart/configuration/integrations/firebase-remote-config/', + to: '/platforms/dart/integrations/firebase-remote-config/', + }, + { + from: '/quickstart/', + to: '/platforms/', + }, + { + from: '/clients/', + to: '/platforms/', + }, + { + from: '/platforms/perl/', + to: '/platforms/', + }, + { + from: '/platforms/node/guides/serverless-cloud/typescript/', + to: '/platforms/', + }, + { + from: '/clients/rust/', + to: '/platforms/rust/', + }, + { + from: '/platforms/rust/log/', + to: '/platforms/rust/', + }, + { + from: '/platforms/rust/profiling/', + to: '/platforms/rust/', + }, + { + from: '/platforms/rust/actix/', + to: '/platforms/rust/guides/actix-web/', + }, + { + from: '/platforms/rust/guides/actix-web/profiling/', + to: '/platforms/rust/guides/actix-web/', + }, + { + from: '/clients/java/modules/log4j2/', + to: '/platforms/java/legacy/log4j2/', + }, + { + from: '/clients/java/', + to: '/platforms/java/legacy/', + }, + { + from: '/clients/java/migration/', + to: '/platforms/java/legacy/migration/', + }, + { + from: '/clients/java/usage/', + to: '/platforms/java/legacy/usage/', + }, + { + from: '/clients/java/modules/appengine/', + to: '/platforms/java/legacy/google-app-engine/', + }, + { + from: '/clients/java/context/', + to: '/platforms/java/scope/', + }, + { + from: '/clients/java/modules/jul/', + to: '/platforms/java/guides/jul/', + }, + { + from: '/platforms/java/guides/jul/config/', + to: '/platforms/java/guides/jul/', + }, + { + from: '/clients/java/modules/logback/', + to: '/platforms/java/guides/logback/', + }, + { + from: '/platforms/java/guides/logback/config/', + to: '/platforms/java/guides/logback/', + }, + { + from: '/platforms/java/guides/spring/config/', + to: '/platforms/java/guides/spring/', + }, + { + from: '/platforms/java/guides/springboot/config/', + to: '/platforms/java/guides/spring-boot/', + }, + { + from: '/clients/php/integrations/monolog/', + to: '/platforms/php/', + }, + { + from: '/platforms/php/default-integrations/', + to: '/platforms/php/integrations/', + }, + { + from: '/platforms/php/guides/symfony/config/', + to: '/platforms/php/guides/symfony/configuration/symfony-options/', + }, + { + from: '/clients/php/integrations/symfony2/', + to: '/platforms/php/guides/symfony/', + }, + { + from: '/platforms/php/symfony/', + to: '/platforms/php/guides/symfony/', + }, + { + from: '/platforms/php/guides/symfony/performance/pm-integrations/', + to: '/platforms/php/guides/symfony/tracing/instrumentation/automatic-instrumentation/', + }, + { + from: '/clients/php/integrations/laravel/', + to: '/platforms/php/guides/laravel/', + }, + { + from: '/platforms/php/laravel/', + to: '/platforms/php/guides/laravel/', + }, + { + from: '/platforms/php/guides/laravel/lumen/', + to: '/platforms/php/guides/laravel/', + }, + { + from: '/platforms/php/guides/laravel/configuration/other-versions/laravel4/', + to: '/platforms/php/guides/laravel/other-versions/laravel4/', + }, + { + from: '/platforms/php/guides/laravel/other-versions/laravel5-6-7/', + to: '/platforms/php/guides/laravel/other-versions/', + }, + { + from: '/platforms/php/guides/laravel/configuration/other-versions/lumen/', + to: '/platforms/php/guides/laravel/other-versions/lumen/', + }, + { + from: '/clients/php/config/', + to: '/platforms/php/legacy-sdk/config/', + }, + { + from: '/clients/php/', + to: '/platforms/php/legacy-sdk/', + }, + { + from: '/clients/php/integrations/', + to: '/platforms/php/legacy-sdk/integrations/', + }, + { + from: '/clients/php/usage/', + to: '/platforms/php/legacy-sdk/usage/', + }, + { + from: '/platforms/dotnet/configuration/cli-integration/', + to: '/platforms/dotnet/configuration/msbuild/', + }, + { + from: '/platforms/dotnet/aspnetcore/', + to: '/platforms/dotnet/guides/aspnetcore/', + }, + { + from: '/platforms/dotnet/guides/aspnetcore/ignoring-exceptions/', + to: '/platforms/dotnet/guides/aspnetcore/', + }, + { + from: '/platforms/dotnet/log4net/', + to: '/platforms/dotnet/guides/log4net/', + }, + { + from: '/platforms/dotnet/microsoft-extensions-logging/', + to: '/platforms/dotnet/guides/extensions-logging/', + }, + { + from: '/platforms/dotnet/entityframework/', + to: '/platforms/dotnet/guides/entityframework/', + }, + { + from: '/platforms/dotnet/maui/', + to: '/platforms/dotnet/guides/maui/', + }, + { + from: '/platforms/dotnet/wpf/', + to: '/platforms/dotnet/guides/wpf/', + }, + { + from: '/platforms/dotnet/winforms/', + to: '/platforms/dotnet/guides/winforms/', + }, + { + from: '/platforms/dotnet/guides/winforms/ignoring-exceptions/', + to: '/platforms/dotnet/guides/winforms/', + }, + { + from: '/platforms/dotnet/google.cloud.functions/', + to: '/platforms/dotnet/guides/google-cloud-functions/', + }, + { + from: '/platforms/dotnet/winui/', + to: '/platforms/dotnet/guides/winui/', + }, + { + from: '/platforms/dotnet/serilog/', + to: '/platforms/dotnet/guides/serilog/', + }, + { + from: '/platforms/dotnet/uwp/', + to: '/platforms/dotnet/guides/uwp/', + }, + { + from: '/platforms/dotnet/nlog/', + to: '/platforms/dotnet/guides/nlog/', + }, + { + from: '/platforms/flutter/configuration/integrations/user-interaction-instrumentation/', + to: '/platforms/flutter/integrations/user-interaction-instrumentation/', + }, + { + from: '/platforms/flutter/configuration/integrations/', + to: '/platforms/flutter/integrations/', + }, + { + from: '/platforms/flutter/configuration/integrations/sqflite-instrumentation/', + to: '/platforms/flutter/integrations/sqflite-instrumentation/', + }, + { + from: '/platforms/flutter/usage/advanced-usage/', + to: '/platforms/flutter/troubleshooting/', + }, + { + from: '/platforms/android/manual-configuration/', + to: '/platforms/android/configuration/manual-init/', + }, + { + from: '/platforms/android/advanced-usage/', + to: '/platforms/android/configuration/using-ndk/', + }, + { + from: '/platforms/android/using-ndk/', + to: '/platforms/android/configuration/using-ndk/', + }, + { + from: '/platforms/android/gradle/', + to: '/platforms/android/configuration/gradle/', + }, + { + from: '/platforms/android/configuration/integrations/apollo3/', + to: '/platforms/android/integrations/apollo3/', + }, + { + from: '/platforms/android/configuration/integrations/', + to: '/platforms/android/integrations/', + }, + { + from: '/platforms/android/configuration/integrations/logcat/', + to: '/platforms/android/integrations/logcat/', + }, + { + from: '/platforms/android/configuration/jetpack-compose/', + to: '/platforms/android/integrations/jetpack-compose/', + }, + { + from: '/platforms/android/configuration/integrations/jetpack-compose/', + to: '/platforms/android/integrations/jetpack-compose/', + }, + { + from: '/platforms/android/configuration/integrations/navigation/', + to: '/platforms/android/integrations/navigation/', + }, + { + from: '/platforms/android/configuration/integrations/room-and-sqlite/', + to: '/platforms/android/integrations/room-and-sqlite/', + }, + { + from: '/platforms/android/configuration/integrations/file-io/', + to: '/platforms/android/integrations/file-io/', + }, + { + from: '/platforms/java/tracing/instrumentation/apollo/', + to: '/platforms/java/tracing/instrumentation/apollo4/', + }, + { + from: '/platforms/java/guides/spring/tracing/instrumentation/apollo/', + to: '/platforms/java/guides/spring/tracing/instrumentation/apollo4/', + }, + { + from: '/platforms/java/guides/spring-boot/tracing/instrumentation/apollo/', + to: '/platforms/java/guides/spring-boot/tracing/instrumentation/apollo4/', + }, + { + from: '/platforms/android/performance/instrumentation/apollo/', + to: '/platforms/android/integrations/apollo4/', + }, + { + from: '/platforms/android/configuration/integrations/apollo/', + to: '/platforms/android/integrations/apollo4/', + }, + { + from: '/platforms/android/integrations/apollo/', + to: '/platforms/android/integrations/apollo4/', + }, + { + from: '/platforms/android/configuration/integrations/fragment/', + to: '/platforms/android/integrations/fragment/', + }, + { + from: '/platforms/android/timber/', + to: '/platforms/android/integrations/timber/', + }, + { + from: '/platforms/android/guides/timber/', + to: '/platforms/android/integrations/timber/', + }, + { + from: '/platforms/android/configuration/integrations/timber/', + to: '/platforms/android/integrations/timber/', + }, + { + from: '/platforms/android/guides/okhttp/', + to: '/platforms/android/integrations/okhttp/', + }, + { + from: '/platforms/android/configuration/integrations/okhttp/', + to: '/platforms/android/integrations/okhttp/', + }, + { + from: '/platforms/android/migrate/', + to: '/platforms/android/migration/', + }, + { + from: '/platforms/android/proguard/', + to: '/platforms/android/enhance-errors/proguard/', + }, + { + from: '/platforms/android/source-context/', + to: '/platforms/android/enhance-errors/source-context/', + }, + { + from: '/platforms/android/kotlin-compiler-plugin/', + to: '/platforms/android/enhance-errors/kotlin-compiler-plugin/', + }, + { + from: '/platforms/javascript/configuration/integrations/plugin/', + to: '/platforms/javascript/configuration/integrations/', + }, + { + from: '/platforms/javascript/configuration/integrations/default/', + to: '/platforms/javascript/configuration/integrations/', + }, + { + from: '/platforms/javascript/integrations/custom/', + to: '/platforms/javascript/configuration/integrations/custom/', + }, + { + from: '/platforms/javascript/loader/', + to: '/platforms/javascript/install/loader/', + }, + { + from: '/platforms/javascript/install/lazy-load-sentry/', + to: '/platforms/javascript/install/loader/', + }, + { + from: '/platforms/javascript/install/cdn/', + to: '/platforms/javascript/install/loader/', + }, + { + from: '/platforms/javascript/integrations/rrweb/', + to: '/platforms/javascript/session-replay/', + }, + { + from: '/platforms/javascript/configuration/integrations/rrweb/', + to: '/platforms/javascript/session-replay/', + }, + { + from: '/platforms/javascript/guides/angular/configuration/integrations/rrweb/', + to: '/platforms/javascript/session-replay/', + }, + { + from: '/platforms/javascript/guides/capacitor/configuration/integrations/rrweb/', + to: '/platforms/javascript/session-replay/', + }, + { + from: '/platforms/javascript/guides/cordova/configuration/integrations/rrweb/', + to: '/platforms/javascript/session-replay/', + }, + { + from: '/platforms/javascript/guides/ember/configuration/integrations/rrweb/', + to: '/platforms/javascript/session-replay/', + }, + { + from: '/platforms/javascript/guides/gatsby/configuration/integrations/rrweb/', + to: '/platforms/javascript/session-replay/', + }, + { + from: '/platforms/javascript/guides/nextjs/configuration/integrations/rrweb/', + to: '/platforms/javascript/session-replay/', + }, + { + from: '/platforms/javascript/guides/react/configuration/integrations/rrweb/', + to: '/platforms/javascript/session-replay/', + }, + { + from: '/platforms/javascript/guides/remix/configuration/integrations/rrweb/', + to: '/platforms/javascript/session-replay/', + }, + { + from: '/platforms/javascript/guides/svelte/configuration/integrations/rrweb/', + to: '/platforms/javascript/session-replay/', + }, + { + from: '/platforms/javascript/guides/vue/configuration/integrations/rrweb/', + to: '/platforms/javascript/session-replay/', + }, + { + from: '/platforms/javascript/guides/wasm/configuration/integrations/rrweb/', + to: '/platforms/javascript/session-replay/', + }, + { + from: '/platforms/javascript/guides/remix/session-replay/custom-instrumentation/', + to: '/platforms/javascript/session-replay/', + }, + { + from: '/platforms/javascript/guides/remix/session-replay/custom-instrumentation/privacy-configuration/', + to: '/platforms/javascript/session-replay/', + }, + { + from: '/platforms/javascript/guides/gatsby/session-replay/custom-instrumentation/', + to: '/platforms/javascript/session-replay/', + }, + { + from: '/platforms/unreal/setup-crashreport/', + to: '/platforms/unreal/configuration/setup-crashreporter/', + }, + { + from: '/platforms/unreal/setup-crashreporter/', + to: '/platforms/unreal/configuration/setup-crashreporter/', + }, + { + from: '/platforms/unreal/debug-symbols/', + to: '/platforms/unreal/configuration/debug-symbols/', + }, + { + from: '/clients/ruby/config/', + to: '/platforms/ruby/configuration/options/', + }, + { + from: '/platforms/ruby/config/', + to: '/platforms/ruby/configuration/options/', + }, + { + from: '/contributing/approach/write-getting-started/', + to: '/contributing/approach/sdk-docs/write-getting-started/', + }, + { + from: '/contributing/approach/write-data-management/', + to: '/contributing/approach/sdk-docs/write-data-management/', + }, + { + from: '/contributing/approach/write-sdk-docs/', + to: '/contributing/approach/sdk-docs/', + }, + { + from: '/contributing/approach/write-configuration/', + to: '/contributing/approach/sdk-docs/write-configuration/', + }, + { + from: '/contributing/approach/common_content/', + to: '/contributing/approach/sdk-docs/common_content/', + }, + { + from: '/contributing/approach/write-performance/', + to: '/contributing/approach/sdk-docs/write-performance/', + }, + { + from: '/contributing/approach/write-enriching-events/', + to: '/contributing/approach/sdk-docs/write-enriching-events/', + }, + { + from: '/contributing/approach/write-usage/', + to: '/contributing/approach/sdk-docs/write-usage/', + }, + { + from: '/learn/releases/', + to: '/product/releases/', + }, + { + from: '/workflow/releases/', + to: '/product/releases/', + }, + { + from: '/workflow/releases/index/', + to: '/product/releases/', + }, + { + from: '/workflow/releases/release-automation/', + to: '/product/releases/', + }, + { + from: '/product/releases/release-automation/', + to: '/product/releases/', + }, + { + from: '/workflow/releases/health/', + to: '/product/releases/health/', + }, + { + from: '/product/releases/health/crash/', + to: '/product/releases/health/', + }, + { + from: '/product/releases/health/setup/', + to: '/product/releases/setup/', + }, + { + from: '/workflow/releases/release-automation/travis-ci/', + to: '/product/releases/setup/release-automation/travis-ci/', + }, + { + from: '/workflow/releases/release-automation/circleci/', + to: '/product/releases/setup/release-automation/circleci/', + }, + { + from: '/workflow/releases/release-automation/netlify/', + to: '/product/releases/setup/release-automation/netlify/', + }, + { + from: '/workflow/releases/release-automation/jenkins/', + to: '/product/releases/setup/release-automation/jenkins/', + }, + { + from: '/workflow/releases/release-automation/bitbucket-pipelines/', + to: '/product/releases/setup/release-automation/bitbucket-pipelines/', + }, + { + from: '/workflow/releases/release-automation/github-actions/', + to: '/product/releases/setup/release-automation/github-actions/', + }, + { + from: '/product/releases/setup/manual-setup-releases/', + to: '/product/releases/associate-commits/', + }, + { + from: '/product/releases/health/release-details/', + to: '/product/releases/release-details/', + }, + { + from: '/guides/integrate-frontend/upload-source-maps/', + to: '/product/sentry-basics/integrate-frontend/upload-source-maps/', + }, + { + from: '/product/sentry-basics/guides/integrate-frontend/upload-source-maps/', + to: '/product/sentry-basics/integrate-frontend/upload-source-maps/', + }, + { + from: '/guides/integrate-frontend/configure-scms/', + to: '/product/sentry-basics/integrate-frontend/configure-scms/', + }, + { + from: '/product/sentry-basics/guides/integrate-frontend/configure-scms/', + to: '/product/sentry-basics/integrate-frontend/configure-scms/', + }, + { + from: '/guides/integrate-frontend/', + to: '/product/sentry-basics/integrate-frontend/', + }, + { + from: '/product/sentry-basics/guides/integrate-frontend/', + to: '/product/sentry-basics/integrate-frontend/', + }, + { + from: '/product/sentry-basics/frontend/create-new-project/', + to: '/product/sentry-basics/integrate-frontend/', + }, + { + from: '/guides/integrate-frontend/create-new-project/', + to: '/product/sentry-basics/integrate-frontend/create-new-project/', + }, + { + from: '/product/sentry-basics/guides/integrate-frontend/create-new-project/', + to: '/product/sentry-basics/integrate-frontend/create-new-project/', + }, + { + from: '/guides/integrate-frontend/initialize-sentry-sdk/', + to: '/product/sentry-basics/integrate-frontend/initialize-sentry-sdk/', + }, + { + from: '/product/sentry-basics/guides/integrate-frontend/initialize-sentry-sdk/', + to: '/product/sentry-basics/integrate-frontend/initialize-sentry-sdk/', + }, + { + from: '/guides/integrate-frontend/generate-first-error/', + to: '/product/sentry-basics/integrate-frontend/generate-first-error/', + }, + { + from: '/product/sentry-basics/guides/integrate-frontend/generate-first-error/', + to: '/product/sentry-basics/integrate-frontend/generate-first-error/', + }, + { + from: '/basics/', + to: '/product/sentry-basics/', + }, + { + from: '/product/sentry-basics/guides/', + to: '/product/sentry-basics/', + }, + { + from: '/product/sentry-basics/tracing/', + to: '/product/sentry-basics/concepts/tracing/', + }, + { + from: '/performance/distributed-tracing/', + to: '/product/sentry-basics/concepts/tracing/distributed-tracing/', + }, + { + from: '/performance-monitoring/distributed-tracing/', + to: '/product/sentry-basics/concepts/tracing/distributed-tracing/', + }, + { + from: '/product/sentry-basics/guides/error-tracing/', + to: '/product/sentry-basics/concepts/tracing/distributed-tracing/', + }, + { + from: '/product/performance/distributed-tracing/', + to: '/product/sentry-basics/concepts/tracing/distributed-tracing/', + }, + { + from: '/product/sentry-basics/tracing/distributed-tracing/', + to: '/product/sentry-basics/concepts/tracing/distributed-tracing/', + }, + { + from: '/product/performance/trace-view/', + to: '/product/sentry-basics/concepts/tracing/trace-view/', + }, + { + from: '/product/sentry-basics/tracing/trace-view/', + to: '/product/sentry-basics/concepts/tracing/trace-view/', + }, + { + from: '/product/performance/event-detail/', + to: '/concepts/key-terms/tracing/trace-view/', + }, + { + from: '/product/sentry-basics/tracing/event-detail/', + to: '/product/sentry-basics/concepts/key-terms/tracing/trace-view/', + }, + { + from: '/concepts/key-terms/tracing/event-detail/', + to: '/concepts/key-terms/tracing/trace-view/', + }, + { + from: '/product/sentry-basics/dsn-explainer/', + to: '/product/sentry-basics/concepts/dsn-explainer/', + }, + { + from: '/enriching-error-data/environments/', + to: '/product/sentry-basics/concepts/environments/', + }, + { + from: '/learn/environments/', + to: '/product/sentry-basics/concepts/environments/', + }, + { + from: '/product/sentry-basics/environments/', + to: '/product/sentry-basics/concepts/environments/', + }, + { + from: '/product/sentry-basics/key-terms/', + to: '/product/sentry-basics/concepts/key-terms/', + }, + { + from: '/guides/enrich-data/', + to: '/product/sentry-basics/concepts/enrich-data/', + }, + { + from: '/product/sentry-basics/guides/enrich-data/', + to: '/product/sentry-basics/concepts/enrich-data/', + }, + { + from: '/product/sentry-basics/enrich-data/', + to: '/product/sentry-basics/concepts/enrich-data/', + }, + { + from: '/guides/integrate-backend/capturing-errors/', + to: '/product/sentry-basics/integrate-backend/capturing-errors/', + }, + { + from: '/product/sentry-basics/guides/integrate-backend/capturing-errors/', + to: '/product/sentry-basics/integrate-backend/capturing-errors/', + }, + { + from: '/guides/integrate-backend/', + to: '/product/sentry-basics/integrate-backend/', + }, + { + from: '/product/sentry-basics/guides/integrate-backend/', + to: '/product/sentry-basics/integrate-backend/', + }, + { + from: '/guides/integrate-backend/configuration-options/', + to: '/product/sentry-basics/integrate-backend/configuration-options/', + }, + { + from: '/product/sentry-basics/guides/integrate-backend/configuration-options/', + to: '/product/sentry-basics/integrate-backend/configuration-options/', + }, + { + from: '/guides/integrate-backend/getting-started/', + to: '/product/sentry-basics/integrate-backend/getting-started/', + }, + { + from: '/product/sentry-basics/guides/integrate-backend/getting-started/', + to: '/product/sentry-basics/integrate-backend/getting-started/', + }, + { + from: '/ssl/', + to: '/security-legal-pii/security/ssl/', + }, + { + from: '/ip-ranges/', + to: '/security-legal-pii/security/ip-ranges/', + }, + { + from: '/learn/security-policy-reporting/', + to: '/security-legal-pii/security/security-policy-reporting/', + }, + { + from: '/error-reporting/security-policy-reporting/', + to: '/security-legal-pii/security/security-policy-reporting/', + }, + { + from: '/platforms/javascript/troubleshooting/session-replay/', + to: '/platforms/javascript/session-replay/troubleshooting/', + }, + { + from: '/platforms/javascript/guides/:guide/troubleshooting/session-replay/', + to: '/platforms/javascript/session-replay/troubleshooting/', + }, + { + from: '/sdks/javascript/config/sourcemaps/', + to: '/platforms/javascript/sourcemaps/', + }, + { + from: '/platforms/javascript/sourcemaps/generation/', + to: '/platforms/javascript/sourcemaps/', + }, + { + from: '/platforms/javascript/sourcemaps/availability/', + to: '/platforms/javascript/sourcemaps/', + }, + { + from: '/platforms/javascript/configuration/sourcemaps/', + to: '/platforms/javascript/sourcemaps/', + }, + { + from: '/platforms/javascript/guides/docPlatform/sourcemaps/', + to: '/platforms/javascript/sourcemaps/', + }, + { + from: '/platforms/javascript/guides/:guide/sourcemaps/multiple-origins/', + to: '/platforms/javascript/guides/:guide/sourcemaps/', + }, + { + from: '/platforms/javascript/guides/:guide/sourcemaps/uploading-without-debug-ids/', + to: '/platforms/javascript/guides/:guide/sourcemaps/', + }, + { + from: '/platforms/javascript/sourcemaps/uploading-without-debug-ids/', + to: '/platforms/javascript/sourcemaps/troubleshooting_js/', + }, + { + from: '/platforms/javascript/sourcemaps/troubleshooting_js/verify-artifact-distribution-value-matches-value-configured-in-your-sdk/', + to: '/platforms/javascript/sourcemaps/troubleshooting_js/', + }, + { + from: '/platforms/javascript/sourcemaps/troubleshooting_js/uploading-without-debug-ids/', + to: '/platforms/javascript/sourcemaps/troubleshooting_js/legacy-uploading-methods/', + }, + { + from: '/platforms/javascript/sourcemaps/tools/webpack/', + to: '/platforms/javascript/sourcemaps/uploading/webpack/', + }, + { + from: '/platforms/javascript/sourcemaps/hosting-publicly/', + to: '/platforms/javascript/sourcemaps/uploading/hosting-publicly/', + }, + { + from: '/platforms/javascript/guides/cordova/troubleshooting/supported-browsers/', + to: '/platforms/javascript/guides/cordova/troubleshooting/', + }, + { + from: '/clients/cordova/ionic/', + to: '/platforms/javascript/guides/cordova/ionic/', + }, + { + from: '/sdks/react/integrations/vue-router/', + to: '/platforms/javascript/guides/vue/features/vue-router/', + }, + { + from: '/platforms/javascript/guides/vue/configuration/integrations/vue-router/', + to: '/platforms/javascript/guides/vue/features/vue-router/', + }, + { + from: '/platforms/javascript/vue/', + to: '/platforms/javascript/guides/vue/', + }, + { + from: '/clients/javascript/integrations/vue/', + to: '/platforms/javascript/guides/vue/', + }, + { + from: '/clients/javascript/integrations/angular/', + to: '/platforms/javascript/guides/angular/angular1/', + }, + { + from: '/platforms/javascript/gatsby/', + to: '/platforms/javascript/guides/gatsby/', + }, + { + from: '/platforms/javascript/guides/gatsby/errors/breadcrumbs/', + to: '/platforms/javascript/guides/gatsby/', + }, + { + from: '/clients/javascript/integrations/ember/', + to: '/platforms/javascript/guides/ember/', + }, + { + from: '/platforms/javascript/ember/', + to: '/platforms/javascript/guides/ember/', + }, + { + from: '/platforms/javascript/guides/electron/configuration/integrations/optional/', + to: '/platforms/javascript/guides/electron/configuration/integrations/electronminidump/', + }, + { + from: '/clients/electron/', + to: '/platforms/javascript/guides/electron/', + }, + { + from: '/platforms/javascript/electron/', + to: '/platforms/javascript/guides/electron/', + }, + { + from: '/platforms/electron/', + to: '/platforms/javascript/guides/electron/', + }, + { + from: '/platforms/javascript/electron/sourcemaps/', + to: '/platforms/javascript/guides/electron/', + }, + { + from: '/platforms/javascript/guides/electron/lazy-load-sentry/', + to: '/platforms/javascript/guides/electron/', + }, + { + from: '/sdks/react/integrations/redux/', + to: '/platforms/javascript/guides/react/features/redux/', + }, + { + from: '/platforms/javascript/guides/react/configuration/integrations/redux/', + to: '/platforms/javascript/guides/react/features/redux/', + }, + { + from: '/platforms/javascript/guides/react/integrations/react-router/', + to: '/platforms/javascript/guides/react/features/react-router/', + }, + { + from: '/platforms/javascript/guides/react/configuration/integrations/react-router/', + to: '/platforms/javascript/guides/react/features/react-router/', + }, + { + from: '/platforms/javascript/guides/session-replay/', + to: '/platforms/javascript/session-replay/', + }, + { + from: '/platforms/javascript/react/', + to: '/platforms/javascript/guides/react/', + }, + { + from: '/clients/javascript/integrations/react/', + to: '/platforms/javascript/guides/react/', + }, + { + from: '/sdks/react/', + to: '/platforms/javascript/guides/react/', + }, + { + from: '/platforms/react/', + to: '/platforms/javascript/guides/react/', + }, + { + from: '/clients/javascript/config/', + to: '/platforms/javascript/legacy-sdk/config/', + }, + { + from: '/clients/javascript/install/', + to: '/platforms/javascript/legacy-sdk/install/', + }, + { + from: '/clients/javascript/sourcemaps/', + to: '/platforms/javascript/legacy-sdk/sourcemaps/', + }, + { + from: '/clients/javascript/integrations/', + to: '/platforms/javascript/legacy-sdk/integrations/', + }, + { + from: '/clients/javascript/usage/', + to: '/platforms/javascript/legacy-sdk/usage/', + }, + { + from: '/clients/javascript/tips/', + to: '/platforms/javascript/legacy-sdk/tips/', + }, + { + from: '/platforms/node/pluggable-integrations/', + to: '/platforms/javascript/guides/node/configuration/integrations/', + }, + { + from: '/platforms/node/default-integrations/', + to: '/platforms/javascript/guides/node/configuration/integrations/', + }, + { + from: '/platforms/node/integrations/default-integrations/', + to: '/platforms/javascript/guides/node/configuration/integrations/', + }, + { + from: '/platforms/javascript/guides/:guide/configuration/integrations/pluggable-integrations/', + to: '/platforms/javascript/guides/:guide/configuration/integrations/', + }, + { + from: '/platforms/javascript/guides/:guide/configuration/integrations/default-integrations/', + to: '/platforms/javascript/guides/:guide/configuration/integrations/', + }, + { + from: '/platforms/node/sourcemaps/troubleshooting_js/uploading-without-debug-ids/', + to: '/platforms/javascript/guides/node/sourcemaps/troubleshooting_js/legacy-uploading-methods/', + }, + { + from: '/platforms/node/gcp_functions/', + to: '/platforms/javascript/guides/gcp-functions/', + }, + { + from: '/clients/node/integrations/express/', + to: '/platforms/javascript/guides/express/', + }, + { + from: '/platforms/node/express/', + to: '/platforms/javascript/guides/express/', + }, + { + from: '/platforms/node/guides/express/integrations/default-integrations/', + to: '/platforms/javascript/guides/express/', + }, + { + from: '/platforms/node/aws_lambda/', + to: '/platforms/javascript/guides/aws-lambda/', + }, + { + from: '/platforms/node/azure_functions/', + to: '/platforms/javascript/guides/azure-functions/', + }, + { + from: '/platforms/node/guides/azure-functions/typescript/', + to: '/platforms/javascript/guides/azure-functions/', + }, + { + from: '/clients/node/integrations/connect/', + to: '/platforms/javascript/guides/connect/', + }, + { + from: '/platforms/node/connect/', + to: '/platforms/javascript/guides/connect/', + }, + { + from: '/clients/node/integrations/koa/', + to: '/platforms/javascript/guides/koa/', + }, + { + from: '/platforms/node/koa/', + to: '/platforms/javascript/guides/koa/', + }, + { + from: '/platforms/node/guides/koa/typescript/', + to: '/platforms/javascript/guides/koa/', + }, + { + from: '/clients/node/config/', + to: '/platforms/javascript/guides/node/legacy-sdk/config/', + }, + { + from: '/clients/node/coffeescript/', + to: '/platforms/javascript/guides/node/legacy-sdk/coffeescript/', + }, + { + from: '/clients/node/sourcemaps/', + to: '/platforms/javascript/guides/node/legacy-sdk/sourcemaps/', + }, + { + from: '/clients/node/typescript/', + to: '/platforms/javascript/guides/node/legacy-sdk/typescript/', + }, + { + from: '/platforms/node/typescript/', + to: '/platforms/javascript/guides/node/legacy-sdk/typescript/', + }, + { + from: '/clients/node/integrations/', + to: '/platforms/javascript/guides/node/legacy-sdk/integrations/', + }, + { + from: '/clients/node/usage/', + to: '/platforms/javascript/guides/node/legacy-sdk/usage/', + }, + { + from: '/platforms/node/usage/set-level/', + to: '/platforms/javascript/guides/node/enriching-events/level/', + }, + { + from: '/platforms/node/usage/sdk-fingerprinting/', + to: '/platforms/javascript/guides/node/enriching-events/fingerprinting/', + }, + { + from: '/platforms/node/guides/:guide/usage/set-level/', + to: '/platforms/javascript/guides/:guide/enriching-events/level/', + }, + { + from: '/platforms/node/guides/:guide/usage/sdk-fingerprinting/', + to: '/platforms/javascript/guides/:guide/enriching-events/fingerprinting/', + }, + { + from: '/platforms/javascript/usage/set-level/', + to: '/platforms/javascript/enriching-events/level/', + }, + { + from: '/platforms/javascript/usage/sdk-fingerprinting/', + to: '/platforms/javascript/enriching-events/fingerprinting/', + }, + { + from: '/platforms/javascript/guides/:guide/usage/set-level/', + to: '/platforms/javascript/guides/:guide/enriching-events/level/', + }, + { + from: '/platforms/javascript/guides/:guide/usage/sdk-fingerprinting/', + to: '/platforms/javascript/guides/:guide/enriching-events/fingerprinting/', + }, + { + from: '/platforms/javascript/guides/:guide/tracing/instrumentation/opentelemetry/', + to: '/platforms/javascript/guides/:guide/opentelemetry/', + }, + // START redirecting deprecated generic metrics docs to concepts + { + from: '/platforms/apple/metrics/', + to: '/concepts/key-terms/tracing/span-metrics/', + }, + { + from: '/platforms/unity/metrics/', + to: '/concepts/key-terms/tracing/span-metrics/', + }, + // END redirecting deprecated generic metrics docs to concepts + { + from: '/learn/cli/configuration/', + to: '/cli/configuration/', + }, + { + from: '/learn/cli/', + to: '/cli/', + }, + { + from: '/learn/cli/releases/', + to: '/cli/releases/', + }, + { + from: '/cli/metrics/', + to: '/cli/send-event/', + }, + { + from: '/workflow/alerts-notifications/', + to: '/product/alerts/', + }, + { + from: '/product/alerts-notifications/', + to: '/product/alerts/', + }, + { + from: '/product/sentry-basics/guides/alert-notifications/', + to: '/product/alerts/', + }, + { + from: '/product/alerts/create-alerts/best-practices/', + to: '/product/alerts/best-practices/', + }, + { + from: '/product/sentry-basics/guides/alert-notifications/routing-alerts/', + to: '/product/alerts/create-alerts/routing-alerts/', + }, + { + from: '/product/sentry-basics/guides/alert-notifications/issue-alerts/', + to: '/product/alerts/create-alerts/issue-alert-config/', + }, + { + from: '/product/alerts/alert-settings/', + to: '/product/alerts/create-alerts/issue-alert-config/', + }, + { + from: '/product/alerts-notifications/alert-settings/', + to: '/product/alerts/create-alerts/issue-alert-config/', + }, + { + from: '/product/sentry-basics/guides/alert-notifications/metric-alerts/', + to: '/product/alerts/create-alerts/metric-alert-config/', + }, + { + from: '/workflow/alerts-notifications/alerts/', + to: '/product/alerts/alert-types/', + }, + { + from: '/workflow/notifications/alerts/', + to: '/product/alerts/alert-types/', + }, + { + from: '/product/alerts-notifications/alerts/', + to: '/product/alerts/alert-types/', + }, + { + from: '/product/alerts-notifications/metric-alerts/', + to: '/product/alerts/alert-types/', + }, + { + from: '/product/alerts-notifications/issue-alerts/', + to: '/product/alerts/alert-types/', + }, + { + from: '/product/alerts/create-alerts/crash-rate-alert-config/', + to: '/product/alerts/alert-types/', + }, + { + from: '/workflow/alerts-notifications/notifications/', + to: '/product/alerts/notifications/', + }, + { + from: '/workflow/notifications/workflow/', + to: '/product/alerts/notifications/', + }, + { + from: '/workflow/notifications/', + to: '/product/alerts/notifications/', + }, + { + from: '/product/notifications/', + to: '/product/alerts/notifications/', + }, + { + from: '/learn/notifications/', + to: '/product/alerts/notifications/', + }, + { + from: '/product/alerts-notifications/notifications/', + to: '/product/alerts/notifications/', + }, + { + from: '/product/sentry-basics/guides/alert-notifications/notifications/', + to: '/product/alerts/notifications/', + }, + { + from: '/workflow/integrations/amazon-sqs/', + to: '/organization/integrations/data-forwarding/amazon-sqs/', + }, + { + from: '/workflow/integrations/legacy-integrations/amazon-sqs/', + to: '/organization/integrations/data-forwarding/amazon-sqs/', + }, + { + from: '/product/integrations/amazon-sqs/', + to: '/organization/integrations/data-forwarding/amazon-sqs/', + }, + { + from: '/product/integrations/segment/', + to: '/organization/integrations/data-forwarding/segment/', + }, + { + from: '/workflow/integrations/splunk/', + to: '/organization/integrations/data-forwarding/splunk/', + }, + { + from: '/workflow/integrations/legacy-integrations/splunk/', + to: '/organization/integrations/data-forwarding/splunk/', + }, + { + from: '/product/integrations/splunk/', + to: '/organization/integrations/data-forwarding/splunk/', + }, + { + from: '/organization/integrations/data-visualization/splunk/', + to: '/organization/integrations/data-forwarding/splunk/', + }, + { + from: '/organization/integrations/data-visualization/segment/', + to: '/organization/integrations/data-forwarding/segment/', + }, + { + from: '/organization/integrations/data-visualization/amazon-sqs/', + to: '/organization/integrations/data-forwarding/amazon-sqs/', + }, + { + from: '/organization/integrations/data-visualization/grafana/', + to: '/organization/integrations/data-forwarding/grafana/', + }, + { + from: '/organization/integrations/data-visualization/', + to: '/organization/integrations/data-forwarding/', + }, + { + from: '/concepts/data-management/data-forwarding/', + to: '/organization/integrations/data-forwarding/', + }, + { + from: '/workflow/integrations/gitlab/', + to: '/organization/integrations/source-code-mgmt/gitlab/', + }, + { + from: '/workflow/integrations/global-integrations/gitlab/', + to: '/organization/integrations/source-code-mgmt/gitlab/', + }, + { + from: '/product/integrations/gitlab/', + to: '/organization/integrations/source-code-mgmt/gitlab/', + }, + { + from: '/workflow/integrations/azure-devops/', + to: '/organization/integrations/source-code-mgmt/azure-devops/', + }, + { + from: '/workflow/integrations/legacy-integrations/azure-devops/', + to: '/organization/integrations/source-code-mgmt/azure-devops/', + }, + { + from: '/workflow/integrations/global-integrations/azure-devops/', + to: '/organization/integrations/source-code-mgmt/azure-devops/', + }, + { + from: '/product/integrations/azure-devops/', + to: '/organization/integrations/source-code-mgmt/azure-devops/', + }, + { + from: '/integrations/azure-devops/', + to: '/organization/integrations/source-code-mgmt/azure-devops/', + }, + { + from: '/workflow/integrations/github/', + to: '/organization/integrations/source-code-mgmt/github/', + }, + { + from: '/workflow/integrations/legacy-integrations/github/', + to: '/organization/integrations/source-code-mgmt/github/', + }, + { + from: '/workflow/integrations/global-integrations/github/', + to: '/organization/integrations/source-code-mgmt/github/', + }, + { + from: '/product/integrations/github/', + to: '/organization/integrations/source-code-mgmt/github/', + }, + { + from: '/integrations/github-enterprise/', + to: '/organization/integrations/source-code-mgmt/github/', + }, + { + from: '/integrations/github/', + to: '/organization/integrations/source-code-mgmt/github/', + }, + { + from: '/workflow/integrations/bitbucket/', + to: '/organization/integrations/source-code-mgmt/bitbucket/', + }, + { + from: '/workflow/integrations/legacy-integrations/bitbucket/', + to: '/organization/integrations/source-code-mgmt/bitbucket/', + }, + { + from: '/workflow/integrations/global-integrations/bitbucket/', + to: '/organization/integrations/source-code-mgmt/bitbucket/', + }, + { + from: '/product/integrations/bitbucket/', + to: '/organization/integrations/source-code-mgmt/bitbucket/', + }, + { + from: '/integrations/bitbucket/', + to: '/organization/integrations/source-code-mgmt/bitbucket/', + }, + { + from: '/integrations/', + to: '/organization/integrations/', + }, + { + from: '/workflow/integrations/', + to: '/organization/integrations/', + }, + { + from: '/workflow/integrations/legacy-integrations/', + to: '/organization/integrations/', + }, + { + from: '/workflow/integrations/global-integrations/', + to: '/organization/integrations/', + }, + { + from: '/workflow/legacy-integrations/', + to: '/organization/integrations/', + }, + { + from: '/workflow/global-integrations/', + to: '/organization/integrations/', + }, + { + from: '/workflow/integrations/rookout/', + to: '/organization/integrations/debugging/rookout/', + }, + { + from: '/workflow/integrations/global-integrations/rookout/', + to: '/organization/integrations/debugging/rookout/', + }, + { + from: '/product/integrations/rookout/', + to: '/organization/integrations/debugging/rookout/', + }, + { + from: '/product/integrations/gcp-cloud-run/', + to: '/organization/integrations/cloud-monitoring/gcp-cloud-run/', + }, + { + from: '/product/integrations/aws-lambda/', + to: '/organization/integrations/cloud-monitoring/aws-lambda/', + }, + { + from: '/product/integrations/cloudflare-workers/', + to: '/platforms/javascript/guides/cloudflare/', + }, + { + from: '/product/integrations/vanta/', + to: '/organization/integrations/compliance/vanta/', + }, + { + from: '/product/integrations/truto/', + to: '/organization/integrations/compliance/truto/', + }, + { + from: '/integrations/discord/', + to: '/organization/integrations/notification-incidents/discord/', + }, + { + from: '/product/integrations/discord/', + to: '/organization/integrations/notification-incidents/discord/', + }, + { + from: '/product/accounts/early-adopter-features/discord/', + to: '/organization/integrations/notification-incidents/discord/', + }, + { + from: '/workflow/integrations/pagerduty/', + to: '/organization/integrations/notification-incidents/pagerduty/', + }, + { + from: '/workflow/integrations/legacy-integrations/pagerduty/', + to: '/organization/integrations/notification-incidents/pagerduty/', + }, + { + from: '/workflow/integrations/global-integrations/pagerduty/', + to: '/organization/integrations/notification-incidents/pagerduty/', + }, + { + from: '/product/integrations/pagerduty/', + to: '/organization/integrations/notification-incidents/pagerduty/', + }, + { + from: '/product/integrations/notification-incidents/amixr/', + to: '/organization/integrations/notification-incidents/', + }, + { + from: '/product/integrations/msteams/', + to: '/organization/integrations/notification-incidents/msteams/', + }, + { + from: '/product/integrations/rootly/', + to: '/organization/integrations/notification-incidents/rootly/', + }, + { + from: '/product/integrations/spikesh/', + to: '/product/integrations/notification-incidents/spikesh/', + }, + { + from: '/workflow/integrations/slack/', + to: '/product/integrations/notification-incidents/slack/', + }, + { + from: '/workflow/integrations/legacy-integrations/slack/', + to: '/product/integrations/notification-incidents/slack/', + }, + { + from: '/workflow/integrations/global-integrations/slack/', + to: '/product/integrations/notification-incidents/slack/', + }, + { + from: '/integrations/slack/', + to: '/product/integrations/notification-incidents/slack/', + }, + { + from: '/product/integrations/slack/', + to: '/product/integrations/notification-incidents/slack/', + }, + { + from: '/workflow/integrations/integration-platform/ui-components/', + to: '/product/integrations/integration-platform/ui-components/', + }, + { + from: '/workflow/integrations/integration-platform/', + to: '/product/integrations/integration-platform/', + }, + { + from: '/workflow/integrations/integration-platform/webhooks/', + to: '/product/integrations/integration-platform/webhooks/', + }, + { + from: '/product/integrations/openreplay/', + to: '/product/integrations/session-replay/openreplay/', + }, + { + from: '/product/integrations/fullstory/', + to: '/product/integrations/session-replay/fullstory/', + }, + { + from: '/product/integrations/jam/', + to: '/product/integrations/session-replay/jam/', + }, + { + from: '/product/integrations/atlas/', + to: '/product/integrations/session-replay/atlas/', + }, + { + from: '/workflow/integrations/split/', + to: '/product/integrations/feature-flag/split/', + }, + { + from: '/workflow/integrations/global-integrations/split/', + to: '/product/integrations/feature-flag/split/', + }, + { + from: '/product/integrations/split/', + to: '/product/integrations/feature-flag/split/', + }, + { + from: '/product/integrations/launchdarkly/', + to: '/product/integrations/feature-flag/launchdarkly/', + }, + { + from: '/workflow/integrations/vercel/', + to: '/product/integrations/deployment/vercel/', + }, + { + from: '/workflow/integrations/global-integrations/vercel/', + to: '/product/integrations/deployment/vercel/', + }, + { + from: '/product/integrations/vercel/', + to: '/product/integrations/deployment/vercel/', + }, + { + from: '/workflow/integrations/heroku/', + to: '/product/integrations/deployment/heroku/', + }, + { + from: '/workflow/integrations/legacy-integrations/gitlab/', + to: '/product/integrations/deployment/heroku/', + }, + { + from: '/product/integrations/heroku/', + to: '/product/integrations/deployment/heroku/', + }, + { + from: '/workflow/integrations/clubhouse/', + to: '/product/integrations/issue-tracking/shortcut/', + }, + { + from: '/workflow/integrations/legacy-integrations/clubhouse/', + to: '/product/integrations/issue-tracking/shortcut/', + }, + { + from: '/workflow/integrations/global-integrations/clubhouse/', + to: '/product/integrations/issue-tracking/shortcut/', + }, + { + from: '/product/integrations/clubhouse/', + to: '/product/integrations/issue-tracking/shortcut/', + }, + { + from: '/product/integrations/issue-tracking/clubhouse/', + to: '/product/integrations/issue-tracking/shortcut/', + }, + { + from: '/product/integrations/shortcut/', + to: '/product/integrations/issue-tracking/shortcut/', + }, + { + from: '/product/integrations/project-mgmt/shortcut/', + to: '/product/integrations/issue-tracking/shortcut/', + }, + { + from: '/product/integrations/sourcegraph/', + to: '/product/integrations/issue-tracking/sourcegraph/', + }, + { + from: '/product/integrations/incidentio/', + to: '/product/integrations/issue-tracking/incidentio/', + }, + { + from: '/product/integrations/height/', + to: '/product/integrations/issue-tracking/height/', + }, + { + from: '/product/integrations/project-mgmt/', + to: '/product/integrations/issue-tracking/', + }, + { + from: '/product/integrations/linear/', + to: '/product/integrations/issue-tracking/linear/', + }, + { + from: '/product/integrations/project-mgmt/linear/', + to: '/product/integrations/issue-tracking/linear/', + }, + { + from: '/workflow/integrations/clickup/', + to: '/product/integrations/issue-tracking/clickup/', + }, + { + from: '/integrations/clickup/', + to: '/product/integrations/issue-tracking/clickup/', + }, + { + from: '/workflow/integrations/global-integrations/clickup/', + to: '/product/integrations/issue-tracking/clickup/', + }, + { + from: '/product/integrations/clickup/', + to: '/product/integrations/issue-tracking/clickup/', + }, + { + from: '/product/integrations/project-mgmt/clickup/', + to: '/product/integrations/issue-tracking/clickup/', + }, + { + from: '/workflow/integrations/jira-server/', + to: '/product/integrations/issue-tracking/jira/', + }, + { + from: '/workflow/integrations/jira/', + to: '/product/integrations/issue-tracking/jira/', + }, + { + from: '/workflow/integrations/global-integrations/jira-server/', + to: '/product/integrations/issue-tracking/jira/', + }, + { + from: '/workflow/integrations/global-integrations/jira/', + to: '/product/integrations/issue-tracking/jira/', + }, + { + from: '/workflow/legacy-integrations/jira/', + to: '/product/integrations/issue-tracking/jira/', + }, + { + from: '/product/integrations/jira/', + to: '/product/integrations/issue-tracking/jira/', + }, + { + from: '/product/integrations/project-mgmt/jira/', + to: '/product/integrations/issue-tracking/jira/', + }, + { + from: '/integrations/jira/', + to: '/product/integrations/issue-tracking/jira/', + }, + { + from: '/workflow/integrations/asana/', + to: '/product/integrations/issue-tracking/asana/', + }, + { + from: '/workflow/integrations/legacy-integrations/asana/', + to: '/product/integrations/issue-tracking/asana/', + }, + { + from: '/workflow/integrations/global-integrations/asana/', + to: '/product/integrations/issue-tracking/asana/', + }, + { + from: '/product/integrations/asana/', + to: '/product/integrations/issue-tracking/asana/', + }, + { + from: '/product/integrations/project-mgmt/asana/', + to: '/product/integrations/issue-tracking/asana/', + }, + { + from: '/product/integrations/teamwork/', + to: '/product/integrations/issue-tracking/teamwork/', + }, + { + from: '/product/integrations/project-mgmt/teamwork/', + to: '/product/integrations/issue-tracking/teamwork/', + }, + { + from: '/workflow/user-settings/', + to: '/account/user-settings/', + }, + { + from: '/product/accounts/early-adopter/', + to: '/organization/early-adopter-features/', + }, + { + from: '/pricing/am2-pricing/', + to: '/pricing/legacy-pricing/', + }, + { + from: '/pricing/quotas/manage-event-stream-guide/adjusting-quotas/', + to: '/pricing/quotas/manage-event-stream-guide/#adjusting-quotas', + }, + { + from: '/learn/pricing/', + to: '/pricing/', + }, + { + from: '/product/pricing/', + to: '/pricing/', + }, + { + from: '/learn/quotas/', + to: '/pricing/quotas/', + }, + { + from: '/product/quotas/', + to: '/pricing/quotas/', + }, + { + from: '/learn/sensitive-data/', + to: '/security-legal-pii/scrubbing/', + }, + { + from: '/product/data-management-settings/dynamic-sampling/getting-started/', + to: '/pricing/quotas/', + }, + { + from: '/product/data-management-settings/dynamic-sampling/benefits-dynamic-sampling/', + to: '/pricing/quotas/', + }, + { + from: '/guides/manage-event-stream/', + to: '/pricing/quotas/manage-event-stream-guide/', + }, + { + from: '/learn/sso/', + to: '/organization/authentication/sso/', + }, + { + from: '/product/sso/', + to: '/organization/authentication/sso/', + }, + { + from: '/accounts/saml2/', + to: '/organization/authentication/sso/saml2/', + }, + { + from: '/guides/getting-started/', + to: '/organization/getting-started/', + }, + { + from: '/product/sentry-basics/guides/getting-started/', + to: '/organization/getting-started/', + }, + { + from: '/learn/membership/', + to: '/organization/membership/', + }, + { + from: '/product/membership/', + to: '/organization/membership/', + }, + { + from: '/guides/migration/', + to: '/product/accounts/migration/', + }, + { + from: '/product/sentry-basics/guides/migration/', + to: '/product/accounts/migration/', + }, + { + from: '/product/sentry-basics/migration/', + to: '/product/accounts/migration/', + }, + { + from: '/product/dashboards/customize-dashboards/', + to: '/product/dashboards/custom-dashboards/', + }, + { + from: '/workflow/visibility/', + to: '/product/dashboards/', + }, + { + from: '/workflow/dashboards/', + to: '/product/dashboards/', + }, + { + from: '/profiling/', + to: '/product/explore/profiling/', + }, + { + from: '/profiling/performance-overhead/', + to: '/product/explore/profiling/performance-overhead/', + }, + { + from: '/profiling/setup/', + to: '/product/explore/profiling/getting-started/', + }, + { + from: '/profiling/getting-started/', + to: '/product/explore/profiling/getting-started/', + }, + { + from: '/profiling/mobile-app-profiling/', + to: '/product/explore/profiling/mobile-app-profiling/', + }, + { + from: '/profiling/mobile-app-profiling/metrics/', + to: '/product/explore/profiling/mobile-app-profiling/metrics/', + }, + + { + from: '/data-management/rollups/', + to: '/concepts/data-management/event-grouping/', + }, + { + from: '/learn/rollups/', + to: '/concepts/data-management/event-grouping/', + }, + { + from: '/data-management/event-grouping/', + to: '/concepts/data-management/event-grouping/', + }, + { + from: '/product/data-management-settings/event-grouping/grouping-breakdown/', + to: '/concepts/data-management/event-grouping/', + }, + { + from: '/platforms/unity/data-management/event-grouping/', + to: '/concepts/data-management/event-grouping/', + }, + { + from: '/platforms/php/data-management/event-grouping/stack-trace-rules/', + to: '/concepts/data-management/event-grouping/', + }, + { + from: '/product/data-management-settings/event-grouping/server-side-fingerprinting/', + to: '/concepts/data-management/event-grouping/fingerprint-rules/', + }, + { + from: '/learn/data-forwarding/', + to: '/concepts/data-management/data-forwarding/', + }, + { + from: '/product/data-forwarding/', + to: '/concepts/data-management/data-forwarding/', + }, + { + from: '/data-management-settings/attachment-datascrubbing/', + to: '/security-legal-pii/scrubbing/attachment-scrubbing/', + }, + { + from: '/product/data-management-settings/advanced-datascrubbing/', + to: '/security-legal-pii/scrubbing/', + }, + { + from: '/data-management/advanced-datascrubbing/', + to: '/security-legal-pii/scrubbing/advanced-datascrubbing/', + }, + { + from: '/data-management-settings/advanced-datascrubbing/', + to: '/security-legal-pii/scrubbing/advanced-datascrubbing/', + }, + { + from: '/data-management-settings/server-side-scrubbing/', + to: '/security-legal-pii/scrubbing/server-side-scrubbing/', + }, + { + from: '/data-management-settings/event-pii-fields/', + to: '/security-legal-pii/scrubbing/server-side-scrubbing/event-pii-fields/', + }, + { + from: '/product/discover/', + to: '/product/explore/discover-queries/', + }, + { + from: '/workflow/discover/', + to: '/product/explore/discover-queries/', + }, + { + from: '/workflow/discover2/', + to: '/product/explore/discover-queries/', + }, + { + from: '/performance-monitoring/discover/', + to: '/product/explore/discover-queries/', + }, + { + from: '/performance/discover/', + to: '/product/explore/discover-queries/', + }, + { + from: '/guides/discover/', + to: '/product/explore/discover-queries/uncover-trends/', + }, + { + from: '/product/sentry-basics/guides/discover/', + to: '/product/explore/discover-queries/uncover-trends/', + }, + { + from: '/workflow/discover2/query-builder/', + to: '/product/explore/discover-queries/query-builder/', + }, + { + from: '/performance-monitoring/discover-queries/query-builder/', + to: '/product/explore/discover-queries/query-builder/', + }, + { + from: '/product/crons/alerts/', + to: '/product/crons/getting-started/', + }, + { + from: '/meta/relay/best-practices/', + to: '/product/relay/operating-guidelines/', + }, + { + from: '/product/relay/best-practices/', + to: '/product/relay/operating-guidelines/', + }, + { + from: '/meta/relay/', + to: '/product/relay/', + }, + { + from: '/product/security/relay/', + to: '/product/relay/', + }, + { + from: '/meta/relay/getting-started/', + to: '/product/relay/getting-started/', + }, + { + from: '/meta/relay/options/', + to: '/product/relay/options/', + }, + { + from: '/meta/relay/metrics/', + to: '/product/relay/monitoring/collected-metrics/', + }, + { + from: '/meta/relay/logging/', + to: '/product/relay/monitoring/', + }, + { + from: '/meta/relay/modes/', + to: '/product/relay/modes/', + }, + { + from: '/product/performance/', + to: '/product/sentry-basics/performance-monitoring/', + }, + { + from: '/product/performance/getting-started/', + to: '/product/insights/getting-started/', + }, + { + from: '/product/performance/filters-display/', + to: '/product/insights/overview/filters-display/', + }, + { + from: '/product/performance/filters-display/widgets/', + to: '/product/insights/overview/filters-display/widgets/', + }, + { + from: '/product/performance/trends/', + to: '/product/insights/overview/trends/', + }, + { + from: '/product/performance/transaction-summary/', + to: '/product/insights/overview/transaction-summary/', + }, + { + from: '/product/performance/metrics/', + to: '/product/insights/overview/metrics/', + }, + { + from: '/product/performance/performance-overhead/', + to: '/product/insights/performance-overhead/', + }, + { + from: '/product/performance/database/', + to: '/product/insights/backend/queries/', + }, + { + from: '/product/performance/query-insights/', + to: '/product/insights/backend/queries/', + }, + { + from: '/product/sentry-basics/metrics/', + to: '/product/insights/retention-priorities/', + }, + { + from: '/product/sentry-basics/sampling/', + to: '/product/insights/retention-priorities/', + }, + { + from: '/product/data-management-settings/server-side-sampling/', + to: '/product/insights/retention-priorities/', + }, + { + from: '/product/data-management-settings/server-side-sampling/getting-started/', + to: '/product/insights/retention-priorities/', + }, + { + from: '/product/data-management-settings/server-side-sampling/current-limitations/', + to: '/product/insights/retention-priorities/', + }, + { + from: '/product/data-management-settings/server-side-sampling/sampling-configurations/', + to: '/product/insights/retention-priorities/', + }, + { + from: '/product/data-management-settings/dynamic-sampling/current-limitations/', + to: '/product/insights/retention-priorities/', + }, + { + from: '/product/data-management-settings/dynamic-sampling/sampling-configurations/', + to: '/product/insights/retention-priorities/', + }, + { + from: '/product/performance/performance-at-scale/', + to: '/product/insights/retention-priorities/', + }, + { + from: '/product/performance/performance-at-scale/getting-started/', + to: '/product/insights/retention-priorities/', + }, + { + from: '/product/performance/performance-at-scale/benefits-performance-at-scale/', + to: '/product/insights/retention-priorities/', + }, + { + from: '/performance/', + to: '/product/insights/', + }, + { + from: '/performance/display/', + to: '/product/insights/', + }, + { + from: '/performance-monitoring/performance/', + to: '/product/insights/', + }, + { + from: '/performance/performance-tab/', + to: '/product/insights/overview', + }, + { + from: '/performance/performance-homepage/', + to: '/product/insights/', + }, + { + from: '/performance-monitoring/setup/', + to: '/product/insights/getting-started/', + }, + { + from: '/performance-monitoring/getting-started/', + to: '/product/insights/getting-started/', + }, + { + from: '/performance-monitoring/performance/metrics/', + to: '/product/insights/overview/metrics/', + }, + { + from: '/product/performance/display/', + to: '/product/insights/overview/filters-display/', + }, + { + from: '/product/issues/issue-owners/', + to: '/product/issues/ownership-rules/', + }, + { + from: '/product/issue-owners/', + to: '/product/issues/ownership-rules/', + }, + { + from: '/workflow/issue-owners/', + to: '/product/issues/ownership-rules/', + }, + { + from: '/learn/issue-owners/', + to: '/product/issues/ownership-rules/', + }, + { + from: '/features/owners/', + to: '/product/issues/ownership-rules/', + }, + { + from: '/product/sentry-basics/issue-owners/', + to: '/product/issues/ownership-rules/', + }, + { + from: '/product/releases/suspect-commits/', + to: '/product/issues/suspect-commits/', + }, + { + from: '/product/accounts/early-adopter-features/issue-archiving/', + to: '/product/issues/states-triage/', + }, + { + from: '/product/issues/performance-issues/regex-decoding-main-thread/', + to: '/product/issues/issue-details/performance-issues/regex-main-thread/', + }, + { + from: '/product/issues/performance-issues/consecutive-http/', + to: '/product/issues/issue-details/performance-issues/consecutive-http/', + }, + { + from: '/product/issues/performance-issues/slow-db-queries/', + to: '/product/issues/issue-details/performance-issues/slow-db-queries/', + }, + { + from: '/product/issues/performance-issues/image-decoding-main-thread/', + to: '/product/issues/issue-details/performance-issues/image-decoding-main-thread/', + }, + { + from: '/product/issues/performance-issues/', + to: '/product/issues/issue-details/performance-issues/', + }, + { + from: '/product/issues/issue-details/performance-issues/main-thread-io/', + to: '/product/issues/issue-details/performance-issues/', + }, + { + from: '/product/issues/performance-issues/n-one-queries/', + to: '/product/issues/issue-details/performance-issues/n-one-queries/', + }, + { + from: '/product/issues/performance-issues/uncompressed-asset/', + to: '/product/issues/issue-details/performance-issues/uncompressed-asset/', + }, + { + from: '/product/issues/performance-issues/consecutive-db-queries/', + to: '/product/issues/issue-details/performance-issues/consecutive-db-queries/', + }, + { + from: '/product/issues/performance-issues/json-decoding-main-thread/', + to: '/product/issues/issue-details/performance-issues/json-decoding-main-thread/', + }, + { + from: '/product/issues/performance-issues/http-overhead/', + to: '/product/issues/issue-details/performance-issues/http-overhead/', + }, + { + from: '/product/issues/performance-issues/large-render-blocking-asset/', + to: '/product/issues/issue-details/performance-issues/large-render-blocking-asset/', + }, + { + from: '/product/issues/performance-issues/frame-drop/', + to: '/product/issues/issue-details/performance-issues/frame-drop/', + }, + { + from: '/product/issues/performance-issues/large-http-payload/', + to: '/product/issues/issue-details/performance-issues/large-http-payload/', + }, + + { + from: '/learn/breadcrumbs/', + to: '/product/issues/issue-details/breadcrumbs/', + }, + { + from: '/product/issues/issue-details/suggested-fix/', + to: '/product/issues/issue-details/sentry-seer/', + }, + { + from: '/product/issues/issue-details/ai-suggested-solution/', + to: '/product/issues/issue-details/sentry-seer/', + }, + { + from: '/product/issues/issue-details/sentry-ai/', + to: '/product/issues/issue-details/sentry-seer/', + }, + { + from: '/guides/grouping-and-fingerprints/', + to: '/product/issues/grouping-and-fingerprints/', + }, + { + from: '/product/sentry-basics/guides/grouping-and-fingerprints/', + to: '/product/issues/grouping-and-fingerprints/', + }, + { + from: '/product/sentry-basics/grouping-and-fingerprints/', + to: '/product/issues/grouping-and-fingerprints/', + }, + { + from: '/product/accounts/quotas/org-stats/', + to: '/product/stats/', + }, + { + from: '/workflow/search/', + to: '/concepts/search/', + }, + { + from: '/product/search/', + to: '/concepts/search/', + }, + { + from: '/learn/search/', + to: '/concepts/search/', + }, + { + from: '/product/sentry-basics/search/', + to: '/concepts/search/', + }, + { + from: '/product/sentry-basics/search/saved-searches/', + to: '/concepts/search/saved-searches/', + }, + { + from: '/product/sentry-basics/search/searchable-properties/user-feedback/', + to: '/concepts/search/searchable-properties/user-feedback/', + }, + { + from: '/product/sentry-basics/search/searchable-properties/events/', + to: '/concepts/search/searchable-properties/events/', + }, + { + from: '/product/sentry-basics/search/searchable-properties/issues/', + to: '/concepts/search/searchable-properties/issues/', + }, + { + from: '/product/sentry-basics/search/searchable-properties/', + to: '/concepts/search/searchable-properties/', + }, + { + from: '/product/sentry-basics/search/searchable-properties/releases/', + to: '/concepts/search/searchable-properties/releases/', + }, + { + from: '/product/sentry-basics/search/searchable-properties/spans/', + to: '/concepts/search/searchable-properties/spans/', + }, + { + from: '/product/sentry-basics/search/searchable-properties/session-replay/', + to: '/concepts/search/searchable-properties/session-replay/', + }, + { + from: '/platforms/javascript/configuration/micro-frontend-support/', + to: '/platforms/javascript/best-practices/micro-frontends/', + }, + { + from: '/platforms/javascript/configuration/sentry-testkit/', + to: '/platforms/javascript/best-practices/sentry-testkit/', + }, + { + from: '/platforms/javascript/configuration/webworkers/', + to: '/platforms/javascript/best-practices/web-workers/', + }, + { + from: '/support/', + to: 'https://sentry.zendesk.com/hc/en-us/', + }, + { + from: '/clients/python/', + to: '/platforms/python/legacy-sdk/', + }, + { + from: '/platforms/javascript/config/sourcemaps/', + to: '/platforms/javascript/sourcemaps/', + }, + { + from: '/platforms/java/config/', + to: '/platforms/java/configuration/', + }, + { + from: '/platforms/native/attachments/', + to: '/platforms/native/enriching-error-data/attachments/', + }, + { + from: '/platforms/python/configuration/integrations/', + to: '/platforms/python/integrations/', + }, + { + from: '/platforms/python/redis/', + to: '/platforms/python/integrations/redis/', + }, + { + from: '/platforms/python/sqlalchemy/', + to: '/platforms/python/integrations/sqlalchemy/', + }, + { + from: '/platforms/python/pure_eval/', + to: '/platforms/python/integrations/pure_eval/', + }, + { + from: '/platforms/python/gnu_backtrace/', + to: '/platforms/python/integrations/gnu_backtrace/', + }, + { + from: '/learn/context/', + to: '/platform-redirect/?next=/enriching-events/context/', + }, + { + from: '/clients/java/config/', + to: '/platforms/java/configuration/', + }, + { + from: '/clientdev/interfaces/http/', + to: 'https://develop.sentry.dev/sdk/data-model/event-payloads/request', + }, + { + from: '/clients/csharp/', + to: '/platforms/dotnet/legacy-sdk/', + }, + { + from: '/clients/go/', + to: '/platforms/go/legacy-sdk/', + }, + { + from: '/clients/node/', + to: '/platforms/node/legacy-sdk/', + }, + { + from: '/clients/javascript/', + to: '/platforms/javascript/legacy-sdk/', + }, + { + from: '/clients/ruby/', + to: '/platforms/ruby/', + }, + { + from: '/clients/java/integrations/', + to: '/platforms/java/', + }, + { + from: '/clients/java/modules/android/', + to: '/platforms/android', + }, + { + from: '/clients/javascript/integrations/angular2/', + to: '/platforms/javascript/guides/angular/', + }, + { + from: '/clients/javascript/integrations/angularjs/', + to: '/platforms/javascript/guides/angular/', + }, + { + from: '/platforms/javascript/angular/', + to: '/platforms/javascript/guides/angular/', + }, + { + from: '/node/event-processors/', + to: '/platforms/node/enriching-events/event-processors/', + }, + { + from: '/platforms/node/guides/connect/event-processors/', + to: '/platforms/node/enriching-events/event-processors/', + }, + { + from: '/platforms/javascript/sourcemaps/uploading/multiple-origins/', + to: '/platforms/javascript/sourcemaps/troubleshooting_js/#multiple-origins', + }, + { + from: '/platforms/python/guides/celery/hints/', + to: '/platforms/python/integrations/celery/', + }, + { + from: '/platforms/python/guides/chalice/integrations/', + to: '/platforms/python/integrations/chalice/', + }, + { + from: '/platforms/unrealengine/', + to: '/platforms/unreal/', + }, + { + from: '/platforms/minidump/crashpad/', + to: '/platforms/native/guides/crashpad/', + }, + { + from: '/platforms/minidump/breakpad/', + to: '/platforms/native/guides/breakpad/', + }, + { + from: '/platforms/rust/usage/sdk-fingerprinting/', + to: '/product/data-management-settings/event-grouping/fingerprint-rules/', + }, + { + from: '/platforms/javascript/guides/angular/lazy-load-sentry/', + to: '/platforms/javascript/guides/angular/', + }, + { + from: '/platforms/java/guides/spring/data-management/data-forwarding/', + to: '/platforms/java/guides/spring/data-management/', + }, + { + from: '/platforms/android/usage/advanced-usage/', + to: '/platforms/android/usage/', + }, + { + from: '/platforms/javascript/guides/react/performance/included-instrumentation/', + to: '/platforms/javascript/guides/react/performance/instrumentation/', + }, + { + from: '/platforms/php/guides/symfony/data-management/data-forwarding/', + to: '/platforms/php/guides/symfony/data-management/', + }, + { + from: '/platforms/php/guides/laravel/configuration/transports/', + to: '/platforms/php/guides/laravel/configuration/laravel-options/', + }, + { + from: '/platforms/go/data-management/event-grouping/fingerprint-rules/', + to: '/platforms/go/data-management/', + }, + { + from: '/platforms/elixir/enriching-events/scopes/', + to: '/platforms/elixir/enriching-events/', + }, + { + from: '/platforms/android/performance/custom-instrumentation/', + to: '/platforms/android/performance/', + }, + { + from: '/platforms/elixir/data-management/event-grouping/', + to: '/platforms/elixir/data-management/', + }, + { + from: '/platforms/elixir/configuration/draining/', + to: '/platforms/elixir/configuration/', + }, + { + from: '/clients/ruby/integrations/rails/', + to: '/platforms/ruby/guides/rails/', + }, + { + from: '/platforms/java/configuration/integrations/', + to: '/platforms/java/integrations/', + }, + { + from: '/platforms/apple/configuration/integrations/', + to: '/platforms/apple/integrations/', + }, + { + from: '/platforms/javascript/guides/cordova/integrations/custom/', + to: '/platforms/javascript/guides/cordova/', + }, + { + from: '/platforms/javascript/guides/cordova/config/basics/', + to: '/platforms/javascript/guides/cordova/configuration/', + }, + { + from: '/platforms/javascript/guides/electron/data-management/event-grouping/grouping-enhancements/', + to: '/platforms/javascript/guides/electron/data-management/', + }, + { + from: '/platforms/javascript/guides/ember/configuration/other-versions/ember2/', + to: '/platforms/javascript/guides/ember/configuration/', + }, + { + from: '/platforms/javascript/guides/ember/configuration/other-versions/', + to: '/platforms/javascript/guides/ember/configuration/', + }, + { + from: '/platforms/javascript/guides/angular/components/', + to: '/platforms/javascript/guides/angular/', + }, + { + from: '/platforms/javascript/legacy-sdk/integrations/', + to: '/platforms/javascript/legacy-sdk/', + }, + { + from: '/platforms/javascript/guides/nextjs/manual/', + to: '/platforms/javascript/guides/nextjs/', + }, + { + from: '/platforms/javascript/guides/react/components/errorboundary/', + to: '/platforms/javascript/guides/react/', + }, + { + from: '/platforms/javascript/guides/react/components/profiler/', + to: '/platforms/javascript/guides/react/', + }, + { + from: '/platforms/javascript/guides/remix/install/cdn/', + to: '/platforms/javascript/guides/remix/#install', + }, + { + from: '/platforms/javascript/performance/capturing/group-transactions/', + to: '/platforms/javascript/performance/', + }, + { + from: '/platforms/javascript/sourcemaps/tools/', + to: '/platforms/javascript/sourcemaps/', + }, + { + from: '/product/accounts/pricing/', + to: '/pricing/', + }, + { + from: '/accounts/pricing/', + to: '/pricing/', + }, + { + from: '/product/account/pricing/', + to: '/pricing/', + }, + { + from: '/platforms/dotnet/compatibility/', + to: '/platforms/dotnet/', + }, + { + from: '/product/session-replay/protecting-user-privacy/', + to: '/security-legal-pii/scrubbing/protecting-user-privacy/', + }, + { + from: '/platforms/javascript/guides/react/features/component-tracking/', + to: '/platforms/javascript/guides/react/features/component-names/', + }, + { + from: '/product/accounts/early-adopter-features/', + to: '/organization/early-adopter-features/', + }, + { + from: '/product/accounts/choose-your-data-center/', + to: '/organization/data-storage-location/', + }, + { + from: '/product/accounts/membership/', + to: '/organization/membership/', + }, + { + from: '/product/accounts/sso/', + to: '/organization/authentication/sso/', + }, + { + from: '/product/accounts/sso/azure-sso/', + to: '/organization/authentication/sso/azure-sso/', + }, + { + from: '/product/accounts/sso/okta-sso/', + to: '/organization/authentication/sso/okta-sso/', + }, + { + from: '/product/accounts/sso/okta-sso/okta-scim/', + to: '/organization/authentication/sso/okta-sso/okta-scim/', + }, + { + from: '/product/accounts/sso/ping-sso/', + to: '/organization/authentication/sso/ping-sso/', + }, + { + from: '/product/accounts/sso/saml2/', + to: '/organization/authentication/sso/saml2/', + }, + { + from: '/product/accounts/getting-started/', + to: '/organization/getting-started/', + }, + { + from: '/product/accounts/require-2fa/', + to: '/organization/authentication/two-factor-authentication/', + }, + { + from: '/product/accounts/quotas/', + to: '/pricing/quotas/', + }, + { + from: '/product/accounts/quotas/spike-protection/', + to: '/pricing/quotas/spike-protection/', + }, + { + from: '/product/accounts/quotas/spend-allocation/', + to: '/pricing/quotas/spend-allocation/', + }, + { + from: '/product/accounts/quotas/manage-event-stream-guide/', + to: '/pricing/quotas/manage-event-stream-guide/', + }, + { + from: '/product/accounts/quotas/manage-transaction-quota/', + to: '/pricing/quotas/manage-transaction-quota/', + }, + { + from: '/product/accounts/quotas/manage-replay-quota/', + to: '/pricing/quotas/manage-replay-quota/', + }, + { + from: '/product/accounts/quotas/manage-attachments-quota/', + to: '/pricing/quotas/manage-attachments-quota/', + }, + { + from: '/product/accounts/quotas/manage-cron-monitors/', + to: '/pricing/quotas/manage-cron-monitors/', + }, + { + from: '/product/accounts/auth-tokens/', + to: '/account/auth-tokens/', + }, + { + from: '/product/accounts/user-settings/', + to: '/account/user-settings/', + }, + { + from: '/product/accounts/', + to: '/account/', + }, + { + from: '/account/getting-started/', + to: '/organization/getting-started/', + }, + { + from: '/account/membership/', + to: '/organization/membership/', + }, + { + from: '/account/early-adopter-features/', + to: '/organization/early-adopter-features/', + }, + { + from: '/account/quotas/', + to: '/pricing/quotas/', + }, + { + from: '/accounts/quotas/', + to: '/pricing/quotas/', + }, + { + from: '/organization/quotas/', + to: '/pricing/quotas/', + }, + { + from: '/account/sso/', + to: '/organization/authentication/sso/', + }, + { + from: '/product/ai-monitoring/', + to: '/product/insights/ai/agents/', + }, + { + from: '/product/insights/llm-monitoring/', + to: '/product/insights/ai/agents/', + }, + { + from: '/product/insights/llm-monitoring/getting-started/', + to: '/product/insights/ai/agents/getting-started/', + }, + { + from: '/product/insights/llm-monitoring/getting-started/the-dashboard/', + to: '/product/insights/ai/agents/getting-started/the-dashboard/', + }, + { + from: '/product/metrics/', + to: '/product/explore/metrics/', + }, + { + from: '/product/profiling/', + to: '/product/explore/profiling/', + }, + { + from: '/product/discover-queries/', + to: '/product/explore/discover-queries/', + }, + { + from: '/product/session-replay/', + to: '/product/explore/session-replay/', + }, + { + from: '/enriching-error-data/advanced-datascrubbing/', + to: '/concepts/data-management/advanced-datascrubbing/', + }, + { + from: '/data-management/advanced-datascrubbing/', + to: '/concepts/data-management/advanced-datascrubbing/', + }, + { + from: '/platforms/javascript/guides/react/features/component-tracking/', + to: '/platforms/javascript/guides/react/features/component-names/', + }, + { + from: '/platforms/rust/usage/sdk-fingerprinting/', + to: '/concepts/data-management/event-grouping/fingerprint-rules/', + }, + { + from: '/platforms/javascript/guides/angular/lazy-load-sentry/', + to: '/platforms/javascript/guides/angular/', + }, + { + from: '/platforms/java/guides/spring/data-management/data-forwarding/', + to: '/platforms/java/guides/spring/data-management/', + }, + { + from: '/support/', + to: 'https://sentry.zendesk.com/hc/en-us/', + }, + { + from: '/product/security-policy-reporting/', + to: '/security-legal-pii/security/security-policy-reporting/', + }, + { + from: '/product/session-replay/protecting-user-privacy/', + to: '/security-legal-pii/scrubbing/protecting-user-privacy/', + }, + { + from: '/product/data-management-settings/restrict-display/', + to: '/security-legal-pii/scrubbing/restrict-display/', + }, + { + from: '/product/performance/requests/', + to: '/product/insights/requests/', + }, + { + from: '/product/performance/queries/', + to: '/product/insights/queries/', + }, + { + from: '/product/performance/resources/', + to: '/product/insights/assets/', + }, + { + from: '/product/performance/assets/', + to: '/product/insights/assets/', + }, + { + from: '/product/performance/mobile-vitals/', + to: '/product/insights/mobile-vitals/', + }, + { + from: '/product/performance/mobile-vitals/screen-loads/', + to: '/product/insights/mobile-vitals/screen-loads/', + }, + { + from: '/product/performance/mobile-vitals/app-starts/', + to: '/product/insights/mobile-vitals/app-starts/', + }, + { + from: '/product/performance/web-vitals/', + to: '/product/insights/web-vitals/', + }, + { + from: '/product/performance/web-vitals/web-vitals-concepts/', + to: '/product/insights/web-vitals/web-vitals-concepts/', + }, + { + from: '/product/performance/caches/', + to: '/product/insights/caches/', + }, + { + from: '/product/performance/caches/cache-page/', + to: '/product/insights/caches/cache-page/', + }, + { + from: '/product/performance/queue-monitoring/', + to: '/product/insights/queue-monitoring/', + }, + { + from: '/product/performance/queue-monitoring/queues-page/', + to: '/product/insights/queue-monitoring/queues-page/', + }, + { + from: '/product/explore/session-replay/protecting-user-privacy/', + to: '/security-legal-pii/scrubbing/protecting-user-privacy/', + }, + { + from: '/account/choose-your-data-center/', + to: '/organization/data-storage-location/', + }, + { + from: '/account/early-adopter/', + to: '/organization/early-adopter-features/', + }, + { + from: '/account/quotas/spike-protection/', + to: '/pricing/quotas/spike-protection/', + }, + { + from: '/_platforms/', + to: '/platforms', + }, + { + from: '/accounts/require-2fa/', + to: '/organization/authentication/two-factor-authentication/', + }, + { + from: '/platforms/go/guides/fiber/user-feedback/configuration/', + to: '/platforms/go/user-feedback/', + }, + { + from: '/platforms/javascript/guides/', + to: '/platforms/javascript/', + }, + { + from: '/platforms/native/crashpad/', + to: '/platforms/native/guides/crashpad/', + }, + { + from: '/platforms/python/legacy-sdk/integrations/pylons/', + to: '/platforms/python/legacy-sdk/integrations/#pylons', + }, + { + from: '/concepts/data-management/event-grouping/grouping-breakdown/', + to: '/concepts/data-management/event-grouping/', + }, + { + from: '/product/explore/session-replay/performance-overhead/', + to: '/product/explore/session-replay/web/performance-overhead/', + }, + { + from: '/organization/integrations/project-mgmt/jira/', + to: '/organization/integrations/issue-tracking/jira/', + }, + { + from: '/organization/integrations/source-code-/', + to: '/organization/integrations/source-code-mgmt/', + }, + { + from: '/product/explore/session-replay/getting-started/', + to: '/product/explore/session-replay/', + }, + { + from: '/product/explore/session-replay/web/getting-started/', + to: '/product/explore/session-replay/web/', + }, + { + from: '/product/explore/session-replay/web/replay-page-and-filters/', + to: '/product/explore/session-replay/replay-page-and-filters/', + }, + { + from: '/product/explore/session-replay/web/replay-details/', + to: '/product/explore/session-replay/replay-details/', + }, + { + from: '/product/explore/session-replay/hydration-errors/', + to: '/product/issues/issue-details/replay-issues/hydration-error/', + }, + { + from: '/product/explore/session-replay/rage-dead-clicks/', + to: '/product/issues/issue-details/replay-issues/rage-clicks/', + }, + { + from: '/product/explore/session-replay/privacy/', + to: '/security-legal-pii/scrubbing/protecting-user-privacy/', + }, + { + from: '/product/teams/roles/', + to: '/organization/membership/#team-level-roles', + }, + { + from: '/enriching-error-data/additional-data/', + to: '/concepts/key-terms/enrich-data/', + }, + { + from: '/performance/instrumentation/automatic-instrumentation/', + to: '/tracing/instrumentation/automatic-instrumentation', + }, + { + from: '/concepts/key-terms/key-terms/tracing/trace-view/#operations-breakdown/', + to: '/product/insights/', + }, + { + from: '/platforms/javascript/guides/aws-lambda/container-image/', + to: '/platforms/javascript/guides/aws-lambda/install/', + }, + { + from: '/platforms/javascript/guides/aws-lambda/layer/', + to: '/platforms/javascript/guides/aws-lambda/install/', + }, + { + from: '/api/projects/post-project-service-hooks/', + to: '/api/projects/register-a-new-service-hook/', + }, + { + from: '/api/organizations/list-your-organizations/', + to: '/api/users/list-your-organizations/', + }, + { + from: '/clients/cocoa/', + to: '/platforms/apple/', + }, + { + from: '/clients/react-native/', + to: 'platforms/react-native/', + }, + { + from: '/learn/scopes/?platform=rust/', + to: '/platforms/rust/enriching-events/scopes/', + }, + { + from: '/platforms/android/android-video/', + to: '/platforms/android/', + }, + { + from: '/platforms/android/tracing/included-instrumentation/', + to: '/platforms/android/tracing/instrumentation/automatic-instrumentation', + }, + { + from: '/platforms/javascript/guides/cordova/tracing/trace-propagation/', + to: '/platforms/javascript/guides/cordova/tracing/instrumentation/custom-instrumentation/', + }, + { + from: '/platforms/javascript/pluggable-integrations/', + to: '/platforms/javascript/configuration/integrations/#lazy-loading-integrations', + }, + { + from: '/platforms/react-native/tracing/included-instrumentation/', + to: '/platforms/react-native/tracing/instrumentation/automatic-instrumentation/', + }, + { + from: '/platforms/rust/env_logger/index.html/', + to: '/platforms/rust/configuration/environments/', + }, + { + from: '/clients/cordova/', + to: '/platforms/javascript/guides/cordova/', + }, + { + from: '/organization/integrations/incidentio/', + to: '/organization/integrations/issue-tracking/incidentio/', + }, + { + from: '/contributing/onboarding-wizard/', + to: '/contributing/', + }, + { + from: '/security-legal-pii/security/security-policy-reporting/', + to: '/platform-redirect/?next=/security-policy-reporting/', + }, + /* Uptime Monitoring */ + { + from: '/product/alerts/uptime-monitoring/', + to: '/product/uptime-monitoring/', + }, + { + from: '/product/alerts/uptime-monitoring/automatic-detection/', + to: '/product/uptime-monitoring/automatic-detection/', + }, + { + from: '/product/alerts/uptime-monitoring/uptime-tracing/', + to: '/product/uptime-monitoring/uptime-tracing/', + }, + { + from: '/product/alerts/uptime-monitoring/troubleshooting/', + to: '/product/uptime-monitoring/troubleshooting/', + }, +]; + +const DEVELOPER_DOCS_REDIRECTS: Redirect[] = [ + { + from: '/', + to: '/getting-started/', + }, + { + from: '/docs-components/', + to: '/development/docs/', + }, + { + from: '/docs/', + to: '/development/docs/', + }, + { + from: '/inclusion/', + to: '/development/inclusive-language/', + }, + { + from: '/translations/', + to: '/development/translations/', + }, + { + from: '/environment/', + to: '/development/environment/', + }, + { + from: '/environment/pycharm/', + to: '/development/environment/pycharm/', + }, + { + from: '/environment/u2f/', + to: '/development/environment/u2f/', + }, + { + from: '/testing/', + to: '/development/testing/', + }, + { + from: '/philosophy/', + to: '/development/philosophy/', + }, + { + from: '/commit-messages/', + to: '/development/commit-messages/', + }, + { + from: '/code-review/', + to: '/development/code-review/', + }, + { + from: '/workflow/', + to: '/development/workflow/', + }, + { + from: '/continuous-integration/', + to: '/development/continuous-integration/', + }, + { + from: '/python-dependencies/', + to: '/development/python-dependencies/', + }, + { + from: '/rust/', + to: '/development/rust/', + }, + { + from: '/database-migrations/', + to: '/development/database-migrations/', + }, + { + from: '/testing/', + to: '/development/testing/', + }, + { + from: '/analytics/', + to: '/development/analytics/', + }, + { + from: '/architecture/', + to: '/application-architecture/', + }, + { + from: '/sentry-vs-getsentry/', + to: '/application/sentry-vs-getsentry/', + }, + { + from: '/config/', + to: '/application/config/', + }, + { + from: '/issue-platform/', + to: '/application/issue-platform/', + }, + { + from: '/issue-platform-detectors/', + to: '/application/issue-platform-detectors/', + }, + { + from: '/feature-flags/', + to: '/application/feature-flags/', + }, + { + from: '/feature-flags/flagpole/', + to: '/application/feature-flags/flagpole/', + }, + { + from: '/ab-testing/', + to: '/application/ab-testing/', + }, + { + from: '/options/', + to: '/application/options/', + }, + { + from: '/serializers/', + to: '/application/serializers/', + }, + { + from: '/grouping/', + to: '/application/grouping/', + }, + { + from: '/pii/', + to: '/application/pii/', + }, + { + from: '/pii/types/', + to: '/application/pii/types/', + }, + { + from: '/pii/methods/', + to: '/application/pii/methods/', + }, + { + from: '/pii/selectors/', + to: '/application/pii/selectors/', + }, + { + from: '/transaction-clustering/', + to: '/application/transaction-clustering/', + }, + { + from: '/dynamic-sampling/', + to: '/application/dynamic-sampling/', + }, + { + from: '/dynamic-sampling/architecture/', + to: '/application/dynamic-sampling/architecture/', + }, + { + from: '/dynamic-sampling/fidelity-and-biases/', + to: '/application/dynamic-sampling/fidelity-and-biases/', + }, + { + from: '/dynamic-sampling/the-big-picture/', + to: '/application/dynamic-sampling/the-big-picture/', + }, + { + from: '/feedback-architecture/', + to: '/application/feedback-architecture/', + }, + { + from: '/options/', + to: '/backend/options/', + }, + { + from: '/sdk/features/data-handling/', + to: '/sdk/expected-features/data-handling/', + }, + { + from: '/sdk/craft-quick-start/', + to: '/sdk/processes/releases/', + }, + { + from: '/sdk/check-ins/', + to: '/sdk/telemetry/check-ins/', + }, + { + from: '/sdk/profiles/', + to: '/sdk/telemetry/profiles/', + }, + { + from: '/sdk/distributed-tracing/', + to: '/sdk/telemetry/traces/distributed-tracing/', + }, + // New Sidebar structure + { + from: '/development/', + to: '/development-infrastructure/', + }, + { + from: '/development/environment/', + to: '/development-infrastructure/environment/', + }, + { + from: '/development/environment/ports/', + to: '/development-infrastructure/environment/ports/', + }, + { + from: '/development/environment/u2f/', + to: '/development-infrastructure/environment/u2f/', + }, + { + from: '/development/environment/pycharm/', + to: '/development-infrastructure/environment/pycharm/', + }, + { + from: '/development/commit-messages/', + to: '/engineering-practices/commit-messages/', + }, + { + from: '/development/code-review/', + to: '/engineering-practices/code-review/', + }, + { + from: '/development/documentation/', + to: '/engineering-practices/documentation/', + }, + { + from: '/development/workflow/', + to: '/development-infrastructure/workflow/', + }, + { + from: '/development/testing/', + to: '/development-infrastructure/testing/', + }, + { + from: '/development/continuous-integration/', + to: '/development-infrastructure/continuous-integration/', + }, + { + from: '/development/ngrok/', + to: '/development-infrastructure/ngrok/', + }, + { + from: '/development/devservices/', + to: '/development-infrastructure/devservices/', + }, + { + from: '/development/rust/', + to: '/engineering-practices/rust/', + }, + { + from: '/development/analytics/', + to: '/development-infrastructure/analytics/', + }, + { + from: '/application/', + to: '/application-architecture/', + }, + { + from: '/application/architecture/', + to: '/application-architecture/overview/', + }, + { + from: '/application/dynamic-sampling/', + to: '/application-architecture/dynamic-sampling/', + }, + { + from: '/application/dynamic-sampling/the-big-picture/', + to: '/application-architecture/dynamic-sampling/the-big-picture/', + }, + { + from: '/application/dynamic-sampling/fidelity-and-biases/', + to: '/application-architecture/dynamic-sampling/fidelity-and-biases/', + }, + { + from: '/application/dynamic-sampling/architecture/', + to: '/application-architecture/dynamic-sampling/architecture/', + }, + { + from: '/application/dynamic-sampling/outcomes/', + to: '/application-architecture/dynamic-sampling/outcomes/', + }, + { + from: '/application/feedback-architecture/', + to: '/application-architecture/feedback-architecture/', + }, + { + from: '/application/control-silo/', + to: '/application-architecture/multi-region-deployment/control-silo/', + }, + { + from: '/application/cross-region-replication/', + to: '/application-architecture/multi-region-deployment/cross-region-replication/', + }, + { + from: '/application/cross-region-rpc/', + to: '/application-architecture/multi-region-deployment/cross-region-rpc/', + }, + { + from: '/application/config/', + to: '/application-architecture/config/', + }, + { + from: '/application-architecture/config/', + to: '/backend/config/', + }, + { + from: '/application/sentry-vs-getsentry/', + to: '/application-architecture/sentry-vs-getsentry/', + }, + + { + from: '/frontend/development-server/', + to: '/development-infrastructure/frontend-development-server/', + }, + { + from: '/api-server/', + to: '/backend/', + }, + { + from: '/api-server/api/', + to: '/backend/api/', + }, + { + from: '/api-server/api/basics/', + to: '/backend/api/basics/', + }, + { + from: '/api-server/api/design/', + to: '/backend/api/design/', + }, + { + from: '/api-server/api/concepts/', + to: '/backend/api/concepts/', + }, + { + from: '/api-server/api/public/', + to: '/backend/api/public/', + }, + { + from: '/api-server/api/checklist/', + to: '/backend/api/checklist/', + }, + { + from: '/api-server/api/serializers/', + to: '/backend/api/serializers/', + }, + { + to: '/development-infrastructure/backend-development-server/', + from: '/backend/development-server/', + }, + { + from: '/backend/python-dependencies/', + to: '/development-infrastructure/python-dependencies/', + }, + { + from: '/backend/database-migrations/', + to: '/backend/application-domains/database-migrations/', + }, + { + from: '/api-server/application-domains/database-migrations/', + to: '/backend/application-domains/database-migrations/', + }, + { + from: '/backend/feature-flags/', + to: '/backend/application-domains/feature-flags/', + }, + { + from: '/api-server/application-domains/feature-flags/', + to: '/develop/application-domains/feature-flags/', + }, + { + from: '/backend/feature-flags/flagpole/', + to: '/backend/application-domains/feature-flags/flagpole/', + }, + { + from: '/api-server/application-domains/feature-flags/flagpole/', + to: '/develop/application-domains/feature-flags/flagpole/', + }, + { + from: '/backend/options/', + to: '/backend/application-domains/options/', + }, + { + from: '/api-server/application-domains/options/', + to: '/develop/application-domains/options/', + }, + { + from: '/backend/transaction-clustering/', + to: '/backend/application-domains/transaction-clustering/', + }, + { + from: '/api-server/application-domains/transaction-clustering/', + to: '/develop/application-domains/transaction-clustering/', + }, + { + from: '/backend/grouping/', + to: '/backend/application-domains/grouping/', + }, + { + from: '/api-server/application-domains/grouping/', + to: '/develop/application-domains/grouping/', + }, + { + from: '/backend/outboxes/', + to: '/backend/application-domains/outboxes/', + }, + { + from: '/api-server/application-domains/outboxes/', + to: '/develop/application-domains/outboxes/', + }, + { + from: '/backend/issue-platform-detectors/', + to: '/backend/issue-platform/writing-detectors/', + }, + { + from: '/api-server/issue-platform/writing-detectors/', + to: '/develop/issue-platform/writing-detectors/', + }, + { + from: '/api-server/issue-platform/', + to: '/develop/issue-platform/', + }, + { + from: '/backend/queue/', + to: '/backend/application-domains/asynchronous-workers/', + }, + { + from: '/api-server/application-domains/asynchronous-workers/', + to: '/develop/application-domains/asynchronous-workers/', + }, + { + from: '/backend/email/', + to: '/backend/application-domains/email/', + }, + { + from: '/api-server/application-domains/email/', + to: '/develop/application-domains/email/', + }, + { + from: '/backend/kafka/', + to: '/backend/application-domains/kafka/', + }, + { + from: '/api-server/application-domains/kafka/', + to: '/develop/application-domains/kafka/', + }, + { + from: '/backend/metrics/', + to: '/backend/application-domains/metrics/', + }, + { + from: '/api-server/application-domains/metrics/', + to: '/develop/application-domains/metrics/', + }, + { + from: '/backend/nodestore/', + to: '/backend/application-domains/nodestore/', + }, + { + from: '/api-server/application-domains/nodestore/', + to: '/develop/application-domains/nodestore/', + }, + { + from: '/backend/digests/', + to: '/backend/application-domains/digests/', + }, + { + from: '/api-server/application-domains/digests/', + to: '/develop/application-domains/digests/', + }, + { + from: '/backend/quotas/', + to: '/backend/application-domains/quotas/', + }, + { + from: '/api-server/application-domains/quotas/', + to: '/develop/application-domains/quotas/', + }, + { + from: '/backend/tsdb/', + to: '/backend/application-domains/tsdb/', + }, + { + from: '/api-server/application-domains/tsdb/', + to: '/develop/application-domains/tsdb/', + }, + { + from: '/backend/pii/', + to: '/backend/application-domains/pii/', + }, + { + from: '/api-server/application-domains/pii/', + to: '/develop/application-domains/pii/', + }, + { + from: '/backend/pii/methods/', + to: '/backend/application-domains/pii/methods/', + }, + { + from: '/api-server/application-domains/pii/methods/', + to: '/develop/application-domains/pii/methods/', + }, + { + from: '/backend/pii/types/', + to: '/backend/application-domains/pii/types/', + }, + { + from: '/api-server/application-domains/pii/types/', + to: '/develop/application-domains/pii/types/', + }, + { + from: '/backend/pii/selectors/', + to: '/backend/application-domains/pii/selectors/', + }, + { + from: '/api-server/application-domains/pii/selectors/', + to: '/develop/application-domains/pii/selectors/', + }, + { + from: '/backend/buffers/', + to: '/backend/application-domains/write-buffers/', + }, + { + from: '/api-server/application-domains/write-buffers/', + to: '/develop/application-domains/write-buffers/', + }, + { + from: '/backend/translations/', + to: '/backend/application-domains/translations/', + }, + { + from: '/api-server/application-domains/translations/', + to: '/develop/application-domains/translations/', + }, + { + from: '/backend/ab-testing/', + to: '/backend/application-domains/ab-testing/', + }, + { + from: '/api-server/application-domains/ab-testing/', + to: '/develop/application-domains/ab-testing/', + }, + /* Ingestion section rework */ + { + from: '/relay/', + to: '/ingestion/relay/', + }, + { + from: '/relay/projectconfig-versioning/', + to: '/ingestion/relay/projectconfig-versioning/', + }, + { + from: '/relay/transaction-span-ratelimits/', + to: '/ingestion/relay/transaction-span-ratelimits/', + }, + { + from: '/relay/relay-best-practices/', + to: '/ingestion/relay/relay-best-practices/', + }, + /* integration platform */ + { + from: '/organization/integrations/kitemaker/', + to: '/organization/integrations/issue-tracking/kitemaker/', + }, + { + from: '/organization/integrations/pagertree/', + to: '/organization/integrations/notification-incidents/pagertree/', + }, + { + from: '/organization/integrations/goast/', + to: '/organization/integrations/issue-tracking/goast/', + }, + { + from: '/organization/integrations/betterbugs/', + to: '/organization/integrations/session-replay/betterbugs/', + }, + { + from: '/organization/integrations/blar/', + to: '/organization/integrations/notification-incidents/blar/', + }, + { + from: '/organization/integrations/apigene/', + to: '/organization/integrations/debugging/apigene/', + }, + { + from: '/organization/integrations/revisedev/', + to: '/organization/integrations/debugging/revisedev/', + }, + { + from: '/organization/integrations/foamai/', + to: '/organization/integrations/debugging/foamai/', + }, + { + from: '/organization/integrations/telegram-alerts-bot/', + to: '/organization/integrations/notification-incidents/telegram-alerts-bot/', + }, + { + from: '/organization/integrations/vanta-eu/', + to: '/organization/integrations/compliance/vanta-eu/', + }, + { + from: '/organization/integrations/sourcery/', + to: '/organization/integrations/debugging/sourcery/', + }, + { + from: '/organization/integrations/codecomet/', + to: '/organization/integrations/debugging/codecomet/', + }, + { + from: '/organization/integrations/glueai/', + to: '/organization/integrations/notification-incidents/glueai/', + }, + { + from: '/organization/integrations/factory/', + to: '/organization/integrations/issue-tracking/factory/', + }, + { + from: '/organization/integrations/teamcamp/', + to: '/organization/integrations/issue-tracking/teamcamp/', + }, + { + from: '/organization/integrations/elba/', + to: '/organization/integrations/compliance/elba/', + }, +]; + +const redirectMap = new Map( + (isDeveloperDocs ? DEVELOPER_DOCS_REDIRECTS : USER_DOCS_REDIRECTS).map(r => [ + r.from as string, + r.to, + ]) +); diff --git a/tsconfig.json b/tsconfig.json index 9897ff62631c9..17ed696f673a3 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -12,7 +12,7 @@ "esnext" ], /* Specify library files to be included in the compilation. */ // "allowJs": true, /* Allow javascript files to be compiled. */ // "checkJs": true, /* Report errors in .js files. */ - "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ // "declaration": true, /* Generates corresponding '.d.ts' file. */ + "jsx": "react-jsx", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ // "declaration": true, /* Generates corresponding '.d.ts' file. */ // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ "sourceMap": true, /* Generates corresponding '.map' file. */ // "outFile": "./", /* Concatenate and emit output to single file. */ // "outDir": "./", /* Redirect output structure to the directory. */ @@ -21,7 +21,7 @@ // "removeComments": true, /* Do not emit comments to output. */ "noEmit": true, /* Do not emit outputs. */ // "importHelpers": true, /* Import emit helpers from 'tslib'. */ // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ - "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ /* Strict Type-Checking Options */// "strict": true /* Enable all strict type-checking options. */ + "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ /* Strict Type-Checking Options */ // "strict": true /* Enable all strict type-checking options. */ // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ // "strictNullChecks": true, /* Enable strict null checks. */ // "strictFunctionTypes": true, /* Enable strict checking of function types. */ @@ -80,6 +80,7 @@ "next-env.d.ts", ".next/types/**/*.ts", "**/*.ts", - "**/*.tsx" + "**/*.tsx", + ".next/dev/types/**/*.ts" ] } diff --git a/yarn.lock b/yarn.lock index 08e5e281a576d..7f0f037aaf8f8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -794,11 +794,25 @@ js-tokens "^4.0.0" picocolors "^1.0.0" +"@babel/code-frame@^7.28.6", "@babel/code-frame@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.29.0.tgz#7cd7a59f15b3cc0dcd803038f7792712a7d0b15c" + integrity sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw== + dependencies: + "@babel/helper-validator-identifier" "^7.28.5" + js-tokens "^4.0.0" + picocolors "^1.1.1" + "@babel/compat-data@^7.25.9": version "7.26.2" resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.2.tgz" integrity sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg== +"@babel/compat-data@^7.28.6": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.29.0.tgz#00d03e8c0ac24dd9be942c5370990cbe1f17d88d" + integrity sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg== + "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.18.5", "@babel/core@^7.23.9": version "7.26.0" resolved "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz" @@ -820,6 +834,27 @@ json5 "^2.2.3" semver "^6.3.1" +"@babel/core@^7.24.4": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.29.0.tgz#5286ad785df7f79d656e88ce86e650d16ca5f322" + integrity sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA== + dependencies: + "@babel/code-frame" "^7.29.0" + "@babel/generator" "^7.29.0" + "@babel/helper-compilation-targets" "^7.28.6" + "@babel/helper-module-transforms" "^7.28.6" + "@babel/helpers" "^7.28.6" + "@babel/parser" "^7.29.0" + "@babel/template" "^7.28.6" + "@babel/traverse" "^7.29.0" + "@babel/types" "^7.29.0" + "@jridgewell/remapping" "^2.3.5" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + "@babel/generator@^7.25.9", "@babel/generator@^7.26.0", "@babel/generator@^7.7.2": version "7.26.2" resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.26.2.tgz" @@ -831,6 +866,17 @@ "@jridgewell/trace-mapping" "^0.3.25" jsesc "^3.0.2" +"@babel/generator@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.29.0.tgz#4cba5a76b3c71d8be31761b03329d5dc7768447f" + integrity sha512-vSH118/wwM/pLR38g/Sgk05sNtro6TlTJKuiMXDaZqPUfjTFcudpCOt00IhOfj+1BFAX+UFAlzCU+6WXr3GLFQ== + dependencies: + "@babel/parser" "^7.29.0" + "@babel/types" "^7.29.0" + "@jridgewell/gen-mapping" "^0.3.12" + "@jridgewell/trace-mapping" "^0.3.28" + jsesc "^3.0.2" + "@babel/helper-annotate-as-pure@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz" @@ -849,6 +895,17 @@ lru-cache "^5.1.1" semver "^6.3.1" +"@babel/helper-compilation-targets@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz#32c4a3f41f12ed1532179b108a4d746e105c2b25" + integrity sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA== + dependencies: + "@babel/compat-data" "^7.28.6" + "@babel/helper-validator-option" "^7.27.1" + browserslist "^4.24.0" + lru-cache "^5.1.1" + semver "^6.3.1" + "@babel/helper-create-class-features-plugin@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz" @@ -862,6 +919,11 @@ "@babel/traverse" "^7.25.9" semver "^6.3.1" +"@babel/helper-globals@^7.28.0": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/helper-globals/-/helper-globals-7.28.0.tgz#b9430df2aa4e17bc28665eadeae8aa1d985e6674" + integrity sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw== + "@babel/helper-member-expression-to-functions@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz" @@ -878,6 +940,14 @@ "@babel/traverse" "^7.25.9" "@babel/types" "^7.25.9" +"@babel/helper-module-imports@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz#60632cbd6ffb70b22823187201116762a03e2d5c" + integrity sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw== + dependencies: + "@babel/traverse" "^7.28.6" + "@babel/types" "^7.28.6" + "@babel/helper-module-transforms@^7.25.9", "@babel/helper-module-transforms@^7.26.0": version "7.26.0" resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz" @@ -887,6 +957,15 @@ "@babel/helper-validator-identifier" "^7.25.9" "@babel/traverse" "^7.25.9" +"@babel/helper-module-transforms@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz#9312d9d9e56edc35aeb6e95c25d4106b50b9eb1e" + integrity sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA== + dependencies: + "@babel/helper-module-imports" "^7.28.6" + "@babel/helper-validator-identifier" "^7.28.5" + "@babel/traverse" "^7.28.6" + "@babel/helper-optimise-call-expression@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz" @@ -929,16 +1008,31 @@ resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz" integrity sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA== +"@babel/helper-string-parser@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687" + integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== + "@babel/helper-validator-identifier@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz" integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ== +"@babel/helper-validator-identifier@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz#010b6938fab7cb7df74aa2bbc06aa503b8fe5fb4" + integrity sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q== + "@babel/helper-validator-option@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz" integrity sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw== +"@babel/helper-validator-option@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz#fa52f5b1e7db1ab049445b421c4471303897702f" + integrity sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg== + "@babel/helpers@^7.26.0": version "7.27.0" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.27.0.tgz#53d156098defa8243eab0f32fa17589075a1b808" @@ -947,6 +1041,14 @@ "@babel/template" "^7.27.0" "@babel/types" "^7.27.0" +"@babel/helpers@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.28.6.tgz#fca903a313ae675617936e8998b814c415cbf5d7" + integrity sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw== + dependencies: + "@babel/template" "^7.28.6" + "@babel/types" "^7.28.6" + "@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.25.9", "@babel/parser@^7.26.0", "@babel/parser@^7.26.2": version "7.26.2" resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.26.2.tgz" @@ -954,6 +1056,13 @@ dependencies: "@babel/types" "^7.26.0" +"@babel/parser@^7.24.4", "@babel/parser@^7.28.6", "@babel/parser@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.29.0.tgz#669ef345add7d057e92b7ed15f0bac07611831b6" + integrity sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww== + dependencies: + "@babel/types" "^7.29.0" + "@babel/parser@^7.27.0": version "7.27.0" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.27.0.tgz#3d7d6ee268e41d2600091cbd4e145ffee85a44ec" @@ -1136,6 +1245,15 @@ "@babel/parser" "^7.27.0" "@babel/types" "^7.27.0" +"@babel/template@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.28.6.tgz#0e7e56ecedb78aeef66ce7972b082fce76a23e57" + integrity sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ== + dependencies: + "@babel/code-frame" "^7.28.6" + "@babel/parser" "^7.28.6" + "@babel/types" "^7.28.6" + "@babel/traverse@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.9.tgz" @@ -1149,6 +1267,19 @@ debug "^4.3.1" globals "^11.1.0" +"@babel/traverse@^7.28.6", "@babel/traverse@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.29.0.tgz#f323d05001440253eead3c9c858adbe00b90310a" + integrity sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA== + dependencies: + "@babel/code-frame" "^7.29.0" + "@babel/generator" "^7.29.0" + "@babel/helper-globals" "^7.28.0" + "@babel/parser" "^7.29.0" + "@babel/template" "^7.28.6" + "@babel/types" "^7.29.0" + debug "^4.3.1" + "@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.25.9", "@babel/types@^7.26.0", "@babel/types@^7.3.3": version "7.26.0" resolved "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz" @@ -1165,6 +1296,14 @@ "@babel/helper-string-parser" "^7.25.9" "@babel/helper-validator-identifier" "^7.25.9" +"@babel/types@^7.28.6", "@babel/types@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.29.0.tgz#9f5b1e838c446e72cf3cd4b918152b8c605e37c7" + integrity sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A== + dependencies: + "@babel/helper-string-parser" "^7.27.1" + "@babel/helper-validator-identifier" "^7.28.5" + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz" @@ -1250,6 +1389,13 @@ dependencies: tslib "^2.4.0" +"@emnapi/runtime@^1.7.0": + version "1.8.1" + resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.8.1.tgz#550fa7e3c0d49c5fb175a116e8cd70614f9a22a5" + integrity sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg== + dependencies: + tslib "^2.4.0" + "@emotion/babel-plugin@^11.13.5": version "11.13.5" resolved "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.13.5.tgz" @@ -1523,7 +1669,19 @@ dependencies: eslint-visitor-keys "^3.4.3" -"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": +"@eslint-community/eslint-utils@^4.9.1": + version "4.9.1" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz#4e90af67bc51ddee6cdef5284edf572ec376b595" + integrity sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ== + dependencies: + eslint-visitor-keys "^3.4.3" + +"@eslint-community/regexpp@^4.12.2": + version "4.12.2" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.2.tgz#bccdf615bcf7b6e8db830ec0b8d21c9a25de597b" + integrity sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew== + +"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": version "4.12.1" resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz" integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== @@ -1543,6 +1701,21 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" +"@eslint/eslintrc@^3.2.0": + version "3.3.3" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.3.3.tgz#26393a0806501b5e2b6a43aa588a4d8df67880ac" + integrity sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^10.0.1" + globals "^14.0.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.1" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + "@eslint/js@8.57.1": version "8.57.1" resolved "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz" @@ -1662,6 +1835,11 @@ local-pkg "^1.1.1" mlly "^1.7.4" +"@img/colour@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@img/colour/-/colour-1.0.0.tgz#d2fabb223455a793bf3bf9c70de3d28526aa8311" + integrity sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw== + "@img/sharp-darwin-arm64@0.33.5": version "0.33.5" resolved "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz" @@ -1669,6 +1847,13 @@ optionalDependencies: "@img/sharp-libvips-darwin-arm64" "1.0.4" +"@img/sharp-darwin-arm64@0.34.5": + version "0.34.5" + resolved "https://registry.yarnpkg.com/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.5.tgz#6e0732dcade126b6670af7aa17060b926835ea86" + integrity sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w== + optionalDependencies: + "@img/sharp-libvips-darwin-arm64" "1.2.4" + "@img/sharp-darwin-x64@0.33.5": version "0.33.5" resolved "https://registry.yarnpkg.com/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz#e03d3451cd9e664faa72948cc70a403ea4063d61" @@ -1676,46 +1861,103 @@ optionalDependencies: "@img/sharp-libvips-darwin-x64" "1.0.4" +"@img/sharp-darwin-x64@0.34.5": + version "0.34.5" + resolved "https://registry.yarnpkg.com/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.5.tgz#19bc1dd6eba6d5a96283498b9c9f401180ee9c7b" + integrity sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw== + optionalDependencies: + "@img/sharp-libvips-darwin-x64" "1.2.4" + "@img/sharp-libvips-darwin-arm64@1.0.4": version "1.0.4" resolved "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz" integrity sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg== +"@img/sharp-libvips-darwin-arm64@1.2.4": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.4.tgz#2894c0cb87d42276c3889942e8e2db517a492c43" + integrity sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g== + "@img/sharp-libvips-darwin-x64@1.0.4": version "1.0.4" resolved "https://registry.yarnpkg.com/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz#e0456f8f7c623f9dbfbdc77383caa72281d86062" integrity sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ== +"@img/sharp-libvips-darwin-x64@1.2.4": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.4.tgz#e63681f4539a94af9cd17246ed8881734386f8cc" + integrity sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg== + "@img/sharp-libvips-linux-arm64@1.0.4": version "1.0.4" resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz#979b1c66c9a91f7ff2893556ef267f90ebe51704" integrity sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA== +"@img/sharp-libvips-linux-arm64@1.2.4": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.4.tgz#b1b288b36864b3bce545ad91fa6dadcf1a4ad318" + integrity sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw== + "@img/sharp-libvips-linux-arm@1.0.5": version "1.0.5" resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz#99f922d4e15216ec205dcb6891b721bfd2884197" integrity sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g== +"@img/sharp-libvips-linux-arm@1.2.4": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.4.tgz#b9260dd1ebe6f9e3bdbcbdcac9d2ac125f35852d" + integrity sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A== + +"@img/sharp-libvips-linux-ppc64@1.2.4": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.4.tgz#4b83ecf2a829057222b38848c7b022e7b4d07aa7" + integrity sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA== + +"@img/sharp-libvips-linux-riscv64@1.2.4": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.2.4.tgz#880b4678009e5a2080af192332b00b0aaf8a48de" + integrity sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA== + "@img/sharp-libvips-linux-s390x@1.0.4": version "1.0.4" resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.4.tgz#f8a5eb1f374a082f72b3f45e2fb25b8118a8a5ce" integrity sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA== +"@img/sharp-libvips-linux-s390x@1.2.4": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.4.tgz#74f343c8e10fad821b38f75ced30488939dc59ec" + integrity sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ== + "@img/sharp-libvips-linux-x64@1.0.4": version "1.0.4" resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz#d4c4619cdd157774906e15770ee119931c7ef5e0" integrity sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw== +"@img/sharp-libvips-linux-x64@1.2.4": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.4.tgz#df4183e8bd8410f7d61b66859a35edeab0a531ce" + integrity sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw== + "@img/sharp-libvips-linuxmusl-arm64@1.0.4": version "1.0.4" resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.4.tgz#166778da0f48dd2bded1fa3033cee6b588f0d5d5" integrity sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA== +"@img/sharp-libvips-linuxmusl-arm64@1.2.4": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.4.tgz#c8d6b48211df67137541007ee8d1b7b1f8ca8e06" + integrity sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw== + "@img/sharp-libvips-linuxmusl-x64@1.0.4": version "1.0.4" resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz#93794e4d7720b077fcad3e02982f2f1c246751ff" integrity sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw== +"@img/sharp-libvips-linuxmusl-x64@1.2.4": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.4.tgz#be11c75bee5b080cbee31a153a8779448f919f75" + integrity sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg== + "@img/sharp-linux-arm64@0.33.5": version "0.33.5" resolved "https://registry.yarnpkg.com/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.5.tgz#edb0697e7a8279c9fc829a60fc35644c4839bb22" @@ -1723,6 +1965,13 @@ optionalDependencies: "@img/sharp-libvips-linux-arm64" "1.0.4" +"@img/sharp-linux-arm64@0.34.5": + version "0.34.5" + resolved "https://registry.yarnpkg.com/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.5.tgz#7aa7764ef9c001f15e610546d42fce56911790cc" + integrity sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg== + optionalDependencies: + "@img/sharp-libvips-linux-arm64" "1.2.4" + "@img/sharp-linux-arm@0.33.5": version "0.33.5" resolved "https://registry.yarnpkg.com/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.5.tgz#422c1a352e7b5832842577dc51602bcd5b6f5eff" @@ -1730,6 +1979,27 @@ optionalDependencies: "@img/sharp-libvips-linux-arm" "1.0.5" +"@img/sharp-linux-arm@0.34.5": + version "0.34.5" + resolved "https://registry.yarnpkg.com/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.5.tgz#5fb0c3695dd12522d39c3ff7a6bc816461780a0d" + integrity sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw== + optionalDependencies: + "@img/sharp-libvips-linux-arm" "1.2.4" + +"@img/sharp-linux-ppc64@0.34.5": + version "0.34.5" + resolved "https://registry.yarnpkg.com/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.5.tgz#9c213a81520a20caf66978f3d4c07456ff2e0813" + integrity sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA== + optionalDependencies: + "@img/sharp-libvips-linux-ppc64" "1.2.4" + +"@img/sharp-linux-riscv64@0.34.5": + version "0.34.5" + resolved "https://registry.yarnpkg.com/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.34.5.tgz#cdd28182774eadbe04f62675a16aabbccb833f60" + integrity sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw== + optionalDependencies: + "@img/sharp-libvips-linux-riscv64" "1.2.4" + "@img/sharp-linux-s390x@0.33.5": version "0.33.5" resolved "https://registry.yarnpkg.com/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.5.tgz#f5c077926b48e97e4a04d004dfaf175972059667" @@ -1737,6 +2007,13 @@ optionalDependencies: "@img/sharp-libvips-linux-s390x" "1.0.4" +"@img/sharp-linux-s390x@0.34.5": + version "0.34.5" + resolved "https://registry.yarnpkg.com/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.5.tgz#93eac601b9f329bb27917e0e19098c722d630df7" + integrity sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg== + optionalDependencies: + "@img/sharp-libvips-linux-s390x" "1.2.4" + "@img/sharp-linux-x64@0.33.5": version "0.33.5" resolved "https://registry.yarnpkg.com/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz#d806e0afd71ae6775cc87f0da8f2d03a7c2209cb" @@ -1744,6 +2021,13 @@ optionalDependencies: "@img/sharp-libvips-linux-x64" "1.0.4" +"@img/sharp-linux-x64@0.34.5": + version "0.34.5" + resolved "https://registry.yarnpkg.com/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.5.tgz#55abc7cd754ffca5002b6c2b719abdfc846819a8" + integrity sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ== + optionalDependencies: + "@img/sharp-libvips-linux-x64" "1.2.4" + "@img/sharp-linuxmusl-arm64@0.33.5": version "0.33.5" resolved "https://registry.yarnpkg.com/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.5.tgz#252975b915894fb315af5deea174651e208d3d6b" @@ -1751,6 +2035,13 @@ optionalDependencies: "@img/sharp-libvips-linuxmusl-arm64" "1.0.4" +"@img/sharp-linuxmusl-arm64@0.34.5": + version "0.34.5" + resolved "https://registry.yarnpkg.com/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.5.tgz#d6515ee971bb62f73001a4829b9d865a11b77086" + integrity sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg== + optionalDependencies: + "@img/sharp-libvips-linuxmusl-arm64" "1.2.4" + "@img/sharp-linuxmusl-x64@0.33.5": version "0.33.5" resolved "https://registry.yarnpkg.com/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz#3f4609ac5d8ef8ec7dadee80b560961a60fd4f48" @@ -1758,6 +2049,13 @@ optionalDependencies: "@img/sharp-libvips-linuxmusl-x64" "1.0.4" +"@img/sharp-linuxmusl-x64@0.34.5": + version "0.34.5" + resolved "https://registry.yarnpkg.com/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.5.tgz#d97978aec7c5212f999714f2f5b736457e12ee9f" + integrity sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q== + optionalDependencies: + "@img/sharp-libvips-linuxmusl-x64" "1.2.4" + "@img/sharp-wasm32@0.33.5": version "0.33.5" resolved "https://registry.yarnpkg.com/@img/sharp-wasm32/-/sharp-wasm32-0.33.5.tgz#6f44f3283069d935bb5ca5813153572f3e6f61a1" @@ -1765,16 +2063,38 @@ dependencies: "@emnapi/runtime" "^1.2.0" +"@img/sharp-wasm32@0.34.5": + version "0.34.5" + resolved "https://registry.yarnpkg.com/@img/sharp-wasm32/-/sharp-wasm32-0.34.5.tgz#2f15803aa626f8c59dd7c9d0bbc766f1ab52cfa0" + integrity sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw== + dependencies: + "@emnapi/runtime" "^1.7.0" + +"@img/sharp-win32-arm64@0.34.5": + version "0.34.5" + resolved "https://registry.yarnpkg.com/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.5.tgz#3706e9e3ac35fddfc1c87f94e849f1b75307ce0a" + integrity sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g== + "@img/sharp-win32-ia32@0.33.5": version "0.33.5" resolved "https://registry.yarnpkg.com/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.5.tgz#1a0c839a40c5351e9885628c85f2e5dfd02b52a9" integrity sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ== +"@img/sharp-win32-ia32@0.34.5": + version "0.34.5" + resolved "https://registry.yarnpkg.com/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.5.tgz#0b71166599b049e032f085fb9263e02f4e4788de" + integrity sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg== + "@img/sharp-win32-x64@0.33.5": version "0.33.5" resolved "https://registry.yarnpkg.com/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz#56f00962ff0c4e0eb93d34a047d29fa995e3e342" integrity sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg== +"@img/sharp-win32-x64@0.34.5": + version "0.34.5" + resolved "https://registry.yarnpkg.com/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.5.tgz#a81ffb00e69267cd0a1d626eaedb8a8430b2b2f8" + integrity sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw== + "@isaacs/cliui@^8.0.2": version "8.0.2" resolved "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz" @@ -1995,6 +2315,14 @@ "@types/yargs" "^17.0.8" chalk "^4.0.0" +"@jridgewell/gen-mapping@^0.3.12": + version "0.3.13" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz#6342a19f44347518c93e43b1ac69deb3c4656a1f" + integrity sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA== + dependencies: + "@jridgewell/sourcemap-codec" "^1.5.0" + "@jridgewell/trace-mapping" "^0.3.24" + "@jridgewell/gen-mapping@^0.3.2", "@jridgewell/gen-mapping@^0.3.5": version "0.3.5" resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz" @@ -2004,6 +2332,14 @@ "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.24" +"@jridgewell/remapping@^2.3.5": + version "2.3.5" + resolved "https://registry.yarnpkg.com/@jridgewell/remapping/-/remapping-2.3.5.tgz#375c476d1972947851ba1e15ae8f123047445aa1" + integrity sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ== + dependencies: + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.24" + "@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@^3.1.0": version "3.1.2" resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz" @@ -2035,6 +2371,14 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" +"@jridgewell/trace-mapping@^0.3.28": + version "0.3.31" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz#db15d6781c931f3a251a3dac39501c98a6082fd0" + integrity sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + "@mdx-js/esbuild@^3.0.0": version "3.1.0" resolved "https://registry.npmjs.org/@mdx-js/esbuild/-/esbuild-3.1.0.tgz" @@ -2129,57 +2473,57 @@ dependencies: langium "3.3.1" -"@next/env@15.1.12": - version "15.1.12" - resolved "https://registry.yarnpkg.com/@next/env/-/env-15.1.12.tgz#0821510fa71871f1970cd216963d25a5970fe58a" - integrity sha512-EWKXZKsd9ZNn+gLqOtfwH2PQyWuWFmpLldjStw7mZgWgKu56vaqNkAGQrys2g5ER4CNXEDz3Khj2tD1pnsT9Uw== +"@next/env@16.1.6": + version "16.1.6" + resolved "https://registry.yarnpkg.com/@next/env/-/env-16.1.6.tgz#0f85979498249a94ef606ef535042a831f905e89" + integrity sha512-N1ySLuZjnAtN3kFnwhAwPvZah8RJxKasD7x1f8shFqhncnWZn4JMfg37diLNuoHsLAlrDfM3g4mawVdtAG8XLQ== -"@next/eslint-plugin-next@15.0.3": - version "15.0.3" - resolved "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-15.0.3.tgz" - integrity sha512-3Ln/nHq2V+v8uIaxCR6YfYo7ceRgZNXfTd3yW1ukTaFbO+/I8jNakrjYWODvG9BuR2v5kgVtH/C8r0i11quOgw== +"@next/eslint-plugin-next@16.1.6": + version "16.1.6" + resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-16.1.6.tgz#73b56b01c9db506998bd1e2d303c2605b0a1b7b0" + integrity sha512-/Qq3PTagA6+nYVfryAtQ7/9FEr/6YVyvOtl6rZnGsbReGLf0jZU6gkpr1FuChAQpvV46a78p4cmHOVP8mbfSMQ== dependencies: fast-glob "3.3.1" -"@next/swc-darwin-arm64@15.1.9": - version "15.1.9" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.1.9.tgz#7b95fc3b2cd5108b514c949c3bddb3a9b42a714e" - integrity sha512-sQF6MfW4nk0PwMYYq8xNgqyxZJGIJV16QqNDgaZ5ze9YoVzm4/YNx17X0exZudayjL9PF0/5RGffDtzXapch0Q== - -"@next/swc-darwin-x64@15.1.9": - version "15.1.9" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-15.1.9.tgz#bda6b37e0deeb64f4139cc70b37e370bd3367be8" - integrity sha512-fp0c1rB6jZvdSDhprOur36xzQvqelAkNRXM/An92sKjjtaJxjlqJR8jiQLQImPsClIu8amQn+ZzFwl1lsEf62w== - -"@next/swc-linux-arm64-gnu@15.1.9": - version "15.1.9" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.1.9.tgz#546717f65de5fa610cd211183bd1be63050ab1c4" - integrity sha512-77rYykF6UtaXvxh9YyRIKoaYPI6/YX6cy8j1DL5/1XkjbfOwFDfTEhH7YGPqG/ePl+emBcbDYC2elgEqY2e+ag== - -"@next/swc-linux-arm64-musl@15.1.9": - version "15.1.9" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.1.9.tgz#3594f47a94fd52e1aba00f59793171de9386f71a" - integrity sha512-uZ1HazKcyWC7RA6j+S/8aYgvxmDqwnG+gE5S9MhY7BTMj7ahXKunpKuX8/BA2M7OvINLv7LTzoobQbw928p3WA== - -"@next/swc-linux-x64-gnu@15.1.9": - version "15.1.9" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.1.9.tgz#77cc834636688e44fea4c9cee800649a4ed92b0d" - integrity sha512-gQIX1d3ct2RBlgbbWOrp+SHExmtmFm/HSW1Do5sSGMDyzbkYhS2sdq5LRDJWWsQu+/MqpgJHqJT6ORolKp/U1g== - -"@next/swc-linux-x64-musl@15.1.9": - version "15.1.9" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.1.9.tgz#88783a8968d0c0e4f274b68569b73c19ee2feecb" - integrity sha512-fJOwxAbCeq6Vo7pXZGDP6iA4+yIBGshp7ie2Evvge7S7lywyg7b/SGqcvWq/jYcmd0EbXdb7hBfdqSQwTtGTPg== - -"@next/swc-win32-arm64-msvc@15.1.9": - version "15.1.9" - resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.1.9.tgz#1b7024cee3eefe4bcf8f81e7cbffe6aeb15d32ea" - integrity sha512-crfbUkAd9PVg9nGfyjSzQbz82dPvc4pb1TeP0ZaAdGzTH6OfTU9kxidpFIogw0DYIEadI7hRSvuihy2NezkaNQ== - -"@next/swc-win32-x64-msvc@15.1.9": - version "15.1.9" - resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.1.9.tgz#92044825d0f9e017d6a27ab69fc8c8f5ca9dc239" - integrity sha512-SBB0oA4E2a0axUrUwLqXlLkSn+bRx9OWU6LheqmRrO53QEAJP7JquKh3kF0jRzmlYOWFZtQwyIWJMEJMtvvDcQ== +"@next/swc-darwin-arm64@16.1.6": + version "16.1.6" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-16.1.6.tgz#fbe1e360efdcc9ebd0a10301518275bc59e12a91" + integrity sha512-wTzYulosJr/6nFnqGW7FrG3jfUUlEf8UjGA0/pyypJl42ExdVgC6xJgcXQ+V8QFn6niSG2Pb8+MIG1mZr2vczw== + +"@next/swc-darwin-x64@16.1.6": + version "16.1.6" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-16.1.6.tgz#0e3781ef3abc8251c2a21addc733d9a87f44829b" + integrity sha512-BLFPYPDO+MNJsiDWbeVzqvYd4NyuRrEYVB5k2N3JfWncuHAy2IVwMAOlVQDFjj+krkWzhY2apvmekMkfQR0CUQ== + +"@next/swc-linux-arm64-gnu@16.1.6": + version "16.1.6" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-16.1.6.tgz#b24511af2c6129f2deaf5c8c04d297fe09cd40d7" + integrity sha512-OJYkCd5pj/QloBvoEcJ2XiMnlJkRv9idWA/j0ugSuA34gMT6f5b7vOiCQHVRpvStoZUknhl6/UxOXL4OwtdaBw== + +"@next/swc-linux-arm64-musl@16.1.6": + version "16.1.6" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-16.1.6.tgz#9d4ed0565689fc6a867250f994736a5b8c542ccb" + integrity sha512-S4J2v+8tT3NIO9u2q+S0G5KdvNDjXfAv06OhfOzNDaBn5rw84DGXWndOEB7d5/x852A20sW1M56vhC/tRVbccQ== + +"@next/swc-linux-x64-gnu@16.1.6": + version "16.1.6" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-16.1.6.tgz#cc757f4384e7eab7d3dba704a97f737518bae0d2" + integrity sha512-2eEBDkFlMMNQnkTyPBhQOAyn2qMxyG2eE7GPH2WIDGEpEILcBPI/jdSv4t6xupSP+ot/jkfrCShLAa7+ZUPcJQ== + +"@next/swc-linux-x64-musl@16.1.6": + version "16.1.6" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-16.1.6.tgz#ef1341740f29717deea7c6ec27ae6269386e20d1" + integrity sha512-oicJwRlyOoZXVlxmIMaTq7f8pN9QNbdes0q2FXfRsPhfCi8n8JmOZJm5oo1pwDaFbnnD421rVU409M3evFbIqg== + +"@next/swc-win32-arm64-msvc@16.1.6": + version "16.1.6" + resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-16.1.6.tgz#fee8719242aecf9c39c3a66f1f73821f7884dd16" + integrity sha512-gQmm8izDTPgs+DCWH22kcDmuUp7NyiJgEl18bcr8irXA5N2m2O+JQIr6f3ct42GOs9c0h8QF3L5SzIxcYAAXXw== + +"@next/swc-win32-x64-msvc@16.1.6": + version "16.1.6" + resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-16.1.6.tgz#60c27323c30f35722b20fd6d62449fbb768e46d9" + integrity sha512-NRfO39AIrzBnixKbjuo2YiYhB6o9d8v/ymU9m/Xk8cyVk+k7XylniXkHwjs4s70wedVffc6bQNbufk5v0xEm0A== "@nodelib/fs.scandir@2.1.5": version "2.1.5" @@ -3648,11 +3992,6 @@ resolved "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz" integrity sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g== -"@rushstack/eslint-patch@^1.10.3": - version "1.10.4" - resolved "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.4.tgz" - integrity sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA== - "@sentry-internal/browser-utils@10.27.0": version "10.27.0" resolved "https://registry.yarnpkg.com/@sentry-internal/browser-utils/-/browser-utils-10.27.0.tgz#e37295cec899428ebf66d532d8a1b0f703be00a6" @@ -4431,11 +4770,6 @@ "@spotlightjs/sidecar" "1.8.0" import-meta-resolve "^4.1.0" -"@swc/counter@0.1.3": - version "0.1.3" - resolved "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz" - integrity sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ== - "@swc/helpers@0.5.15": version "0.5.15" resolved "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz" @@ -5033,20 +5367,19 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0": - version "8.15.0" - resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.15.0.tgz" - integrity sha512-+zkm9AR1Ds9uLWN3fkoeXgFppaQ+uEVtfOV62dDmsy9QCNqlRHWNEck4yarvRNrvRcHQLGfqBNui3cimoz8XAg== - dependencies: - "@eslint-community/regexpp" "^4.10.0" - "@typescript-eslint/scope-manager" "8.15.0" - "@typescript-eslint/type-utils" "8.15.0" - "@typescript-eslint/utils" "8.15.0" - "@typescript-eslint/visitor-keys" "8.15.0" - graphemer "^1.4.0" - ignore "^5.3.1" +"@typescript-eslint/eslint-plugin@8.54.0": + version "8.54.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.54.0.tgz#d8899e5c2eccf5c4a20d01c036a193753748454d" + integrity sha512-hAAP5io/7csFStuOmR782YmTthKBJ9ND3WVL60hcOjvtGFb+HJxH4O5huAcmcZ9v9G8P+JETiZ/G1B8MALnWZQ== + dependencies: + "@eslint-community/regexpp" "^4.12.2" + "@typescript-eslint/scope-manager" "8.54.0" + "@typescript-eslint/type-utils" "8.54.0" + "@typescript-eslint/utils" "8.54.0" + "@typescript-eslint/visitor-keys" "8.54.0" + ignore "^7.0.5" natural-compare "^1.4.0" - ts-api-utils "^1.3.0" + ts-api-utils "^2.4.0" "@typescript-eslint/eslint-plugin@^6.19.0": version "6.21.0" @@ -5072,16 +5405,16 @@ dependencies: "@typescript-eslint/utils" "5.62.0" -"@typescript-eslint/parser@^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0": - version "8.15.0" - resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.15.0.tgz" - integrity sha512-7n59qFpghG4uazrF9qtGKBZXn7Oz4sOMm8dwNWDQY96Xlm2oX67eipqcblDj+oY1lLCbf1oltMZFpUso66Kl1A== +"@typescript-eslint/parser@8.54.0": + version "8.54.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.54.0.tgz#3d01a6f54ed247deb9982621f70e7abf1810bd97" + integrity sha512-BtE0k6cjwjLZoZixN0t5AKP0kSzlGu7FctRXYuPAm//aaiZhmfq1JwdYpYr1brzEspYyFeF+8XF5j2VK6oalrA== dependencies: - "@typescript-eslint/scope-manager" "8.15.0" - "@typescript-eslint/types" "8.15.0" - "@typescript-eslint/typescript-estree" "8.15.0" - "@typescript-eslint/visitor-keys" "8.15.0" - debug "^4.3.4" + "@typescript-eslint/scope-manager" "8.54.0" + "@typescript-eslint/types" "8.54.0" + "@typescript-eslint/typescript-estree" "8.54.0" + "@typescript-eslint/visitor-keys" "8.54.0" + debug "^4.4.3" "@typescript-eslint/parser@^6.19.0": version "6.21.0" @@ -5094,6 +5427,15 @@ "@typescript-eslint/visitor-keys" "6.21.0" debug "^4.3.4" +"@typescript-eslint/project-service@8.54.0": + version "8.54.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/project-service/-/project-service-8.54.0.tgz#f582aceb3d752544c8e1b11fea8d95d00cf9adc6" + integrity sha512-YPf+rvJ1s7MyiWM4uTRhE4DvBXrEV+d8oC3P9Y2eT7S+HBS0clybdMIPnhiATi9vZOYDc7OQ1L/i6ga6NFYK/g== + dependencies: + "@typescript-eslint/tsconfig-utils" "^8.54.0" + "@typescript-eslint/types" "^8.54.0" + debug "^4.4.3" + "@typescript-eslint/scope-manager@5.62.0": version "5.62.0" resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz" @@ -5110,13 +5452,18 @@ "@typescript-eslint/types" "6.21.0" "@typescript-eslint/visitor-keys" "6.21.0" -"@typescript-eslint/scope-manager@8.15.0": - version "8.15.0" - resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.15.0.tgz" - integrity sha512-QRGy8ADi4J7ii95xz4UoiymmmMd/zuy9azCaamnZ3FM8T5fZcex8UfJcjkiEZjJSztKfEBe3dZ5T/5RHAmw2mA== +"@typescript-eslint/scope-manager@8.54.0": + version "8.54.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.54.0.tgz#307dc8cbd80157e2772c2d36216857415a71ab33" + integrity sha512-27rYVQku26j/PbHYcVfRPonmOlVI6gihHtXFbTdB5sb6qA0wdAQAbyXFVarQ5t4HRojIz64IV90YtsjQSSGlQg== dependencies: - "@typescript-eslint/types" "8.15.0" - "@typescript-eslint/visitor-keys" "8.15.0" + "@typescript-eslint/types" "8.54.0" + "@typescript-eslint/visitor-keys" "8.54.0" + +"@typescript-eslint/tsconfig-utils@8.54.0", "@typescript-eslint/tsconfig-utils@^8.54.0": + version "8.54.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.54.0.tgz#71dd7ba1674bd48b172fc4c85b2f734b0eae3dbc" + integrity sha512-dRgOyT2hPk/JwxNMZDsIXDgyl9axdJI3ogZ2XWhBPsnZUv+hPesa5iuhdYt2gzwA9t8RE5ytOJ6xB0moV0Ujvw== "@typescript-eslint/type-utils@6.21.0": version "6.21.0" @@ -5128,15 +5475,16 @@ debug "^4.3.4" ts-api-utils "^1.0.1" -"@typescript-eslint/type-utils@8.15.0": - version "8.15.0" - resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.15.0.tgz" - integrity sha512-UU6uwXDoI3JGSXmcdnP5d8Fffa2KayOhUUqr/AiBnG1Gl7+7ut/oyagVeSkh7bxQ0zSXV9ptRh/4N15nkCqnpw== +"@typescript-eslint/type-utils@8.54.0": + version "8.54.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.54.0.tgz#64965317dd4118346c2fa5ee94492892200e9fb9" + integrity sha512-hiLguxJWHjjwL6xMBwD903ciAwd7DmK30Y9Axs/etOkftC3ZNN9K44IuRD/EB08amu+Zw6W37x9RecLkOo3pMA== dependencies: - "@typescript-eslint/typescript-estree" "8.15.0" - "@typescript-eslint/utils" "8.15.0" - debug "^4.3.4" - ts-api-utils "^1.3.0" + "@typescript-eslint/types" "8.54.0" + "@typescript-eslint/typescript-estree" "8.54.0" + "@typescript-eslint/utils" "8.54.0" + debug "^4.4.3" + ts-api-utils "^2.4.0" "@typescript-eslint/types@5.62.0": version "5.62.0" @@ -5148,10 +5496,10 @@ resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz" integrity sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg== -"@typescript-eslint/types@8.15.0": - version "8.15.0" - resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.15.0.tgz" - integrity sha512-n3Gt8Y/KyJNe0S3yDCD2RVKrHBC4gTUcLTebVBXacPy091E6tNspFLKRXlk3hwT4G55nfr1n2AdFqi/XMxzmPQ== +"@typescript-eslint/types@8.54.0", "@typescript-eslint/types@^8.54.0": + version "8.54.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.54.0.tgz#c12d41f67a2e15a8a96fbc5f2d07b17331130889" + integrity sha512-PDUI9R1BVjqu7AUDsRBbKMtwmjWcn4J3le+5LpcFgWULN3LvHC5rkc9gCVxbrsrGmO1jfPybN5s6h4Jy+OnkAA== "@typescript-eslint/typescript-estree@5.62.0": version "5.62.0" @@ -5180,19 +5528,20 @@ semver "^7.5.4" ts-api-utils "^1.0.1" -"@typescript-eslint/typescript-estree@8.15.0": - version "8.15.0" - resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.15.0.tgz" - integrity sha512-1eMp2JgNec/niZsR7ioFBlsh/Fk0oJbhaqO0jRyQBMgkz7RrFfkqF9lYYmBoGBaSiLnu8TAPQTwoTUiSTUW9dg== - dependencies: - "@typescript-eslint/types" "8.15.0" - "@typescript-eslint/visitor-keys" "8.15.0" - debug "^4.3.4" - fast-glob "^3.3.2" - is-glob "^4.0.3" - minimatch "^9.0.4" - semver "^7.6.0" - ts-api-utils "^1.3.0" +"@typescript-eslint/typescript-estree@8.54.0": + version "8.54.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.54.0.tgz#3c7716905b2b811fadbd2114804047d1bfc86527" + integrity sha512-BUwcskRaPvTk6fzVWgDPdUndLjB87KYDrN5EYGetnktoeAvPtO4ONHlAZDnj5VFnUANg0Sjm7j4usBlnoVMHwA== + dependencies: + "@typescript-eslint/project-service" "8.54.0" + "@typescript-eslint/tsconfig-utils" "8.54.0" + "@typescript-eslint/types" "8.54.0" + "@typescript-eslint/visitor-keys" "8.54.0" + debug "^4.4.3" + minimatch "^9.0.5" + semver "^7.7.3" + tinyglobby "^0.2.15" + ts-api-utils "^2.4.0" "@typescript-eslint/utils@5.62.0", "@typescript-eslint/utils@^5.10.0", "@typescript-eslint/utils@^5.25.0", "@typescript-eslint/utils@^5.62.0": version "5.62.0" @@ -5221,15 +5570,15 @@ "@typescript-eslint/typescript-estree" "6.21.0" semver "^7.5.4" -"@typescript-eslint/utils@8.15.0": - version "8.15.0" - resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.15.0.tgz" - integrity sha512-k82RI9yGhr0QM3Dnq+egEpz9qB6Un+WLYhmoNcvl8ltMEededhh7otBVVIDDsEEttauwdY/hQoSsOv13lxrFzQ== +"@typescript-eslint/utils@8.54.0": + version "8.54.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.54.0.tgz#c79a4bcbeebb4f571278c0183ed1cb601d84c6c8" + integrity sha512-9Cnda8GS57AQakvRyG0PTejJNlA2xhvyNtEVIMlDWOOeEyBkYWhGPnfrIAnqxLMTSTo6q8g12XVjjev5l1NvMA== dependencies: - "@eslint-community/eslint-utils" "^4.4.0" - "@typescript-eslint/scope-manager" "8.15.0" - "@typescript-eslint/types" "8.15.0" - "@typescript-eslint/typescript-estree" "8.15.0" + "@eslint-community/eslint-utils" "^4.9.1" + "@typescript-eslint/scope-manager" "8.54.0" + "@typescript-eslint/types" "8.54.0" + "@typescript-eslint/typescript-estree" "8.54.0" "@typescript-eslint/visitor-keys@5.62.0": version "5.62.0" @@ -5247,13 +5596,13 @@ "@typescript-eslint/types" "6.21.0" eslint-visitor-keys "^3.4.1" -"@typescript-eslint/visitor-keys@8.15.0": - version "8.15.0" - resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.15.0.tgz" - integrity sha512-h8vYOulWec9LhpwfAdZf2bjr8xIp0KNKnpgqSz0qqYYKAW/QZKw3ktRndbiAtUz4acH4QLQavwZBYCc0wulA/Q== +"@typescript-eslint/visitor-keys@8.54.0": + version "8.54.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.54.0.tgz#0e4b50124b210b8600b245dd66cbad52deb15590" + integrity sha512-VFlhGSl4opC0bprJiItPQ1RfUhGDIBokcPwaFH4yiBCaNPeld/9VeXbiPO1cLyorQi1G1vL+ecBk1x8o1axORA== dependencies: - "@typescript-eslint/types" "8.15.0" - eslint-visitor-keys "^4.2.0" + "@typescript-eslint/types" "8.54.0" + eslint-visitor-keys "^4.2.1" "@ungap/structured-clone@^1.0.0", "@ungap/structured-clone@^1.2.0": version "1.2.0" @@ -5532,6 +5881,14 @@ array-buffer-byte-length@^1.0.1: call-bind "^1.0.5" is-array-buffer "^3.0.4" +array-buffer-byte-length@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz#384d12a37295aec3769ab022ad323a18a51ccf8b" + integrity sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw== + dependencies: + call-bound "^1.0.3" + is-array-buffer "^3.0.5" + array-includes@^3.1.6, array-includes@^3.1.8: version "3.1.8" resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz" @@ -5544,6 +5901,20 @@ array-includes@^3.1.6, array-includes@^3.1.8: get-intrinsic "^1.2.4" is-string "^1.0.7" +array-includes@^3.1.9: + version "3.1.9" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.9.tgz#1f0ccaa08e90cdbc3eb433210f903ad0f17c3f3a" + integrity sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.4" + define-properties "^1.2.1" + es-abstract "^1.24.0" + es-object-atoms "^1.1.1" + get-intrinsic "^1.3.0" + is-string "^1.1.1" + math-intrinsics "^1.1.0" + array-union@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" @@ -5573,6 +5944,19 @@ array.prototype.findlastindex@^1.2.5: es-object-atoms "^1.0.0" es-shim-unscopables "^1.0.2" +array.prototype.findlastindex@^1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz#cfa1065c81dcb64e34557c9b81d012f6a421c564" + integrity sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.4" + define-properties "^1.2.1" + es-abstract "^1.23.9" + es-errors "^1.3.0" + es-object-atoms "^1.1.1" + es-shim-unscopables "^1.1.0" + array.prototype.flat@^1.3.1, array.prototype.flat@^1.3.2: version "1.3.2" resolved "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz" @@ -5583,6 +5967,16 @@ array.prototype.flat@^1.3.1, array.prototype.flat@^1.3.2: es-abstract "^1.22.1" es-shim-unscopables "^1.0.0" +array.prototype.flat@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz#534aaf9e6e8dd79fb6b9a9917f839ef1ec63afe5" + integrity sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg== + dependencies: + call-bind "^1.0.8" + define-properties "^1.2.1" + es-abstract "^1.23.5" + es-shim-unscopables "^1.0.2" + array.prototype.flatmap@^1.3.2: version "1.3.2" resolved "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz" @@ -5593,6 +5987,16 @@ array.prototype.flatmap@^1.3.2: es-abstract "^1.22.1" es-shim-unscopables "^1.0.0" +array.prototype.flatmap@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz#712cc792ae70370ae40586264629e33aab5dd38b" + integrity sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg== + dependencies: + call-bind "^1.0.8" + define-properties "^1.2.1" + es-abstract "^1.23.5" + es-shim-unscopables "^1.0.2" + array.prototype.tosorted@^1.1.4: version "1.1.4" resolved "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz" @@ -5618,6 +6022,19 @@ arraybuffer.prototype.slice@^1.0.3: is-array-buffer "^3.0.4" is-shared-array-buffer "^1.0.2" +arraybuffer.prototype.slice@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz#9d760d84dbdd06d0cbf92c8849615a1a7ab3183c" + integrity sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ== + dependencies: + array-buffer-byte-length "^1.0.1" + call-bind "^1.0.8" + define-properties "^1.2.1" + es-abstract "^1.23.5" + es-errors "^1.3.0" + get-intrinsic "^1.2.6" + is-array-buffer "^3.0.4" + arrify@^2.0.0: version "2.0.1" resolved "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz" @@ -5766,6 +6183,11 @@ base64-js@^1.3.0: resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== +baseline-browser-mapping@^2.8.3: + version "2.9.19" + resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.9.19.tgz#3e508c43c46d961eb4d7d2e5b8d1dd0f9ee4f488" + integrity sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg== + bcp-47-match@^2.0.0: version "2.0.3" resolved "https://registry.npmjs.org/bcp-47-match/-/bcp-47-match-2.0.3.tgz" @@ -5867,18 +6289,19 @@ buffer-from@^1.0.0: resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== -busboy@1.6.0: - version "1.6.0" - resolved "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz" - integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== - dependencies: - streamsearch "^1.1.0" - cac@^6.7.14: version "6.7.14" resolved "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz" integrity sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ== +call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6" + integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7: version "1.0.7" resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz" @@ -5890,6 +6313,24 @@ call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7: get-intrinsic "^1.2.4" set-function-length "^1.2.1" +call-bind@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.8.tgz#0736a9660f537e3388826f440d5ec45f744eaa4c" + integrity sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww== + dependencies: + call-bind-apply-helpers "^1.0.0" + es-define-property "^1.0.0" + get-intrinsic "^1.2.4" + set-function-length "^1.2.2" + +call-bound@^1.0.2, call-bound@^1.0.3, call-bound@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/call-bound/-/call-bound-1.0.4.tgz#238de935d2a2a692928c538c7ccfa91067fd062a" + integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg== + dependencies: + call-bind-apply-helpers "^1.0.2" + get-intrinsic "^1.3.0" + callsites@^3.0.0: version "3.1.0" resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" @@ -6606,6 +7047,15 @@ data-view-buffer@^1.0.1: es-errors "^1.3.0" is-data-view "^1.0.1" +data-view-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/data-view-buffer/-/data-view-buffer-1.0.2.tgz#211a03ba95ecaf7798a8c7198d79536211f88570" + integrity sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ== + dependencies: + call-bound "^1.0.3" + es-errors "^1.3.0" + is-data-view "^1.0.2" + data-view-byte-length@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz" @@ -6615,6 +7065,15 @@ data-view-byte-length@^1.0.1: es-errors "^1.3.0" is-data-view "^1.0.1" +data-view-byte-length@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz#9e80f7ca52453ce3e93d25a35318767ea7704735" + integrity sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ== + dependencies: + call-bound "^1.0.3" + es-errors "^1.3.0" + is-data-view "^1.0.2" + data-view-byte-offset@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz" @@ -6624,6 +7083,15 @@ data-view-byte-offset@^1.0.0: es-errors "^1.3.0" is-data-view "^1.0.1" +data-view-byte-offset@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz#068307f9b71ab76dbbe10291389e020856606191" + integrity sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + is-data-view "^1.0.1" + dayjs@^1.11.13: version "1.11.18" resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.18.tgz#835fa712aac52ab9dec8b1494098774ed7070a11" @@ -6650,7 +7118,7 @@ debug@^4.4.0: dependencies: ms "^2.1.3" -debug@^4.4.1: +debug@^4.4.1, debug@^4.4.3: version "4.4.3" resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.3.tgz#c6ae432d9bd9662582fce08709b038c58e9e3d6a" integrity sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA== @@ -6739,6 +7207,11 @@ detect-libc@^2.0.3: resolved "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz" integrity sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw== +detect-libc@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.1.2.tgz#689c5dcdc1900ef5583a4cb9f6d7b473742074ad" + integrity sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ== + detect-newline@^3.0.0: version "3.1.0" resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz" @@ -6893,6 +7366,15 @@ dotenv@^16.3.0, dotenv@^16.3.1: resolved "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz" integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg== +dunder-proto@^1.0.0, dunder-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" + integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== + dependencies: + call-bind-apply-helpers "^1.0.1" + es-errors "^1.3.0" + gopd "^1.2.0" + duplexify@^4.1.3: version "4.1.3" resolved "https://registry.npmjs.org/duplexify/-/duplexify-4.1.3.tgz" @@ -7019,6 +7501,66 @@ es-abstract@^1.17.5, es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23 unbox-primitive "^1.0.2" which-typed-array "^1.1.15" +es-abstract@^1.23.5, es-abstract@^1.23.6, es-abstract@^1.23.9, es-abstract@^1.24.0, es-abstract@^1.24.1: + version "1.24.1" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.24.1.tgz#f0c131ed5ea1bb2411134a8dd94def09c46c7899" + integrity sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw== + dependencies: + array-buffer-byte-length "^1.0.2" + arraybuffer.prototype.slice "^1.0.4" + available-typed-arrays "^1.0.7" + call-bind "^1.0.8" + call-bound "^1.0.4" + data-view-buffer "^1.0.2" + data-view-byte-length "^1.0.2" + data-view-byte-offset "^1.0.1" + es-define-property "^1.0.1" + es-errors "^1.3.0" + es-object-atoms "^1.1.1" + es-set-tostringtag "^2.1.0" + es-to-primitive "^1.3.0" + function.prototype.name "^1.1.8" + get-intrinsic "^1.3.0" + get-proto "^1.0.1" + get-symbol-description "^1.1.0" + globalthis "^1.0.4" + gopd "^1.2.0" + has-property-descriptors "^1.0.2" + has-proto "^1.2.0" + has-symbols "^1.1.0" + hasown "^2.0.2" + internal-slot "^1.1.0" + is-array-buffer "^3.0.5" + is-callable "^1.2.7" + is-data-view "^1.0.2" + is-negative-zero "^2.0.3" + is-regex "^1.2.1" + is-set "^2.0.3" + is-shared-array-buffer "^1.0.4" + is-string "^1.1.1" + is-typed-array "^1.1.15" + is-weakref "^1.1.1" + math-intrinsics "^1.1.0" + object-inspect "^1.13.4" + object-keys "^1.1.1" + object.assign "^4.1.7" + own-keys "^1.0.1" + regexp.prototype.flags "^1.5.4" + safe-array-concat "^1.1.3" + safe-push-apply "^1.0.0" + safe-regex-test "^1.1.0" + set-proto "^1.0.0" + stop-iteration-iterator "^1.1.0" + string.prototype.trim "^1.2.10" + string.prototype.trimend "^1.0.9" + string.prototype.trimstart "^1.0.8" + typed-array-buffer "^1.0.3" + typed-array-byte-length "^1.0.3" + typed-array-byte-offset "^1.0.4" + typed-array-length "^1.0.7" + unbox-primitive "^1.1.0" + which-typed-array "^1.1.19" + es-define-property@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz" @@ -7026,6 +7568,11 @@ es-define-property@^1.0.0: dependencies: get-intrinsic "^1.2.4" +es-define-property@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" + integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== + es-errors@^1.2.1, es-errors@^1.3.0: version "1.3.0" resolved "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz" @@ -7052,6 +7599,28 @@ es-iterator-helpers@^1.1.0: iterator.prototype "^1.1.3" safe-array-concat "^1.1.2" +es-iterator-helpers@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.2.2.tgz#d979a9f686e2b0b72f88dbead7229924544720bc" + integrity sha512-BrUQ0cPTB/IwXj23HtwHjS9n7O4h9FX94b4xc5zlTHxeLgTAdzYUDyy6KdExAl9lbN5rtfe44xpjpmj9grxs5w== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.4" + define-properties "^1.2.1" + es-abstract "^1.24.1" + es-errors "^1.3.0" + es-set-tostringtag "^2.1.0" + function-bind "^1.1.2" + get-intrinsic "^1.3.0" + globalthis "^1.0.4" + gopd "^1.2.0" + has-property-descriptors "^1.0.2" + has-proto "^1.2.0" + has-symbols "^1.1.0" + internal-slot "^1.1.0" + iterator.prototype "^1.1.5" + safe-array-concat "^1.1.3" + es-module-lexer@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.6.0.tgz#da49f587fd9e68ee2404fe4e256c0c7d3a81be21" @@ -7064,6 +7633,13 @@ es-object-atoms@^1.0.0: dependencies: es-errors "^1.3.0" +es-object-atoms@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1" + integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== + dependencies: + es-errors "^1.3.0" + es-set-tostringtag@^2.0.3: version "2.0.3" resolved "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz" @@ -7073,6 +7649,16 @@ es-set-tostringtag@^2.0.3: has-tostringtag "^1.0.2" hasown "^2.0.1" +es-set-tostringtag@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz#f31dbbe0c183b00a6d26eb6325c810c0fd18bd4d" + integrity sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA== + dependencies: + es-errors "^1.3.0" + get-intrinsic "^1.2.6" + has-tostringtag "^1.0.2" + hasown "^2.0.2" + es-shim-unscopables@^1.0.0, es-shim-unscopables@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz" @@ -7080,6 +7666,13 @@ es-shim-unscopables@^1.0.0, es-shim-unscopables@^1.0.2: dependencies: hasown "^2.0.0" +es-shim-unscopables@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz#438df35520dac5d105f3943d927549ea3b00f4b5" + integrity sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw== + dependencies: + hasown "^2.0.2" + es-to-primitive@^1.2.1: version "1.2.1" resolved "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz" @@ -7089,6 +7682,15 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" +es-to-primitive@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.3.0.tgz#96c89c82cc49fd8794a24835ba3e1ff87f214e18" + integrity sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g== + dependencies: + is-callable "^1.2.7" + is-date-object "^1.0.5" + is-symbol "^1.0.4" + esast-util-from-estree@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/esast-util-from-estree/-/esast-util-from-estree-2.0.0.tgz" @@ -7176,21 +7778,20 @@ escodegen@^2.0.0: optionalDependencies: source-map "~0.6.1" -eslint-config-next@15.0.3: - version "15.0.3" - resolved "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-15.0.3.tgz" - integrity sha512-IGP2DdQQrgjcr4mwFPve4DrCqo7CVVez1WoYY47XwKSrYO4hC0Dlb+iJA60i0YfICOzgNADIb8r28BpQ5Zs0wg== +eslint-config-next@^16.0.0: + version "16.1.6" + resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-16.1.6.tgz#75dd33bf32eb34b1e5be59f546e3c808429bab41" + integrity sha512-vKq40io2B0XtkkNDYyleATwblNt8xuh3FWp8SpSz3pt7P01OkBFlKsJZ2mWt5WsCySlDQLckb1zMY9yE9Qy0LA== dependencies: - "@next/eslint-plugin-next" "15.0.3" - "@rushstack/eslint-patch" "^1.10.3" - "@typescript-eslint/eslint-plugin" "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0" - "@typescript-eslint/parser" "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0" + "@next/eslint-plugin-next" "16.1.6" eslint-import-resolver-node "^0.3.6" eslint-import-resolver-typescript "^3.5.2" - eslint-plugin-import "^2.31.0" + eslint-plugin-import "^2.32.0" eslint-plugin-jsx-a11y "^6.10.0" - eslint-plugin-react "^7.35.0" - eslint-plugin-react-hooks "^5.0.0" + eslint-plugin-react "^7.37.0" + eslint-plugin-react-hooks "^7.0.0" + globals "16.4.0" + typescript-eslint "^8.46.0" eslint-config-sentry-docs@^2.10.0: version "2.10.0" @@ -7255,7 +7856,14 @@ eslint-module-utils@^2.12.0, eslint-module-utils@^2.8.1: dependencies: debug "^3.2.7" -eslint-plugin-import@^2.29.1, eslint-plugin-import@^2.31.0: +eslint-module-utils@^2.12.1: + version "2.12.1" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz#f76d3220bfb83c057651359295ab5854eaad75ff" + integrity sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw== + dependencies: + debug "^3.2.7" + +eslint-plugin-import@^2.29.1: version "2.31.0" resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz" integrity sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A== @@ -7280,6 +7888,31 @@ eslint-plugin-import@^2.29.1, eslint-plugin-import@^2.31.0: string.prototype.trimend "^1.0.8" tsconfig-paths "^3.15.0" +eslint-plugin-import@^2.32.0: + version "2.32.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz#602b55faa6e4caeaa5e970c198b5c00a37708980" + integrity sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA== + dependencies: + "@rtsao/scc" "^1.1.0" + array-includes "^3.1.9" + array.prototype.findlastindex "^1.2.6" + array.prototype.flat "^1.3.3" + array.prototype.flatmap "^1.3.3" + debug "^3.2.7" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.9" + eslint-module-utils "^2.12.1" + hasown "^2.0.2" + is-core-module "^2.16.1" + is-glob "^4.0.3" + minimatch "^3.1.2" + object.fromentries "^2.0.8" + object.groupby "^1.0.3" + object.values "^1.2.1" + semver "^6.3.1" + string.prototype.trimend "^1.0.9" + tsconfig-paths "^3.15.0" + eslint-plugin-jest-dom@^5.4.0: version "5.5.0" resolved "https://registry.npmjs.org/eslint-plugin-jest-dom/-/eslint-plugin-jest-dom-5.5.0.tgz" @@ -7329,12 +7962,18 @@ eslint-plugin-react-hooks@^4.6.2: resolved "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz" integrity sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ== -eslint-plugin-react-hooks@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.0.0.tgz" - integrity sha512-hIOwI+5hYGpJEc4uPRmz2ulCjAGD/N13Lukkh8cLV0i2IRk/bdZDYjgLVHj+U9Z704kLIdIO6iueGvxNur0sgw== +eslint-plugin-react-hooks@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.0.1.tgz#66e258db58ece50723ef20cc159f8aa908219169" + integrity sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA== + dependencies: + "@babel/core" "^7.24.4" + "@babel/parser" "^7.24.4" + hermes-parser "^0.25.1" + zod "^3.25.0 || ^4.0.0" + zod-validation-error "^3.5.0 || ^4.0.0" -eslint-plugin-react@^7.33.2, eslint-plugin-react@^7.35.0: +eslint-plugin-react@^7.33.2: version "7.37.2" resolved "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.2.tgz" integrity sha512-EsTAnj9fLVr/GZleBLFbj/sSuXeWmp1eXIN60ceYnZveqEaUCyW4X+Vh4WTdUhCkW4xutXYqTXCUSyqD4rB75w== @@ -7358,6 +7997,30 @@ eslint-plugin-react@^7.33.2, eslint-plugin-react@^7.35.0: string.prototype.matchall "^4.0.11" string.prototype.repeat "^1.0.0" +eslint-plugin-react@^7.37.0: + version "7.37.5" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz#2975511472bdda1b272b34d779335c9b0e877065" + integrity sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA== + dependencies: + array-includes "^3.1.8" + array.prototype.findlast "^1.2.5" + array.prototype.flatmap "^1.3.3" + array.prototype.tosorted "^1.1.4" + doctrine "^2.1.0" + es-iterator-helpers "^1.2.1" + estraverse "^5.3.0" + hasown "^2.0.2" + jsx-ast-utils "^2.4.1 || ^3.0.0" + minimatch "^3.1.2" + object.entries "^1.1.9" + object.fromentries "^2.0.8" + object.values "^1.2.1" + prop-types "^15.8.1" + resolve "^2.0.0-next.5" + semver "^6.3.1" + string.prototype.matchall "^4.0.12" + string.prototype.repeat "^1.0.0" + eslint-plugin-simple-import-sort@^10.0.0: version "10.0.0" resolved "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-10.0.0.tgz" @@ -7400,10 +8063,10 @@ eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4 resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== -eslint-visitor-keys@^4.2.0: - version "4.2.0" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz" - integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw== +eslint-visitor-keys@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz#4cfea60fe7dd0ad8e816e1ed026c1d5251b512c1" + integrity sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ== eslint@^8: version "8.57.1" @@ -7449,6 +8112,15 @@ eslint@^8: strip-ansi "^6.0.1" text-table "^0.2.0" +espree@^10.0.1: + version "10.4.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-10.4.0.tgz#d54f4949d4629005a1fa168d937c3ff1f7e2a837" + integrity sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ== + dependencies: + acorn "^8.15.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^4.2.1" + espree@^9.6.0, espree@^9.6.1: version "9.6.1" resolved "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz" @@ -7731,6 +8403,11 @@ fdir@^6.2.0: resolved "https://registry.npmjs.org/fdir/-/fdir-6.4.3.tgz" integrity sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw== +fdir@^6.5.0: + version "6.5.0" + resolved "https://registry.yarnpkg.com/fdir/-/fdir-6.5.0.tgz#ed2ab967a331ade62f18d077dae192684d50d350" + integrity sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg== + file-entry-cache@^6.0.1: version "6.0.1" resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" @@ -7787,6 +8464,13 @@ for-each@^0.3.3: dependencies: is-callable "^1.1.3" +for-each@^0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.5.tgz#d650688027826920feeb0af747ee7b9421a41d47" + integrity sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg== + dependencies: + is-callable "^1.2.7" + foreground-child@^3.1.0: version "3.3.0" resolved "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz" @@ -7872,6 +8556,18 @@ function.prototype.name@^1.1.6: es-abstract "^1.22.1" functions-have-names "^1.2.3" +function.prototype.name@^1.1.8: + version "1.1.8" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.8.tgz#e68e1df7b259a5c949eeef95cdbde53edffabb78" + integrity sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.3" + define-properties "^1.2.1" + functions-have-names "^1.2.3" + hasown "^2.0.2" + is-callable "^1.2.7" + functions-have-names@^1.2.3: version "1.2.3" resolved "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz" @@ -7917,6 +8613,22 @@ get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.3, get-intrinsic@ has-symbols "^1.0.3" hasown "^2.0.0" +get-intrinsic@^1.2.5, get-intrinsic@^1.2.6, get-intrinsic@^1.2.7, get-intrinsic@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01" + integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== + dependencies: + call-bind-apply-helpers "^1.0.2" + es-define-property "^1.0.1" + es-errors "^1.3.0" + es-object-atoms "^1.1.1" + function-bind "^1.1.2" + get-proto "^1.0.1" + gopd "^1.2.0" + has-symbols "^1.1.0" + hasown "^2.0.2" + math-intrinsics "^1.1.0" + get-nonce@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz" @@ -7927,6 +8639,14 @@ get-package-type@^0.1.0: resolved "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz" integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== +get-proto@^1.0.0, get-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1" + integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== + dependencies: + dunder-proto "^1.0.1" + es-object-atoms "^1.0.0" + get-stream@^6.0.0: version "6.0.1" resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" @@ -7941,6 +8661,15 @@ get-symbol-description@^1.0.2: es-errors "^1.3.0" get-intrinsic "^1.2.4" +get-symbol-description@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.1.0.tgz#7bdd54e0befe8ffc9f3b4e203220d9f1e881b6ee" + integrity sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg== + dependencies: + call-bound "^1.0.3" + es-errors "^1.3.0" + get-intrinsic "^1.2.6" + get-tsconfig@^4.7.5: version "4.8.1" resolved "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.8.1.tgz" @@ -8003,6 +8732,11 @@ glob@^7.1.3, glob@^7.1.4: once "^1.3.0" path-is-absolute "^1.0.0" +globals@16.4.0: + version "16.4.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-16.4.0.tgz#574bc7e72993d40cf27cf6c241f324ee77808e51" + integrity sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw== + globals@^11.1.0: version "11.12.0" resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" @@ -8015,6 +8749,11 @@ globals@^13.19.0: dependencies: type-fest "^0.20.2" +globals@^14.0.0: + version "14.0.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e" + integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ== + globals@^15.15.0: version "15.15.0" resolved "https://registry.yarnpkg.com/globals/-/globals-15.15.0.tgz#7c4761299d41c32b075715a4ce1ede7897ff72a8" @@ -8064,6 +8803,11 @@ gopd@^1.0.1: dependencies: get-intrinsic "^1.1.3" +gopd@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" + integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== + graceful-fs@^4.2.4, graceful-fs@^4.2.9: version "4.2.11" resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" @@ -8119,11 +8863,23 @@ has-proto@^1.0.1, has-proto@^1.0.3: resolved "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz" integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== +has-proto@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.2.0.tgz#5de5a6eabd95fdffd9818b43055e8065e39fe9d5" + integrity sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ== + dependencies: + dunder-proto "^1.0.0" + has-symbols@^1.0.2, has-symbols@^1.0.3: version "1.0.3" resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== +has-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" + integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== + has-tostringtag@^1.0.0, has-tostringtag@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz" @@ -8511,6 +9267,18 @@ hastscript@^9.0.0: property-information "^7.0.0" space-separated-tokens "^2.0.0" +hermes-estree@0.25.1: + version "0.25.1" + resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.25.1.tgz#6aeec17d1983b4eabf69721f3aa3eb705b17f480" + integrity sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw== + +hermes-parser@^0.25.1: + version "0.25.1" + resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.25.1.tgz#5be0e487b2090886c62bd8a11724cd766d5f54d1" + integrity sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA== + dependencies: + hermes-estree "0.25.1" + hoist-non-react-statics@^3.3.1, hoist-non-react-statics@^3.3.2: version "3.3.2" resolved "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz" @@ -8620,11 +9388,16 @@ iconv-lite@0.6, iconv-lite@0.6.3: dependencies: safer-buffer ">= 2.1.2 < 3.0.0" -ignore@^5.2.0, ignore@^5.2.4, ignore@^5.3.1: +ignore@^5.2.0, ignore@^5.2.4: version "5.3.2" resolved "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz" integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== +ignore@^7.0.5: + version "7.0.5" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-7.0.5.tgz#4cb5f6cd7d4c7ab0365738c7aea888baa6d7efd9" + integrity sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg== + image-size@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/image-size/-/image-size-1.2.1.tgz#ee118aedfe666db1a6ee12bed5821cde3740276d" @@ -8705,6 +9478,15 @@ internal-slot@^1.0.7: hasown "^2.0.0" side-channel "^1.0.4" +internal-slot@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.1.0.tgz#1eac91762947d2f7056bc838d93e13b2e9604961" + integrity sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw== + dependencies: + es-errors "^1.3.0" + hasown "^2.0.2" + side-channel "^1.1.0" + "internmap@1 - 2": version "2.0.3" resolved "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz" @@ -8743,6 +9525,15 @@ is-array-buffer@^3.0.4: call-bind "^1.0.2" get-intrinsic "^1.2.1" +is-array-buffer@^3.0.5: + version "3.0.5" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.5.tgz#65742e1e687bd2cc666253068fd8707fe4d44280" + integrity sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.3" + get-intrinsic "^1.2.6" + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" @@ -8767,6 +9558,13 @@ is-bigint@^1.0.1: dependencies: has-bigints "^1.0.1" +is-bigint@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.1.0.tgz#dda7a3445df57a42583db4228682eba7c4170672" + integrity sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ== + dependencies: + has-bigints "^1.0.2" + is-binary-path@~2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" @@ -8782,6 +9580,14 @@ is-boolean-object@^1.1.0: call-bind "^1.0.2" has-tostringtag "^1.0.0" +is-boolean-object@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.2.2.tgz#7067f47709809a393c71ff5bb3e135d8a9215d9e" + integrity sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A== + dependencies: + call-bound "^1.0.3" + has-tostringtag "^1.0.2" + is-buffer@^2.0.0: version "2.0.5" resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz" @@ -8806,6 +9612,13 @@ is-core-module@^2.13.0, is-core-module@^2.15.1: dependencies: hasown "^2.0.2" +is-core-module@^2.16.1: + version "2.16.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" + integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== + dependencies: + hasown "^2.0.2" + is-data-view@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz" @@ -8813,6 +9626,15 @@ is-data-view@^1.0.1: dependencies: is-typed-array "^1.1.13" +is-data-view@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-data-view/-/is-data-view-1.0.2.tgz#bae0a41b9688986c2188dda6657e56b8f9e63b8e" + integrity sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw== + dependencies: + call-bound "^1.0.2" + get-intrinsic "^1.2.6" + is-typed-array "^1.1.13" + is-date-object@^1.0.1, is-date-object@^1.0.5: version "1.0.5" resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz" @@ -8820,6 +9642,14 @@ is-date-object@^1.0.1, is-date-object@^1.0.5: dependencies: has-tostringtag "^1.0.0" +is-date-object@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.1.0.tgz#ad85541996fc7aa8b2729701d27b7319f95d82f7" + integrity sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg== + dependencies: + call-bound "^1.0.2" + has-tostringtag "^1.0.2" + is-decimal@^2.0.0: version "2.0.1" resolved "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz" @@ -8842,6 +9672,13 @@ is-finalizationregistry@^1.0.2: dependencies: call-bind "^1.0.2" +is-finalizationregistry@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz#eefdcdc6c94ddd0674d9c85887bf93f944a97c90" + integrity sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg== + dependencies: + call-bound "^1.0.3" + is-fullwidth-code-point@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" @@ -8888,6 +9725,14 @@ is-number-object@^1.0.4: dependencies: has-tostringtag "^1.0.0" +is-number-object@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.1.1.tgz#144b21e95a1bc148205dcc2814a9134ec41b2541" + integrity sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw== + dependencies: + call-bound "^1.0.3" + has-tostringtag "^1.0.2" + is-number@^7.0.0: version "7.0.0" resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" @@ -8930,6 +9775,16 @@ is-regex@^1.1.4: call-bind "^1.0.2" has-tostringtag "^1.0.0" +is-regex@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.2.1.tgz#76d70a3ed10ef9be48eb577887d74205bf0cad22" + integrity sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g== + dependencies: + call-bound "^1.0.2" + gopd "^1.2.0" + has-tostringtag "^1.0.2" + hasown "^2.0.2" + is-set@^2.0.3: version "2.0.3" resolved "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz" @@ -8942,6 +9797,13 @@ is-shared-array-buffer@^1.0.2, is-shared-array-buffer@^1.0.3: dependencies: call-bind "^1.0.7" +is-shared-array-buffer@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz#9b67844bd9b7f246ba0708c3a93e34269c774f6f" + integrity sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A== + dependencies: + call-bound "^1.0.3" + is-stream@^2.0.0: version "2.0.1" resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" @@ -8954,6 +9816,14 @@ is-string@^1.0.5, is-string@^1.0.7: dependencies: has-tostringtag "^1.0.0" +is-string@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.1.1.tgz#92ea3f3d5c5b6e039ca8677e5ac8d07ea773cbb9" + integrity sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA== + dependencies: + call-bound "^1.0.3" + has-tostringtag "^1.0.2" + is-symbol@^1.0.2, is-symbol@^1.0.3: version "1.0.4" resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz" @@ -8961,6 +9831,15 @@ is-symbol@^1.0.2, is-symbol@^1.0.3: dependencies: has-symbols "^1.0.2" +is-symbol@^1.0.4, is-symbol@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.1.1.tgz#f47761279f532e2b05a7024a7506dbbedacd0634" + integrity sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w== + dependencies: + call-bound "^1.0.2" + has-symbols "^1.1.0" + safe-regex-test "^1.1.0" + is-typed-array@^1.1.13: version "1.1.13" resolved "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz" @@ -8968,6 +9847,13 @@ is-typed-array@^1.1.13: dependencies: which-typed-array "^1.1.14" +is-typed-array@^1.1.14, is-typed-array@^1.1.15: + version "1.1.15" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.15.tgz#4bfb4a45b61cee83a5a46fba778e4e8d59c0ce0b" + integrity sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ== + dependencies: + which-typed-array "^1.1.16" + is-weakmap@^2.0.2: version "2.0.2" resolved "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz" @@ -8980,6 +9866,13 @@ is-weakref@^1.0.2: dependencies: call-bind "^1.0.2" +is-weakref@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.1.1.tgz#eea430182be8d64174bd96bffbc46f21bf3f9293" + integrity sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew== + dependencies: + call-bound "^1.0.3" + is-weakset@^2.0.3: version "2.0.3" resolved "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz" @@ -9062,6 +9955,18 @@ iterator.prototype@^1.1.3: reflect.getprototypeof "^1.0.4" set-function-name "^2.0.1" +iterator.prototype@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.5.tgz#12c959a29de32de0aa3bbbb801f4d777066dae39" + integrity sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g== + dependencies: + define-data-property "^1.1.4" + es-object-atoms "^1.0.0" + get-intrinsic "^1.2.6" + get-proto "^1.0.0" + has-symbols "^1.1.0" + set-function-name "^2.0.2" + jackspeak@^3.1.2: version "3.4.3" resolved "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz" @@ -9478,6 +10383,13 @@ js-yaml@^4.0.0, js-yaml@^4.1.0: dependencies: argparse "^2.0.1" +js-yaml@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.1.tgz#854c292467705b699476e1a2decc0c8a3458806b" + integrity sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA== + dependencies: + argparse "^2.0.1" + jsdom@^16.5.3: version "16.7.0" resolved "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz" @@ -9877,6 +10789,11 @@ match-sorter@^6.3.4: "@babel/runtime" "^7.23.8" remove-accents "0.5.0" +math-intrinsics@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" + integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== + mdast-util-definitions@^5.0.0: version "5.1.2" resolved "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-5.1.2.tgz" @@ -10985,7 +11902,7 @@ minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: dependencies: brace-expansion "^1.1.7" -minimatch@^9.0.0, minimatch@^9.0.4: +minimatch@^9.0.0, minimatch@^9.0.4, minimatch@^9.0.5: version "9.0.5" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== @@ -11081,28 +11998,27 @@ next-themes@^0.3.0: resolved "https://registry.npmjs.org/next-themes/-/next-themes-0.3.0.tgz" integrity sha512-/QHIrsYpd6Kfk7xakK4svpDI5mmXP0gfvCoJdGpZQ2TOrQZmsW0QxjaiLn8wbIKjtm4BTSqLoix4lxYYOnLJ/w== -next@15.1.12: - version "15.1.12" - resolved "https://registry.yarnpkg.com/next/-/next-15.1.12.tgz#6d308fe6cb295faed724481b57f77b8abf4f5468" - integrity sha512-fClyhVCGTATGYBnETgKAi7YU5+bSwzM5rqNsY3Dg5wBoBMwE0NSvWA3fzwYj0ijl+LMeiV8P2QAnUFpeqDfTgw== +next@^16.0.0: + version "16.1.6" + resolved "https://registry.yarnpkg.com/next/-/next-16.1.6.tgz#24a861371cbe211be7760d9a89ddf2415e3824de" + integrity sha512-hkyRkcu5x/41KoqnROkfTm2pZVbKxvbZRuNvKXLRXxs3VfyO0WhY50TQS40EuKO9SW3rBj/sF3WbVwDACeMZyw== dependencies: - "@next/env" "15.1.12" - "@swc/counter" "0.1.3" + "@next/env" "16.1.6" "@swc/helpers" "0.5.15" - busboy "1.6.0" + baseline-browser-mapping "^2.8.3" caniuse-lite "^1.0.30001579" postcss "8.4.31" styled-jsx "5.1.6" optionalDependencies: - "@next/swc-darwin-arm64" "15.1.9" - "@next/swc-darwin-x64" "15.1.9" - "@next/swc-linux-arm64-gnu" "15.1.9" - "@next/swc-linux-arm64-musl" "15.1.9" - "@next/swc-linux-x64-gnu" "15.1.9" - "@next/swc-linux-x64-musl" "15.1.9" - "@next/swc-win32-arm64-msvc" "15.1.9" - "@next/swc-win32-x64-msvc" "15.1.9" - sharp "^0.33.5" + "@next/swc-darwin-arm64" "16.1.6" + "@next/swc-darwin-x64" "16.1.6" + "@next/swc-linux-arm64-gnu" "16.1.6" + "@next/swc-linux-arm64-musl" "16.1.6" + "@next/swc-linux-x64-gnu" "16.1.6" + "@next/swc-linux-x64-musl" "16.1.6" + "@next/swc-win32-arm64-msvc" "16.1.6" + "@next/swc-win32-x64-msvc" "16.1.6" + sharp "^0.34.4" nextjs-toploader@^1.6.6: version "1.6.12" @@ -11183,6 +12099,11 @@ object-inspect@^1.13.1, object-inspect@^1.13.3: resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz" integrity sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA== +object-inspect@^1.13.4: + version "1.13.4" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.4.tgz#8375265e21bc20d0fa582c22e1b13485d6e00213" + integrity sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew== + object-keys@^1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" @@ -11198,6 +12119,18 @@ object.assign@^4.1.4, object.assign@^4.1.5: has-symbols "^1.0.3" object-keys "^1.1.1" +object.assign@^4.1.7: + version "4.1.7" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.7.tgz#8c14ca1a424c6a561b0bb2a22f66f5049a945d3d" + integrity sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.3" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + has-symbols "^1.1.0" + object-keys "^1.1.1" + object.entries@^1.1.8: version "1.1.8" resolved "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz" @@ -11207,6 +12140,16 @@ object.entries@^1.1.8: define-properties "^1.2.1" es-object-atoms "^1.0.0" +object.entries@^1.1.9: + version "1.1.9" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.9.tgz#e4770a6a1444afb61bd39f984018b5bede25f8b3" + integrity sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.4" + define-properties "^1.2.1" + es-object-atoms "^1.1.1" + object.fromentries@^2.0.8: version "2.0.8" resolved "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz" @@ -11235,6 +12178,16 @@ object.values@^1.1.6, object.values@^1.2.0: define-properties "^1.2.1" es-object-atoms "^1.0.0" +object.values@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.2.1.tgz#deed520a50809ff7f75a7cfd4bc64c7a038c6216" + integrity sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.3" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + obuf@~1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz" @@ -11266,6 +12219,15 @@ optionator@^0.9.3: type-check "^0.4.0" word-wrap "^1.2.5" +own-keys@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/own-keys/-/own-keys-1.0.1.tgz#e4006910a2bf913585289676eebd6f390cf51358" + integrity sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg== + dependencies: + get-intrinsic "^1.2.6" + object-keys "^1.1.1" + safe-push-apply "^1.0.0" + p-limit@^2.2.0: version "2.3.0" resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" @@ -11482,6 +12444,11 @@ picomatch@^4.0.2: resolved "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz" integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg== +picomatch@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.3.tgz#796c76136d1eead715db1e7bad785dedd695a042" + integrity sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q== + pify@^2.3.0: version "2.3.0" resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" @@ -11979,6 +12946,20 @@ reflect.getprototypeof@^1.0.4, reflect.getprototypeof@^1.0.6: globalthis "^1.0.3" which-builtin-type "^1.1.3" +reflect.getprototypeof@^1.0.9: + version "1.0.10" + resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz#c629219e78a3316d8b604c765ef68996964e7bf9" + integrity sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw== + dependencies: + call-bind "^1.0.8" + define-properties "^1.2.1" + es-abstract "^1.23.9" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + get-intrinsic "^1.2.7" + get-proto "^1.0.1" + which-builtin-type "^1.2.1" + refractor@^4.8.0: version "4.8.1" resolved "https://registry.npmjs.org/refractor/-/refractor-4.8.1.tgz" @@ -12009,6 +12990,18 @@ regexp.prototype.flags@^1.5.2, regexp.prototype.flags@^1.5.3: es-errors "^1.3.0" set-function-name "^2.0.2" +regexp.prototype.flags@^1.5.4: + version "1.5.4" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz#1ad6c62d44a259007e55b3970e00f746efbcaa19" + integrity sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA== + dependencies: + call-bind "^1.0.8" + define-properties "^1.2.1" + es-errors "^1.3.0" + get-proto "^1.0.1" + gopd "^1.2.0" + set-function-name "^2.0.2" + rehype-autolink-headings@^7.1.0: version "7.1.0" resolved "https://registry.npmjs.org/rehype-autolink-headings/-/rehype-autolink-headings-7.1.0.tgz" @@ -12687,11 +13680,30 @@ safe-array-concat@^1.1.2: has-symbols "^1.0.3" isarray "^2.0.5" +safe-array-concat@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.3.tgz#c9e54ec4f603b0bbb8e7e5007a5ee7aecd1538c3" + integrity sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.2" + get-intrinsic "^1.2.6" + has-symbols "^1.1.0" + isarray "^2.0.5" + safe-buffer@^5.0.1, safe-buffer@^5.2.1, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== +safe-push-apply@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/safe-push-apply/-/safe-push-apply-1.0.0.tgz#01850e981c1602d398c85081f360e4e6d03d27f5" + integrity sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA== + dependencies: + es-errors "^1.3.0" + isarray "^2.0.5" + safe-regex-test@^1.0.3: version "1.0.3" resolved "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz" @@ -12701,6 +13713,15 @@ safe-regex-test@^1.0.3: es-errors "^1.3.0" is-regex "^1.1.4" +safe-regex-test@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.1.0.tgz#7f87dfb67a3150782eaaf18583ff5d1711ac10c1" + integrity sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + is-regex "^1.2.1" + "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": version "2.1.2" resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" @@ -12754,17 +13775,22 @@ semver@^6.3.0, semver@^6.3.1: resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.3.7, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.6.3: +semver@^7.3.7, semver@^7.5.3, semver@^7.5.4, semver@^7.6.3: version "7.6.3" resolved "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz" integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== +semver@^7.7.3: + version "7.7.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.3.tgz#4b5f4143d007633a8dc671cd0a6ef9147b8bb946" + integrity sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q== + server-only@^0.0.1: version "0.0.1" resolved "https://registry.npmjs.org/server-only/-/server-only-0.0.1.tgz" integrity sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA== -set-function-length@^1.2.1: +set-function-length@^1.2.1, set-function-length@^1.2.2: version "1.2.2" resolved "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz" integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== @@ -12786,7 +13812,16 @@ set-function-name@^2.0.1, set-function-name@^2.0.2: functions-have-names "^1.2.3" has-property-descriptors "^1.0.2" -sharp@^0.33.4, sharp@^0.33.5: +set-proto@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/set-proto/-/set-proto-1.0.0.tgz#0760dbcff30b2d7e801fd6e19983e56da337565e" + integrity sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw== + dependencies: + dunder-proto "^1.0.1" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + +sharp@^0.33.4: version "0.33.5" resolved "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz" integrity sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw== @@ -12815,6 +13850,40 @@ sharp@^0.33.4, sharp@^0.33.5: "@img/sharp-win32-ia32" "0.33.5" "@img/sharp-win32-x64" "0.33.5" +sharp@^0.34.4: + version "0.34.5" + resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.34.5.tgz#b6f148e4b8c61f1797bde11a9d1cfebbae2c57b0" + integrity sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg== + dependencies: + "@img/colour" "^1.0.0" + detect-libc "^2.1.2" + semver "^7.7.3" + optionalDependencies: + "@img/sharp-darwin-arm64" "0.34.5" + "@img/sharp-darwin-x64" "0.34.5" + "@img/sharp-libvips-darwin-arm64" "1.2.4" + "@img/sharp-libvips-darwin-x64" "1.2.4" + "@img/sharp-libvips-linux-arm" "1.2.4" + "@img/sharp-libvips-linux-arm64" "1.2.4" + "@img/sharp-libvips-linux-ppc64" "1.2.4" + "@img/sharp-libvips-linux-riscv64" "1.2.4" + "@img/sharp-libvips-linux-s390x" "1.2.4" + "@img/sharp-libvips-linux-x64" "1.2.4" + "@img/sharp-libvips-linuxmusl-arm64" "1.2.4" + "@img/sharp-libvips-linuxmusl-x64" "1.2.4" + "@img/sharp-linux-arm" "0.34.5" + "@img/sharp-linux-arm64" "0.34.5" + "@img/sharp-linux-ppc64" "0.34.5" + "@img/sharp-linux-riscv64" "0.34.5" + "@img/sharp-linux-s390x" "0.34.5" + "@img/sharp-linux-x64" "0.34.5" + "@img/sharp-linuxmusl-arm64" "0.34.5" + "@img/sharp-linuxmusl-x64" "0.34.5" + "@img/sharp-wasm32" "0.34.5" + "@img/sharp-win32-arm64" "0.34.5" + "@img/sharp-win32-ia32" "0.34.5" + "@img/sharp-win32-x64" "0.34.5" + shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" @@ -12837,6 +13906,35 @@ shimmer@^1.2.1: resolved "https://registry.yarnpkg.com/shimmer/-/shimmer-1.2.1.tgz#610859f7de327b587efebf501fb43117f9aff337" integrity sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw== +side-channel-list@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/side-channel-list/-/side-channel-list-1.0.0.tgz#10cb5984263115d3b7a0e336591e290a830af8ad" + integrity sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA== + dependencies: + es-errors "^1.3.0" + object-inspect "^1.13.3" + +side-channel-map@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/side-channel-map/-/side-channel-map-1.0.1.tgz#d6bb6b37902c6fef5174e5f533fab4c732a26f42" + integrity sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + get-intrinsic "^1.2.5" + object-inspect "^1.13.3" + +side-channel-weakmap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz#11dda19d5368e40ce9ec2bdc1fb0ecbc0790ecea" + integrity sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + get-intrinsic "^1.2.5" + object-inspect "^1.13.3" + side-channel-map "^1.0.1" + side-channel@^1.0.4, side-channel@^1.0.6: version "1.0.6" resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz" @@ -12847,6 +13945,17 @@ side-channel@^1.0.4, side-channel@^1.0.6: get-intrinsic "^1.2.4" object-inspect "^1.13.1" +side-channel@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.1.0.tgz#c3fcff9c4da932784873335ec9765fa94ff66bc9" + integrity sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw== + dependencies: + es-errors "^1.3.0" + object-inspect "^1.13.3" + side-channel-list "^1.0.0" + side-channel-map "^1.0.1" + side-channel-weakmap "^1.0.2" + siginfo@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz" @@ -12941,6 +14050,14 @@ std-env@^3.8.0: resolved "https://registry.npmjs.org/std-env/-/std-env-3.8.0.tgz" integrity sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w== +stop-iteration-iterator@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz#f481ff70a548f6124d0312c3aa14cbfa7aa542ad" + integrity sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ== + dependencies: + es-errors "^1.3.0" + internal-slot "^1.1.0" + stream-events@^1.0.5: version "1.0.5" resolved "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz" @@ -12953,11 +14070,6 @@ stream-shift@^1.0.2: resolved "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz" integrity sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ== -streamsearch@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz" - integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== - string-length@^4.0.1: version "4.0.2" resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz" @@ -13020,6 +14132,25 @@ string.prototype.matchall@^4.0.11: set-function-name "^2.0.2" side-channel "^1.0.6" +string.prototype.matchall@^4.0.12: + version "4.0.12" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz#6c88740e49ad4956b1332a911e949583a275d4c0" + integrity sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.3" + define-properties "^1.2.1" + es-abstract "^1.23.6" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + get-intrinsic "^1.2.6" + gopd "^1.2.0" + has-symbols "^1.1.0" + internal-slot "^1.1.0" + regexp.prototype.flags "^1.5.3" + set-function-name "^2.0.2" + side-channel "^1.1.0" + string.prototype.repeat@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz" @@ -13028,6 +14159,19 @@ string.prototype.repeat@^1.0.0: define-properties "^1.1.3" es-abstract "^1.17.5" +string.prototype.trim@^1.2.10: + version "1.2.10" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz#40b2dd5ee94c959b4dcfb1d65ce72e90da480c81" + integrity sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.2" + define-data-property "^1.1.4" + define-properties "^1.2.1" + es-abstract "^1.23.5" + es-object-atoms "^1.0.0" + has-property-descriptors "^1.0.2" + string.prototype.trim@^1.2.9: version "1.2.9" resolved "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz" @@ -13047,6 +14191,16 @@ string.prototype.trimend@^1.0.8: define-properties "^1.2.1" es-object-atoms "^1.0.0" +string.prototype.trimend@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz#62e2731272cd285041b36596054e9f66569b6942" + integrity sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.2" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + string.prototype.trimstart@^1.0.8: version "1.0.8" resolved "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz" @@ -13299,6 +14453,14 @@ tinyexec@^1.0.1: resolved "https://registry.yarnpkg.com/tinyexec/-/tinyexec-1.0.1.tgz#70c31ab7abbb4aea0a24f55d120e5990bfa1e0b1" integrity sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw== +tinyglobby@^0.2.15: + version "0.2.15" + resolved "https://registry.yarnpkg.com/tinyglobby/-/tinyglobby-0.2.15.tgz#e228dd1e638cea993d2fdb4fcd2d4602a79951c2" + integrity sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ== + dependencies: + fdir "^6.5.0" + picomatch "^4.0.3" + tinypool@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/tinypool/-/tinypool-1.0.2.tgz#706193cc532f4c100f66aa00b01c42173d9051b2" @@ -13387,11 +14549,16 @@ trough@^2.0.0: resolved "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz" integrity sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw== -ts-api-utils@^1.0.1, ts-api-utils@^1.3.0: +ts-api-utils@^1.0.1: version "1.4.0" resolved "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.0.tgz" integrity sha512-032cPxaEKwM+GT3vA5JXNzIaizx388rhsSW79vGRNGXfRRAdEAn2mvk36PvK5HnOchyWZ7afLEXqYCvPCrzuzQ== +ts-api-utils@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-2.4.0.tgz#2690579f96d2790253bdcf1ca35d569ad78f9ad8" + integrity sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA== + ts-dedent@^2.2.0: version "2.2.0" resolved "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz" @@ -13494,6 +14661,15 @@ typed-array-buffer@^1.0.2: es-errors "^1.3.0" is-typed-array "^1.1.13" +typed-array-buffer@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz#a72395450a4869ec033fd549371b47af3a2ee536" + integrity sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw== + dependencies: + call-bound "^1.0.3" + es-errors "^1.3.0" + is-typed-array "^1.1.14" + typed-array-byte-length@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz" @@ -13505,6 +14681,17 @@ typed-array-byte-length@^1.0.1: has-proto "^1.0.3" is-typed-array "^1.1.13" +typed-array-byte-length@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz#8407a04f7d78684f3d252aa1a143d2b77b4160ce" + integrity sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg== + dependencies: + call-bind "^1.0.8" + for-each "^0.3.3" + gopd "^1.2.0" + has-proto "^1.2.0" + is-typed-array "^1.1.14" + typed-array-byte-offset@^1.0.2: version "1.0.3" resolved "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.3.tgz" @@ -13518,6 +14705,19 @@ typed-array-byte-offset@^1.0.2: is-typed-array "^1.1.13" reflect.getprototypeof "^1.0.6" +typed-array-byte-offset@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz#ae3698b8ec91a8ab945016108aef00d5bff12355" + integrity sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ== + dependencies: + available-typed-arrays "^1.0.7" + call-bind "^1.0.8" + for-each "^0.3.3" + gopd "^1.2.0" + has-proto "^1.2.0" + is-typed-array "^1.1.15" + reflect.getprototypeof "^1.0.9" + typed-array-length@^1.0.6: version "1.0.6" resolved "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz" @@ -13530,6 +14730,28 @@ typed-array-length@^1.0.6: is-typed-array "^1.1.13" possible-typed-array-names "^1.0.0" +typed-array-length@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.7.tgz#ee4deff984b64be1e118b0de8c9c877d5ce73d3d" + integrity sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg== + dependencies: + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + is-typed-array "^1.1.13" + possible-typed-array-names "^1.0.0" + reflect.getprototypeof "^1.0.6" + +typescript-eslint@^8.46.0: + version "8.54.0" + resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.54.0.tgz#f4ef3b8882a5ddc2a41968e014194c178ab23f6a" + integrity sha512-CKsJ+g53QpsNPqbzUsfKVgd3Lny4yKZ1pP4qN3jdMOg/sisIDLGyDMezycquXLE5JsEU0wp3dGNdzig0/fmSVQ== + dependencies: + "@typescript-eslint/eslint-plugin" "8.54.0" + "@typescript-eslint/parser" "8.54.0" + "@typescript-eslint/typescript-estree" "8.54.0" + "@typescript-eslint/utils" "8.54.0" + typescript@^5: version "5.6.3" resolved "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz" @@ -13555,6 +14777,16 @@ unbox-primitive@^1.0.2: has-symbols "^1.0.3" which-boxed-primitive "^1.0.2" +unbox-primitive@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.1.0.tgz#8d9d2c9edeea8460c7f35033a88867944934d1e2" + integrity sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw== + dependencies: + call-bound "^1.0.3" + has-bigints "^1.0.2" + has-symbols "^1.1.0" + which-boxed-primitive "^1.1.1" + undici-types@~6.21.0: version "6.21.0" resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.21.0.tgz#691d00af3909be93a7faa13be61b3a5b50ef12cb" @@ -14182,6 +15414,17 @@ which-boxed-primitive@^1.0.2: is-string "^1.0.5" is-symbol "^1.0.3" +which-boxed-primitive@^1.1.0, which-boxed-primitive@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz#d76ec27df7fa165f18d5808374a5fe23c29b176e" + integrity sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA== + dependencies: + is-bigint "^1.1.0" + is-boolean-object "^1.2.1" + is-number-object "^1.1.1" + is-string "^1.1.1" + is-symbol "^1.1.1" + which-builtin-type@^1.1.3: version "1.1.4" resolved "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.4.tgz" @@ -14200,6 +15443,25 @@ which-builtin-type@^1.1.3: which-collection "^1.0.2" which-typed-array "^1.1.15" +which-builtin-type@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/which-builtin-type/-/which-builtin-type-1.2.1.tgz#89183da1b4907ab089a6b02029cc5d8d6574270e" + integrity sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q== + dependencies: + call-bound "^1.0.2" + function.prototype.name "^1.1.6" + has-tostringtag "^1.0.2" + is-async-function "^2.0.0" + is-date-object "^1.1.0" + is-finalizationregistry "^1.1.0" + is-generator-function "^1.0.10" + is-regex "^1.2.1" + is-weakref "^1.0.2" + isarray "^2.0.5" + which-boxed-primitive "^1.1.0" + which-collection "^1.0.2" + which-typed-array "^1.1.16" + which-collection@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz" @@ -14221,6 +15483,19 @@ which-typed-array@^1.1.14, which-typed-array@^1.1.15: gopd "^1.0.1" has-tostringtag "^1.0.2" +which-typed-array@^1.1.16, which-typed-array@^1.1.19: + version "1.1.20" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.20.tgz#3fdb7adfafe0ea69157b1509f3a1cd892bd1d122" + integrity sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg== + dependencies: + available-typed-arrays "^1.0.7" + call-bind "^1.0.8" + call-bound "^1.0.4" + for-each "^0.3.5" + get-proto "^1.0.1" + gopd "^1.2.0" + has-tostringtag "^1.0.2" + which@^2.0.1, which@^2.0.2: version "2.0.2" resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" @@ -14369,11 +15644,21 @@ yocto-queue@^1.1.1: resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.2.1.tgz#36d7c4739f775b3cbc28e6136e21aa057adec418" integrity sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg== +"zod-validation-error@^3.5.0 || ^4.0.0": + version "4.0.2" + resolved "https://registry.yarnpkg.com/zod-validation-error/-/zod-validation-error-4.0.2.tgz#bc605eba49ce0fcd598c127fee1c236be3f22918" + integrity sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ== + zod@^3.22.4: version "3.23.8" resolved "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz" integrity sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g== +"zod@^3.25.0 || ^4.0.0": + version "4.3.6" + resolved "https://registry.yarnpkg.com/zod/-/zod-4.3.6.tgz#89c56e0aa7d2b05107d894412227087885ab112a" + integrity sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg== + zwitch@^2.0.0, zwitch@^2.0.4: version "2.0.4" resolved "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz" From 37c86b70e21d413d58fbdfcb8271f674ba8a60bd Mon Sep 17 00:00:00 2001 From: Charly Gomez Date: Wed, 4 Feb 2026 15:44:46 +0100 Subject: [PATCH 3/7] lockfile --- yarn.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/yarn.lock b/yarn.lock index 7f0f037aaf8f8..7ff78d5d0f8a6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7778,7 +7778,7 @@ escodegen@^2.0.0: optionalDependencies: source-map "~0.6.1" -eslint-config-next@^16.0.0: +eslint-config-next@^16.1.6: version "16.1.6" resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-16.1.6.tgz#75dd33bf32eb34b1e5be59f546e3c808429bab41" integrity sha512-vKq40io2B0XtkkNDYyleATwblNt8xuh3FWp8SpSz3pt7P01OkBFlKsJZ2mWt5WsCySlDQLckb1zMY9yE9Qy0LA== @@ -11998,7 +11998,7 @@ next-themes@^0.3.0: resolved "https://registry.npmjs.org/next-themes/-/next-themes-0.3.0.tgz" integrity sha512-/QHIrsYpd6Kfk7xakK4svpDI5mmXP0gfvCoJdGpZQ2TOrQZmsW0QxjaiLn8wbIKjtm4BTSqLoix4lxYYOnLJ/w== -next@^16.0.0: +next@^16.1.6: version "16.1.6" resolved "https://registry.yarnpkg.com/next/-/next-16.1.6.tgz#24a861371cbe211be7760d9a89ddf2415e3824de" integrity sha512-hkyRkcu5x/41KoqnROkfTm2pZVbKxvbZRuNvKXLRXxs3VfyO0WhY50TQS40EuKO9SW3rBj/sF3WbVwDACeMZyw== From 3dfb30c6d4ae5b9e439e8f552a8a6b9a7a705f32 Mon Sep 17 00:00:00 2001 From: Charly Gomez Date: Wed, 4 Feb 2026 15:46:44 +0100 Subject: [PATCH 4/7] . --- src/middleware.ts | 4207 --------------------------------------------- 1 file changed, 4207 deletions(-) delete mode 100644 src/middleware.ts diff --git a/src/middleware.ts b/src/middleware.ts deleted file mode 100644 index a6706cee7126e..0000000000000 --- a/src/middleware.ts +++ /dev/null @@ -1,4207 +0,0 @@ -import * as Sentry from '@sentry/nextjs'; -import type {NextRequest} from 'next/server'; -import {NextResponse} from 'next/server'; - -// This env var is set in next.config.js based on the `NEXT_PUBLIC_DEVELOPER_DOCS` env var at build time -// a workaround edge middleware not having access to env vars -const isDeveloperDocs = process.env.DEVELOPER_DOCS_; - -export const config = { - // learn more: https://nextjs.org/docs/pages/building-your-application/routing/middleware#matcher - matcher: [ - // Match all request paths except for the ones starting with: - // - api (API routes) - // - _next/static (static files) - // - _next/image (image optimization files) - // - favicon.ico (favicon file) - '/((?!api|_next/static|_next/image|favicon.ico).*)', - ], -}; - -// This function can be marked `async` if using `await` inside -export function proxy(request: NextRequest) { - // First, handle canonical URL redirects for deprecated paths - const canonicalRedirect = handleRedirects(request); - if (canonicalRedirect) { - return canonicalRedirect; - } - - // Then, check for AI/LLM clients and redirect to markdown if appropriate - return handleAIClientRedirect(request); -} - -// don't send Permanent Redirects (301) in dev mode - it gets cached for "localhost" by the browser -const redirectStatusCode = process.env.NODE_ENV === 'development' ? 302 : 301; - -/** - * Detects if the user agent belongs to an AI/LLM tool or development environment - * that would benefit from markdown format - */ -function isAIOrDevTool(userAgent: string): boolean { - const patterns = [ - /claude/i, // Claude Desktop/Code - /cursor/i, // Cursor IDE - /copilot/i, // GitHub Copilot - /chatgpt/i, // ChatGPT - /openai/i, // OpenAI tools - /anthropic/i, // Anthropic tools - /vscode/i, // VS Code extensions - /intellij/i, // IntelliJ plugins - /sublime/i, // Sublime Text plugins - /got/i, // Got HTTP library (sindresorhus/got) - // Add more patterns as needed - ]; - - return patterns.some(pattern => pattern.test(userAgent)); -} - -/** - * Detects if client wants markdown via Accept header (standards-compliant) - */ -function wantsMarkdownViaAccept(acceptHeader: string): boolean { - return ( - acceptHeader.includes('text/markdown') || - acceptHeader.includes('text/x-markdown') || - acceptHeader.includes('text/plain') - ); -} - -/** - * Detects if client wants markdown via Accept header or user-agent - */ -function wantsMarkdown(request: NextRequest): boolean { - const userAgent = request.headers.get('user-agent') || ''; - const acceptHeader = request.headers.get('accept') || ''; - - // Strategy 1: Accept header content negotiation (standards-compliant) - if (wantsMarkdownViaAccept(acceptHeader)) { - return true; - } - - // Strategy 2: User-agent detection (fallback for tools that don't set Accept) - return isAIOrDevTool(userAgent); -} - -/** - * Handles redirection to markdown versions for AI/LLM clients - */ -const handleAIClientRedirect = (request: NextRequest) => { - const userAgent = request.headers.get('user-agent') || ''; - const acceptHeader = request.headers.get('accept') || ''; - const url = request.nextUrl; - - // Determine if this will be served as markdown - const forceMarkdown = url.searchParams.get('format') === 'md'; - const clientWantsMarkdown = wantsMarkdown(request); - const willServeMarkdown = - (clientWantsMarkdown || forceMarkdown) && !url.pathname.endsWith('.md'); - - // Determine detection method for logging - const detectionMethod = wantsMarkdownViaAccept(acceptHeader) - ? 'Accept header' - : isAIOrDevTool(userAgent) - ? 'User-agent' - : 'Manual'; - - // Log user agent for debugging (only for non-static assets) - if ( - !url.pathname.startsWith('/_next/') && - !url.pathname.includes('.') && - !url.pathname.startsWith('/api/') - ) { - Sentry.logger.info(`Middleware request processed: ${url.pathname}`, { - urlPath: url.pathname, - acceptHeader: request.headers.get('accept') || '', - userAgent: request.headers.get('user-agent') || '', - contentType: willServeMarkdown ? 'markdown' : 'html', - detectionMethod: willServeMarkdown ? detectionMethod : null, - }); - } - - // Skip if already requesting a markdown file - if (url.pathname.endsWith('.md')) { - return undefined; - } - - // Skip API routes and static assets (should already be filtered by matcher) - if ( - url.pathname.startsWith('/api/') || - url.pathname.startsWith('/_next/') || - /\.(js|json|png|jpg|jpeg|gif|ico|pdf|css|woff|woff2|ttf|map|xml|txt|zip|svg)$/i.test( - url.pathname - ) - ) { - return undefined; - } - - // Check for markdown request (Accept header, user-agent, or manual) - if (clientWantsMarkdown || forceMarkdown) { - // Log the rewrite for debugging - Sentry.logger.info('Markdown rewrite triggered', { - urlPath: url.pathname, - detectionMethod: forceMarkdown ? 'Manual format=md' : detectionMethod, - targetUrl: url.pathname.replace(/\/+$/, '') + '.md', - }); - - // Create new URL with .md extension - const newUrl = url.clone(); - // Handle root path and ensure proper .md extension - let pathname = url.pathname === '/' ? '/index' : url.pathname; - // Remove all trailing slashes if present, then add .md - pathname = pathname.replace(/\/+$/, '') + '.md'; - newUrl.pathname = pathname; - - // Clean up the format query parameter if it was used - if (forceMarkdown) { - newUrl.searchParams.delete('format'); - } - - // Rewrite to serve markdown inline (same URL, different content) - // The next.config.ts rewrite rule maps *.md to /md-exports/*.md - return NextResponse.rewrite(newUrl); - } - - return undefined; -}; - -const handleRedirects = (request: NextRequest) => { - const urlPath = request.nextUrl.pathname; - - const redirectTo = redirectMap.get(urlPath); - if (redirectTo) { - return NextResponse.redirect(new URL(redirectTo, request.url), { - status: redirectStatusCode, - }); - } - - // If we don't find an exact match, we try to look for a :guide placeholder - const guidePlaceholder = '/guides/:guide/'; - const guideRegex = /\/guides\/(\w+)\//g; - const match = guideRegex.exec(urlPath); - - if (!match) { - return undefined; - } - - const pathWithPlaceholder = urlPath.replace(guideRegex, guidePlaceholder); - const guide = match[1]; - - const redirectToGuide = redirectMap.get(pathWithPlaceholder); - if (redirectToGuide) { - const finalRedirectToPath = redirectToGuide.replace( - guidePlaceholder, - `/guides/${guide}/` - ); - - return NextResponse.redirect(new URL(finalRedirectToPath, request.url), { - status: redirectStatusCode, - }); - } - - return undefined; -}; - -type Redirect = { - /** a string with a leading and a trailing slash */ - from: `/${string}/` | '/'; - to: string; -}; - -/** Note: if you want to set redirects for developer docs, set them below in `DEVELOPER_DOCS_REDIRECTS` */ -const USER_DOCS_REDIRECTS: Redirect[] = [ - { - from: '/platforms/python/http_errors/', - to: '/platforms/python/integrations/django/http_errors/', - }, - { - from: '/platforms/javascript/guides/react/configuration/integrations/trycatch/', - to: '/platforms/javascript/configuration/integrations/browserapierrors/', - }, - { - from: '/platforms/javascript/performance/instrumentation/custom-instrumentation/caches-module/', - to: '/platforms/javascript/guides/node/performance/instrumentation/custom-instrumentation/caches-module/', - }, - { - from: '/platforms/javascript/guides/nuxt/install/top-level-import/', - to: '/platforms/javascript/guides/nuxt/install/limited-server-tracing/', - }, - { - from: '/account/early-adopter-features/discord/', - to: '/organization/integrations/notification-incidents/discord/', - }, - { - from: '/platforms/python/migration/configuration/filtering/', - to: '/platforms/python/configuration/filtering/', - }, - { - from: '/organization/integrations/github/', - to: '/organization/integrations/source-code-mgmt/github/', - }, - { - from: '/organization/integrations/gitlab/', - to: '/organization/integrations/source-code-mgmt/gitlab/', - }, - { - from: '/organization/integrations/bitbucket/', - to: '/organization/integrations/source-code-mgmt/bitbucket/', - }, - { - from: '/organization/integrations/rookout/', - to: '/organization/integrations/debugging/rookout/', - }, - { - from: '/organization/integrations/split/', - to: '/organization/integrations/feature-flag/split/', - }, - { - from: '/organization/integrations/teamwork/', - to: '/organization/integrations/issue-tracking/teamwork/', - }, - { - from: '/organization/integrations/jira/', - to: '/organization/integrations/issue-tracking/jira/', - }, - { - from: '/organization/integrations/linear/', - to: '/organization/integrations/issue-tracking/linear/', - }, - { - from: '/organization/integrations/clickup/', - to: '/organization/integrations/issue-tracking/clickup/', - }, - { - from: '/organization/integrations/project-mgmt/shortcut/', - to: '/organization/integrations/issue-tracking/shortcut/', - }, - { - from: '/organization/integrations/slack/', - to: '/organization/integrations/notification-incidents/slack/', - }, - { - from: '/organization/integrations/pagerduty/', - to: '/organization/integrations/notification-incidents/pagerduty/', - }, - { - from: '/organization/integrations/vanta/', - to: '/organization/integrations/compliance/vanta/', - }, - { - from: '/organization/integrations/jam/', - to: '/organization/integrations/session-replay/jam/', - }, - { - from: '/organization/integrations/cloud-monitoring/cloudflare-workers/', - to: '/platforms/javascript/guides/cloudflare/', - }, - { - from: '/product/crons/getting-started/cli/', - to: '/cli/crons/', - }, - { - from: '/product/data-management-settings/dynamic-sampling/', - to: '/product/insights/overview/', - }, - { - from: '/product/data-management-settings/event-grouping/', - to: '/concepts/data-management/event-grouping/', - }, - { - from: '/product/data-management-settings/data-forwarding/', - to: '/concepts/data-management/data-forwarding/', - }, - { - from: '/product/data-management-settings/filtering/', - to: '/concepts/data-management/filtering/', - }, - { - from: '/platforms/data-management/', - to: '/concepts/data-management/', - }, - { - from: '/platforms/javascript/sourcemaps/troubleshooting/', - to: '/platforms/javascript/sourcemaps/', - }, - { - from: '/platforms/react-native/install/cocoapods/', - to: '/platforms/react-native/manual-setup/manual-setup/', - }, - { - from: '/platforms/react-native/install/', - to: '/platforms/react-native/manual-setup/manual-setup/', - }, - { - from: '/platforms/unity/data-management/event-grouping/sdk-fingerprinting/', - to: '/platforms/unity/usage/sdk-fingerprinting/', - }, - { - from: '/platforms/unity/native-support/building-ios/', - to: '/platforms/unity/native-support/', - }, - { - from: '/platforms/unity/unity-lite/', - to: '/platforms/unity/migration/', - }, - { - from: '/platforms/go/config/', - to: '/platforms/go/configuration/options/', - }, - { - from: '/platforms/go/goroutines/', - to: '/platforms/go/usage/concurrency/', - }, - { - from: '/platforms/go/concurrency/', - to: '/platforms/go/usage/concurrency/', - }, - { - from: '/platforms/go/panics/', - to: '/platforms/go/usage/panics/', - }, - { - from: '/platforms/go/serverless/', - to: '/platforms/go/usage/serverless/', - }, - { - from: '/platforms/go/fasthttp/', - to: '/platforms/go/guides/fasthttp/', - }, - { - from: '/platforms/go/fiber/', - to: '/platforms/go/guides/fiber/', - }, - { - from: '/platforms/go/echo/', - to: '/platforms/go/guides/echo/', - }, - { - from: '/platforms/go/iris/', - to: '/platforms/go/guides/iris/', - }, - { - from: '/platforms/go/negroni/', - to: '/platforms/go/guides/negroni/', - }, - { - from: '/platforms/go/zerolog/', - to: '/platforms/go/guides/zerolog/', - }, - { - from: '/platforms/go/slog/', - to: '/platforms/go/guides/slog/', - }, - { - from: '/platforms/go/logrus/', - to: '/platforms/go/guides/logrus/', - }, - { - from: '/clients/go/integrations/http/', - to: '/platforms/go/guides/http/', - }, - { - from: '/platforms/go/http/', - to: '/platforms/go/guides/http/', - }, - { - from: '/platforms/go/gin/', - to: '/platforms/go/guides/gin/', - }, - { - from: '/clients/go/config/', - to: '/platforms/go/legacy-sdk/config/', - }, - { - from: '/clients/go/index/', - to: '/platforms/go/legacy-sdk/', - }, - { - from: '/clients/go/integrations/', - to: '/platforms/go/legacy-sdk/integrations/', - }, - { - from: '/clients/go/usage/', - to: '/platforms/go/legacy-sdk/usage/', - }, - { - from: '/clients/go/context/', - to: '/platforms/go/legacy-sdk/context/', - }, - { - from: '/platforms/qt/', - to: '/platforms/native/guides/qt/', - }, - { - from: '/platforms/native/qt/', - to: '/platforms/native/guides/qt/', - }, - { - from: '/platforms/breakpad/', - to: '/platforms/native/guides/breakpad/', - }, - { - from: '/platforms/native/breakpad/', - to: '/platforms/native/guides/breakpad/', - }, - { - from: '/platforms/minidump/', - to: '/platforms/native/guides/minidumps/', - }, - { - from: '/platforms/native/minidump/', - to: '/platforms/native/guides/minidumps/', - }, - { - from: '/clients/minidump/', - to: '/platforms/native/guides/minidumps/', - }, - { - from: '/platforms/react-native/advanced-setup/', - to: '/platforms/react-native/manual-setup/manual-setup/', - }, - { - from: '/platforms/react-native/codepush/', - to: '/platforms/react-native/manual-setup/codepush/', - }, - { - from: '/platforms/react-native/hermes/', - to: '/platforms/react-native/manual-setup/hermes/', - }, - { - from: '/platforms/react-native/ram-bundles/', - to: '/platforms/react-native/manual-setup/ram-bundles/', - }, - { - from: '/platforms/react-native/performance/sampling/', - to: '/platforms/react-native/configuration/sampling/', - }, - { - from: '/platforms/react-native/configuration/integrations/plugin/', - to: '/platforms/react-native/integrations/plugin/', - }, - { - from: '/platforms/react-native/configuration/integrations/', - to: '/platforms/react-native/integrations/', - }, - { - from: '/platforms/react-native/configuration/integrations/custom/', - to: '/platforms/react-native/integrations/custom/', - }, - { - from: '/platforms/react-native/configuration/integrations/default/', - to: '/platforms/react-native/integrations/default/', - }, - { - from: '/platforms/react-native/configuration/integrations/redux/', - to: '/platforms/react-native/integrations/redux/', - }, - { - from: '/platforms/react-native/manual-setup/sourcemaps/', - to: '/platforms/react-native/sourcemaps/', - }, - { - from: '/platforms/react-native/touchevents/', - to: '/platforms/react-native/configuration/touchevents/', - }, - { - from: '/platforms/python/data-collected/', - to: '/platforms/python/data-management/data-collected/', - }, - { - from: '/platforms/python/flask/', - to: '/platforms/python/integrations/flask/', - }, - { - from: '/platforms/python/aiohttp/', - to: '/platforms/python/integrations/aiohttp/', - }, - { - from: '/platforms/python/gcp_functions/', - to: '/platforms/python/integrations/gcp-functions/', - }, - { - from: '/platforms/python/serverless/', - to: '/platforms/python/integrations/serverless/', - }, - { - from: '/clients/python/integrations/pyramid/', - to: '/platforms/python/integrations/pyramid/', - }, - { - from: '/platforms/python/pyramid/', - to: '/platforms/python/integrations/pyramid/', - }, - { - from: '/clients/python/integrations/starlette/', - to: '/platforms/python/integrations/starlette/', - }, - { - from: '/platforms/python/starlette/', - to: '/platforms/python/integrations/starlette/', - }, - { - from: '/clients/python/integrations/lambda/', - to: '/platforms/python/integrations/aws-lambda/', - }, - { - from: '/platforms/python/aws_lambda/', - to: '/platforms/python/integrations/aws-lambda/', - }, - { - from: '/platforms/python/airflow/', - to: '/platforms/python/integrations/airflow/', - }, - { - from: '/platforms/python/tornado/', - to: '/platforms/python/integrations/tornado/', - }, - { - from: '/clients/python/integrations/tornado/', - to: '/platforms/python/integrations/tornado/', - }, - { - from: '/platforms/python/chalice/', - to: '/platforms/python/integrations/chalice/', - }, - { - from: '/clients/python/integrations/fastapi/', - to: '/platforms/python/integrations/fastapi/', - }, - { - from: '/platforms/python/fastapi/', - to: '/platforms/python/integrations/fastapi/', - }, - { - from: '/platforms/python/sanic/', - to: '/platforms/python/integrations/sanic/', - }, - { - from: '/clients/python/integrations/starlite/', - to: '/platforms/python/integrations/starlite/', - }, - { - from: '/platforms/python/starlite/', - to: '/platforms/python/integrations/starlite/', - }, - { - from: '/clients/python/integrations/litestar/', - to: '/platforms/python/integrations/litestar/', - }, - { - from: '/platforms/python/litestar/', - to: '/platforms/python/integrations/litestar/', - }, - { - from: '/platforms/python/beam/', - to: '/platforms/python/integrations/beam/', - }, - { - from: '/clients/python/integrations/celery/', - to: '/platforms/python/integrations/celery/', - }, - { - from: '/platforms/python/celery/', - to: '/platforms/python/integrations/celery/', - }, - { - from: '/platforms/python/hints/', - to: '/platforms/python/integrations/celery/', - }, - { - from: '/clients/python/integrations/django/', - to: '/platforms/python/integrations/django/', - }, - { - from: '/platforms/python/django/', - to: '/platforms/python/integrations/django/', - }, - { - from: '/platforms/python/falcon/', - to: '/platforms/python/integrations/falcon/', - }, - { - from: '/clients/python/integrations/logging/', - to: '/platforms/python/integrations/logging/', - }, - { - from: '/platforms/python/logging/', - to: '/platforms/python/integrations/logging/', - }, - { - from: '/clients/python/integrations/rq/', - to: '/platforms/python/integrations/rq/', - }, - { - from: '/platforms/python/rq/', - to: '/platforms/python/integrations/rq/', - }, - { - from: '/clients/python/integrations/bottle/', - to: '/platforms/python/integrations/bottle/', - }, - { - from: '/platforms/python/bottle/', - to: '/platforms/python/integrations/bottle/', - }, - { - from: '/platforms/python/pyspark/', - to: '/platforms/python/integrations/spark/', - }, - { - from: '/platforms/python/integrations/pyspark/', - to: '/platforms/python/integrations/spark/', - }, - { - from: '/platforms/python/tryton/', - to: '/platforms/python/integrations/tryton/', - }, - { - from: '/platforms/python/integrations/feature-flags/launchdarkly/', - to: '/platforms/python/integrations/launchdarkly/', - }, - { - from: '/platforms/python/integrations/feature-flags/openfeature/', - to: '/platforms/python/integrations/openfeature/', - }, - { - from: '/platforms/python/integrations/feature-flags/unleash/', - to: '/platforms/python/integrations/unleash/', - }, - { - from: '/clients/python/breadcrumbs/', - to: '/platforms/python/legacy-sdk/breadcrumbs/', - }, - { - from: '/clients/python/platform-support/', - to: '/platforms/python/legacy-sdk/platform-support/', - }, - { - from: '/clients/python/integrations/', - to: '/platforms/python/legacy-sdk/integrations/', - }, - { - from: '/clients/python/api/', - to: '/platforms/python/legacy-sdk/api/', - }, - { - from: '/clients/python/advanced/', - to: '/platforms/python/legacy-sdk/advanced/', - }, - { - from: '/clients/python/usage/', - to: '/platforms/python/legacy-sdk/usage/', - }, - { - from: '/clients/python/transports/', - to: '/platforms/python/legacy-sdk/transports/', - }, - { - from: '/platforms/python/contextvars/', - to: '/platforms/python/troubleshooting/', - }, - { - from: '/platforms/dart/usage/advanced-usage/', - to: '/platforms/dart/integrations/http-integration/', - }, - { - from: '/platforms/dart/configuration/integrations/http-integration/', - to: '/platforms/dart/integrations/http-integration/', - }, - { - from: '/platforms/dart/configuration/integrations/file/', - to: '/platforms/dart/integrations/file/', - }, - { - from: '/platforms/dart/configuration/integrations/', - to: '/platforms/dart/integrations/', - }, - { - from: '/platforms/dart/configuration/integrations/logging/', - to: '/platforms/dart/integrations/logging/', - }, - { - from: '/platforms/dart/configuration/integrations/dio/', - to: '/platforms/dart/integrations/dio/', - }, - { - from: '/platforms/dart/configuration/integrations/firebase-remote-config/', - to: '/platforms/dart/integrations/firebase-remote-config/', - }, - { - from: '/quickstart/', - to: '/platforms/', - }, - { - from: '/clients/', - to: '/platforms/', - }, - { - from: '/platforms/perl/', - to: '/platforms/', - }, - { - from: '/platforms/node/guides/serverless-cloud/typescript/', - to: '/platforms/', - }, - { - from: '/clients/rust/', - to: '/platforms/rust/', - }, - { - from: '/platforms/rust/log/', - to: '/platforms/rust/', - }, - { - from: '/platforms/rust/profiling/', - to: '/platforms/rust/', - }, - { - from: '/platforms/rust/actix/', - to: '/platforms/rust/guides/actix-web/', - }, - { - from: '/platforms/rust/guides/actix-web/profiling/', - to: '/platforms/rust/guides/actix-web/', - }, - { - from: '/clients/java/modules/log4j2/', - to: '/platforms/java/legacy/log4j2/', - }, - { - from: '/clients/java/', - to: '/platforms/java/legacy/', - }, - { - from: '/clients/java/migration/', - to: '/platforms/java/legacy/migration/', - }, - { - from: '/clients/java/usage/', - to: '/platforms/java/legacy/usage/', - }, - { - from: '/clients/java/modules/appengine/', - to: '/platforms/java/legacy/google-app-engine/', - }, - { - from: '/clients/java/context/', - to: '/platforms/java/scope/', - }, - { - from: '/clients/java/modules/jul/', - to: '/platforms/java/guides/jul/', - }, - { - from: '/platforms/java/guides/jul/config/', - to: '/platforms/java/guides/jul/', - }, - { - from: '/clients/java/modules/logback/', - to: '/platforms/java/guides/logback/', - }, - { - from: '/platforms/java/guides/logback/config/', - to: '/platforms/java/guides/logback/', - }, - { - from: '/platforms/java/guides/spring/config/', - to: '/platforms/java/guides/spring/', - }, - { - from: '/platforms/java/guides/springboot/config/', - to: '/platforms/java/guides/spring-boot/', - }, - { - from: '/clients/php/integrations/monolog/', - to: '/platforms/php/', - }, - { - from: '/platforms/php/default-integrations/', - to: '/platforms/php/integrations/', - }, - { - from: '/platforms/php/guides/symfony/config/', - to: '/platforms/php/guides/symfony/configuration/symfony-options/', - }, - { - from: '/clients/php/integrations/symfony2/', - to: '/platforms/php/guides/symfony/', - }, - { - from: '/platforms/php/symfony/', - to: '/platforms/php/guides/symfony/', - }, - { - from: '/platforms/php/guides/symfony/performance/pm-integrations/', - to: '/platforms/php/guides/symfony/tracing/instrumentation/automatic-instrumentation/', - }, - { - from: '/clients/php/integrations/laravel/', - to: '/platforms/php/guides/laravel/', - }, - { - from: '/platforms/php/laravel/', - to: '/platforms/php/guides/laravel/', - }, - { - from: '/platforms/php/guides/laravel/lumen/', - to: '/platforms/php/guides/laravel/', - }, - { - from: '/platforms/php/guides/laravel/configuration/other-versions/laravel4/', - to: '/platforms/php/guides/laravel/other-versions/laravel4/', - }, - { - from: '/platforms/php/guides/laravel/other-versions/laravel5-6-7/', - to: '/platforms/php/guides/laravel/other-versions/', - }, - { - from: '/platforms/php/guides/laravel/configuration/other-versions/lumen/', - to: '/platforms/php/guides/laravel/other-versions/lumen/', - }, - { - from: '/clients/php/config/', - to: '/platforms/php/legacy-sdk/config/', - }, - { - from: '/clients/php/', - to: '/platforms/php/legacy-sdk/', - }, - { - from: '/clients/php/integrations/', - to: '/platforms/php/legacy-sdk/integrations/', - }, - { - from: '/clients/php/usage/', - to: '/platforms/php/legacy-sdk/usage/', - }, - { - from: '/platforms/dotnet/configuration/cli-integration/', - to: '/platforms/dotnet/configuration/msbuild/', - }, - { - from: '/platforms/dotnet/aspnetcore/', - to: '/platforms/dotnet/guides/aspnetcore/', - }, - { - from: '/platforms/dotnet/guides/aspnetcore/ignoring-exceptions/', - to: '/platforms/dotnet/guides/aspnetcore/', - }, - { - from: '/platforms/dotnet/log4net/', - to: '/platforms/dotnet/guides/log4net/', - }, - { - from: '/platforms/dotnet/microsoft-extensions-logging/', - to: '/platforms/dotnet/guides/extensions-logging/', - }, - { - from: '/platforms/dotnet/entityframework/', - to: '/platforms/dotnet/guides/entityframework/', - }, - { - from: '/platforms/dotnet/maui/', - to: '/platforms/dotnet/guides/maui/', - }, - { - from: '/platforms/dotnet/wpf/', - to: '/platforms/dotnet/guides/wpf/', - }, - { - from: '/platforms/dotnet/winforms/', - to: '/platforms/dotnet/guides/winforms/', - }, - { - from: '/platforms/dotnet/guides/winforms/ignoring-exceptions/', - to: '/platforms/dotnet/guides/winforms/', - }, - { - from: '/platforms/dotnet/google.cloud.functions/', - to: '/platforms/dotnet/guides/google-cloud-functions/', - }, - { - from: '/platforms/dotnet/winui/', - to: '/platforms/dotnet/guides/winui/', - }, - { - from: '/platforms/dotnet/serilog/', - to: '/platforms/dotnet/guides/serilog/', - }, - { - from: '/platforms/dotnet/uwp/', - to: '/platforms/dotnet/guides/uwp/', - }, - { - from: '/platforms/dotnet/nlog/', - to: '/platforms/dotnet/guides/nlog/', - }, - { - from: '/platforms/flutter/configuration/integrations/user-interaction-instrumentation/', - to: '/platforms/flutter/integrations/user-interaction-instrumentation/', - }, - { - from: '/platforms/flutter/configuration/integrations/', - to: '/platforms/flutter/integrations/', - }, - { - from: '/platforms/flutter/configuration/integrations/sqflite-instrumentation/', - to: '/platforms/flutter/integrations/sqflite-instrumentation/', - }, - { - from: '/platforms/flutter/usage/advanced-usage/', - to: '/platforms/flutter/troubleshooting/', - }, - { - from: '/platforms/android/manual-configuration/', - to: '/platforms/android/configuration/manual-init/', - }, - { - from: '/platforms/android/advanced-usage/', - to: '/platforms/android/configuration/using-ndk/', - }, - { - from: '/platforms/android/using-ndk/', - to: '/platforms/android/configuration/using-ndk/', - }, - { - from: '/platforms/android/gradle/', - to: '/platforms/android/configuration/gradle/', - }, - { - from: '/platforms/android/configuration/integrations/apollo3/', - to: '/platforms/android/integrations/apollo3/', - }, - { - from: '/platforms/android/configuration/integrations/', - to: '/platforms/android/integrations/', - }, - { - from: '/platforms/android/configuration/integrations/logcat/', - to: '/platforms/android/integrations/logcat/', - }, - { - from: '/platforms/android/configuration/jetpack-compose/', - to: '/platforms/android/integrations/jetpack-compose/', - }, - { - from: '/platforms/android/configuration/integrations/jetpack-compose/', - to: '/platforms/android/integrations/jetpack-compose/', - }, - { - from: '/platforms/android/configuration/integrations/navigation/', - to: '/platforms/android/integrations/navigation/', - }, - { - from: '/platforms/android/configuration/integrations/room-and-sqlite/', - to: '/platforms/android/integrations/room-and-sqlite/', - }, - { - from: '/platforms/android/configuration/integrations/file-io/', - to: '/platforms/android/integrations/file-io/', - }, - { - from: '/platforms/java/tracing/instrumentation/apollo/', - to: '/platforms/java/tracing/instrumentation/apollo4/', - }, - { - from: '/platforms/java/guides/spring/tracing/instrumentation/apollo/', - to: '/platforms/java/guides/spring/tracing/instrumentation/apollo4/', - }, - { - from: '/platforms/java/guides/spring-boot/tracing/instrumentation/apollo/', - to: '/platforms/java/guides/spring-boot/tracing/instrumentation/apollo4/', - }, - { - from: '/platforms/android/performance/instrumentation/apollo/', - to: '/platforms/android/integrations/apollo4/', - }, - { - from: '/platforms/android/configuration/integrations/apollo/', - to: '/platforms/android/integrations/apollo4/', - }, - { - from: '/platforms/android/integrations/apollo/', - to: '/platforms/android/integrations/apollo4/', - }, - { - from: '/platforms/android/configuration/integrations/fragment/', - to: '/platforms/android/integrations/fragment/', - }, - { - from: '/platforms/android/timber/', - to: '/platforms/android/integrations/timber/', - }, - { - from: '/platforms/android/guides/timber/', - to: '/platforms/android/integrations/timber/', - }, - { - from: '/platforms/android/configuration/integrations/timber/', - to: '/platforms/android/integrations/timber/', - }, - { - from: '/platforms/android/guides/okhttp/', - to: '/platforms/android/integrations/okhttp/', - }, - { - from: '/platforms/android/configuration/integrations/okhttp/', - to: '/platforms/android/integrations/okhttp/', - }, - { - from: '/platforms/android/migrate/', - to: '/platforms/android/migration/', - }, - { - from: '/platforms/android/proguard/', - to: '/platforms/android/enhance-errors/proguard/', - }, - { - from: '/platforms/android/source-context/', - to: '/platforms/android/enhance-errors/source-context/', - }, - { - from: '/platforms/android/kotlin-compiler-plugin/', - to: '/platforms/android/enhance-errors/kotlin-compiler-plugin/', - }, - { - from: '/platforms/javascript/configuration/integrations/plugin/', - to: '/platforms/javascript/configuration/integrations/', - }, - { - from: '/platforms/javascript/configuration/integrations/default/', - to: '/platforms/javascript/configuration/integrations/', - }, - { - from: '/platforms/javascript/integrations/custom/', - to: '/platforms/javascript/configuration/integrations/custom/', - }, - { - from: '/platforms/javascript/loader/', - to: '/platforms/javascript/install/loader/', - }, - { - from: '/platforms/javascript/install/lazy-load-sentry/', - to: '/platforms/javascript/install/loader/', - }, - { - from: '/platforms/javascript/install/cdn/', - to: '/platforms/javascript/install/loader/', - }, - { - from: '/platforms/javascript/integrations/rrweb/', - to: '/platforms/javascript/session-replay/', - }, - { - from: '/platforms/javascript/configuration/integrations/rrweb/', - to: '/platforms/javascript/session-replay/', - }, - { - from: '/platforms/javascript/guides/angular/configuration/integrations/rrweb/', - to: '/platforms/javascript/session-replay/', - }, - { - from: '/platforms/javascript/guides/capacitor/configuration/integrations/rrweb/', - to: '/platforms/javascript/session-replay/', - }, - { - from: '/platforms/javascript/guides/cordova/configuration/integrations/rrweb/', - to: '/platforms/javascript/session-replay/', - }, - { - from: '/platforms/javascript/guides/ember/configuration/integrations/rrweb/', - to: '/platforms/javascript/session-replay/', - }, - { - from: '/platforms/javascript/guides/gatsby/configuration/integrations/rrweb/', - to: '/platforms/javascript/session-replay/', - }, - { - from: '/platforms/javascript/guides/nextjs/configuration/integrations/rrweb/', - to: '/platforms/javascript/session-replay/', - }, - { - from: '/platforms/javascript/guides/react/configuration/integrations/rrweb/', - to: '/platforms/javascript/session-replay/', - }, - { - from: '/platforms/javascript/guides/remix/configuration/integrations/rrweb/', - to: '/platforms/javascript/session-replay/', - }, - { - from: '/platforms/javascript/guides/svelte/configuration/integrations/rrweb/', - to: '/platforms/javascript/session-replay/', - }, - { - from: '/platforms/javascript/guides/vue/configuration/integrations/rrweb/', - to: '/platforms/javascript/session-replay/', - }, - { - from: '/platforms/javascript/guides/wasm/configuration/integrations/rrweb/', - to: '/platforms/javascript/session-replay/', - }, - { - from: '/platforms/javascript/guides/remix/session-replay/custom-instrumentation/', - to: '/platforms/javascript/session-replay/', - }, - { - from: '/platforms/javascript/guides/remix/session-replay/custom-instrumentation/privacy-configuration/', - to: '/platforms/javascript/session-replay/', - }, - { - from: '/platforms/javascript/guides/gatsby/session-replay/custom-instrumentation/', - to: '/platforms/javascript/session-replay/', - }, - { - from: '/platforms/unreal/setup-crashreport/', - to: '/platforms/unreal/configuration/setup-crashreporter/', - }, - { - from: '/platforms/unreal/setup-crashreporter/', - to: '/platforms/unreal/configuration/setup-crashreporter/', - }, - { - from: '/platforms/unreal/debug-symbols/', - to: '/platforms/unreal/configuration/debug-symbols/', - }, - { - from: '/clients/ruby/config/', - to: '/platforms/ruby/configuration/options/', - }, - { - from: '/platforms/ruby/config/', - to: '/platforms/ruby/configuration/options/', - }, - { - from: '/contributing/approach/write-getting-started/', - to: '/contributing/approach/sdk-docs/write-getting-started/', - }, - { - from: '/contributing/approach/write-data-management/', - to: '/contributing/approach/sdk-docs/write-data-management/', - }, - { - from: '/contributing/approach/write-sdk-docs/', - to: '/contributing/approach/sdk-docs/', - }, - { - from: '/contributing/approach/write-configuration/', - to: '/contributing/approach/sdk-docs/write-configuration/', - }, - { - from: '/contributing/approach/common_content/', - to: '/contributing/approach/sdk-docs/common_content/', - }, - { - from: '/contributing/approach/write-performance/', - to: '/contributing/approach/sdk-docs/write-performance/', - }, - { - from: '/contributing/approach/write-enriching-events/', - to: '/contributing/approach/sdk-docs/write-enriching-events/', - }, - { - from: '/contributing/approach/write-usage/', - to: '/contributing/approach/sdk-docs/write-usage/', - }, - { - from: '/learn/releases/', - to: '/product/releases/', - }, - { - from: '/workflow/releases/', - to: '/product/releases/', - }, - { - from: '/workflow/releases/index/', - to: '/product/releases/', - }, - { - from: '/workflow/releases/release-automation/', - to: '/product/releases/', - }, - { - from: '/product/releases/release-automation/', - to: '/product/releases/', - }, - { - from: '/workflow/releases/health/', - to: '/product/releases/health/', - }, - { - from: '/product/releases/health/crash/', - to: '/product/releases/health/', - }, - { - from: '/product/releases/health/setup/', - to: '/product/releases/setup/', - }, - { - from: '/workflow/releases/release-automation/travis-ci/', - to: '/product/releases/setup/release-automation/travis-ci/', - }, - { - from: '/workflow/releases/release-automation/circleci/', - to: '/product/releases/setup/release-automation/circleci/', - }, - { - from: '/workflow/releases/release-automation/netlify/', - to: '/product/releases/setup/release-automation/netlify/', - }, - { - from: '/workflow/releases/release-automation/jenkins/', - to: '/product/releases/setup/release-automation/jenkins/', - }, - { - from: '/workflow/releases/release-automation/bitbucket-pipelines/', - to: '/product/releases/setup/release-automation/bitbucket-pipelines/', - }, - { - from: '/workflow/releases/release-automation/github-actions/', - to: '/product/releases/setup/release-automation/github-actions/', - }, - { - from: '/product/releases/setup/manual-setup-releases/', - to: '/product/releases/associate-commits/', - }, - { - from: '/product/releases/health/release-details/', - to: '/product/releases/release-details/', - }, - { - from: '/guides/integrate-frontend/upload-source-maps/', - to: '/product/sentry-basics/integrate-frontend/upload-source-maps/', - }, - { - from: '/product/sentry-basics/guides/integrate-frontend/upload-source-maps/', - to: '/product/sentry-basics/integrate-frontend/upload-source-maps/', - }, - { - from: '/guides/integrate-frontend/configure-scms/', - to: '/product/sentry-basics/integrate-frontend/configure-scms/', - }, - { - from: '/product/sentry-basics/guides/integrate-frontend/configure-scms/', - to: '/product/sentry-basics/integrate-frontend/configure-scms/', - }, - { - from: '/guides/integrate-frontend/', - to: '/product/sentry-basics/integrate-frontend/', - }, - { - from: '/product/sentry-basics/guides/integrate-frontend/', - to: '/product/sentry-basics/integrate-frontend/', - }, - { - from: '/product/sentry-basics/frontend/create-new-project/', - to: '/product/sentry-basics/integrate-frontend/', - }, - { - from: '/guides/integrate-frontend/create-new-project/', - to: '/product/sentry-basics/integrate-frontend/create-new-project/', - }, - { - from: '/product/sentry-basics/guides/integrate-frontend/create-new-project/', - to: '/product/sentry-basics/integrate-frontend/create-new-project/', - }, - { - from: '/guides/integrate-frontend/initialize-sentry-sdk/', - to: '/product/sentry-basics/integrate-frontend/initialize-sentry-sdk/', - }, - { - from: '/product/sentry-basics/guides/integrate-frontend/initialize-sentry-sdk/', - to: '/product/sentry-basics/integrate-frontend/initialize-sentry-sdk/', - }, - { - from: '/guides/integrate-frontend/generate-first-error/', - to: '/product/sentry-basics/integrate-frontend/generate-first-error/', - }, - { - from: '/product/sentry-basics/guides/integrate-frontend/generate-first-error/', - to: '/product/sentry-basics/integrate-frontend/generate-first-error/', - }, - { - from: '/basics/', - to: '/product/sentry-basics/', - }, - { - from: '/product/sentry-basics/guides/', - to: '/product/sentry-basics/', - }, - { - from: '/product/sentry-basics/tracing/', - to: '/product/sentry-basics/concepts/tracing/', - }, - { - from: '/performance/distributed-tracing/', - to: '/product/sentry-basics/concepts/tracing/distributed-tracing/', - }, - { - from: '/performance-monitoring/distributed-tracing/', - to: '/product/sentry-basics/concepts/tracing/distributed-tracing/', - }, - { - from: '/product/sentry-basics/guides/error-tracing/', - to: '/product/sentry-basics/concepts/tracing/distributed-tracing/', - }, - { - from: '/product/performance/distributed-tracing/', - to: '/product/sentry-basics/concepts/tracing/distributed-tracing/', - }, - { - from: '/product/sentry-basics/tracing/distributed-tracing/', - to: '/product/sentry-basics/concepts/tracing/distributed-tracing/', - }, - { - from: '/product/performance/trace-view/', - to: '/product/sentry-basics/concepts/tracing/trace-view/', - }, - { - from: '/product/sentry-basics/tracing/trace-view/', - to: '/product/sentry-basics/concepts/tracing/trace-view/', - }, - { - from: '/product/performance/event-detail/', - to: '/concepts/key-terms/tracing/trace-view/', - }, - { - from: '/product/sentry-basics/tracing/event-detail/', - to: '/product/sentry-basics/concepts/key-terms/tracing/trace-view/', - }, - { - from: '/concepts/key-terms/tracing/event-detail/', - to: '/concepts/key-terms/tracing/trace-view/', - }, - { - from: '/product/sentry-basics/dsn-explainer/', - to: '/product/sentry-basics/concepts/dsn-explainer/', - }, - { - from: '/enriching-error-data/environments/', - to: '/product/sentry-basics/concepts/environments/', - }, - { - from: '/learn/environments/', - to: '/product/sentry-basics/concepts/environments/', - }, - { - from: '/product/sentry-basics/environments/', - to: '/product/sentry-basics/concepts/environments/', - }, - { - from: '/product/sentry-basics/key-terms/', - to: '/product/sentry-basics/concepts/key-terms/', - }, - { - from: '/guides/enrich-data/', - to: '/product/sentry-basics/concepts/enrich-data/', - }, - { - from: '/product/sentry-basics/guides/enrich-data/', - to: '/product/sentry-basics/concepts/enrich-data/', - }, - { - from: '/product/sentry-basics/enrich-data/', - to: '/product/sentry-basics/concepts/enrich-data/', - }, - { - from: '/guides/integrate-backend/capturing-errors/', - to: '/product/sentry-basics/integrate-backend/capturing-errors/', - }, - { - from: '/product/sentry-basics/guides/integrate-backend/capturing-errors/', - to: '/product/sentry-basics/integrate-backend/capturing-errors/', - }, - { - from: '/guides/integrate-backend/', - to: '/product/sentry-basics/integrate-backend/', - }, - { - from: '/product/sentry-basics/guides/integrate-backend/', - to: '/product/sentry-basics/integrate-backend/', - }, - { - from: '/guides/integrate-backend/configuration-options/', - to: '/product/sentry-basics/integrate-backend/configuration-options/', - }, - { - from: '/product/sentry-basics/guides/integrate-backend/configuration-options/', - to: '/product/sentry-basics/integrate-backend/configuration-options/', - }, - { - from: '/guides/integrate-backend/getting-started/', - to: '/product/sentry-basics/integrate-backend/getting-started/', - }, - { - from: '/product/sentry-basics/guides/integrate-backend/getting-started/', - to: '/product/sentry-basics/integrate-backend/getting-started/', - }, - { - from: '/ssl/', - to: '/security-legal-pii/security/ssl/', - }, - { - from: '/ip-ranges/', - to: '/security-legal-pii/security/ip-ranges/', - }, - { - from: '/learn/security-policy-reporting/', - to: '/security-legal-pii/security/security-policy-reporting/', - }, - { - from: '/error-reporting/security-policy-reporting/', - to: '/security-legal-pii/security/security-policy-reporting/', - }, - { - from: '/platforms/javascript/troubleshooting/session-replay/', - to: '/platforms/javascript/session-replay/troubleshooting/', - }, - { - from: '/platforms/javascript/guides/:guide/troubleshooting/session-replay/', - to: '/platforms/javascript/session-replay/troubleshooting/', - }, - { - from: '/sdks/javascript/config/sourcemaps/', - to: '/platforms/javascript/sourcemaps/', - }, - { - from: '/platforms/javascript/sourcemaps/generation/', - to: '/platforms/javascript/sourcemaps/', - }, - { - from: '/platforms/javascript/sourcemaps/availability/', - to: '/platforms/javascript/sourcemaps/', - }, - { - from: '/platforms/javascript/configuration/sourcemaps/', - to: '/platforms/javascript/sourcemaps/', - }, - { - from: '/platforms/javascript/guides/docPlatform/sourcemaps/', - to: '/platforms/javascript/sourcemaps/', - }, - { - from: '/platforms/javascript/guides/:guide/sourcemaps/multiple-origins/', - to: '/platforms/javascript/guides/:guide/sourcemaps/', - }, - { - from: '/platforms/javascript/guides/:guide/sourcemaps/uploading-without-debug-ids/', - to: '/platforms/javascript/guides/:guide/sourcemaps/', - }, - { - from: '/platforms/javascript/sourcemaps/uploading-without-debug-ids/', - to: '/platforms/javascript/sourcemaps/troubleshooting_js/', - }, - { - from: '/platforms/javascript/sourcemaps/troubleshooting_js/verify-artifact-distribution-value-matches-value-configured-in-your-sdk/', - to: '/platforms/javascript/sourcemaps/troubleshooting_js/', - }, - { - from: '/platforms/javascript/sourcemaps/troubleshooting_js/uploading-without-debug-ids/', - to: '/platforms/javascript/sourcemaps/troubleshooting_js/legacy-uploading-methods/', - }, - { - from: '/platforms/javascript/sourcemaps/tools/webpack/', - to: '/platforms/javascript/sourcemaps/uploading/webpack/', - }, - { - from: '/platforms/javascript/sourcemaps/hosting-publicly/', - to: '/platforms/javascript/sourcemaps/uploading/hosting-publicly/', - }, - { - from: '/platforms/javascript/guides/cordova/troubleshooting/supported-browsers/', - to: '/platforms/javascript/guides/cordova/troubleshooting/', - }, - { - from: '/clients/cordova/ionic/', - to: '/platforms/javascript/guides/cordova/ionic/', - }, - { - from: '/sdks/react/integrations/vue-router/', - to: '/platforms/javascript/guides/vue/features/vue-router/', - }, - { - from: '/platforms/javascript/guides/vue/configuration/integrations/vue-router/', - to: '/platforms/javascript/guides/vue/features/vue-router/', - }, - { - from: '/platforms/javascript/vue/', - to: '/platforms/javascript/guides/vue/', - }, - { - from: '/clients/javascript/integrations/vue/', - to: '/platforms/javascript/guides/vue/', - }, - { - from: '/clients/javascript/integrations/angular/', - to: '/platforms/javascript/guides/angular/angular1/', - }, - { - from: '/platforms/javascript/gatsby/', - to: '/platforms/javascript/guides/gatsby/', - }, - { - from: '/platforms/javascript/guides/gatsby/errors/breadcrumbs/', - to: '/platforms/javascript/guides/gatsby/', - }, - { - from: '/clients/javascript/integrations/ember/', - to: '/platforms/javascript/guides/ember/', - }, - { - from: '/platforms/javascript/ember/', - to: '/platforms/javascript/guides/ember/', - }, - { - from: '/platforms/javascript/guides/electron/configuration/integrations/optional/', - to: '/platforms/javascript/guides/electron/configuration/integrations/electronminidump/', - }, - { - from: '/clients/electron/', - to: '/platforms/javascript/guides/electron/', - }, - { - from: '/platforms/javascript/electron/', - to: '/platforms/javascript/guides/electron/', - }, - { - from: '/platforms/electron/', - to: '/platforms/javascript/guides/electron/', - }, - { - from: '/platforms/javascript/electron/sourcemaps/', - to: '/platforms/javascript/guides/electron/', - }, - { - from: '/platforms/javascript/guides/electron/lazy-load-sentry/', - to: '/platforms/javascript/guides/electron/', - }, - { - from: '/sdks/react/integrations/redux/', - to: '/platforms/javascript/guides/react/features/redux/', - }, - { - from: '/platforms/javascript/guides/react/configuration/integrations/redux/', - to: '/platforms/javascript/guides/react/features/redux/', - }, - { - from: '/platforms/javascript/guides/react/integrations/react-router/', - to: '/platforms/javascript/guides/react/features/react-router/', - }, - { - from: '/platforms/javascript/guides/react/configuration/integrations/react-router/', - to: '/platforms/javascript/guides/react/features/react-router/', - }, - { - from: '/platforms/javascript/guides/session-replay/', - to: '/platforms/javascript/session-replay/', - }, - { - from: '/platforms/javascript/react/', - to: '/platforms/javascript/guides/react/', - }, - { - from: '/clients/javascript/integrations/react/', - to: '/platforms/javascript/guides/react/', - }, - { - from: '/sdks/react/', - to: '/platforms/javascript/guides/react/', - }, - { - from: '/platforms/react/', - to: '/platforms/javascript/guides/react/', - }, - { - from: '/clients/javascript/config/', - to: '/platforms/javascript/legacy-sdk/config/', - }, - { - from: '/clients/javascript/install/', - to: '/platforms/javascript/legacy-sdk/install/', - }, - { - from: '/clients/javascript/sourcemaps/', - to: '/platforms/javascript/legacy-sdk/sourcemaps/', - }, - { - from: '/clients/javascript/integrations/', - to: '/platforms/javascript/legacy-sdk/integrations/', - }, - { - from: '/clients/javascript/usage/', - to: '/platforms/javascript/legacy-sdk/usage/', - }, - { - from: '/clients/javascript/tips/', - to: '/platforms/javascript/legacy-sdk/tips/', - }, - { - from: '/platforms/node/pluggable-integrations/', - to: '/platforms/javascript/guides/node/configuration/integrations/', - }, - { - from: '/platforms/node/default-integrations/', - to: '/platforms/javascript/guides/node/configuration/integrations/', - }, - { - from: '/platforms/node/integrations/default-integrations/', - to: '/platforms/javascript/guides/node/configuration/integrations/', - }, - { - from: '/platforms/javascript/guides/:guide/configuration/integrations/pluggable-integrations/', - to: '/platforms/javascript/guides/:guide/configuration/integrations/', - }, - { - from: '/platforms/javascript/guides/:guide/configuration/integrations/default-integrations/', - to: '/platforms/javascript/guides/:guide/configuration/integrations/', - }, - { - from: '/platforms/node/sourcemaps/troubleshooting_js/uploading-without-debug-ids/', - to: '/platforms/javascript/guides/node/sourcemaps/troubleshooting_js/legacy-uploading-methods/', - }, - { - from: '/platforms/node/gcp_functions/', - to: '/platforms/javascript/guides/gcp-functions/', - }, - { - from: '/clients/node/integrations/express/', - to: '/platforms/javascript/guides/express/', - }, - { - from: '/platforms/node/express/', - to: '/platforms/javascript/guides/express/', - }, - { - from: '/platforms/node/guides/express/integrations/default-integrations/', - to: '/platforms/javascript/guides/express/', - }, - { - from: '/platforms/node/aws_lambda/', - to: '/platforms/javascript/guides/aws-lambda/', - }, - { - from: '/platforms/node/azure_functions/', - to: '/platforms/javascript/guides/azure-functions/', - }, - { - from: '/platforms/node/guides/azure-functions/typescript/', - to: '/platforms/javascript/guides/azure-functions/', - }, - { - from: '/clients/node/integrations/connect/', - to: '/platforms/javascript/guides/connect/', - }, - { - from: '/platforms/node/connect/', - to: '/platforms/javascript/guides/connect/', - }, - { - from: '/clients/node/integrations/koa/', - to: '/platforms/javascript/guides/koa/', - }, - { - from: '/platforms/node/koa/', - to: '/platforms/javascript/guides/koa/', - }, - { - from: '/platforms/node/guides/koa/typescript/', - to: '/platforms/javascript/guides/koa/', - }, - { - from: '/clients/node/config/', - to: '/platforms/javascript/guides/node/legacy-sdk/config/', - }, - { - from: '/clients/node/coffeescript/', - to: '/platforms/javascript/guides/node/legacy-sdk/coffeescript/', - }, - { - from: '/clients/node/sourcemaps/', - to: '/platforms/javascript/guides/node/legacy-sdk/sourcemaps/', - }, - { - from: '/clients/node/typescript/', - to: '/platforms/javascript/guides/node/legacy-sdk/typescript/', - }, - { - from: '/platforms/node/typescript/', - to: '/platforms/javascript/guides/node/legacy-sdk/typescript/', - }, - { - from: '/clients/node/integrations/', - to: '/platforms/javascript/guides/node/legacy-sdk/integrations/', - }, - { - from: '/clients/node/usage/', - to: '/platforms/javascript/guides/node/legacy-sdk/usage/', - }, - { - from: '/platforms/node/usage/set-level/', - to: '/platforms/javascript/guides/node/enriching-events/level/', - }, - { - from: '/platforms/node/usage/sdk-fingerprinting/', - to: '/platforms/javascript/guides/node/enriching-events/fingerprinting/', - }, - { - from: '/platforms/node/guides/:guide/usage/set-level/', - to: '/platforms/javascript/guides/:guide/enriching-events/level/', - }, - { - from: '/platforms/node/guides/:guide/usage/sdk-fingerprinting/', - to: '/platforms/javascript/guides/:guide/enriching-events/fingerprinting/', - }, - { - from: '/platforms/javascript/usage/set-level/', - to: '/platforms/javascript/enriching-events/level/', - }, - { - from: '/platforms/javascript/usage/sdk-fingerprinting/', - to: '/platforms/javascript/enriching-events/fingerprinting/', - }, - { - from: '/platforms/javascript/guides/:guide/usage/set-level/', - to: '/platforms/javascript/guides/:guide/enriching-events/level/', - }, - { - from: '/platforms/javascript/guides/:guide/usage/sdk-fingerprinting/', - to: '/platforms/javascript/guides/:guide/enriching-events/fingerprinting/', - }, - { - from: '/platforms/javascript/guides/:guide/tracing/instrumentation/opentelemetry/', - to: '/platforms/javascript/guides/:guide/opentelemetry/', - }, - // START redirecting deprecated generic metrics docs to concepts - { - from: '/platforms/apple/metrics/', - to: '/concepts/key-terms/tracing/span-metrics/', - }, - { - from: '/platforms/unity/metrics/', - to: '/concepts/key-terms/tracing/span-metrics/', - }, - // END redirecting deprecated generic metrics docs to concepts - { - from: '/learn/cli/configuration/', - to: '/cli/configuration/', - }, - { - from: '/learn/cli/', - to: '/cli/', - }, - { - from: '/learn/cli/releases/', - to: '/cli/releases/', - }, - { - from: '/cli/metrics/', - to: '/cli/send-event/', - }, - { - from: '/workflow/alerts-notifications/', - to: '/product/alerts/', - }, - { - from: '/product/alerts-notifications/', - to: '/product/alerts/', - }, - { - from: '/product/sentry-basics/guides/alert-notifications/', - to: '/product/alerts/', - }, - { - from: '/product/alerts/create-alerts/best-practices/', - to: '/product/alerts/best-practices/', - }, - { - from: '/product/sentry-basics/guides/alert-notifications/routing-alerts/', - to: '/product/alerts/create-alerts/routing-alerts/', - }, - { - from: '/product/sentry-basics/guides/alert-notifications/issue-alerts/', - to: '/product/alerts/create-alerts/issue-alert-config/', - }, - { - from: '/product/alerts/alert-settings/', - to: '/product/alerts/create-alerts/issue-alert-config/', - }, - { - from: '/product/alerts-notifications/alert-settings/', - to: '/product/alerts/create-alerts/issue-alert-config/', - }, - { - from: '/product/sentry-basics/guides/alert-notifications/metric-alerts/', - to: '/product/alerts/create-alerts/metric-alert-config/', - }, - { - from: '/workflow/alerts-notifications/alerts/', - to: '/product/alerts/alert-types/', - }, - { - from: '/workflow/notifications/alerts/', - to: '/product/alerts/alert-types/', - }, - { - from: '/product/alerts-notifications/alerts/', - to: '/product/alerts/alert-types/', - }, - { - from: '/product/alerts-notifications/metric-alerts/', - to: '/product/alerts/alert-types/', - }, - { - from: '/product/alerts-notifications/issue-alerts/', - to: '/product/alerts/alert-types/', - }, - { - from: '/product/alerts/create-alerts/crash-rate-alert-config/', - to: '/product/alerts/alert-types/', - }, - { - from: '/workflow/alerts-notifications/notifications/', - to: '/product/alerts/notifications/', - }, - { - from: '/workflow/notifications/workflow/', - to: '/product/alerts/notifications/', - }, - { - from: '/workflow/notifications/', - to: '/product/alerts/notifications/', - }, - { - from: '/product/notifications/', - to: '/product/alerts/notifications/', - }, - { - from: '/learn/notifications/', - to: '/product/alerts/notifications/', - }, - { - from: '/product/alerts-notifications/notifications/', - to: '/product/alerts/notifications/', - }, - { - from: '/product/sentry-basics/guides/alert-notifications/notifications/', - to: '/product/alerts/notifications/', - }, - { - from: '/workflow/integrations/amazon-sqs/', - to: '/organization/integrations/data-forwarding/amazon-sqs/', - }, - { - from: '/workflow/integrations/legacy-integrations/amazon-sqs/', - to: '/organization/integrations/data-forwarding/amazon-sqs/', - }, - { - from: '/product/integrations/amazon-sqs/', - to: '/organization/integrations/data-forwarding/amazon-sqs/', - }, - { - from: '/product/integrations/segment/', - to: '/organization/integrations/data-forwarding/segment/', - }, - { - from: '/workflow/integrations/splunk/', - to: '/organization/integrations/data-forwarding/splunk/', - }, - { - from: '/workflow/integrations/legacy-integrations/splunk/', - to: '/organization/integrations/data-forwarding/splunk/', - }, - { - from: '/product/integrations/splunk/', - to: '/organization/integrations/data-forwarding/splunk/', - }, - { - from: '/organization/integrations/data-visualization/splunk/', - to: '/organization/integrations/data-forwarding/splunk/', - }, - { - from: '/organization/integrations/data-visualization/segment/', - to: '/organization/integrations/data-forwarding/segment/', - }, - { - from: '/organization/integrations/data-visualization/amazon-sqs/', - to: '/organization/integrations/data-forwarding/amazon-sqs/', - }, - { - from: '/organization/integrations/data-visualization/grafana/', - to: '/organization/integrations/data-forwarding/grafana/', - }, - { - from: '/organization/integrations/data-visualization/', - to: '/organization/integrations/data-forwarding/', - }, - { - from: '/concepts/data-management/data-forwarding/', - to: '/organization/integrations/data-forwarding/', - }, - { - from: '/workflow/integrations/gitlab/', - to: '/organization/integrations/source-code-mgmt/gitlab/', - }, - { - from: '/workflow/integrations/global-integrations/gitlab/', - to: '/organization/integrations/source-code-mgmt/gitlab/', - }, - { - from: '/product/integrations/gitlab/', - to: '/organization/integrations/source-code-mgmt/gitlab/', - }, - { - from: '/workflow/integrations/azure-devops/', - to: '/organization/integrations/source-code-mgmt/azure-devops/', - }, - { - from: '/workflow/integrations/legacy-integrations/azure-devops/', - to: '/organization/integrations/source-code-mgmt/azure-devops/', - }, - { - from: '/workflow/integrations/global-integrations/azure-devops/', - to: '/organization/integrations/source-code-mgmt/azure-devops/', - }, - { - from: '/product/integrations/azure-devops/', - to: '/organization/integrations/source-code-mgmt/azure-devops/', - }, - { - from: '/integrations/azure-devops/', - to: '/organization/integrations/source-code-mgmt/azure-devops/', - }, - { - from: '/workflow/integrations/github/', - to: '/organization/integrations/source-code-mgmt/github/', - }, - { - from: '/workflow/integrations/legacy-integrations/github/', - to: '/organization/integrations/source-code-mgmt/github/', - }, - { - from: '/workflow/integrations/global-integrations/github/', - to: '/organization/integrations/source-code-mgmt/github/', - }, - { - from: '/product/integrations/github/', - to: '/organization/integrations/source-code-mgmt/github/', - }, - { - from: '/integrations/github-enterprise/', - to: '/organization/integrations/source-code-mgmt/github/', - }, - { - from: '/integrations/github/', - to: '/organization/integrations/source-code-mgmt/github/', - }, - { - from: '/workflow/integrations/bitbucket/', - to: '/organization/integrations/source-code-mgmt/bitbucket/', - }, - { - from: '/workflow/integrations/legacy-integrations/bitbucket/', - to: '/organization/integrations/source-code-mgmt/bitbucket/', - }, - { - from: '/workflow/integrations/global-integrations/bitbucket/', - to: '/organization/integrations/source-code-mgmt/bitbucket/', - }, - { - from: '/product/integrations/bitbucket/', - to: '/organization/integrations/source-code-mgmt/bitbucket/', - }, - { - from: '/integrations/bitbucket/', - to: '/organization/integrations/source-code-mgmt/bitbucket/', - }, - { - from: '/integrations/', - to: '/organization/integrations/', - }, - { - from: '/workflow/integrations/', - to: '/organization/integrations/', - }, - { - from: '/workflow/integrations/legacy-integrations/', - to: '/organization/integrations/', - }, - { - from: '/workflow/integrations/global-integrations/', - to: '/organization/integrations/', - }, - { - from: '/workflow/legacy-integrations/', - to: '/organization/integrations/', - }, - { - from: '/workflow/global-integrations/', - to: '/organization/integrations/', - }, - { - from: '/workflow/integrations/rookout/', - to: '/organization/integrations/debugging/rookout/', - }, - { - from: '/workflow/integrations/global-integrations/rookout/', - to: '/organization/integrations/debugging/rookout/', - }, - { - from: '/product/integrations/rookout/', - to: '/organization/integrations/debugging/rookout/', - }, - { - from: '/product/integrations/gcp-cloud-run/', - to: '/organization/integrations/cloud-monitoring/gcp-cloud-run/', - }, - { - from: '/product/integrations/aws-lambda/', - to: '/organization/integrations/cloud-monitoring/aws-lambda/', - }, - { - from: '/product/integrations/cloudflare-workers/', - to: '/platforms/javascript/guides/cloudflare/', - }, - { - from: '/product/integrations/vanta/', - to: '/organization/integrations/compliance/vanta/', - }, - { - from: '/product/integrations/truto/', - to: '/organization/integrations/compliance/truto/', - }, - { - from: '/integrations/discord/', - to: '/organization/integrations/notification-incidents/discord/', - }, - { - from: '/product/integrations/discord/', - to: '/organization/integrations/notification-incidents/discord/', - }, - { - from: '/product/accounts/early-adopter-features/discord/', - to: '/organization/integrations/notification-incidents/discord/', - }, - { - from: '/workflow/integrations/pagerduty/', - to: '/organization/integrations/notification-incidents/pagerduty/', - }, - { - from: '/workflow/integrations/legacy-integrations/pagerduty/', - to: '/organization/integrations/notification-incidents/pagerduty/', - }, - { - from: '/workflow/integrations/global-integrations/pagerduty/', - to: '/organization/integrations/notification-incidents/pagerduty/', - }, - { - from: '/product/integrations/pagerduty/', - to: '/organization/integrations/notification-incidents/pagerduty/', - }, - { - from: '/product/integrations/notification-incidents/amixr/', - to: '/organization/integrations/notification-incidents/', - }, - { - from: '/product/integrations/msteams/', - to: '/organization/integrations/notification-incidents/msteams/', - }, - { - from: '/product/integrations/rootly/', - to: '/organization/integrations/notification-incidents/rootly/', - }, - { - from: '/product/integrations/spikesh/', - to: '/product/integrations/notification-incidents/spikesh/', - }, - { - from: '/workflow/integrations/slack/', - to: '/product/integrations/notification-incidents/slack/', - }, - { - from: '/workflow/integrations/legacy-integrations/slack/', - to: '/product/integrations/notification-incidents/slack/', - }, - { - from: '/workflow/integrations/global-integrations/slack/', - to: '/product/integrations/notification-incidents/slack/', - }, - { - from: '/integrations/slack/', - to: '/product/integrations/notification-incidents/slack/', - }, - { - from: '/product/integrations/slack/', - to: '/product/integrations/notification-incidents/slack/', - }, - { - from: '/workflow/integrations/integration-platform/ui-components/', - to: '/product/integrations/integration-platform/ui-components/', - }, - { - from: '/workflow/integrations/integration-platform/', - to: '/product/integrations/integration-platform/', - }, - { - from: '/workflow/integrations/integration-platform/webhooks/', - to: '/product/integrations/integration-platform/webhooks/', - }, - { - from: '/product/integrations/openreplay/', - to: '/product/integrations/session-replay/openreplay/', - }, - { - from: '/product/integrations/fullstory/', - to: '/product/integrations/session-replay/fullstory/', - }, - { - from: '/product/integrations/jam/', - to: '/product/integrations/session-replay/jam/', - }, - { - from: '/product/integrations/atlas/', - to: '/product/integrations/session-replay/atlas/', - }, - { - from: '/workflow/integrations/split/', - to: '/product/integrations/feature-flag/split/', - }, - { - from: '/workflow/integrations/global-integrations/split/', - to: '/product/integrations/feature-flag/split/', - }, - { - from: '/product/integrations/split/', - to: '/product/integrations/feature-flag/split/', - }, - { - from: '/product/integrations/launchdarkly/', - to: '/product/integrations/feature-flag/launchdarkly/', - }, - { - from: '/workflow/integrations/vercel/', - to: '/product/integrations/deployment/vercel/', - }, - { - from: '/workflow/integrations/global-integrations/vercel/', - to: '/product/integrations/deployment/vercel/', - }, - { - from: '/product/integrations/vercel/', - to: '/product/integrations/deployment/vercel/', - }, - { - from: '/workflow/integrations/heroku/', - to: '/product/integrations/deployment/heroku/', - }, - { - from: '/workflow/integrations/legacy-integrations/gitlab/', - to: '/product/integrations/deployment/heroku/', - }, - { - from: '/product/integrations/heroku/', - to: '/product/integrations/deployment/heroku/', - }, - { - from: '/workflow/integrations/clubhouse/', - to: '/product/integrations/issue-tracking/shortcut/', - }, - { - from: '/workflow/integrations/legacy-integrations/clubhouse/', - to: '/product/integrations/issue-tracking/shortcut/', - }, - { - from: '/workflow/integrations/global-integrations/clubhouse/', - to: '/product/integrations/issue-tracking/shortcut/', - }, - { - from: '/product/integrations/clubhouse/', - to: '/product/integrations/issue-tracking/shortcut/', - }, - { - from: '/product/integrations/issue-tracking/clubhouse/', - to: '/product/integrations/issue-tracking/shortcut/', - }, - { - from: '/product/integrations/shortcut/', - to: '/product/integrations/issue-tracking/shortcut/', - }, - { - from: '/product/integrations/project-mgmt/shortcut/', - to: '/product/integrations/issue-tracking/shortcut/', - }, - { - from: '/product/integrations/sourcegraph/', - to: '/product/integrations/issue-tracking/sourcegraph/', - }, - { - from: '/product/integrations/incidentio/', - to: '/product/integrations/issue-tracking/incidentio/', - }, - { - from: '/product/integrations/height/', - to: '/product/integrations/issue-tracking/height/', - }, - { - from: '/product/integrations/project-mgmt/', - to: '/product/integrations/issue-tracking/', - }, - { - from: '/product/integrations/linear/', - to: '/product/integrations/issue-tracking/linear/', - }, - { - from: '/product/integrations/project-mgmt/linear/', - to: '/product/integrations/issue-tracking/linear/', - }, - { - from: '/workflow/integrations/clickup/', - to: '/product/integrations/issue-tracking/clickup/', - }, - { - from: '/integrations/clickup/', - to: '/product/integrations/issue-tracking/clickup/', - }, - { - from: '/workflow/integrations/global-integrations/clickup/', - to: '/product/integrations/issue-tracking/clickup/', - }, - { - from: '/product/integrations/clickup/', - to: '/product/integrations/issue-tracking/clickup/', - }, - { - from: '/product/integrations/project-mgmt/clickup/', - to: '/product/integrations/issue-tracking/clickup/', - }, - { - from: '/workflow/integrations/jira-server/', - to: '/product/integrations/issue-tracking/jira/', - }, - { - from: '/workflow/integrations/jira/', - to: '/product/integrations/issue-tracking/jira/', - }, - { - from: '/workflow/integrations/global-integrations/jira-server/', - to: '/product/integrations/issue-tracking/jira/', - }, - { - from: '/workflow/integrations/global-integrations/jira/', - to: '/product/integrations/issue-tracking/jira/', - }, - { - from: '/workflow/legacy-integrations/jira/', - to: '/product/integrations/issue-tracking/jira/', - }, - { - from: '/product/integrations/jira/', - to: '/product/integrations/issue-tracking/jira/', - }, - { - from: '/product/integrations/project-mgmt/jira/', - to: '/product/integrations/issue-tracking/jira/', - }, - { - from: '/integrations/jira/', - to: '/product/integrations/issue-tracking/jira/', - }, - { - from: '/workflow/integrations/asana/', - to: '/product/integrations/issue-tracking/asana/', - }, - { - from: '/workflow/integrations/legacy-integrations/asana/', - to: '/product/integrations/issue-tracking/asana/', - }, - { - from: '/workflow/integrations/global-integrations/asana/', - to: '/product/integrations/issue-tracking/asana/', - }, - { - from: '/product/integrations/asana/', - to: '/product/integrations/issue-tracking/asana/', - }, - { - from: '/product/integrations/project-mgmt/asana/', - to: '/product/integrations/issue-tracking/asana/', - }, - { - from: '/product/integrations/teamwork/', - to: '/product/integrations/issue-tracking/teamwork/', - }, - { - from: '/product/integrations/project-mgmt/teamwork/', - to: '/product/integrations/issue-tracking/teamwork/', - }, - { - from: '/workflow/user-settings/', - to: '/account/user-settings/', - }, - { - from: '/product/accounts/early-adopter/', - to: '/organization/early-adopter-features/', - }, - { - from: '/pricing/am2-pricing/', - to: '/pricing/legacy-pricing/', - }, - { - from: '/pricing/quotas/manage-event-stream-guide/adjusting-quotas/', - to: '/pricing/quotas/manage-event-stream-guide/#adjusting-quotas', - }, - { - from: '/learn/pricing/', - to: '/pricing/', - }, - { - from: '/product/pricing/', - to: '/pricing/', - }, - { - from: '/learn/quotas/', - to: '/pricing/quotas/', - }, - { - from: '/product/quotas/', - to: '/pricing/quotas/', - }, - { - from: '/learn/sensitive-data/', - to: '/security-legal-pii/scrubbing/', - }, - { - from: '/product/data-management-settings/dynamic-sampling/getting-started/', - to: '/pricing/quotas/', - }, - { - from: '/product/data-management-settings/dynamic-sampling/benefits-dynamic-sampling/', - to: '/pricing/quotas/', - }, - { - from: '/guides/manage-event-stream/', - to: '/pricing/quotas/manage-event-stream-guide/', - }, - { - from: '/learn/sso/', - to: '/organization/authentication/sso/', - }, - { - from: '/product/sso/', - to: '/organization/authentication/sso/', - }, - { - from: '/accounts/saml2/', - to: '/organization/authentication/sso/saml2/', - }, - { - from: '/guides/getting-started/', - to: '/organization/getting-started/', - }, - { - from: '/product/sentry-basics/guides/getting-started/', - to: '/organization/getting-started/', - }, - { - from: '/learn/membership/', - to: '/organization/membership/', - }, - { - from: '/product/membership/', - to: '/organization/membership/', - }, - { - from: '/guides/migration/', - to: '/product/accounts/migration/', - }, - { - from: '/product/sentry-basics/guides/migration/', - to: '/product/accounts/migration/', - }, - { - from: '/product/sentry-basics/migration/', - to: '/product/accounts/migration/', - }, - { - from: '/product/dashboards/customize-dashboards/', - to: '/product/dashboards/custom-dashboards/', - }, - { - from: '/workflow/visibility/', - to: '/product/dashboards/', - }, - { - from: '/workflow/dashboards/', - to: '/product/dashboards/', - }, - { - from: '/profiling/', - to: '/product/explore/profiling/', - }, - { - from: '/profiling/performance-overhead/', - to: '/product/explore/profiling/performance-overhead/', - }, - { - from: '/profiling/setup/', - to: '/product/explore/profiling/getting-started/', - }, - { - from: '/profiling/getting-started/', - to: '/product/explore/profiling/getting-started/', - }, - { - from: '/profiling/mobile-app-profiling/', - to: '/product/explore/profiling/mobile-app-profiling/', - }, - { - from: '/profiling/mobile-app-profiling/metrics/', - to: '/product/explore/profiling/mobile-app-profiling/metrics/', - }, - - { - from: '/data-management/rollups/', - to: '/concepts/data-management/event-grouping/', - }, - { - from: '/learn/rollups/', - to: '/concepts/data-management/event-grouping/', - }, - { - from: '/data-management/event-grouping/', - to: '/concepts/data-management/event-grouping/', - }, - { - from: '/product/data-management-settings/event-grouping/grouping-breakdown/', - to: '/concepts/data-management/event-grouping/', - }, - { - from: '/platforms/unity/data-management/event-grouping/', - to: '/concepts/data-management/event-grouping/', - }, - { - from: '/platforms/php/data-management/event-grouping/stack-trace-rules/', - to: '/concepts/data-management/event-grouping/', - }, - { - from: '/product/data-management-settings/event-grouping/server-side-fingerprinting/', - to: '/concepts/data-management/event-grouping/fingerprint-rules/', - }, - { - from: '/learn/data-forwarding/', - to: '/concepts/data-management/data-forwarding/', - }, - { - from: '/product/data-forwarding/', - to: '/concepts/data-management/data-forwarding/', - }, - { - from: '/data-management-settings/attachment-datascrubbing/', - to: '/security-legal-pii/scrubbing/attachment-scrubbing/', - }, - { - from: '/product/data-management-settings/advanced-datascrubbing/', - to: '/security-legal-pii/scrubbing/', - }, - { - from: '/data-management/advanced-datascrubbing/', - to: '/security-legal-pii/scrubbing/advanced-datascrubbing/', - }, - { - from: '/data-management-settings/advanced-datascrubbing/', - to: '/security-legal-pii/scrubbing/advanced-datascrubbing/', - }, - { - from: '/data-management-settings/server-side-scrubbing/', - to: '/security-legal-pii/scrubbing/server-side-scrubbing/', - }, - { - from: '/data-management-settings/event-pii-fields/', - to: '/security-legal-pii/scrubbing/server-side-scrubbing/event-pii-fields/', - }, - { - from: '/product/discover/', - to: '/product/explore/discover-queries/', - }, - { - from: '/workflow/discover/', - to: '/product/explore/discover-queries/', - }, - { - from: '/workflow/discover2/', - to: '/product/explore/discover-queries/', - }, - { - from: '/performance-monitoring/discover/', - to: '/product/explore/discover-queries/', - }, - { - from: '/performance/discover/', - to: '/product/explore/discover-queries/', - }, - { - from: '/guides/discover/', - to: '/product/explore/discover-queries/uncover-trends/', - }, - { - from: '/product/sentry-basics/guides/discover/', - to: '/product/explore/discover-queries/uncover-trends/', - }, - { - from: '/workflow/discover2/query-builder/', - to: '/product/explore/discover-queries/query-builder/', - }, - { - from: '/performance-monitoring/discover-queries/query-builder/', - to: '/product/explore/discover-queries/query-builder/', - }, - { - from: '/product/crons/alerts/', - to: '/product/crons/getting-started/', - }, - { - from: '/meta/relay/best-practices/', - to: '/product/relay/operating-guidelines/', - }, - { - from: '/product/relay/best-practices/', - to: '/product/relay/operating-guidelines/', - }, - { - from: '/meta/relay/', - to: '/product/relay/', - }, - { - from: '/product/security/relay/', - to: '/product/relay/', - }, - { - from: '/meta/relay/getting-started/', - to: '/product/relay/getting-started/', - }, - { - from: '/meta/relay/options/', - to: '/product/relay/options/', - }, - { - from: '/meta/relay/metrics/', - to: '/product/relay/monitoring/collected-metrics/', - }, - { - from: '/meta/relay/logging/', - to: '/product/relay/monitoring/', - }, - { - from: '/meta/relay/modes/', - to: '/product/relay/modes/', - }, - { - from: '/product/performance/', - to: '/product/sentry-basics/performance-monitoring/', - }, - { - from: '/product/performance/getting-started/', - to: '/product/insights/getting-started/', - }, - { - from: '/product/performance/filters-display/', - to: '/product/insights/overview/filters-display/', - }, - { - from: '/product/performance/filters-display/widgets/', - to: '/product/insights/overview/filters-display/widgets/', - }, - { - from: '/product/performance/trends/', - to: '/product/insights/overview/trends/', - }, - { - from: '/product/performance/transaction-summary/', - to: '/product/insights/overview/transaction-summary/', - }, - { - from: '/product/performance/metrics/', - to: '/product/insights/overview/metrics/', - }, - { - from: '/product/performance/performance-overhead/', - to: '/product/insights/performance-overhead/', - }, - { - from: '/product/performance/database/', - to: '/product/insights/backend/queries/', - }, - { - from: '/product/performance/query-insights/', - to: '/product/insights/backend/queries/', - }, - { - from: '/product/sentry-basics/metrics/', - to: '/product/insights/retention-priorities/', - }, - { - from: '/product/sentry-basics/sampling/', - to: '/product/insights/retention-priorities/', - }, - { - from: '/product/data-management-settings/server-side-sampling/', - to: '/product/insights/retention-priorities/', - }, - { - from: '/product/data-management-settings/server-side-sampling/getting-started/', - to: '/product/insights/retention-priorities/', - }, - { - from: '/product/data-management-settings/server-side-sampling/current-limitations/', - to: '/product/insights/retention-priorities/', - }, - { - from: '/product/data-management-settings/server-side-sampling/sampling-configurations/', - to: '/product/insights/retention-priorities/', - }, - { - from: '/product/data-management-settings/dynamic-sampling/current-limitations/', - to: '/product/insights/retention-priorities/', - }, - { - from: '/product/data-management-settings/dynamic-sampling/sampling-configurations/', - to: '/product/insights/retention-priorities/', - }, - { - from: '/product/performance/performance-at-scale/', - to: '/product/insights/retention-priorities/', - }, - { - from: '/product/performance/performance-at-scale/getting-started/', - to: '/product/insights/retention-priorities/', - }, - { - from: '/product/performance/performance-at-scale/benefits-performance-at-scale/', - to: '/product/insights/retention-priorities/', - }, - { - from: '/performance/', - to: '/product/insights/', - }, - { - from: '/performance/display/', - to: '/product/insights/', - }, - { - from: '/performance-monitoring/performance/', - to: '/product/insights/', - }, - { - from: '/performance/performance-tab/', - to: '/product/insights/overview', - }, - { - from: '/performance/performance-homepage/', - to: '/product/insights/', - }, - { - from: '/performance-monitoring/setup/', - to: '/product/insights/getting-started/', - }, - { - from: '/performance-monitoring/getting-started/', - to: '/product/insights/getting-started/', - }, - { - from: '/performance-monitoring/performance/metrics/', - to: '/product/insights/overview/metrics/', - }, - { - from: '/product/performance/display/', - to: '/product/insights/overview/filters-display/', - }, - { - from: '/product/issues/issue-owners/', - to: '/product/issues/ownership-rules/', - }, - { - from: '/product/issue-owners/', - to: '/product/issues/ownership-rules/', - }, - { - from: '/workflow/issue-owners/', - to: '/product/issues/ownership-rules/', - }, - { - from: '/learn/issue-owners/', - to: '/product/issues/ownership-rules/', - }, - { - from: '/features/owners/', - to: '/product/issues/ownership-rules/', - }, - { - from: '/product/sentry-basics/issue-owners/', - to: '/product/issues/ownership-rules/', - }, - { - from: '/product/releases/suspect-commits/', - to: '/product/issues/suspect-commits/', - }, - { - from: '/product/accounts/early-adopter-features/issue-archiving/', - to: '/product/issues/states-triage/', - }, - { - from: '/product/issues/performance-issues/regex-decoding-main-thread/', - to: '/product/issues/issue-details/performance-issues/regex-main-thread/', - }, - { - from: '/product/issues/performance-issues/consecutive-http/', - to: '/product/issues/issue-details/performance-issues/consecutive-http/', - }, - { - from: '/product/issues/performance-issues/slow-db-queries/', - to: '/product/issues/issue-details/performance-issues/slow-db-queries/', - }, - { - from: '/product/issues/performance-issues/image-decoding-main-thread/', - to: '/product/issues/issue-details/performance-issues/image-decoding-main-thread/', - }, - { - from: '/product/issues/performance-issues/', - to: '/product/issues/issue-details/performance-issues/', - }, - { - from: '/product/issues/issue-details/performance-issues/main-thread-io/', - to: '/product/issues/issue-details/performance-issues/', - }, - { - from: '/product/issues/performance-issues/n-one-queries/', - to: '/product/issues/issue-details/performance-issues/n-one-queries/', - }, - { - from: '/product/issues/performance-issues/uncompressed-asset/', - to: '/product/issues/issue-details/performance-issues/uncompressed-asset/', - }, - { - from: '/product/issues/performance-issues/consecutive-db-queries/', - to: '/product/issues/issue-details/performance-issues/consecutive-db-queries/', - }, - { - from: '/product/issues/performance-issues/json-decoding-main-thread/', - to: '/product/issues/issue-details/performance-issues/json-decoding-main-thread/', - }, - { - from: '/product/issues/performance-issues/http-overhead/', - to: '/product/issues/issue-details/performance-issues/http-overhead/', - }, - { - from: '/product/issues/performance-issues/large-render-blocking-asset/', - to: '/product/issues/issue-details/performance-issues/large-render-blocking-asset/', - }, - { - from: '/product/issues/performance-issues/frame-drop/', - to: '/product/issues/issue-details/performance-issues/frame-drop/', - }, - { - from: '/product/issues/performance-issues/large-http-payload/', - to: '/product/issues/issue-details/performance-issues/large-http-payload/', - }, - - { - from: '/learn/breadcrumbs/', - to: '/product/issues/issue-details/breadcrumbs/', - }, - { - from: '/product/issues/issue-details/suggested-fix/', - to: '/product/issues/issue-details/sentry-seer/', - }, - { - from: '/product/issues/issue-details/ai-suggested-solution/', - to: '/product/issues/issue-details/sentry-seer/', - }, - { - from: '/product/issues/issue-details/sentry-ai/', - to: '/product/issues/issue-details/sentry-seer/', - }, - { - from: '/guides/grouping-and-fingerprints/', - to: '/product/issues/grouping-and-fingerprints/', - }, - { - from: '/product/sentry-basics/guides/grouping-and-fingerprints/', - to: '/product/issues/grouping-and-fingerprints/', - }, - { - from: '/product/sentry-basics/grouping-and-fingerprints/', - to: '/product/issues/grouping-and-fingerprints/', - }, - { - from: '/product/accounts/quotas/org-stats/', - to: '/product/stats/', - }, - { - from: '/workflow/search/', - to: '/concepts/search/', - }, - { - from: '/product/search/', - to: '/concepts/search/', - }, - { - from: '/learn/search/', - to: '/concepts/search/', - }, - { - from: '/product/sentry-basics/search/', - to: '/concepts/search/', - }, - { - from: '/product/sentry-basics/search/saved-searches/', - to: '/concepts/search/saved-searches/', - }, - { - from: '/product/sentry-basics/search/searchable-properties/user-feedback/', - to: '/concepts/search/searchable-properties/user-feedback/', - }, - { - from: '/product/sentry-basics/search/searchable-properties/events/', - to: '/concepts/search/searchable-properties/events/', - }, - { - from: '/product/sentry-basics/search/searchable-properties/issues/', - to: '/concepts/search/searchable-properties/issues/', - }, - { - from: '/product/sentry-basics/search/searchable-properties/', - to: '/concepts/search/searchable-properties/', - }, - { - from: '/product/sentry-basics/search/searchable-properties/releases/', - to: '/concepts/search/searchable-properties/releases/', - }, - { - from: '/product/sentry-basics/search/searchable-properties/spans/', - to: '/concepts/search/searchable-properties/spans/', - }, - { - from: '/product/sentry-basics/search/searchable-properties/session-replay/', - to: '/concepts/search/searchable-properties/session-replay/', - }, - { - from: '/platforms/javascript/configuration/micro-frontend-support/', - to: '/platforms/javascript/best-practices/micro-frontends/', - }, - { - from: '/platforms/javascript/configuration/sentry-testkit/', - to: '/platforms/javascript/best-practices/sentry-testkit/', - }, - { - from: '/platforms/javascript/configuration/webworkers/', - to: '/platforms/javascript/best-practices/web-workers/', - }, - { - from: '/support/', - to: 'https://sentry.zendesk.com/hc/en-us/', - }, - { - from: '/clients/python/', - to: '/platforms/python/legacy-sdk/', - }, - { - from: '/platforms/javascript/config/sourcemaps/', - to: '/platforms/javascript/sourcemaps/', - }, - { - from: '/platforms/java/config/', - to: '/platforms/java/configuration/', - }, - { - from: '/platforms/native/attachments/', - to: '/platforms/native/enriching-error-data/attachments/', - }, - { - from: '/platforms/python/configuration/integrations/', - to: '/platforms/python/integrations/', - }, - { - from: '/platforms/python/redis/', - to: '/platforms/python/integrations/redis/', - }, - { - from: '/platforms/python/sqlalchemy/', - to: '/platforms/python/integrations/sqlalchemy/', - }, - { - from: '/platforms/python/pure_eval/', - to: '/platforms/python/integrations/pure_eval/', - }, - { - from: '/platforms/python/gnu_backtrace/', - to: '/platforms/python/integrations/gnu_backtrace/', - }, - { - from: '/learn/context/', - to: '/platform-redirect/?next=/enriching-events/context/', - }, - { - from: '/clients/java/config/', - to: '/platforms/java/configuration/', - }, - { - from: '/clientdev/interfaces/http/', - to: 'https://develop.sentry.dev/sdk/data-model/event-payloads/request', - }, - { - from: '/clients/csharp/', - to: '/platforms/dotnet/legacy-sdk/', - }, - { - from: '/clients/go/', - to: '/platforms/go/legacy-sdk/', - }, - { - from: '/clients/node/', - to: '/platforms/node/legacy-sdk/', - }, - { - from: '/clients/javascript/', - to: '/platforms/javascript/legacy-sdk/', - }, - { - from: '/clients/ruby/', - to: '/platforms/ruby/', - }, - { - from: '/clients/java/integrations/', - to: '/platforms/java/', - }, - { - from: '/clients/java/modules/android/', - to: '/platforms/android', - }, - { - from: '/clients/javascript/integrations/angular2/', - to: '/platforms/javascript/guides/angular/', - }, - { - from: '/clients/javascript/integrations/angularjs/', - to: '/platforms/javascript/guides/angular/', - }, - { - from: '/platforms/javascript/angular/', - to: '/platforms/javascript/guides/angular/', - }, - { - from: '/node/event-processors/', - to: '/platforms/node/enriching-events/event-processors/', - }, - { - from: '/platforms/node/guides/connect/event-processors/', - to: '/platforms/node/enriching-events/event-processors/', - }, - { - from: '/platforms/javascript/sourcemaps/uploading/multiple-origins/', - to: '/platforms/javascript/sourcemaps/troubleshooting_js/#multiple-origins', - }, - { - from: '/platforms/python/guides/celery/hints/', - to: '/platforms/python/integrations/celery/', - }, - { - from: '/platforms/python/guides/chalice/integrations/', - to: '/platforms/python/integrations/chalice/', - }, - { - from: '/platforms/unrealengine/', - to: '/platforms/unreal/', - }, - { - from: '/platforms/minidump/crashpad/', - to: '/platforms/native/guides/crashpad/', - }, - { - from: '/platforms/minidump/breakpad/', - to: '/platforms/native/guides/breakpad/', - }, - { - from: '/platforms/rust/usage/sdk-fingerprinting/', - to: '/product/data-management-settings/event-grouping/fingerprint-rules/', - }, - { - from: '/platforms/javascript/guides/angular/lazy-load-sentry/', - to: '/platforms/javascript/guides/angular/', - }, - { - from: '/platforms/java/guides/spring/data-management/data-forwarding/', - to: '/platforms/java/guides/spring/data-management/', - }, - { - from: '/platforms/android/usage/advanced-usage/', - to: '/platforms/android/usage/', - }, - { - from: '/platforms/javascript/guides/react/performance/included-instrumentation/', - to: '/platforms/javascript/guides/react/performance/instrumentation/', - }, - { - from: '/platforms/php/guides/symfony/data-management/data-forwarding/', - to: '/platforms/php/guides/symfony/data-management/', - }, - { - from: '/platforms/php/guides/laravel/configuration/transports/', - to: '/platforms/php/guides/laravel/configuration/laravel-options/', - }, - { - from: '/platforms/go/data-management/event-grouping/fingerprint-rules/', - to: '/platforms/go/data-management/', - }, - { - from: '/platforms/elixir/enriching-events/scopes/', - to: '/platforms/elixir/enriching-events/', - }, - { - from: '/platforms/android/performance/custom-instrumentation/', - to: '/platforms/android/performance/', - }, - { - from: '/platforms/elixir/data-management/event-grouping/', - to: '/platforms/elixir/data-management/', - }, - { - from: '/platforms/elixir/configuration/draining/', - to: '/platforms/elixir/configuration/', - }, - { - from: '/clients/ruby/integrations/rails/', - to: '/platforms/ruby/guides/rails/', - }, - { - from: '/platforms/java/configuration/integrations/', - to: '/platforms/java/integrations/', - }, - { - from: '/platforms/apple/configuration/integrations/', - to: '/platforms/apple/integrations/', - }, - { - from: '/platforms/javascript/guides/cordova/integrations/custom/', - to: '/platforms/javascript/guides/cordova/', - }, - { - from: '/platforms/javascript/guides/cordova/config/basics/', - to: '/platforms/javascript/guides/cordova/configuration/', - }, - { - from: '/platforms/javascript/guides/electron/data-management/event-grouping/grouping-enhancements/', - to: '/platforms/javascript/guides/electron/data-management/', - }, - { - from: '/platforms/javascript/guides/ember/configuration/other-versions/ember2/', - to: '/platforms/javascript/guides/ember/configuration/', - }, - { - from: '/platforms/javascript/guides/ember/configuration/other-versions/', - to: '/platforms/javascript/guides/ember/configuration/', - }, - { - from: '/platforms/javascript/guides/angular/components/', - to: '/platforms/javascript/guides/angular/', - }, - { - from: '/platforms/javascript/legacy-sdk/integrations/', - to: '/platforms/javascript/legacy-sdk/', - }, - { - from: '/platforms/javascript/guides/nextjs/manual/', - to: '/platforms/javascript/guides/nextjs/', - }, - { - from: '/platforms/javascript/guides/react/components/errorboundary/', - to: '/platforms/javascript/guides/react/', - }, - { - from: '/platforms/javascript/guides/react/components/profiler/', - to: '/platforms/javascript/guides/react/', - }, - { - from: '/platforms/javascript/guides/remix/install/cdn/', - to: '/platforms/javascript/guides/remix/#install', - }, - { - from: '/platforms/javascript/performance/capturing/group-transactions/', - to: '/platforms/javascript/performance/', - }, - { - from: '/platforms/javascript/sourcemaps/tools/', - to: '/platforms/javascript/sourcemaps/', - }, - { - from: '/product/accounts/pricing/', - to: '/pricing/', - }, - { - from: '/accounts/pricing/', - to: '/pricing/', - }, - { - from: '/product/account/pricing/', - to: '/pricing/', - }, - { - from: '/platforms/dotnet/compatibility/', - to: '/platforms/dotnet/', - }, - { - from: '/product/session-replay/protecting-user-privacy/', - to: '/security-legal-pii/scrubbing/protecting-user-privacy/', - }, - { - from: '/platforms/javascript/guides/react/features/component-tracking/', - to: '/platforms/javascript/guides/react/features/component-names/', - }, - { - from: '/product/accounts/early-adopter-features/', - to: '/organization/early-adopter-features/', - }, - { - from: '/product/accounts/choose-your-data-center/', - to: '/organization/data-storage-location/', - }, - { - from: '/product/accounts/membership/', - to: '/organization/membership/', - }, - { - from: '/product/accounts/sso/', - to: '/organization/authentication/sso/', - }, - { - from: '/product/accounts/sso/azure-sso/', - to: '/organization/authentication/sso/azure-sso/', - }, - { - from: '/product/accounts/sso/okta-sso/', - to: '/organization/authentication/sso/okta-sso/', - }, - { - from: '/product/accounts/sso/okta-sso/okta-scim/', - to: '/organization/authentication/sso/okta-sso/okta-scim/', - }, - { - from: '/product/accounts/sso/ping-sso/', - to: '/organization/authentication/sso/ping-sso/', - }, - { - from: '/product/accounts/sso/saml2/', - to: '/organization/authentication/sso/saml2/', - }, - { - from: '/product/accounts/getting-started/', - to: '/organization/getting-started/', - }, - { - from: '/product/accounts/require-2fa/', - to: '/organization/authentication/two-factor-authentication/', - }, - { - from: '/product/accounts/quotas/', - to: '/pricing/quotas/', - }, - { - from: '/product/accounts/quotas/spike-protection/', - to: '/pricing/quotas/spike-protection/', - }, - { - from: '/product/accounts/quotas/spend-allocation/', - to: '/pricing/quotas/spend-allocation/', - }, - { - from: '/product/accounts/quotas/manage-event-stream-guide/', - to: '/pricing/quotas/manage-event-stream-guide/', - }, - { - from: '/product/accounts/quotas/manage-transaction-quota/', - to: '/pricing/quotas/manage-transaction-quota/', - }, - { - from: '/product/accounts/quotas/manage-replay-quota/', - to: '/pricing/quotas/manage-replay-quota/', - }, - { - from: '/product/accounts/quotas/manage-attachments-quota/', - to: '/pricing/quotas/manage-attachments-quota/', - }, - { - from: '/product/accounts/quotas/manage-cron-monitors/', - to: '/pricing/quotas/manage-cron-monitors/', - }, - { - from: '/product/accounts/auth-tokens/', - to: '/account/auth-tokens/', - }, - { - from: '/product/accounts/user-settings/', - to: '/account/user-settings/', - }, - { - from: '/product/accounts/', - to: '/account/', - }, - { - from: '/account/getting-started/', - to: '/organization/getting-started/', - }, - { - from: '/account/membership/', - to: '/organization/membership/', - }, - { - from: '/account/early-adopter-features/', - to: '/organization/early-adopter-features/', - }, - { - from: '/account/quotas/', - to: '/pricing/quotas/', - }, - { - from: '/accounts/quotas/', - to: '/pricing/quotas/', - }, - { - from: '/organization/quotas/', - to: '/pricing/quotas/', - }, - { - from: '/account/sso/', - to: '/organization/authentication/sso/', - }, - { - from: '/product/ai-monitoring/', - to: '/product/insights/ai/agents/', - }, - { - from: '/product/insights/llm-monitoring/', - to: '/product/insights/ai/agents/', - }, - { - from: '/product/insights/llm-monitoring/getting-started/', - to: '/product/insights/ai/agents/getting-started/', - }, - { - from: '/product/insights/llm-monitoring/getting-started/the-dashboard/', - to: '/product/insights/ai/agents/getting-started/the-dashboard/', - }, - { - from: '/product/metrics/', - to: '/product/explore/metrics/', - }, - { - from: '/product/profiling/', - to: '/product/explore/profiling/', - }, - { - from: '/product/discover-queries/', - to: '/product/explore/discover-queries/', - }, - { - from: '/product/session-replay/', - to: '/product/explore/session-replay/', - }, - { - from: '/enriching-error-data/advanced-datascrubbing/', - to: '/concepts/data-management/advanced-datascrubbing/', - }, - { - from: '/data-management/advanced-datascrubbing/', - to: '/concepts/data-management/advanced-datascrubbing/', - }, - { - from: '/platforms/javascript/guides/react/features/component-tracking/', - to: '/platforms/javascript/guides/react/features/component-names/', - }, - { - from: '/platforms/rust/usage/sdk-fingerprinting/', - to: '/concepts/data-management/event-grouping/fingerprint-rules/', - }, - { - from: '/platforms/javascript/guides/angular/lazy-load-sentry/', - to: '/platforms/javascript/guides/angular/', - }, - { - from: '/platforms/java/guides/spring/data-management/data-forwarding/', - to: '/platforms/java/guides/spring/data-management/', - }, - { - from: '/support/', - to: 'https://sentry.zendesk.com/hc/en-us/', - }, - { - from: '/product/security-policy-reporting/', - to: '/security-legal-pii/security/security-policy-reporting/', - }, - { - from: '/product/session-replay/protecting-user-privacy/', - to: '/security-legal-pii/scrubbing/protecting-user-privacy/', - }, - { - from: '/product/data-management-settings/restrict-display/', - to: '/security-legal-pii/scrubbing/restrict-display/', - }, - { - from: '/product/performance/requests/', - to: '/product/insights/requests/', - }, - { - from: '/product/performance/queries/', - to: '/product/insights/queries/', - }, - { - from: '/product/performance/resources/', - to: '/product/insights/assets/', - }, - { - from: '/product/performance/assets/', - to: '/product/insights/assets/', - }, - { - from: '/product/performance/mobile-vitals/', - to: '/product/insights/mobile-vitals/', - }, - { - from: '/product/performance/mobile-vitals/screen-loads/', - to: '/product/insights/mobile-vitals/screen-loads/', - }, - { - from: '/product/performance/mobile-vitals/app-starts/', - to: '/product/insights/mobile-vitals/app-starts/', - }, - { - from: '/product/performance/web-vitals/', - to: '/product/insights/web-vitals/', - }, - { - from: '/product/performance/web-vitals/web-vitals-concepts/', - to: '/product/insights/web-vitals/web-vitals-concepts/', - }, - { - from: '/product/performance/caches/', - to: '/product/insights/caches/', - }, - { - from: '/product/performance/caches/cache-page/', - to: '/product/insights/caches/cache-page/', - }, - { - from: '/product/performance/queue-monitoring/', - to: '/product/insights/queue-monitoring/', - }, - { - from: '/product/performance/queue-monitoring/queues-page/', - to: '/product/insights/queue-monitoring/queues-page/', - }, - { - from: '/product/explore/session-replay/protecting-user-privacy/', - to: '/security-legal-pii/scrubbing/protecting-user-privacy/', - }, - { - from: '/account/choose-your-data-center/', - to: '/organization/data-storage-location/', - }, - { - from: '/account/early-adopter/', - to: '/organization/early-adopter-features/', - }, - { - from: '/account/quotas/spike-protection/', - to: '/pricing/quotas/spike-protection/', - }, - { - from: '/_platforms/', - to: '/platforms', - }, - { - from: '/accounts/require-2fa/', - to: '/organization/authentication/two-factor-authentication/', - }, - { - from: '/platforms/go/guides/fiber/user-feedback/configuration/', - to: '/platforms/go/user-feedback/', - }, - { - from: '/platforms/javascript/guides/', - to: '/platforms/javascript/', - }, - { - from: '/platforms/native/crashpad/', - to: '/platforms/native/guides/crashpad/', - }, - { - from: '/platforms/python/legacy-sdk/integrations/pylons/', - to: '/platforms/python/legacy-sdk/integrations/#pylons', - }, - { - from: '/concepts/data-management/event-grouping/grouping-breakdown/', - to: '/concepts/data-management/event-grouping/', - }, - { - from: '/product/explore/session-replay/performance-overhead/', - to: '/product/explore/session-replay/web/performance-overhead/', - }, - { - from: '/organization/integrations/project-mgmt/jira/', - to: '/organization/integrations/issue-tracking/jira/', - }, - { - from: '/organization/integrations/source-code-/', - to: '/organization/integrations/source-code-mgmt/', - }, - { - from: '/product/explore/session-replay/getting-started/', - to: '/product/explore/session-replay/', - }, - { - from: '/product/explore/session-replay/web/getting-started/', - to: '/product/explore/session-replay/web/', - }, - { - from: '/product/explore/session-replay/web/replay-page-and-filters/', - to: '/product/explore/session-replay/replay-page-and-filters/', - }, - { - from: '/product/explore/session-replay/web/replay-details/', - to: '/product/explore/session-replay/replay-details/', - }, - { - from: '/product/explore/session-replay/hydration-errors/', - to: '/product/issues/issue-details/replay-issues/hydration-error/', - }, - { - from: '/product/explore/session-replay/rage-dead-clicks/', - to: '/product/issues/issue-details/replay-issues/rage-clicks/', - }, - { - from: '/product/explore/session-replay/privacy/', - to: '/security-legal-pii/scrubbing/protecting-user-privacy/', - }, - { - from: '/product/teams/roles/', - to: '/organization/membership/#team-level-roles', - }, - { - from: '/enriching-error-data/additional-data/', - to: '/concepts/key-terms/enrich-data/', - }, - { - from: '/performance/instrumentation/automatic-instrumentation/', - to: '/tracing/instrumentation/automatic-instrumentation', - }, - { - from: '/concepts/key-terms/key-terms/tracing/trace-view/#operations-breakdown/', - to: '/product/insights/', - }, - { - from: '/platforms/javascript/guides/aws-lambda/container-image/', - to: '/platforms/javascript/guides/aws-lambda/install/', - }, - { - from: '/platforms/javascript/guides/aws-lambda/layer/', - to: '/platforms/javascript/guides/aws-lambda/install/', - }, - { - from: '/api/projects/post-project-service-hooks/', - to: '/api/projects/register-a-new-service-hook/', - }, - { - from: '/api/organizations/list-your-organizations/', - to: '/api/users/list-your-organizations/', - }, - { - from: '/clients/cocoa/', - to: '/platforms/apple/', - }, - { - from: '/clients/react-native/', - to: 'platforms/react-native/', - }, - { - from: '/learn/scopes/?platform=rust/', - to: '/platforms/rust/enriching-events/scopes/', - }, - { - from: '/platforms/android/android-video/', - to: '/platforms/android/', - }, - { - from: '/platforms/android/tracing/included-instrumentation/', - to: '/platforms/android/tracing/instrumentation/automatic-instrumentation', - }, - { - from: '/platforms/javascript/guides/cordova/tracing/trace-propagation/', - to: '/platforms/javascript/guides/cordova/tracing/instrumentation/custom-instrumentation/', - }, - { - from: '/platforms/javascript/pluggable-integrations/', - to: '/platforms/javascript/configuration/integrations/#lazy-loading-integrations', - }, - { - from: '/platforms/react-native/tracing/included-instrumentation/', - to: '/platforms/react-native/tracing/instrumentation/automatic-instrumentation/', - }, - { - from: '/platforms/rust/env_logger/index.html/', - to: '/platforms/rust/configuration/environments/', - }, - { - from: '/clients/cordova/', - to: '/platforms/javascript/guides/cordova/', - }, - { - from: '/organization/integrations/incidentio/', - to: '/organization/integrations/issue-tracking/incidentio/', - }, - { - from: '/contributing/onboarding-wizard/', - to: '/contributing/', - }, - { - from: '/security-legal-pii/security/security-policy-reporting/', - to: '/platform-redirect/?next=/security-policy-reporting/', - }, - /* Uptime Monitoring */ - { - from: '/product/alerts/uptime-monitoring/', - to: '/product/uptime-monitoring/', - }, - { - from: '/product/alerts/uptime-monitoring/automatic-detection/', - to: '/product/uptime-monitoring/automatic-detection/', - }, - { - from: '/product/alerts/uptime-monitoring/uptime-tracing/', - to: '/product/uptime-monitoring/uptime-tracing/', - }, - { - from: '/product/alerts/uptime-monitoring/troubleshooting/', - to: '/product/uptime-monitoring/troubleshooting/', - }, -]; - -const DEVELOPER_DOCS_REDIRECTS: Redirect[] = [ - { - from: '/', - to: '/getting-started/', - }, - { - from: '/docs-components/', - to: '/development/docs/', - }, - { - from: '/docs/', - to: '/development/docs/', - }, - { - from: '/inclusion/', - to: '/development/inclusive-language/', - }, - { - from: '/translations/', - to: '/development/translations/', - }, - { - from: '/environment/', - to: '/development/environment/', - }, - { - from: '/environment/pycharm/', - to: '/development/environment/pycharm/', - }, - { - from: '/environment/u2f/', - to: '/development/environment/u2f/', - }, - { - from: '/testing/', - to: '/development/testing/', - }, - { - from: '/philosophy/', - to: '/development/philosophy/', - }, - { - from: '/commit-messages/', - to: '/development/commit-messages/', - }, - { - from: '/code-review/', - to: '/development/code-review/', - }, - { - from: '/workflow/', - to: '/development/workflow/', - }, - { - from: '/continuous-integration/', - to: '/development/continuous-integration/', - }, - { - from: '/python-dependencies/', - to: '/development/python-dependencies/', - }, - { - from: '/rust/', - to: '/development/rust/', - }, - { - from: '/database-migrations/', - to: '/development/database-migrations/', - }, - { - from: '/testing/', - to: '/development/testing/', - }, - { - from: '/analytics/', - to: '/development/analytics/', - }, - { - from: '/architecture/', - to: '/application-architecture/', - }, - { - from: '/sentry-vs-getsentry/', - to: '/application/sentry-vs-getsentry/', - }, - { - from: '/config/', - to: '/application/config/', - }, - { - from: '/issue-platform/', - to: '/application/issue-platform/', - }, - { - from: '/issue-platform-detectors/', - to: '/application/issue-platform-detectors/', - }, - { - from: '/feature-flags/', - to: '/application/feature-flags/', - }, - { - from: '/feature-flags/flagpole/', - to: '/application/feature-flags/flagpole/', - }, - { - from: '/ab-testing/', - to: '/application/ab-testing/', - }, - { - from: '/options/', - to: '/application/options/', - }, - { - from: '/serializers/', - to: '/application/serializers/', - }, - { - from: '/grouping/', - to: '/application/grouping/', - }, - { - from: '/pii/', - to: '/application/pii/', - }, - { - from: '/pii/types/', - to: '/application/pii/types/', - }, - { - from: '/pii/methods/', - to: '/application/pii/methods/', - }, - { - from: '/pii/selectors/', - to: '/application/pii/selectors/', - }, - { - from: '/transaction-clustering/', - to: '/application/transaction-clustering/', - }, - { - from: '/dynamic-sampling/', - to: '/application/dynamic-sampling/', - }, - { - from: '/dynamic-sampling/architecture/', - to: '/application/dynamic-sampling/architecture/', - }, - { - from: '/dynamic-sampling/fidelity-and-biases/', - to: '/application/dynamic-sampling/fidelity-and-biases/', - }, - { - from: '/dynamic-sampling/the-big-picture/', - to: '/application/dynamic-sampling/the-big-picture/', - }, - { - from: '/feedback-architecture/', - to: '/application/feedback-architecture/', - }, - { - from: '/options/', - to: '/backend/options/', - }, - { - from: '/sdk/features/data-handling/', - to: '/sdk/expected-features/data-handling/', - }, - { - from: '/sdk/craft-quick-start/', - to: '/sdk/processes/releases/', - }, - { - from: '/sdk/check-ins/', - to: '/sdk/telemetry/check-ins/', - }, - { - from: '/sdk/profiles/', - to: '/sdk/telemetry/profiles/', - }, - { - from: '/sdk/distributed-tracing/', - to: '/sdk/telemetry/traces/distributed-tracing/', - }, - // New Sidebar structure - { - from: '/development/', - to: '/development-infrastructure/', - }, - { - from: '/development/environment/', - to: '/development-infrastructure/environment/', - }, - { - from: '/development/environment/ports/', - to: '/development-infrastructure/environment/ports/', - }, - { - from: '/development/environment/u2f/', - to: '/development-infrastructure/environment/u2f/', - }, - { - from: '/development/environment/pycharm/', - to: '/development-infrastructure/environment/pycharm/', - }, - { - from: '/development/commit-messages/', - to: '/engineering-practices/commit-messages/', - }, - { - from: '/development/code-review/', - to: '/engineering-practices/code-review/', - }, - { - from: '/development/documentation/', - to: '/engineering-practices/documentation/', - }, - { - from: '/development/workflow/', - to: '/development-infrastructure/workflow/', - }, - { - from: '/development/testing/', - to: '/development-infrastructure/testing/', - }, - { - from: '/development/continuous-integration/', - to: '/development-infrastructure/continuous-integration/', - }, - { - from: '/development/ngrok/', - to: '/development-infrastructure/ngrok/', - }, - { - from: '/development/devservices/', - to: '/development-infrastructure/devservices/', - }, - { - from: '/development/rust/', - to: '/engineering-practices/rust/', - }, - { - from: '/development/analytics/', - to: '/development-infrastructure/analytics/', - }, - { - from: '/application/', - to: '/application-architecture/', - }, - { - from: '/application/architecture/', - to: '/application-architecture/overview/', - }, - { - from: '/application/dynamic-sampling/', - to: '/application-architecture/dynamic-sampling/', - }, - { - from: '/application/dynamic-sampling/the-big-picture/', - to: '/application-architecture/dynamic-sampling/the-big-picture/', - }, - { - from: '/application/dynamic-sampling/fidelity-and-biases/', - to: '/application-architecture/dynamic-sampling/fidelity-and-biases/', - }, - { - from: '/application/dynamic-sampling/architecture/', - to: '/application-architecture/dynamic-sampling/architecture/', - }, - { - from: '/application/dynamic-sampling/outcomes/', - to: '/application-architecture/dynamic-sampling/outcomes/', - }, - { - from: '/application/feedback-architecture/', - to: '/application-architecture/feedback-architecture/', - }, - { - from: '/application/control-silo/', - to: '/application-architecture/multi-region-deployment/control-silo/', - }, - { - from: '/application/cross-region-replication/', - to: '/application-architecture/multi-region-deployment/cross-region-replication/', - }, - { - from: '/application/cross-region-rpc/', - to: '/application-architecture/multi-region-deployment/cross-region-rpc/', - }, - { - from: '/application/config/', - to: '/application-architecture/config/', - }, - { - from: '/application-architecture/config/', - to: '/backend/config/', - }, - { - from: '/application/sentry-vs-getsentry/', - to: '/application-architecture/sentry-vs-getsentry/', - }, - - { - from: '/frontend/development-server/', - to: '/development-infrastructure/frontend-development-server/', - }, - { - from: '/api-server/', - to: '/backend/', - }, - { - from: '/api-server/api/', - to: '/backend/api/', - }, - { - from: '/api-server/api/basics/', - to: '/backend/api/basics/', - }, - { - from: '/api-server/api/design/', - to: '/backend/api/design/', - }, - { - from: '/api-server/api/concepts/', - to: '/backend/api/concepts/', - }, - { - from: '/api-server/api/public/', - to: '/backend/api/public/', - }, - { - from: '/api-server/api/checklist/', - to: '/backend/api/checklist/', - }, - { - from: '/api-server/api/serializers/', - to: '/backend/api/serializers/', - }, - { - to: '/development-infrastructure/backend-development-server/', - from: '/backend/development-server/', - }, - { - from: '/backend/python-dependencies/', - to: '/development-infrastructure/python-dependencies/', - }, - { - from: '/backend/database-migrations/', - to: '/backend/application-domains/database-migrations/', - }, - { - from: '/api-server/application-domains/database-migrations/', - to: '/backend/application-domains/database-migrations/', - }, - { - from: '/backend/feature-flags/', - to: '/backend/application-domains/feature-flags/', - }, - { - from: '/api-server/application-domains/feature-flags/', - to: '/develop/application-domains/feature-flags/', - }, - { - from: '/backend/feature-flags/flagpole/', - to: '/backend/application-domains/feature-flags/flagpole/', - }, - { - from: '/api-server/application-domains/feature-flags/flagpole/', - to: '/develop/application-domains/feature-flags/flagpole/', - }, - { - from: '/backend/options/', - to: '/backend/application-domains/options/', - }, - { - from: '/api-server/application-domains/options/', - to: '/develop/application-domains/options/', - }, - { - from: '/backend/transaction-clustering/', - to: '/backend/application-domains/transaction-clustering/', - }, - { - from: '/api-server/application-domains/transaction-clustering/', - to: '/develop/application-domains/transaction-clustering/', - }, - { - from: '/backend/grouping/', - to: '/backend/application-domains/grouping/', - }, - { - from: '/api-server/application-domains/grouping/', - to: '/develop/application-domains/grouping/', - }, - { - from: '/backend/outboxes/', - to: '/backend/application-domains/outboxes/', - }, - { - from: '/api-server/application-domains/outboxes/', - to: '/develop/application-domains/outboxes/', - }, - { - from: '/backend/issue-platform-detectors/', - to: '/backend/issue-platform/writing-detectors/', - }, - { - from: '/api-server/issue-platform/writing-detectors/', - to: '/develop/issue-platform/writing-detectors/', - }, - { - from: '/api-server/issue-platform/', - to: '/develop/issue-platform/', - }, - { - from: '/backend/queue/', - to: '/backend/application-domains/asynchronous-workers/', - }, - { - from: '/api-server/application-domains/asynchronous-workers/', - to: '/develop/application-domains/asynchronous-workers/', - }, - { - from: '/backend/email/', - to: '/backend/application-domains/email/', - }, - { - from: '/api-server/application-domains/email/', - to: '/develop/application-domains/email/', - }, - { - from: '/backend/kafka/', - to: '/backend/application-domains/kafka/', - }, - { - from: '/api-server/application-domains/kafka/', - to: '/develop/application-domains/kafka/', - }, - { - from: '/backend/metrics/', - to: '/backend/application-domains/metrics/', - }, - { - from: '/api-server/application-domains/metrics/', - to: '/develop/application-domains/metrics/', - }, - { - from: '/backend/nodestore/', - to: '/backend/application-domains/nodestore/', - }, - { - from: '/api-server/application-domains/nodestore/', - to: '/develop/application-domains/nodestore/', - }, - { - from: '/backend/digests/', - to: '/backend/application-domains/digests/', - }, - { - from: '/api-server/application-domains/digests/', - to: '/develop/application-domains/digests/', - }, - { - from: '/backend/quotas/', - to: '/backend/application-domains/quotas/', - }, - { - from: '/api-server/application-domains/quotas/', - to: '/develop/application-domains/quotas/', - }, - { - from: '/backend/tsdb/', - to: '/backend/application-domains/tsdb/', - }, - { - from: '/api-server/application-domains/tsdb/', - to: '/develop/application-domains/tsdb/', - }, - { - from: '/backend/pii/', - to: '/backend/application-domains/pii/', - }, - { - from: '/api-server/application-domains/pii/', - to: '/develop/application-domains/pii/', - }, - { - from: '/backend/pii/methods/', - to: '/backend/application-domains/pii/methods/', - }, - { - from: '/api-server/application-domains/pii/methods/', - to: '/develop/application-domains/pii/methods/', - }, - { - from: '/backend/pii/types/', - to: '/backend/application-domains/pii/types/', - }, - { - from: '/api-server/application-domains/pii/types/', - to: '/develop/application-domains/pii/types/', - }, - { - from: '/backend/pii/selectors/', - to: '/backend/application-domains/pii/selectors/', - }, - { - from: '/api-server/application-domains/pii/selectors/', - to: '/develop/application-domains/pii/selectors/', - }, - { - from: '/backend/buffers/', - to: '/backend/application-domains/write-buffers/', - }, - { - from: '/api-server/application-domains/write-buffers/', - to: '/develop/application-domains/write-buffers/', - }, - { - from: '/backend/translations/', - to: '/backend/application-domains/translations/', - }, - { - from: '/api-server/application-domains/translations/', - to: '/develop/application-domains/translations/', - }, - { - from: '/backend/ab-testing/', - to: '/backend/application-domains/ab-testing/', - }, - { - from: '/api-server/application-domains/ab-testing/', - to: '/develop/application-domains/ab-testing/', - }, - /* Ingestion section rework */ - { - from: '/relay/', - to: '/ingestion/relay/', - }, - { - from: '/relay/projectconfig-versioning/', - to: '/ingestion/relay/projectconfig-versioning/', - }, - { - from: '/relay/transaction-span-ratelimits/', - to: '/ingestion/relay/transaction-span-ratelimits/', - }, - { - from: '/relay/relay-best-practices/', - to: '/ingestion/relay/relay-best-practices/', - }, - /* integration platform */ - { - from: '/organization/integrations/kitemaker/', - to: '/organization/integrations/issue-tracking/kitemaker/', - }, - { - from: '/organization/integrations/pagertree/', - to: '/organization/integrations/notification-incidents/pagertree/', - }, - { - from: '/organization/integrations/goast/', - to: '/organization/integrations/issue-tracking/goast/', - }, - { - from: '/organization/integrations/betterbugs/', - to: '/organization/integrations/session-replay/betterbugs/', - }, - { - from: '/organization/integrations/blar/', - to: '/organization/integrations/notification-incidents/blar/', - }, - { - from: '/organization/integrations/apigene/', - to: '/organization/integrations/debugging/apigene/', - }, - { - from: '/organization/integrations/revisedev/', - to: '/organization/integrations/debugging/revisedev/', - }, - { - from: '/organization/integrations/foamai/', - to: '/organization/integrations/debugging/foamai/', - }, - { - from: '/organization/integrations/telegram-alerts-bot/', - to: '/organization/integrations/notification-incidents/telegram-alerts-bot/', - }, - { - from: '/organization/integrations/vanta-eu/', - to: '/organization/integrations/compliance/vanta-eu/', - }, - { - from: '/organization/integrations/sourcery/', - to: '/organization/integrations/debugging/sourcery/', - }, - { - from: '/organization/integrations/codecomet/', - to: '/organization/integrations/debugging/codecomet/', - }, - { - from: '/organization/integrations/glueai/', - to: '/organization/integrations/notification-incidents/glueai/', - }, - { - from: '/organization/integrations/factory/', - to: '/organization/integrations/issue-tracking/factory/', - }, - { - from: '/organization/integrations/teamcamp/', - to: '/organization/integrations/issue-tracking/teamcamp/', - }, - { - from: '/organization/integrations/elba/', - to: '/organization/integrations/compliance/elba/', - }, -]; - -const redirectMap = new Map( - (isDeveloperDocs ? DEVELOPER_DOCS_REDIRECTS : USER_DOCS_REDIRECTS).map(r => [ - r.from as string, - r.to, - ]) -); From 3e570b1b74414c7360fc3a265f530258da209bf1 Mon Sep 17 00:00:00 2001 From: Charly Gomez Date: Wed, 4 Feb 2026 16:23:29 +0100 Subject: [PATCH 5/7] fix eslint --- eslint.config.mjs | 5 +- package.json | 5 +- yarn.lock | 310 ++++++---------------------------------------- 3 files changed, 46 insertions(+), 274 deletions(-) diff --git a/eslint.config.mjs b/eslint.config.mjs index a1d297e704c1c..7fe2953892fc8 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -1,5 +1,6 @@ import {dirname} from 'path'; import {fileURLToPath} from 'url'; + import {FlatCompat} from '@eslint/eslintrc'; const __filename = fileURLToPath(import.meta.url); @@ -9,7 +10,7 @@ const compat = new FlatCompat({ baseDirectory: __dirname, }); -export default [ +const config = [ { ignores: ['.babelrc.js'], }, @@ -26,3 +27,5 @@ export default [ }, }, ]; + +export default config; diff --git a/package.json b/package.json index 339810cc481f9..560b40b38ccd3 100644 --- a/package.json +++ b/package.json @@ -131,7 +131,7 @@ "dotenv-cli": "^7.4.1", "eslint": "^8", "@eslint/eslintrc": "^3.2.0", - "eslint-config-next": "^16.1.6", + "eslint-config-next": "^15.0.0", "eslint-config-sentry-docs": "^2.10.0", "jest": "^29.5.0", "jest-dom": "^4.0.0", @@ -148,7 +148,8 @@ "resolutions": { "dompurify": "3.2.4", "@types/dompurify": "3.0.5", - "@types/node": "^22" + "@types/node": "^22", + "es-iterator-helpers": "1.2.1" }, "volta": { "node": "22.16.0", diff --git a/yarn.lock b/yarn.lock index 7ff78d5d0f8a6..758003637935c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -794,25 +794,11 @@ js-tokens "^4.0.0" picocolors "^1.0.0" -"@babel/code-frame@^7.28.6", "@babel/code-frame@^7.29.0": - version "7.29.0" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.29.0.tgz#7cd7a59f15b3cc0dcd803038f7792712a7d0b15c" - integrity sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw== - dependencies: - "@babel/helper-validator-identifier" "^7.28.5" - js-tokens "^4.0.0" - picocolors "^1.1.1" - "@babel/compat-data@^7.25.9": version "7.26.2" resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.2.tgz" integrity sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg== -"@babel/compat-data@^7.28.6": - version "7.29.0" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.29.0.tgz#00d03e8c0ac24dd9be942c5370990cbe1f17d88d" - integrity sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg== - "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.18.5", "@babel/core@^7.23.9": version "7.26.0" resolved "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz" @@ -834,27 +820,6 @@ json5 "^2.2.3" semver "^6.3.1" -"@babel/core@^7.24.4": - version "7.29.0" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.29.0.tgz#5286ad785df7f79d656e88ce86e650d16ca5f322" - integrity sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA== - dependencies: - "@babel/code-frame" "^7.29.0" - "@babel/generator" "^7.29.0" - "@babel/helper-compilation-targets" "^7.28.6" - "@babel/helper-module-transforms" "^7.28.6" - "@babel/helpers" "^7.28.6" - "@babel/parser" "^7.29.0" - "@babel/template" "^7.28.6" - "@babel/traverse" "^7.29.0" - "@babel/types" "^7.29.0" - "@jridgewell/remapping" "^2.3.5" - convert-source-map "^2.0.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.3" - semver "^6.3.1" - "@babel/generator@^7.25.9", "@babel/generator@^7.26.0", "@babel/generator@^7.7.2": version "7.26.2" resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.26.2.tgz" @@ -866,17 +831,6 @@ "@jridgewell/trace-mapping" "^0.3.25" jsesc "^3.0.2" -"@babel/generator@^7.29.0": - version "7.29.0" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.29.0.tgz#4cba5a76b3c71d8be31761b03329d5dc7768447f" - integrity sha512-vSH118/wwM/pLR38g/Sgk05sNtro6TlTJKuiMXDaZqPUfjTFcudpCOt00IhOfj+1BFAX+UFAlzCU+6WXr3GLFQ== - dependencies: - "@babel/parser" "^7.29.0" - "@babel/types" "^7.29.0" - "@jridgewell/gen-mapping" "^0.3.12" - "@jridgewell/trace-mapping" "^0.3.28" - jsesc "^3.0.2" - "@babel/helper-annotate-as-pure@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz" @@ -895,17 +849,6 @@ lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-compilation-targets@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz#32c4a3f41f12ed1532179b108a4d746e105c2b25" - integrity sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA== - dependencies: - "@babel/compat-data" "^7.28.6" - "@babel/helper-validator-option" "^7.27.1" - browserslist "^4.24.0" - lru-cache "^5.1.1" - semver "^6.3.1" - "@babel/helper-create-class-features-plugin@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz" @@ -919,11 +862,6 @@ "@babel/traverse" "^7.25.9" semver "^6.3.1" -"@babel/helper-globals@^7.28.0": - version "7.28.0" - resolved "https://registry.yarnpkg.com/@babel/helper-globals/-/helper-globals-7.28.0.tgz#b9430df2aa4e17bc28665eadeae8aa1d985e6674" - integrity sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw== - "@babel/helper-member-expression-to-functions@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz" @@ -940,14 +878,6 @@ "@babel/traverse" "^7.25.9" "@babel/types" "^7.25.9" -"@babel/helper-module-imports@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz#60632cbd6ffb70b22823187201116762a03e2d5c" - integrity sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw== - dependencies: - "@babel/traverse" "^7.28.6" - "@babel/types" "^7.28.6" - "@babel/helper-module-transforms@^7.25.9", "@babel/helper-module-transforms@^7.26.0": version "7.26.0" resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz" @@ -957,15 +887,6 @@ "@babel/helper-validator-identifier" "^7.25.9" "@babel/traverse" "^7.25.9" -"@babel/helper-module-transforms@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz#9312d9d9e56edc35aeb6e95c25d4106b50b9eb1e" - integrity sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA== - dependencies: - "@babel/helper-module-imports" "^7.28.6" - "@babel/helper-validator-identifier" "^7.28.5" - "@babel/traverse" "^7.28.6" - "@babel/helper-optimise-call-expression@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz" @@ -1008,31 +929,16 @@ resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz" integrity sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA== -"@babel/helper-string-parser@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687" - integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== - "@babel/helper-validator-identifier@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz" integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ== -"@babel/helper-validator-identifier@^7.28.5": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz#010b6938fab7cb7df74aa2bbc06aa503b8fe5fb4" - integrity sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q== - "@babel/helper-validator-option@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz" integrity sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw== -"@babel/helper-validator-option@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz#fa52f5b1e7db1ab049445b421c4471303897702f" - integrity sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg== - "@babel/helpers@^7.26.0": version "7.27.0" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.27.0.tgz#53d156098defa8243eab0f32fa17589075a1b808" @@ -1041,14 +947,6 @@ "@babel/template" "^7.27.0" "@babel/types" "^7.27.0" -"@babel/helpers@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.28.6.tgz#fca903a313ae675617936e8998b814c415cbf5d7" - integrity sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw== - dependencies: - "@babel/template" "^7.28.6" - "@babel/types" "^7.28.6" - "@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.25.9", "@babel/parser@^7.26.0", "@babel/parser@^7.26.2": version "7.26.2" resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.26.2.tgz" @@ -1056,13 +954,6 @@ dependencies: "@babel/types" "^7.26.0" -"@babel/parser@^7.24.4", "@babel/parser@^7.28.6", "@babel/parser@^7.29.0": - version "7.29.0" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.29.0.tgz#669ef345add7d057e92b7ed15f0bac07611831b6" - integrity sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww== - dependencies: - "@babel/types" "^7.29.0" - "@babel/parser@^7.27.0": version "7.27.0" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.27.0.tgz#3d7d6ee268e41d2600091cbd4e145ffee85a44ec" @@ -1245,15 +1136,6 @@ "@babel/parser" "^7.27.0" "@babel/types" "^7.27.0" -"@babel/template@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.28.6.tgz#0e7e56ecedb78aeef66ce7972b082fce76a23e57" - integrity sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ== - dependencies: - "@babel/code-frame" "^7.28.6" - "@babel/parser" "^7.28.6" - "@babel/types" "^7.28.6" - "@babel/traverse@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.9.tgz" @@ -1267,19 +1149,6 @@ debug "^4.3.1" globals "^11.1.0" -"@babel/traverse@^7.28.6", "@babel/traverse@^7.29.0": - version "7.29.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.29.0.tgz#f323d05001440253eead3c9c858adbe00b90310a" - integrity sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA== - dependencies: - "@babel/code-frame" "^7.29.0" - "@babel/generator" "^7.29.0" - "@babel/helper-globals" "^7.28.0" - "@babel/parser" "^7.29.0" - "@babel/template" "^7.28.6" - "@babel/types" "^7.29.0" - debug "^4.3.1" - "@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.25.9", "@babel/types@^7.26.0", "@babel/types@^7.3.3": version "7.26.0" resolved "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz" @@ -1296,14 +1165,6 @@ "@babel/helper-string-parser" "^7.25.9" "@babel/helper-validator-identifier" "^7.25.9" -"@babel/types@^7.28.6", "@babel/types@^7.29.0": - version "7.29.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.29.0.tgz#9f5b1e838c446e72cf3cd4b918152b8c605e37c7" - integrity sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A== - dependencies: - "@babel/helper-string-parser" "^7.27.1" - "@babel/helper-validator-identifier" "^7.28.5" - "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz" @@ -2315,14 +2176,6 @@ "@types/yargs" "^17.0.8" chalk "^4.0.0" -"@jridgewell/gen-mapping@^0.3.12": - version "0.3.13" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz#6342a19f44347518c93e43b1ac69deb3c4656a1f" - integrity sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA== - dependencies: - "@jridgewell/sourcemap-codec" "^1.5.0" - "@jridgewell/trace-mapping" "^0.3.24" - "@jridgewell/gen-mapping@^0.3.2", "@jridgewell/gen-mapping@^0.3.5": version "0.3.5" resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz" @@ -2332,14 +2185,6 @@ "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.24" -"@jridgewell/remapping@^2.3.5": - version "2.3.5" - resolved "https://registry.yarnpkg.com/@jridgewell/remapping/-/remapping-2.3.5.tgz#375c476d1972947851ba1e15ae8f123047445aa1" - integrity sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ== - dependencies: - "@jridgewell/gen-mapping" "^0.3.5" - "@jridgewell/trace-mapping" "^0.3.24" - "@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@^3.1.0": version "3.1.2" resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz" @@ -2371,14 +2216,6 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" -"@jridgewell/trace-mapping@^0.3.28": - version "0.3.31" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz#db15d6781c931f3a251a3dac39501c98a6082fd0" - integrity sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw== - dependencies: - "@jridgewell/resolve-uri" "^3.1.0" - "@jridgewell/sourcemap-codec" "^1.4.14" - "@mdx-js/esbuild@^3.0.0": version "3.1.0" resolved "https://registry.npmjs.org/@mdx-js/esbuild/-/esbuild-3.1.0.tgz" @@ -2478,10 +2315,10 @@ resolved "https://registry.yarnpkg.com/@next/env/-/env-16.1.6.tgz#0f85979498249a94ef606ef535042a831f905e89" integrity sha512-N1ySLuZjnAtN3kFnwhAwPvZah8RJxKasD7x1f8shFqhncnWZn4JMfg37diLNuoHsLAlrDfM3g4mawVdtAG8XLQ== -"@next/eslint-plugin-next@16.1.6": - version "16.1.6" - resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-16.1.6.tgz#73b56b01c9db506998bd1e2d303c2605b0a1b7b0" - integrity sha512-/Qq3PTagA6+nYVfryAtQ7/9FEr/6YVyvOtl6rZnGsbReGLf0jZU6gkpr1FuChAQpvV46a78p4cmHOVP8mbfSMQ== +"@next/eslint-plugin-next@15.5.11": + version "15.5.11" + resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-15.5.11.tgz#af9dd51c1cfaf989145afa888d375a6ec8f0b3e9" + integrity sha512-tS/HYQOjIoX9ZNDQitba/baS8sTvo3ekY6Vgdx5lmhN4jov082bdApIChXr94qhMZHvEciz9DZglFFnhguQp/A== dependencies: fast-glob "3.3.1" @@ -3992,6 +3829,11 @@ resolved "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz" integrity sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g== +"@rushstack/eslint-patch@^1.10.3": + version "1.15.0" + resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.15.0.tgz#8184bcb37791e6d3c3c13a9bfbe4af263f66665f" + integrity sha512-ojSshQPKwVvSMR8yT2L/QtUkV5SXi/IfDiJ4/8d6UbTPjiHVmxZzUAzGD8Tzks1b9+qQkZa0isUOvYObedITaw== + "@sentry-internal/browser-utils@10.27.0": version "10.27.0" resolved "https://registry.yarnpkg.com/@sentry-internal/browser-utils/-/browser-utils-10.27.0.tgz#e37295cec899428ebf66d532d8a1b0f703be00a6" @@ -5367,7 +5209,7 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@8.54.0": +"@typescript-eslint/eslint-plugin@^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0": version "8.54.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.54.0.tgz#d8899e5c2eccf5c4a20d01c036a193753748454d" integrity sha512-hAAP5io/7csFStuOmR782YmTthKBJ9ND3WVL60hcOjvtGFb+HJxH4O5huAcmcZ9v9G8P+JETiZ/G1B8MALnWZQ== @@ -5405,7 +5247,7 @@ dependencies: "@typescript-eslint/utils" "5.62.0" -"@typescript-eslint/parser@8.54.0": +"@typescript-eslint/parser@^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0": version "8.54.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.54.0.tgz#3d01a6f54ed247deb9982621f70e7abf1810bd97" integrity sha512-BtE0k6cjwjLZoZixN0t5AKP0kSzlGu7FctRXYuPAm//aaiZhmfq1JwdYpYr1brzEspYyFeF+8XF5j2VK6oalrA== @@ -7501,7 +7343,7 @@ es-abstract@^1.17.5, es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23 unbox-primitive "^1.0.2" which-typed-array "^1.1.15" -es-abstract@^1.23.5, es-abstract@^1.23.6, es-abstract@^1.23.9, es-abstract@^1.24.0, es-abstract@^1.24.1: +es-abstract@^1.23.5, es-abstract@^1.23.6, es-abstract@^1.23.9, es-abstract@^1.24.0: version "1.24.1" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.24.1.tgz#f0c131ed5ea1bb2411134a8dd94def09c46c7899" integrity sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw== @@ -7578,47 +7420,26 @@ es-errors@^1.2.1, es-errors@^1.3.0: resolved "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz" integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== -es-iterator-helpers@^1.1.0: - version "1.2.0" - resolved "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.0.tgz" - integrity sha512-tpxqxncxnpw3c93u8n3VOzACmRFoVmWJqbWXvX/JfKbkhBw1oslgPrUfeSt2psuqyEJFD6N/9lg5i7bsKpoq+Q== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-abstract "^1.23.3" - es-errors "^1.3.0" - es-set-tostringtag "^2.0.3" - function-bind "^1.1.2" - get-intrinsic "^1.2.4" - globalthis "^1.0.4" - gopd "^1.0.1" - has-property-descriptors "^1.0.2" - has-proto "^1.0.3" - has-symbols "^1.0.3" - internal-slot "^1.0.7" - iterator.prototype "^1.1.3" - safe-array-concat "^1.1.2" - -es-iterator-helpers@^1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.2.2.tgz#d979a9f686e2b0b72f88dbead7229924544720bc" - integrity sha512-BrUQ0cPTB/IwXj23HtwHjS9n7O4h9FX94b4xc5zlTHxeLgTAdzYUDyy6KdExAl9lbN5rtfe44xpjpmj9grxs5w== +es-iterator-helpers@1.2.1, es-iterator-helpers@^1.1.0, es-iterator-helpers@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz#d1dd0f58129054c0ad922e6a9a1e65eef435fe75" + integrity sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w== dependencies: call-bind "^1.0.8" - call-bound "^1.0.4" + call-bound "^1.0.3" define-properties "^1.2.1" - es-abstract "^1.24.1" + es-abstract "^1.23.6" es-errors "^1.3.0" - es-set-tostringtag "^2.1.0" + es-set-tostringtag "^2.0.3" function-bind "^1.1.2" - get-intrinsic "^1.3.0" + get-intrinsic "^1.2.6" globalthis "^1.0.4" gopd "^1.2.0" has-property-descriptors "^1.0.2" has-proto "^1.2.0" has-symbols "^1.1.0" internal-slot "^1.1.0" - iterator.prototype "^1.1.5" + iterator.prototype "^1.1.4" safe-array-concat "^1.1.3" es-module-lexer@^1.6.0: @@ -7778,20 +7599,21 @@ escodegen@^2.0.0: optionalDependencies: source-map "~0.6.1" -eslint-config-next@^16.1.6: - version "16.1.6" - resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-16.1.6.tgz#75dd33bf32eb34b1e5be59f546e3c808429bab41" - integrity sha512-vKq40io2B0XtkkNDYyleATwblNt8xuh3FWp8SpSz3pt7P01OkBFlKsJZ2mWt5WsCySlDQLckb1zMY9yE9Qy0LA== +eslint-config-next@^15.0.0: + version "15.5.11" + resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-15.5.11.tgz#949d1cb4a9165f16e11905729ab6a3fc23ce3566" + integrity sha512-RQNY69VUv0BzXkLEKDh/OPUzA+krFOnYRxO0JA3UsW429ovLa2nXx8kZuXCl18P27PyJBdS3qgJJkIhi9H8SuQ== dependencies: - "@next/eslint-plugin-next" "16.1.6" + "@next/eslint-plugin-next" "15.5.11" + "@rushstack/eslint-patch" "^1.10.3" + "@typescript-eslint/eslint-plugin" "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0" + "@typescript-eslint/parser" "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0" eslint-import-resolver-node "^0.3.6" eslint-import-resolver-typescript "^3.5.2" - eslint-plugin-import "^2.32.0" + eslint-plugin-import "^2.31.0" eslint-plugin-jsx-a11y "^6.10.0" eslint-plugin-react "^7.37.0" - eslint-plugin-react-hooks "^7.0.0" - globals "16.4.0" - typescript-eslint "^8.46.0" + eslint-plugin-react-hooks "^5.0.0" eslint-config-sentry-docs@^2.10.0: version "2.10.0" @@ -7888,7 +7710,7 @@ eslint-plugin-import@^2.29.1: string.prototype.trimend "^1.0.8" tsconfig-paths "^3.15.0" -eslint-plugin-import@^2.32.0: +eslint-plugin-import@^2.31.0: version "2.32.0" resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz#602b55faa6e4caeaa5e970c198b5c00a37708980" integrity sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA== @@ -7962,16 +7784,10 @@ eslint-plugin-react-hooks@^4.6.2: resolved "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz" integrity sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ== -eslint-plugin-react-hooks@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.0.1.tgz#66e258db58ece50723ef20cc159f8aa908219169" - integrity sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA== - dependencies: - "@babel/core" "^7.24.4" - "@babel/parser" "^7.24.4" - hermes-parser "^0.25.1" - zod "^3.25.0 || ^4.0.0" - zod-validation-error "^3.5.0 || ^4.0.0" +eslint-plugin-react-hooks@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz#1be0080901e6ac31ce7971beed3d3ec0a423d9e3" + integrity sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg== eslint-plugin-react@^7.33.2: version "7.37.2" @@ -8732,11 +8548,6 @@ glob@^7.1.3, glob@^7.1.4: once "^1.3.0" path-is-absolute "^1.0.0" -globals@16.4.0: - version "16.4.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-16.4.0.tgz#574bc7e72993d40cf27cf6c241f324ee77808e51" - integrity sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw== - globals@^11.1.0: version "11.12.0" resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" @@ -9267,18 +9078,6 @@ hastscript@^9.0.0: property-information "^7.0.0" space-separated-tokens "^2.0.0" -hermes-estree@0.25.1: - version "0.25.1" - resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.25.1.tgz#6aeec17d1983b4eabf69721f3aa3eb705b17f480" - integrity sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw== - -hermes-parser@^0.25.1: - version "0.25.1" - resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.25.1.tgz#5be0e487b2090886c62bd8a11724cd766d5f54d1" - integrity sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA== - dependencies: - hermes-estree "0.25.1" - hoist-non-react-statics@^3.3.1, hoist-non-react-statics@^3.3.2: version "3.3.2" resolved "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz" @@ -9944,18 +9743,7 @@ istanbul-reports@^3.1.3: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" -iterator.prototype@^1.1.3: - version "1.1.3" - resolved "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.3.tgz" - integrity sha512-FW5iMbeQ6rBGm/oKgzq2aW4KvAGpxPzYES8N4g4xNXUKpL1mclMvOe+76AcLDTvD+Ze+sOpVhgdAQEKF4L9iGQ== - dependencies: - define-properties "^1.2.1" - get-intrinsic "^1.2.1" - has-symbols "^1.0.3" - reflect.getprototypeof "^1.0.4" - set-function-name "^2.0.1" - -iterator.prototype@^1.1.5: +iterator.prototype@^1.1.4: version "1.1.5" resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.5.tgz#12c959a29de32de0aa3bbbb801f4d777066dae39" integrity sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g== @@ -12933,7 +12721,7 @@ recma-stringify@^1.0.0: unified "^11.0.0" vfile "^6.0.0" -reflect.getprototypeof@^1.0.4, reflect.getprototypeof@^1.0.6: +reflect.getprototypeof@^1.0.6: version "1.0.6" resolved "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz" integrity sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg== @@ -13802,7 +13590,7 @@ set-function-length@^1.2.1, set-function-length@^1.2.2: gopd "^1.0.1" has-property-descriptors "^1.0.2" -set-function-name@^2.0.1, set-function-name@^2.0.2: +set-function-name@^2.0.2: version "2.0.2" resolved "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz" integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ== @@ -14742,16 +14530,6 @@ typed-array-length@^1.0.7: possible-typed-array-names "^1.0.0" reflect.getprototypeof "^1.0.6" -typescript-eslint@^8.46.0: - version "8.54.0" - resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.54.0.tgz#f4ef3b8882a5ddc2a41968e014194c178ab23f6a" - integrity sha512-CKsJ+g53QpsNPqbzUsfKVgd3Lny4yKZ1pP4qN3jdMOg/sisIDLGyDMezycquXLE5JsEU0wp3dGNdzig0/fmSVQ== - dependencies: - "@typescript-eslint/eslint-plugin" "8.54.0" - "@typescript-eslint/parser" "8.54.0" - "@typescript-eslint/typescript-estree" "8.54.0" - "@typescript-eslint/utils" "8.54.0" - typescript@^5: version "5.6.3" resolved "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz" @@ -15644,21 +15422,11 @@ yocto-queue@^1.1.1: resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.2.1.tgz#36d7c4739f775b3cbc28e6136e21aa057adec418" integrity sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg== -"zod-validation-error@^3.5.0 || ^4.0.0": - version "4.0.2" - resolved "https://registry.yarnpkg.com/zod-validation-error/-/zod-validation-error-4.0.2.tgz#bc605eba49ce0fcd598c127fee1c236be3f22918" - integrity sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ== - zod@^3.22.4: version "3.23.8" resolved "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz" integrity sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g== -"zod@^3.25.0 || ^4.0.0": - version "4.3.6" - resolved "https://registry.yarnpkg.com/zod/-/zod-4.3.6.tgz#89c56e0aa7d2b05107d894412227087885ab112a" - integrity sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg== - zwitch@^2.0.0, zwitch@^2.0.4: version "2.0.4" resolved "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz" From 3b9897e532a6e75a63f5b86a7c5d599310af747a Mon Sep 17 00:00:00 2001 From: Charly Gomez Date: Wed, 4 Feb 2026 17:18:33 +0100 Subject: [PATCH 6/7] . --- next.config.ts | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/next.config.ts b/next.config.ts index 55b182b5d2526..a37ef0648c29d 100644 --- a/next.config.ts +++ b/next.config.ts @@ -32,6 +32,23 @@ const sharedExcludes = [ 'node_modules/remark-mdx-images/**/*', 'node_modules/unified/**/*', 'node_modules/rollup/**/*', + // ESLint/TypeScript - build-time only + 'node_modules/eslint/**/*', + 'node_modules/eslint-*/**/*', + 'node_modules/@eslint/**/*', + 'node_modules/@typescript-eslint/**/*', + 'node_modules/typescript/**/*', + // Mermaid dependencies (build-time diagram generation) + 'node_modules/cytoscape/**/*', + 'node_modules/cytoscape-*/**/*', + // Development/test tools + 'node_modules/vitest/**/*', + 'node_modules/vite/**/*', + 'node_modules/@vitest/**/*', + // Platform-specific SWC binaries (Vercel uses linux-x64) + 'node_modules/@next/swc-darwin-*/**/*', + 'node_modules/@next/swc-win32-*/**/*', + 'node_modules/@next/swc-linux-arm*/**/*', ]; const outputFileTracingExcludes = process.env.NEXT_PUBLIC_DEVELOPER_DOCS From f37545c861e2ed648d1724069642d26ccc029553 Mon Sep 17 00:00:00 2001 From: Charly Gomez Date: Thu, 5 Feb 2026 11:15:54 +0100 Subject: [PATCH 7/7] add more excludes --- next.config.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/next.config.ts b/next.config.ts index a37ef0648c29d..4aae6a06a20df 100644 --- a/next.config.ts +++ b/next.config.ts @@ -67,6 +67,12 @@ const outputFileTracingExcludes = process.env.NEXT_PUBLIC_DEVELOPER_DOCS 'node_modules/prettier/plugins', 'node_modules/rollup/dist', 'public/og-images/**/*', + // Exclude static assets that don't need to be in the serverless function + 'public/mdx-images/**/*', + 'public/md-exports/**/*', + 'public/pdfs/**/*', + '**/*.gif', + '**/*.pdf', ], 'sitemap.xml': [ 'public/mdx-images/**/*',