diff --git a/examples/sentry/.env.example b/examples/sentry/.env.example new file mode 100644 index 00000000..72b44460 --- /dev/null +++ b/examples/sentry/.env.example @@ -0,0 +1,7 @@ +# Required: Your Sentry DSN (public, safe to expose to the browser) +PUBLIC_ENV__SENTRY_DSN=your-dsn-url + +# Required for source map upload: Sentry Auth Token +# Create at https://sentry.io/settings/account/api/auth-tokens/ +# Required scopes: project:read, project:releases, project:write +SENTRY_AUTH_TOKEN=sntryu_xxxxx diff --git a/examples/sentry/.gitignore b/examples/sentry/.gitignore new file mode 100644 index 00000000..c24c6c95 --- /dev/null +++ b/examples/sentry/.gitignore @@ -0,0 +1,8 @@ +dist/ +node_modules/ +.DS_Store +*.log +.env +.env.local +.env.production + diff --git a/examples/sentry/.test-dev.test.ts b/examples/sentry/.test-dev.test.ts new file mode 100644 index 00000000..fbafdbbc --- /dev/null +++ b/examples/sentry/.test-dev.test.ts @@ -0,0 +1,2 @@ +import { testRun } from './.testRun' +testRun('pnpm run dev') diff --git a/examples/sentry/.test-prod.test.ts b/examples/sentry/.test-prod.test.ts new file mode 100644 index 00000000..0de1470e --- /dev/null +++ b/examples/sentry/.test-prod.test.ts @@ -0,0 +1,2 @@ +import { testRun } from './.testRun' +testRun('pnpm run prod') diff --git a/examples/sentry/.testRun.ts b/examples/sentry/.testRun.ts new file mode 100644 index 00000000..39c94f52 --- /dev/null +++ b/examples/sentry/.testRun.ts @@ -0,0 +1,94 @@ +export { testRun } + +import { test, expect, run, fetchHtml, page, getServerUrl, autoRetry } from '@brillout/test-e2e' +import fs from 'node:fs' +import path from 'node:path' +import { fileURLToPath } from 'node:url' + +const __dirname = path.dirname(fileURLToPath(import.meta.url)) +const TEST_DSN = 'https://8de66fe8dda3a86d986df8ee3aa09f72@o4510438936412161.ingest.de.sentry.io/4510438941655120' + +function setupEnv() { + const envPath = path.join(__dirname, '.env') + const examplePath = path.join(__dirname, '.env.example') + let content = fs.readFileSync(examplePath, 'utf-8') + content = content.replace('your-dsn-url', TEST_DSN) + fs.writeFileSync(envPath, content) +} + +function testRun(cmd: 'pnpm run dev' | 'pnpm run prod') { + setupEnv() + run(cmd, { + // We intentionally throw errors to test Sentry error reporting + tolerateError: ({ logText }) => + logText.includes('This is a test error sent to Sentry!') || + logText.includes('This is an async error sent to Sentry!') || + logText.includes('[sentry-vite-plugin]'), + }) + + test('page content is rendered to HTML', async () => { + const html = await fetchHtml('/') + expect(html).toContain('

Vike + React + Sentry Example

') + }) + + test('page is rendered to the DOM and interactive', async () => { + await page.goto(getServerUrl() + '/') + expect(await page.textContent('h1')).toBe('Vike + React + Sentry Example') + await testCounter() + }) + + test('sync error is sent to Sentry', async () => { + await page.goto(getServerUrl() + '/') + await testSentryRequest('Throw Sync Error', 'This is a test error sent to Sentry!') + }) + + test('async error is sent to Sentry', async () => { + await page.goto(getServerUrl() + '/') + await testSentryRequest('Throw Async Error', 'This is an async error sent to Sentry!') + }) +} + +async function testCounter() { + // autoRetry() in case page isn't hydrated yet + await autoRetry( + async () => { + const heading = page.locator('h2', { hasText: 'Counter' }) + expect(await heading.textContent()).toBe('Counter: 0') + }, + { timeout: 5 * 1000 }, + ) + await autoRetry( + async () => { + const btn = page.locator('button', { hasText: 'Increment' }) + await btn.click() + const heading = page.locator('h2', { hasText: 'Counter' }) + expect(await heading.textContent()).toBe('Counter: 1') + }, + { timeout: 5 * 1000 }, + ) +} + +async function testSentryRequest(buttonText: string, expectedMessage: string) { + const sentryBodies: string[] = [] + + // Listen for Sentry envelope requests + const listener = (req: { url: () => string; method: () => string; postData: () => string | null }) => { + if (req.url().includes('sentry.io') && req.method() === 'POST') { + sentryBodies.push(req.postData() || '') + } + } + page.on('request', listener) + + const btn = page.locator('button', { hasText: buttonText }) + await btn.click() + + await autoRetry( + async () => { + const match = sentryBodies.find((body) => body.includes(expectedMessage)) + expect(match).toBeTruthy() + }, + { timeout: 10 * 1000 }, + ) + + page.removeListener('request', listener) +} diff --git a/examples/sentry/README.md b/examples/sentry/README.md new file mode 100644 index 00000000..ba532dc5 --- /dev/null +++ b/examples/sentry/README.md @@ -0,0 +1,64 @@ +# Vike + React + Sentry Example + +This example demonstrates how to integrate Sentry error tracking with a Vike + React application using [`vike-react-sentry`](https://github.com/vikejs/vike-react/tree/main/packages/vike-react-sentry). + +## Features + +- Client-side error tracking +- Server-side error tracking +- Performance monitoring and tracing +- Source map uploads for production debugging + +## Setup + +1. Install dependencies: + +```bash +pnpm install +``` + +2. Copy `.env.example` to `.env` and fill in your Sentry DSN: + +```bash +cp .env.example .env +``` + +3. Run development server: + +```bash +pnpm dev +``` + +4. Build for production (source maps are uploaded when `SENTRY_AUTH_TOKEN` is set): + +```bash +pnpm build +pnpm prod +``` + +## Configuration + +The Sentry DSN and auth token are configured via environment variables in `.env`: + +```bash +PUBLIC_ENV__SENTRY_DSN=https://xxxxx@xxxxx.ingest.sentry.io/xxxxx +SENTRY_AUTH_TOKEN=sntryu_xxxxx +``` + +You can optionally customize Sentry SDK options in `pages/+config.ts`: + +```ts +export default { + sentry: { + tracesSampleRate: 1.0, + debug: true, + } +} +``` + +See the [`vike-react-sentry` README](https://github.com/vikejs/vike-react/tree/main/packages/vike-react-sentry) for all available options. + +## Learn More + +- [Vike Documentation](https://vike.dev) +- [Sentry Documentation](https://docs.sentry.io) diff --git a/examples/sentry/package.json b/examples/sentry/package.json new file mode 100644 index 00000000..64756d40 --- /dev/null +++ b/examples/sentry/package.json @@ -0,0 +1,26 @@ +{ + "scripts": { + "dev": "vike dev", + "build": "vike build", + "prod": "vike build && node ./dist/server/index.mjs" + }, + "dependencies": { + "@photonjs/hono": "^0.1.7", + "@sentry/react": "^10.22.0", + "@sentry/node": "^10.22.0", + "@sentry/vite-plugin": "^4.6.0", + "@types/react": "^19.1.13", + "@types/react-dom": "^19.1.9", + "@vitejs/plugin-react": "^5.0.3", + "hono": "^4.7.14", + "react": "^19.2.0", + "react-dom": "^19.2.0", + "typescript": "^5.9.2", + "vike": "^0.4.253", + "vike-photon": "^0.1.20", + "vike-react": "0.6.10", + "vike-react-sentry": "0.1.0", + "vite": "^7.1.7" + }, + "type": "module" +} diff --git a/examples/sentry/pages/+config.ts b/examples/sentry/pages/+config.ts new file mode 100644 index 00000000..3ef184e0 --- /dev/null +++ b/examples/sentry/pages/+config.ts @@ -0,0 +1,15 @@ +export { config } + +import type { Config } from 'vike/types' +import vikeReact from 'vike-react/config' +import vikePhoton from 'vike-photon/config' +import vikeReactSentry from 'vike-react-sentry/config' + +const config = { + title: 'Vike + React + Sentry Example', + extends: [vikeReact, vikePhoton, vikeReactSentry], + // Photon configuration + photon: { + server: '../server/index.ts', + }, +} satisfies Config diff --git a/examples/sentry/pages/index/+Page.tsx b/examples/sentry/pages/index/+Page.tsx new file mode 100644 index 00000000..af27bad1 --- /dev/null +++ b/examples/sentry/pages/index/+Page.tsx @@ -0,0 +1,76 @@ +export { Page } + +import { useState } from 'react' + +function Page() { + const [count, setCount] = useState(0) + + const throwError = () => { + throw new Error('This is a test error sent to Sentry!') + } + + const throwAsyncError = async () => { + await new Promise((resolve) => setTimeout(resolve, 100)) + throw new Error('This is an async error sent to Sentry!') + } + + return ( +
+

Vike + React + Sentry Example

+ +

This example demonstrates Sentry error tracking integration with Vike.

+ +
+

Counter: {count}

+ +
+ +
+

Test Error Tracking

+

Click these buttons to send test errors to Sentry:

+ +
+ + + +
+
+ +
+

Configuration

+

+ Edit pages/+config.ts to configure your Sentry DSN and options. +

+ +
+
+ ) +} diff --git a/examples/sentry/server/index.ts b/examples/sentry/server/index.ts new file mode 100644 index 00000000..a0a826fa --- /dev/null +++ b/examples/sentry/server/index.ts @@ -0,0 +1,13 @@ +import { Hono } from 'hono' +import { apply, serve } from '@photonjs/hono' + +function startServer() { + const app = new Hono() + + // Apply Vike and Vike extensions middleware + apply(app) + + return serve(app) +} + +export default startServer() diff --git a/examples/sentry/tsconfig.json b/examples/sentry/tsconfig.json new file mode 100644 index 00000000..8df2db5f --- /dev/null +++ b/examples/sentry/tsconfig.json @@ -0,0 +1,19 @@ +{ + "compilerOptions": { + "strict": true, + "module": "ES2020", + "moduleResolution": "bundler", + "target": "ES2020", + "lib": ["DOM", "DOM.Iterable", "ESNext"], + "types": ["vite/client"], + "jsx": "react-jsx", + "skipLibCheck": true, + "esModuleInterop": true + }, + "include": [ + "**/*", + // Include .test* files + // https://github.com/microsoft/TypeScript/issues/49555 + "**/.*" + ] +} diff --git a/examples/sentry/vite.config.ts b/examples/sentry/vite.config.ts new file mode 100644 index 00000000..991ded96 --- /dev/null +++ b/examples/sentry/vite.config.ts @@ -0,0 +1,7 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' +import vike from 'vike/plugin' + +export default defineConfig({ + plugins: [react(), vike()], +}) diff --git a/packages/vike-react-query/package.json b/packages/vike-react-query/package.json index 7353d1b7..dd0a0cb7 100644 --- a/packages/vike-react-query/package.json +++ b/packages/vike-react-query/package.json @@ -23,7 +23,7 @@ "@tanstack/react-query": ">=5.0.0", "react": ">=18.0.0", "react-streaming": ">=0.4.6", - "vike": ">=0.4.242", + "vike": ">=0.4.252", "vike-react": ">=0.6.8" }, "devDependencies": { diff --git a/packages/vike-react-sentry/.gitignore b/packages/vike-react-sentry/.gitignore new file mode 100644 index 00000000..b0a5c349 --- /dev/null +++ b/packages/vike-react-sentry/.gitignore @@ -0,0 +1,2 @@ +/node_modules/ +/dist/ diff --git a/packages/vike-react-sentry/CHANGELOG.md b/packages/vike-react-sentry/CHANGELOG.md new file mode 100644 index 00000000..e990334e --- /dev/null +++ b/packages/vike-react-sentry/CHANGELOG.md @@ -0,0 +1,5 @@ +# Changelog + +## 0.1.0 + +Initial release. diff --git a/packages/vike-react-sentry/README.md b/packages/vike-react-sentry/README.md new file mode 100644 index 00000000..05fba3c3 --- /dev/null +++ b/packages/vike-react-sentry/README.md @@ -0,0 +1,213 @@ + + +[![npm version](https://img.shields.io/npm/v/vike-react-sentry)](https://www.npmjs.com/package/vike-react-sentry) + +# `vike-react-sentry` + +Add [Sentry](https://sentry.io) error tracking and performance monitoring to your [`vike-react`](https://vike.dev/vike-react) app. + +Features: +- Browser and server error tracking +- Performance monitoring and tracing +- Automatic source map upload +- Works out of the box with minimal configuration + +
+ +**Table of Contents** + +[Installation](#installation) +[Example](#example) +[Settings](#settings) +[Version history](#version-history) +[See also](#see-also) + +
+ +## Installation + +1. `npm install vike-react-sentry @sentry/react @sentry/node @sentry/vite-plugin` +2. Extend `+config.js`: + ```js + // pages/+config.js + + import vikeReact from 'vike-react/config' + import vikeReactSentry from 'vike-react-sentry/config' + + export default { + // ... + extends: [vikeReact, vikeReactSentry] + } + ``` +3. Add environment variables to your `.env` file: + ```bash + # Required: Your Sentry DSN (can be public and exposed to the browser) + PUBLIC_ENV__SENTRY_DSN=https://xxxxx@xxxxx.ingest.sentry.io/xxxxx + + # Required for source map upload: Sentry Auth Token (must be kept private) + # Create at https://sentry.io/settings/account/api/auth-tokens/ + # Required scopes: project:read, project:releases, project:write + SENTRY_AUTH_TOKEN=sntryu_xxxxx + ``` + +> [!NOTE] +> The `vike-react-sentry` extension requires [`vike-react`](https://vike.dev/vike-react). + +That's it! With the configuration above, `vike-react-sentry` will automatically: +- Initialize Sentry on both client and server +- Track errors and exceptions +- Instrument Vike hooks using [`+onHookCall()`](https://vike.dev/onHookCall) +- Enable browser tracing for performance monitoring +- Upload source maps during production builds (when `SENTRY_AUTH_TOKEN` is set) + +
+ +## Example + +See [examples/sentry](https://github.com/vikejs/vike-react/tree/main/examples/sentry). + +
+ +## Settings + +### `+sentry` + +Sentry SDK configuration options. + +```js +// pages/+sentry.js +// Environment: client, server + +export default { + tracesSampleRate: 1.0, + debug: true +} +``` + +> [!NOTE] +> See also: [Vike > Config Files](https://vike.dev/config) + +```ts +interface SentryOptions { + dsn?: string // Sentry DSN (can also use PUBLIC_ENV__SENTRY_DSN env var) + environment?: string // Environment name (e.g., 'production', 'staging') + release?: string // Release version + debug?: boolean // Enable debug mode + sampleRate?: number // Error sample rate (0.0 to 1.0) + tracesSampleRate?: number // Transaction sample rate (0.0 to 1.0) + enabled?: boolean // Enable/disable Sentry + maxBreadcrumbs?: number // Maximum number of breadcrumbs + sendDefaultPii?: boolean // Send default PII data + replaysSessionSampleRate?: number // Session replay sample rate (0.0 to 1.0, client only) + replaysOnErrorSampleRate?: number // Replay-on-error sample rate (0.0 to 1.0, client only) +} +``` + +You can return a function and access [`globalContext`](https://vike.dev/globalContext): + +```js +// pages/+sentry.js +// Environment: client, server + +import { getGlobalContext } from 'vike' + +export default async () => { + const globalContext = await getGlobalContext() + return { + tracesSampleRate: 1.0, + debug: true, + environment: globalContext.isProduction ? 'production' : 'development' + } +} +``` + +> [!NOTE] +> See also: [Vike > `getGlobalContext()`](https://vike.dev/getGlobalContext) + +You can define settings only for the client- or server-side: + +```js +// pages/+sentry.client.js +// Environment: client + +// Client-only configuration + +export default { + integrations: [ + // Add custom browser integrations here + ] +} +``` + +```js +// pages/+sentry.server.js +// Environment: server + +// Server-only configuration + +export default () => { + integrations: [ + // Add custom Node.js integrations here + ] +} +``` + +> [!NOTE] +> See also: [Vike > File Environment (`.server.js`, `.client.js`, ...)](https://vike.dev/file-env) + +### `+sentryVite` + +Sentry Vite plugin configuration for source map upload. + +It's automatically configured when `SENTRY_AUTH_TOKEN` is set via `.env`, but can be customized: + +```bash +# .env +SENTRY_AUTH_TOKEN=sntryu_xxxxx # Required for source map upload +SENTRY_ORG=your-org # Optional, auto-detected from DSN +SENTRY_PROJECT=your-project # Optional, auto-detected from DSN +``` + +You can also override options via `+sentryVite.js` if needed: + +```js +// pages/+config.js + +export default { + sentryVite: { + org: 'your-org', + project: 'your-project', + // ... other @sentry/vite-plugin options + } +} +``` + +> [!NOTE] +> When using a **personal auth token** with `SENTRY_AUTH_TOKEN`, `org` and `project` are automatically detected from your DSN using the Sentry API. Organization-scoped tokens don't support the required API permissions, so you'll need to set `SENTRY_PROJECT` manually if using those. + +### Environment Variables + +| Variable | Description | +|----------|-------------| +| `PUBLIC_ENV__SENTRY_DSN` | Your Sentry DSN (required). Public and safe for browser. | +| `SENTRY_AUTH_TOKEN` | Auth token for source map upload. Create at [Sentry Auth Tokens](https://sentry.io/settings/auth-tokens/). Required scopes: `project:read`, `project:releases`, `project:write`. | +| `SENTRY_ORG` | Organization slug (optional, auto-detected from DSN). | +| `SENTRY_PROJECT` | Project slug (optional, auto-detected from DSN). | +| `SENTRY_URL` | Custom Sentry URL for the Vite plugin (source map upload). Auto-detected from DSN. Only needed to override for self-hosted instances. | + +
+ +## Version history + +See [CHANGELOG.md](https://github.com/vikejs/vike-react/blob/main/packages/vike-react-sentry/CHANGELOG.md). + +
+ +## See also + +- [Sentry Documentation](https://docs.sentry.io/) +- [Sentry React SDK](https://docs.sentry.io/platforms/javascript/guides/react/) +- [Sentry Node SDK](https://docs.sentry.io/platforms/javascript/guides/node/) +- [Vike > Error Tracking](https://vike.dev/error-tracking) +- [Vike > `+onError()` hook](https://vike.dev/onError) +- [Vike > `+onHookCall()` hook](https://vike.dev/onHookCall) diff --git a/packages/vike-react-sentry/package.json b/packages/vike-react-sentry/package.json new file mode 100644 index 00000000..47dcb151 --- /dev/null +++ b/packages/vike-react-sentry/package.json @@ -0,0 +1,74 @@ +{ + "name": "vike-react-sentry", + "version": "0.1.0", + "homepage": "https://github.com/vikejs/vike-react/tree/main/packages/vike-react-sentry#readme", + "dependencies": { + "@brillout/vite-plugin-server-entry": "^0.7.0" + }, + "peerDependencies": { + "@sentry/react": ">=10.0.0", + "@sentry/node": ">=10.0.0", + "@sentry/vite-plugin": ">=4.0.0", + "react": ">=18.0.0", + "vike-react": ">=0.6.4" + }, + "exports": { + "./config": "./dist/integration/+config.js", + "./types": "./dist/types.js", + "./__internal/integration/Head": "./dist/integration/Head.js", + "./__internal/integration/onCreateGlobalContext.server": "./dist/integration/onCreateGlobalContext.server.js", + "./__internal/integration/onCreateGlobalContext.client": "./dist/integration/onCreateGlobalContext.client.js", + "./__internal/integration/onHookCall.server": "./dist/integration/onHookCall.server.js", + "./__internal/integration/onHookCall.client": "./dist/integration/onHookCall.client.js", + "./__internal/integration/onError": "./dist/integration/onError.js" + }, + "type": "module", + "scripts": { + "dev": "tsc --watch", + "build": "rimraf dist/ && tsc", + "release": "release-me patch", + "release:minor": "release-me minor", + "release:commit": "release-me commit" + }, + "devDependencies": { + "@brillout/release-me": "^0.4.8", + "@brillout/vite-plugin-server-entry": "^0.7.15", + "@sentry/react": "^10.22.0", + "@sentry/node": "^10.22.0", + "@sentry/vite-plugin": "^4.6.0", + "@types/node": "^24.0.8", + "@types/react": "^19.1.13", + "react": "^19.2.0", + "rimraf": "^5.0.5", + "typescript": "^5.9.2", + "vike": "^0.4.253", + "vike-react": "0.6.20", + "vite": "^7.1.7" + }, + "typesVersions": { + "*": { + "config": [ + "dist/integration/+config.d.ts" + ], + "types": [ + "dist/types.d.ts" + ], + "__internal/integration/onCreateGlobalContext": [ + "dist/integration/onCreateGlobalContext.d.ts" + ], + "__internal/integration/client": [ + "dist/integration/client.d.ts" + ], + "__internal/integration/onError": [ + "dist/integration/onError.d.ts" + ], + "__internal/integration/onHookCall": [ + "dist/integration/onHookCall.d.ts" + ] + } + }, + "files": [ + "dist" + ], + "license": "MIT" +} diff --git a/packages/vike-react-sentry/src/integration/+config.ts b/packages/vike-react-sentry/src/integration/+config.ts new file mode 100644 index 00000000..e61add91 --- /dev/null +++ b/packages/vike-react-sentry/src/integration/+config.ts @@ -0,0 +1,60 @@ +export { config as default } + +import { getViteConfig } from '../plugin/index.js' +import type { Config } from 'vike/types' +import type { SentryOptions } from '../types.js' +import type { SentryVitePluginOptions } from '@sentry/vite-plugin' +import 'vike-react/config' // Needed for merging vike-react's Vike.Config + +const config = { + name: 'vike-react-sentry', + require: { + 'vike-react': '>=0.6.4', + vike: '>=0.4.253', + }, + Head: 'import:vike-react-sentry/__internal/integration/Head:Head', + onCreateGlobalContext: [ + 'import:vike-react-sentry/__internal/integration/onCreateGlobalContext.server:onCreateGlobalContext', + 'import:vike-react-sentry/__internal/integration/onCreateGlobalContext.client:onCreateGlobalContext', + ], + onError: 'import:vike-react-sentry/__internal/integration/onError:onError', + onHookCall: [ + 'import:vike-react-sentry/__internal/integration/onHookCall.server:onHookCall', + 'import:vike-react-sentry/__internal/integration/onHookCall.client:onHookCall', + ], + meta: { + sentry: { + env: { + server: true, + client: true, + config: true, + }, + global: true, + cumulative: true, + }, + sentryVite: { + env: { + server: false, + client: false, + config: true, + }, + global: true, + cumulative: false, + }, + }, + vite: getViteConfig, +} satisfies Config + +declare global { + namespace Vike { + interface Config { + sentry?: SentryOptions | (() => SentryOptions | Promise) + sentryVite?: SentryVitePluginOptions + } + + interface ConfigResolved { + sentry?: (SentryOptions | (() => SentryOptions | Promise))[] + sentryVite?: SentryVitePluginOptions + } + } +} diff --git a/packages/vike-react-sentry/src/integration/Head.tsx b/packages/vike-react-sentry/src/integration/Head.tsx new file mode 100644 index 00000000..0e203e59 --- /dev/null +++ b/packages/vike-react-sentry/src/integration/Head.tsx @@ -0,0 +1,28 @@ +export { Head } + +import React from 'react' +import * as Sentry from '@sentry/node' + +// Inject Sentry trace meta tags into the HTML head for distributed tracing +// This allows the client-side SDK to continue the trace started on the server +function Head() { + if (!Sentry.getClient()) { + return null + } + + // Get trace data from Sentry + const traceData = Sentry.getTraceData() + + // Return the meta tags as proper React elements + // Fields may include: + // - sentry-trace: Sentry's proprietary trace header + // - baggage: Dynamic sampling context + // - traceparent: W3C Trace Context header + return ( + <> + {traceData['sentry-trace'] && } + {traceData.baggage && } + {traceData.traceparent && } + + ) +} diff --git a/packages/vike-react-sentry/src/integration/constants.ts b/packages/vike-react-sentry/src/integration/constants.ts new file mode 100644 index 00000000..e97abb69 --- /dev/null +++ b/packages/vike-react-sentry/src/integration/constants.ts @@ -0,0 +1 @@ +export const TRACE_DEFAULT_SAMPLE_RATE = 0.2 diff --git a/packages/vike-react-sentry/src/integration/onCreateGlobalContext.client.ts b/packages/vike-react-sentry/src/integration/onCreateGlobalContext.client.ts new file mode 100644 index 00000000..f4530fbb --- /dev/null +++ b/packages/vike-react-sentry/src/integration/onCreateGlobalContext.client.ts @@ -0,0 +1,33 @@ +export { onCreateGlobalContext } + +import * as SentryReact from '@sentry/react' +import type { GlobalContextClient } from 'vike/types' +import type { SentryOptions } from '../types.js' +import type { SentryReactOptions } from '../types.js' +import { resolveDsn } from '../utils/resolveDsn.js' +import { TRACE_DEFAULT_SAMPLE_RATE } from './constants.js' + +async function onCreateGlobalContext(globalContext: GlobalContextClient): Promise { + const sentryConfigs = globalContext.config.sentry || [] + + const clientConfig: SentryOptions = {} + for (const curr of [...sentryConfigs].reverse()) { + const resolvedConfig = typeof curr === 'function' ? await curr() : curr + Object.assign(clientConfig, resolvedConfig) + } + + if (!SentryReact.getClient()) { + SentryReact.init(resolveSentryClientSettings(clientConfig)) + } +} + +const resolveSentryClientSettings = (clientConfig: SentryReactOptions) => + ({ + environment: clientConfig.environment || import.meta.env.MODE || 'production', + replaysSessionSampleRate: 0.1, + replaysOnErrorSampleRate: 1.0, + integrations: [SentryReact.browserTracingIntegration(), SentryReact.replayIntegration()], + dsn: resolveDsn(clientConfig.dsn), + traceSampleRate: clientConfig.tracesSampleRate ?? TRACE_DEFAULT_SAMPLE_RATE, + ...clientConfig, + }) as SentryReactOptions diff --git a/packages/vike-react-sentry/src/integration/onCreateGlobalContext.server.ts b/packages/vike-react-sentry/src/integration/onCreateGlobalContext.server.ts new file mode 100644 index 00000000..e8d14c92 --- /dev/null +++ b/packages/vike-react-sentry/src/integration/onCreateGlobalContext.server.ts @@ -0,0 +1,30 @@ +export { onCreateGlobalContext } + +import * as SentryNode from '@sentry/node' +import type { GlobalContextServer } from 'vike/types' +import type { SentryOptions } from '../types.js' +import type { SentryNodeOptions } from '../types.js' +import { resolveDsn } from '../utils/resolveDsn.js' +import { TRACE_DEFAULT_SAMPLE_RATE } from './constants.js' + +async function onCreateGlobalContext(globalContext: GlobalContextServer): Promise { + const sentryConfigs = globalContext.config.sentry || [] + + const serverConfig: SentryOptions = {} + for (const curr of [...sentryConfigs].reverse()) { + const resolvedConfig = typeof curr === 'function' ? await curr() : curr + Object.assign(serverConfig, resolvedConfig) + } + + if (!SentryNode.getClient()) { + SentryNode.init(resolveSentryServerSettings(serverConfig)) + } +} + +const resolveSentryServerSettings = (serverConfig: SentryNodeOptions) => + ({ + environment: serverConfig.environment || import.meta.env.MODE || 'production', + dsn: resolveDsn(serverConfig.dsn), + traceSampleRate: serverConfig.tracesSampleRate ?? TRACE_DEFAULT_SAMPLE_RATE, + ...serverConfig, + }) as SentryNodeOptions diff --git a/packages/vike-react-sentry/src/integration/onError.ts b/packages/vike-react-sentry/src/integration/onError.ts new file mode 100644 index 00000000..42758021 --- /dev/null +++ b/packages/vike-react-sentry/src/integration/onError.ts @@ -0,0 +1,9 @@ +import * as Sentry from '@sentry/node' +import type { Config } from 'vike/types' +import { assert } from '../utils/assert.js' + +export const onError: Config['onError'] = (error) => { + if (!Sentry.getClient()) return + assert(error && typeof error === 'object') + Sentry.captureException(error) +} diff --git a/packages/vike-react-sentry/src/integration/onHookCall.client.ts b/packages/vike-react-sentry/src/integration/onHookCall.client.ts new file mode 100644 index 00000000..c8a7679e --- /dev/null +++ b/packages/vike-react-sentry/src/integration/onHookCall.client.ts @@ -0,0 +1,52 @@ +import * as Sentry from '@sentry/react' +import type { Config, PageContextClient } from 'vike/types' +type Hook = Parameters>[0] + +/** + * Vike onHookCall configuration for Sentry integration (client-side). + * Provides automatic tracing and error capture for all Vike hooks. + */ +export async function onHookCall(hook: Hook, pageContext: PageContextClient) { + if (!Sentry.getClient() || hook.name === 'onError') { + return hook.call() + } + + // Extract useful context for Sentry + const url = pageContext?.urlOriginal ?? 'NOT-DEFINED' + const pageId = pageContext?.pageId ?? 'NOT-DEFINED' + + // withScope ensures any error captured during hook execution has Vike context + return Sentry.withScope((scope) => { + scope.setTag('vike.hook', hook.name) + scope.setTag('vike.page', pageId) + scope.setContext('vike', { + hook: hook.name, + filePath: hook.filePath, + pageId, + url, + }) + + return Sentry.startSpan( + { + name: hook.name, + op: 'vike.hook', + attributes: { + 'vike.hook.name': hook.name, + 'vike.hook.file': hook.filePath, + 'vike.page.id': pageId, + 'vike.url': url, + }, + }, + async (span) => { + try { + await hook.call() + } catch (error) { + span.setStatus({ + code: 2, + }) + Sentry.captureException(error) + } + }, + ) + }) +} diff --git a/packages/vike-react-sentry/src/integration/onHookCall.server.ts b/packages/vike-react-sentry/src/integration/onHookCall.server.ts new file mode 100644 index 00000000..771784de --- /dev/null +++ b/packages/vike-react-sentry/src/integration/onHookCall.server.ts @@ -0,0 +1,52 @@ +import * as Sentry from '@sentry/node' +import type { Config, PageContextServer } from 'vike/types' +type Hook = Parameters>[0] + +/** + * Vike onHookCall configuration for Sentry integration (server-side). + * Provides automatic tracing and error capture for all Vike hooks. + */ +export async function onHookCall(hook: Hook, pageContext: PageContextServer) { + if (!Sentry.getClient() || hook.name === 'onError') { + return hook.call() + } + + // Extract useful context for Sentry + const url = pageContext?.urlOriginal ?? 'NOT-DEFINED' + const pageId = pageContext?.pageId ?? 'NOT-DEFINED' + + // withScope ensures any error captured during hook execution has Vike context + return Sentry.withScope((scope) => { + scope.setTag('vike.hook', hook.name) + scope.setTag('vike.page', pageId) + scope.setContext('vike', { + hook: hook.name, + filePath: hook.filePath, + pageId, + url, + }) + + return Sentry.startSpan( + { + name: hook.name, + op: 'vike.hook', + attributes: { + 'vike.hook.name': hook.name, + 'vike.hook.file': hook.filePath, + 'vike.page.id': pageId, + 'vike.url': url, + }, + }, + async (span) => { + try { + await hook.call() + } catch (error) { + span.setStatus({ + code: 2, + }) + Sentry.captureException(error) + } + }, + ) + }) +} diff --git a/packages/vike-react-sentry/src/plugin/index.ts b/packages/vike-react-sentry/src/plugin/index.ts new file mode 100644 index 00000000..f0766fa0 --- /dev/null +++ b/packages/vike-react-sentry/src/plugin/index.ts @@ -0,0 +1,197 @@ +export { getViteConfig } + +import { sentryVitePlugin, SentryVitePluginOptions } from '@sentry/vite-plugin' +import { serverProductionEntryPlugin } from '@brillout/vite-plugin-server-entry/plugin' +import { getVikeConfig } from 'vike/plugin' +import type { Plugin, InlineConfig } from 'vite' +import { assertUsage, assertWarning } from '../utils/assert.js' +import type { SentryOptions } from '../types.js' + +declare global { + var __vike_react_sentry_vite_options_promise: Promise | undefined +} + +async function getViteConfig(): Promise { + const plugins: Plugin[] = [] + plugins.push({ + enforce: 'post', + name: 'vike-react-sentry:config-resolver', + configResolved() { + globalThis.__vike_react_sentry_vite_options_promise ??= resolveVitePluginOptions() + }, + }) + + if (!globalThis.__vike_react_sentry_vite_options_promise) { + return { + plugins, + } + } + const vitePluginOptions = await globalThis.__vike_react_sentry_vite_options_promise + if (vitePluginOptions) { + const sentryPlugins = sentryVitePlugin(vitePluginOptions) + plugins.push(...sentryPlugins) + } + + plugins.push( + ...serverProductionEntryPlugin({ + getServerProductionEntry: () => { + return ` +// vike-react-sentry: Preload OpenTelemetry instrumentation for ESM +// The actual Sentry.init() with config will be called later via onCreateGlobalContext +// https://docs.sentry.io/platforms/javascript/guides/node/install/esm-without-import/ +import { preloadOpenTelemetry } from '@sentry/node'; +preloadOpenTelemetry(); +` + }, + libraryName: 'vike-react-sentry', + }), + ) + + return { + resolve: { + noExternal: 'vike-react-sentry', + }, + plugins, + ...(vitePluginOptions && { + build: { + sourcemap: true, + }, + }), + } +} + +/** Parse project ID from DSN. Format: https://{PUBLIC_KEY}@{HOST}/{PROJECT_ID} */ +function getProjectIdFromDsn(dsn: string): string | undefined { + const match = dsn.match(/\/(\d+)$/) + return match?.[1] +} + +/** Find the first defined value for a sentry config key. */ +function findSentryConfig( + configs: (SentryOptions | Function)[], + key: K, +): SentryOptions[K] | undefined { + return configs.find((c): c is SentryOptions => typeof c !== 'function' && !!c[key])?.[key] +} + +/** Resolve the effective DSN from sentry configs and env vars. */ +function resolveDsn(configs: (SentryOptions | Function)[]): string { + const dsn = findSentryConfig(configs, 'dsn') || process.env['PUBLIC_ENV__SENTRY_DSN'] + // Assumes the client and server uses the same DSN + // If different DSNs are needed, we can enable SENTRY_DSN later + assertUsage( + !process.env['SENTRY_DSN'], + 'SENTRY_DSN is not supported. Use PUBLIC_ENV__SENTRY_DSN instead, or set dsn in your sentry config.', + ) + assertUsage(dsn, 'Sentry DSN is required. Set PUBLIC_ENV__SENTRY_DSN env var, or set dsn in the sentry config.') + return dsn +} + +/** Resolve vite plugin options from sentry config, env vars, and API auto-detection. */ +async function resolveVitePluginOptions(): Promise { + const vikeConfig = getVikeConfig() + const sentryConfigRaw = vikeConfig.config.sentry || [] + + const dsn = resolveDsn(sentryConfigRaw) + const release = findSentryConfig(sentryConfigRaw, 'release') + + let options = resolveEnvFallbacks(vikeConfig.config.sentryVite) + + if (options && release) { + options = { + ...options, + release: { + name: release, + ...options.release, + }, + } + } + + if (options) { + options = await autoDetectProjectInfo(options, dsn) + } + + return options +} + +/** Resolve env var fallbacks for vite plugin auth/org/project/url. */ +function resolveEnvFallbacks(options: SentryVitePluginOptions | undefined): SentryVitePluginOptions | undefined { + const authToken = options?.authToken || process.env['SENTRY_AUTH_TOKEN'] + if (!authToken) return options + return { + ...options, + authToken, + org: options?.org || process.env['SENTRY_ORG'], + project: options?.project || process.env['SENTRY_PROJECT'], + url: options?.url || process.env['SENTRY_URL'], + } +} + +/** Auto-detect project and org slug from Sentry API when not explicitly configured. */ +async function autoDetectProjectInfo(options: SentryVitePluginOptions, dsn: string): Promise { + if (options.project || options.org) return options + const authToken = options.authToken + const projectId = getProjectIdFromDsn(dsn) + if (!authToken || !projectId) return options + + const projectInfo = await getProjectInfoFromApi(authToken, projectId, dsn, options.url) + if (!projectInfo) return options + + return { + ...options, + project: projectInfo.projectSlug, + org: projectInfo.orgSlug, + } +} + +/** + * Extract API base URL from DSN + * DSN host like "o123.ingest.de.sentry.io" -> "https://de.sentry.io" + */ +function getApiUrlFromDsn(dsn: string): string | undefined { + try { + const url = new URL(dsn) + const match = url.hostname.match(/ingest\.(.+)$/) + return match ? `https://${match[1]}` : undefined + } catch { + return undefined + } +} + +/** Fetch project and org slug from Sentry API. Results are cached globally. */ +async function getProjectInfoFromApi( + authToken: string, + projectId: string, + dsn: string, + url?: string, +): Promise<{ projectSlug: string; orgSlug: string } | null> { + const effectiveUrl = url || getApiUrlFromDsn(dsn) || 'https://sentry.io' + + try { + const response = await fetch(`${effectiveUrl}/api/0/projects/`, { + headers: { Authorization: `Bearer ${authToken}` }, + }) + if (!response.ok) { + return null + } + const projects = (await response.json()) as Array<{ + id: string + slug: string + organization: { slug: string } + }> + const project = projects.find((p) => p.id === projectId) + if (!project) { + return null + } + return { + projectSlug: project.slug, + orgSlug: project.organization.slug, + } + } catch (err) { + assertWarning( + false, + `Failed to auto-detect Sentry project info from API (url: ${effectiveUrl}, projectId: ${projectId}): ${err}`, + ) + return null + } +} diff --git a/packages/vike-react-sentry/src/types.ts b/packages/vike-react-sentry/src/types.ts new file mode 100644 index 00000000..ab7b6fb1 --- /dev/null +++ b/packages/vike-react-sentry/src/types.ts @@ -0,0 +1,19 @@ +import type * as SentryReact from '@sentry/react' +import type * as SentryNode from '@sentry/node' + +export interface SentryNodeOptions extends SentryNode.NodeOptions {} +export interface SentryReactOptions extends SentryReact.BrowserOptions {} +export type SentryOptions = Pick< + SentryNodeOptions & SentryReactOptions, + | 'dsn' + | 'environment' + | 'release' + | 'debug' + | 'sampleRate' + | 'tracesSampleRate' + | 'enabled' + | 'maxBreadcrumbs' + | 'sendDefaultPii' + | 'replaysSessionSampleRate' + | 'replaysOnErrorSampleRate' +> diff --git a/packages/vike-react-sentry/src/utils/assert.ts b/packages/vike-react-sentry/src/utils/assert.ts new file mode 100644 index 00000000..f9d00c72 --- /dev/null +++ b/packages/vike-react-sentry/src/utils/assert.ts @@ -0,0 +1,18 @@ +export { assertUsage } +export { assert } +export { assertWarning } + +function assertUsage(condition: unknown, message: string): asserts condition { + if (condition) return + throw new Error(`[vike-react-sentry] ${message}`) +} + +function assert(condition: unknown): asserts condition { + if (condition) return + throw new Error('[vike-react-sentry] You stumbled upon a bug, reach out on GitHub.') +} + +function assertWarning(condition: unknown, message: string): void { + if (condition) return + console.warn(`[vike-react-sentry][Warning] ${message}`) +} diff --git a/packages/vike-react-sentry/src/utils/resolveDsn.ts b/packages/vike-react-sentry/src/utils/resolveDsn.ts new file mode 100644 index 00000000..f14137c0 --- /dev/null +++ b/packages/vike-react-sentry/src/utils/resolveDsn.ts @@ -0,0 +1,3 @@ +export function resolveDsn(configDsn: string | undefined): string | undefined { + return configDsn || import.meta.env.PUBLIC_ENV__SENTRY_DSN +} diff --git a/packages/vike-react-sentry/tsconfig.json b/packages/vike-react-sentry/tsconfig.json new file mode 100644 index 00000000..abdf7fb0 --- /dev/null +++ b/packages/vike-react-sentry/tsconfig.json @@ -0,0 +1,28 @@ +{ + "include": ["./src"], + "exclude": ["**/*.spec.ts"], + "compilerOptions": { + // Misc + "skipLibCheck": true, + "noErrorTruncation": true, + // Strictness + "strict": true, + "noUncheckedIndexedAccess": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + // Resolution + "esModuleInterop": true, + "moduleResolution": "Node16", + // Libs + "lib": ["DOM", "DOM.Iterable", "ES2022"], + "types": ["vite/client", "vike-react"], + // Output + "target": "ES2020", + "module": "Node16", + "outDir": "./dist/", + "rootDir": "./src/", + "declaration": true, + // React + "jsx": "react" + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fcb63790..7df4d9c2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -55,7 +55,7 @@ importers: version: 5.9.3 vike: specifier: ^0.4.253 - version: 0.4.253(react-streaming@0.4.15(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(vite@7.3.0(@types/node@24.0.8)) + version: 0.4.253(react-streaming@0.4.15(react@19.2.1))(vite@7.3.0(@types/node@24.0.8)) vike-react: specifier: 0.6.20 version: link:../../packages/vike-react @@ -91,7 +91,7 @@ importers: version: 5.9.3 vike: specifier: ^0.4.253 - version: 0.4.253(react-streaming@0.4.15(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(vite@7.3.0(@types/node@24.0.8)) + version: 0.4.253(react-streaming@0.4.15(react@19.2.1))(vite@7.3.0(@types/node@24.0.8)) vike-react: specifier: 0.6.20 version: link:../../packages/vike-react @@ -112,7 +112,7 @@ importers: version: 19.2.1(react@19.2.1) vike: specifier: ^0.4.253 - version: 0.4.253(react-streaming@0.4.15(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(vite@7.3.0(@types/node@24.0.8)) + version: 0.4.253(react-streaming@0.4.15(react@19.2.1))(vite@7.3.0(@types/node@24.0.8)) vike-react: specifier: 0.6.20 version: link:../../packages/vike-react @@ -145,7 +145,7 @@ importers: version: 5.9.3 vike: specifier: ^0.4.253 - version: 0.4.253(react-streaming@0.4.15(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(vite@7.3.0(@types/node@24.0.8)) + version: 0.4.253(react-streaming@0.4.15(react@19.2.1))(vite@7.3.0(@types/node@24.0.8)) vike-react: specifier: 0.6.20 version: link:../../packages/vike-react @@ -184,7 +184,7 @@ importers: version: 5.9.3 vike: specifier: ^0.4.253 - version: 0.4.253(react-streaming@0.4.15(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(vite@7.3.0(@types/node@24.0.8)) + version: 0.4.253(react-streaming@0.4.15(react@19.2.1))(vite@7.3.0(@types/node@24.0.8)) vike-react: specifier: 0.6.20 version: link:../../packages/vike-react @@ -195,6 +195,57 @@ importers: specifier: ^7.3.0 version: 7.3.0(@types/node@24.0.8) + examples/sentry: + dependencies: + '@photonjs/hono': + specifier: ^0.1.7 + version: 0.1.12(hono@4.11.4)(srvx@0.9.8)(vite@7.3.0(@types/node@24.0.8)) + '@sentry/node': + specifier: ^10.22.0 + version: 10.35.0 + '@sentry/react': + specifier: ^10.22.0 + version: 10.35.0(react@19.2.1) + '@sentry/vite-plugin': + specifier: ^4.6.0 + version: 4.7.0 + '@types/react': + specifier: ^19.1.13 + version: 19.2.7 + '@types/react-dom': + specifier: ^19.1.9 + version: 19.2.3(@types/react@19.2.7) + '@vitejs/plugin-react': + specifier: ^5.0.3 + version: 5.1.1(vite@7.3.0(@types/node@24.0.8)) + hono: + specifier: ^4.7.14 + version: 4.11.4 + react: + specifier: ^19.2.0 + version: 19.2.1 + react-dom: + specifier: ^19.2.0 + version: 19.2.1(react@19.2.1) + typescript: + specifier: ^5.9.2 + version: 5.9.3 + vike: + specifier: ^0.4.253 + version: 0.4.253(react-streaming@0.4.15(react@19.2.1))(vite@7.3.0(@types/node@24.0.8)) + vike-photon: + specifier: ^0.1.20 + version: 0.1.24(@photonjs/core@0.1.21(hono@4.11.4)(srvx@0.9.8)(vite@7.3.0(@types/node@24.0.8)))(@photonjs/runtime@0.1.16(hono@4.11.4)(rollup@4.46.2)(vite@7.3.0(@types/node@24.0.8)))(hono@4.11.4)(rollup@4.46.2)(srvx@0.9.8)(vike@0.4.253(react-streaming@0.4.15(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(vite@7.3.0(@types/node@24.0.8)))(vite@7.3.0(@types/node@24.0.8)) + vike-react: + specifier: 0.6.10 + version: 0.6.10(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(vike@0.4.253(react-streaming@0.4.15(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(vite@7.3.0(@types/node@24.0.8))) + vike-react-sentry: + specifier: 0.1.0 + version: link:../../packages/vike-react-sentry + vite: + specifier: ^7.1.7 + version: 7.3.0(@types/node@24.0.8) + examples/zustand: dependencies: '@types/react': @@ -220,7 +271,7 @@ importers: version: 5.9.3 vike: specifier: ^0.4.253 - version: 0.4.253(react-streaming@0.4.15(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(vite@7.3.0(@types/node@24.0.8)) + version: 0.4.253(react-streaming@0.4.15(react@19.2.1))(vite@7.3.0(@types/node@24.0.8)) vike-react: specifier: 0.6.20 version: link:../../packages/vike-react @@ -269,7 +320,7 @@ importers: version: 5.9.3 vike: specifier: ^0.4.253 - version: 0.4.253(react-streaming@0.4.15(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(vite@7.3.0(@types/node@24.0.8)) + version: 0.4.253(react-streaming@0.4.15(react@19.2.1))(vite@7.3.0(@types/node@24.0.8)) vite: specifier: ^7.3.0 version: 7.3.0(@types/node@24.0.8) @@ -299,7 +350,7 @@ importers: version: 5.9.3 vike: specifier: ^0.4.253 - version: 0.4.253(react-streaming@0.4.15(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(vite@7.3.0(@types/node@24.0.8)) + version: 0.4.253(react-streaming@0.4.15(react@19.2.1))(vite@7.3.0(@types/node@24.0.8)) vike-react: specifier: 0.6.20 version: link:../vike-react @@ -351,7 +402,7 @@ importers: version: 5.9.3 vike: specifier: ^0.4.253 - version: 0.4.253(react-streaming@0.4.15(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(vite@7.3.0(@types/node@24.0.8)) + version: 0.4.253(react-streaming@0.4.15(react@19.2.1))(vite@7.3.0(@types/node@24.0.8)) vike-react: specifier: 0.6.20 version: link:../vike-react @@ -384,7 +435,7 @@ importers: version: 5.9.3 vike: specifier: ^0.4.253 - version: 0.4.253(react-streaming@0.4.15(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(vite@7.3.0(@types/node@24.0.8)) + version: 0.4.253(react-streaming@0.4.15(react@19.2.1))(vite@7.3.0(@types/node@24.0.8)) vike-react: specifier: 0.6.20 version: link:../vike-react @@ -439,7 +490,7 @@ importers: version: 5.9.3 vike: specifier: ^0.4.253 - version: 0.4.253(react-streaming@0.4.15(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(vite@7.3.0(@types/node@24.0.8)) + version: 0.4.253(react-streaming@0.4.15(react@19.2.1))(vite@7.3.0(@types/node@24.0.8)) vike-react: specifier: 0.6.20 version: link:../vike-react @@ -479,7 +530,7 @@ importers: version: 5.9.3 vike: specifier: ^0.4.253 - version: 0.4.253(react-streaming@0.4.15(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(vite@7.3.0(@types/node@24.0.8)) + version: 0.4.253(react-streaming@0.4.15(react@19.2.1))(vite@7.3.0(@types/node@24.0.8)) vike-react: specifier: 0.6.20 version: link:../vike-react @@ -487,6 +538,49 @@ importers: specifier: ^7.3.0 version: 7.3.0(@types/node@24.0.8) + packages/vike-react-sentry: + dependencies: + '@brillout/vite-plugin-server-entry': + specifier: ^0.7.0 + version: 0.7.17 + devDependencies: + '@brillout/release-me': + specifier: ^0.4.8 + version: 0.4.12(conventional-commits-filter@5.0.0) + '@sentry/node': + specifier: ^10.22.0 + version: 10.35.0 + '@sentry/react': + specifier: ^10.22.0 + version: 10.35.0(react@19.2.1) + '@sentry/vite-plugin': + specifier: ^4.6.0 + version: 4.7.0 + '@types/node': + specifier: ^24.0.8 + version: 24.0.8 + '@types/react': + specifier: ^19.1.13 + version: 19.2.7 + react: + specifier: ^19.2.0 + version: 19.2.1 + rimraf: + specifier: ^5.0.5 + version: 5.0.10 + typescript: + specifier: ^5.9.2 + version: 5.9.3 + vike: + specifier: ^0.4.253 + version: 0.4.253(react-streaming@0.4.15(react@19.2.1))(vite@7.3.0(@types/node@24.0.8)) + vike-react: + specifier: 0.6.20 + version: link:../vike-react + vite: + specifier: ^7.1.7 + version: 7.3.0(@types/node@24.0.8) + packages/vike-react-styled-components: devDependencies: '@brillout/release-me': @@ -509,7 +603,7 @@ importers: version: 5.9.3 vike: specifier: ^0.4.253 - version: 0.4.253(react-streaming@0.4.15(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(vite@7.3.0(@types/node@24.0.8)) + version: 0.4.253(react-streaming@0.4.15(react@19.2.1))(vite@7.3.0(@types/node@24.0.8)) vike-react: specifier: 0.6.20 version: link:../vike-react @@ -542,7 +636,7 @@ importers: version: 5.9.3 vike: specifier: ^0.4.253 - version: 0.4.253(react-streaming@0.4.15(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(vite@7.3.0(@types/node@24.0.8)) + version: 0.4.253(react-streaming@0.4.15(react@19.2.1))(vite@7.3.0(@types/node@24.0.8)) vike-react: specifier: 0.6.20 version: link:../vike-react @@ -594,7 +688,7 @@ importers: version: 5.9.3 vike: specifier: ^0.4.253 - version: 0.4.253(react-streaming@0.4.15(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(vite@7.3.0(@types/node@24.0.8)) + version: 0.4.253(react-streaming@0.4.15(react@19.2.1))(vite@7.3.0(@types/node@24.0.8)) vike-react: specifier: 0.6.20 version: link:../vike-react @@ -641,6 +735,12 @@ packages: peerDependencies: react: '>=16.9.0' + '@apm-js-collab/code-transformer@0.8.2': + resolution: {integrity: sha512-YRjJjNq5KFSjDUoqu5pFUWrrsvGOxl6c3bu+uMFc9HNNptZ2rNU/TI2nLw4jnhQNtka972Ee2m3uqbvDQtPeCA==} + + '@apm-js-collab/tracing-hooks@0.3.1': + resolution: {integrity: sha512-Vu1CbmPURlN5fTboVuKMoJjbO5qcq9fA5YXpskx3dXe/zTBvjODFoerw+69rVBlRLrJpwPqSDqEuJDEKIrTldw==} + '@apollo/client-react-streaming@0.11.11': resolution: {integrity: sha512-h7u/D5GDq5mn2BXaWBiK9z+i90mzmBCnOeRt4Iarc1qwTt40Q4u2yEXPw8ma1BywZ2uLJyVuAb6EyA605eqeEQ==} peerDependencies: @@ -906,6 +1006,15 @@ packages: resolution: {integrity: sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==} engines: {node: '>=18'} + '@emnapi/core@1.8.1': + resolution: {integrity: sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==} + + '@emnapi/runtime@1.8.1': + resolution: {integrity: sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==} + + '@emnapi/wasi-threads@1.1.0': + resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} + '@emotion/babel-plugin@11.13.5': resolution: {integrity: sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==} @@ -1289,6 +1398,10 @@ packages: resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} + '@isaacs/fs-minipass@4.0.1': + resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} + engines: {node: '>=18.0.0'} + '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} @@ -1302,9 +1415,20 @@ packages: '@jridgewell/sourcemap-codec@1.5.0': resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + '@jridgewell/trace-mapping@0.3.30': resolution: {integrity: sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==} + '@mapbox/node-pre-gyp@2.0.3': + resolution: {integrity: sha512-uwPAhccfFJlsfCxMYTwOdVfOz3xqyj8xYL3zJj8f0pb30tLohnnFPhLuqp4/qoEz8sNxe4SESZedcBojRefIzg==} + engines: {node: '>=18'} + hasBin: true + + '@napi-rs/wasm-runtime@1.1.1': + resolution: {integrity: sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==} + '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -1317,9 +1441,237 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} + '@opentelemetry/api-logs@0.208.0': + resolution: {integrity: sha512-CjruKY9V6NMssL/T1kAFgzosF1v9o6oeN+aX5JB/C/xPNtmgIJqcXHG7fA82Ou1zCpWGl4lROQUKwUNE1pMCyg==} + engines: {node: '>=8.0.0'} + + '@opentelemetry/api@1.9.0': + resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} + engines: {node: '>=8.0.0'} + + '@opentelemetry/context-async-hooks@2.4.0': + resolution: {integrity: sha512-jn0phJ+hU7ZuvaoZE/8/Euw3gvHJrn2yi+kXrymwObEPVPjtwCmkvXDRQCWli+fCTTF/aSOtXaLr7CLIvv3LQg==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + + '@opentelemetry/core@2.2.0': + resolution: {integrity: sha512-FuabnnUm8LflnieVxs6eP7Z383hgQU4W1e3KJS6aOG3RxWxcHyBxH8fDMHNgu/gFx/M2jvTOW/4/PHhLz6bjWw==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + + '@opentelemetry/core@2.4.0': + resolution: {integrity: sha512-KtcyFHssTn5ZgDu6SXmUznS80OFs/wN7y6MyFRRcKU6TOw8hNcGxKvt8hsdaLJfhzUszNSjURetq5Qpkad14Gw==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + + '@opentelemetry/instrumentation-amqplib@0.55.0': + resolution: {integrity: sha512-5ULoU8p+tWcQw5PDYZn8rySptGSLZHNX/7srqo2TioPnAAcvTy6sQFQXsNPrAnyRRtYGMetXVyZUy5OaX1+IfA==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-connect@0.52.0': + resolution: {integrity: sha512-GXPxfNB5szMbV3I9b7kNWSmQBoBzw7MT0ui6iU/p+NIzVx3a06Ri2cdQO7tG9EKb4aKSLmfX9Cw5cKxXqX6Ohg==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-dataloader@0.26.0': + resolution: {integrity: sha512-P2BgnFfTOarZ5OKPmYfbXfDFjQ4P9WkQ1Jji7yH5/WwB6Wm/knynAoA1rxbjWcDlYupFkyT0M1j6XLzDzy0aCA==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-express@0.57.0': + resolution: {integrity: sha512-HAdx/o58+8tSR5iW+ru4PHnEejyKrAy9fYFhlEI81o10nYxrGahnMAHWiSjhDC7UQSY3I4gjcPgSKQz4rm/asg==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-fs@0.28.0': + resolution: {integrity: sha512-FFvg8fq53RRXVBRHZViP+EMxMR03tqzEGpuq55lHNbVPyFklSVfQBN50syPhK5UYYwaStx0eyCtHtbRreusc5g==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-generic-pool@0.52.0': + resolution: {integrity: sha512-ISkNcv5CM2IwvsMVL31Tl61/p2Zm2I2NAsYq5SSBgOsOndT0TjnptjufYVScCnD5ZLD1tpl4T3GEYULLYOdIdQ==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-graphql@0.56.0': + resolution: {integrity: sha512-IPvNk8AFoVzTAM0Z399t34VDmGDgwT6rIqCUug8P9oAGerl2/PEIYMPOl/rerPGu+q8gSWdmbFSjgg7PDVRd3Q==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-hapi@0.55.0': + resolution: {integrity: sha512-prqAkRf9e4eEpy4G3UcR32prKE8NLNlA90TdEU1UsghOTg0jUvs40Jz8LQWFEs5NbLbXHYGzB4CYVkCI8eWEVQ==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-http@0.208.0': + resolution: {integrity: sha512-rhmK46DRWEbQQB77RxmVXGyjs6783crXCnFjYQj+4tDH/Kpv9Rbg3h2kaNyp5Vz2emF1f9HOQQvZoHzwMWOFZQ==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-ioredis@0.56.0': + resolution: {integrity: sha512-XSWeqsd3rKSsT3WBz/JKJDcZD4QYElZEa0xVdX8f9dh4h4QgXhKRLorVsVkK3uXFbC2sZKAS2Ds+YolGwD83Dg==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-kafkajs@0.18.0': + resolution: {integrity: sha512-KCL/1HnZN5zkUMgPyOxfGjLjbXjpd4odDToy+7c+UsthIzVLFf99LnfIBE8YSSrYE4+uS7OwJMhvhg3tWjqMBg==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-knex@0.53.0': + resolution: {integrity: sha512-xngn5cH2mVXFmiT1XfQ1aHqq1m4xb5wvU6j9lSgLlihJ1bXzsO543cpDwjrZm2nMrlpddBf55w8+bfS4qDh60g==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-koa@0.57.0': + resolution: {integrity: sha512-3JS8PU/D5E3q295mwloU2v7c7/m+DyCqdu62BIzWt+3u9utjxC9QS7v6WmUNuoDN3RM+Q+D1Gpj13ERo+m7CGg==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.9.0 + + '@opentelemetry/instrumentation-lru-memoizer@0.53.0': + resolution: {integrity: sha512-LDwWz5cPkWWr0HBIuZUjslyvijljTwmwiItpMTHujaULZCxcYE9eU44Qf/pbVC8TulT0IhZi+RoGvHKXvNhysw==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-mongodb@0.61.0': + resolution: {integrity: sha512-OV3i2DSoY5M/pmLk+68xr5RvkHU8DRB3DKMzYJdwDdcxeLs62tLbkmRyqJZsYf3Ht7j11rq35pHOWLuLzXL7pQ==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-mongoose@0.55.0': + resolution: {integrity: sha512-5afj0HfF6aM6Nlqgu6/PPHFk8QBfIe3+zF9FGpX76jWPS0/dujoEYn82/XcLSaW5LPUDW8sni+YeK0vTBNri+w==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-mysql2@0.55.0': + resolution: {integrity: sha512-0cs8whQG55aIi20gnK8B7cco6OK6N+enNhW0p5284MvqJ5EPi+I1YlWsWXgzv/V2HFirEejkvKiI4Iw21OqDWg==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-mysql@0.54.0': + resolution: {integrity: sha512-bqC1YhnwAeWmRzy1/Xf9cDqxNG2d/JDkaxnqF5N6iJKN1eVWI+vg7NfDkf52/Nggp3tl1jcC++ptC61BD6738A==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-pg@0.61.0': + resolution: {integrity: sha512-UeV7KeTnRSM7ECHa3YscoklhUtTQPs6V6qYpG283AB7xpnPGCUCUfECFT9jFg6/iZOQTt3FHkB1wGTJCNZEvPw==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-redis@0.57.0': + resolution: {integrity: sha512-bCxTHQFXzrU3eU1LZnOZQ3s5LURxQPDlU3/upBzlWY77qOI1GZuGofazj3jtzjctMJeBEJhNwIFEgRPBX1kp/Q==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-tedious@0.27.0': + resolution: {integrity: sha512-jRtyUJNZppPBjPae4ZjIQ2eqJbcRaRfJkr0lQLHFmOU/no5A6e9s1OHLd5XZyZoBJ/ymngZitanyRRA5cniseA==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-undici@0.19.0': + resolution: {integrity: sha512-Pst/RhR61A2OoZQZkn6OLpdVpXp6qn3Y92wXa6umfJe9rV640r4bc6SWvw4pPN6DiQqPu2c8gnSSZPDtC6JlpQ==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.7.0 + + '@opentelemetry/instrumentation@0.208.0': + resolution: {integrity: sha512-Eju0L4qWcQS+oXxi6pgh7zvE2byogAkcsVv0OjHF/97iOz1N/aKE6etSGowYkie+YA1uo6DNwdSxaaNnLvcRlA==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/redis-common@0.38.2': + resolution: {integrity: sha512-1BCcU93iwSRZvDAgwUxC/DV4T/406SkMfxGqu5ojc3AvNI+I9GhV7v0J1HljsczuuhcnFLYqD5VmwVXfCGHzxA==} + engines: {node: ^18.19.0 || >=20.6.0} + + '@opentelemetry/resources@2.4.0': + resolution: {integrity: sha512-RWvGLj2lMDZd7M/5tjkI/2VHMpXebLgPKvBUd9LRasEWR2xAynDwEYZuLvY9P2NGG73HF07jbbgWX2C9oavcQg==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': '>=1.3.0 <1.10.0' + + '@opentelemetry/sdk-trace-base@2.4.0': + resolution: {integrity: sha512-WH0xXkz/OHORDLKqaxcUZS0X+t1s7gGlumr2ebiEgNZQl2b0upK2cdoD0tatf7l8iP74woGJ/Kmxe82jdvcWRw==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': '>=1.3.0 <1.10.0' + + '@opentelemetry/semantic-conventions@1.39.0': + resolution: {integrity: sha512-R5R9tb2AXs2IRLNKLBJDynhkfmx7mX0vi8NkhZb3gUkPWHn6HXk5J8iQ/dql0U3ApfWym4kXXmBDRGO+oeOfjg==} + engines: {node: '>=14'} + + '@opentelemetry/sql-common@0.41.2': + resolution: {integrity: sha512-4mhWm3Z8z+i508zQJ7r6Xi7y4mmoJpdvH0fZPFRkWrdp5fq7hhZ2HhYokEOLkfqSMgPR4Z9EyB3DBkbKGOqZiQ==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.1.0 + + '@oxc-project/types@0.98.0': + resolution: {integrity: sha512-Vzmd6FsqVuz5HQVcRC/hrx7Ujo3WEVeQP7C2UNP5uy1hUY4SQvMB+93jxkI1KRHz9a/6cni3glPOtvteN+zpsw==} + '@pandacss/is-valid-prop@0.41.0': resolution: {integrity: sha512-BE6h6CsJk14ugIRrsazJtN3fcg+KDFRat1Bs93YFKH6jd4DOb1yUyVvC70jKqPVvg70zEcV8acZ7VdcU5TLu+w==} + '@photonjs/core@0.1.21': + resolution: {integrity: sha512-dfAUHhWGsKYPNAKqBaOfvGPKOm6l80yWJ3dq1vSG4GICa5ZJemM1xK5JRJhT1lZD4rEHPOJfQncZ8LHiMPivcg==} + peerDependencies: + vite: '>=7.1' + peerDependenciesMeta: + vite: + optional: true + + '@photonjs/hono@0.1.12': + resolution: {integrity: sha512-S/fiW3H5ivgayfLbr2cXQQdXZ82olMwLPBbKF4I/6nNH29s2+/nvsH4kswjVg8+ZVJ/WDibO1tCensbknEvM3w==} + peerDependencies: + '@hono/node-server': ^1 + vite: '>=7.1' + peerDependenciesMeta: + '@hono/node-server': + optional: true + vite: + optional: true + + '@photonjs/runtime@0.1.16': + resolution: {integrity: sha512-04ejZcSfQ3f16cpv22tJyJbqGMepuhpg2NBVoxK8YOiJltkBK1fF5lY/EORTF8ZTxYd1M2HGvn0ZfCAlTfZmng==} + peerDependencies: + vite: '>=7.1' + peerDependenciesMeta: + vite: + optional: true + + '@photonjs/srvx@0.1.12': + resolution: {integrity: sha512-UT/ukFPdmLsEm6Z5kKIl2DXhayxP0braPBcKRZ4bE1l2sFpN67/54JlZXyFgS/Qdmuo3Hpn94sDIX9uoEBVlGQ==} + peerDependencies: + vite: '>=7.1' + peerDependenciesMeta: + vite: + optional: true + '@pkgjs/parseargs@0.11.0': resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} @@ -1327,6 +1679,11 @@ packages: '@polka/url@1.0.0-next.28': resolution: {integrity: sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==} + '@prisma/instrumentation@6.19.0': + resolution: {integrity: sha512-QcuYy25pkXM8BJ37wVFBO7Zh34nyRV1GOb2n3lPkkbRYfl4hWl3PTcImP41P0KrzVXfa/45p6eVCos27x3exIg==} + peerDependencies: + '@opentelemetry/api': ^1.8 + '@rc-component/async-validator@5.0.4': resolution: {integrity: sha512-qgGdcVIF604M9EqjNF0hbUTz42bz/RDtxWdWuU5EQe3hi7M8ob54B6B35rOsvX5eSvIHIzT9iH1R3n+hk3CGfg==} engines: {node: '>=14.x'} @@ -1393,9 +1750,104 @@ packages: react-redux: optional: true + '@rolldown/binding-android-arm64@1.0.0-beta.51': + resolution: {integrity: sha512-Ctn8FUXKWWQI9pWC61P1yumS9WjQtelNS9riHwV7oCkknPGaAry4o7eFx2KgoLMnI2BgFJYpW7Im8/zX3BuONg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@rolldown/binding-darwin-arm64@1.0.0-beta.51': + resolution: {integrity: sha512-EL1aRW2Oq15ShUEkBPsDtLMO8GTqfb/ktM/dFaVzXKQiEE96Ss6nexMgfgQrg8dGnNpndFyffVDb5IdSibsu1g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@rolldown/binding-darwin-x64@1.0.0-beta.51': + resolution: {integrity: sha512-uGtYKlFen9pMIPvkHPWZVDtmYhMQi5g5Ddsndg1gf3atScKYKYgs5aDP4DhHeTwGXQglhfBG7lEaOIZ4UAIWww==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@rolldown/binding-freebsd-x64@1.0.0-beta.51': + resolution: {integrity: sha512-JRoVTQtHYbZj1P07JLiuTuXjiBtIa7ag7/qgKA6CIIXnAcdl4LrOf7nfDuHPJcuRKaP5dzecMgY99itvWfmUFQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.51': + resolution: {integrity: sha512-BKATVnpPZ0TYBW9XfDwyd4kPGgvf964HiotIwUgpMrFOFYWqpZ+9ONNzMV4UFAYC7Hb5C2qgYQk/qj2OnAd4RQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.51': + resolution: {integrity: sha512-xLd7da5jkfbVsBCm1buIRdWtuXY8+hU3+6ESXY/Tk5X5DPHaifrUblhYDgmA34dQt6WyNC2kfXGgrduPEvDI6Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.51': + resolution: {integrity: sha512-EQFXTgHxxTzv3t5EmjUP/DfxzFYx9sMndfLsYaAY4DWF6KsK1fXGYsiupif6qPTViPC9eVmRm78q0pZU/kuIPg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.51': + resolution: {integrity: sha512-p5P6Xpa68w3yFaAdSzIZJbj+AfuDnMDqNSeglBXM7UlJT14Q4zwK+rV+8Mhp9MiUb4XFISZtbI/seBprhkQbiQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + + '@rolldown/binding-linux-x64-musl@1.0.0-beta.51': + resolution: {integrity: sha512-sNVVyLa8HB8wkFipdfz1s6i0YWinwpbMWk5hO5S+XAYH2UH67YzUT13gs6wZTKg2x/3gtgXzYnHyF5wMIqoDAw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + + '@rolldown/binding-openharmony-arm64@1.0.0-beta.51': + resolution: {integrity: sha512-e/JMTz9Q8+T3g/deEi8DK44sFWZWGKr9AOCW5e8C8SCVWzAXqYXAG7FXBWBNzWEZK0Rcwo9TQHTQ9Q0gXgdCaA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@rolldown/binding-wasm32-wasi@1.0.0-beta.51': + resolution: {integrity: sha512-We3LWqSu6J9s5Y0MK+N7fUiiu37aBGPG3Pc347EoaROuAwkCS2u9xJ5dpIyLW4B49CIbS3KaPmn4kTgPb3EyPw==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.51': + resolution: {integrity: sha512-fj56buHRuMM+r/cb6ZYfNjNvO/0xeFybI6cTkTROJatdP4fvmQ1NS8D/Lm10FCSDEOkqIz8hK3TGpbAThbPHsA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.51': + resolution: {integrity: sha512-fkqEqaeEx8AySXiDm54b/RdINb3C0VovzJA3osMhZsbn6FoD73H0AOIiaVAtGr6x63hefruVKTX8irAm4Jkt2w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ia32] + os: [win32] + + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.51': + resolution: {integrity: sha512-CWuLG/HMtrVcjKGa0C4GnuxONrku89g0+CsH8nT0SNhOtREXuzwgjIXNJImpE/A/DMf9JF+1Xkrq/YRr+F/rCg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + '@rolldown/pluginutils@1.0.0-beta.47': resolution: {integrity: sha512-8QagwMH3kNCuzD8EWL8R2YPW5e4OrHNSAHRFDdmFqEwEaD/KcNKjVoumo+gP2vW5eKB2UPbM6vTYiGZX0ixLnw==} + '@rolldown/pluginutils@1.0.0-beta.51': + resolution: {integrity: sha512-51/8cNXMrqWqX3o8DZidhwz1uYq0BhHDDSfVygAND1Skx5s1TDw3APSSxCMcFFedwgqGcx34gRouwY+m404BBQ==} + + '@rollup/pluginutils@5.3.0': + resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + '@rollup/rollup-android-arm-eabi@4.46.2': resolution: {integrity: sha512-Zj3Hl6sN34xJtMv7Anwb5Gu01yujyE/cLBDB2gnHTAHaWS1Z38L7kuSG+oAh0giZMqG060f/YBStXtMH6FvPMA==} cpu: [arm] @@ -1496,6 +1948,126 @@ packages: cpu: [x64] os: [win32] + '@sentry-internal/browser-utils@10.35.0': + resolution: {integrity: sha512-YjVbyqpJu6E6U/BCdOgIUuUQPUDZ7XdFiBYXtGy59xqQB1qSqNfei163hkfnXxIN90csDubxWNrnit+W5Wo/uQ==} + engines: {node: '>=18'} + + '@sentry-internal/feedback@10.35.0': + resolution: {integrity: sha512-h/rtGcgvGtZIY9njxnzHHMzMwFYAYG/UwDaNtpf8jN63JD6cTQDQ8wNWp0arD9gmUr96YjER55BNRRF8oSg6Fw==} + engines: {node: '>=18'} + + '@sentry-internal/replay-canvas@10.35.0': + resolution: {integrity: sha512-efaz8ETDLd0rSpoqX4m8fMnq7abzUJAdqeChz9Jdq6OgvHeBgM6tTfqWSes6sFnSCvFUVkdFngZQfgmBxWGuEA==} + engines: {node: '>=18'} + + '@sentry-internal/replay@10.35.0': + resolution: {integrity: sha512-9hGP3lD+7o/4ovGTdwv3T9K2t9LxSlR/CAcRQeFApW2c0AGsjTdcglOxsgxYei4YmaISx0CBJ/YqJfQVYxaxWw==} + engines: {node: '>=18'} + + '@sentry/babel-plugin-component-annotate@4.7.0': + resolution: {integrity: sha512-MkyajDiO17/GaHHFgOmh05ZtOwF5hmm9KRjVgn9PXHIdpz+TFM5mkp1dABmR6Y75TyNU98Z1aOwPOgyaR5etJw==} + engines: {node: '>= 14'} + + '@sentry/browser@10.35.0': + resolution: {integrity: sha512-3wCdmKOTqg6Fvmb9HLHzCVIpSSYCPhXFQ95VaYsb1rESIgL7BMS9nyqhecPcPR3oJppU2a/TqZk4YH3nFrPXmA==} + engines: {node: '>=18'} + + '@sentry/bundler-plugin-core@4.7.0': + resolution: {integrity: sha512-gFdEtiup/7qYhN3vp1v2f0WL9AG9OorWLtIpfSBYbWjtzklVNg1sizvNyZ8nEiwtnb25LzvvCUbOP1SyP6IodQ==} + engines: {node: '>= 14'} + + '@sentry/cli-darwin@2.58.4': + resolution: {integrity: sha512-kbTD+P4X8O+nsNwPxCywtj3q22ecyRHWff98rdcmtRrvwz8CKi/T4Jxn/fnn2i4VEchy08OWBuZAqaA5Kh2hRQ==} + engines: {node: '>=10'} + os: [darwin] + + '@sentry/cli-linux-arm64@2.58.4': + resolution: {integrity: sha512-0g0KwsOozkLtzN8/0+oMZoOuQ0o7W6O+hx+ydVU1bktaMGKEJLMAWxOQNjsh1TcBbNIXVOKM/I8l0ROhaAb8Ig==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux, freebsd, android] + + '@sentry/cli-linux-arm@2.58.4': + resolution: {integrity: sha512-rdQ8beTwnN48hv7iV7e7ZKucPec5NJkRdrrycMJMZlzGBPi56LqnclgsHySJ6Kfq506A2MNuQnKGaf/sBC9REA==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux, freebsd, android] + + '@sentry/cli-linux-i686@2.58.4': + resolution: {integrity: sha512-NseoIQAFtkziHyjZNPTu1Gm1opeQHt7Wm1LbLrGWVIRvUOzlslO9/8i6wETUZ6TjlQxBVRgd3Q0lRBG2A8rFYA==} + engines: {node: '>=10'} + cpu: [x86, ia32] + os: [linux, freebsd, android] + + '@sentry/cli-linux-x64@2.58.4': + resolution: {integrity: sha512-d3Arz+OO/wJYTqCYlSN3Ktm+W8rynQ/IMtSZLK8nu0ryh5mJOh+9XlXY6oDXw4YlsM8qCRrNquR8iEI1Y/IH+Q==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux, freebsd, android] + + '@sentry/cli-win32-arm64@2.58.4': + resolution: {integrity: sha512-bqYrF43+jXdDBh0f8HIJU3tbvlOFtGyRjHB8AoRuMQv9TEDUfENZyCelhdjA+KwDKYl48R1Yasb4EHNzsoO83w==} + engines: {node: '>=10'} + cpu: [arm64] + os: [win32] + + '@sentry/cli-win32-i686@2.58.4': + resolution: {integrity: sha512-3triFD6jyvhVcXOmGyttf+deKZcC1tURdhnmDUIBkiDPJKGT/N5xa4qAtHJlAB/h8L9jgYih9bvJnvvFVM7yug==} + engines: {node: '>=10'} + cpu: [x86, ia32] + os: [win32] + + '@sentry/cli-win32-x64@2.58.4': + resolution: {integrity: sha512-cSzN4PjM1RsCZ4pxMjI0VI7yNCkxiJ5jmWncyiwHXGiXrV1eXYdQ3n1LhUYLZ91CafyprR0OhDcE+RVZ26Qb5w==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + + '@sentry/cli@2.58.4': + resolution: {integrity: sha512-ArDrpuS8JtDYEvwGleVE+FgR+qHaOp77IgdGSacz6SZy6Lv90uX0Nu4UrHCQJz8/xwIcNxSqnN22lq0dH4IqTg==} + engines: {node: '>= 10'} + hasBin: true + + '@sentry/core@10.35.0': + resolution: {integrity: sha512-lEK1WFqt6oHtMq5dDLVE/FDzHDGs1PlYT5cZH4aBirYtJVyUiTf0NknKFob4a2zTywczlq7SbLv6Ba8UMU9dYg==} + engines: {node: '>=18'} + + '@sentry/node-core@10.35.0': + resolution: {integrity: sha512-8DQc13zYJtIWlz7U0MkxGOGMQmNsJxb6ZuojLnitUvGPMyc5GFT/JKOIv0rqHNfmr63n60tplfmD7lKzfXC3mQ==} + engines: {node: '>=18'} + peerDependencies: + '@opentelemetry/api': ^1.9.0 + '@opentelemetry/context-async-hooks': ^1.30.1 || ^2.1.0 || ^2.2.0 + '@opentelemetry/core': ^1.30.1 || ^2.1.0 || ^2.2.0 + '@opentelemetry/instrumentation': '>=0.57.1 <1' + '@opentelemetry/resources': ^1.30.1 || ^2.1.0 || ^2.2.0 + '@opentelemetry/sdk-trace-base': ^1.30.1 || ^2.1.0 || ^2.2.0 + '@opentelemetry/semantic-conventions': ^1.37.0 + + '@sentry/node@10.35.0': + resolution: {integrity: sha512-r6lEOEQo28grF4DtoD4H6IeK5tb90IZBN68osbIfA7QGphpgoKd54YBA5AEC5f3OXBVlbcK6dQ95bol5b98qhg==} + engines: {node: '>=18'} + + '@sentry/opentelemetry@10.35.0': + resolution: {integrity: sha512-6RolzEXh9o9gorhyYZ+y0IbExdZKWb0N7DY+ltOTt9SxyQ02evUgxDqLi1pOW2pvXahEghjrGPAKVBv7uccLNw==} + engines: {node: '>=18'} + peerDependencies: + '@opentelemetry/api': ^1.9.0 + '@opentelemetry/context-async-hooks': ^1.30.1 || ^2.1.0 || ^2.2.0 + '@opentelemetry/core': ^1.30.1 || ^2.1.0 || ^2.2.0 + '@opentelemetry/sdk-trace-base': ^1.30.1 || ^2.1.0 || ^2.2.0 + '@opentelemetry/semantic-conventions': ^1.37.0 + + '@sentry/react@10.35.0': + resolution: {integrity: sha512-RJsJVZRVe646euf1HLlhbjeAHn2ABd54Y7Zpy4XUJaL4FdKqaaFmqeHKi6IxXFf6IE35onk/kn8CfR7xWBhe2g==} + engines: {node: '>=18'} + peerDependencies: + react: ^16.14.0 || 17.x || 18.x || 19.x + + '@sentry/vite-plugin@4.7.0': + resolution: {integrity: sha512-eQXDghOQLsYwnHutJo8TCzhG4gp0KLNq3h96iqFMhsbjnNnfYeCX1lIw1pJEh/az3cDwSyPI/KGkvf8hr0dZmQ==} + engines: {node: '>= 14'} + '@simple-libs/child-process-utils@1.0.1': resolution: {integrity: sha512-3nWd8irxvDI6v856wpPCHZ+08iQR0oHTZfzAZmnbsLzf+Sf1odraP6uKOHDZToXq3RPRV/LbqGVlSCogm9cJjg==} engines: {node: '>=18'} @@ -1540,6 +2112,9 @@ packages: '@types/react-dom': optional: true + '@tybys/wasm-util@0.10.1': + resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} + '@types/aria-query@5.0.4': resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} @@ -1558,12 +2133,18 @@ packages: '@types/chai@5.2.2': resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==} + '@types/connect@3.4.38': + resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + '@types/deep-eql@4.0.2': resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + '@types/mysql@2.15.27': + resolution: {integrity: sha512-YfWiV16IY0OeBfBCk8+hXKmdTKrKlwKN1MNKAPBu5JYxLwBEZl7QzeEpGnlZb3VMGJrrGmB84gXiH+ofs/TezA==} + '@types/node@22.15.34': resolution: {integrity: sha512-8Y6E5WUupYy1Dd0II32BsWAx5MWdcnRd8L84Oys3veg1YrYtNtzgO4CFhiBg6MDSjk7Ay36HYOnU7/tuOzIzcw==} @@ -1576,6 +2157,12 @@ packages: '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} + '@types/pg-pool@2.0.6': + resolution: {integrity: sha512-TaAUE5rq2VQYxab5Ts7WZhKNmuN78Q6PiFonTDdpbx8a1H0M1vhy3rhiMjl+e2iHmogyMw7jZF4FrE6eJUy5HQ==} + + '@types/pg@8.15.6': + resolution: {integrity: sha512-NoaMtzhxOrubeL/7UZuNTrejB4MPAJ0RpxZqXQf2qXuVlTPuG6Y8p4u9dKRaue4yjmC7ZhzVO2/Yyyn25znrPQ==} + '@types/react-dom@19.2.3': resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==} peerDependencies: @@ -1587,9 +2174,67 @@ packages: '@types/stylis@4.2.5': resolution: {integrity: sha512-1Xve+NMN7FWjY14vLoY5tL3BVEQ/n42YLwaqJIPYhotZ9uBHt87VceMwWQpzmdEt2TNXIorIFG+YeCUUW7RInw==} + '@types/tedious@4.0.14': + resolution: {integrity: sha512-KHPsfX/FoVbUGbyYvk1q9MMQHLPeRZhRJZdO45Q4YjvFkv4hMNghCWTvy7rdKessBsmtz4euWCWAB6/tVpI1Iw==} + '@types/use-sync-external-store@0.0.6': resolution: {integrity: sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg==} + '@universal-middleware/cloudflare@0.4.11': + resolution: {integrity: sha512-V25n4ORB69qszifoXK1bwvXrpSNrEOgu1sGFBhnXsp0Lr+I5fRa0bSZKK+Tiz09E+Yiavm9UEM3AqAWjlbxsgg==} + + '@universal-middleware/compress@0.2.35': + resolution: {integrity: sha512-uLwwPtGLlK6KCYG5SksLdifOFhx6O10hArtz7PaD2hbqRE+IiWa1zntDCtKIkOHhA8Upz2koIbScyRpY/z/a3w==} + + '@universal-middleware/core@0.4.15': + resolution: {integrity: sha512-4nUc79ANoExxldCGz4b2ttyxjopcmO8MH7sbJLCvFKxa9DdbHfsXI9+HAvgbKAYqC8FAFbadsMzqnAeSqis1dw==} + peerDependencies: + '@cloudflare/workers-types': ^4.20260114.0 + '@hattip/core': ^0.0.49 + '@types/express': ^4 || ^5 + '@webroute/route': ^0.8.0 + elysia: ^1.4.22 + fastify: ^5.6.2 + h3: ^1.15.4 + hono: ^4.11.4 + srvx: ^0.8 || ^0.9 + peerDependenciesMeta: + '@cloudflare/workers-types': + optional: true + '@hattip/core': + optional: true + '@types/express': + optional: true + '@webroute/route': + optional: true + elysia: + optional: true + fastify: + optional: true + h3: + optional: true + hono: + optional: true + srvx: + optional: true + + '@universal-middleware/express@0.4.23': + resolution: {integrity: sha512-wFM9HQWIXrK+CJvld95bwkGbb1wA/bKkwBBKI5njPShVCMayFoSDb6FMrqezHqI3hGBcjUs9D17CVIJa6gzdPA==} + + '@universal-middleware/hono@0.4.20': + resolution: {integrity: sha512-UYsp/urka7BEilzAn/SlnDNxel5rWKV+hRDqwoPhq3E1bJ91M6YuT5OR4EtTm2Jx4S0fFMr8ITA2F4hWZ/+vgw==} + + '@universal-middleware/sirv@0.1.25': + resolution: {integrity: sha512-yjOJE/PmEFfTPYOpwXzZyGnDRZOvDphMrsNLaNkdNVlCBFnTLEGIJP9WnsOKNr65iyqFkMXzXvmyZd65RlN8yg==} + + '@universal-middleware/srvx@0.1.2': + resolution: {integrity: sha512-9wae91aI+GD43IJEbf1Wbk/R0H2+zsh1dMbaWb1QDm83wd0yLWO3AiarcUaHDGJDweDPSlKBLOoPkI317EDSVw==} + + '@vercel/nft@0.30.4': + resolution: {integrity: sha512-wE6eAGSXScra60N2l6jWvNtVK0m+sh873CpfZW4KI2v8EHuUQp+mSEi4T+IcdPCSEDgCdAS/7bizbhQlkjzrSA==} + engines: {node: '>=18'} + hasBin: true + '@vitejs/plugin-react@5.1.1': resolution: {integrity: sha512-WQfkSw0QbQ5aJ2CHYw23ZGkqnRwqKHD/KYsMeTkZzPT4Jcf0DcBxBtwMJxnu6E7oxw5+JC6ZAiePgh28uJ1HBA==} engines: {node: ^20.19.0 || >=22.12.0} @@ -1842,6 +2487,24 @@ packages: '@zag-js/utils@0.82.2': resolution: {integrity: sha512-tN87VEEoo240O2CzQdHvtBVPF8hHqLdpNzDT+obNIQrRj4wbNQ5Ze3Zwrd6/SoBe7ImKgkwbAlgu4k5+v9sDcA==} + abbrev@3.0.1: + resolution: {integrity: sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==} + engines: {node: ^18.17.0 || >=20.5.0} + + acorn-import-attributes@1.9.5: + resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} + peerDependencies: + acorn: ^8 + + acorn@8.15.0: + resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} + engines: {node: '>=0.4.0'} + hasBin: true + + agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + agent-base@7.1.3: resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} engines: {node: '>= 14'} @@ -1872,6 +2535,10 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + aria-query@5.3.0: resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} @@ -1885,6 +2552,9 @@ packages: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} + async-sema@3.1.1: + resolution: {integrity: sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==} + asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} @@ -1895,6 +2565,13 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + bindings@1.5.0: + resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} + brace-expansion@2.0.1: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} @@ -1943,6 +2620,17 @@ packages: resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} engines: {node: '>= 16'} + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + chownr@3.0.0: + resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} + engines: {node: '>=18'} + + cjs-module-lexer@2.2.0: + resolution: {integrity: sha512-4bHTS2YuzUvtoLjdy+98ykbNB5jS0+07EvFNXerqZQJ89F7DI6ET7OQo/HJuW6K0aVsKA9hj9/RVb2kQVOrPDQ==} + classnames@2.5.1: resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} @@ -1970,6 +2658,13 @@ packages: compute-scroll-into-view@3.1.1: resolution: {integrity: sha512-VRhuHOLoKYOy4UbilLbUzbYg93XLjv2PncJC50EuTWPA3gaja1UjBsUP/D/9/juV3vQFr6XBEzn9KCAHdUvOHw==} + confbox@0.2.2: + resolution: {integrity: sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==} + + consola@3.4.2: + resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} + engines: {node: ^14.18.0 || >=16.10.0} + conventional-changelog-angular@8.0.0: resolution: {integrity: sha512-CLf+zr6St0wIxos4bmaKHRXWAcsCXrJU6F4VdNDrGRK3B8LDLKoX3zuMV5GhtbGkVR/LohZ6MT6im43vZLSjmA==} engines: {node: '>=18'} @@ -2066,6 +2761,10 @@ packages: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} + engines: {node: '>=8'} + devalue@4.3.3: resolution: {integrity: sha512-UH8EL6H2ifcY8TbD2QsxwCC/pr5xSwPvv85LrLXVihmHVC3T3YqTCIwnR5ak0yO1KYqlxrPVOA/JVZJYPy2ATg==} @@ -2076,6 +2775,10 @@ packages: resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} engines: {node: '>=8'} + dotenv@16.6.1: + resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==} + engines: {node: '>=12'} + dunder-proto@1.0.1: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} @@ -2136,6 +2839,9 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} @@ -2147,6 +2853,9 @@ packages: resolution: {integrity: sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==} engines: {node: '>=12.0.0'} + exsolve@1.0.8: + resolution: {integrity: sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==} + fast-glob@3.3.3: resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} engines: {node: '>=8.6.0'} @@ -2169,6 +2878,9 @@ packages: picomatch: optional: true + file-uri-to-path@1.0.0: + resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} + fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} @@ -2176,6 +2888,10 @@ packages: find-root@1.1.0: resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + foreground-child@3.3.1: resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} engines: {node: '>=14'} @@ -2184,6 +2900,9 @@ packages: resolution: {integrity: sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==} engines: {node: '>= 6'} + forwarded-parse@2.1.2: + resolution: {integrity: sha512-alTFZZQDKMporBH77856pXgzhEzaUVmLCDk+egLgIgHst3Tpndzz8MnKe+GzRJRfvVdn69HhpW7cmXzvtLvJAw==} + fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -2219,10 +2938,17 @@ packages: resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} hasBin: true + glob@10.5.0: + resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==} + hasBin: true + gopd@1.2.0: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + graphql-tag@2.12.6: resolution: {integrity: sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==} engines: {node: '>=10'} @@ -2253,6 +2979,10 @@ packages: hoist-non-react-statics@3.3.2: resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} + hono@4.11.4: + resolution: {integrity: sha512-U7tt8JsyrxSRKspfhtLET79pU8K+tInj5QZXs1jSugO1Vq5dFj3kmZsRldo29mTBfcjDRVRXrEZ6LS63Cog9ZA==} + engines: {node: '>=16.9.0'} + hosted-git-info@8.1.0: resolution: {integrity: sha512-Rw/B2DNQaPBICNXEm8balFz9a6WpZrkCGpcWFpy7nCj+NyhSdqXipmfvtmWt9xGfp0wZnBxB+iVpLmQMYt47Tw==} engines: {node: ^18.17.0 || >=20.5.0} @@ -2265,6 +2995,10 @@ packages: resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} engines: {node: '>= 14'} + https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + https-proxy-agent@7.0.6: resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} engines: {node: '>= 14'} @@ -2284,9 +3018,16 @@ packages: resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} engines: {node: '>=6'} + import-in-the-middle@2.0.4: + resolution: {integrity: sha512-Al0kMpa0BqfvDnxjxGlab9vdQ0vTDs82TBKrD59X9jReUoPAzSGBb6vGDzMUMFBGyyDF03RpLT4oxGn6BpASzQ==} + is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + is-core-module@2.16.1: resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} engines: {node: '>= 0.4'} @@ -2362,6 +3103,10 @@ packages: lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + loose-envify@1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true @@ -2385,6 +3130,13 @@ packages: magic-string@0.30.17: resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + + magic-string@0.30.8: + resolution: {integrity: sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==} + engines: {node: '>=12'} + math-intrinsics@1.1.0: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} @@ -2427,6 +3179,13 @@ packages: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} + minizlib@3.1.0: + resolution: {integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==} + engines: {node: '>= 18'} + + module-details-from-path@1.0.4: + resolution: {integrity: sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w==} + mrmime@2.0.1: resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} engines: {node: '>=10'} @@ -2442,13 +3201,35 @@ packages: neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + 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-gyp-build@4.8.4: + resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==} + hasBin: true + node-releases@2.0.19: resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + nopt@8.1.0: + resolution: {integrity: sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==} + engines: {node: ^18.17.0 || >=20.5.0} + hasBin: true + normalize-package-data@7.0.0: resolution: {integrity: sha512-k6U0gKRIuNCTkwHGZqblCfLfBRh+w1vI6tBo+IeJwq2M8FUiOqhX7GH+GArQGScA7azd1WfyRCvxoXDO3hQDIA==} engines: {node: ^18.17.0 || >=20.5.0} + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} @@ -2467,6 +3248,14 @@ packages: optimism@0.18.1: resolution: {integrity: sha512-mLXNwWPa9dgFyDqkNi54sjDyNJ9/fTI6WGBLgnXku1vdKY/jovHfZT5r+aiVeFFLOz+foPNOm5YJ4mqgld2GBQ==} + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} @@ -2481,6 +3270,10 @@ packages: parse5@7.2.1: resolution: {integrity: sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==} + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} @@ -2509,6 +3302,17 @@ packages: perfect-freehand@1.2.2: resolution: {integrity: sha512-eh31l019WICQ03pkF3FSzHxB8n07ItqIQ++G5UV8JX0zVOXzgTGCqnRR0jJ2h9U8/2uW4W4mtGJELt9kEV0CFQ==} + pg-int8@1.0.1: + resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} + engines: {node: '>=4.0.0'} + + pg-protocol@1.11.0: + resolution: {integrity: sha512-pfsxk2M9M3BuGgDOfuy37VNRRX3jmKgMjcvAcWqNDpZSf4cUmv8HSOl5ViRQFsfARFn0KuUQTgLxVMbNq5NW3g==} + + pg-types@2.2.0: + resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} + engines: {node: '>=4'} + picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -2524,6 +3328,9 @@ packages: resolution: {integrity: sha512-o8mkY4E/+LNUf6LzX96ht6k6CEDi65k9G2rjMtBe9Oo+VPKSvl+0GKHuH/AlG+GA5LPG/i5hrekkxUc3s2HU+Q==} hasBin: true + pkg-types@2.3.0: + resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==} + playwright-chromium@1.57.0: resolution: {integrity: sha512-GCVVTbmIDrZuBxWYoQ70rehRXMb3Q7ccENe63a+rGTWwypeVAgh/DD5o5QQ898oer5pdIv3vGINUlEkHtOZQEw==} engines: {node: '>=18'} @@ -2549,6 +3356,22 @@ packages: resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} + postgres-array@2.0.0: + resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} + engines: {node: '>=4'} + + postgres-bytea@1.0.1: + resolution: {integrity: sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ==} + 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'} + prettier@3.5.3: resolution: {integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==} engines: {node: '>=14'} @@ -2558,12 +3381,19 @@ packages: resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + progress@2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} proxy-compare@3.0.1: resolution: {integrity: sha512-V9plBAt3qjMlS1+nC8771KNf6oJ12gExvaxnNzN/9yVRLdTv/lc+oJlnSzrdYDAvBfTStPCoiaCOTmTs0adv7Q==} + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + proxy-memoize@3.0.1: resolution: {integrity: sha512-VDdG/VYtOgdGkWJx7y0o7p+zArSf2383Isci8C+BP3YXgMYDoPd3cCBjw0JdWb6YBb9sFiOPbAADDVTPJnh+9g==} @@ -2853,6 +3683,10 @@ packages: resolution: {integrity: sha512-DGrYcCWK7tvYMnWh79yrPHt+vdx9tY+1gPZa7nJQtO/p8bLTDaHp4dzwEhQB7pZ4Xe3ok4XKuEPrVuc+wlpkmw==} engines: {node: '>=0.10.0'} + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + redux-thunk@3.1.0: resolution: {integrity: sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw==} peerDependencies: @@ -2864,6 +3698,10 @@ packages: regenerator-runtime@0.14.1: resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + regexparam@3.0.0: + resolution: {integrity: sha512-RSYAtP31mvYLkAHrOlh25pCNQ5hWnT106VukGaaFfuJrZFkGRX5GhUAdPqpSDXxOhA2c4akmRuplv1mRqnBn6Q==} + engines: {node: '>=8'} + rehackt@0.1.0: resolution: {integrity: sha512-7kRDOuLHB87D/JESKxQoRwv4DzbIdwkAGQ7p6QKGdVlY1IZheUnVhlk/4UZlNUVxdAXpyxikE3URsG067ybVzw==} peerDependencies: @@ -2875,6 +3713,10 @@ packages: react: optional: true + require-in-the-middle@8.0.1: + resolution: {integrity: sha512-QT7FVMXfWOYFbeRBF6nu+I6tr2Tf3u0q8RIEjNob/heKY/nh7drD/k7eeMFmSQgnTtCzLDcCu/XEnpW2wk4xCQ==} + engines: {node: '>=9.3.0 || >=8.10.0 <9.0.0'} + requires-port@1.0.0: resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} @@ -2888,6 +3730,10 @@ packages: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + resolve@1.22.10: resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} engines: {node: '>= 0.4'} @@ -2901,6 +3747,11 @@ packages: resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} hasBin: true + rolldown@1.0.0-beta.51: + resolution: {integrity: sha512-ZRLgPlS91l4JztLYEZnmMcd3Umcla1hkXJgiEiR4HloRJBBoeaX8qogTu5Jfu36rRMVLndzqYv0h+M5gJAkUfg==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + rollup@4.46.2: resolution: {integrity: sha512-WMmLFI+Boh6xbop+OAGo9cQ3OgX9MIg7xOQjn+pTCwOkk+FNDAeAemXkJ3HzDJrVXleLOFVa1ipuc1AmEx1Dwg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -2989,9 +3840,17 @@ packages: spdx-license-ids@3.0.21: resolution: {integrity: sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==} + srvx@0.9.8: + resolution: {integrity: sha512-RZaxTKJEE/14HYn8COLuUOJAt0U55N9l1Xf6jj+T0GoA01EUH1Xz5JtSUOI+EHn+AEgPCVn7gk6jHJffrr06fQ==} + engines: {node: '>=20.16.0'} + hasBin: true + stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + standaloner@0.1.11: + resolution: {integrity: sha512-JeLFj5rKTmy3UJj7/oGUVnmFaBIWmJQVP5Hv3s2D6Ju8kVPZYbGxOhMQS45QiEr2V0ngI83d/Vv4Zh62Ojs/rQ==} + std-env@3.9.0: resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==} @@ -3061,6 +3920,10 @@ packages: symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + tar@7.5.4: + resolution: {integrity: sha512-AN04xbWGrSTDmVwlI4/GTlIIwMFk/XEv7uL8aa57zuvRy6s4hdBed+lVq2fAZ89XDa7Us3ANXcE3Tvqvja1kTA==} + engines: {node: '>=18'} + throttle-debounce@5.0.2: resolution: {integrity: sha512-B71/4oyj61iNH0KeCamLuE2rmKuTO5byTOSVwECM5FA7TiAiAW+UqTKZ9ERueC4qvgSttUhdmq1mXC3kJqGX7A==} engines: {node: '>=12.22'} @@ -3087,6 +3950,13 @@ packages: resolution: {integrity: sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A==} engines: {node: '>=14.0.0'} + tldts-core@7.0.19: + resolution: {integrity: sha512-lJX2dEWx0SGH4O6p+7FPwYmJ/bu1JbcGJ8RLaG9b7liIgZ85itUVEPbMtWRVrde/0fnDPEPHW10ZsKW3kVsE9A==} + + tldts@7.0.19: + resolution: {integrity: sha512-8PWx8tvC4jDB39BQw1m4x8y5MH1BcQ5xHeL2n7UVFulMPH/3Q0uiamahFJ3lXA0zO2SUyRXuVVbWSDmstlt9YA==} + hasBin: true + to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -3102,10 +3972,21 @@ packages: resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} engines: {node: '>=6'} + tough-cookie@6.0.0: + resolution: {integrity: sha512-kXuRi1mtaKMrsLUxz3sQYvVl37B0Ns6MzfrtV5DvJceE9bPyspOqk9xxv7XbZWcfLWbFmm997vl83qUWVJA64w==} + engines: {node: '>=16'} + + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + tr46@5.1.0: resolution: {integrity: sha512-IUWnUK7ADYR5Sl1fZlO1INDUhVhatWl7BtJWsIhwJ0UAK7ilzzIa8uIqOO/aYVWHZPJkKbEL+362wrzoeRF7bw==} engines: {node: '>=18'} + ts-deepmerge@7.0.3: + resolution: {integrity: sha512-Du/ZW2RfwV/D4cmA5rXafYjBQVuvu4qGiEEla4EmEHVHgRdx68Gftx7i66jn2bzHPwSVZY36Ae6OuDn9el4ZKA==} + engines: {node: '>=14.13.1'} + ts-invariant@0.10.3: resolution: {integrity: sha512-uivwYcQaxAucv1CzRp2n/QdYPo4ILf9VXgH19zEIjFx2EJufV16P0JtJVpYHy89DItG6Kwj2oIUjrcK5au+4tQ==} engines: {node: '>=8'} @@ -3140,6 +4021,9 @@ packages: resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} engines: {node: '>= 4.0.0'} + unplugin@1.0.1: + resolution: {integrity: sha512-aqrHaVBWW1JVKBHmGo33T5TxeL0qWzfvjWokObHA9bYmN7eNDkwOxmLjhioHl9878qDFMAaT51XNroRyuz7WxA==} + update-browserslist-db@1.1.3: resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} hasBin: true @@ -3160,6 +4044,30 @@ packages: validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + vike-photon@0.1.24: + resolution: {integrity: sha512-zaF/WvNq0JwNvCbQR6eDuf7pgpNwWu5+ZhLJx2Qr1/ndPZrya9PuO2Me7Q9CFvWvig3zvegZ47ny79zyir+sAw==} + peerDependencies: + '@photonjs/cloudflare': '>=0.0.9' + '@photonjs/core': ^0.1.0 + '@photonjs/runtime': ^0.1.0 + '@photonjs/vercel': ^0.1.1 + vike: '>=0.4.244' + vite: '>=7.1' + peerDependenciesMeta: + '@photonjs/cloudflare': + optional: true + '@photonjs/vercel': + optional: true + vite: + optional: true + + vike-react@0.6.10: + resolution: {integrity: sha512-LzV3ZuFovlzkaWiXO9PQeiW56szVo5rM4h8UJeb58dUpAVzcjxvDoM0Q+2vinJisVrml5Wp+DjN0qWQHUu5UQQ==} + peerDependencies: + react: '>=19' + react-dom: '>=19' + vike: '>=0.4.182' + vike@0.4.253: resolution: {integrity: sha512-glS8FidhqnK6I/wLs48BYtqsAMXs8QtOB0uxeZ0G93G2a0ZkymuZ5rjbcZHUCBLoUYS/8i0h4d4NhK2mAsUhTA==} engines: {node: '>=20.19.0'} @@ -3253,10 +4161,20 @@ packages: walk-up-path@3.0.1: resolution: {integrity: sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA==} + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + webidl-conversions@7.0.0: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} + webpack-sources@3.3.3: + resolution: {integrity: sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==} + engines: {node: '>=10.13.0'} + + webpack-virtual-modules@0.5.0: + resolution: {integrity: sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==} + whatwg-encoding@3.1.1: resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} engines: {node: '>=18'} @@ -3269,6 +4187,9 @@ packages: resolution: {integrity: sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==} engines: {node: '>=18'} + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -3309,19 +4230,34 @@ packages: xmlchars@2.2.0: resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + yallist@5.0.0: + resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} + engines: {node: '>=18'} + yaml@1.10.2: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + zen-observable-ts@1.2.5: resolution: {integrity: sha512-QZWQekv6iB72Naeake9hS1KxHlotfRpe+WGNbNx5/ta+R3DNjVO2bswf63gXlWDcs+EMd7XY8HfVQyP1X6T4Zg==} zen-observable@0.8.15: resolution: {integrity: sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==} + zod@4.3.5: + resolution: {integrity: sha512-k7Nwx6vuWx1IJ9Bjuf4Zt1PEllcwe7cls3VNzm4CQ1/hgtFUK2bRNG3rvnpPUhFjmqJKAKtjV576KnUkHocg/g==} + zustand@5.0.8: resolution: {integrity: sha512-gyPKpIaxY9XcO2vSMrLbiER7QMAMGOQZVRdJ6Zi782jkbzZygq5GI9nG8g+sMgitRtndwaBSl7uiqC49o1SSiw==} engines: {node: '>=12.20.0'} @@ -3391,6 +4327,16 @@ snapshots: resize-observer-polyfill: 1.5.1 throttle-debounce: 5.0.2 + '@apm-js-collab/code-transformer@0.8.2': {} + + '@apm-js-collab/tracing-hooks@0.3.1': + dependencies: + '@apm-js-collab/code-transformer': 0.8.2 + debug: 4.4.1 + module-details-from-path: 1.0.4 + transitivePeerDependencies: + - supports-color + '@apollo/client-react-streaming@0.11.11(@apollo/client@3.13.5(@types/react@19.2.7)(graphql@16.10.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(graphql@16.10.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': dependencies: '@apollo/client': 3.13.5(@types/react@19.2.7)(graphql@16.10.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) @@ -3737,6 +4683,22 @@ snapshots: '@csstools/css-tokenizer@3.0.3': {} + '@emnapi/core@1.8.1': + dependencies: + '@emnapi/wasi-threads': 1.1.0 + tslib: 2.8.1 + optional: true + + '@emnapi/runtime@1.8.1': + dependencies: + tslib: 2.8.1 + optional: true + + '@emnapi/wasi-threads@1.1.0': + dependencies: + tslib: 2.8.1 + optional: true + '@emotion/babel-plugin@11.13.5': dependencies: '@babel/helper-module-imports': 7.27.1 @@ -3999,6 +4961,10 @@ snapshots: wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 + '@isaacs/fs-minipass@4.0.1': + dependencies: + minipass: 7.1.2 + '@jridgewell/gen-mapping@0.3.13': dependencies: '@jridgewell/sourcemap-codec': 1.5.0 @@ -4013,11 +4979,33 @@ snapshots: '@jridgewell/sourcemap-codec@1.5.0': {} + '@jridgewell/sourcemap-codec@1.5.5': {} + '@jridgewell/trace-mapping@0.3.30': dependencies: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 + '@mapbox/node-pre-gyp@2.0.3': + dependencies: + consola: 3.4.2 + detect-libc: 2.1.2 + https-proxy-agent: 7.0.6 + node-fetch: 2.7.0 + nopt: 8.1.0 + semver: 7.7.1 + tar: 7.5.4 + transitivePeerDependencies: + - encoding + - supports-color + + '@napi-rs/wasm-runtime@1.1.1': + dependencies: + '@emnapi/core': 1.8.1 + '@emnapi/runtime': 1.8.1 + '@tybys/wasm-util': 0.10.1 + optional: true + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -4030,13 +5018,339 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.19.1 + '@opentelemetry/api-logs@0.208.0': + dependencies: + '@opentelemetry/api': 1.9.0 + + '@opentelemetry/api@1.9.0': {} + + '@opentelemetry/context-async-hooks@2.4.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + + '@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/semantic-conventions': 1.39.0 + + '@opentelemetry/core@2.4.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/semantic-conventions': 1.39.0 + + '@opentelemetry/instrumentation-amqplib@0.55.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.4.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-connect@0.52.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.4.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.39.0 + '@types/connect': 3.4.38 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-dataloader@0.26.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-express@0.57.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.4.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.39.0 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-fs@0.28.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.4.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-generic-pool@0.52.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-graphql@0.56.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-hapi@0.55.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.4.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.39.0 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-http@0.208.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.39.0 + forwarded-parse: 2.1.2 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-ioredis@0.56.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) + '@opentelemetry/redis-common': 0.38.2 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-kafkajs@0.18.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.39.0 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-knex@0.53.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.39.0 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-koa@0.57.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.4.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.39.0 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-lru-memoizer@0.53.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-mongodb@0.61.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-mongoose@0.55.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.4.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-mysql2@0.55.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.39.0 + '@opentelemetry/sql-common': 0.41.2(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-mysql@0.54.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) + '@types/mysql': 2.15.27 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-pg@0.61.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.4.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.39.0 + '@opentelemetry/sql-common': 0.41.2(@opentelemetry/api@1.9.0) + '@types/pg': 8.15.6 + '@types/pg-pool': 2.0.6 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-redis@0.57.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) + '@opentelemetry/redis-common': 0.38.2 + '@opentelemetry/semantic-conventions': 1.39.0 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-tedious@0.27.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) + '@types/tedious': 4.0.14 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-undici@0.19.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.4.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.39.0 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation@0.208.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/api-logs': 0.208.0 + import-in-the-middle: 2.0.4 + require-in-the-middle: 8.0.1 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/redis-common@0.38.2': {} + + '@opentelemetry/resources@2.4.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.4.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.39.0 + + '@opentelemetry/sdk-trace-base@2.4.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.4.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.4.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.39.0 + + '@opentelemetry/semantic-conventions@1.39.0': {} + + '@opentelemetry/sql-common@0.41.2(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.4.0(@opentelemetry/api@1.9.0) + + '@oxc-project/types@0.98.0': {} + '@pandacss/is-valid-prop@0.41.0': {} + '@photonjs/core@0.1.21(hono@4.11.4)(srvx@0.9.8)(vite@7.3.0(@types/node@24.0.8))': + dependencies: + '@brillout/vite-plugin-server-entry': 0.7.17 + '@universal-middleware/cloudflare': 0.4.11(hono@4.11.4)(srvx@0.9.8) + '@universal-middleware/compress': 0.2.35 + '@universal-middleware/core': 0.4.15(hono@4.11.4)(srvx@0.9.8) + '@universal-middleware/express': 0.4.23(hono@4.11.4)(srvx@0.9.8) + '@universal-middleware/sirv': 0.1.25 + estree-walker: 3.0.3 + ts-deepmerge: 7.0.3 + zod: 4.3.5 + optionalDependencies: + vite: 7.3.0(@types/node@24.0.8) + transitivePeerDependencies: + - '@cloudflare/workers-types' + - '@hattip/core' + - '@types/express' + - '@webroute/route' + - elysia + - fastify + - h3 + - hono + - srvx + + '@photonjs/hono@0.1.12(hono@4.11.4)(srvx@0.9.8)(vite@7.3.0(@types/node@24.0.8))': + dependencies: + '@photonjs/core': 0.1.21(hono@4.11.4)(srvx@0.9.8)(vite@7.3.0(@types/node@24.0.8)) + '@universal-middleware/hono': 0.4.20(hono@4.11.4)(srvx@0.9.8) + optionalDependencies: + vite: 7.3.0(@types/node@24.0.8) + transitivePeerDependencies: + - '@cloudflare/workers-types' + - '@hattip/core' + - '@types/express' + - '@webroute/route' + - elysia + - fastify + - h3 + - hono + - srvx + + '@photonjs/runtime@0.1.16(hono@4.11.4)(rollup@4.46.2)(vite@7.3.0(@types/node@24.0.8))': + dependencies: + '@photonjs/core': 0.1.21(hono@4.11.4)(srvx@0.9.8)(vite@7.3.0(@types/node@24.0.8)) + '@photonjs/srvx': 0.1.12(hono@4.11.4)(srvx@0.9.8)(vite@7.3.0(@types/node@24.0.8)) + '@universal-middleware/core': 0.4.15(hono@4.11.4)(srvx@0.9.8) + '@universal-middleware/sirv': 0.1.25 + srvx: 0.9.8 + standaloner: 0.1.11(rollup@4.46.2) + optionalDependencies: + vite: 7.3.0(@types/node@24.0.8) + transitivePeerDependencies: + - '@cloudflare/workers-types' + - '@hattip/core' + - '@types/express' + - '@webroute/route' + - elysia + - encoding + - fastify + - h3 + - hono + - rollup + - supports-color + + '@photonjs/srvx@0.1.12(hono@4.11.4)(srvx@0.9.8)(vite@7.3.0(@types/node@24.0.8))': + dependencies: + '@photonjs/core': 0.1.21(hono@4.11.4)(srvx@0.9.8)(vite@7.3.0(@types/node@24.0.8)) + '@universal-middleware/srvx': 0.1.2(hono@4.11.4)(srvx@0.9.8) + optionalDependencies: + vite: 7.3.0(@types/node@24.0.8) + transitivePeerDependencies: + - '@cloudflare/workers-types' + - '@hattip/core' + - '@types/express' + - '@webroute/route' + - elysia + - fastify + - h3 + - hono + - srvx + '@pkgjs/parseargs@0.11.0': optional: true '@polka/url@1.0.0-next.28': {} + '@prisma/instrumentation@6.19.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + '@rc-component/async-validator@5.0.4': dependencies: '@babel/runtime': 7.26.10 @@ -4108,18 +5422,72 @@ snapshots: '@reduxjs/toolkit@2.8.2(react-redux@9.2.0(@types/react@19.2.7)(react@19.2.1)(redux@5.0.1))(react@19.2.1)': dependencies: - '@standard-schema/spec': 1.0.0 - '@standard-schema/utils': 0.3.0 - immer: 10.1.3 - redux: 5.0.1 - redux-thunk: 3.1.0(redux@5.0.1) - reselect: 5.1.1 - optionalDependencies: - react: 19.2.1 - react-redux: 9.2.0(@types/react@19.2.7)(react@19.2.1)(redux@5.0.1) + '@standard-schema/spec': 1.0.0 + '@standard-schema/utils': 0.3.0 + immer: 10.1.3 + redux: 5.0.1 + redux-thunk: 3.1.0(redux@5.0.1) + reselect: 5.1.1 + optionalDependencies: + react: 19.2.1 + react-redux: 9.2.0(@types/react@19.2.7)(react@19.2.1)(redux@5.0.1) + + '@rolldown/binding-android-arm64@1.0.0-beta.51': + optional: true + + '@rolldown/binding-darwin-arm64@1.0.0-beta.51': + optional: true + + '@rolldown/binding-darwin-x64@1.0.0-beta.51': + optional: true + + '@rolldown/binding-freebsd-x64@1.0.0-beta.51': + optional: true + + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.51': + optional: true + + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.51': + optional: true + + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.51': + optional: true + + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.51': + optional: true + + '@rolldown/binding-linux-x64-musl@1.0.0-beta.51': + optional: true + + '@rolldown/binding-openharmony-arm64@1.0.0-beta.51': + optional: true + + '@rolldown/binding-wasm32-wasi@1.0.0-beta.51': + dependencies: + '@napi-rs/wasm-runtime': 1.1.1 + optional: true + + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.51': + optional: true + + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.51': + optional: true + + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.51': + optional: true '@rolldown/pluginutils@1.0.0-beta.47': {} + '@rolldown/pluginutils@1.0.0-beta.51': {} + + '@rollup/pluginutils@5.3.0(rollup@4.46.2)': + dependencies: + '@types/estree': 1.0.8 + estree-walker: 2.0.2 + picomatch: 4.0.3 + optionalDependencies: + rollup: 4.46.2 + '@rollup/rollup-android-arm-eabi@4.46.2': optional: true @@ -4180,6 +5548,173 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.46.2': optional: true + '@sentry-internal/browser-utils@10.35.0': + dependencies: + '@sentry/core': 10.35.0 + + '@sentry-internal/feedback@10.35.0': + dependencies: + '@sentry/core': 10.35.0 + + '@sentry-internal/replay-canvas@10.35.0': + dependencies: + '@sentry-internal/replay': 10.35.0 + '@sentry/core': 10.35.0 + + '@sentry-internal/replay@10.35.0': + dependencies: + '@sentry-internal/browser-utils': 10.35.0 + '@sentry/core': 10.35.0 + + '@sentry/babel-plugin-component-annotate@4.7.0': {} + + '@sentry/browser@10.35.0': + dependencies: + '@sentry-internal/browser-utils': 10.35.0 + '@sentry-internal/feedback': 10.35.0 + '@sentry-internal/replay': 10.35.0 + '@sentry-internal/replay-canvas': 10.35.0 + '@sentry/core': 10.35.0 + + '@sentry/bundler-plugin-core@4.7.0': + dependencies: + '@babel/core': 7.28.5 + '@sentry/babel-plugin-component-annotate': 4.7.0 + '@sentry/cli': 2.58.4 + dotenv: 16.6.1 + find-up: 5.0.0 + glob: 10.5.0 + magic-string: 0.30.8 + unplugin: 1.0.1 + transitivePeerDependencies: + - encoding + - supports-color + + '@sentry/cli-darwin@2.58.4': + optional: true + + '@sentry/cli-linux-arm64@2.58.4': + optional: true + + '@sentry/cli-linux-arm@2.58.4': + optional: true + + '@sentry/cli-linux-i686@2.58.4': + optional: true + + '@sentry/cli-linux-x64@2.58.4': + optional: true + + '@sentry/cli-win32-arm64@2.58.4': + optional: true + + '@sentry/cli-win32-i686@2.58.4': + optional: true + + '@sentry/cli-win32-x64@2.58.4': + optional: true + + '@sentry/cli@2.58.4': + 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.58.4 + '@sentry/cli-linux-arm': 2.58.4 + '@sentry/cli-linux-arm64': 2.58.4 + '@sentry/cli-linux-i686': 2.58.4 + '@sentry/cli-linux-x64': 2.58.4 + '@sentry/cli-win32-arm64': 2.58.4 + '@sentry/cli-win32-i686': 2.58.4 + '@sentry/cli-win32-x64': 2.58.4 + transitivePeerDependencies: + - encoding + - supports-color + + '@sentry/core@10.35.0': {} + + '@sentry/node-core@10.35.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.4.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.4.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.208.0(@opentelemetry/api@1.9.0))(@opentelemetry/resources@2.4.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.4.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.39.0)': + dependencies: + '@apm-js-collab/tracing-hooks': 0.3.1 + '@opentelemetry/api': 1.9.0 + '@opentelemetry/context-async-hooks': 2.4.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 2.4.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.4.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 2.4.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.39.0 + '@sentry/core': 10.35.0 + '@sentry/opentelemetry': 10.35.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.4.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.4.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.4.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.39.0) + import-in-the-middle: 2.0.4 + transitivePeerDependencies: + - supports-color + + '@sentry/node@10.35.0': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/context-async-hooks': 2.4.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 2.4.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-amqplib': 0.55.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-connect': 0.52.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-dataloader': 0.26.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-express': 0.57.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-fs': 0.28.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-generic-pool': 0.52.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-graphql': 0.56.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-hapi': 0.55.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-http': 0.208.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-ioredis': 0.56.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-kafkajs': 0.18.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-knex': 0.53.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-koa': 0.57.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-lru-memoizer': 0.53.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-mongodb': 0.61.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-mongoose': 0.55.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-mysql': 0.54.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-mysql2': 0.55.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-pg': 0.61.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-redis': 0.57.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-tedious': 0.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-undici': 0.19.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.4.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 2.4.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.39.0 + '@prisma/instrumentation': 6.19.0(@opentelemetry/api@1.9.0) + '@sentry/core': 10.35.0 + '@sentry/node-core': 10.35.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.4.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.4.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.208.0(@opentelemetry/api@1.9.0))(@opentelemetry/resources@2.4.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.4.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.39.0) + '@sentry/opentelemetry': 10.35.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.4.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.4.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.4.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.39.0) + import-in-the-middle: 2.0.4 + minimatch: 9.0.5 + transitivePeerDependencies: + - supports-color + + '@sentry/opentelemetry@10.35.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.4.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.4.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.4.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.39.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/context-async-hooks': 2.4.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 2.4.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 2.4.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.39.0 + '@sentry/core': 10.35.0 + + '@sentry/react@10.35.0(react@19.2.1)': + dependencies: + '@sentry/browser': 10.35.0 + '@sentry/core': 10.35.0 + react: 19.2.1 + + '@sentry/vite-plugin@4.7.0': + dependencies: + '@sentry/bundler-plugin-core': 4.7.0 + unplugin: 1.0.1 + transitivePeerDependencies: + - encoding + - supports-color + '@simple-libs/child-process-utils@1.0.1': dependencies: '@simple-libs/stream-utils': 1.1.0 @@ -4225,6 +5760,11 @@ snapshots: '@types/react': 19.2.7 '@types/react-dom': 19.2.3(@types/react@19.2.7) + '@tybys/wasm-util@0.10.1': + dependencies: + tslib: 2.8.1 + optional: true + '@types/aria-query@5.0.4': {} '@types/babel__core@7.20.5': @@ -4252,10 +5792,18 @@ snapshots: dependencies: '@types/deep-eql': 4.0.2 + '@types/connect@3.4.38': + dependencies: + '@types/node': 24.0.8 + '@types/deep-eql@4.0.2': {} '@types/estree@1.0.8': {} + '@types/mysql@2.15.27': + dependencies: + '@types/node': 24.0.8 + '@types/node@22.15.34': dependencies: undici-types: 6.21.0 @@ -4268,6 +5816,16 @@ snapshots: '@types/parse-json@4.0.2': {} + '@types/pg-pool@2.0.6': + dependencies: + '@types/pg': 8.15.6 + + '@types/pg@8.15.6': + dependencies: + '@types/node': 24.0.8 + pg-protocol: 1.11.0 + pg-types: 2.2.0 + '@types/react-dom@19.2.3(@types/react@19.2.7)': dependencies: '@types/react': 19.2.7 @@ -4278,8 +5836,102 @@ snapshots: '@types/stylis@4.2.5': {} + '@types/tedious@4.0.14': + dependencies: + '@types/node': 24.0.8 + '@types/use-sync-external-store@0.0.6': {} + '@universal-middleware/cloudflare@0.4.11(hono@4.11.4)(srvx@0.9.8)': + dependencies: + '@universal-middleware/core': 0.4.15(hono@4.11.4)(srvx@0.9.8) + transitivePeerDependencies: + - '@cloudflare/workers-types' + - '@hattip/core' + - '@types/express' + - '@webroute/route' + - elysia + - fastify + - h3 + - hono + - srvx + + '@universal-middleware/compress@0.2.35': {} + + '@universal-middleware/core@0.4.15(hono@4.11.4)(srvx@0.9.8)': + dependencies: + regexparam: 3.0.0 + tough-cookie: 6.0.0 + optionalDependencies: + hono: 4.11.4 + srvx: 0.9.8 + + '@universal-middleware/express@0.4.23(hono@4.11.4)(srvx@0.9.8)': + dependencies: + '@universal-middleware/core': 0.4.15(hono@4.11.4)(srvx@0.9.8) + transitivePeerDependencies: + - '@cloudflare/workers-types' + - '@hattip/core' + - '@types/express' + - '@webroute/route' + - elysia + - fastify + - h3 + - hono + - srvx + + '@universal-middleware/hono@0.4.20(hono@4.11.4)(srvx@0.9.8)': + dependencies: + '@universal-middleware/core': 0.4.15(hono@4.11.4)(srvx@0.9.8) + transitivePeerDependencies: + - '@cloudflare/workers-types' + - '@hattip/core' + - '@types/express' + - '@webroute/route' + - elysia + - fastify + - h3 + - hono + - srvx + + '@universal-middleware/sirv@0.1.25': + dependencies: + mrmime: 2.0.1 + totalist: 3.0.1 + + '@universal-middleware/srvx@0.1.2(hono@4.11.4)(srvx@0.9.8)': + dependencies: + '@universal-middleware/core': 0.4.15(hono@4.11.4)(srvx@0.9.8) + transitivePeerDependencies: + - '@cloudflare/workers-types' + - '@hattip/core' + - '@types/express' + - '@webroute/route' + - elysia + - fastify + - h3 + - hono + - srvx + + '@vercel/nft@0.30.4(rollup@4.46.2)': + dependencies: + '@mapbox/node-pre-gyp': 2.0.3 + '@rollup/pluginutils': 5.3.0(rollup@4.46.2) + acorn: 8.15.0 + acorn-import-attributes: 1.9.5(acorn@8.15.0) + async-sema: 3.1.1 + bindings: 1.5.0 + estree-walker: 2.0.2 + glob: 10.5.0 + graceful-fs: 4.2.11 + node-gyp-build: 4.8.4 + picomatch: 4.0.3 + resolve-from: 5.0.0 + transitivePeerDependencies: + - encoding + - rollup + - supports-color + '@vitejs/plugin-react@5.1.1(vite@7.3.0(@types/node@24.0.8))': dependencies: '@babel/core': 7.28.5 @@ -4807,6 +6459,20 @@ snapshots: '@zag-js/utils@0.82.2': {} + abbrev@3.0.1: {} + + acorn-import-attributes@1.9.5(acorn@8.15.0): + dependencies: + acorn: 8.15.0 + + acorn@8.15.0: {} + + agent-base@6.0.2: + dependencies: + debug: 4.4.1 + transitivePeerDependencies: + - supports-color + agent-base@7.1.3: {} ansi-regex@5.0.1: {} @@ -4879,6 +6545,11 @@ snapshots: - luxon - moment + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + aria-query@5.3.0: dependencies: dequal: 2.0.3 @@ -4889,6 +6560,8 @@ snapshots: assertion-error@2.0.1: {} + async-sema@3.1.1: {} + asynckit@0.4.0: {} babel-plugin-macros@3.1.0: @@ -4899,6 +6572,12 @@ snapshots: balanced-match@1.0.2: {} + binary-extensions@2.3.0: {} + + bindings@1.5.0: + dependencies: + file-uri-to-path: 1.0.0 + brace-expansion@2.0.1: dependencies: balanced-match: 1.0.2 @@ -4953,6 +6632,22 @@ snapshots: check-error@2.1.1: {} + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + chownr@3.0.0: {} + + cjs-module-lexer@2.2.0: {} + classnames@2.5.1: {} client-only@0.0.1: {} @@ -4976,6 +6671,10 @@ snapshots: compute-scroll-into-view@3.1.1: {} + confbox@0.2.2: {} + + consola@3.4.2: {} + conventional-changelog-angular@8.0.0: dependencies: compare-func: 2.0.0 @@ -5070,6 +6769,8 @@ snapshots: dequal@2.0.3: {} + detect-libc@2.1.2: {} + devalue@4.3.3: {} dom-accessibility-api@0.5.16: {} @@ -5078,6 +6779,8 @@ snapshots: dependencies: is-obj: 2.0.0 + dotenv@16.6.1: {} + dunder-proto@1.0.1: dependencies: call-bind-apply-helpers: 1.0.2 @@ -5175,6 +6878,8 @@ snapshots: escape-string-regexp@4.0.0: {} + estree-walker@2.0.2: {} + estree-walker@3.0.3: dependencies: '@types/estree': 1.0.8 @@ -5193,6 +6898,8 @@ snapshots: expect-type@1.2.1: {} + exsolve@1.0.8: {} + fast-glob@3.3.3: dependencies: '@nodelib/fs.stat': 2.0.5 @@ -5215,12 +6922,19 @@ snapshots: optionalDependencies: picomatch: 4.0.3 + file-uri-to-path@1.0.0: {} + fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 find-root@1.1.0: {} + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + foreground-child@3.3.1: dependencies: cross-spawn: 7.0.6 @@ -5233,6 +6947,8 @@ snapshots: es-set-tostringtag: 2.1.0 mime-types: 2.1.35 + forwarded-parse@2.1.2: {} + fsevents@2.3.3: optional: true @@ -5275,8 +6991,19 @@ snapshots: package-json-from-dist: 1.0.1 path-scurry: 1.11.1 + glob@10.5.0: + dependencies: + foreground-child: 3.3.1 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + gopd@1.2.0: {} + graceful-fs@4.2.11: {} + graphql-tag@2.12.6(graphql@16.10.0): dependencies: graphql: 16.10.0 @@ -5307,6 +7034,8 @@ snapshots: dependencies: react-is: 16.13.1 + hono@4.11.4: {} + hosted-git-info@8.1.0: dependencies: lru-cache: 10.4.3 @@ -5322,6 +7051,13 @@ snapshots: transitivePeerDependencies: - supports-color + https-proxy-agent@5.0.1: + dependencies: + agent-base: 6.0.2 + debug: 4.4.1 + transitivePeerDependencies: + - supports-color + https-proxy-agent@7.0.6: dependencies: agent-base: 7.1.3 @@ -5342,8 +7078,19 @@ snapshots: parent-module: 1.0.1 resolve-from: 4.0.0 + import-in-the-middle@2.0.4: + dependencies: + acorn: 8.15.0 + acorn-import-attributes: 1.9.5(acorn@8.15.0) + cjs-module-lexer: 2.2.0 + module-details-from-path: 1.0.4 + is-arrayish@0.2.1: {} + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + is-core-module@2.16.1: dependencies: hasown: 2.0.2 @@ -5418,6 +7165,10 @@ snapshots: lines-and-columns@1.2.4: {} + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + loose-envify@1.4.0: dependencies: js-tokens: 4.0.0 @@ -5440,6 +7191,14 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 + magic-string@0.30.21: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + + magic-string@0.30.8: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + math-intrinsics@1.1.0: {} meow@13.2.0: {} @@ -5469,6 +7228,12 @@ snapshots: minipass@7.1.2: {} + minizlib@3.1.0: + dependencies: + minipass: 7.1.2 + + module-details-from-path@1.0.4: {} + mrmime@2.0.1: {} ms@2.1.3: {} @@ -5477,14 +7242,26 @@ snapshots: neo-async@2.6.2: {} + node-fetch@2.7.0: + dependencies: + whatwg-url: 5.0.0 + + node-gyp-build@4.8.4: {} + node-releases@2.0.19: {} + nopt@8.1.0: + dependencies: + abbrev: 3.0.1 + normalize-package-data@7.0.0: dependencies: hosted-git-info: 8.1.0 semver: 7.7.1 validate-npm-package-license: 3.0.4 + normalize-path@3.0.0: {} + npm-run-path@4.0.1: dependencies: path-key: 3.1.1 @@ -5504,6 +7281,14 @@ snapshots: '@wry/trie': 0.5.0 tslib: 2.8.1 + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + package-json-from-dist@1.0.1: {} parent-module@1.0.1: @@ -5521,6 +7306,8 @@ snapshots: dependencies: entities: 4.5.0 + path-exists@4.0.0: {} + path-key@3.1.1: {} path-parse@1.0.7: {} @@ -5540,6 +7327,18 @@ snapshots: perfect-freehand@1.2.2: {} + pg-int8@1.0.1: {} + + pg-protocol@1.11.0: {} + + pg-types@2.2.0: + dependencies: + pg-int8: 1.0.1 + postgres-array: 2.0.0 + postgres-bytea: 1.0.1 + postgres-date: 1.0.7 + postgres-interval: 1.2.0 + picocolors@1.1.1: {} picomatch@2.3.1: {} @@ -5550,6 +7349,12 @@ snapshots: dependencies: pngjs: 6.0.0 + pkg-types@2.3.0: + dependencies: + confbox: 0.2.2 + exsolve: 1.0.8 + pathe: 2.0.3 + playwright-chromium@1.57.0: dependencies: playwright-core: 1.57.0 @@ -5572,6 +7377,16 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + postgres-array@2.0.0: {} + + postgres-bytea@1.0.1: {} + + postgres-date@1.0.7: {} + + postgres-interval@1.2.0: + dependencies: + xtend: 4.0.2 + prettier@3.5.3: {} pretty-format@27.5.1: @@ -5580,6 +7395,8 @@ snapshots: ansi-styles: 5.2.0 react-is: 17.0.2 + progress@2.0.3: {} + prop-types@15.8.1: dependencies: loose-envify: 1.4.0 @@ -5588,6 +7405,8 @@ snapshots: proxy-compare@3.0.1: {} + proxy-from-env@1.1.0: {} + proxy-memoize@3.0.1: dependencies: proxy-compare: 3.0.1 @@ -5959,6 +7778,10 @@ snapshots: react@19.2.1: {} + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + redux-thunk@3.1.0(redux@5.0.1): dependencies: redux: 5.0.1 @@ -5967,11 +7790,20 @@ snapshots: regenerator-runtime@0.14.1: {} + regexparam@3.0.0: {} + rehackt@0.1.0(@types/react@19.2.7)(react@19.2.1): optionalDependencies: '@types/react': 19.2.7 react: 19.2.1 + require-in-the-middle@8.0.1: + dependencies: + debug: 4.4.1 + module-details-from-path: 1.0.4 + transitivePeerDependencies: + - supports-color + requires-port@1.0.0: {} reselect@5.1.1: {} @@ -5980,6 +7812,8 @@ snapshots: resolve-from@4.0.0: {} + resolve-from@5.0.0: {} + resolve@1.22.10: dependencies: is-core-module: 2.16.1 @@ -5992,6 +7826,26 @@ snapshots: dependencies: glob: 10.4.5 + rolldown@1.0.0-beta.51: + dependencies: + '@oxc-project/types': 0.98.0 + '@rolldown/pluginutils': 1.0.0-beta.51 + optionalDependencies: + '@rolldown/binding-android-arm64': 1.0.0-beta.51 + '@rolldown/binding-darwin-arm64': 1.0.0-beta.51 + '@rolldown/binding-darwin-x64': 1.0.0-beta.51 + '@rolldown/binding-freebsd-x64': 1.0.0-beta.51 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.51 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.51 + '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.51 + '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.51 + '@rolldown/binding-linux-x64-musl': 1.0.0-beta.51 + '@rolldown/binding-openharmony-arm64': 1.0.0-beta.51 + '@rolldown/binding-wasm32-wasi': 1.0.0-beta.51 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.51 + '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.51 + '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.51 + rollup@4.46.2: dependencies: '@types/estree': 1.0.8 @@ -6087,8 +7941,22 @@ snapshots: spdx-license-ids@3.0.21: {} + srvx@0.9.8: {} + stackback@0.0.2: {} + standaloner@0.1.11(rollup@4.46.2): + dependencies: + '@vercel/nft': 0.30.4(rollup@4.46.2) + acorn: 8.15.0 + estree-walker: 3.0.3 + magic-string: 0.30.21 + rolldown: 1.0.0-beta.51 + transitivePeerDependencies: + - encoding + - rollup + - supports-color + std-env@3.9.0: {} string-convert@0.2.1: {} @@ -6150,6 +8018,14 @@ snapshots: symbol-tree@3.2.4: {} + tar@7.5.4: + dependencies: + '@isaacs/fs-minipass': 4.0.1 + chownr: 3.0.0 + minipass: 7.1.2 + minizlib: 3.1.0 + yallist: 5.0.0 + throttle-debounce@5.0.2: {} tinybench@2.9.0: {} @@ -6167,6 +8043,12 @@ snapshots: tinyspy@4.0.3: {} + tldts-core@7.0.19: {} + + tldts@7.0.19: + dependencies: + tldts-core: 7.0.19 + to-regex-range@5.0.1: dependencies: is-number: 7.0.0 @@ -6182,10 +8064,18 @@ snapshots: universalify: 0.2.0 url-parse: 1.5.10 + tough-cookie@6.0.0: + dependencies: + tldts: 7.0.19 + + tr46@0.0.3: {} + tr46@5.1.0: dependencies: punycode: 2.3.1 + ts-deepmerge@7.0.3: {} + ts-invariant@0.10.3: dependencies: tslib: 2.8.1 @@ -6207,6 +8097,13 @@ snapshots: universalify@0.2.0: {} + unplugin@1.0.1: + dependencies: + acorn: 8.15.0 + chokidar: 3.6.0 + webpack-sources: 3.3.3 + webpack-virtual-modules: 0.5.0 + update-browserslist-db@1.1.3(browserslist@4.24.4): dependencies: browserslist: 4.24.4 @@ -6229,7 +8126,42 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - vike@0.4.253(react-streaming@0.4.15(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(vite@7.3.0(@types/node@24.0.8)): + vike-photon@0.1.24(@photonjs/core@0.1.21(hono@4.11.4)(srvx@0.9.8)(vite@7.3.0(@types/node@24.0.8)))(@photonjs/runtime@0.1.16(hono@4.11.4)(rollup@4.46.2)(vite@7.3.0(@types/node@24.0.8)))(hono@4.11.4)(rollup@4.46.2)(srvx@0.9.8)(vike@0.4.253(react-streaming@0.4.15(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(vite@7.3.0(@types/node@24.0.8)))(vite@7.3.0(@types/node@24.0.8)): + dependencies: + '@brillout/picocolors': 1.0.30 + '@brillout/vite-plugin-server-entry': 0.7.17 + '@photonjs/core': 0.1.21(hono@4.11.4)(srvx@0.9.8)(vite@7.3.0(@types/node@24.0.8)) + '@photonjs/runtime': 0.1.16(hono@4.11.4)(rollup@4.46.2)(vite@7.3.0(@types/node@24.0.8)) + '@universal-middleware/compress': 0.2.35 + '@universal-middleware/core': 0.4.15(hono@4.11.4)(srvx@0.9.8) + '@universal-middleware/sirv': 0.1.25 + pkg-types: 2.3.0 + standaloner: 0.1.11(rollup@4.46.2) + vike: 0.4.253(react-streaming@0.4.15(react@19.2.1))(vite@7.3.0(@types/node@24.0.8)) + optionalDependencies: + vite: 7.3.0(@types/node@24.0.8) + transitivePeerDependencies: + - '@cloudflare/workers-types' + - '@hattip/core' + - '@types/express' + - '@webroute/route' + - elysia + - encoding + - fastify + - h3 + - hono + - rollup + - srvx + - supports-color + + vike-react@0.6.10(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(vike@0.4.253(react-streaming@0.4.15(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(vite@7.3.0(@types/node@24.0.8))): + dependencies: + react: 19.2.1 + react-dom: 19.2.1(react@19.2.1) + react-streaming: 0.4.15(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + vike: 0.4.253(react-streaming@0.4.15(react@19.2.1))(vite@7.3.0(@types/node@24.0.8)) + + vike@0.4.253(react-streaming@0.4.15(react@19.2.1))(vite@7.3.0(@types/node@24.0.8)): dependencies: '@babel/core': 7.28.5 '@babel/types': 7.28.5 @@ -6242,7 +8174,7 @@ snapshots: es-module-lexer: 1.7.0 esbuild: 0.27.2 json5: 2.2.3 - magic-string: 0.30.17 + magic-string: 0.30.21 picomatch: 4.0.3 semver: 7.7.1 sirv: 3.0.1 @@ -6335,8 +8267,14 @@ snapshots: walk-up-path@3.0.1: {} + webidl-conversions@3.0.1: {} + webidl-conversions@7.0.0: {} + webpack-sources@3.3.3: {} + + webpack-virtual-modules@0.5.0: {} + whatwg-encoding@3.1.1: dependencies: iconv-lite: 0.6.3 @@ -6348,6 +8286,11 @@ snapshots: tr46: 5.1.0 webidl-conversions: 7.0.0 + whatwg-url@5.0.0: + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + which@2.0.2: dependencies: isexe: 2.0.0 @@ -6377,16 +8320,24 @@ snapshots: xmlchars@2.2.0: {} + xtend@4.0.2: {} + yallist@3.1.1: {} + yallist@5.0.0: {} + yaml@1.10.2: {} + yocto-queue@0.1.0: {} + zen-observable-ts@1.2.5: dependencies: zen-observable: 0.8.15 zen-observable@0.8.15: {} + zod@4.3.5: {} + zustand@5.0.8(@types/react@19.2.7)(immer@10.1.3)(react@19.2.1)(use-sync-external-store@1.4.0(react@19.2.1)): optionalDependencies: '@types/react': 19.2.7