diff --git a/.gitignore b/.gitignore
index a8e3d3d..cc4b880 100644
--- a/.gitignore
+++ b/.gitignore
@@ -13,3 +13,6 @@ app/components/favicon/icon-192.png
app/components/favicon/icon-512.png
app/components/favicon/favicon.ico
public/favicon.ico
+
+# Sentry Config File
+.sentryclirc
diff --git a/app/components/hooks/webVitals.ts b/app/components/hooks/webVitals.ts
index ea1c650..c71c2d9 100644
--- a/app/components/hooks/webVitals.ts
+++ b/app/components/hooks/webVitals.ts
@@ -17,9 +17,13 @@ async function sendToAnalytics(metric: Metric) {
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
if (navigator.sendBeacon) {
- navigator.sendBeacon("/analytics", body)
+ navigator.sendBeacon("/analytics/performance", body)
} else {
- await fetch("/analytics", { body, method: "POST", keepalive: true })
+ await fetch("/analytics/performance", {
+ body,
+ method: "POST",
+ keepalive: true
+ })
}
}
diff --git a/app/entry.client.tsx b/app/entry.client.tsx
index 7b9576a..9f8b155 100644
--- a/app/entry.client.tsx
+++ b/app/entry.client.tsx
@@ -3,11 +3,27 @@
* You are free to delete this file if you'd like to, but if you ever want it revealed again, you can run `npx remix reveal` ✨
* For more information, see https://remix.run/file-conventions/entry.client
*/
-
-import { RemixBrowser } from "@remix-run/react"
-import { startTransition, StrictMode } from "react"
+import { RemixBrowser, useLocation, useMatches } from "@remix-run/react"
+import * as Sentry from "@sentry/remix"
+import { startTransition, StrictMode, useEffect } from "react"
import { hydrateRoot } from "react-dom/client"
+Sentry.init({
+ dsn: "https://6b45822a5e03ffef8414c88ea39e5d9c@o4507763603013632.ingest.de.sentry.io/4507763617300560",
+ tunnel: "/analytics/sentry",
+ tracesSampleRate: 1,
+ replaysSessionSampleRate: 0.1,
+ replaysOnErrorSampleRate: 1,
+
+ integrations: [
+ Sentry.browserTracingIntegration({
+ useEffect,
+ useLocation,
+ useMatches
+ })
+ ]
+})
+
startTransition(() => {
hydrateRoot(
document,
diff --git a/app/entry.server.tsx b/app/entry.server.tsx
index 21a2568..a1a99c0 100644
--- a/app/entry.server.tsx
+++ b/app/entry.server.tsx
@@ -1,21 +1,27 @@
/* eslint-disable max-params */
/* eslint-disable @typescript-eslint/prefer-promise-reject-errors */
-
/**
* By default, Remix will handle generating the HTTP Response for you.
* You are free to delete this file if you'd like to, but if you ever want it revealed again, you can run `npx remix reveal` ✨
* For more information, see https://remix.run/file-conventions/entry.server
*/
-
import { PassThrough } from "node:stream"
import zlib from "node:zlib"
import type { AppLoadContext, EntryContext } from "@remix-run/node"
import { createReadableStreamFromReadable } from "@remix-run/node"
import { RemixServer } from "@remix-run/react"
+import * as Sentry from "@sentry/remix"
import { isbot } from "isbot"
import { renderToPipeableStream } from "react-dom/server"
+export const handleError = Sentry.wrapHandleErrorWithSentry(
+ (error, { request }) => {
+ // Custom handleError implementation
+ console.error("An error occurred", error, request)
+ }
+)
+
const ABORT_DELAY = 5000
const INTERNAL_SERVER_ERROR = 500
const DEFAULT_CACHE_TIME_SECS = 60
diff --git a/app/root.tsx b/app/root.tsx
index 7c4832c..980231d 100644
--- a/app/root.tsx
+++ b/app/root.tsx
@@ -5,8 +5,10 @@ import {
Meta,
Outlet,
Scripts,
- ScrollRestoration
+ ScrollRestoration,
+ useRouteError
} from "@remix-run/react"
+import { captureRemixErrorBoundaryError } from "@sentry/remix"
import type { PropsWithChildren } from "react"
import { useWebVitals } from "./components/hooks/webVitals"
@@ -44,6 +46,12 @@ export function Layout({ children }: PropsWithChildren) {
)
}
+export function ErrorBoundary() {
+ const error = useRouteError()
+ captureRemixErrorBoundaryError(error)
+ return
Something went wrong
+}
+
export default function App() {
useWebVitals()
diff --git a/app/routes/analytics.tsx b/app/routes/analytics.performance.tsx
similarity index 89%
rename from app/routes/analytics.tsx
rename to app/routes/analytics.performance.tsx
index 36012b3..346c5a5 100644
--- a/app/routes/analytics.tsx
+++ b/app/routes/analytics.performance.tsx
@@ -1,3 +1,5 @@
+// This route is used to collect the Web Core Vitals data from the browser and store it in a DynamoDB table.
+// POST to /analytics/performance only
import awsLite from "@aws-lite/client"
import awsDynamoDB from "@aws-lite/dynamodb"
import type { ActionFunctionArgs } from "@remix-run/node"
diff --git a/app/routes/analytics.sentry.tsx b/app/routes/analytics.sentry.tsx
new file mode 100644
index 0000000..70b142a
--- /dev/null
+++ b/app/routes/analytics.sentry.tsx
@@ -0,0 +1,40 @@
+// This route is used as proxy to send the Sentry events from the browser to Sentry.
+// POST to /analytics/sentry only
+
+import type { ActionFunctionArgs } from "@remix-run/node"
+
+const SENTRY_HOST = "o4507763603013632.ingest.de.sentry.io"
+// eslint-disable-next-line @typescript-eslint/naming-convention
+const SENTRY_PROJECT_IDS = new Set(["4507763617300560"])
+
+export async function action({ request }: ActionFunctionArgs) {
+ try {
+ const envelope = await request.text()
+ const piece = envelope.split("\n")[0]
+ const header = JSON.parse(piece) as Record
+ const dsn = new URL(header.dsn)
+ const projectId = dsn.pathname.replace("/", "")
+
+ if (dsn.hostname !== SENTRY_HOST) {
+ throw new Error(`Invalid sentry hostname: ${dsn.hostname}`)
+ }
+
+ if (!projectId || !SENTRY_PROJECT_IDS.has(projectId)) {
+ throw new Error(`Invalid sentry project id: ${projectId}`)
+ }
+
+ const upstreamSentryUrl = `https://${SENTRY_HOST}/api/${projectId}/envelope/`
+ await fetch(upstreamSentryUrl, { method: "POST", body: envelope })
+
+ return new Response("{}", {
+ status: 200,
+ headers: { "Content-Type": "application/json" }
+ })
+ } catch (error) {
+ console.error("error tunneling to sentry", error)
+ return new Response(
+ JSON.stringify({ error: "error tunneling to sentry" }),
+ { status: 500, headers: { "Content-Type": "application/json" } }
+ )
+ }
+}
diff --git a/app/routes/sentry-example-page.tsx b/app/routes/sentry-example-page.tsx
new file mode 100644
index 0000000..31edc7b
--- /dev/null
+++ b/app/routes/sentry-example-page.tsx
@@ -0,0 +1,66 @@
+export default function SentryExamplePage() {
+ return (
+
+ )
+}
diff --git a/instrumentation.server.mjs b/instrumentation.server.mjs
new file mode 100644
index 0000000..c1adbb3
--- /dev/null
+++ b/instrumentation.server.mjs
@@ -0,0 +1,7 @@
+import * as Sentry from "@sentry/remix"
+
+Sentry.init({
+ dsn: "https://6b45822a5e03ffef8414c88ea39e5d9c@o4507763603013632.ingest.de.sentry.io/4507763617300560",
+ tracesSampleRate: 1,
+ autoInstrumentRemix: true
+})
diff --git a/package.json b/package.json
index 7af05af..57a3bc2 100644
--- a/package.json
+++ b/package.json
@@ -17,7 +17,7 @@
"build": "remix vite:build",
"dev": "remix vite:dev",
"sst:dev": "sst dev --stage development remix vite:dev",
- "start": "remix-serve ./build/server/index.js",
+ "start": "NODE_OPTIONS='--import ./instrumentation.server.mjs' remix-serve ./build/server/index.js",
"opt:svg": "svgo --folder app --recursive",
"update:latest": "ncu --deep --upgrade --interactive",
"update:minor": "ncu --deep --upgrade --interactive --target minor",
@@ -32,6 +32,8 @@
"@remix-run/node": "^2.11.0",
"@remix-run/react": "^2.11.0",
"@remix-run/serve": "^2.11.0",
+ "@sentry/remix": "^8.25.0",
+ "@sentry/vite-plugin": "^2.22.0",
"@unpic/react": "^0.1.14",
"clsx": "^2.1.1",
"feed": "^4.2.2",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index cfed41f..c616f5c 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -26,6 +26,12 @@ importers:
'@remix-run/serve':
specifier: ^2.11.0
version: 2.11.0(typescript@5.5.4)
+ '@sentry/remix':
+ specifier: ^8.25.0
+ version: 8.25.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.25.1(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.52.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.25.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.25.1)(@remix-run/node@2.11.0(typescript@5.5.4))(@remix-run/react@2.11.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4))(react@18.3.1)
+ '@sentry/vite-plugin':
+ specifier: ^2.22.0
+ version: 2.22.0
'@unpic/react':
specifier: ^0.1.14
version: 0.1.14(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -1998,10 +2004,173 @@ packages:
resolution: {integrity: sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==}
engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
+ '@opentelemetry/api-logs@0.52.1':
+ resolution: {integrity: sha512-qnSqB2DQ9TPP96dl8cDubDvrUyWc0/sK81xHTK8eSUspzDM3bsewX903qclQFvVhgStjRWdC5bLb3kQqMkfV5A==}
+ engines: {node: '>=14'}
+
+ '@opentelemetry/api@1.9.0':
+ resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==}
+ engines: {node: '>=8.0.0'}
+
+ '@opentelemetry/context-async-hooks@1.25.1':
+ resolution: {integrity: sha512-UW/ge9zjvAEmRWVapOP0qyCvPulWU6cQxGxDbWEFfGOj1VBBZAuOqTo3X6yWmDTD3Xe15ysCZChHncr2xFMIfQ==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ '@opentelemetry/api': '>=1.0.0 <1.10.0'
+
+ '@opentelemetry/core@1.25.1':
+ resolution: {integrity: sha512-GeT/l6rBYWVQ4XArluLVB6WWQ8flHbdb6r2FCHC3smtdOAbrJBIv35tpV/yp9bmYUJf+xmZpu9DRTIeJVhFbEQ==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ '@opentelemetry/api': '>=1.0.0 <1.10.0'
+
+ '@opentelemetry/instrumentation-connect@0.38.0':
+ resolution: {integrity: sha512-2/nRnx3pjYEmdPIaBwtgtSviTKHWnDZN3R+TkRUnhIVrvBKVcq+I5B2rtd6mr6Fe9cHlZ9Ojcuh7pkNh/xdWWg==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ '@opentelemetry/api': ^1.3.0
+
+ '@opentelemetry/instrumentation-express@0.41.1':
+ resolution: {integrity: sha512-uRx0V3LPGzjn2bxAnV8eUsDT82vT7NTwI0ezEuPMBOTOsnPpGhWdhcdNdhH80sM4TrWrOfXm9HGEdfWE3TRIww==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ '@opentelemetry/api': ^1.3.0
+
+ '@opentelemetry/instrumentation-fastify@0.38.0':
+ resolution: {integrity: sha512-HBVLpTSYpkQZ87/Df3N0gAw7VzYZV3n28THIBrJWfuqw3Or7UqdhnjeuMIPQ04BKk3aZc0cWn2naSQObbh5vXw==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ '@opentelemetry/api': ^1.3.0
+
+ '@opentelemetry/instrumentation-graphql@0.42.0':
+ resolution: {integrity: sha512-N8SOwoKL9KQSX7z3gOaw5UaTeVQcfDO1c21csVHnmnmGUoqsXbArK2B8VuwPWcv6/BC/i3io+xTo7QGRZ/z28Q==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ '@opentelemetry/api': ^1.3.0
+
+ '@opentelemetry/instrumentation-hapi@0.40.0':
+ resolution: {integrity: sha512-8U/w7Ifumtd2bSN1OLaSwAAFhb9FyqWUki3lMMB0ds+1+HdSxYBe9aspEJEgvxAqOkrQnVniAPTEGf1pGM7SOw==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ '@opentelemetry/api': ^1.3.0
+
+ '@opentelemetry/instrumentation-http@0.52.1':
+ resolution: {integrity: sha512-dG/aevWhaP+7OLv4BQQSEKMJv8GyeOp3Wxl31NHqE8xo9/fYMfEljiZphUHIfyg4gnZ9swMyWjfOQs5GUQe54Q==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ '@opentelemetry/api': ^1.3.0
+
+ '@opentelemetry/instrumentation-ioredis@0.42.0':
+ resolution: {integrity: sha512-P11H168EKvBB9TUSasNDOGJCSkpT44XgoM6d3gRIWAa9ghLpYhl0uRkS8//MqPzcJVHr3h3RmfXIpiYLjyIZTw==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ '@opentelemetry/api': ^1.3.0
+
+ '@opentelemetry/instrumentation-koa@0.42.0':
+ resolution: {integrity: sha512-H1BEmnMhho8o8HuNRq5zEI4+SIHDIglNB7BPKohZyWG4fWNuR7yM4GTlR01Syq21vODAS7z5omblScJD/eZdKw==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ '@opentelemetry/api': ^1.3.0
+
+ '@opentelemetry/instrumentation-mongodb@0.46.0':
+ resolution: {integrity: sha512-VF/MicZ5UOBiXrqBslzwxhN7TVqzu1/LN/QDpkskqM0Zm0aZ4CVRbUygL8d7lrjLn15x5kGIe8VsSphMfPJzlA==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ '@opentelemetry/api': ^1.3.0
+
+ '@opentelemetry/instrumentation-mongoose@0.40.0':
+ resolution: {integrity: sha512-niRi5ZUnkgzRhIGMOozTyoZIvJKNJyhijQI4nF4iFSb+FUx2v5fngfR+8XLmdQAO7xmsD8E5vEGdDVYVtKbZew==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ '@opentelemetry/api': ^1.3.0
+
+ '@opentelemetry/instrumentation-mysql2@0.40.0':
+ resolution: {integrity: sha512-0xfS1xcqUmY7WE1uWjlmI67Xg3QsSUlNT+AcXHeA4BDUPwZtWqF4ezIwLgpVZfHOnkAEheqGfNSWd1PIu3Wnfg==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ '@opentelemetry/api': ^1.3.0
+
+ '@opentelemetry/instrumentation-mysql@0.40.0':
+ resolution: {integrity: sha512-d7ja8yizsOCNMYIJt5PH/fKZXjb/mS48zLROO4BzZTtDfhNCl2UM/9VIomP2qkGIFVouSJrGr/T00EzY7bPtKA==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ '@opentelemetry/api': ^1.3.0
+
+ '@opentelemetry/instrumentation-nestjs-core@0.39.0':
+ resolution: {integrity: sha512-mewVhEXdikyvIZoMIUry8eb8l3HUjuQjSjVbmLVTt4NQi35tkpnHQrG9bTRBrl3403LoWZ2njMPJyg4l6HfKvA==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ '@opentelemetry/api': ^1.3.0
+
+ '@opentelemetry/instrumentation-pg@0.43.0':
+ resolution: {integrity: sha512-og23KLyoxdnAeFs1UWqzSonuCkePUzCX30keSYigIzJe/6WSYA8rnEI5lobcxPEzg+GcU06J7jzokuEHbjVJNw==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ '@opentelemetry/api': ^1.3.0
+
+ '@opentelemetry/instrumentation-redis-4@0.41.0':
+ resolution: {integrity: sha512-H7IfGTqW2reLXqput4yzAe8YpDC0fmVNal95GHMLOrS89W+qWUKIqxolSh63hJyfmwPSFwXASzj7wpSk8Az+Dg==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ '@opentelemetry/api': ^1.3.0
+
+ '@opentelemetry/instrumentation@0.43.0':
+ resolution: {integrity: sha512-S1uHE+sxaepgp+t8lvIDuRgyjJWisAb733198kwQTUc9ZtYQ2V2gmyCtR1x21ePGVLoMiX/NWY7WA290hwkjJQ==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ '@opentelemetry/api': ^1.3.0
+
+ '@opentelemetry/instrumentation@0.46.0':
+ resolution: {integrity: sha512-a9TijXZZbk0vI5TGLZl+0kxyFfrXHhX6Svtz7Pp2/VBlCSKrazuULEyoJQrOknJyFWNMEmbbJgOciHCCpQcisw==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ '@opentelemetry/api': ^1.3.0
+
+ '@opentelemetry/instrumentation@0.52.1':
+ resolution: {integrity: sha512-uXJbYU/5/MBHjMp1FqrILLRuiJCs3Ofk0MeRDk8g1S1gD47U8X3JnSwcMO1rtRo1x1a7zKaQHaoYu49p/4eSKw==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ '@opentelemetry/api': ^1.3.0
+
+ '@opentelemetry/redis-common@0.36.2':
+ resolution: {integrity: sha512-faYX1N0gpLhej/6nyp6bgRjzAKXn5GOEMYY7YhciSfCoITAktLUtQ36d24QEWNA1/WA1y6qQunCe0OhHRkVl9g==}
+ engines: {node: '>=14'}
+
+ '@opentelemetry/resources@1.25.1':
+ resolution: {integrity: sha512-pkZT+iFYIZsVn6+GzM0kSX+u3MSLCY9md+lIJOoKl/P+gJFfxJte/60Usdp8Ce4rOs8GduUpSPNe1ddGyDT1sQ==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ '@opentelemetry/api': '>=1.0.0 <1.10.0'
+
+ '@opentelemetry/sdk-metrics@1.25.1':
+ resolution: {integrity: sha512-9Mb7q5ioFL4E4dDrc4wC/A3NTHDat44v4I3p2pLPSxRvqUbDIQyMVr9uK+EU69+HWhlET1VaSrRzwdckWqY15Q==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ '@opentelemetry/api': '>=1.3.0 <1.10.0'
+
+ '@opentelemetry/sdk-trace-base@1.25.1':
+ resolution: {integrity: sha512-C8k4hnEbc5FamuZQ92nTOp8X/diCY56XUTnMiv9UTuJitCzaNNHAVsdm5+HLCdI8SLQsLWIrG38tddMxLVoftw==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ '@opentelemetry/api': '>=1.0.0 <1.10.0'
+
+ '@opentelemetry/semantic-conventions@1.25.1':
+ resolution: {integrity: sha512-ZDjMJJQRlyk8A1KZFCc+bCbsyrn1wTwdNt56F7twdfUfnHUZUq77/WfONCj8p72NZOyP7pNTdUWSTYC3GTbuuQ==}
+ engines: {node: '>=14'}
+
+ '@opentelemetry/sql-common@0.40.1':
+ resolution: {integrity: sha512-nSDlnHSqzC3pXn/wZEZVLuAuJ1MYMXPBwtv2qAbCa3847SaHItdE7SzUq/Jtb0KZmh1zfAbNi3AAMjztTT4Ugg==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ '@opentelemetry/api': ^1.1.0
+
'@pkgjs/parseargs@0.11.0':
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
engines: {node: '>=14'}
+ '@prisma/instrumentation@5.17.0':
+ resolution: {integrity: sha512-c1Sle4ji8aasMcYfBBHFM56We4ljfenVtRmS8aY06BllS7SoU6SmJBwG7vil+GHiR0Yrh+t9iBwt4AY0Jr4KNQ==}
+
'@remix-run/dev@2.11.0':
resolution: {integrity: sha512-oaNE6EG2+r8GUmDCBjsjQC00UbwUs7ssrmOZB4AK1KYpAxRlZRow3NhUdpb9XDfTnIDOdFYCvjPwvWe747y8yg==}
engines: {node: '>=18.0.0'}
@@ -2160,6 +2329,125 @@ packages:
cpu: [x64]
os: [win32]
+ '@sentry-internal/browser-utils@8.25.0':
+ resolution: {integrity: sha512-nlWgp1lVhNQOTUplW85G3qm0fOIgAhJ/sl/31OIuScVrITYhYDF2bO+Zv/jQ8YsdUBAUXqY1tPT9wwPJklnPhw==}
+ engines: {node: '>=14.18'}
+
+ '@sentry-internal/feedback@8.25.0':
+ resolution: {integrity: sha512-327I5XJAFrsgjc5qUKxZ9rff3WNCfGvf1fIii70LQ2YQhQgG4XHZILmkD06ETEyXb+H1tkrNQQEJ1/d4ai+q5g==}
+ engines: {node: '>=14.18'}
+
+ '@sentry-internal/replay-canvas@8.25.0':
+ resolution: {integrity: sha512-dPXlkAbkFL1DBum8rGTaHS+apJKaXEZJF9gLcBBKTruhTCizrugFLxajzIfVSiFVuwNKuJWa2fzhzbeQM0ee7w==}
+ engines: {node: '>=14.18'}
+
+ '@sentry-internal/replay@8.25.0':
+ resolution: {integrity: sha512-3f7x8EYthyj157uV9V8vBjun+1gJnHhh2+i0qxYLhMGx7N2Fq0J3Bvvo1rosSg+fYh5HzPNZDufwIRdg5C/MQw==}
+ engines: {node: '>=14.18'}
+
+ '@sentry/babel-plugin-component-annotate@2.22.0':
+ resolution: {integrity: sha512-UzH+NNhgnOo6UFku3C4TEz+pO/yDcIA5FKTJvLbJ7lQwAjsqLs3DZWm4cCA08skICb8mULArF6S/dn5/butVCA==}
+ engines: {node: '>= 14'}
+
+ '@sentry/browser@8.25.0':
+ resolution: {integrity: sha512-51bdVGXjyooqVGzaSGsnExqRTt9NvZ1zGFsxbbCSXi5UoEFN6zdMUz6jKYsL2K80eeELP2VKOVlobHlEzeJQfw==}
+ engines: {node: '>=14.18'}
+
+ '@sentry/bundler-plugin-core@2.22.0':
+ resolution: {integrity: sha512-/xXN8o7565WMsewBnQFfjm0E5wqhYsegg++HJ5RjrY/cTM4qcd/ven44GEMxqGFJitZizvkk3NHszaHylzcRUw==}
+ engines: {node: '>= 14'}
+
+ '@sentry/cli-darwin@2.33.1':
+ resolution: {integrity: sha512-+4/VIx/E1L2hChj5nGf5MHyEPHUNHJ/HoG5RY+B+vyEutGily1c1+DM2bum7RbD0xs6wKLIyup5F02guzSzG8A==}
+ engines: {node: '>=10'}
+ os: [darwin]
+
+ '@sentry/cli-linux-arm64@2.33.1':
+ resolution: {integrity: sha512-DbGV56PRKOLsAZJX27Jt2uZ11QfQEMmWB4cIvxkKcFVE+LJP4MVA+MGGRUL6p+Bs1R9ZUuGbpKGtj0JiG6CoXw==}
+ engines: {node: '>=10'}
+ cpu: [arm64]
+ os: [linux, freebsd]
+
+ '@sentry/cli-linux-arm@2.33.1':
+ resolution: {integrity: sha512-zbxEvQju+tgNvzTOt635le4kS/Fbm2XC2RtYbCTs034Vb8xjrAxLnK0z1bQnStUV8BkeBHtsNVrG+NSQDym2wg==}
+ engines: {node: '>=10'}
+ cpu: [arm]
+ os: [linux, freebsd]
+
+ '@sentry/cli-linux-i686@2.33.1':
+ resolution: {integrity: sha512-g2LS4oPXkPWOfKWukKzYp4FnXVRRSwBxhuQ9eSw2peeb58ZIObr4YKGOA/8HJRGkooBJIKGaAR2mH2Pk1TKaiA==}
+ engines: {node: '>=10'}
+ cpu: [x86, ia32]
+ os: [linux, freebsd]
+
+ '@sentry/cli-linux-x64@2.33.1':
+ resolution: {integrity: sha512-IV3dcYV/ZcvO+VGu9U6kuxSdbsV2kzxaBwWUQxtzxJ+cOa7J8Hn1t0koKGtU53JVZNBa06qJWIcqgl4/pCuKIg==}
+ engines: {node: '>=10'}
+ cpu: [x64]
+ os: [linux, freebsd]
+
+ '@sentry/cli-win32-i686@2.33.1':
+ resolution: {integrity: sha512-F7cJySvkpzIu7fnLKNHYwBzZYYwlhoDbAUnaFX0UZCN+5DNp/5LwTp37a5TWOsmCaHMZT4i9IO4SIsnNw16/zQ==}
+ engines: {node: '>=10'}
+ cpu: [x86, ia32]
+ os: [win32]
+
+ '@sentry/cli-win32-x64@2.33.1':
+ resolution: {integrity: sha512-8VyRoJqtb2uQ8/bFRKNuACYZt7r+Xx0k2wXRGTyH05lCjAiVIXn7DiS2BxHFty7M1QEWUCMNsb/UC/x/Cu2wuA==}
+ engines: {node: '>=10'}
+ cpu: [x64]
+ os: [win32]
+
+ '@sentry/cli@2.33.1':
+ resolution: {integrity: sha512-dUlZ4EFh98VFRPJ+f6OW3JEYQ7VvqGNMa0AMcmvk07ePNeK/GicAWmSQE4ZfJTTl80ul6HZw1kY01fGQOQlVRA==}
+ engines: {node: '>= 10'}
+ hasBin: true
+
+ '@sentry/core@8.25.0':
+ resolution: {integrity: sha512-7KtglbrW1eX4DOHkf6i4rRIExEf2CgtQ99qZ8gn5FUaAmNMg0rK7bb1yZMx0RZtp5G1TSz/S0jQQgxHWebaEig==}
+ engines: {node: '>=14.18'}
+
+ '@sentry/node@8.25.0':
+ resolution: {integrity: sha512-KFeJpYU/7CKi/v8D72ztniA+QqH0yBv2wzEP0PUe3DWZ/Fwl0OQSVWNNuDfJBQUvk3NrytCH5A6klZjU0/rwlw==}
+ engines: {node: '>=14.18'}
+
+ '@sentry/opentelemetry@8.25.0':
+ resolution: {integrity: sha512-6g4TXwQMHtvmlu2i1OKqvFD2W2RTrGBxDtJ1tBQmqCfHKyiqQ37gy6AozuwrQ3po1KKbawaQGIFNEzb4wnSrfA==}
+ engines: {node: '>=14.18'}
+ peerDependencies:
+ '@opentelemetry/api': ^1.9.0
+ '@opentelemetry/core': ^1.25.1
+ '@opentelemetry/instrumentation': ^0.52.1
+ '@opentelemetry/sdk-trace-base': ^1.25.1
+ '@opentelemetry/semantic-conventions': ^1.25.1
+
+ '@sentry/react@8.25.0':
+ resolution: {integrity: sha512-A3QeSCJEa+lpo5nh0kxKeqsmnuW2nycKNN/0bpXPv5T5jiEfExSmEBVM0zutrQpf+J0WRIl1AGunUYGPO+GPQg==}
+ engines: {node: '>=14.18'}
+ peerDependencies:
+ react: ^16.14.0 || 17.x || 18.x || 19.x
+
+ '@sentry/remix@8.25.0':
+ resolution: {integrity: sha512-VUy1twFhbFRgEKWkPWTjKABsjSj/XZ7bJRskU3NACMuVOGgwcZKKkWZyHu0P5ApMAmswaq2MD2ERuKRCageMVw==}
+ engines: {node: '>=14.18'}
+ hasBin: true
+ peerDependencies:
+ '@remix-run/node': 1.x || 2.x
+ '@remix-run/react': 1.x || 2.x
+ react: 16.x || 17.x || 18.x
+
+ '@sentry/types@8.25.0':
+ resolution: {integrity: sha512-ojim0gDcRhGJPguYrtms4FsprX4xZz3LGNk9Z0hwTbSVEdlhQIInsQ7CYcdM3sjUs+qT7kfpxTRZGUeZNRRJcA==}
+ engines: {node: '>=14.18'}
+
+ '@sentry/utils@8.25.0':
+ resolution: {integrity: sha512-mVlkV7S62ZZ2jM38/kOwWx2xoW8fUv2cjw2IwFKoAIPyLBh3mo1WJtvfdtN/rXGjQWZJBKW53EWaWnD00rkjyA==}
+ engines: {node: '>=14.18'}
+
+ '@sentry/vite-plugin@2.22.0':
+ resolution: {integrity: sha512-U1dWldo3gb1oDqERgiSM7zexMwAuqiXO/YUO3xVSpWmhoHz2AqxOcfIX1SygW02NF7Ss3ay4qMAta8PbvdsrnQ==}
+ engines: {node: '>= 14'}
+
'@sindresorhus/merge-streams@2.3.0':
resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==}
engines: {node: '>=18'}
@@ -2571,6 +2859,9 @@ packages:
'@types/body-parser@1.19.5':
resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==}
+ '@types/connect@3.4.36':
+ resolution: {integrity: sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==}
+
'@types/connect@3.4.38':
resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==}
@@ -2634,6 +2925,9 @@ packages:
'@types/ms@0.7.34':
resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==}
+ '@types/mysql@2.15.22':
+ resolution: {integrity: sha512-wK1pzsJVVAjYCSZWQoWHziQZbNggXFDUEIGf54g4ZM/ERuP86uGdWeKZWMYlqTPMZfHJJvLPyogXGvCOg87yLQ==}
+
'@types/node@16.18.104':
resolution: {integrity: sha512-OF3keVCbfPlkzxnnDBUZJn1RiCJzKeadjiW0xTEb0G1SUJ5gDVb3qnzZr2T4uIFvsbKJbXy1v2DN7e2zaEY7jQ==}
@@ -2646,6 +2940,12 @@ packages:
'@types/normalize-package-data@2.4.4':
resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==}
+ '@types/pg-pool@2.0.4':
+ resolution: {integrity: sha512-qZAvkv1K3QbmHHFYSNRYPkRjOWRLBYrL4B9c+wG0GSVGBw0NtJwPcgx/DSddeDJvRGMHCEQ4VMEVfuJ/0gZ3XQ==}
+
+ '@types/pg@8.6.1':
+ resolution: {integrity: sha512-1Kc4oAGzAl7uqUStZCDvaLFqZrW9qWSjXOmBfdgyBP5La7Us6Mg4GBvRlSoaZMhQF/zSj1C8CtKMBkoiT8eL8w==}
+
'@types/prop-types@15.7.11':
resolution: {integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==}
@@ -2670,6 +2970,9 @@ packages:
'@types/serve-static@1.15.7':
resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==}
+ '@types/shimmer@1.2.0':
+ resolution: {integrity: sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg==}
+
'@types/unist@2.0.10':
resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==}
@@ -2809,6 +3112,16 @@ packages:
resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==}
engines: {node: '>= 0.6'}
+ acorn-import-assertions@1.9.0:
+ resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==}
+ peerDependencies:
+ acorn: ^8
+
+ acorn-import-attributes@1.9.5:
+ resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==}
+ peerDependencies:
+ acorn: ^8
+
acorn-jsx@5.3.2:
resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
peerDependencies:
@@ -2832,6 +3145,10 @@ packages:
engines: {node: '>=0.4.0'}
hasBin: true
+ agent-base@6.0.2:
+ resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==}
+ engines: {node: '>= 6.0.0'}
+
aggregate-error@3.1.0:
resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==}
engines: {node: '>=8'}
@@ -3132,6 +3449,9 @@ packages:
citty@0.1.6:
resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==}
+ cjs-module-lexer@1.3.1:
+ resolution: {integrity: sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==}
+
clean-regexp@1.0.0:
resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==}
engines: {node: '>=4'}
@@ -3376,6 +3696,15 @@ packages:
supports-color:
optional: true
+ debug@4.3.6:
+ resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
decode-bmp@0.2.1:
resolution: {integrity: sha512-NiOaGe+GN0KJqi2STf24hfMkFitDUaIoUU3eKvP/wAbLe8o6FuW5n/x7MHPR0HKvBokp6MQY/j7w8lewEeVCIA==}
engines: {node: '>=8.6.0'}
@@ -4021,6 +4350,10 @@ packages:
resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
deprecated: Glob versions prior to v9 are no longer supported
+ glob@9.3.5:
+ resolution: {integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==}
+ engines: {node: '>=16 || 14 >=14.17'}
+
global-directory@4.0.1:
resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==}
engines: {node: '>=18'}
@@ -4110,6 +4443,9 @@ packages:
hast-util-whitespace@3.0.0:
resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==}
+ hoist-non-react-statics@3.3.2:
+ resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==}
+
hosted-git-info@2.8.9:
resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==}
@@ -4129,6 +4465,10 @@ packages:
resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==}
engines: {node: '>= 0.8'}
+ https-proxy-agent@5.0.1:
+ resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==}
+ engines: {node: '>= 6'}
+
human-signals@2.1.0:
resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
engines: {node: '>=10.17.0'}
@@ -4161,6 +4501,15 @@ packages:
resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
engines: {node: '>=6'}
+ import-in-the-middle@1.11.0:
+ resolution: {integrity: sha512-5DimNQGoe0pLUHbR9qK84iWaWjjbsxiqXnw6Qz64+azRgleqv9k2kTt5fw7QsOpmaGYtuxxursnPPsnTKEx10Q==}
+
+ import-in-the-middle@1.4.2:
+ resolution: {integrity: sha512-9WOz1Yh/cvO/p69sxRmhyQwrIGGSp7EIdcb+fFNVi7CzQGQB8U1/1XrKVSbEd/GNOAeM0peJtmi7+qphe7NvAw==}
+
+ import-in-the-middle@1.7.1:
+ resolution: {integrity: sha512-1LrZPDtW+atAxH42S6288qyDFNQ2YCty+2mxEPRtfazH6Z5QwkaBSTS2ods7hnVJioF6rkRfNoA6A/MstpFXLg==}
+
import-meta-resolve@4.1.0:
resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==}
@@ -4632,6 +4981,10 @@ packages:
resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==}
engines: {node: '>=12'}
+ magic-string@0.30.8:
+ resolution: {integrity: sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==}
+ engines: {node: '>=12'}
+
make-dir@2.1.0:
resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==}
engines: {node: '>=6'}
@@ -4947,6 +5300,10 @@ packages:
minimatch@3.1.2:
resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
+ minimatch@8.0.4:
+ resolution: {integrity: sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==}
+ engines: {node: '>=16 || 14 >=14.17'}
+
minimatch@9.0.4:
resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==}
engines: {node: '>=16 || 14 >=14.17'}
@@ -4970,6 +5327,10 @@ packages:
resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==}
engines: {node: '>=8'}
+ minipass@4.2.8:
+ resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==}
+ engines: {node: '>=8'}
+
minipass@5.0.0:
resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==}
engines: {node: '>=8'}
@@ -5002,6 +5363,9 @@ packages:
modern-ahocorasick@1.0.1:
resolution: {integrity: sha512-yoe+JbhTClckZ67b2itRtistFKf8yPYelHLc7e5xAwtNAXxM6wJTUx2C7QeVSJFDzKT7bCIFyBVybPMKvmB9AA==}
+ module-details-from-path@1.0.3:
+ resolution: {integrity: sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==}
+
morgan@1.10.0:
resolution: {integrity: sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==}
engines: {node: '>= 0.8.0'}
@@ -5050,6 +5414,15 @@ packages:
node-fetch-native@1.6.4:
resolution: {integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==}
+ node-fetch@2.7.0:
+ resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==}
+ engines: {node: 4.x || >=6.0.0}
+ peerDependencies:
+ encoding: ^0.1.0
+ peerDependenciesMeta:
+ encoding:
+ optional: true
+
node-releases@2.0.14:
resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==}
@@ -5176,6 +5549,17 @@ packages:
openid-client@5.6.4:
resolution: {integrity: sha512-T1h3B10BRPKfcObdBklX639tVz+xh34O7GjofqrqiAQdm7eHsQ00ih18x6wuJ/E6FxdtS2u3FmUGPDeEcMwzNA==}
+ opentelemetry-instrumentation-fetch-node@1.2.3:
+ resolution: {integrity: sha512-Qb11T7KvoCevMaSeuamcLsAD+pZnavkhDnlVL0kRozfhl42dKG5Q3anUklAFKJZjY3twLR+BnRa6DlwwkIE/+A==}
+ engines: {node: '>18.0.0'}
+ peerDependencies:
+ '@opentelemetry/api': ^1.6.0
+
+ opentelemetry-instrumentation-remix@0.7.1:
+ resolution: {integrity: sha512-zzJ8CAsf4Pem+B1zY0NEKQcQjXIORgylPBIQMO2x1OdRc9HzBPLUp7JIlGt/RAfPsp5qaEs7QqvX9xtsrZgtFQ==}
+ peerDependencies:
+ '@opentelemetry/api': ^1.3.0
+
optionator@0.9.3:
resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==}
engines: {node: '>= 0.8.0'}
@@ -5306,6 +5690,17 @@ packages:
periscopic@3.1.0:
resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==}
+ pg-int8@1.0.1:
+ resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==}
+ engines: {node: '>=4.0.0'}
+
+ pg-protocol@1.6.1:
+ resolution: {integrity: sha512-jPIlvgoD63hrEuihvIg+tJhoGjUsLPn6poJY9N5CnlPd91c2T18T/9zBtLxZSb1EhYxBRoZJtzScCaWlYLtktg==}
+
+ pg-types@2.2.0:
+ resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==}
+ engines: {node: '>=4'}
+
picocolors@1.0.0:
resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
@@ -5405,6 +5800,22 @@ packages:
resolution: {integrity: sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==}
engines: {node: ^10 || ^12 || >=14}
+ postgres-array@2.0.0:
+ resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==}
+ engines: {node: '>=4'}
+
+ postgres-bytea@1.0.0:
+ resolution: {integrity: sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==}
+ engines: {node: '>=0.10.0'}
+
+ postgres-date@1.0.7:
+ resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==}
+ engines: {node: '>=0.10.0'}
+
+ postgres-interval@1.2.0:
+ resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==}
+ engines: {node: '>=0.10.0'}
+
prelude-ls@1.2.1:
resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
engines: {node: '>= 0.8.0'}
@@ -5434,6 +5845,10 @@ packages:
resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==}
engines: {node: '>= 0.6.0'}
+ progress@2.0.3:
+ resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==}
+ engines: {node: '>=0.4.0'}
+
promise-inflight@1.0.1:
resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==}
peerDependencies:
@@ -5460,6 +5875,9 @@ packages:
resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
engines: {node: '>= 0.10'}
+ proxy-from-env@1.1.0:
+ resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
+
pump@2.0.1:
resolution: {integrity: sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==}
@@ -5641,6 +6059,10 @@ packages:
resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
engines: {node: '>=0.10.0'}
+ require-in-the-middle@7.4.0:
+ resolution: {integrity: sha512-X34iHADNbNDfr6OTStIAHWSAvvKQRYgLO6duASaVf7J2VA3lvmNYboAHOuLC2huav1IwgZJtyEcJCKVzFxOSMQ==}
+ engines: {node: '>=8.6.0'}
+
require-like@0.1.2:
resolution: {integrity: sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A==}
@@ -5785,6 +6207,9 @@ packages:
resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
engines: {node: '>=8'}
+ shimmer@1.2.1:
+ resolution: {integrity: sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==}
+
side-channel@1.0.6:
resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==}
engines: {node: '>= 0.4'}
@@ -6055,6 +6480,9 @@ packages:
toml@3.0.0:
resolution: {integrity: sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==}
+ tr46@0.0.3:
+ resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
+
trim-lines@3.0.1:
resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==}
@@ -6291,6 +6719,9 @@ packages:
resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
engines: {node: '>= 0.8'}
+ unplugin@1.0.1:
+ resolution: {integrity: sha512-aqrHaVBWW1JVKBHmGo33T5TxeL0qWzfvjWokObHA9bYmN7eNDkwOxmLjhioHl9878qDFMAaT51XNroRyuz7WxA==}
+
update-browserslist-db@1.0.13:
resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==}
hasBin: true
@@ -6408,6 +6839,19 @@ packages:
web-vitals@4.2.2:
resolution: {integrity: sha512-nYfoOqb4EmElljyXU2qdeE76KsvoHdftQKY4DzA9Aw8DervCg2bG634pHLrJ/d6+B4mE3nWTSJv8Mo7B2mbZkw==}
+ webidl-conversions@3.0.1:
+ resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
+
+ webpack-sources@3.2.3:
+ resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==}
+ engines: {node: '>=10.13.0'}
+
+ webpack-virtual-modules@0.5.0:
+ resolution: {integrity: sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==}
+
+ whatwg-url@5.0.0:
+ resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
+
which-boxed-primitive@1.0.2:
resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==}
@@ -7435,7 +7879,7 @@ snapshots:
'@babel/core': 7.24.0
'@babel/helper-compilation-targets': 7.24.8
'@babel/helper-plugin-utils': 7.24.8
- debug: 4.3.4
+ debug: 4.3.6
lodash.debounce: 4.0.8
resolve: 1.22.8
transitivePeerDependencies:
@@ -9049,9 +9493,232 @@ snapshots:
dependencies:
which: 3.0.1
+ '@opentelemetry/api-logs@0.52.1':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+
+ '@opentelemetry/api@1.9.0': {}
+
+ '@opentelemetry/context-async-hooks@1.25.1(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+
+ '@opentelemetry/core@1.25.1(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/semantic-conventions': 1.25.1
+
+ '@opentelemetry/instrumentation-connect@0.38.0(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.25.1
+ '@types/connect': 3.4.36
+ transitivePeerDependencies:
+ - supports-color
+
+ '@opentelemetry/instrumentation-express@0.41.1(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.25.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@opentelemetry/instrumentation-fastify@0.38.0(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.25.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@opentelemetry/instrumentation-graphql@0.42.0(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0)
+ transitivePeerDependencies:
+ - supports-color
+
+ '@opentelemetry/instrumentation-hapi@0.40.0(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.25.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@opentelemetry/instrumentation-http@0.52.1(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.25.1
+ semver: 7.6.0
+ transitivePeerDependencies:
+ - supports-color
+
+ '@opentelemetry/instrumentation-ioredis@0.42.0(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/redis-common': 0.36.2
+ '@opentelemetry/semantic-conventions': 1.25.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@opentelemetry/instrumentation-koa@0.42.0(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.25.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@opentelemetry/instrumentation-mongodb@0.46.0(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/sdk-metrics': 1.25.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.25.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@opentelemetry/instrumentation-mongoose@0.40.0(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.25.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@opentelemetry/instrumentation-mysql2@0.40.0(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.25.1
+ '@opentelemetry/sql-common': 0.40.1(@opentelemetry/api@1.9.0)
+ transitivePeerDependencies:
+ - supports-color
+
+ '@opentelemetry/instrumentation-mysql@0.40.0(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.25.1
+ '@types/mysql': 2.15.22
+ transitivePeerDependencies:
+ - supports-color
+
+ '@opentelemetry/instrumentation-nestjs-core@0.39.0(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.25.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@opentelemetry/instrumentation-pg@0.43.0(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.25.1
+ '@opentelemetry/sql-common': 0.40.1(@opentelemetry/api@1.9.0)
+ '@types/pg': 8.6.1
+ '@types/pg-pool': 2.0.4
+ transitivePeerDependencies:
+ - supports-color
+
+ '@opentelemetry/instrumentation-redis-4@0.41.0(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/redis-common': 0.36.2
+ '@opentelemetry/semantic-conventions': 1.25.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@opentelemetry/instrumentation@0.43.0(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@types/shimmer': 1.2.0
+ import-in-the-middle: 1.4.2
+ require-in-the-middle: 7.4.0
+ semver: 7.6.0
+ shimmer: 1.2.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@opentelemetry/instrumentation@0.46.0(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@types/shimmer': 1.2.0
+ import-in-the-middle: 1.7.1
+ require-in-the-middle: 7.4.0
+ semver: 7.6.0
+ shimmer: 1.2.1
+ transitivePeerDependencies:
+ - supports-color
+ optional: true
+
+ '@opentelemetry/instrumentation@0.52.1(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/api-logs': 0.52.1
+ '@types/shimmer': 1.2.0
+ import-in-the-middle: 1.11.0
+ require-in-the-middle: 7.4.0
+ semver: 7.6.0
+ shimmer: 1.2.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@opentelemetry/redis-common@0.36.2': {}
+
+ '@opentelemetry/resources@1.25.1(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.25.1
+
+ '@opentelemetry/sdk-metrics@1.25.1(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/resources': 1.25.1(@opentelemetry/api@1.9.0)
+ lodash.merge: 4.6.2
+
+ '@opentelemetry/sdk-trace-base@1.25.1(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/resources': 1.25.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.25.1
+
+ '@opentelemetry/semantic-conventions@1.25.1': {}
+
+ '@opentelemetry/sql-common@0.40.1(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0)
+
'@pkgjs/parseargs@0.11.0':
optional: true
+ '@prisma/instrumentation@5.17.0':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/sdk-trace-base': 1.25.1(@opentelemetry/api@1.9.0)
+ transitivePeerDependencies:
+ - supports-color
+
'@remix-run/dev@2.11.0(@remix-run/react@2.11.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4))(@remix-run/serve@2.11.0(typescript@5.5.4))(@types/node@20.14.13)(ts-node@10.9.2(@types/node@20.14.13)(typescript@5.5.4))(typescript@5.5.4)(vite@5.3.5(@types/node@20.14.13))':
dependencies:
'@babel/core': 7.24.9
@@ -9261,6 +9928,198 @@ snapshots:
'@rollup/rollup-win32-x64-msvc@4.13.0':
optional: true
+ '@sentry-internal/browser-utils@8.25.0':
+ dependencies:
+ '@sentry/core': 8.25.0
+ '@sentry/types': 8.25.0
+ '@sentry/utils': 8.25.0
+
+ '@sentry-internal/feedback@8.25.0':
+ dependencies:
+ '@sentry/core': 8.25.0
+ '@sentry/types': 8.25.0
+ '@sentry/utils': 8.25.0
+
+ '@sentry-internal/replay-canvas@8.25.0':
+ dependencies:
+ '@sentry-internal/replay': 8.25.0
+ '@sentry/core': 8.25.0
+ '@sentry/types': 8.25.0
+ '@sentry/utils': 8.25.0
+
+ '@sentry-internal/replay@8.25.0':
+ dependencies:
+ '@sentry-internal/browser-utils': 8.25.0
+ '@sentry/core': 8.25.0
+ '@sentry/types': 8.25.0
+ '@sentry/utils': 8.25.0
+
+ '@sentry/babel-plugin-component-annotate@2.22.0': {}
+
+ '@sentry/browser@8.25.0':
+ dependencies:
+ '@sentry-internal/browser-utils': 8.25.0
+ '@sentry-internal/feedback': 8.25.0
+ '@sentry-internal/replay': 8.25.0
+ '@sentry-internal/replay-canvas': 8.25.0
+ '@sentry/core': 8.25.0
+ '@sentry/types': 8.25.0
+ '@sentry/utils': 8.25.0
+
+ '@sentry/bundler-plugin-core@2.22.0':
+ dependencies:
+ '@babel/core': 7.24.9
+ '@sentry/babel-plugin-component-annotate': 2.22.0
+ '@sentry/cli': 2.33.1
+ dotenv: 16.4.5
+ find-up: 5.0.0
+ glob: 9.3.5
+ magic-string: 0.30.8
+ unplugin: 1.0.1
+ transitivePeerDependencies:
+ - encoding
+ - supports-color
+
+ '@sentry/cli-darwin@2.33.1':
+ optional: true
+
+ '@sentry/cli-linux-arm64@2.33.1':
+ optional: true
+
+ '@sentry/cli-linux-arm@2.33.1':
+ optional: true
+
+ '@sentry/cli-linux-i686@2.33.1':
+ optional: true
+
+ '@sentry/cli-linux-x64@2.33.1':
+ optional: true
+
+ '@sentry/cli-win32-i686@2.33.1':
+ optional: true
+
+ '@sentry/cli-win32-x64@2.33.1':
+ optional: true
+
+ '@sentry/cli@2.33.1':
+ dependencies:
+ https-proxy-agent: 5.0.1
+ node-fetch: 2.7.0
+ progress: 2.0.3
+ proxy-from-env: 1.1.0
+ which: 2.0.2
+ optionalDependencies:
+ '@sentry/cli-darwin': 2.33.1
+ '@sentry/cli-linux-arm': 2.33.1
+ '@sentry/cli-linux-arm64': 2.33.1
+ '@sentry/cli-linux-i686': 2.33.1
+ '@sentry/cli-linux-x64': 2.33.1
+ '@sentry/cli-win32-i686': 2.33.1
+ '@sentry/cli-win32-x64': 2.33.1
+ transitivePeerDependencies:
+ - encoding
+ - supports-color
+
+ '@sentry/core@8.25.0':
+ dependencies:
+ '@sentry/types': 8.25.0
+ '@sentry/utils': 8.25.0
+
+ '@sentry/node@8.25.0':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/context-async-hooks': 1.25.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-connect': 0.38.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-express': 0.41.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-fastify': 0.38.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-graphql': 0.42.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-hapi': 0.40.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-http': 0.52.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-ioredis': 0.42.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-koa': 0.42.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-mongodb': 0.46.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-mongoose': 0.40.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-mysql': 0.40.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-mysql2': 0.40.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-nestjs-core': 0.39.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-pg': 0.43.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-redis-4': 0.41.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/resources': 1.25.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/sdk-trace-base': 1.25.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.25.1
+ '@prisma/instrumentation': 5.17.0
+ '@sentry/core': 8.25.0
+ '@sentry/opentelemetry': 8.25.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.25.1(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.52.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.25.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.25.1)
+ '@sentry/types': 8.25.0
+ '@sentry/utils': 8.25.0
+ import-in-the-middle: 1.11.0
+ optionalDependencies:
+ opentelemetry-instrumentation-fetch-node: 1.2.3(@opentelemetry/api@1.9.0)
+ transitivePeerDependencies:
+ - supports-color
+
+ '@sentry/opentelemetry@8.25.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.25.1(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.52.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.25.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.25.1)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/sdk-trace-base': 1.25.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.25.1
+ '@sentry/core': 8.25.0
+ '@sentry/types': 8.25.0
+ '@sentry/utils': 8.25.0
+
+ '@sentry/react@8.25.0(react@18.3.1)':
+ dependencies:
+ '@sentry/browser': 8.25.0
+ '@sentry/core': 8.25.0
+ '@sentry/types': 8.25.0
+ '@sentry/utils': 8.25.0
+ hoist-non-react-statics: 3.3.2
+ react: 18.3.1
+
+ '@sentry/remix@8.25.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.25.1(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.52.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.25.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.25.1)(@remix-run/node@2.11.0(typescript@5.5.4))(@remix-run/react@2.11.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4))(react@18.3.1)':
+ dependencies:
+ '@opentelemetry/instrumentation-http': 0.52.1(@opentelemetry/api@1.9.0)
+ '@remix-run/node': 2.11.0(typescript@5.5.4)
+ '@remix-run/react': 2.11.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4)
+ '@remix-run/router': 1.19.0
+ '@sentry/cli': 2.33.1
+ '@sentry/core': 8.25.0
+ '@sentry/node': 8.25.0
+ '@sentry/opentelemetry': 8.25.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.25.1(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.52.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.25.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.25.1)
+ '@sentry/react': 8.25.0(react@18.3.1)
+ '@sentry/types': 8.25.0
+ '@sentry/utils': 8.25.0
+ glob: 10.3.10
+ opentelemetry-instrumentation-remix: 0.7.1(@opentelemetry/api@1.9.0)
+ react: 18.3.1
+ yargs: 17.7.2
+ transitivePeerDependencies:
+ - '@opentelemetry/api'
+ - '@opentelemetry/core'
+ - '@opentelemetry/instrumentation'
+ - '@opentelemetry/sdk-trace-base'
+ - '@opentelemetry/semantic-conventions'
+ - encoding
+ - supports-color
+
+ '@sentry/types@8.25.0': {}
+
+ '@sentry/utils@8.25.0':
+ dependencies:
+ '@sentry/types': 8.25.0
+
+ '@sentry/vite-plugin@2.22.0':
+ dependencies:
+ '@sentry/bundler-plugin-core': 2.22.0
+ unplugin: 1.0.1
+ transitivePeerDependencies:
+ - encoding
+ - supports-color
+
'@sindresorhus/merge-streams@2.3.0': {}
'@smithy/abort-controller@2.2.0':
@@ -9927,6 +10786,10 @@ snapshots:
'@types/connect': 3.4.38
'@types/node': 20.14.13
+ '@types/connect@3.4.36':
+ dependencies:
+ '@types/node': 20.14.13
+
'@types/connect@3.4.38':
dependencies:
'@types/node': 20.14.13
@@ -9997,6 +10860,10 @@ snapshots:
'@types/ms@0.7.34': {}
+ '@types/mysql@2.15.22':
+ dependencies:
+ '@types/node': 20.14.13
+
'@types/node@16.18.104': {}
'@types/node@18.19.42':
@@ -10009,6 +10876,16 @@ snapshots:
'@types/normalize-package-data@2.4.4': {}
+ '@types/pg-pool@2.0.4':
+ dependencies:
+ '@types/pg': 8.6.1
+
+ '@types/pg@8.6.1':
+ dependencies:
+ '@types/node': 20.14.13
+ pg-protocol: 1.6.1
+ pg-types: 2.2.0
+
'@types/prop-types@15.7.11': {}
'@types/qs@6.9.15': {}
@@ -10037,6 +10914,8 @@ snapshots:
'@types/node': 20.14.13
'@types/send': 0.17.4
+ '@types/shimmer@1.2.0': {}
+
'@types/unist@2.0.10': {}
'@types/unist@3.0.2': {}
@@ -10270,6 +11149,14 @@ snapshots:
mime-types: 2.1.35
negotiator: 0.6.3
+ acorn-import-assertions@1.9.0(acorn@8.11.3):
+ dependencies:
+ acorn: 8.11.3
+
+ acorn-import-attributes@1.9.5(acorn@8.11.3):
+ dependencies:
+ acorn: 8.11.3
+
acorn-jsx@5.3.2(acorn@7.4.1):
dependencies:
acorn: 7.4.1
@@ -10288,6 +11175,12 @@ snapshots:
acorn@8.11.3: {}
+ agent-base@6.0.2:
+ dependencies:
+ debug: 4.3.4
+ transitivePeerDependencies:
+ - supports-color
+
aggregate-error@3.1.0:
dependencies:
clean-stack: 2.2.0
@@ -10647,6 +11540,8 @@ snapshots:
dependencies:
consola: 3.2.3
+ cjs-module-lexer@1.3.1: {}
+
clean-regexp@1.0.0:
dependencies:
escape-string-regexp: 1.0.5
@@ -10869,6 +11764,10 @@ snapshots:
dependencies:
ms: 2.1.2
+ debug@4.3.6:
+ dependencies:
+ ms: 2.1.2
+
decode-bmp@0.2.1:
dependencies:
'@canvas/image-data': 1.0.0
@@ -11109,7 +12008,7 @@ snapshots:
esbuild-register@3.6.0(esbuild@0.21.5):
dependencies:
- debug: 4.3.4
+ debug: 4.3.6
esbuild: 0.21.5
transitivePeerDependencies:
- supports-color
@@ -11807,6 +12706,13 @@ snapshots:
once: 1.4.0
path-is-absolute: 1.0.1
+ glob@9.3.5:
+ dependencies:
+ fs.realpath: 1.0.0
+ minimatch: 8.0.4
+ minipass: 4.2.8
+ path-scurry: 1.10.1
+
global-directory@4.0.1:
dependencies:
ini: 4.1.1
@@ -11949,6 +12855,10 @@ snapshots:
dependencies:
'@types/hast': 3.0.4
+ hoist-non-react-statics@3.3.2:
+ dependencies:
+ react-is: 16.13.1
+
hosted-git-info@2.8.9: {}
hosted-git-info@6.1.1:
@@ -11969,6 +12879,13 @@ snapshots:
statuses: 2.0.1
toidentifier: 1.0.1
+ https-proxy-agent@5.0.1:
+ dependencies:
+ agent-base: 6.0.2
+ debug: 4.3.4
+ transitivePeerDependencies:
+ - supports-color
+
human-signals@2.1.0: {}
human-signals@5.0.0: {}
@@ -11992,6 +12909,28 @@ snapshots:
parent-module: 1.0.1
resolve-from: 4.0.0
+ import-in-the-middle@1.11.0:
+ dependencies:
+ acorn: 8.11.3
+ acorn-import-attributes: 1.9.5(acorn@8.11.3)
+ cjs-module-lexer: 1.3.1
+ module-details-from-path: 1.0.3
+
+ import-in-the-middle@1.4.2:
+ dependencies:
+ acorn: 8.11.3
+ acorn-import-assertions: 1.9.0(acorn@8.11.3)
+ cjs-module-lexer: 1.3.1
+ module-details-from-path: 1.0.3
+
+ import-in-the-middle@1.7.1:
+ dependencies:
+ acorn: 8.11.3
+ acorn-import-assertions: 1.9.0(acorn@8.11.3)
+ cjs-module-lexer: 1.3.1
+ module-details-from-path: 1.0.3
+ optional: true
+
import-meta-resolve@4.1.0: {}
imurmurhash@0.1.4: {}
@@ -12393,6 +13332,10 @@ snapshots:
lru-cache@7.18.3: {}
+ magic-string@0.30.8:
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.4.15
+
make-dir@2.1.0:
dependencies:
pify: 4.0.1
@@ -13090,6 +14033,10 @@ snapshots:
dependencies:
brace-expansion: 1.1.11
+ minimatch@8.0.4:
+ dependencies:
+ brace-expansion: 2.0.1
+
minimatch@9.0.4:
dependencies:
brace-expansion: 2.0.1
@@ -13112,6 +14059,8 @@ snapshots:
dependencies:
yallist: 4.0.0
+ minipass@4.2.8: {}
+
minipass@5.0.0: {}
minipass@7.0.4: {}
@@ -13145,6 +14094,8 @@ snapshots:
modern-ahocorasick@1.0.1: {}
+ module-details-from-path@1.0.3: {}
+
morgan@1.10.0:
dependencies:
basic-auth: 2.0.1
@@ -13181,6 +14132,10 @@ snapshots:
node-fetch-native@1.6.4: {}
+ node-fetch@2.7.0:
+ dependencies:
+ whatwg-url: 5.0.0
+
node-releases@2.0.14: {}
normalize-package-data@2.5.0:
@@ -13323,6 +14278,23 @@ snapshots:
object-hash: 2.2.0
oidc-token-hash: 5.0.3
+ opentelemetry-instrumentation-fetch-node@1.2.3(@opentelemetry/api@1.9.0):
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/instrumentation': 0.46.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.25.1
+ transitivePeerDependencies:
+ - supports-color
+ optional: true
+
+ opentelemetry-instrumentation-remix@0.7.1(@opentelemetry/api@1.9.0):
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/instrumentation': 0.43.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.25.1
+ transitivePeerDependencies:
+ - supports-color
+
optionator@0.9.3:
dependencies:
'@aashutoshrathi/word-wrap': 1.2.6
@@ -13457,6 +14429,18 @@ snapshots:
estree-walker: 3.0.3
is-reference: 3.0.2
+ pg-int8@1.0.1: {}
+
+ pg-protocol@1.6.1: {}
+
+ pg-types@2.2.0:
+ dependencies:
+ pg-int8: 1.0.1
+ postgres-array: 2.0.0
+ postgres-bytea: 1.0.0
+ postgres-date: 1.0.7
+ postgres-interval: 1.2.0
+
picocolors@1.0.0: {}
picocolors@1.0.1: {}
@@ -13547,6 +14531,16 @@ snapshots:
picocolors: 1.0.1
source-map-js: 1.2.0
+ postgres-array@2.0.0: {}
+
+ postgres-bytea@1.0.0: {}
+
+ postgres-date@1.0.7: {}
+
+ postgres-interval@1.2.0:
+ dependencies:
+ xtend: 4.0.2
+
prelude-ls@1.2.1: {}
prettier@2.8.8: {}
@@ -13563,6 +14557,8 @@ snapshots:
process@0.11.10: {}
+ progress@2.0.3: {}
+
promise-inflight@1.0.1: {}
promise-retry@2.0.1:
@@ -13588,6 +14584,8 @@ snapshots:
forwarded: 0.2.0
ipaddr.js: 1.9.1
+ proxy-from-env@1.1.0: {}
+
pump@2.0.1:
dependencies:
end-of-stream: 1.4.4
@@ -13851,6 +14849,14 @@ snapshots:
require-from-string@2.0.2: {}
+ require-in-the-middle@7.4.0:
+ dependencies:
+ debug: 4.3.6
+ module-details-from-path: 1.0.3
+ resolve: 1.22.8
+ transitivePeerDependencies:
+ - supports-color
+
require-like@0.1.2: {}
resolve-from@4.0.0: {}
@@ -14047,6 +15053,8 @@ snapshots:
shebang-regex@3.0.0: {}
+ shimmer@1.2.1: {}
+
side-channel@1.0.6:
dependencies:
call-bind: 1.0.7
@@ -14355,6 +15363,8 @@ snapshots:
toml@3.0.0: {}
+ tr46@0.0.3: {}
+
trim-lines@3.0.1: {}
trough@2.2.0: {}
@@ -14635,6 +15645,13 @@ snapshots:
unpipe@1.0.0: {}
+ unplugin@1.0.1:
+ dependencies:
+ acorn: 8.11.3
+ chokidar: 3.6.0
+ webpack-sources: 3.2.3
+ webpack-virtual-modules: 0.5.0
+
update-browserslist-db@1.0.13(browserslist@4.23.0):
dependencies:
browserslist: 4.23.0
@@ -14761,6 +15778,17 @@ snapshots:
web-vitals@4.2.2: {}
+ webidl-conversions@3.0.1: {}
+
+ webpack-sources@3.2.3: {}
+
+ webpack-virtual-modules@0.5.0: {}
+
+ whatwg-url@5.0.0:
+ dependencies:
+ tr46: 0.0.3
+ webidl-conversions: 3.0.1
+
which-boxed-primitive@1.0.2:
dependencies:
is-bigint: 1.0.4
diff --git a/vite.config.ts b/vite.config.ts
index 5b25b9d..2945cdd 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -1,6 +1,7 @@
import mdx from "@mdx-js/rollup"
import { vitePlugin as remix } from "@remix-run/dev"
import { installGlobals } from "@remix-run/node"
+import { sentryVitePlugin } from "@sentry/vite-plugin"
import { vanillaExtractPlugin } from "@vanilla-extract/vite-plugin"
import { vercelPreset } from "@vercel/remix/vite"
import remarkFrontmatter from "remark-frontmatter"
@@ -21,12 +22,18 @@ export default defineConfig({
}
// return nothing => default behavior
- }
+ },
+
+ sourcemap: true
},
plugins: [
mdx({ remarkPlugins: [remarkFrontmatter, remarkMdxFrontmatter] }),
remix({ presets }),
tsconfigPaths(),
- vanillaExtractPlugin()
+ vanillaExtractPlugin(),
+ sentryVitePlugin({
+ org: "sebastian-software-gmbh",
+ project: "sebastian-software-de"
+ })
]
})