diff --git a/apps/dashboard/.gitignore b/apps/dashboard/.gitignore
index 2971a0bd..eb460a16 100644
--- a/apps/dashboard/.gitignore
+++ b/apps/dashboard/.gitignore
@@ -40,3 +40,6 @@ yarn-error.log*
# typescript
*.tsbuildinfo
+
+# Sentry Config File
+.sentryclirc
diff --git a/apps/dashboard/next.config.mjs b/apps/dashboard/next.config.mjs
index ec832a13..e59b8738 100644
--- a/apps/dashboard/next.config.mjs
+++ b/apps/dashboard/next.config.mjs
@@ -1,3 +1,5 @@
+import { withSentryConfig } from '@sentry/nextjs';
+
/**
* Run `build` or `dev` with `SKIP_ENV_VALIDATION` to skip env validation. This is especially useful
* for Docker builds.
@@ -32,4 +34,42 @@ const config = {
},
};
-export default config;
+export default withSentryConfig(
+ config,
+ {
+ // For all available options, see:
+ // https://github.com/getsentry/sentry-webpack-plugin#options
+
+ // Suppresses source map uploading logs during build
+ silent: true,
+ org: 'openpaneldev',
+ project: 'javascript-nextjs',
+ },
+ {
+ // For all available options, see:
+ // https://docs.sentry.io/platforms/javascript/guides/nextjs/manual-setup/
+
+ // Upload a larger set of source maps for prettier stack traces (increases build time)
+ widenClientFileUpload: true,
+
+ // Transpiles SDK to be compatible with IE11 (increases bundle size)
+ transpileClientSDK: true,
+
+ // Routes browser requests to Sentry through a Next.js rewrite to circumvent ad-blockers. (increases server load)
+ // Note: Check that the configured route will not match with your Next.js middleware, otherwise reporting of client-
+ // side errors will fail.
+ tunnelRoute: '/monitoring',
+
+ // Hides source maps from generated client bundles
+ hideSourceMaps: true,
+
+ // Automatically tree-shake Sentry logger statements to reduce bundle size
+ disableLogger: true,
+
+ // Enables automatic instrumentation of Vercel Cron Monitors.
+ // See the following for more information:
+ // https://docs.sentry.io/product/crons/
+ // https://vercel.com/docs/cron-jobs
+ automaticVercelMonitors: true,
+ }
+);
diff --git a/apps/dashboard/package.json b/apps/dashboard/package.json
index 4b69026e..6bf527ab 100644
--- a/apps/dashboard/package.json
+++ b/apps/dashboard/package.json
@@ -39,6 +39,7 @@
"@radix-ui/react-toggle-group": "^1.0.4",
"@radix-ui/react-tooltip": "^1.0.7",
"@reduxjs/toolkit": "^1.9.7",
+ "@sentry/nextjs": "^7.105.0",
"@t3-oss/env-nextjs": "^0.7.3",
"@tanstack/react-query": "^4.36.1",
"@tanstack/react-table": "^8.11.8",
diff --git a/apps/dashboard/sentry.client.config.ts b/apps/dashboard/sentry.client.config.ts
new file mode 100644
index 00000000..1496709e
--- /dev/null
+++ b/apps/dashboard/sentry.client.config.ts
@@ -0,0 +1,31 @@
+// This file configures the initialization of Sentry on the client.
+// The config you add here will be used whenever a users loads a page in their browser.
+// https://docs.sentry.io/platforms/javascript/guides/nextjs/
+
+import { env } from '@/env.mjs';
+import * as Sentry from '@sentry/nextjs';
+
+Sentry.init({
+ dsn: env.NEXT_PUBLIC_SENTRY_DSN,
+
+ // Adjust this value in production, or use tracesSampler for greater control
+ tracesSampleRate: 1,
+
+ // Setting this option to true will print useful information to the console while you're setting up Sentry.
+ debug: false,
+
+ replaysOnErrorSampleRate: 1.0,
+
+ // This sets the sample rate to be 10%. You may want this to be 100% while
+ // in development and sample at a lower rate in production
+ replaysSessionSampleRate: 0.1,
+
+ // You can remove this option if you're not planning to use the Sentry Session Replay feature:
+ integrations: [
+ Sentry.replayIntegration({
+ // Additional Replay configuration goes in here, for example:
+ maskAllText: true,
+ blockAllMedia: true,
+ }),
+ ],
+});
diff --git a/apps/dashboard/sentry.edge.config.ts b/apps/dashboard/sentry.edge.config.ts
new file mode 100644
index 00000000..38f35878
--- /dev/null
+++ b/apps/dashboard/sentry.edge.config.ts
@@ -0,0 +1,17 @@
+// This file configures the initialization of Sentry for edge features (middleware, edge routes, and so on).
+// The config you add here will be used whenever one of the edge features is loaded.
+// Note that this config is unrelated to the Vercel Edge Runtime and is also required when running locally.
+// https://docs.sentry.io/platforms/javascript/guides/nextjs/
+
+import { env } from '@/env.mjs';
+import * as Sentry from '@sentry/nextjs';
+
+Sentry.init({
+ dsn: env.NEXT_PUBLIC_SENTRY_DSN,
+
+ // Adjust this value in production, or use tracesSampler for greater control
+ tracesSampleRate: 1,
+
+ // Setting this option to true will print useful information to the console while you're setting up Sentry.
+ debug: false,
+});
diff --git a/apps/dashboard/sentry.server.config.ts b/apps/dashboard/sentry.server.config.ts
new file mode 100644
index 00000000..e7f55d2b
--- /dev/null
+++ b/apps/dashboard/sentry.server.config.ts
@@ -0,0 +1,19 @@
+// This file configures the initialization of Sentry on the server.
+// The config you add here will be used whenever the server handles a request.
+// https://docs.sentry.io/platforms/javascript/guides/nextjs/
+
+import { env } from '@/env.mjs';
+import * as Sentry from '@sentry/nextjs';
+
+Sentry.init({
+ dsn: env.NEXT_PUBLIC_SENTRY_DSN,
+
+ // Adjust this value in production, or use tracesSampler for greater control
+ tracesSampleRate: 1,
+
+ // Setting this option to true will print useful information to the console while you're setting up Sentry.
+ debug: false,
+
+ // uncomment the line below to enable Spotlight (https://spotlightjs.com)
+ // spotlight: process.env.NODE_ENV === 'development',
+});
diff --git a/apps/dashboard/src/app/global-error.jsx b/apps/dashboard/src/app/global-error.jsx
new file mode 100644
index 00000000..2e6130a1
--- /dev/null
+++ b/apps/dashboard/src/app/global-error.jsx
@@ -0,0 +1,19 @@
+"use client";
+
+import * as Sentry from "@sentry/nextjs";
+import Error from "next/error";
+import { useEffect } from "react";
+
+export default function GlobalError({ error }) {
+ useEffect(() => {
+ Sentry.captureException(error);
+ }, [error]);
+
+ return (
+
+
+
+
+
+ );
+}
diff --git a/apps/dashboard/src/env.mjs b/apps/dashboard/src/env.mjs
index df287104..0a6a54ef 100644
--- a/apps/dashboard/src/env.mjs
+++ b/apps/dashboard/src/env.mjs
@@ -6,6 +6,9 @@ export const env = createEnv({
* Specify your server-side environment variables schema here. This way you can ensure the app
* isn't built with invalid env vars.
*/
+ shared: {
+ NEXT_PUBLIC_SENTRY_DSN: z.string().url(),
+ },
server: {
DATABASE_URL: z
.string()
@@ -35,6 +38,7 @@ export const env = createEnv({
runtimeEnv: {
DATABASE_URL: process.env.DATABASE_URL,
NODE_ENV: process.env.NODE_ENV,
+ NEXT_PUBLIC_SENTRY_DSN: process.env.NEXT_PUBLIC_SENTRY_DSN,
},
/**
* Run `build` or `dev` with `SKIP_ENV_VALIDATION` to skip env validation. This is especially
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 6c2fb50f..19ec4ac3 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -192,6 +192,9 @@ importers:
'@reduxjs/toolkit':
specifier: ^1.9.7
version: 1.9.7(react-redux@8.1.3)(react@18.2.0)
+ '@sentry/nextjs':
+ specifier: ^7.105.0
+ version: 7.108.0(next@14.0.4)(react@18.2.0)
'@t3-oss/env-nextjs':
specifier: ^0.7.3
version: 0.7.3(typescript@5.3.3)(zod@3.22.4)
@@ -6131,6 +6134,39 @@ packages:
reselect: 4.1.8
dev: false
+ /@rollup/plugin-commonjs@24.0.0(rollup@2.78.0):
+ resolution: {integrity: sha512-0w0wyykzdyRRPHOb0cQt14mIBLujfAv6GgP6g8nvg/iBxEm112t3YPPq+Buqe2+imvElTka+bjNlJ/gB56TD8g==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ rollup: ^2.68.0||^3.0.0
+ peerDependenciesMeta:
+ rollup:
+ optional: true
+ dependencies:
+ '@rollup/pluginutils': 5.1.0(rollup@2.78.0)
+ commondir: 1.0.1
+ estree-walker: 2.0.2
+ glob: 8.1.0
+ is-reference: 1.2.1
+ magic-string: 0.27.0
+ rollup: 2.78.0
+ dev: false
+
+ /@rollup/pluginutils@5.1.0(rollup@2.78.0):
+ resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
+ peerDependenciesMeta:
+ rollup:
+ optional: true
+ dependencies:
+ '@types/estree': 1.0.5
+ estree-walker: 2.0.2
+ picomatch: 2.3.1
+ rollup: 2.78.0
+ dev: false
+
/@rollup/rollup-android-arm-eabi@4.12.0:
resolution: {integrity: sha512-+ac02NL/2TCKRrJu2wffk1kZ+RyqxVUlbjSagNgPm94frxtr+XDL12E5Ll1enWskLrtrZ2r8L3wED1orIibV/w==}
cpu: [arm]
@@ -6246,6 +6282,180 @@ packages:
join-component: 1.1.0
dev: false
+ /@sentry-internal/feedback@7.108.0:
+ resolution: {integrity: sha512-8JcgZEnk1uWrXJhsd3iRvFtEiVeaWOEhN0NZwhwQXHfvODqep6JtrkY1yCIyxbpA37aZmrPc2JhyotRERGfUjg==}
+ engines: {node: '>=12'}
+ dependencies:
+ '@sentry/core': 7.108.0
+ '@sentry/types': 7.108.0
+ '@sentry/utils': 7.108.0
+ dev: false
+
+ /@sentry-internal/replay-canvas@7.108.0:
+ resolution: {integrity: sha512-R5tvjGqWUV5vSk0N1eBgVW7wIADinrkfDEBZ9FyKP2mXHBobsyNGt30heJDEqYmVqluRqjU2NuIRapsnnrpGnA==}
+ engines: {node: '>=12'}
+ dependencies:
+ '@sentry/core': 7.108.0
+ '@sentry/replay': 7.108.0
+ '@sentry/types': 7.108.0
+ '@sentry/utils': 7.108.0
+ dev: false
+
+ /@sentry-internal/tracing@7.108.0:
+ resolution: {integrity: sha512-zuK5XsTsb+U+hgn3SPetYDAogrXsM16U/LLoMW7+TlC6UjlHGYQvmX3o+M2vntejoU1QZS8m1bCAZSMWEypAEw==}
+ engines: {node: '>=8'}
+ dependencies:
+ '@sentry/core': 7.108.0
+ '@sentry/types': 7.108.0
+ '@sentry/utils': 7.108.0
+ dev: false
+
+ /@sentry/browser@7.108.0:
+ resolution: {integrity: sha512-FNpzsdTvGvdHJMUelqEouUXMZU7jC+dpN7CdT6IoHVVFEkoAgrjMVUhXZoQ/dmCkdKWHmFSQhJ8Fm6V+e9Aq0A==}
+ engines: {node: '>=8'}
+ dependencies:
+ '@sentry-internal/feedback': 7.108.0
+ '@sentry-internal/replay-canvas': 7.108.0
+ '@sentry-internal/tracing': 7.108.0
+ '@sentry/core': 7.108.0
+ '@sentry/replay': 7.108.0
+ '@sentry/types': 7.108.0
+ '@sentry/utils': 7.108.0
+ dev: false
+
+ /@sentry/cli@1.77.3:
+ resolution: {integrity: sha512-c3eDqcDRmy4TFz2bFU5Y6QatlpoBPPa8cxBooaS4aMQpnIdLYPF1xhyyiW0LQlDUNc3rRjNF7oN5qKoaRoMTQQ==}
+ engines: {node: '>= 8'}
+ hasBin: true
+ requiresBuild: true
+ dependencies:
+ https-proxy-agent: 5.0.1
+ mkdirp: 0.5.6
+ node-fetch: 2.7.0
+ progress: 2.0.3
+ proxy-from-env: 1.1.0
+ which: 2.0.2
+ transitivePeerDependencies:
+ - encoding
+ - supports-color
+ dev: false
+
+ /@sentry/core@7.108.0:
+ resolution: {integrity: sha512-I/VNZCFgLASxHZaD0EtxZRM34WG9w2gozqgrKGNMzAymwmQ3K9g/1qmBy4e6iS3YRptb7J5UhQkZQHrcwBbjWQ==}
+ engines: {node: '>=8'}
+ dependencies:
+ '@sentry/types': 7.108.0
+ '@sentry/utils': 7.108.0
+ dev: false
+
+ /@sentry/integrations@7.108.0:
+ resolution: {integrity: sha512-b/WbK1f3x2rQ4aJJSA4VSwpBXrXFm1Nzrca3Y9qW0MI1wjZEYsDDrh9m6ulLdVBl4YDc2VqYp1COwU/NjuHlog==}
+ engines: {node: '>=8'}
+ dependencies:
+ '@sentry/core': 7.108.0
+ '@sentry/types': 7.108.0
+ '@sentry/utils': 7.108.0
+ localforage: 1.10.0
+ dev: false
+
+ /@sentry/nextjs@7.108.0(next@14.0.4)(react@18.2.0):
+ resolution: {integrity: sha512-etBrMSLRbNAzozetBeL6D+lR9lRAyHmV7NUBGCX9lQvgmcdxkQa15EX8pIKjsMejZ8xAZNsqYVIByIs67A77rg==}
+ engines: {node: '>=8'}
+ peerDependencies:
+ next: ^10.0.8 || ^11.0 || ^12.0 || ^13.0 || ^14.0
+ react: 16.x || 17.x || 18.x
+ webpack: '>= 4.0.0'
+ peerDependenciesMeta:
+ webpack:
+ optional: true
+ dependencies:
+ '@rollup/plugin-commonjs': 24.0.0(rollup@2.78.0)
+ '@sentry/core': 7.108.0
+ '@sentry/integrations': 7.108.0
+ '@sentry/node': 7.108.0
+ '@sentry/react': 7.108.0(react@18.2.0)
+ '@sentry/types': 7.108.0
+ '@sentry/utils': 7.108.0
+ '@sentry/vercel-edge': 7.108.0
+ '@sentry/webpack-plugin': 1.21.0
+ chalk: 3.0.0
+ next: 14.0.4(react-dom@18.2.0)(react@18.2.0)
+ react: 18.2.0
+ resolve: 1.22.8
+ rollup: 2.78.0
+ stacktrace-parser: 0.1.10
+ transitivePeerDependencies:
+ - encoding
+ - supports-color
+ dev: false
+
+ /@sentry/node@7.108.0:
+ resolution: {integrity: sha512-pMxc9txnDDkU4Z8k2Uw/DPSLPehNtWV3mjJ3+my0AMORGYrXLkJI93tddlE5z/7k+GEJdj1HsOLgxUN0OU+HGA==}
+ engines: {node: '>=8'}
+ dependencies:
+ '@sentry-internal/tracing': 7.108.0
+ '@sentry/core': 7.108.0
+ '@sentry/types': 7.108.0
+ '@sentry/utils': 7.108.0
+ dev: false
+
+ /@sentry/react@7.108.0(react@18.2.0):
+ resolution: {integrity: sha512-C60arh5/gtO42eMU9l34aWlKDLZUO+1j1goaEf/XRSwUcyJS9tbJrs+mT4nbKxUsEG714It2gRbfSEvh1eXmCg==}
+ engines: {node: '>=8'}
+ peerDependencies:
+ react: 15.x || 16.x || 17.x || 18.x
+ dependencies:
+ '@sentry/browser': 7.108.0
+ '@sentry/core': 7.108.0
+ '@sentry/types': 7.108.0
+ '@sentry/utils': 7.108.0
+ hoist-non-react-statics: 3.3.2
+ react: 18.2.0
+ dev: false
+
+ /@sentry/replay@7.108.0:
+ resolution: {integrity: sha512-jo8fDOzcZJclP1+4n9jUtVxTlBFT9hXwxhAMrhrt70FV/nfmCtYQMD3bzIj79nwbhUtFP6pN39JH1o7Xqt1hxQ==}
+ engines: {node: '>=12'}
+ dependencies:
+ '@sentry-internal/tracing': 7.108.0
+ '@sentry/core': 7.108.0
+ '@sentry/types': 7.108.0
+ '@sentry/utils': 7.108.0
+ dev: false
+
+ /@sentry/types@7.108.0:
+ resolution: {integrity: sha512-bKtHITmBN3kqtqE5eVvL8mY8znM05vEodENwRpcm6TSrrBjC2RnwNWVwGstYDdHpNfFuKwC8mLY9bgMJcENo8g==}
+ engines: {node: '>=8'}
+ dev: false
+
+ /@sentry/utils@7.108.0:
+ resolution: {integrity: sha512-a45yEFD5qtgZaIFRAcFkG8C8lnDzn6t4LfLXuV4OafGAy/3ZAN3XN8wDnrruHkiUezSSANGsLg3bXaLW/JLvJw==}
+ engines: {node: '>=8'}
+ dependencies:
+ '@sentry/types': 7.108.0
+ dev: false
+
+ /@sentry/vercel-edge@7.108.0:
+ resolution: {integrity: sha512-dUuUEswaVIzsJnzTfaJxrvkfOowrlJxxHo2AybPDym2rob7CdaLdDJIYJa83X7QeAKMkTgLny/gYSQYC0E4UyA==}
+ engines: {node: '>=8'}
+ dependencies:
+ '@sentry-internal/tracing': 7.108.0
+ '@sentry/core': 7.108.0
+ '@sentry/types': 7.108.0
+ '@sentry/utils': 7.108.0
+ dev: false
+
+ /@sentry/webpack-plugin@1.21.0:
+ resolution: {integrity: sha512-x0PYIMWcsTauqxgl7vWUY6sANl+XGKtx7DCVnnY7aOIIlIna0jChTAPANTfA2QrK+VK+4I/4JxatCEZBnXh3Og==}
+ engines: {node: '>= 8'}
+ dependencies:
+ '@sentry/cli': 1.77.3
+ webpack-sources: 3.2.3
+ transitivePeerDependencies:
+ - encoding
+ - supports-color
+ dev: false
+
/@sideway/address@4.1.5:
resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==}
dependencies:
@@ -7942,6 +8152,14 @@ packages:
supports-color: 5.5.0
dev: false
+ /chalk@3.0.0:
+ resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==}
+ engines: {node: '>=8'}
+ dependencies:
+ ansi-styles: 4.3.0
+ supports-color: 7.2.0
+ dev: false
+
/chalk@4.1.2:
resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
engines: {node: '>=10'}
@@ -9723,6 +9941,10 @@ packages:
'@types/unist': 2.0.10
dev: false
+ /estree-walker@2.0.2:
+ resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
+ dev: false
+
/estree-walker@3.0.3:
resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==}
dependencies:
@@ -10969,6 +11191,10 @@ packages:
queue: 6.0.2
dev: false
+ /immediate@3.0.6:
+ resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==}
+ dev: false
+
/immer@9.0.21:
resolution: {integrity: sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==}
dev: false
@@ -11311,6 +11537,12 @@ packages:
isobject: 3.0.1
dev: false
+ /is-reference@1.2.1:
+ resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==}
+ dependencies:
+ '@types/estree': 1.0.5
+ dev: false
+
/is-reference@3.0.2:
resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==}
dependencies:
@@ -11790,6 +12022,12 @@ packages:
prelude-ls: 1.2.1
type-check: 0.4.0
+ /lie@3.1.1:
+ resolution: {integrity: sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==}
+ dependencies:
+ immediate: 3.0.6
+ dev: false
+
/light-my-request@5.11.0:
resolution: {integrity: sha512-qkFCeloXCOMpmEdZ/MV91P8AT4fjwFXWaAFz3lUeStM8RcoM1ks4J/F8r1b3r6y/H4u3ACEJ1T+Gv5bopj7oDA==}
dependencies:
@@ -11911,6 +12149,12 @@ packages:
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
dev: true
+ /localforage@1.10.0:
+ resolution: {integrity: sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==}
+ dependencies:
+ lie: 3.1.1
+ dev: false
+
/locate-path@3.0.0:
resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==}
engines: {node: '>=6'}
@@ -12090,6 +12334,13 @@ packages:
engines: {node: '>=12'}
dev: false
+ /magic-string@0.27.0:
+ resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==}
+ engines: {node: '>=12'}
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.4.15
+ dev: false
+
/make-dir@2.1.0:
resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==}
engines: {node: '>=6'}
@@ -14414,6 +14665,10 @@ packages:
ipaddr.js: 1.9.1
dev: false
+ /proxy-from-env@1.1.0:
+ resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
+ dev: false
+
/pseudomap@1.0.2:
resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==}
dev: false
@@ -15308,6 +15563,14 @@ packages:
resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==}
dev: false
+ /rollup@2.78.0:
+ resolution: {integrity: sha512-4+YfbQC9QEVvKTanHhIAFVUFSRsezvQF8vFOJwtGfb9Bb+r014S+qryr9PSmw8x6sMnPkmFBGAvIFVQxvJxjtg==}
+ engines: {node: '>=10.0.0'}
+ hasBin: true
+ optionalDependencies:
+ fsevents: 2.3.3
+ dev: false
+
/rollup@4.12.0:
resolution: {integrity: sha512-wz66wn4t1OHIJw3+XU7mJJQV/2NAfw5OAk6G6Hoo3zcvz/XOfQ52Vgi+AN4Uxoxi0KBBwk2g8zPrTDA4btSB/Q==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
@@ -17006,6 +17269,11 @@ packages:
engines: {node: '>=8'}
dev: false
+ /webpack-sources@3.2.3:
+ resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==}
+ engines: {node: '>=10.13.0'}
+ dev: false
+
/whatwg-fetch@3.6.20:
resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==}
dev: false