diff --git a/CHANGELOG.md b/CHANGELOG.md index 987a6579..40174fc4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,22 @@ # Changelog +## [0.10.0](https://github.com/Monadical-SAS/reflector/compare/v0.9.0...v0.10.0) (2025-09-11) + + +### Features + +* replace nextjs-config with environment variables ([#632](https://github.com/Monadical-SAS/reflector/issues/632)) ([369ecdf](https://github.com/Monadical-SAS/reflector/commit/369ecdff13f3862d926a9c0b87df52c9d94c4dde)) + + +### Bug Fixes + +* anonymous users transcript permissions ([#621](https://github.com/Monadical-SAS/reflector/issues/621)) ([f81fe99](https://github.com/Monadical-SAS/reflector/commit/f81fe9948a9237b3e0001b2d8ca84f54d76878f9)) +* auth post ([#624](https://github.com/Monadical-SAS/reflector/issues/624)) ([cde99ca](https://github.com/Monadical-SAS/reflector/commit/cde99ca2716f84ba26798f289047732f0448742e)) +* auth post ([#626](https://github.com/Monadical-SAS/reflector/issues/626)) ([3b85ff3](https://github.com/Monadical-SAS/reflector/commit/3b85ff3bdf4fb053b103070646811bc990c0e70a)) +* auth post ([#627](https://github.com/Monadical-SAS/reflector/issues/627)) ([962038e](https://github.com/Monadical-SAS/reflector/commit/962038ee3f2a555dc3c03856be0e4409456e0996)) +* missing follow_redirects=True on modal endpoint ([#630](https://github.com/Monadical-SAS/reflector/issues/630)) ([fc363bd](https://github.com/Monadical-SAS/reflector/commit/fc363bd49b17b075e64f9186e5e0185abc325ea7)) +* sync backend and frontend token refresh logic ([#614](https://github.com/Monadical-SAS/reflector/issues/614)) ([5a5b323](https://github.com/Monadical-SAS/reflector/commit/5a5b3233820df9536da75e87ce6184a983d4713a)) + ## [0.9.0](https://github.com/Monadical-SAS/reflector/compare/v0.8.2...v0.9.0) (2025-09-06) diff --git a/CLAUDE.md b/CLAUDE.md index 14c58e42..22a99171 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -66,7 +66,6 @@ pnpm install # Copy configuration templates cp .env_template .env -cp config-template.ts config.ts ``` **Development:** diff --git a/README.md b/README.md index 497dd5b5..ebb91fcb 100644 --- a/README.md +++ b/README.md @@ -99,11 +99,10 @@ Start with `cd www`. ```bash pnpm install -cp .env_template .env -cp config-template.ts config.ts +cp .env.example .env ``` -Then, fill in the environment variables in `.env` and the configuration in `config.ts` as needed. If you are unsure on how to proceed, ask in Zulip. +Then, fill in the environment variables in `.env` as needed. If you are unsure on how to proceed, ask in Zulip. **Run in development mode** @@ -168,3 +167,34 @@ You can manually process an audio file by calling the process tool: ```bash uv run python -m reflector.tools.process path/to/audio.wav ``` + + +## Feature Flags + +Reflector uses environment variable-based feature flags to control application functionality. These flags allow you to enable or disable features without code changes. + +### Available Feature Flags + +| Feature Flag | Environment Variable | +|-------------|---------------------| +| `requireLogin` | `NEXT_PUBLIC_FEATURE_REQUIRE_LOGIN` | +| `privacy` | `NEXT_PUBLIC_FEATURE_PRIVACY` | +| `browse` | `NEXT_PUBLIC_FEATURE_BROWSE` | +| `sendToZulip` | `NEXT_PUBLIC_FEATURE_SEND_TO_ZULIP` | +| `rooms` | `NEXT_PUBLIC_FEATURE_ROOMS` | + +### Setting Feature Flags + +Feature flags are controlled via environment variables using the pattern `NEXT_PUBLIC_FEATURE_{FEATURE_NAME}` where `{FEATURE_NAME}` is the SCREAMING_SNAKE_CASE version of the feature name. + +**Examples:** +```bash +# Enable user authentication requirement +NEXT_PUBLIC_FEATURE_REQUIRE_LOGIN=true + +# Disable browse functionality +NEXT_PUBLIC_FEATURE_BROWSE=false + +# Enable Zulip integration +NEXT_PUBLIC_FEATURE_SEND_TO_ZULIP=true +``` diff --git a/server/migrations/versions/0ce521cda2ee_remove_user_id_from_meeting_table.py b/server/migrations/versions/0ce521cda2ee_remove_user_id_from_meeting_table.py new file mode 100644 index 00000000..2e76e8a6 --- /dev/null +++ b/server/migrations/versions/0ce521cda2ee_remove_user_id_from_meeting_table.py @@ -0,0 +1,36 @@ +"""remove user_id from meeting table + +Revision ID: 0ce521cda2ee +Revises: 6dec9fb5b46c +Create Date: 2025-09-10 12:40:55.688899 + +""" + +from typing import Sequence, Union + +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision: str = "0ce521cda2ee" +down_revision: Union[str, None] = "6dec9fb5b46c" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table("meeting", schema=None) as batch_op: + batch_op.drop_column("user_id") + + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table("meeting", schema=None) as batch_op: + batch_op.add_column( + sa.Column("user_id", sa.VARCHAR(), autoincrement=False, nullable=True) + ) + + # ### end Alembic commands ### diff --git a/server/migrations/versions/2ae3db106d4e_clean_up_orphaned_room_id_references_in_.py b/server/migrations/versions/2ae3db106d4e_clean_up_orphaned_room_id_references_in_.py new file mode 100644 index 00000000..c091ab49 --- /dev/null +++ b/server/migrations/versions/2ae3db106d4e_clean_up_orphaned_room_id_references_in_.py @@ -0,0 +1,32 @@ +"""clean up orphaned room_id references in meeting table + +Revision ID: 2ae3db106d4e +Revises: def1b5867d4c +Create Date: 2025-09-11 10:35:15.759967 + +""" + +from typing import Sequence, Union + +from alembic import op + +# revision identifiers, used by Alembic. +revision: str = "2ae3db106d4e" +down_revision: Union[str, None] = "def1b5867d4c" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # Set room_id to NULL for meetings that reference non-existent rooms + op.execute(""" + UPDATE meeting + SET room_id = NULL + WHERE room_id IS NOT NULL + AND room_id NOT IN (SELECT id FROM room WHERE id IS NOT NULL) + """) + + +def downgrade() -> None: + # Cannot restore orphaned references - no operation needed + pass diff --git a/server/migrations/versions/6dec9fb5b46c_make_meeting_room_id_required_and_add_.py b/server/migrations/versions/6dec9fb5b46c_make_meeting_room_id_required_and_add_.py new file mode 100644 index 00000000..20828c65 --- /dev/null +++ b/server/migrations/versions/6dec9fb5b46c_make_meeting_room_id_required_and_add_.py @@ -0,0 +1,38 @@ +"""make meeting room_id required and add foreign key + +Revision ID: 6dec9fb5b46c +Revises: 61882a919591 +Create Date: 2025-09-10 10:47:06.006819 + +""" + +from typing import Sequence, Union + +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision: str = "6dec9fb5b46c" +down_revision: Union[str, None] = "61882a919591" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table("meeting", schema=None) as batch_op: + batch_op.alter_column("room_id", existing_type=sa.VARCHAR(), nullable=False) + batch_op.create_foreign_key( + None, "room", ["room_id"], ["id"], ondelete="CASCADE" + ) + + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table("meeting", schema=None) as batch_op: + batch_op.drop_constraint("meeting_room_id_fkey", type_="foreignkey") + batch_op.alter_column("room_id", existing_type=sa.VARCHAR(), nullable=True) + + # ### end Alembic commands ### diff --git a/server/migrations/versions/def1b5867d4c_make_meeting_room_id_nullable_but_keep_.py b/server/migrations/versions/def1b5867d4c_make_meeting_room_id_nullable_but_keep_.py new file mode 100644 index 00000000..982bea27 --- /dev/null +++ b/server/migrations/versions/def1b5867d4c_make_meeting_room_id_nullable_but_keep_.py @@ -0,0 +1,34 @@ +"""make meeting room_id nullable but keep foreign key + +Revision ID: def1b5867d4c +Revises: 0ce521cda2ee +Create Date: 2025-09-11 09:42:18.697264 + +""" + +from typing import Sequence, Union + +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision: str = "def1b5867d4c" +down_revision: Union[str, None] = "0ce521cda2ee" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table("meeting", schema=None) as batch_op: + batch_op.alter_column("room_id", existing_type=sa.VARCHAR(), nullable=True) + + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table("meeting", schema=None) as batch_op: + batch_op.alter_column("room_id", existing_type=sa.VARCHAR(), nullable=False) + + # ### end Alembic commands ### diff --git a/server/reflector/db/meetings.py b/server/reflector/db/meetings.py index 261a6db2..f0257846 100644 --- a/server/reflector/db/meetings.py +++ b/server/reflector/db/meetings.py @@ -18,8 +18,12 @@ meetings = sa.Table( sa.Column("host_room_url", sa.String), sa.Column("start_date", sa.DateTime(timezone=True)), sa.Column("end_date", sa.DateTime(timezone=True)), - sa.Column("user_id", sa.String), - sa.Column("room_id", sa.String), + sa.Column( + "room_id", + sa.String, + sa.ForeignKey("room.id", ondelete="CASCADE"), + nullable=True, + ), sa.Column("is_locked", sa.Boolean, nullable=False, server_default=sa.false()), sa.Column("room_mode", sa.String, nullable=False, server_default="normal"), sa.Column("recording_type", sa.String, nullable=False, server_default="cloud"), @@ -86,8 +90,7 @@ class Meeting(BaseModel): host_room_url: str start_date: datetime end_date: datetime - user_id: str | None = None - room_id: str | None = None + room_id: str | None is_locked: bool = False room_mode: Literal["normal", "group"] = "normal" recording_type: Literal["none", "local", "cloud"] = "cloud" @@ -109,14 +112,10 @@ class MeetingController: host_room_url: str, start_date: datetime, end_date: datetime, - user_id: str, room: Room, calendar_event_id: str | None = None, calendar_metadata: dict[str, Any] | None = None, ): - """ - Create a new meeting - """ meeting = Meeting( id=id, room_name=room_name, @@ -124,7 +123,6 @@ class MeetingController: host_room_url=host_room_url, start_date=start_date, end_date=end_date, - user_id=user_id, room_id=room.id, is_locked=room.is_locked, room_mode=room.room_mode, @@ -138,9 +136,6 @@ class MeetingController: return meeting async def get_all_active(self) -> list[Meeting]: - """ - Get active meetings. - """ query = meetings.select().where(meetings.c.is_active) return await get_database().fetch_all(query) @@ -150,8 +145,9 @@ class MeetingController: ) -> Meeting | None: """ Get a meeting by room name. + For backward compatibility, returns the most recent meeting. """ - query = meetings.select().where(meetings.c.room_name == room_name) + query = meetings.select().where(meetings.c.room_name == room_name).order_by(end_date.desc()) result = await get_database().fetch_one(query) if not result: return None @@ -219,9 +215,6 @@ class MeetingController: return Meeting(**result) async def get_by_id(self, meeting_id: str, **kwargs) -> Meeting | None: - """ - Get a meeting by id - """ query = meetings.select().where(meetings.c.id == meeting_id) result = await get_database().fetch_one(query) if not result: @@ -261,7 +254,7 @@ class MeetingConsentController: result = await get_database().fetch_one(query) if result is None: return None - return MeetingConsent(**result) if result else None + return MeetingConsent(**result) async def upsert(self, consent: MeetingConsent) -> MeetingConsent: if consent.user_id: diff --git a/server/reflector/settings.py b/server/reflector/settings.py index 686f67c1..9659f648 100644 --- a/server/reflector/settings.py +++ b/server/reflector/settings.py @@ -1,6 +1,8 @@ from pydantic.types import PositiveInt from pydantic_settings import BaseSettings, SettingsConfigDict +from reflector.utils.string import NonEmptyString + class Settings(BaseSettings): model_config = SettingsConfigDict( @@ -120,7 +122,7 @@ class Settings(BaseSettings): # Whereby integration WHEREBY_API_URL: str = "https://api.whereby.dev/v1" - WHEREBY_API_KEY: str | None = None + WHEREBY_API_KEY: NonEmptyString | None = None WHEREBY_WEBHOOK_SECRET: str | None = None AWS_WHEREBY_ACCESS_KEY_ID: str | None = None AWS_WHEREBY_ACCESS_KEY_SECRET: str | None = None diff --git a/server/reflector/utils/string.py b/server/reflector/utils/string.py index 08a9de78..05f40e30 100644 --- a/server/reflector/utils/string.py +++ b/server/reflector/utils/string.py @@ -10,8 +10,11 @@ NonEmptyString = Annotated[ non_empty_string_adapter = TypeAdapter(NonEmptyString) -def parse_non_empty_string(s: str) -> NonEmptyString: - return non_empty_string_adapter.validate_python(s) +def parse_non_empty_string(s: str, error: str | None = None) -> NonEmptyString: + try: + return non_empty_string_adapter.validate_python(s) + except Exception as e: + raise ValueError(f"{e}: {error}" if error else e) from e def try_parse_non_empty_string(s: str) -> NonEmptyString | None: diff --git a/server/reflector/views/rooms.py b/server/reflector/views/rooms.py index fc7bfbd8..fe285159 100644 --- a/server/reflector/views/rooms.py +++ b/server/reflector/views/rooms.py @@ -261,7 +261,6 @@ async def rooms_create_meeting( host_room_url=whereby_meeting["hostRoomUrl"], start_date=parse_datetime_with_timezone(whereby_meeting["startDate"]), end_date=parse_datetime_with_timezone(whereby_meeting["endDate"]), - user_id=user_id, room=room, ) except (asyncpg.exceptions.UniqueViolationError, sqlite3.IntegrityError): diff --git a/server/reflector/whereby.py b/server/reflector/whereby.py index deaa5274..8b5c18fd 100644 --- a/server/reflector/whereby.py +++ b/server/reflector/whereby.py @@ -1,18 +1,60 @@ +import logging from datetime import datetime import httpx from reflector.db.rooms import Room from reflector.settings import settings +from reflector.utils.string import parse_non_empty_string + +logger = logging.getLogger(__name__) + + +def _get_headers(): + api_key = parse_non_empty_string( + settings.WHEREBY_API_KEY, "WHEREBY_API_KEY value is required." + ) + return { + "Content-Type": "application/json; charset=utf-8", + "Authorization": f"Bearer {api_key}", + } + -HEADERS = { - "Content-Type": "application/json; charset=utf-8", - "Authorization": f"Bearer {settings.WHEREBY_API_KEY}", -} TIMEOUT = 10 # seconds +def _get_whereby_s3_auth(): + errors = [] + try: + bucket_name = parse_non_empty_string( + settings.RECORDING_STORAGE_AWS_BUCKET_NAME, + "RECORDING_STORAGE_AWS_BUCKET_NAME value is required.", + ) + except Exception as e: + errors.append(e) + try: + key_id = parse_non_empty_string( + settings.AWS_WHEREBY_ACCESS_KEY_ID, + "AWS_WHEREBY_ACCESS_KEY_ID value is required.", + ) + except Exception as e: + errors.append(e) + try: + key_secret = parse_non_empty_string( + settings.AWS_WHEREBY_ACCESS_KEY_SECRET, + "AWS_WHEREBY_ACCESS_KEY_SECRET value is required.", + ) + except Exception as e: + errors.append(e) + if len(errors) > 0: + raise Exception( + f"Failed to get Whereby auth settings: {', '.join(str(e) for e in errors)}" + ) + return bucket_name, key_id, key_secret + + async def create_meeting(room_name_prefix: str, end_date: datetime, room: Room): + s3_bucket_name, s3_key_id, s3_key_secret = _get_whereby_s3_auth() data = { "isLocked": room.is_locked, "roomNamePrefix": room_name_prefix, @@ -23,23 +65,26 @@ async def create_meeting(room_name_prefix: str, end_date: datetime, room: Room): "type": room.recording_type, "destination": { "provider": "s3", - "bucket": settings.RECORDING_STORAGE_AWS_BUCKET_NAME, - "accessKeyId": settings.AWS_WHEREBY_ACCESS_KEY_ID, - "accessKeySecret": settings.AWS_WHEREBY_ACCESS_KEY_SECRET, + "bucket": s3_bucket_name, + "accessKeyId": s3_key_id, + "accessKeySecret": s3_key_secret, "fileFormat": "mp4", }, "startTrigger": room.recording_trigger, }, "fields": ["hostRoomUrl"], } - async with httpx.AsyncClient() as client: response = await client.post( f"{settings.WHEREBY_API_URL}/meetings", - headers=HEADERS, + headers=_get_headers(), json=data, timeout=TIMEOUT, ) + if response.status_code == 403: + logger.warning( + f"Failed to create meeting: access denied on Whereby: {response.text}" + ) response.raise_for_status() return response.json() @@ -48,7 +93,7 @@ async def get_room_sessions(room_name: str): async with httpx.AsyncClient() as client: response = await client.get( f"{settings.WHEREBY_API_URL}/insights/room-sessions?roomName={room_name}", - headers=HEADERS, + headers=_get_headers(), timeout=TIMEOUT, ) response.raise_for_status() diff --git a/server/tests/test_cleanup.py b/server/tests/test_cleanup.py index 3c5149ae..2cb8614c 100644 --- a/server/tests/test_cleanup.py +++ b/server/tests/test_cleanup.py @@ -105,7 +105,6 @@ async def test_cleanup_deletes_associated_meeting_and_recording(): host_room_url="https://example.com/meeting-host", start_date=old_date, end_date=old_date + timedelta(hours=1), - user_id=None, room_id=None, ) ) @@ -241,7 +240,6 @@ async def test_meeting_consent_cascade_delete(): host_room_url="https://example.com/cascade-test-host", start_date=datetime.now(timezone.utc), end_date=datetime.now(timezone.utc) + timedelta(hours=1), - user_id="test-user", room_id=None, ) ) diff --git a/www/.env.example b/www/.env.example new file mode 100644 index 00000000..77017d91 --- /dev/null +++ b/www/.env.example @@ -0,0 +1,34 @@ +# Environment +ENVIRONMENT=development +NEXT_PUBLIC_ENV=development + +# Site Configuration +NEXT_PUBLIC_SITE_URL=http://localhost:3000 + +# Nextauth envs +# not used in app code but in lib code +NEXTAUTH_URL=http://localhost:3000 +NEXTAUTH_SECRET=your-nextauth-secret-here +# / Nextauth envs + +# Authentication (Authentik OAuth/OIDC) +AUTHENTIK_ISSUER=https://authentik.example.com/application/o/reflector +AUTHENTIK_REFRESH_TOKEN_URL=https://authentik.example.com/application/o/token/ +AUTHENTIK_CLIENT_ID=your-client-id-here +AUTHENTIK_CLIENT_SECRET=your-client-secret-here + +# Feature Flags +# NEXT_PUBLIC_FEATURE_REQUIRE_LOGIN=true +# NEXT_PUBLIC_FEATURE_PRIVACY=false +# NEXT_PUBLIC_FEATURE_BROWSE=true +# NEXT_PUBLIC_FEATURE_SEND_TO_ZULIP=true +# NEXT_PUBLIC_FEATURE_ROOMS=true + +# API URLs +NEXT_PUBLIC_API_URL=http://127.0.0.1:1250 +NEXT_PUBLIC_WEBSOCKET_URL=ws://127.0.0.1:1250 +NEXT_PUBLIC_AUTH_CALLBACK_URL=http://localhost:3000/auth-callback + +# Sentry +# SENTRY_DSN=https://your-dsn@sentry.io/project-id +# SENTRY_IGNORE_API_RESOLUTION_ERROR=1 \ No newline at end of file diff --git a/www/.gitignore b/www/.gitignore index c0ad8c1e..9acefbb2 100644 --- a/www/.gitignore +++ b/www/.gitignore @@ -40,7 +40,6 @@ next-env.d.ts # Sentry Auth Token .sentryclirc -config.ts # openapi logs openapi-ts-error-*.log diff --git a/www/app/(app)/layout.tsx b/www/app/(app)/layout.tsx index 801be28f..8bca1df6 100644 --- a/www/app/(app)/layout.tsx +++ b/www/app/(app)/layout.tsx @@ -1,5 +1,5 @@ import { Container, Flex, Link } from "@chakra-ui/react"; -import { getConfig } from "../lib/edgeConfig"; +import { featureEnabled } from "../lib/features"; import NextLink from "next/link"; import Image from "next/image"; import UserInfo from "../(auth)/userInfo"; @@ -11,8 +11,6 @@ export default async function AppLayout({ }: { children: React.ReactNode; }) { - const config = await getConfig(); - const { requireLogin, privacy, browse, rooms } = config.features; return ( Create - {browse ? ( + {featureEnabled("browse") ? ( <>  ·  @@ -68,7 +66,7 @@ export default async function AppLayout({ ) : ( <> )} - {rooms ? ( + {featureEnabled("rooms") ? ( <>  ·  @@ -78,7 +76,7 @@ export default async function AppLayout({ ) : ( <> )} - {requireLogin ? ( + {featureEnabled("requireLogin") ? ( <>  ·  diff --git a/www/app/(app)/transcripts/[transcriptId]/_components/TopicList.tsx b/www/app/(app)/transcripts/[transcriptId]/_components/TopicList.tsx index 534f0c0a..fdf3db41 100644 --- a/www/app/(app)/transcripts/[transcriptId]/_components/TopicList.tsx +++ b/www/app/(app)/transcripts/[transcriptId]/_components/TopicList.tsx @@ -3,10 +3,11 @@ import ScrollToBottom from "../../scrollToBottom"; import { Topic } from "../../webSocketTypes"; import useParticipants from "../../useParticipants"; import { Box, Flex, Text, Accordion } from "@chakra-ui/react"; -import { featureEnabled } from "../../../../domainContext"; import { TopicItem } from "./TopicItem"; import { TranscriptStatus } from "../../../../lib/transcript"; +import { featureEnabled } from "../../../../lib/features"; + type TopicListProps = { topics: Topic[]; useActiveTopic: [ diff --git a/www/app/(app)/transcripts/[transcriptId]/correct/page.tsx b/www/app/(app)/transcripts/[transcriptId]/correct/page.tsx index 1c7705f4..c4d5a9fc 100644 --- a/www/app/(app)/transcripts/[transcriptId]/correct/page.tsx +++ b/www/app/(app)/transcripts/[transcriptId]/correct/page.tsx @@ -1,5 +1,5 @@ "use client"; -import { useState } from "react"; +import { useState, use } from "react"; import TopicHeader from "./topicHeader"; import TopicWords from "./topicWords"; import TopicPlayer from "./topicPlayer"; @@ -18,14 +18,16 @@ import { useRouter } from "next/navigation"; import { Box, Grid } from "@chakra-ui/react"; export type TranscriptCorrect = { - params: { + params: Promise<{ transcriptId: string; - }; + }>; }; -export default function TranscriptCorrect({ - params: { transcriptId }, -}: TranscriptCorrect) { +export default function TranscriptCorrect(props: TranscriptCorrect) { + const params = use(props.params); + + const { transcriptId } = params; + const updateTranscriptMutation = useTranscriptUpdate(); const transcript = useTranscriptGet(transcriptId); const stateCurrentTopic = useState(); diff --git a/www/app/(app)/transcripts/[transcriptId]/page.tsx b/www/app/(app)/transcripts/[transcriptId]/page.tsx index 73bf2ae7..f06e8935 100644 --- a/www/app/(app)/transcripts/[transcriptId]/page.tsx +++ b/www/app/(app)/transcripts/[transcriptId]/page.tsx @@ -5,7 +5,7 @@ import useWaveform from "../useWaveform"; import useMp3 from "../useMp3"; import { TopicList } from "./_components/TopicList"; import { Topic } from "../webSocketTypes"; -import React, { useEffect, useState } from "react"; +import React, { useEffect, useState, use } from "react"; import FinalSummary from "./finalSummary"; import TranscriptTitle from "../transcriptTitle"; import Player from "../player"; @@ -15,13 +15,14 @@ import { useTranscriptGet } from "../../../lib/apiHooks"; import { TranscriptStatus } from "../../../lib/transcript"; type TranscriptDetails = { - params: { + params: Promise<{ transcriptId: string; - }; + }>; }; export default function TranscriptDetails(details: TranscriptDetails) { - const transcriptId = details.params.transcriptId; + const params = use(details.params); + const transcriptId = params.transcriptId; const router = useRouter(); const statusToRedirect = [ "idle", @@ -43,7 +44,7 @@ export default function TranscriptDetails(details: TranscriptDetails) { useEffect(() => { if (waiting) { - const newUrl = "/transcripts/" + details.params.transcriptId + "/record"; + const newUrl = "/transcripts/" + params.transcriptId + "/record"; // Shallow redirection does not work on NextJS 13 // https://github.com/vercel/next.js/discussions/48110 // https://github.com/vercel/next.js/discussions/49540 diff --git a/www/app/(app)/transcripts/[transcriptId]/record/page.tsx b/www/app/(app)/transcripts/[transcriptId]/record/page.tsx index 0dc26c6d..d93b34b6 100644 --- a/www/app/(app)/transcripts/[transcriptId]/record/page.tsx +++ b/www/app/(app)/transcripts/[transcriptId]/record/page.tsx @@ -1,5 +1,5 @@ "use client"; -import { useEffect, useState } from "react"; +import { useEffect, useState, use } from "react"; import Recorder from "../../recorder"; import { TopicList } from "../_components/TopicList"; import { useWebSockets } from "../../useWebSockets"; @@ -14,19 +14,20 @@ import { useTranscriptGet } from "../../../../lib/apiHooks"; import { TranscriptStatus } from "../../../../lib/transcript"; type TranscriptDetails = { - params: { + params: Promise<{ transcriptId: string; - }; + }>; }; const TranscriptRecord = (details: TranscriptDetails) => { - const transcript = useTranscriptGet(details.params.transcriptId); + const params = use(details.params); + const transcript = useTranscriptGet(params.transcriptId); const [transcriptStarted, setTranscriptStarted] = useState(false); const useActiveTopic = useState(null); - const webSockets = useWebSockets(details.params.transcriptId); + const webSockets = useWebSockets(params.transcriptId); - const mp3 = useMp3(details.params.transcriptId, true); + const mp3 = useMp3(params.transcriptId, true); const router = useRouter(); @@ -47,7 +48,7 @@ const TranscriptRecord = (details: TranscriptDetails) => { if (newStatus && (newStatus == "ended" || newStatus == "error")) { console.log(newStatus, "redirecting"); - const newUrl = "/transcripts/" + details.params.transcriptId; + const newUrl = "/transcripts/" + params.transcriptId; router.replace(newUrl); } }, [webSockets.status?.value, transcript.data?.status]); @@ -75,7 +76,7 @@ const TranscriptRecord = (details: TranscriptDetails) => { ) : ( // todo: only start recording animation when you get "recorded" status - + )} { topics={webSockets.topics} useActiveTopic={useActiveTopic} autoscroll={true} - transcriptId={details.params.transcriptId} + transcriptId={params.transcriptId} status={status} currentTranscriptText={webSockets.accumulatedText} /> diff --git a/www/app/(app)/transcripts/[transcriptId]/upload/page.tsx b/www/app/(app)/transcripts/[transcriptId]/upload/page.tsx index 844d05e9..b4bc25cc 100644 --- a/www/app/(app)/transcripts/[transcriptId]/upload/page.tsx +++ b/www/app/(app)/transcripts/[transcriptId]/upload/page.tsx @@ -1,5 +1,5 @@ "use client"; -import { useEffect, useState } from "react"; +import { useEffect, useState, use } from "react"; import { useWebSockets } from "../../useWebSockets"; import { lockWakeState, releaseWakeState } from "../../../../lib/wakeLock"; import { useRouter } from "next/navigation"; @@ -9,18 +9,19 @@ import FileUploadButton from "../../fileUploadButton"; import { useTranscriptGet } from "../../../../lib/apiHooks"; type TranscriptUpload = { - params: { + params: Promise<{ transcriptId: string; - }; + }>; }; const TranscriptUpload = (details: TranscriptUpload) => { - const transcript = useTranscriptGet(details.params.transcriptId); + const params = use(details.params); + const transcript = useTranscriptGet(params.transcriptId); const [transcriptStarted, setTranscriptStarted] = useState(false); - const webSockets = useWebSockets(details.params.transcriptId); + const webSockets = useWebSockets(params.transcriptId); - const mp3 = useMp3(details.params.transcriptId, true); + const mp3 = useMp3(params.transcriptId, true); const router = useRouter(); @@ -50,7 +51,7 @@ const TranscriptUpload = (details: TranscriptUpload) => { if (newStatus && (newStatus == "ended" || newStatus == "error")) { console.log(newStatus, "redirecting"); - const newUrl = "/transcripts/" + details.params.transcriptId; + const newUrl = "/transcripts/" + params.transcriptId; router.replace(newUrl); } }, [webSockets.status?.value, transcript.data?.status]); @@ -84,7 +85,7 @@ const TranscriptUpload = (details: TranscriptUpload) => { Please select the file, supported formats: .mp3, m4a, .wav, .mp4, .mov or .webm - + )} {status && status == "uploaded" && ( diff --git a/www/app/(app)/transcripts/new/page.tsx b/www/app/(app)/transcripts/new/page.tsx index 0410bd97..8953e994 100644 --- a/www/app/(app)/transcripts/new/page.tsx +++ b/www/app/(app)/transcripts/new/page.tsx @@ -9,7 +9,6 @@ import { useRouter } from "next/navigation"; import useCreateTranscript from "../createTranscript"; import SelectSearch from "react-select-search"; import { supportedLanguages } from "../../../supportedLanguages"; -import { featureEnabled } from "../../../domainContext"; import { Flex, Box, @@ -21,10 +20,9 @@ import { Spacer, } from "@chakra-ui/react"; import { useAuth } from "../../../lib/AuthProvider"; -import type { components } from "../../../reflector-api"; +import { featureEnabled } from "../../../lib/features"; const TranscriptCreate = () => { - const isClient = typeof window !== "undefined"; const router = useRouter(); const auth = useAuth(); const isAuthenticated = auth.status === "authenticated"; @@ -176,7 +174,7 @@ const TranscriptCreate = () => { placeholder="Choose your language" /> - {isClient && !loading ? ( + {!loading ? ( permissionOk ? ( ) : permissionDenied ? ( diff --git a/www/app/(app)/transcripts/shareAndPrivacy.tsx b/www/app/(app)/transcripts/shareAndPrivacy.tsx index a53c93e3..8580015d 100644 --- a/www/app/(app)/transcripts/shareAndPrivacy.tsx +++ b/www/app/(app)/transcripts/shareAndPrivacy.tsx @@ -1,5 +1,4 @@ import { useEffect, useState } from "react"; -import { featureEnabled } from "../../domainContext"; import { ShareMode, toShareMode } from "../../lib/shareMode"; import type { components } from "../../reflector-api"; @@ -24,6 +23,8 @@ import ShareCopy from "./shareCopy"; import ShareZulip from "./shareZulip"; import { useAuth } from "../../lib/AuthProvider"; +import { featureEnabled } from "../../lib/features"; + type ShareAndPrivacyProps = { finalSummaryRef: any; transcriptResponse: GetTranscript; diff --git a/www/app/(app)/transcripts/shareLink.tsx b/www/app/(app)/transcripts/shareLink.tsx index 7ea55f5e..ee7a01bf 100644 --- a/www/app/(app)/transcripts/shareLink.tsx +++ b/www/app/(app)/transcripts/shareLink.tsx @@ -1,8 +1,9 @@ import React, { useState, useRef, useEffect, use } from "react"; -import { featureEnabled } from "../../domainContext"; import { Button, Flex, Input, Text } from "@chakra-ui/react"; import QRCode from "react-qr-code"; +import { featureEnabled } from "../../lib/features"; + type ShareLinkProps = { transcriptId: string; }; diff --git a/www/app/(app)/transcripts/shareZulip.tsx b/www/app/(app)/transcripts/shareZulip.tsx index 62ce1b2c..5cee16c1 100644 --- a/www/app/(app)/transcripts/shareZulip.tsx +++ b/www/app/(app)/transcripts/shareZulip.tsx @@ -1,5 +1,4 @@ import { useState, useEffect, useMemo } from "react"; -import { featureEnabled } from "../../domainContext"; import type { components } from "../../reflector-api"; type GetTranscript = components["schemas"]["GetTranscript"]; @@ -25,6 +24,8 @@ import { useTranscriptPostToZulip, } from "../../lib/apiHooks"; +import { featureEnabled } from "../../lib/features"; + type ShareZulipProps = { transcriptResponse: GetTranscript; topicsResponse: GetTranscriptTopic[]; diff --git a/www/app/(app)/transcripts/useMp3.ts b/www/app/(app)/transcripts/useMp3.ts index 223a9a4a..cc0635ec 100644 --- a/www/app/(app)/transcripts/useMp3.ts +++ b/www/app/(app)/transcripts/useMp3.ts @@ -1,7 +1,7 @@ -import { useContext, useEffect, useState } from "react"; -import { DomainContext } from "../../domainContext"; +import { useEffect, useState } from "react"; import { useTranscriptGet } from "../../lib/apiHooks"; import { useAuth } from "../../lib/AuthProvider"; +import { API_URL } from "../../lib/apiClient"; export type Mp3Response = { media: HTMLMediaElement | null; @@ -19,7 +19,6 @@ const useMp3 = (transcriptId: string, waiting?: boolean): Mp3Response => { null, ); const [audioDeleted, setAudioDeleted] = useState(null); - const { api_url } = useContext(DomainContext); const auth = useAuth(); const accessTokenInfo = auth.status === "authenticated" ? auth.accessToken : null; @@ -78,7 +77,7 @@ const useMp3 = (transcriptId: string, waiting?: boolean): Mp3Response => { // Audio is not deleted, proceed to load it audioElement = document.createElement("audio"); - audioElement.src = `${api_url}/v1/transcripts/${transcriptId}/audio/mp3`; + audioElement.src = `${API_URL}/v1/transcripts/${transcriptId}/audio/mp3`; audioElement.crossOrigin = "anonymous"; audioElement.preload = "auto"; @@ -110,7 +109,7 @@ const useMp3 = (transcriptId: string, waiting?: boolean): Mp3Response => { if (handleError) audioElement.removeEventListener("error", handleError); } }; - }, [transcriptId, transcript, later, api_url]); + }, [transcriptId, transcript, later]); const getNow = () => { setLater(false); diff --git a/www/app/(app)/transcripts/useWebSockets.ts b/www/app/(app)/transcripts/useWebSockets.ts index f3b009c0..09426061 100644 --- a/www/app/(app)/transcripts/useWebSockets.ts +++ b/www/app/(app)/transcripts/useWebSockets.ts @@ -1,13 +1,12 @@ -import { useContext, useEffect, useState } from "react"; +import { useEffect, useState } from "react"; import { Topic, FinalSummary, Status } from "./webSocketTypes"; import { useError } from "../../(errors)/errorContext"; -import { DomainContext } from "../../domainContext"; import type { components } from "../../reflector-api"; type AudioWaveform = components["schemas"]["AudioWaveform"]; type GetTranscriptSegmentTopic = components["schemas"]["GetTranscriptSegmentTopic"]; import { useQueryClient } from "@tanstack/react-query"; -import { $api } from "../../lib/apiClient"; +import { $api, WEBSOCKET_URL } from "../../lib/apiClient"; export type UseWebSockets = { transcriptTextLive: string; @@ -37,7 +36,6 @@ export const useWebSockets = (transcriptId: string | null): UseWebSockets => { const [status, setStatus] = useState(null); const { setError } = useError(); - const { websocket_url: websocketUrl } = useContext(DomainContext); const queryClient = useQueryClient(); const [accumulatedText, setAccumulatedText] = useState(""); @@ -328,7 +326,7 @@ export const useWebSockets = (transcriptId: string | null): UseWebSockets => { if (!transcriptId) return; - const url = `${websocketUrl}/v1/transcripts/${transcriptId}/events`; + const url = `${WEBSOCKET_URL}/v1/transcripts/${transcriptId}/events`; let ws = new WebSocket(url); ws.onopen = () => { @@ -494,7 +492,7 @@ export const useWebSockets = (transcriptId: string | null): UseWebSockets => { return () => { ws.close(); }; - }, [transcriptId, websocketUrl]); + }, [transcriptId]); return { transcriptTextLive, diff --git a/www/app/[roomName]/page.tsx b/www/app/[roomName]/page.tsx index 5c36e1a2..efb44448 100644 --- a/www/app/[roomName]/page.tsx +++ b/www/app/[roomName]/page.tsx @@ -7,6 +7,7 @@ import { useState, useContext, RefObject, + use, } from "react"; import { Box, @@ -37,9 +38,9 @@ import { FaBars } from "react-icons/fa6"; import { useAuth } from "../lib/AuthProvider"; export type RoomDetails = { - params: { + params: Promise<{ roomName: string; - }; + }>; }; // stages: we focus on the consent, then whereby steals focus, then we focus on the consent again, then return focus to whoever stole it initially @@ -262,9 +263,11 @@ const useWhereby = () => { }; export default function Room(details: RoomDetails) { + const params = use(details.params); const wherebyLoaded = useWhereby(); const wherebyRef = useRef(null); - const roomName = details.params.roomName; + const roomName = params.roomName; + const meeting = useRoomMeeting(roomName); const router = useRouter(); const auth = useAuth(); const status = auth.status; diff --git a/www/app/api/auth/[...nextauth]/route.ts b/www/app/api/auth/[...nextauth]/route.ts index 7b73c22a..250e9e34 100644 --- a/www/app/api/auth/[...nextauth]/route.ts +++ b/www/app/api/auth/[...nextauth]/route.ts @@ -1,6 +1,6 @@ import NextAuth from "next-auth"; import { authOptions } from "../../../lib/authBackend"; -const handler = NextAuth(authOptions); +const handler = NextAuth(authOptions()); export { handler as GET, handler as POST }; diff --git a/www/app/domainContext.tsx b/www/app/domainContext.tsx deleted file mode 100644 index 7e415f1c..00000000 --- a/www/app/domainContext.tsx +++ /dev/null @@ -1,49 +0,0 @@ -"use client"; -import { createContext, useContext, useEffect, useState } from "react"; -import { DomainConfig } from "./lib/edgeConfig"; - -type DomainContextType = Omit; - -export const DomainContext = createContext({ - features: { - requireLogin: false, - privacy: true, - browse: false, - sendToZulip: false, - }, - api_url: "", - websocket_url: "", -}); - -export const DomainContextProvider = ({ - config, - children, -}: { - config: DomainConfig; - children: any; -}) => { - const [context, setContext] = useState(); - - useEffect(() => { - if (!config) return; - const { auth_callback_url, ...others } = config; - setContext(others); - }, [config]); - - if (!context) return; - - return ( - {children} - ); -}; - -// Get feature config client-side with -export const featureEnabled = ( - featureName: "requireLogin" | "privacy" | "browse" | "sendToZulip", -) => { - const context = useContext(DomainContext); - - return context.features[featureName] as boolean | undefined; -}; - -// Get config server-side (out of react) : see lib/edgeConfig. diff --git a/www/app/layout.tsx b/www/app/layout.tsx index 62175be9..175b7cbc 100644 --- a/www/app/layout.tsx +++ b/www/app/layout.tsx @@ -3,11 +3,10 @@ import { Metadata, Viewport } from "next"; import { Poppins } from "next/font/google"; import { ErrorProvider } from "./(errors)/errorContext"; import ErrorMessage from "./(errors)/errorMessage"; -import { DomainContextProvider } from "./domainContext"; import { RecordingConsentProvider } from "./recordingConsentContext"; -import { getConfig } from "./lib/edgeConfig"; import { ErrorBoundary } from "@sentry/nextjs"; import { Providers } from "./providers"; +import { assertExistsAndNonEmptyString } from "./lib/utils"; const poppins = Poppins({ subsets: ["latin"], @@ -22,8 +21,13 @@ export const viewport: Viewport = { maximumScale: 1, }; +const NEXT_PUBLIC_SITE_URL = assertExistsAndNonEmptyString( + process.env.NEXT_PUBLIC_SITE_URL, + "NEXT_PUBLIC_SITE_URL required", +); + export const metadata: Metadata = { - metadataBase: new URL(process.env.NEXT_PUBLIC_SITE_URL!), + metadataBase: new URL(NEXT_PUBLIC_SITE_URL), title: { template: "%s – Reflector", default: "Reflector - AI-Powered Meeting Transcriptions by Monadical", @@ -68,21 +72,17 @@ export default async function RootLayout({ }: { children: React.ReactNode; }) { - const config = await getConfig(); - return ( - - - "something went really wrong"

}> - - - {children} - -
-
-
+ + "something went really wrong"

}> + + + {children} + +
+
); diff --git a/www/app/lib/AuthProvider.tsx b/www/app/lib/AuthProvider.tsx index 1a8ebea6..e1eabf99 100644 --- a/www/app/lib/AuthProvider.tsx +++ b/www/app/lib/AuthProvider.tsx @@ -9,6 +9,7 @@ import { Session } from "next-auth"; import { SessionAutoRefresh } from "./SessionAutoRefresh"; import { REFRESH_ACCESS_TOKEN_ERROR } from "./auth"; import { assertExists } from "./utils"; +import { featureEnabled } from "./features"; type AuthContextType = ( | { status: "loading" } @@ -27,65 +28,83 @@ type AuthContextType = ( }; const AuthContext = createContext(undefined); +const isAuthEnabled = featureEnabled("requireLogin"); + +const noopAuthContext: AuthContextType = { + status: "unauthenticated", + update: async () => { + return null; + }, + signIn: async () => { + throw new Error("signIn not supposed to be called"); + }, + signOut: async () => { + throw new Error("signOut not supposed to be called"); + }, +}; export function AuthProvider({ children }: { children: React.ReactNode }) { const { data: session, status, update } = useNextAuthSession(); - const customSession = session ? assertCustomSession(session) : null; - const contextValue: AuthContextType = { - ...(() => { - switch (status) { - case "loading": { - const sessionIsHere = !!customSession; - switch (sessionIsHere) { - case false: { - return { status }; + const contextValue: AuthContextType = isAuthEnabled + ? { + ...(() => { + switch (status) { + case "loading": { + const sessionIsHere = !!session; + // actually exists sometimes; nextAuth types are something else + switch (sessionIsHere as boolean) { + case false: { + return { status }; + } + case true: { + return { + status: "refreshing" as const, + user: assertCustomSession( + assertExists(session as unknown as Session), + ).user, + }; + } + default: { + throw new Error("unreachable"); + } + } } - case true: { - return { - status: "refreshing" as const, - user: assertExists(customSession).user, - }; + case "authenticated": { + const customSession = assertCustomSession(session); + if (customSession?.error === REFRESH_ACCESS_TOKEN_ERROR) { + // token had expired but next auth still returns "authenticated" so show user unauthenticated state + return { + status: "unauthenticated" as const, + }; + } else if (customSession?.accessToken) { + return { + status, + accessToken: customSession.accessToken, + accessTokenExpires: customSession.accessTokenExpires, + user: customSession.user, + }; + } else { + console.warn( + "illegal state: authenticated but have no session/or access token. ignoring", + ); + return { status: "unauthenticated" as const }; + } + } + case "unauthenticated": { + return { status: "unauthenticated" as const }; } default: { - const _: never = sessionIsHere; + const _: never = status; throw new Error("unreachable"); } } - } - case "authenticated": { - if (customSession?.error === REFRESH_ACCESS_TOKEN_ERROR) { - // token had expired but next auth still returns "authenticated" so show user unauthenticated state - return { - status: "unauthenticated" as const, - }; - } else if (customSession?.accessToken) { - return { - status, - accessToken: customSession.accessToken, - accessTokenExpires: customSession.accessTokenExpires, - user: customSession.user, - }; - } else { - console.warn( - "illegal state: authenticated but have no session/or access token. ignoring", - ); - return { status: "unauthenticated" as const }; - } - } - case "unauthenticated": { - return { status: "unauthenticated" as const }; - } - default: { - const _: never = status; - throw new Error("unreachable"); - } + })(), + update, + signIn, + signOut, } - })(), - update, - signIn, - signOut, - }; + : noopAuthContext; // not useEffect, we need it ASAP // apparently, still no guarantee this code runs before mutations are fired diff --git a/www/app/lib/apiClient.tsx b/www/app/lib/apiClient.tsx index 4b4ca6a0..86f8f161 100644 --- a/www/app/lib/apiClient.tsx +++ b/www/app/lib/apiClient.tsx @@ -6,10 +6,17 @@ import createFetchClient from "openapi-react-query"; import { assertExistsAndNonEmptyString } from "./utils"; import { isBuildPhase } from "./next"; -const API_URL = !isBuildPhase - ? assertExistsAndNonEmptyString(process.env.NEXT_PUBLIC_API_URL) +export const API_URL = !isBuildPhase + ? assertExistsAndNonEmptyString( + process.env.NEXT_PUBLIC_API_URL, + "NEXT_PUBLIC_API_URL required", + ) : "http://localhost"; +// TODO decide strict validation or not +export const WEBSOCKET_URL = + process.env.NEXT_PUBLIC_WEBSOCKET_URL || "ws://127.0.0.1:1250"; + export const client = createClient({ baseUrl: API_URL, }); diff --git a/www/app/lib/array.ts b/www/app/lib/array.ts new file mode 100644 index 00000000..f47aaa42 --- /dev/null +++ b/www/app/lib/array.ts @@ -0,0 +1,12 @@ +export type NonEmptyArray = [T, ...T[]]; +export const isNonEmptyArray = (arr: T[]): arr is NonEmptyArray => + arr.length > 0; +export const assertNonEmptyArray = ( + arr: T[], + err?: string, +): NonEmptyArray => { + if (isNonEmptyArray(arr)) { + return arr; + } + throw new Error(err ?? "Expected non-empty array"); +}; diff --git a/www/app/lib/auth.ts b/www/app/lib/auth.ts index c83db264..e562eaed 100644 --- a/www/app/lib/auth.ts +++ b/www/app/lib/auth.ts @@ -1,3 +1,5 @@ +import { assertExistsAndNonEmptyString } from "./utils"; + export const REFRESH_ACCESS_TOKEN_ERROR = "RefreshAccessTokenError" as const; // 4 min is 1 min less than default authentic value. here we assume that authentic won't be set to access tokens < 4 min export const REFRESH_ACCESS_TOKEN_BEFORE = 4 * 60 * 1000; diff --git a/www/app/lib/authBackend.ts b/www/app/lib/authBackend.ts index 06bddff2..5e9767c9 100644 --- a/www/app/lib/authBackend.ts +++ b/www/app/lib/authBackend.ts @@ -19,102 +19,126 @@ import { } from "./redisTokenCache"; import { tokenCacheRedis, redlock } from "./redisClient"; import { isBuildPhase } from "./next"; +import { sequenceThrows } from "./errorUtils"; +import { featureEnabled } from "./features"; const TOKEN_CACHE_TTL = REFRESH_ACCESS_TOKEN_BEFORE; -const CLIENT_ID = !isBuildPhase - ? assertExistsAndNonEmptyString(process.env.AUTHENTIK_CLIENT_ID) - : "noop"; -const CLIENT_SECRET = !isBuildPhase - ? assertExistsAndNonEmptyString(process.env.AUTHENTIK_CLIENT_SECRET) - : "noop"; +const getAuthentikClientId = () => + assertExistsAndNonEmptyString( + process.env.AUTHENTIK_CLIENT_ID, + "AUTHENTIK_CLIENT_ID required", + ); +const getAuthentikClientSecret = () => + assertExistsAndNonEmptyString( + process.env.AUTHENTIK_CLIENT_SECRET, + "AUTHENTIK_CLIENT_SECRET required", + ); +const getAuthentikRefreshTokenUrl = () => + assertExistsAndNonEmptyString( + process.env.AUTHENTIK_REFRESH_TOKEN_URL, + "AUTHENTIK_REFRESH_TOKEN_URL required", + ); -export const authOptions: AuthOptions = { - providers: [ - AuthentikProvider({ - clientId: CLIENT_ID, - clientSecret: CLIENT_SECRET, - issuer: process.env.AUTHENTIK_ISSUER, - authorization: { - params: { - scope: "openid email profile offline_access", +export const authOptions = (): AuthOptions => + featureEnabled("requireLogin") + ? { + providers: [ + AuthentikProvider({ + ...(() => { + const [clientId, clientSecret] = sequenceThrows( + getAuthentikClientId, + getAuthentikClientSecret, + ); + return { + clientId, + clientSecret, + }; + })(), + issuer: process.env.AUTHENTIK_ISSUER, + authorization: { + params: { + scope: "openid email profile offline_access", + }, + }, + }), + ], + session: { + strategy: "jwt", }, - }, - }), - ], - session: { - strategy: "jwt", - }, - callbacks: { - async jwt({ token, account, user }) { - if (account && !account.access_token) { - await deleteTokenCache(tokenCacheRedis, `token:${token.sub}`); - } + callbacks: { + async jwt({ token, account, user }) { + if (account && !account.access_token) { + await deleteTokenCache(tokenCacheRedis, `token:${token.sub}`); + } - if (account && user) { - // called only on first login - // XXX account.expires_in used in example is not defined for authentik backend, but expires_at is - if (account.access_token) { - const expiresAtS = assertExists(account.expires_at); - const expiresAtMs = expiresAtS * 1000; - const jwtToken: JWTWithAccessToken = { - ...token, - accessToken: account.access_token, - accessTokenExpires: expiresAtMs, - refreshToken: account.refresh_token, - }; - if (jwtToken.error) { - await deleteTokenCache(tokenCacheRedis, `token:${token.sub}`); - } else { - assertNotExists( - jwtToken.error, - `panic! trying to cache token with error in jwt: ${jwtToken.error}`, + if (account && user) { + // called only on first login + // XXX account.expires_in used in example is not defined for authentik backend, but expires_at is + if (account.access_token) { + const expiresAtS = assertExists(account.expires_at); + const expiresAtMs = expiresAtS * 1000; + const jwtToken: JWTWithAccessToken = { + ...token, + accessToken: account.access_token, + accessTokenExpires: expiresAtMs, + refreshToken: account.refresh_token, + }; + if (jwtToken.error) { + await deleteTokenCache(tokenCacheRedis, `token:${token.sub}`); + } else { + assertNotExists( + jwtToken.error, + `panic! trying to cache token with error in jwt: ${jwtToken.error}`, + ); + await setTokenCache(tokenCacheRedis, `token:${token.sub}`, { + token: jwtToken, + timestamp: Date.now(), + }); + return jwtToken; + } + } + } + + const currentToken = await getTokenCache( + tokenCacheRedis, + `token:${token.sub}`, ); - await setTokenCache(tokenCacheRedis, `token:${token.sub}`, { - token: jwtToken, - timestamp: Date.now(), - }); - return jwtToken; - } - } - } + console.debug( + "currentToken from cache", + JSON.stringify(currentToken, null, 2), + "will be returned?", + currentToken && + !shouldRefreshToken(currentToken.token.accessTokenExpires), + ); + if ( + currentToken && + !shouldRefreshToken(currentToken.token.accessTokenExpires) + ) { + return currentToken.token; + } - const currentToken = await getTokenCache( - tokenCacheRedis, - `token:${token.sub}`, - ); - console.debug( - "currentToken from cache", - JSON.stringify(currentToken, null, 2), - "will be returned?", - currentToken && - !shouldRefreshToken(currentToken.token.accessTokenExpires), - ); - if ( - currentToken && - !shouldRefreshToken(currentToken.token.accessTokenExpires) - ) { - return currentToken.token; - } - - // access token has expired, try to update it - return await lockedRefreshAccessToken(token); - }, - async session({ session, token }) { - const extendedToken = token as JWTWithAccessToken; - return { - ...session, - accessToken: extendedToken.accessToken, - accessTokenExpires: extendedToken.accessTokenExpires, - error: extendedToken.error, - user: { - id: assertExists(extendedToken.sub), - name: extendedToken.name, - email: extendedToken.email, + // access token has expired, try to update it + return await lockedRefreshAccessToken(token); + }, + async session({ session, token }) { + const extendedToken = token as JWTWithAccessToken; + return { + ...session, + accessToken: extendedToken.accessToken, + accessTokenExpires: extendedToken.accessTokenExpires, + error: extendedToken.error, + user: { + id: assertExists(extendedToken.sub), + name: extendedToken.name, + email: extendedToken.email, + }, + } satisfies CustomSession; + }, }, - } satisfies CustomSession; - }, - }, -}; + } + : { + providers: [], + }; async function lockedRefreshAccessToken( token: JWT, @@ -174,16 +198,19 @@ async function lockedRefreshAccessToken( } async function refreshAccessToken(token: JWT): Promise { + const [url, clientId, clientSecret] = sequenceThrows( + getAuthentikRefreshTokenUrl, + getAuthentikClientId, + getAuthentikClientSecret, + ); try { - const url = `${process.env.AUTHENTIK_REFRESH_TOKEN_URL}`; - const options = { headers: { "Content-Type": "application/x-www-form-urlencoded", }, body: new URLSearchParams({ - client_id: process.env.AUTHENTIK_CLIENT_ID as string, - client_secret: process.env.AUTHENTIK_CLIENT_SECRET as string, + client_id: clientId, + client_secret: clientSecret, grant_type: "refresh_token", refresh_token: token.refreshToken as string, }).toString(), diff --git a/www/app/lib/edgeConfig.ts b/www/app/lib/edgeConfig.ts deleted file mode 100644 index f234a2cf..00000000 --- a/www/app/lib/edgeConfig.ts +++ /dev/null @@ -1,54 +0,0 @@ -import { get } from "@vercel/edge-config"; -import { isBuildPhase } from "./next"; - -type EdgeConfig = { - [domainWithDash: string]: { - features: { - [featureName in - | "requireLogin" - | "privacy" - | "browse" - | "sendToZulip"]: boolean; - }; - auth_callback_url: string; - websocket_url: string; - api_url: string; - }; -}; - -export type DomainConfig = EdgeConfig["domainWithDash"]; - -// Edge config main keys can only be alphanumeric and _ or - -export function edgeKeyToDomain(key: string) { - return key.replaceAll("_", "."); -} - -export function edgeDomainToKey(domain: string) { - return domain.replaceAll(".", "_"); -} - -// get edge config server-side (prefer DomainContext when available), domain is the hostname -export async function getConfig() { - if (process.env.NEXT_PUBLIC_ENV === "development") { - try { - return require("../../config").localConfig; - } catch (e) { - // next build() WILL try to execute the require above even if conditionally protected - // but thank god it at least runs catch{} block properly - if (!isBuildPhase) throw new Error(e); - return require("../../config-template").localConfig; - } - } - - const domain = new URL(process.env.NEXT_PUBLIC_SITE_URL!).hostname; - let config = await get(edgeDomainToKey(domain)); - - if (typeof config !== "object") { - console.warn("No config for this domain, falling back to default"); - config = await get(edgeDomainToKey("default")); - } - - if (typeof config !== "object") throw Error("Error fetching config"); - - return config as DomainConfig; -} diff --git a/www/app/lib/errorUtils.ts b/www/app/lib/errorUtils.ts index e9e5300d..1512230c 100644 --- a/www/app/lib/errorUtils.ts +++ b/www/app/lib/errorUtils.ts @@ -1,4 +1,6 @@ -function shouldShowError(error: Error | null | undefined) { +import { isNonEmptyArray, NonEmptyArray } from "./array"; + +export function shouldShowError(error: Error | null | undefined) { if ( error?.name == "ResponseError" && (error["response"].status == 404 || error["response"].status == 403) @@ -8,4 +10,40 @@ function shouldShowError(error: Error | null | undefined) { return true; } -export { shouldShowError }; +const defaultMergeErrors = (ex: NonEmptyArray): unknown => { + try { + return new Error( + ex + .map((e) => + e ? (e.toString ? e.toString() : JSON.stringify(e)) : `${e}`, + ) + .join("\n"), + ); + } catch (e) { + console.error("Error merging errors:", e); + return ex[0]; + } +}; + +type ReturnTypes any)[]> = { + [K in keyof T]: T[K] extends () => infer R ? R : never; +}; + +// sequence semantic for "throws" +// calls functions passed and collects its thrown values +export function sequenceThrows any)[]>( + ...fs: Fns +): ReturnTypes { + const results: unknown[] = []; + const errors: unknown[] = []; + + for (const f of fs) { + try { + results.push(f()); + } catch (e) { + errors.push(e); + } + } + if (errors.length) throw defaultMergeErrors(errors as NonEmptyArray); + return results as ReturnTypes; +} diff --git a/www/app/lib/features.ts b/www/app/lib/features.ts new file mode 100644 index 00000000..7684c8e0 --- /dev/null +++ b/www/app/lib/features.ts @@ -0,0 +1,55 @@ +export const FEATURES = [ + "requireLogin", + "privacy", + "browse", + "sendToZulip", + "rooms", +] as const; + +export type FeatureName = (typeof FEATURES)[number]; + +export type Features = Readonly>; + +export const DEFAULT_FEATURES: Features = { + requireLogin: true, + privacy: true, + browse: true, + sendToZulip: true, + rooms: true, +} as const; + +function parseBooleanEnv( + value: string | undefined, + defaultValue: boolean = false, +): boolean { + if (!value) return defaultValue; + return value.toLowerCase() === "true"; +} + +// WARNING: keep process.env.* as-is, next.js won't see them if you generate dynamically +const features: Features = { + requireLogin: parseBooleanEnv( + process.env.NEXT_PUBLIC_FEATURE_REQUIRE_LOGIN, + DEFAULT_FEATURES.requireLogin, + ), + privacy: parseBooleanEnv( + process.env.NEXT_PUBLIC_FEATURE_PRIVACY, + DEFAULT_FEATURES.privacy, + ), + browse: parseBooleanEnv( + process.env.NEXT_PUBLIC_FEATURE_BROWSE, + DEFAULT_FEATURES.browse, + ), + sendToZulip: parseBooleanEnv( + process.env.NEXT_PUBLIC_FEATURE_SEND_TO_ZULIP, + DEFAULT_FEATURES.sendToZulip, + ), + rooms: parseBooleanEnv( + process.env.NEXT_PUBLIC_FEATURE_ROOMS, + DEFAULT_FEATURES.rooms, + ), +}; + +export const featureEnabled = (featureName: FeatureName): boolean => { + return features[featureName]; +}; diff --git a/www/app/lib/types.ts b/www/app/lib/types.ts index 0576e186..af5625ec 100644 --- a/www/app/lib/types.ts +++ b/www/app/lib/types.ts @@ -72,3 +72,7 @@ export const assertCustomSession = (s: S): CustomSession => { // no other checks for now return r as CustomSession; }; + +export type Mutable = { + -readonly [P in keyof T]: T[P]; +}; diff --git a/www/app/lib/utils.ts b/www/app/lib/utils.ts index 8e8651ff..11939cdb 100644 --- a/www/app/lib/utils.ts +++ b/www/app/lib/utils.ts @@ -171,5 +171,6 @@ export const assertNotExists = ( export const assertExistsAndNonEmptyString = ( value: string | null | undefined, + err?: string, ): NonEmptyString => - parseNonEmptyString(assertExists(value, "Expected non-empty string")); + parseNonEmptyString(assertExists(value, err || "Expected non-empty string")); diff --git a/www/app/providers.tsx b/www/app/providers.tsx index 2e3b78eb..020112ac 100644 --- a/www/app/providers.tsx +++ b/www/app/providers.tsx @@ -2,8 +2,8 @@ import { ChakraProvider } from "@chakra-ui/react"; import system from "./styles/theme"; +import dynamic from "next/dynamic"; -import { WherebyProvider } from "@whereby.com/browser-sdk/react"; import { Toaster } from "./components/ui/toaster"; import { NuqsAdapter } from "nuqs/adapters/next/app"; import { QueryClientProvider } from "@tanstack/react-query"; @@ -11,6 +11,14 @@ import { queryClient } from "./lib/queryClient"; import { AuthProvider } from "./lib/AuthProvider"; import { SessionProvider as SessionProviderNextAuth } from "next-auth/react"; +const WherebyProvider = dynamic( + () => + import("@whereby.com/browser-sdk/react").then((mod) => ({ + default: mod.WherebyProvider, + })), + { ssr: false }, +); + export function Providers({ children }: { children: React.ReactNode }) { return ( diff --git a/www/app/webinars/[title]/page.tsx b/www/app/webinars/[title]/page.tsx index ab873a6b..51583a2a 100644 --- a/www/app/webinars/[title]/page.tsx +++ b/www/app/webinars/[title]/page.tsx @@ -1,5 +1,5 @@ "use client"; -import { useEffect, useState } from "react"; +import { useEffect, useState, use } from "react"; import Link from "next/link"; import Image from "next/image"; import { notFound } from "next/navigation"; @@ -30,9 +30,9 @@ const FORM_FIELDS = { }; export type WebinarDetails = { - params: { + params: Promise<{ title: string; - }; + }>; }; export type Webinar = { @@ -63,7 +63,8 @@ const WEBINARS: Webinar[] = [ ]; export default function WebinarPage(details: WebinarDetails) { - const title = details.params.title; + const params = use(details.params); + const title = params.title; const webinar = WEBINARS.find((webinar) => webinar.title === title); if (!webinar) { return notFound(); diff --git a/www/config-template.ts b/www/config-template.ts deleted file mode 100644 index e8d4c01c..00000000 --- a/www/config-template.ts +++ /dev/null @@ -1,13 +0,0 @@ -export const localConfig = { - features: { - requireLogin: true, - privacy: true, - browse: true, - sendToZulip: true, - rooms: true, - }, - api_url: "http://127.0.0.1:1250", - websocket_url: "ws://127.0.0.1:1250", - auth_callback_url: "http://localhost:3000/auth-callback", - zulip_streams: "", // Find the value on zulip -}; diff --git a/www/sentry.client.config.ts b/www/instrumentation-client.ts similarity index 91% rename from www/sentry.client.config.ts rename to www/instrumentation-client.ts index aff65bbd..5ea5e2e9 100644 --- a/www/sentry.client.config.ts +++ b/www/instrumentation-client.ts @@ -23,3 +23,5 @@ if (SENTRY_DSN) { replaysSessionSampleRate: 0.0, }); } + +export const onRouterTransitionStart = Sentry.captureRouterTransitionStart; diff --git a/www/instrumentation.ts b/www/instrumentation.ts new file mode 100644 index 00000000..f8a929ba --- /dev/null +++ b/www/instrumentation.ts @@ -0,0 +1,9 @@ +export async function register() { + if (process.env.NEXT_RUNTIME === "nodejs") { + await import("./sentry.server.config"); + } + + if (process.env.NEXT_RUNTIME === "edge") { + await import("./sentry.edge.config"); + } +} diff --git a/www/middleware.ts b/www/middleware.ts index 2b60d715..7f487cd2 100644 --- a/www/middleware.ts +++ b/www/middleware.ts @@ -1,5 +1,5 @@ import { withAuth } from "next-auth/middleware"; -import { getConfig } from "./app/lib/edgeConfig"; +import { featureEnabled } from "./app/lib/features"; import { NextResponse } from "next/server"; import { PROTECTED_PAGES } from "./app/lib/auth"; @@ -19,13 +19,12 @@ export const config = { export default withAuth( async function middleware(request) { - const config = await getConfig(); const pathname = request.nextUrl.pathname; // feature-flags protected paths if ( - (!config.features.browse && pathname.startsWith("/browse")) || - (!config.features.rooms && pathname.startsWith("/rooms")) + (!featureEnabled("browse") && pathname.startsWith("/browse")) || + (!featureEnabled("rooms") && pathname.startsWith("/rooms")) ) { return NextResponse.redirect(request.nextUrl.origin); } @@ -33,10 +32,8 @@ export default withAuth( { callbacks: { async authorized({ req, token }) { - const config = await getConfig(); - if ( - config.features.requireLogin && + featureEnabled("requireLogin") && PROTECTED_PAGES.test(req.nextUrl.pathname) ) { return !!token; diff --git a/www/next.config.js b/www/next.config.js index bbc3f710..eedbac7f 100644 --- a/www/next.config.js +++ b/www/next.config.js @@ -1,7 +1,6 @@ /** @type {import('next').NextConfig} */ const nextConfig = { output: "standalone", - experimental: { esmExternals: "loose" }, env: { IS_CI: process.env.IS_CI, }, diff --git a/www/package.json b/www/package.json index 27e30a5f..d53c1536 100644 --- a/www/package.json +++ b/www/package.json @@ -17,20 +17,19 @@ "@fortawesome/fontawesome-svg-core": "^6.4.0", "@fortawesome/free-solid-svg-icons": "^6.4.0", "@fortawesome/react-fontawesome": "^0.2.0", - "@sentry/nextjs": "^7.77.0", + "@sentry/nextjs": "^10.11.0", "@tanstack/react-query": "^5.85.9", "@types/ioredis": "^5.0.0", - "@vercel/edge-config": "^0.4.1", "@whereby.com/browser-sdk": "^3.3.4", "autoprefixer": "10.4.20", "axios": "^1.8.2", "eslint": "^9.33.0", - "eslint-config-next": "^14.2.31", + "eslint-config-next": "^15.5.3", "fontawesome": "^5.6.3", "ioredis": "^5.7.0", "jest-worker": "^29.6.2", "lucide-react": "^0.525.0", - "next": "^14.2.30", + "next": "^15.5.3", "next-auth": "^4.24.7", "next-themes": "^0.4.6", "nuqs": "^2.4.3", @@ -63,8 +62,7 @@ "jest": "^30.1.3", "openapi-typescript": "^7.9.1", "prettier": "^3.0.0", - "ts-jest": "^29.4.1", - "vercel": "^37.3.0" + "ts-jest": "^29.4.1" }, "packageManager": "pnpm@10.14.0+sha512.ad27a79641b49c3e481a16a805baa71817a04bbe06a38d17e60e2eaee83f6a146c6a688125f5792e48dd5ba30e7da52a5cda4c3992b9ccf333f9ce223af84748" } diff --git a/www/pnpm-lock.yaml b/www/pnpm-lock.yaml index f4346855..a4e78972 100644 --- a/www/pnpm-lock.yaml +++ b/www/pnpm-lock.yaml @@ -23,17 +23,14 @@ importers: specifier: ^0.2.0 version: 0.2.3(@fortawesome/fontawesome-svg-core@6.7.2)(react@18.3.1) "@sentry/nextjs": - specifier: ^7.77.0 - version: 7.120.4(next@14.2.31(@babel/core@7.28.3)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.90.0))(react@18.3.1) + specifier: ^10.11.0 + version: 10.11.0(@opentelemetry/context-async-hooks@2.1.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.1.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.1.0(@opentelemetry/api@1.9.0))(next@15.5.3(@babel/core@7.28.3)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.90.0))(react@18.3.1)(webpack@5.101.3) "@tanstack/react-query": specifier: ^5.85.9 version: 5.85.9(react@18.3.1) "@types/ioredis": specifier: ^5.0.0 version: 5.0.0 - "@vercel/edge-config": - specifier: ^0.4.1 - version: 0.4.1 "@whereby.com/browser-sdk": specifier: ^3.3.4 version: 3.13.1(@types/react@18.2.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -47,8 +44,8 @@ importers: specifier: ^9.33.0 version: 9.33.0(jiti@1.21.7) eslint-config-next: - specifier: ^14.2.31 - version: 14.2.31(eslint@9.33.0(jiti@1.21.7))(typescript@5.9.2) + specifier: ^15.5.3 + version: 15.5.3(eslint@9.33.0(jiti@1.21.7))(typescript@5.9.2) fontawesome: specifier: ^5.6.3 version: 5.6.3 @@ -62,17 +59,17 @@ importers: specifier: ^0.525.0 version: 0.525.0(react@18.3.1) next: - specifier: ^14.2.30 - version: 14.2.31(@babel/core@7.28.3)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.90.0) + specifier: ^15.5.3 + version: 15.5.3(@babel/core@7.28.3)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.90.0) next-auth: specifier: ^4.24.7 - version: 4.24.11(next@14.2.31(@babel/core@7.28.3)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.90.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 4.24.11(next@15.5.3(@babel/core@7.28.3)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.90.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) next-themes: specifier: ^0.4.6 version: 0.4.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) nuqs: specifier: ^2.4.3 - version: 2.4.3(next@14.2.31(@babel/core@7.28.3)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.90.0))(react@18.3.1) + version: 2.4.3(next@15.5.3(@babel/core@7.28.3)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.90.0))(react@18.3.1) openapi-fetch: specifier: ^0.14.0 version: 0.14.0 @@ -117,7 +114,7 @@ importers: version: 9.11.1 tailwindcss: specifier: ^3.3.2 - version: 3.4.17(ts-node@10.9.1(@types/node@16.18.11)(typescript@5.9.2)) + version: 3.4.17(ts-node@10.9.1(@types/node@24.2.1)(typescript@5.9.2)) typescript: specifier: ^5.1.6 version: 5.9.2 @@ -136,7 +133,7 @@ importers: version: 18.2.20 jest: specifier: ^30.1.3 - version: 30.1.3(@types/node@16.18.11)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@types/node@16.18.11)(typescript@5.9.2)) + version: 30.1.3(@types/node@24.2.1)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@types/node@24.2.1)(typescript@5.9.2)) openapi-typescript: specifier: ^7.9.1 version: 7.9.1(typescript@5.9.2) @@ -145,10 +142,7 @@ importers: version: 3.6.2 ts-jest: specifier: ^29.4.1 - version: 29.4.1(@babel/core@7.28.3)(@jest/transform@30.1.2)(@jest/types@30.0.5)(babel-jest@30.1.2(@babel/core@7.28.3))(jest-util@30.0.5)(jest@30.1.3(@types/node@16.18.11)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@types/node@16.18.11)(typescript@5.9.2)))(typescript@5.9.2) - vercel: - specifier: ^37.3.0 - version: 37.14.0 + version: 29.4.1(@babel/core@7.28.3)(@jest/transform@30.1.2)(@jest/types@30.0.5)(babel-jest@30.1.2(@babel/core@7.28.3))(jest-util@30.0.5)(jest@30.1.3(@types/node@24.2.1)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@types/node@24.2.1)(typescript@5.9.2)))(typescript@5.9.2) packages: "@alloc/quick-lru@5.2.0": @@ -490,41 +484,6 @@ packages: } engines: { node: ">=12" } - "@edge-runtime/format@2.2.1": - resolution: - { - integrity: sha512-JQTRVuiusQLNNLe2W9tnzBlV/GvSVcozLl4XZHk5swnRZ/v6jp8TqR8P7sqmJsQqblDZ3EztcWmLDbhRje/+8g==, - } - engines: { node: ">=16" } - - "@edge-runtime/node-utils@2.3.0": - resolution: - { - integrity: sha512-uUtx8BFoO1hNxtHjp3eqVPC/mWImGb2exOfGjMLUoipuWgjej+f4o/VP4bUI8U40gu7Teogd5VTeZUkGvJSPOQ==, - } - engines: { node: ">=16" } - - "@edge-runtime/ponyfill@2.4.2": - resolution: - { - integrity: sha512-oN17GjFr69chu6sDLvXxdhg0Qe8EZviGSuqzR9qOiKh4MhFYGdBBcqRNzdmYeAdeRzOW2mM9yil4RftUQ7sUOA==, - } - engines: { node: ">=16" } - - "@edge-runtime/primitives@4.1.0": - resolution: - { - integrity: sha512-Vw0lbJ2lvRUqc7/soqygUX216Xb8T3WBZ987oywz6aJqRxcwSVWwr9e+Nqo2m9bxobA9mdbWNNoRY6S9eko1EQ==, - } - engines: { node: ">=16" } - - "@edge-runtime/vm@3.2.0": - resolution: - { - integrity: sha512-0dEVyRLM/lG4gp1R/Ik5bfPl/1wX00xFwd5KcNH602tzBa09oF7pbTKETEhR1GjZ75K6OJnYFu8II2dyMhONMw==, - } - engines: { node: ">=16" } - "@emnapi/core@1.4.5": resolution: { @@ -688,13 +647,6 @@ packages: } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - "@fastify/busboy@2.1.1": - resolution: - { - integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==, - } - engines: { node: ">=14" } - "@floating-ui/core@1.7.3": resolution: { @@ -793,6 +745,194 @@ packages: } engines: { node: ">=18.18" } + "@img/sharp-darwin-arm64@0.34.3": + resolution: + { + integrity: sha512-ryFMfvxxpQRsgZJqBd4wsttYQbCxsJksrv9Lw/v798JcQ8+w84mBWuXwl+TT0WJ/WrYOLaYpwQXi3sA9nTIaIg==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + cpu: [arm64] + os: [darwin] + + "@img/sharp-darwin-x64@0.34.3": + resolution: + { + integrity: sha512-yHpJYynROAj12TA6qil58hmPmAwxKKC7reUqtGLzsOHfP7/rniNGTL8tjWX6L3CTV4+5P4ypcS7Pp+7OB+8ihA==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + cpu: [x64] + os: [darwin] + + "@img/sharp-libvips-darwin-arm64@1.2.0": + resolution: + { + integrity: sha512-sBZmpwmxqwlqG9ueWFXtockhsxefaV6O84BMOrhtg/YqbTaRdqDE7hxraVE3y6gVM4eExmfzW4a8el9ArLeEiQ==, + } + cpu: [arm64] + os: [darwin] + + "@img/sharp-libvips-darwin-x64@1.2.0": + resolution: + { + integrity: sha512-M64XVuL94OgiNHa5/m2YvEQI5q2cl9d/wk0qFTDVXcYzi43lxuiFTftMR1tOnFQovVXNZJ5TURSDK2pNe9Yzqg==, + } + cpu: [x64] + os: [darwin] + + "@img/sharp-libvips-linux-arm64@1.2.0": + resolution: + { + integrity: sha512-RXwd0CgG+uPRX5YYrkzKyalt2OJYRiJQ8ED/fi1tq9WQW2jsQIn0tqrlR5l5dr/rjqq6AHAxURhj2DVjyQWSOA==, + } + cpu: [arm64] + os: [linux] + + "@img/sharp-libvips-linux-arm@1.2.0": + resolution: + { + integrity: sha512-mWd2uWvDtL/nvIzThLq3fr2nnGfyr/XMXlq8ZJ9WMR6PXijHlC3ksp0IpuhK6bougvQrchUAfzRLnbsen0Cqvw==, + } + cpu: [arm] + os: [linux] + + "@img/sharp-libvips-linux-ppc64@1.2.0": + resolution: + { + integrity: sha512-Xod/7KaDDHkYu2phxxfeEPXfVXFKx70EAFZ0qyUdOjCcxbjqyJOEUpDe6RIyaunGxT34Anf9ue/wuWOqBW2WcQ==, + } + cpu: [ppc64] + os: [linux] + + "@img/sharp-libvips-linux-s390x@1.2.0": + resolution: + { + integrity: sha512-eMKfzDxLGT8mnmPJTNMcjfO33fLiTDsrMlUVcp6b96ETbnJmd4uvZxVJSKPQfS+odwfVaGifhsB07J1LynFehw==, + } + cpu: [s390x] + os: [linux] + + "@img/sharp-libvips-linux-x64@1.2.0": + resolution: + { + integrity: sha512-ZW3FPWIc7K1sH9E3nxIGB3y3dZkpJlMnkk7z5tu1nSkBoCgw2nSRTFHI5pB/3CQaJM0pdzMF3paf9ckKMSE9Tg==, + } + cpu: [x64] + os: [linux] + + "@img/sharp-libvips-linuxmusl-arm64@1.2.0": + resolution: + { + integrity: sha512-UG+LqQJbf5VJ8NWJ5Z3tdIe/HXjuIdo4JeVNADXBFuG7z9zjoegpzzGIyV5zQKi4zaJjnAd2+g2nna8TZvuW9Q==, + } + cpu: [arm64] + os: [linux] + + "@img/sharp-libvips-linuxmusl-x64@1.2.0": + resolution: + { + integrity: sha512-SRYOLR7CXPgNze8akZwjoGBoN1ThNZoqpOgfnOxmWsklTGVfJiGJoC/Lod7aNMGA1jSsKWM1+HRX43OP6p9+6Q==, + } + cpu: [x64] + os: [linux] + + "@img/sharp-linux-arm64@0.34.3": + resolution: + { + integrity: sha512-QdrKe3EvQrqwkDrtuTIjI0bu6YEJHTgEeqdzI3uWJOH6G1O8Nl1iEeVYRGdj1h5I21CqxSvQp1Yv7xeU3ZewbA==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + cpu: [arm64] + os: [linux] + + "@img/sharp-linux-arm@0.34.3": + resolution: + { + integrity: sha512-oBK9l+h6KBN0i3dC8rYntLiVfW8D8wH+NPNT3O/WBHeW0OQWCjfWksLUaPidsrDKpJgXp3G3/hkmhptAW0I3+A==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + cpu: [arm] + os: [linux] + + "@img/sharp-linux-ppc64@0.34.3": + resolution: + { + integrity: sha512-GLtbLQMCNC5nxuImPR2+RgrviwKwVql28FWZIW1zWruy6zLgA5/x2ZXk3mxj58X/tszVF69KK0Is83V8YgWhLA==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + cpu: [ppc64] + os: [linux] + + "@img/sharp-linux-s390x@0.34.3": + resolution: + { + integrity: sha512-3gahT+A6c4cdc2edhsLHmIOXMb17ltffJlxR0aC2VPZfwKoTGZec6u5GrFgdR7ciJSsHT27BD3TIuGcuRT0KmQ==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + cpu: [s390x] + os: [linux] + + "@img/sharp-linux-x64@0.34.3": + resolution: + { + integrity: sha512-8kYso8d806ypnSq3/Ly0QEw90V5ZoHh10yH0HnrzOCr6DKAPI6QVHvwleqMkVQ0m+fc7EH8ah0BB0QPuWY6zJQ==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + cpu: [x64] + os: [linux] + + "@img/sharp-linuxmusl-arm64@0.34.3": + resolution: + { + integrity: sha512-vAjbHDlr4izEiXM1OTggpCcPg9tn4YriK5vAjowJsHwdBIdx0fYRsURkxLG2RLm9gyBq66gwtWI8Gx0/ov+JKQ==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + cpu: [arm64] + os: [linux] + + "@img/sharp-linuxmusl-x64@0.34.3": + resolution: + { + integrity: sha512-gCWUn9547K5bwvOn9l5XGAEjVTTRji4aPTqLzGXHvIr6bIDZKNTA34seMPgM0WmSf+RYBH411VavCejp3PkOeQ==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + cpu: [x64] + os: [linux] + + "@img/sharp-wasm32@0.34.3": + resolution: + { + integrity: sha512-+CyRcpagHMGteySaWos8IbnXcHgfDn7pO2fiC2slJxvNq9gDipYBN42/RagzctVRKgxATmfqOSulgZv5e1RdMg==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + cpu: [wasm32] + + "@img/sharp-win32-arm64@0.34.3": + resolution: + { + integrity: sha512-MjnHPnbqMXNC2UgeLJtX4XqoVHHlZNd+nPt1kRPmj63wURegwBhZlApELdtxM2OIZDRv/DFtLcNhVbd1z8GYXQ==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + cpu: [arm64] + os: [win32] + + "@img/sharp-win32-ia32@0.34.3": + resolution: + { + integrity: sha512-xuCdhH44WxuXgOM714hn4amodJMZl3OEvf0GVTm0BEyMeA2to+8HEdRPShH0SLYptJY1uBw+SCFP9WVQi1Q/cw==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + cpu: [ia32] + os: [win32] + + "@img/sharp-win32-x64@0.34.3": + resolution: + { + integrity: sha512-OWwz05d++TxzLEv4VnsTz5CmZ6mI6S05sfQGEMrNrQcOEERbX46332IvE7pO/EUiw7jUrrS40z/M7kPyjfl04g==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + cpu: [x64] + os: [win32] + "@internationalized/date@3.8.2": resolution: { @@ -995,6 +1135,12 @@ packages: } engines: { node: ">=6.0.0" } + "@jridgewell/source-map@0.3.11": + resolution: + { + integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==, + } + "@jridgewell/sourcemap-codec@1.5.5": resolution: { @@ -1007,113 +1153,103 @@ packages: integrity: sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==, } + "@jridgewell/trace-mapping@0.3.31": + resolution: + { + integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==, + } + "@jridgewell/trace-mapping@0.3.9": resolution: { integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==, } - "@mapbox/node-pre-gyp@1.0.11": - resolution: - { - integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==, - } - hasBin: true - "@napi-rs/wasm-runtime@0.2.12": resolution: { integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==, } - "@next/env@14.2.31": + "@next/env@15.5.3": resolution: { - integrity: sha512-X8VxxYL6VuezrG82h0pUA1V+DuTSJp7Nv15bxq3ivrFqZLjx81rfeHMWOE9T0jm1n3DtHGv8gdn6B0T0kr0D3Q==, + integrity: sha512-RSEDTRqyihYXygx/OJXwvVupfr9m04+0vH8vyy0HfZ7keRto6VX9BbEk0J2PUk0VGy6YhklJUSrgForov5F9pw==, } - "@next/eslint-plugin-next@14.2.31": + "@next/eslint-plugin-next@15.5.3": resolution: { - integrity: sha512-ouaB+l8Cr/uzGxoGHUvd01OnfFTM8qM81Crw1AG0xoWDRN0DKLXyTWVe0FdAOHVBpGuXB87aufdRmrwzZDArIw==, + integrity: sha512-SdhaKdko6dpsSr0DldkESItVrnPYB1NS2NpShCSX5lc7SSQmLZt5Mug6t2xbiuVWEVDLZSuIAoQyYVBYp0dR5g==, } - "@next/swc-darwin-arm64@14.2.31": + "@next/swc-darwin-arm64@15.5.3": resolution: { - integrity: sha512-dTHKfaFO/xMJ3kzhXYgf64VtV6MMwDs2viedDOdP+ezd0zWMOQZkxcwOfdcQeQCpouTr9b+xOqMCUXxgLizl8Q==, + integrity: sha512-nzbHQo69+au9wJkGKTU9lP7PXv0d1J5ljFpvb+LnEomLtSbJkbZyEs6sbF3plQmiOB2l9OBtN2tNSvCH1nQ9Jg==, } engines: { node: ">= 10" } cpu: [arm64] os: [darwin] - "@next/swc-darwin-x64@14.2.31": + "@next/swc-darwin-x64@15.5.3": resolution: { - integrity: sha512-iSavebQgeMukUAfjfW8Fi2Iz01t95yxRl2w2wCzjD91h5In9la99QIDKcKSYPfqLjCgwz3JpIWxLG6LM/sxL4g==, + integrity: sha512-w83w4SkOOhekJOcA5HBvHyGzgV1W/XvOfpkrxIse4uPWhYTTRwtGEM4v/jiXwNSJvfRvah0H8/uTLBKRXlef8g==, } engines: { node: ">= 10" } cpu: [x64] os: [darwin] - "@next/swc-linux-arm64-gnu@14.2.31": + "@next/swc-linux-arm64-gnu@15.5.3": resolution: { - integrity: sha512-XJb3/LURg1u1SdQoopG6jDL2otxGKChH2UYnUTcby4izjM0il7ylBY5TIA7myhvHj9lG5pn9F2nR2s3i8X9awQ==, + integrity: sha512-+m7pfIs0/yvgVu26ieaKrifV8C8yiLe7jVp9SpcIzg7XmyyNE7toC1fy5IOQozmr6kWl/JONC51osih2RyoXRw==, } engines: { node: ">= 10" } cpu: [arm64] os: [linux] - "@next/swc-linux-arm64-musl@14.2.31": + "@next/swc-linux-arm64-musl@15.5.3": resolution: { - integrity: sha512-IInDAcchNCu3BzocdqdCv1bKCmUVO/bKJHnBFTeq3svfaWpOPewaLJ2Lu3GL4yV76c/86ZvpBbG/JJ1lVIs5MA==, + integrity: sha512-u3PEIzuguSenoZviZJahNLgCexGFhso5mxWCrrIMdvpZn6lkME5vc/ADZG8UUk5K1uWRy4hqSFECrON6UKQBbQ==, } engines: { node: ">= 10" } cpu: [arm64] os: [linux] - "@next/swc-linux-x64-gnu@14.2.31": + "@next/swc-linux-x64-gnu@15.5.3": resolution: { - integrity: sha512-YTChJL5/9e4NXPKW+OJzsQa42RiWUNbE+k+ReHvA+lwXk+bvzTsVQboNcezWOuCD+p/J+ntxKOB/81o0MenBhw==, + integrity: sha512-lDtOOScYDZxI2BENN9m0pfVPJDSuUkAD1YXSvlJF0DKwZt0WlA7T7o3wrcEr4Q+iHYGzEaVuZcsIbCps4K27sA==, } engines: { node: ">= 10" } cpu: [x64] os: [linux] - "@next/swc-linux-x64-musl@14.2.31": + "@next/swc-linux-x64-musl@15.5.3": resolution: { - integrity: sha512-A0JmD1y4q/9ufOGEAhoa60Sof++X10PEoiWOH0gZ2isufWZeV03NnyRlRmJpRQWGIbRkJUmBo9I3Qz5C10vx4w==, + integrity: sha512-9vWVUnsx9PrY2NwdVRJ4dUURAQ8Su0sLRPqcCCxtX5zIQUBES12eRVHq6b70bbfaVaxIDGJN2afHui0eDm+cLg==, } engines: { node: ">= 10" } cpu: [x64] os: [linux] - "@next/swc-win32-arm64-msvc@14.2.31": + "@next/swc-win32-arm64-msvc@15.5.3": resolution: { - integrity: sha512-nowJ5GbMeDOMzbTm29YqrdrD6lTM8qn2wnZfGpYMY7SZODYYpaJHH1FJXE1l1zWICHR+WfIMytlTDBHu10jb8A==, + integrity: sha512-1CU20FZzY9LFQigRi6jM45oJMU3KziA5/sSG+dXeVaTm661snQP6xu3ykGxxwU5sLG3sh14teO/IOEPVsQMRfA==, } engines: { node: ">= 10" } cpu: [arm64] os: [win32] - "@next/swc-win32-ia32-msvc@14.2.31": + "@next/swc-win32-x64-msvc@15.5.3": resolution: { - integrity: sha512-pk9Bu4K0015anTS1OS9d/SpS0UtRObC+xe93fwnm7Gvqbv/W1ZbzhK4nvc96RURIQOux3P/bBH316xz8wjGSsA==, - } - engines: { node: ">= 10" } - cpu: [ia32] - os: [win32] - - "@next/swc-win32-x64-msvc@14.2.31": - resolution: - { - integrity: sha512-LwFZd4JFnMHGceItR9+jtlMm8lGLU/IPkgjBBgYmdYSfalbHCiDpjMYtgDQ2wtwiAOSJOCyFI4m8PikrsDyA6Q==, + integrity: sha512-JMoLAq3n3y5tKXPQwCK5c+6tmwkuFDa2XAxz8Wm4+IVthdBZdZGh+lmiLUHg9f9IDwIQpUjp+ysd6OkYTyZRZw==, } engines: { node: ">= 10" } cpu: [x64] @@ -1147,6 +1283,327 @@ packages: } engines: { node: ">=12.4.0" } + "@opentelemetry/api-logs@0.203.0": + resolution: + { + integrity: sha512-9B9RU0H7Ya1Dx/Rkyc4stuBZSGVQF27WigitInx2QQoj6KUpEFYPKoWjdFTunJYxmXmh17HeBvbMa1EhGyPmqQ==, + } + engines: { node: ">=8.0.0" } + + "@opentelemetry/api-logs@0.204.0": + resolution: + { + integrity: sha512-DqxY8yoAaiBPivoJD4UtgrMS8gEmzZ5lnaxzPojzLVHBGqPxgWm4zcuvcUHZiqQ6kRX2Klel2r9y8cA2HAtqpw==, + } + engines: { node: ">=8.0.0" } + + "@opentelemetry/api-logs@0.57.2": + resolution: + { + integrity: sha512-uIX52NnTM0iBh84MShlpouI7UKqkZ7MrUszTmaypHBu4r7NofznSnQRfJ+uUeDtQDj6w8eFGg5KBLDAwAPz1+A==, + } + engines: { node: ">=14" } + + "@opentelemetry/api@1.9.0": + resolution: + { + integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==, + } + engines: { node: ">=8.0.0" } + + "@opentelemetry/context-async-hooks@2.1.0": + resolution: + { + integrity: sha512-zOyetmZppnwTyPrt4S7jMfXiSX9yyfF0hxlA8B5oo2TtKl+/RGCy7fi4DrBfIf3lCPrkKsRBWZZD7RFojK7FDg==, + } + engines: { node: ^18.19.0 || >=20.6.0 } + peerDependencies: + "@opentelemetry/api": ">=1.0.0 <1.10.0" + + "@opentelemetry/core@2.0.1": + resolution: + { + integrity: sha512-MaZk9SJIDgo1peKevlbhP6+IwIiNPNmswNL4AF0WaQJLbHXjr9SrZMgS12+iqr9ToV4ZVosCcc0f8Rg67LXjxw==, + } + engines: { node: ^18.19.0 || >=20.6.0 } + peerDependencies: + "@opentelemetry/api": ">=1.0.0 <1.10.0" + + "@opentelemetry/core@2.1.0": + resolution: + { + integrity: sha512-RMEtHsxJs/GiHHxYT58IY57UXAQTuUnZVco6ymDEqTNlJKTimM4qPUPVe8InNFyBjhHBEAx4k3Q8LtNayBsbUQ==, + } + engines: { node: ^18.19.0 || >=20.6.0 } + peerDependencies: + "@opentelemetry/api": ">=1.0.0 <1.10.0" + + "@opentelemetry/instrumentation-amqplib@0.50.0": + resolution: + { + integrity: sha512-kwNs/itehHG/qaQBcVrLNcvXVPW0I4FCOVtw3LHMLdYIqD7GJ6Yv2nX+a4YHjzbzIeRYj8iyMp0Bl7tlkidq5w==, + } + engines: { node: ^18.19.0 || >=20.6.0 } + peerDependencies: + "@opentelemetry/api": ^1.3.0 + + "@opentelemetry/instrumentation-connect@0.47.0": + resolution: + { + integrity: sha512-pjenvjR6+PMRb6/4X85L4OtkQCootgb/Jzh/l/Utu3SJHBid1F+gk9sTGU2FWuhhEfV6P7MZ7BmCdHXQjgJ42g==, + } + engines: { node: ^18.19.0 || >=20.6.0 } + peerDependencies: + "@opentelemetry/api": ^1.3.0 + + "@opentelemetry/instrumentation-dataloader@0.21.1": + resolution: + { + integrity: sha512-hNAm/bwGawLM8VDjKR0ZUDJ/D/qKR3s6lA5NV+btNaPVm2acqhPcT47l2uCVi+70lng2mywfQncor9v8/ykuyw==, + } + engines: { node: ^18.19.0 || >=20.6.0 } + peerDependencies: + "@opentelemetry/api": ^1.3.0 + + "@opentelemetry/instrumentation-express@0.52.0": + resolution: + { + integrity: sha512-W7pizN0Wh1/cbNhhTf7C62NpyYw7VfCFTYg0DYieSTrtPBT1vmoSZei19wfKLnrMsz3sHayCg0HxCVL2c+cz5w==, + } + engines: { node: ^18.19.0 || >=20.6.0 } + peerDependencies: + "@opentelemetry/api": ^1.3.0 + + "@opentelemetry/instrumentation-fs@0.23.0": + resolution: + { + integrity: sha512-Puan+QopWHA/KNYvDfOZN6M/JtF6buXEyD934vrb8WhsX1/FuM7OtoMlQyIqAadnE8FqqDL4KDPiEfCQH6pQcQ==, + } + engines: { node: ^18.19.0 || >=20.6.0 } + peerDependencies: + "@opentelemetry/api": ^1.3.0 + + "@opentelemetry/instrumentation-generic-pool@0.47.0": + resolution: + { + integrity: sha512-UfHqf3zYK+CwDwEtTjaD12uUqGGTswZ7ofLBEdQ4sEJp9GHSSJMQ2hT3pgBxyKADzUdoxQAv/7NqvL42ZI+Qbw==, + } + engines: { node: ^18.19.0 || >=20.6.0 } + peerDependencies: + "@opentelemetry/api": ^1.3.0 + + "@opentelemetry/instrumentation-graphql@0.51.0": + resolution: + { + integrity: sha512-LchkOu9X5DrXAnPI1+Z06h/EH/zC7D6sA86hhPrk3evLlsJTz0grPrkL/yUJM9Ty0CL/y2HSvmWQCjbJEz/ADg==, + } + engines: { node: ^18.19.0 || >=20.6.0 } + peerDependencies: + "@opentelemetry/api": ^1.3.0 + + "@opentelemetry/instrumentation-hapi@0.50.0": + resolution: + { + integrity: sha512-5xGusXOFQXKacrZmDbpHQzqYD1gIkrMWuwvlrEPkYOsjUqGUjl1HbxCsn5Y9bUXOCgP1Lj6A4PcKt1UiJ2MujA==, + } + engines: { node: ^18.19.0 || >=20.6.0 } + peerDependencies: + "@opentelemetry/api": ^1.3.0 + + "@opentelemetry/instrumentation-http@0.203.0": + resolution: + { + integrity: sha512-y3uQAcCOAwnO6vEuNVocmpVzG3PER6/YZqbPbbffDdJ9te5NkHEkfSMNzlC3+v7KlE+WinPGc3N7MR30G1HY2g==, + } + engines: { node: ^18.19.0 || >=20.6.0 } + peerDependencies: + "@opentelemetry/api": ^1.3.0 + + "@opentelemetry/instrumentation-ioredis@0.52.0": + resolution: + { + integrity: sha512-rUvlyZwI90HRQPYicxpDGhT8setMrlHKokCtBtZgYxQWRF5RBbG4q0pGtbZvd7kyseuHbFpA3I/5z7M8b/5ywg==, + } + engines: { node: ^18.19.0 || >=20.6.0 } + peerDependencies: + "@opentelemetry/api": ^1.3.0 + + "@opentelemetry/instrumentation-kafkajs@0.13.0": + resolution: + { + integrity: sha512-FPQyJsREOaGH64hcxlzTsIEQC4DYANgTwHjiB7z9lldmvua1LRMVn3/FfBlzXoqF179B0VGYviz6rn75E9wsDw==, + } + engines: { node: ^18.19.0 || >=20.6.0 } + peerDependencies: + "@opentelemetry/api": ^1.3.0 + + "@opentelemetry/instrumentation-knex@0.48.0": + resolution: + { + integrity: sha512-V5wuaBPv/lwGxuHjC6Na2JFRjtPgstw19jTFl1B1b6zvaX8zVDYUDaR5hL7glnQtUSCMktPttQsgK4dhXpddcA==, + } + engines: { node: ^18.19.0 || >=20.6.0 } + peerDependencies: + "@opentelemetry/api": ^1.3.0 + + "@opentelemetry/instrumentation-koa@0.51.0": + resolution: + { + integrity: sha512-XNLWeMTMG1/EkQBbgPYzCeBD0cwOrfnn8ao4hWgLv0fNCFQu1kCsJYygz2cvKuCs340RlnG4i321hX7R8gj3Rg==, + } + engines: { node: ^18.19.0 || >=20.6.0 } + peerDependencies: + "@opentelemetry/api": ^1.3.0 + + "@opentelemetry/instrumentation-lru-memoizer@0.48.0": + resolution: + { + integrity: sha512-KUW29wfMlTPX1wFz+NNrmE7IzN7NWZDrmFWHM/VJcmFEuQGnnBuTIdsP55CnBDxKgQ/qqYFp4udQFNtjeFosPw==, + } + engines: { node: ^18.19.0 || >=20.6.0 } + peerDependencies: + "@opentelemetry/api": ^1.3.0 + + "@opentelemetry/instrumentation-mongodb@0.56.0": + resolution: + { + integrity: sha512-YG5IXUUmxX3Md2buVMvxm9NWlKADrnavI36hbJsihqqvBGsWnIfguf0rUP5Srr0pfPqhQjUP+agLMsvu0GmUpA==, + } + engines: { node: ^18.19.0 || >=20.6.0 } + peerDependencies: + "@opentelemetry/api": ^1.3.0 + + "@opentelemetry/instrumentation-mongoose@0.50.0": + resolution: + { + integrity: sha512-Am8pk1Ct951r4qCiqkBcGmPIgGhoDiFcRtqPSLbJrUZqEPUsigjtMjoWDRLG1Ki1NHgOF7D0H7d+suWz1AAizw==, + } + engines: { node: ^18.19.0 || >=20.6.0 } + peerDependencies: + "@opentelemetry/api": ^1.3.0 + + "@opentelemetry/instrumentation-mysql2@0.50.0": + resolution: + { + integrity: sha512-PoOMpmq73rOIE3nlTNLf3B1SyNYGsp7QXHYKmeTZZnJ2Ou7/fdURuOhWOI0e6QZ5gSem18IR1sJi6GOULBQJ9g==, + } + engines: { node: ^18.19.0 || >=20.6.0 } + peerDependencies: + "@opentelemetry/api": ^1.3.0 + + "@opentelemetry/instrumentation-mysql@0.49.0": + resolution: + { + integrity: sha512-QU9IUNqNsrlfE3dJkZnFHqLjlndiU39ll/YAAEvWE40sGOCi9AtOF6rmEGzJ1IswoZ3oyePV7q2MP8SrhJfVAA==, + } + engines: { node: ^18.19.0 || >=20.6.0 } + peerDependencies: + "@opentelemetry/api": ^1.3.0 + + "@opentelemetry/instrumentation-pg@0.55.0": + resolution: + { + integrity: sha512-yfJ5bYE7CnkW/uNsnrwouG/FR7nmg09zdk2MSs7k0ZOMkDDAE3WBGpVFFApGgNu2U+gtzLgEzOQG4I/X+60hXw==, + } + engines: { node: ^18.19.0 || >=20.6.0 } + peerDependencies: + "@opentelemetry/api": ^1.3.0 + + "@opentelemetry/instrumentation-redis@0.51.0": + resolution: + { + integrity: sha512-uL/GtBA0u72YPPehwOvthAe+Wf8k3T+XQPBssJmTYl6fzuZjNq8zTfxVFhl9nRFjFVEe+CtiYNT0Q3AyqW1Z0A==, + } + engines: { node: ^18.19.0 || >=20.6.0 } + peerDependencies: + "@opentelemetry/api": ^1.3.0 + + "@opentelemetry/instrumentation-tedious@0.22.0": + resolution: + { + integrity: sha512-XrrNSUCyEjH1ax9t+Uo6lv0S2FCCykcF7hSxBMxKf7Xn0bPRxD3KyFUZy25aQXzbbbUHhtdxj3r2h88SfEM3aA==, + } + engines: { node: ^18.19.0 || >=20.6.0 } + peerDependencies: + "@opentelemetry/api": ^1.3.0 + + "@opentelemetry/instrumentation-undici@0.14.0": + resolution: + { + integrity: sha512-2HN+7ztxAReXuxzrtA3WboAKlfP5OsPA57KQn2AdYZbJ3zeRPcLXyW4uO/jpLE6PLm0QRtmeGCmfYpqRlwgSwg==, + } + engines: { node: ^18.19.0 || >=20.6.0 } + peerDependencies: + "@opentelemetry/api": ^1.7.0 + + "@opentelemetry/instrumentation@0.203.0": + resolution: + { + integrity: sha512-ke1qyM+3AK2zPuBPb6Hk/GCsc5ewbLvPNkEuELx/JmANeEp6ZjnZ+wypPAJSucTw0wvCGrUaibDSdcrGFoWxKQ==, + } + engines: { node: ^18.19.0 || >=20.6.0 } + peerDependencies: + "@opentelemetry/api": ^1.3.0 + + "@opentelemetry/instrumentation@0.204.0": + resolution: + { + integrity: sha512-vV5+WSxktzoMP8JoYWKeopChy6G3HKk4UQ2hESCRDUUTZqQ3+nM3u8noVG0LmNfRWwcFBnbZ71GKC7vaYYdJ1g==, + } + engines: { node: ^18.19.0 || >=20.6.0 } + peerDependencies: + "@opentelemetry/api": ^1.3.0 + + "@opentelemetry/instrumentation@0.57.2": + resolution: + { + integrity: sha512-BdBGhQBh8IjZ2oIIX6F2/Q3LKm/FDDKi6ccYKcBTeilh6SNdNKveDOLk73BkSJjQLJk6qe4Yh+hHw1UPhCDdrg==, + } + engines: { node: ">=14" } + peerDependencies: + "@opentelemetry/api": ^1.3.0 + + "@opentelemetry/redis-common@0.38.0": + resolution: + { + integrity: sha512-4Wc0AWURII2cfXVVoZ6vDqK+s5n4K5IssdrlVrvGsx6OEOKdghKtJZqXAHWFiZv4nTDLH2/2fldjIHY8clMOjQ==, + } + engines: { node: ^18.19.0 || >=20.6.0 } + + "@opentelemetry/resources@2.1.0": + resolution: + { + integrity: sha512-1CJjf3LCvoefUOgegxi8h6r4B/wLSzInyhGP2UmIBYNlo4Qk5CZ73e1eEyWmfXvFtm1ybkmfb2DqWvspsYLrWw==, + } + engines: { node: ^18.19.0 || >=20.6.0 } + peerDependencies: + "@opentelemetry/api": ">=1.3.0 <1.10.0" + + "@opentelemetry/sdk-trace-base@2.1.0": + resolution: + { + integrity: sha512-uTX9FBlVQm4S2gVQO1sb5qyBLq/FPjbp+tmGoxu4tIgtYGmBYB44+KX/725RFDe30yBSaA9Ml9fqphe1hbUyLQ==, + } + engines: { node: ^18.19.0 || >=20.6.0 } + peerDependencies: + "@opentelemetry/api": ">=1.3.0 <1.10.0" + + "@opentelemetry/semantic-conventions@1.37.0": + resolution: + { + integrity: sha512-JD6DerIKdJGmRp4jQyX5FlrQjA4tjOw1cvfsPAZXfOOEErMUHjPcPSICS+6WnM0nB0efSFARh0KAZss+bvExOA==, + } + engines: { node: ">=14" } + + "@opentelemetry/sql-common@0.41.0": + resolution: + { + integrity: sha512-pmzXctVbEERbqSfiAgdes9Y63xjoOyXcD7B6IXBkVb+vbM7M9U98mn33nGXxPf4dfYR0M+vhcKRZmbSJ7HfqFA==, + } + engines: { node: ^18.19.0 || >=20.6.0 } + peerDependencies: + "@opentelemetry/api": ^1.1.0 + "@pandacss/is-valid-prop@0.54.0": resolution: { @@ -1297,6 +1754,14 @@ packages: } engines: { node: ^12.20.0 || ^14.18.0 || >=16.0.0 } + "@prisma/instrumentation@6.14.0": + resolution: + { + integrity: sha512-Po/Hry5bAeunRDq0yAQueKookW3glpP+qjjvvyOfm6dI2KG5/Y6Bgg3ahyWd7B0u2E+Wf9xRk2rtdda7ySgK1A==, + } + peerDependencies: + "@opentelemetry/api": ^1.8 + "@radix-ui/primitive@1.1.3": resolution: { @@ -1614,25 +2079,18 @@ packages: react-redux: optional: true - "@rollup/plugin-commonjs@24.0.0": + "@rollup/plugin-commonjs@28.0.1": resolution: { - integrity: sha512-0w0wyykzdyRRPHOb0cQt14mIBLujfAv6GgP6g8nvg/iBxEm112t3YPPq+Buqe2+imvElTka+bjNlJ/gB56TD8g==, + integrity: sha512-+tNWdlWKbpB3WgBN7ijjYkq9X5uhjmcvyjEght4NmH5fAU++zfQzAJ6wumLS+dNcvwEZhKx2Z+skY8m7v0wGSA==, } - engines: { node: ">=14.0.0" } + engines: { node: ">=16.0.0 || 14 >= 14.17" } peerDependencies: - rollup: ^2.68.0||^3.0.0 + rollup: ^2.68.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true - "@rollup/pluginutils@4.2.1": - resolution: - { - integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==, - } - engines: { node: ">= 8.0.0" } - "@rollup/pluginutils@5.2.0": resolution: { @@ -1645,6 +2103,174 @@ packages: rollup: optional: true + "@rollup/rollup-android-arm-eabi@4.50.1": + resolution: + { + integrity: sha512-HJXwzoZN4eYTdD8bVV22DN8gsPCAj3V20NHKOs8ezfXanGpmVPR7kalUHd+Y31IJp9stdB87VKPFbsGY3H/2ag==, + } + cpu: [arm] + os: [android] + + "@rollup/rollup-android-arm64@4.50.1": + resolution: + { + integrity: sha512-PZlsJVcjHfcH53mOImyt3bc97Ep3FJDXRpk9sMdGX0qgLmY0EIWxCag6EigerGhLVuL8lDVYNnSo8qnTElO4xw==, + } + cpu: [arm64] + os: [android] + + "@rollup/rollup-darwin-arm64@4.50.1": + resolution: + { + integrity: sha512-xc6i2AuWh++oGi4ylOFPmzJOEeAa2lJeGUGb4MudOtgfyyjr4UPNK+eEWTPLvmPJIY/pgw6ssFIox23SyrkkJw==, + } + cpu: [arm64] + os: [darwin] + + "@rollup/rollup-darwin-x64@4.50.1": + resolution: + { + integrity: sha512-2ofU89lEpDYhdLAbRdeyz/kX3Y2lpYc6ShRnDjY35bZhd2ipuDMDi6ZTQ9NIag94K28nFMofdnKeHR7BT0CATw==, + } + cpu: [x64] + os: [darwin] + + "@rollup/rollup-freebsd-arm64@4.50.1": + resolution: + { + integrity: sha512-wOsE6H2u6PxsHY/BeFHA4VGQN3KUJFZp7QJBmDYI983fgxq5Th8FDkVuERb2l9vDMs1D5XhOrhBrnqcEY6l8ZA==, + } + cpu: [arm64] + os: [freebsd] + + "@rollup/rollup-freebsd-x64@4.50.1": + resolution: + { + integrity: sha512-A/xeqaHTlKbQggxCqispFAcNjycpUEHP52mwMQZUNqDUJFFYtPHCXS1VAG29uMlDzIVr+i00tSFWFLivMcoIBQ==, + } + cpu: [x64] + os: [freebsd] + + "@rollup/rollup-linux-arm-gnueabihf@4.50.1": + resolution: + { + integrity: sha512-54v4okehwl5TaSIkpp97rAHGp7t3ghinRd/vyC1iXqXMfjYUTm7TfYmCzXDoHUPTTf36L8pr0E7YsD3CfB3ZDg==, + } + cpu: [arm] + os: [linux] + + "@rollup/rollup-linux-arm-musleabihf@4.50.1": + resolution: + { + integrity: sha512-p/LaFyajPN/0PUHjv8TNyxLiA7RwmDoVY3flXHPSzqrGcIp/c2FjwPPP5++u87DGHtw+5kSH5bCJz0mvXngYxw==, + } + cpu: [arm] + os: [linux] + + "@rollup/rollup-linux-arm64-gnu@4.50.1": + resolution: + { + integrity: sha512-2AbMhFFkTo6Ptna1zO7kAXXDLi7H9fGTbVaIq2AAYO7yzcAsuTNWPHhb2aTA6GPiP+JXh85Y8CiS54iZoj4opw==, + } + cpu: [arm64] + os: [linux] + + "@rollup/rollup-linux-arm64-musl@4.50.1": + resolution: + { + integrity: sha512-Cgef+5aZwuvesQNw9eX7g19FfKX5/pQRIyhoXLCiBOrWopjo7ycfB292TX9MDcDijiuIJlx1IzJz3IoCPfqs9w==, + } + cpu: [arm64] + os: [linux] + + "@rollup/rollup-linux-loongarch64-gnu@4.50.1": + resolution: + { + integrity: sha512-RPhTwWMzpYYrHrJAS7CmpdtHNKtt2Ueo+BlLBjfZEhYBhK00OsEqM08/7f+eohiF6poe0YRDDd8nAvwtE/Y62Q==, + } + cpu: [loong64] + os: [linux] + + "@rollup/rollup-linux-ppc64-gnu@4.50.1": + resolution: + { + integrity: sha512-eSGMVQw9iekut62O7eBdbiccRguuDgiPMsw++BVUg+1K7WjZXHOg/YOT9SWMzPZA+w98G+Fa1VqJgHZOHHnY0Q==, + } + cpu: [ppc64] + os: [linux] + + "@rollup/rollup-linux-riscv64-gnu@4.50.1": + resolution: + { + integrity: sha512-S208ojx8a4ciIPrLgazF6AgdcNJzQE4+S9rsmOmDJkusvctii+ZvEuIC4v/xFqzbuP8yDjn73oBlNDgF6YGSXQ==, + } + cpu: [riscv64] + os: [linux] + + "@rollup/rollup-linux-riscv64-musl@4.50.1": + resolution: + { + integrity: sha512-3Ag8Ls1ggqkGUvSZWYcdgFwriy2lWo+0QlYgEFra/5JGtAd6C5Hw59oojx1DeqcA2Wds2ayRgvJ4qxVTzCHgzg==, + } + cpu: [riscv64] + os: [linux] + + "@rollup/rollup-linux-s390x-gnu@4.50.1": + resolution: + { + integrity: sha512-t9YrKfaxCYe7l7ldFERE1BRg/4TATxIg+YieHQ966jwvo7ddHJxPj9cNFWLAzhkVsbBvNA4qTbPVNsZKBO4NSg==, + } + cpu: [s390x] + os: [linux] + + "@rollup/rollup-linux-x64-gnu@4.50.1": + resolution: + { + integrity: sha512-MCgtFB2+SVNuQmmjHf+wfI4CMxy3Tk8XjA5Z//A0AKD7QXUYFMQcns91K6dEHBvZPCnhJSyDWLApk40Iq/H3tA==, + } + cpu: [x64] + os: [linux] + + "@rollup/rollup-linux-x64-musl@4.50.1": + resolution: + { + integrity: sha512-nEvqG+0jeRmqaUMuwzlfMKwcIVffy/9KGbAGyoa26iu6eSngAYQ512bMXuqqPrlTyfqdlB9FVINs93j534UJrg==, + } + cpu: [x64] + os: [linux] + + "@rollup/rollup-openharmony-arm64@4.50.1": + resolution: + { + integrity: sha512-RDsLm+phmT3MJd9SNxA9MNuEAO/J2fhW8GXk62G/B4G7sLVumNFbRwDL6v5NrESb48k+QMqdGbHgEtfU0LCpbA==, + } + cpu: [arm64] + os: [openharmony] + + "@rollup/rollup-win32-arm64-msvc@4.50.1": + resolution: + { + integrity: sha512-hpZB/TImk2FlAFAIsoElM3tLzq57uxnGYwplg6WDyAxbYczSi8O2eQ+H2Lx74504rwKtZ3N2g4bCUkiamzS6TQ==, + } + cpu: [arm64] + os: [win32] + + "@rollup/rollup-win32-ia32-msvc@4.50.1": + resolution: + { + integrity: sha512-SXjv8JlbzKM0fTJidX4eVsH+Wmnp0/WcD8gJxIZyR6Gay5Qcsmdbi9zVtnbkGPG8v2vMR1AD06lGWy5FLMcG7A==, + } + cpu: [ia32] + os: [win32] + + "@rollup/rollup-win32-x64-msvc@4.50.1": + resolution: + { + integrity: sha512-StxAO/8ts62KZVRAm4JZYq9+NqNsV7RvimNK+YM7ry//zebEH6meuugqW/P5OFUCjyQgui+9fUxT6d5NShvMvA==, + } + cpu: [x64] + os: [win32] + "@rtsao/scc@1.1.0": resolution: { @@ -1657,126 +2283,209 @@ packages: integrity: sha512-5EwMtOqvJMMa3HbmxLlF74e+3/HhwBTMcvt3nqVJgGCozO6hzIPOBlwm8mGVNR9SN2IJpxSnlxczyDjcn7qIyw==, } - "@sentry-internal/feedback@7.120.4": + "@sentry-internal/browser-utils@10.11.0": resolution: { - integrity: sha512-eSwgvTdrh03zYYaI6UVOjI9p4VmKg6+c2+CBQfRZX++6wwnCVsNv7XF7WUIpVGBAkJ0N2oapjQmCzJKGKBRWQg==, + integrity: sha512-fnMlz5ntap6x4vRsLOHwPqXh7t82StgAiRt+EaqcMX0t9l8C0w0df8qwrONKXvE5GdHWTNFJj5qR15FERSkg3Q==, } - engines: { node: ">=12" } + engines: { node: ">=18" } - "@sentry-internal/replay-canvas@7.120.4": + "@sentry-internal/feedback@10.11.0": resolution: { - integrity: sha512-2+W4CgUL1VzrPjArbTid4WhKh7HH21vREVilZdvffQPVwOEpgNTPAb69loQuTlhJVveh9hWTj2nE5UXLbLP+AA==, + integrity: sha512-ADey51IIaa29kepb8B7aSgSGSrcyT7QZdRsN1rhitefzrruHzpSUci5c2EPIvmWfKJq8Wnvukm9BHXZXAAIOzA==, } - engines: { node: ">=12" } + engines: { node: ">=18" } - "@sentry-internal/tracing@7.120.4": + "@sentry-internal/replay-canvas@10.11.0": resolution: { - integrity: sha512-Fz5+4XCg3akeoFK+K7g+d7HqGMjmnLoY2eJlpONJmaeT9pXY7yfUyXKZMmMajdE2LxxKJgQ2YKvSCaGVamTjHw==, + integrity: sha512-brWQ90IYQyZr44IpTprlmvbtz4l2ABzLdpP94Egh12Onf/q6n4CjLKaA25N5kX0uggHqX1Rs7dNaG0mP3ETHhA==, } - engines: { node: ">=8" } + engines: { node: ">=18" } - "@sentry/browser@7.120.4": + "@sentry-internal/replay@10.11.0": resolution: { - integrity: sha512-ymlNtIPG6HAKzM/JXpWVGCzCNufZNADfy+O/olZuVJW5Be1DtOFyRnBvz0LeKbmxJbXb2lX/XMhuen6PXPdoQw==, + integrity: sha512-t4M2bxMp2rKGK/l7bkVWjN+xVw9H9V12jAeXmO/Fskz2RcG1ZNLQnKSx/W/zCRMk8k7xOQFsfiApq+zDN+ziKA==, } - engines: { node: ">=8" } + engines: { node: ">=18" } - "@sentry/cli@1.77.3": + "@sentry/babel-plugin-component-annotate@4.3.0": resolution: { - integrity: sha512-c3eDqcDRmy4TFz2bFU5Y6QatlpoBPPa8cxBooaS4aMQpnIdLYPF1xhyyiW0LQlDUNc3rRjNF7oN5qKoaRoMTQQ==, + integrity: sha512-OuxqBprXRyhe8Pkfyz/4yHQJc5c3lm+TmYWSSx8u48g5yKewSQDOxkiLU5pAk3WnbLPy8XwU/PN+2BG0YFU9Nw==, } - engines: { node: ">= 8" } + engines: { node: ">= 14" } + + "@sentry/browser@10.11.0": + resolution: + { + integrity: sha512-qemaKCJKJHHCyGBpdLq23xL5u9Xvir20XN7YFTnHcEq4Jvj0GoWsslxKi5cQB2JvpYn62WxTiDgVLeQlleZhSg==, + } + engines: { node: ">=18" } + + "@sentry/bundler-plugin-core@4.3.0": + resolution: + { + integrity: sha512-dmR4DJhJ4jqVWGWppuTL2blNFqOZZnt4aLkewbD1myFG3KVfUx8CrMQWEmGjkgPOtj5TO6xH9PyTJjXC6o5tnA==, + } + engines: { node: ">= 14" } + + "@sentry/cli-darwin@2.53.0": + resolution: + { + integrity: sha512-NNPfpILMwKgpHiyJubHHuauMKltkrgLQ5tvMdxNpxY60jBNdo5VJtpESp4XmXlnidzV4j1z61V4ozU6ttDgt5Q==, + } + engines: { node: ">=10" } + os: [darwin] + + "@sentry/cli-linux-arm64@2.53.0": + resolution: + { + integrity: sha512-xY/CZ1dVazsSCvTXzKpAgXaRqfljVfdrFaYZRUaRPf1ZJRGa3dcrivoOhSIeG/p5NdYtMvslMPY9Gm2MT0M83A==, + } + engines: { node: ">=10" } + cpu: [arm64] + os: [linux, freebsd, android] + + "@sentry/cli-linux-arm@2.53.0": + resolution: + { + integrity: sha512-NdRzQ15Ht83qG0/Lyu11ciy/Hu/oXbbtJUgwzACc7bWvHQA8xEwTsehWexqn1529Kfc5EjuZ0Wmj3MHmp+jOWw==, + } + engines: { node: ">=10" } + cpu: [arm] + os: [linux, freebsd, android] + + "@sentry/cli-linux-i686@2.53.0": + resolution: + { + integrity: sha512-0REmBibGAB4jtqt9S6JEsFF4QybzcXHPcHtJjgMi5T0ueh952uG9wLzjSxQErCsxTKF+fL8oG0Oz5yKBuCwCCQ==, + } + engines: { node: ">=10" } + cpu: [x86, ia32] + os: [linux, freebsd, android] + + "@sentry/cli-linux-x64@2.53.0": + resolution: + { + integrity: sha512-9UGJL+Vy5N/YL1EWPZ/dyXLkShlNaDNrzxx4G7mTS9ywjg+BIuemo6rnN7w43K1NOjObTVO6zY0FwumJ1pCyLg==, + } + engines: { node: ">=10" } + cpu: [x64] + os: [linux, freebsd, android] + + "@sentry/cli-win32-arm64@2.53.0": + resolution: + { + integrity: sha512-G1kjOjrjMBY20rQcJV2GA8KQE74ufmROCDb2GXYRfjvb1fKAsm4Oh8N5+Tqi7xEHdjQoLPkE4CNW0aH68JSUDQ==, + } + engines: { node: ">=10" } + cpu: [arm64] + os: [win32] + + "@sentry/cli-win32-i686@2.53.0": + resolution: + { + integrity: sha512-qbGTZUzesuUaPtY9rPXdNfwLqOZKXrJRC1zUFn52hdo6B+Dmv0m/AHwRVFHZP53Tg1NCa8bDei2K/uzRN0dUZw==, + } + engines: { node: ">=10" } + cpu: [x86, ia32] + os: [win32] + + "@sentry/cli-win32-x64@2.53.0": + resolution: + { + integrity: sha512-1TXYxYHtwgUq5KAJt3erRzzUtPqg7BlH9T7MdSPHjJatkrr/kwZqnVe2H6Arr/5NH891vOlIeSPHBdgJUAD69g==, + } + engines: { node: ">=10" } + cpu: [x64] + os: [win32] + + "@sentry/cli@2.53.0": + resolution: + { + integrity: sha512-n2ZNb+5Z6AZKQSI0SusQ7ZzFL637mfw3Xh4C3PEyVSn9LiF683fX0TTq8OeGmNZQS4maYfS95IFD+XpydU0dEA==, + } + engines: { node: ">= 10" } hasBin: true - "@sentry/core@7.120.4": + "@sentry/core@10.11.0": resolution: { - integrity: sha512-TXu3Q5kKiq8db9OXGkWyXUbIxMMuttB5vJ031yolOl5T/B69JRyAoKuojLBjRv1XX583gS1rSSoX8YXX7ATFGA==, + integrity: sha512-39Rxn8cDXConx3+SKOCAhW+/hklM7UDaz+U1OFzFMDlT59vXSpfI6bcXtNiFDrbOxlQ2hX8yAqx8YRltgSftoA==, } - engines: { node: ">=8" } + engines: { node: ">=18" } - "@sentry/integrations@7.120.4": + "@sentry/nextjs@10.11.0": resolution: { - integrity: sha512-kkBTLk053XlhDCg7OkBQTIMF4puqFibeRO3E3YiVc4PGLnocXMaVpOSCkMqAc1k1kZ09UgGi8DxfQhnFEjUkpA==, + integrity: sha512-oMRmRW982H6kNlUHNij5QAro8Kbi43r3VrcrKtrx7LgjHOUTFUvZmJeynC+T+PcMgLhQNvCC3JgzOhfSqxOChg==, } - engines: { node: ">=8" } - - "@sentry/nextjs@7.120.4": - resolution: - { - integrity: sha512-1wtyDP1uiVvYqaJyCgXfP69eqyDgJrd6lERAVd4WqXNVEIs4vBT8oxfPQz6gxG2SJJUiTyQRjubMxuEc7dPoGQ==, - } - engines: { node: ">=8" } + engines: { node: ">=18" } peerDependencies: - next: ^10.0.8 || ^11.0 || ^12.0 || ^13.0 || ^14.0 - react: 16.x || 17.x || 18.x - webpack: ">= 4.0.0" - peerDependenciesMeta: - webpack: - optional: true + next: ^13.2.0 || ^14.0 || ^15.0.0-rc.0 - "@sentry/node@7.120.4": + "@sentry/node-core@10.11.0": resolution: { - integrity: sha512-qq3wZAXXj2SRWhqErnGCSJKUhPSlZ+RGnCZjhfjHpP49KNpcd9YdPTIUsFMgeyjdh6Ew6aVCv23g1hTP0CHpYw==, + integrity: sha512-dkVZ06F+W5W0CsD47ATTTOTTocmccT/ezrF9idspQq+HVOcjoKSU60WpWo22NjtVNdSYKLnom0q1LKRoaRA/Ww==, } - engines: { node: ">=8" } - - "@sentry/react@7.120.4": - resolution: - { - integrity: sha512-Pj1MSezEncE+5riuwsk8peMncuz5HR72Yr1/RdZhMZvUxoxAR/tkwD3aPcK6ddQJTagd2TGwhdr9SHuDLtONew==, - } - engines: { node: ">=8" } + engines: { node: ">=18" } peerDependencies: - react: 15.x || 16.x || 17.x || 18.x + "@opentelemetry/api": ^1.9.0 + "@opentelemetry/context-async-hooks": ^1.30.1 || ^2.0.0 + "@opentelemetry/core": ^1.30.1 || ^2.0.0 + "@opentelemetry/instrumentation": ">=0.57.1 <1" + "@opentelemetry/resources": ^1.30.1 || ^2.0.0 + "@opentelemetry/sdk-trace-base": ^1.30.1 || ^2.0.0 + "@opentelemetry/semantic-conventions": ^1.34.0 - "@sentry/replay@7.120.4": + "@sentry/node@10.11.0": resolution: { - integrity: sha512-FW8sPenNFfnO/K7sncsSTX4rIVak9j7VUiLIagJrcqZIC7d1dInFNjy8CdVJUlyz3Y3TOgIl3L3+ZpjfyMnaZg==, + integrity: sha512-Tbcjr3iQAEjYi7/QIpdS8afv/LU1TwDTiy5x87MSpVEoeFcZ7f2iFC4GV0fhB3p4qDuFdL2JGVsIIrzapp8Y4A==, } - engines: { node: ">=12" } + engines: { node: ">=18" } - "@sentry/types@7.120.4": + "@sentry/opentelemetry@10.11.0": resolution: { - integrity: sha512-cUq2hSSe6/qrU6oZsEP4InMI5VVdD86aypE+ENrQ6eZEVLTCYm1w6XhW1NvIu3UuWh7gZec4a9J7AFpYxki88Q==, + integrity: sha512-BY2SsVlRKICzNUO9atUy064BZqYnhV5A/O+JjEx0kj7ylq+oZd++zmGkks00rSwaJE220cVcVhpwqxcFUpc2hw==, } - engines: { node: ">=8" } + engines: { node: ">=18" } + peerDependencies: + "@opentelemetry/api": ^1.9.0 + "@opentelemetry/context-async-hooks": ^1.30.1 || ^2.0.0 + "@opentelemetry/core": ^1.30.1 || ^2.0.0 + "@opentelemetry/sdk-trace-base": ^1.30.1 || ^2.0.0 + "@opentelemetry/semantic-conventions": ^1.34.0 - "@sentry/utils@7.120.4": + "@sentry/react@10.11.0": resolution: { - integrity: sha512-zCKpyDIWKHwtervNK2ZlaK8mMV7gVUijAgFeJStH+CU/imcdquizV3pFLlSQYRswG+Lbyd6CT/LGRh3IbtkCFw==, + integrity: sha512-bE4lJ5Ni/n9JUdLWGG99yucY0/zOUXjKl9gfSTkvUvOiAIX/bY0Y4WgOqeWySvbMz679ZdOwF34k8RA/gI7a8g==, } - engines: { node: ">=8" } + engines: { node: ">=18" } + peerDependencies: + react: ^16.14.0 || 17.x || 18.x || 19.x - "@sentry/vercel-edge@7.120.4": + "@sentry/vercel-edge@10.11.0": resolution: { - integrity: sha512-wZMnF7Rt2IBfStQTVDhjShEtLcsH1WNc7YVgzoibuIeRDrEmyx/MFIsru2BkhWnz7m0TRnWXxA40cH+6VZsf5w==, + integrity: sha512-jAsJ8RbbF2JWj2wnXfd6BwWxCR6GBITMtlaoWc7pG22HknEtoH15dKsQC3Ew5r/KRcofr2e+ywdnBn5CPr1Pbg==, } - engines: { node: ">=8" } + engines: { node: ">=18" } - "@sentry/webpack-plugin@1.21.0": + "@sentry/webpack-plugin@4.3.0": resolution: { - integrity: sha512-x0PYIMWcsTauqxgl7vWUY6sANl+XGKtx7DCVnnY7aOIIlIna0jChTAPANTfA2QrK+VK+4I/4JxatCEZBnXh3Og==, - } - engines: { node: ">= 8" } - - "@sinclair/typebox@0.25.24": - resolution: - { - integrity: sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==, + integrity: sha512-K4nU1SheK/tvyakBws2zfd+MN6hzmpW+wPTbSbDWn1+WL9+g9hsPh8hjFFiVe47AhhUoUZ3YgiH2HyeHXjHflA==, } + engines: { node: ">= 14" } + peerDependencies: + webpack: ">=4.40.0" "@sinclair/typebox@0.27.8": resolution: @@ -1820,10 +2529,10 @@ packages: integrity: sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==, } - "@swc/counter@0.1.3": + "@swc/helpers@0.5.15": resolution: { - integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==, + integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==, } "@swc/helpers@0.5.17": @@ -1832,12 +2541,6 @@ packages: integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==, } - "@swc/helpers@0.5.5": - resolution: - { - integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==, - } - "@tanstack/query-core@5.85.9": resolution: { @@ -1852,19 +2555,6 @@ packages: peerDependencies: react: ^18 || ^19 - "@tootallnate/once@2.0.0": - resolution: - { - integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==, - } - engines: { node: ">= 10" } - - "@ts-morph/common@0.11.1": - resolution: - { - integrity: sha512-7hWZS0NRpEsNV8vWJzg7FEz6V8MaLNeJOmwmghqUXTpzk16V1LLZhdo+4QvE/+zv4cVci0OviuJFnqhEfoV3+g==, - } - "@tsconfig/node10@1.0.11": resolution: { @@ -1919,12 +2609,30 @@ packages: integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==, } + "@types/connect@3.4.38": + resolution: + { + integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==, + } + "@types/debug@4.1.12": resolution: { integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==, } + "@types/eslint-scope@3.7.7": + resolution: + { + integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==, + } + + "@types/eslint@9.6.1": + resolution: + { + integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==, + } + "@types/estree-jsx@1.0.5": resolution: { @@ -2004,30 +2712,48 @@ packages: integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==, } + "@types/mysql@2.15.27": + resolution: + { + integrity: sha512-YfWiV16IY0OeBfBCk8+hXKmdTKrKlwKN1MNKAPBu5JYxLwBEZl7QzeEpGnlZb3VMGJrrGmB84gXiH+ofs/TezA==, + } + "@types/node-fetch@2.6.13": resolution: { integrity: sha512-QGpRVpzSaUs30JBSGPjOg4Uveu384erbHBoT1zeONvyCfwQxIkUshLAOqN/k9EjGviPRmWTTe6aH2qySWKTVSw==, } - "@types/node@16.18.11": - resolution: - { - integrity: sha512-3oJbGBUWuS6ahSnEq1eN2XrCyf4YsWI8OyCvo7c64zQJNplk3mO84t53o8lfTk+2ji59g5ycfc6qQ3fdHliHuA==, - } - "@types/node@24.2.1": resolution: { integrity: sha512-DRh5K+ka5eJic8CjH7td8QpYEV6Zo10gfRkjHCO3weqZHWDtAaSTFtl4+VMqOJ4N5jcuhZ9/l+yy8rVgw7BQeQ==, } + "@types/node@24.3.1": + resolution: + { + integrity: sha512-3vXmQDXy+woz+gnrTvuvNrPzekOi+Ds0ReMxw0LzBiK3a+1k0kQn9f2NWk+lgD4rJehFUmYy2gMhJ2ZI+7YP9g==, + } + "@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.4": + resolution: + { + integrity: sha512-I6UNVBAoYbvuWkkU3oosC8yxqH21f4/Jc4DK71JLG3dT2mdlGe1z+ep/LQGXaKaOgcvUrsQoPRqfgtMcvZiJhg==, + } + "@types/prop-types@15.7.15": resolution: { @@ -2046,12 +2772,24 @@ packages: integrity: sha512-WFHp9YUJQ6CKshqoC37iOlHnQSmxNc795UhB26CyBBttrN9svdIrUjl/NjnNmfcwtncN0h/0PPAFWv9ovP8mLA==, } + "@types/shimmer@1.2.0": + resolution: + { + integrity: sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg==, + } + "@types/stack-utils@2.0.3": resolution: { integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==, } + "@types/tedious@4.0.14": + resolution: + { + integrity: sha512-KHPsfX/FoVbUGbyYvk1q9MMQHLPeRZhRJZdO45Q4YjvFkv4hMNghCWTvy7rdKessBsmtz4euWCWAB6/tVpI1Iw==, + } + "@types/ua-parser-js@0.7.39": resolution: { @@ -2365,122 +3103,94 @@ packages: cpu: [x64] os: [win32] - "@vercel/build-utils@8.4.12": + "@webassemblyjs/ast@1.14.1": resolution: { - integrity: sha512-pIH0b965wJhd1otROVPndfZenPKFVoYSaRjtSKVOT/oNBT13ifq86UVjb5ZjoVfqUI2TtSTP+68kBqLPeoq30g==, + integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==, } - "@vercel/edge-config-fs@0.1.0": + "@webassemblyjs/floating-point-hex-parser@1.13.2": resolution: { - integrity: sha512-NRIBwfcS0bUoUbRWlNGetqjvLSwgYH/BqKqDN7vK1g32p7dN96k0712COgaz6VFizAm9b0g6IG6hR6+hc0KCPg==, + integrity: sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==, } - "@vercel/edge-config@0.4.1": + "@webassemblyjs/helper-api-error@1.13.2": resolution: { - integrity: sha512-4Mc3H7lE+x4RrL17nY8CWeEorvJHbkNbQTy9p8H1tO7y11WeKj5xeZSr07wNgfWInKXDUwj5FZ3qd/jIzjPxug==, - } - engines: { node: ">=14.6" } - - "@vercel/error-utils@2.0.2": - resolution: - { - integrity: sha512-Sj0LFafGpYr6pfCqrQ82X6ukRl5qpmVrHM/191kNYFqkkB9YkjlMAj6QcEsvCG259x4QZ7Tya++0AB85NDPbKQ==, + integrity: sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==, } - "@vercel/fun@1.1.0": + "@webassemblyjs/helper-buffer@1.14.1": resolution: { - integrity: sha512-SpuPAo+MlAYMtcMcC0plx7Tv4Mp7SQhJJj1iIENlOnABL24kxHpL09XLQMGzZIzIW7upR8c3edwgfpRtp+dhVw==, - } - engines: { node: ">= 10" } - - "@vercel/gatsby-plugin-vercel-analytics@1.0.11": - resolution: - { - integrity: sha512-iTEA0vY6RBPuEzkwUTVzSHDATo1aF6bdLLspI68mQ/BTbi5UQEGjpjyzdKOVcSYApDtFU6M6vypZ1t4vIEnHvw==, + integrity: sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==, } - "@vercel/gatsby-plugin-vercel-builder@2.0.56": + "@webassemblyjs/helper-numbers@1.13.2": resolution: { - integrity: sha512-SZM8k/YcOcfk2p1cSZOuSK37CDBJtF/WiEr8CemDI/MBbXM4aC2StfzDd0F0cK/2rExpSA9lTAE9ia3w+cDS9w==, + integrity: sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==, } - "@vercel/go@3.2.0": + "@webassemblyjs/helper-wasm-bytecode@1.13.2": resolution: { - integrity: sha512-zUCBoh57x1OEtw+TKdRhSQciqERrpDxLlPeBOYawUCC5uKjsBjhdq0U21+NGz2LcRUaYyYYGMw6BzqVaig9u1g==, + integrity: sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==, } - "@vercel/hydrogen@1.0.9": + "@webassemblyjs/helper-wasm-section@1.14.1": resolution: { - integrity: sha512-IPAVaALuGAzt2apvTtBs5tB+8zZRzn/yG3AGp8dFyCsw/v5YOuk0Q5s8Z3fayLvJbFpjrKtqRNDZzVJBBU3MrQ==, + integrity: sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==, } - "@vercel/next@4.3.18": + "@webassemblyjs/ieee754@1.13.2": resolution: { - integrity: sha512-ih6++AA7/NCcLkMpdsDhr/folMlAKsU1sYUoyOjq4rYE9sSapELtgxls0CArv4ehE2Tt4YwoxBISnKPZKK5SSA==, + integrity: sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==, } - "@vercel/nft@0.27.3": + "@webassemblyjs/leb128@1.13.2": resolution: { - integrity: sha512-oySTdDSzUAFDXpsSLk9Q943o+/Yu/+TCFxnehpFQEf/3khi2stMpTHPVNwFdvZq/Z4Ky93lE+MGHpXCRpMkSCA==, - } - engines: { node: ">=16" } - hasBin: true - - "@vercel/node@3.2.24": - resolution: - { - integrity: sha512-KEm50YBmcfRNOw5NfdcqMI4BkP4+5TD9kRwAByHHlIZXLj1NTTknvMF+69sHBYzwpK/SUZIkeo7jTrtcl4g+RQ==, + integrity: sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==, } - "@vercel/python@4.3.1": + "@webassemblyjs/utf8@1.13.2": resolution: { - integrity: sha512-pWRApBwUsAQJS8oZ7eKMiaBGbYJO71qw2CZqDFvkTj34FNBZtNIUcWSmqGfJJY5m2pU/9wt8z1CnKIyT9dstog==, + integrity: sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==, } - "@vercel/redwood@2.1.8": + "@webassemblyjs/wasm-edit@1.14.1": resolution: { - integrity: sha512-qBUBqIDxPEYnxRh3tsvTaPMtBkyK/D2tt9tBugNPe0OeYnMCMXVj9SJYbxiDI2GzAEFUZn4Poh63CZtXMDb9Tg==, + integrity: sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==, } - "@vercel/remix-builder@2.2.13": + "@webassemblyjs/wasm-gen@1.14.1": resolution: { - integrity: sha512-TenVtvfERodSwUjm0rzjz3v00Drd0FUXLWnwdwnv7VLgqmX2FW/2+1byhmPhJicMp3Eybl52GvF2/KbBkNo95w==, + integrity: sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==, } - "@vercel/routing-utils@3.1.0": + "@webassemblyjs/wasm-opt@1.14.1": resolution: { - integrity: sha512-Ci5xTjVTJY/JLZXpCXpLehMft97i9fH34nu9PGav6DtwkVUF6TOPX86U0W0niQjMZ5n6/ZP0BwcJK2LOozKaGw==, + integrity: sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==, } - "@vercel/ruby@2.1.0": + "@webassemblyjs/wasm-parser@1.14.1": resolution: { - integrity: sha512-UZYwlSEEfVnfzTmgkD+kxex9/gkZGt7unOWNyWFN7V/ZnZSsGBUgv6hXLnwejdRi3EztgRQEBd1kUKlXdIeC0Q==, + integrity: sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==, } - "@vercel/static-build@2.5.34": + "@webassemblyjs/wast-printer@1.14.1": resolution: { - integrity: sha512-4RL60ghhBufs/45j6J9zQzMpt8JmUhp/4+xE8RxO80n6qTlc/oERKrWxzeXLEGF32whSHsB+ROJt0Ytytoz2Tw==, - } - - "@vercel/static-config@3.0.0": - resolution: - { - integrity: sha512-2qtvcBJ1bGY0dYGYh3iM7yGKkk971FujLEDXzuW5wcZsPr1GSEjO/w2iSr3qve6nDDtBImsGoDEnus5FI4+fIw==, + integrity: sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==, } "@whereby.com/browser-sdk@3.13.1": @@ -2505,6 +3215,18 @@ packages: } engines: { node: ">=16.0.0" } + "@xtuc/ieee754@1.2.0": + resolution: + { + integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==, + } + + "@xtuc/long@4.2.2": + resolution: + { + integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==, + } + "@zag-js/accordion@1.21.0": resolution: { @@ -2922,12 +3644,6 @@ packages: integrity: sha512-yI/CZizbk387TdkDCy9Uc4l53uaeQuWAIJESrmAwwq6yMNbHZ2dm5+1NHdZr/guES5TgyJa/BYJsNJeCsCfesg==, } - abbrev@1.1.1: - resolution: - { - integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==, - } - acorn-import-attributes@1.9.5: resolution: { @@ -2936,6 +3652,15 @@ packages: peerDependencies: acorn: ^8 + acorn-import-phases@1.0.4: + resolution: + { + integrity: sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==, + } + engines: { node: ">=10.13.0" } + peerDependencies: + acorn: ^8.14.0 + acorn-jsx@5.3.2: resolution: { @@ -2973,16 +3698,35 @@ packages: } engines: { node: ">= 14" } + ajv-formats@2.1.1: + resolution: + { + integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==, + } + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + + ajv-keywords@5.1.0: + resolution: + { + integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==, + } + peerDependencies: + ajv: ^8.8.2 + ajv@6.12.6: resolution: { integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==, } - ajv@8.6.3: + ajv@8.17.1: resolution: { - integrity: sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw==, + integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==, } ansi-colors@4.1.3: @@ -3047,26 +3791,6 @@ packages: } engines: { node: ">= 8" } - aproba@2.1.0: - resolution: - { - integrity: sha512-tLIEcj5GuR2RSTnxNKdkK0dJ/GrC7P38sUkiDmDuHfsHmbagTFAxDVIBltoklXEVIQ/f14IL8IMJ5pn9Hez1Ew==, - } - - are-we-there-yet@2.0.0: - resolution: - { - integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==, - } - engines: { node: ">=10" } - deprecated: This package is no longer supported. - - arg@4.1.0: - resolution: - { - integrity: sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg==, - } - arg@4.1.3: resolution: { @@ -3174,32 +3898,6 @@ packages: } engines: { node: ">= 0.4" } - async-listen@1.2.0: - resolution: - { - integrity: sha512-CcEtRh/oc9Jc4uWeUwdpG/+Mb2YUHKmdaTf0gUr7Wa+bfp4xx70HOb3RuSTJMvqKNB1TkdTfjLdrcz2X4rkkZA==, - } - - async-listen@3.0.0: - resolution: - { - integrity: sha512-V+SsTpDqkrWTimiotsyl33ePSjA5/KrithwupuvJ6ztsqPvGv6ge4OredFhPffVXiLN/QUWvE0XcqJaYgt6fOg==, - } - engines: { node: ">= 14" } - - async-listen@3.0.1: - resolution: - { - integrity: sha512-cWMaNwUJnf37C/S5TfCkk/15MwbPRwVYALA2jtjkbHjCmAPiDXyNJy2q3p1KAZzDLHAWyarUWSujUoHR4pEgrA==, - } - engines: { node: ">= 14" } - - async-sema@3.1.1: - resolution: - { - integrity: sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==, - } - asynckit@0.4.0: resolution: { @@ -3328,12 +4026,6 @@ packages: } engines: { node: ">=8" } - bindings@1.5.0: - resolution: - { - integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==, - } - brace-expansion@1.1.12: resolution: { @@ -3382,12 +4074,6 @@ packages: engines: { node: ">= 0.4.0" } hasBin: true - buffer-crc32@0.2.13: - resolution: - { - integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==, - } - buffer-from@1.1.2: resolution: { @@ -3400,20 +4086,6 @@ packages: integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==, } - busboy@1.6.0: - resolution: - { - integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==, - } - engines: { node: ">=10.16.0" } - - bytes@3.1.0: - resolution: - { - integrity: sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==, - } - engines: { node: ">= 0.8" } - call-bind-apply-helpers@1.0.2: resolution: { @@ -3532,13 +4204,6 @@ packages: integrity: sha512-LuLBA6r4aS/4B7pvOqmT4Bi+GKnNNC/V18K0zDTRFjAxNeUzGsr0wmsOfFhFH7fGjwdx6GX6wyIQBkUhFox2Pw==, } - chokidar@3.3.1: - resolution: - { - integrity: sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg==, - } - engines: { node: ">= 8.10.0" } - chokidar@3.6.0: resolution: { @@ -3553,18 +4218,12 @@ packages: } engines: { node: ">= 14.16.0" } - chownr@1.1.4: + chrome-trace-event@1.0.4: resolution: { - integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==, + integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==, } - - chownr@2.0.0: - resolution: - { - integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==, - } - engines: { node: ">=10" } + engines: { node: ">=6.0" } ci-info@3.9.0: resolution: @@ -3580,10 +4239,10 @@ packages: } engines: { node: ">=8" } - cjs-module-lexer@1.2.3: + cjs-module-lexer@1.4.3: resolution: { - integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==, + integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==, } cjs-module-lexer@2.1.0: @@ -3632,12 +4291,6 @@ packages: } engines: { iojs: ">= 1.0.0", node: ">= 0.12.0" } - code-block-writer@10.1.1: - resolution: - { - integrity: sha512-67ueh2IRGst/51p0n6FvPrnRjAGHY5F8xdjkgrYE7DDzpJe6qA07RYQ9VcoUeo5ATOjSOiWpSL3SWBRRbempMw==, - } - collect-v8-coverage@1.0.2: resolution: { @@ -3657,12 +4310,18 @@ packages: integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==, } - color-support@1.1.3: + color-string@1.9.1: resolution: { - integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==, + integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==, } - hasBin: true + + color@4.2.3: + resolution: + { + integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==, + } + engines: { node: ">=12.5.0" } colorette@1.4.0: resolution: @@ -3683,6 +4342,12 @@ packages: integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==, } + commander@2.20.3: + resolution: + { + integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==, + } + commander@4.1.1: resolution: { @@ -3702,26 +4367,6 @@ packages: integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==, } - console-control-strings@1.1.0: - resolution: - { - integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==, - } - - content-type@1.0.4: - resolution: - { - integrity: sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==, - } - engines: { node: ">= 0.6" } - - convert-hrtime@3.0.0: - resolution: - { - integrity: sha512-7V+KqSvMiHp8yWDuwfww06XleMWVVB9b9tURBx+G7UTADuo5hYPuowKloz4OzOqbPezxgo+fdQ1522WzPG4OeA==, - } - engines: { node: ">=8" } - convert-source-map@1.9.0: resolution: { @@ -3813,18 +4458,6 @@ packages: supports-color: optional: true - debug@4.1.1: - resolution: - { - integrity: sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==, - } - deprecated: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797) - peerDependencies: - supports-color: "*" - peerDependenciesMeta: - supports-color: - optional: true - debug@4.3.7: resolution: { @@ -3900,12 +4533,6 @@ packages: } engines: { node: ">=0.4.0" } - delegates@1.0.0: - resolution: - { - integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==, - } - denque@2.1.0: resolution: { @@ -3913,13 +4540,6 @@ packages: } engines: { node: ">=0.10" } - depd@1.1.2: - resolution: - { - integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==, - } - engines: { node: ">= 0.6" } - dequal@2.0.3: resolution: { @@ -4011,6 +4631,13 @@ packages: integrity: sha512-h7g5eduvnLwowJJPkcB5lNzo8vd/Hx4e3I4IOtLpX0qB2wBiuryGLNa61MeFre4b6gMaQIhegMIZ2I8rQCAJwQ==, } + dotenv@16.6.1: + resolution: + { + integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==, + } + engines: { node: ">=12" } + dunder-proto@1.0.1: resolution: { @@ -4024,14 +4651,6 @@ packages: integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==, } - edge-runtime@2.5.9: - resolution: - { - integrity: sha512-pk+k0oK0PVXdlT4oRp4lwh+unuKB7Ng4iZ2HB+EZ7QCEQizX360Rp/F4aRpgpRgdP2ufB35N+1KppHmYjqIGSg==, - } - engines: { node: ">=16" } - hasBin: true - electron-to-chromium@1.5.200: resolution: { @@ -4057,18 +4676,6 @@ packages: integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==, } - end-of-stream@1.1.0: - resolution: - { - integrity: sha512-EoulkdKF/1xa92q25PbjuDcgJ9RDHYU2Rs3SCIvs2/dSQ3BpmxneNHmA/M7fe60M3PrV7nNGTTNbkK62l6vXiQ==, - } - - end-of-stream@1.4.5: - resolution: - { - integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==, - } - engine.io-client@6.5.4: resolution: { @@ -4082,6 +4689,13 @@ packages: } engines: { node: ">=10.0.0" } + enhanced-resolve@5.18.3: + resolution: + { + integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==, + } + engines: { node: ">=10.13.0" } + err-code@3.0.1: resolution: { @@ -4122,10 +4736,10 @@ packages: } engines: { node: ">= 0.4" } - es-module-lexer@1.4.1: + es-module-lexer@1.7.0: resolution: { - integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==, + integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==, } es-object-atoms@1.1.1: @@ -4156,194 +4770,6 @@ packages: } engines: { node: ">= 0.4" } - esbuild-android-64@0.14.47: - resolution: - { - integrity: sha512-R13Bd9+tqLVFndncMHssZrPWe6/0Kpv2/dt4aA69soX4PRxlzsVpCvoJeFE8sOEoeVEiBkI0myjlkDodXlHa0g==, - } - engines: { node: ">=12" } - cpu: [x64] - os: [android] - - esbuild-android-arm64@0.14.47: - resolution: - { - integrity: sha512-OkwOjj7ts4lBp/TL6hdd8HftIzOy/pdtbrNA4+0oVWgGG64HrdVzAF5gxtJufAPOsEjkyh1oIYvKAUinKKQRSQ==, - } - engines: { node: ">=12" } - cpu: [arm64] - os: [android] - - esbuild-darwin-64@0.14.47: - resolution: - { - integrity: sha512-R6oaW0y5/u6Eccti/TS6c/2c1xYTb1izwK3gajJwi4vIfNs1s8B1dQzI1UiC9T61YovOQVuePDcfqHLT3mUZJA==, - } - engines: { node: ">=12" } - cpu: [x64] - os: [darwin] - - esbuild-darwin-arm64@0.14.47: - resolution: - { - integrity: sha512-seCmearlQyvdvM/noz1L9+qblC5vcBrhUaOoLEDDoLInF/VQ9IkobGiLlyTPYP5dW1YD4LXhtBgOyevoIHGGnw==, - } - engines: { node: ">=12" } - cpu: [arm64] - os: [darwin] - - esbuild-freebsd-64@0.14.47: - resolution: - { - integrity: sha512-ZH8K2Q8/Ux5kXXvQMDsJcxvkIwut69KVrYQhza/ptkW50DC089bCVrJZZ3sKzIoOx+YPTrmsZvqeZERjyYrlvQ==, - } - engines: { node: ">=12" } - cpu: [x64] - os: [freebsd] - - esbuild-freebsd-arm64@0.14.47: - resolution: - { - integrity: sha512-ZJMQAJQsIOhn3XTm7MPQfCzEu5b9STNC+s90zMWe2afy9EwnHV7Ov7ohEMv2lyWlc2pjqLW8QJnz2r0KZmeAEQ==, - } - engines: { node: ">=12" } - cpu: [arm64] - os: [freebsd] - - esbuild-linux-32@0.14.47: - resolution: - { - integrity: sha512-FxZOCKoEDPRYvq300lsWCTv1kcHgiiZfNrPtEhFAiqD7QZaXrad8LxyJ8fXGcWzIFzRiYZVtB3ttvITBvAFhKw==, - } - engines: { node: ">=12" } - cpu: [ia32] - os: [linux] - - esbuild-linux-64@0.14.47: - resolution: - { - integrity: sha512-nFNOk9vWVfvWYF9YNYksZptgQAdstnDCMtR6m42l5Wfugbzu11VpMCY9XrD4yFxvPo9zmzcoUL/88y0lfJZJJw==, - } - engines: { node: ">=12" } - cpu: [x64] - os: [linux] - - esbuild-linux-arm64@0.14.47: - resolution: - { - integrity: sha512-ywfme6HVrhWcevzmsufjd4iT3PxTfCX9HOdxA7Hd+/ZM23Y9nXeb+vG6AyA6jgq/JovkcqRHcL9XwRNpWG6XRw==, - } - engines: { node: ">=12" } - cpu: [arm64] - os: [linux] - - esbuild-linux-arm@0.14.47: - resolution: - { - integrity: sha512-ZGE1Bqg/gPRXrBpgpvH81tQHpiaGxa8c9Rx/XOylkIl2ypLuOcawXEAo8ls+5DFCcRGt/o3sV+PzpAFZobOsmA==, - } - engines: { node: ">=12" } - cpu: [arm] - os: [linux] - - esbuild-linux-mips64le@0.14.47: - resolution: - { - integrity: sha512-mg3D8YndZ1LvUiEdDYR3OsmeyAew4MA/dvaEJxvyygahWmpv1SlEEnhEZlhPokjsUMfRagzsEF/d/2XF+kTQGg==, - } - engines: { node: ">=12" } - cpu: [mips64el] - os: [linux] - - esbuild-linux-ppc64le@0.14.47: - resolution: - { - integrity: sha512-WER+f3+szmnZiWoK6AsrTKGoJoErG2LlauSmk73LEZFQ/iWC+KhhDsOkn1xBUpzXWsxN9THmQFltLoaFEH8F8w==, - } - engines: { node: ">=12" } - cpu: [ppc64] - os: [linux] - - esbuild-linux-riscv64@0.14.47: - resolution: - { - integrity: sha512-1fI6bP3A3rvI9BsaaXbMoaOjLE3lVkJtLxsgLHqlBhLlBVY7UqffWBvkrX/9zfPhhVMd9ZRFiaqXnB1T7BsL2g==, - } - engines: { node: ">=12" } - cpu: [riscv64] - os: [linux] - - esbuild-linux-s390x@0.14.47: - resolution: - { - integrity: sha512-eZrWzy0xFAhki1CWRGnhsHVz7IlSKX6yT2tj2Eg8lhAwlRE5E96Hsb0M1mPSE1dHGpt1QVwwVivXIAacF/G6mw==, - } - engines: { node: ">=12" } - cpu: [s390x] - os: [linux] - - esbuild-netbsd-64@0.14.47: - resolution: - { - integrity: sha512-Qjdjr+KQQVH5Q2Q1r6HBYswFTToPpss3gqCiSw2Fpq/ua8+eXSQyAMG+UvULPqXceOwpnPo4smyZyHdlkcPppQ==, - } - engines: { node: ">=12" } - cpu: [x64] - os: [netbsd] - - esbuild-openbsd-64@0.14.47: - resolution: - { - integrity: sha512-QpgN8ofL7B9z8g5zZqJE+eFvD1LehRlxr25PBkjyyasakm4599iroUpaj96rdqRlO2ShuyqwJdr+oNqWwTUmQw==, - } - engines: { node: ">=12" } - cpu: [x64] - os: [openbsd] - - esbuild-sunos-64@0.14.47: - resolution: - { - integrity: sha512-uOeSgLUwukLioAJOiGYm3kNl+1wJjgJA8R671GYgcPgCx7QR73zfvYqXFFcIO93/nBdIbt5hd8RItqbbf3HtAQ==, - } - engines: { node: ">=12" } - cpu: [x64] - os: [sunos] - - esbuild-windows-32@0.14.47: - resolution: - { - integrity: sha512-H0fWsLTp2WBfKLBgwYT4OTfFly4Im/8B5f3ojDv1Kx//kiubVY0IQunP2Koc/fr/0wI7hj3IiBDbSrmKlrNgLQ==, - } - engines: { node: ">=12" } - cpu: [ia32] - os: [win32] - - esbuild-windows-64@0.14.47: - resolution: - { - integrity: sha512-/Pk5jIEH34T68r8PweKRi77W49KwanZ8X6lr3vDAtOlH5EumPE4pBHqkCUdELanvsT14yMXLQ/C/8XPi1pAtkQ==, - } - engines: { node: ">=12" } - cpu: [x64] - os: [win32] - - esbuild-windows-arm64@0.14.47: - resolution: - { - integrity: sha512-HFSW2lnp62fl86/qPQlqw6asIwCnEsEoNIL1h2uVMgakddf+vUuMcCbtUY1i8sst7KkgHrVKCJQB33YhhOweCQ==, - } - engines: { node: ">=12" } - cpu: [arm64] - os: [win32] - - esbuild@0.14.47: - resolution: - { - integrity: sha512-wI4ZiIfFxpkuxB8ju4MHrGwGLyp1+awEHAHVpx6w7a+1pmYIq8T9FGEVVwFo0iFierDoMj++Xq69GXWYn2EiwA==, - } - engines: { node: ">=12" } - hasBin: true - escalade@3.2.0: resolution: { @@ -4365,13 +4791,13 @@ packages: } engines: { node: ">=10" } - eslint-config-next@14.2.31: + eslint-config-next@15.5.3: resolution: { - integrity: sha512-sT32j4678je7SWstBM6l0kE2L+LSgAARDAxw8iloNhI4/8xwkdDesbrGCPaGWzQv+dD6f6adhB+eRSThpGkBdg==, + integrity: sha512-e6j+QhQFOr5pfsc8VJbuTD9xTXJaRvMHYjEeLPA2pFkheNlgPLCkxdvhxhfuM4KGcqSZj2qEnpHisdTVs3BxuQ==, } peerDependencies: - eslint: ^7.23.0 || ^8.0.0 + eslint: ^7.23.0 || ^8.0.0 || ^9.0.0 typescript: ">=3.3.1" peerDependenciesMeta: typescript: @@ -4445,14 +4871,14 @@ packages: peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 - eslint-plugin-react-hooks@5.0.0-canary-7118f5dd7-20230705: + eslint-plugin-react-hooks@5.2.0: resolution: { - integrity: sha512-AZYbMo/NW9chdL7vk6HQzQhT+PvTAEVqWk9ziruUoW2kAOcN5qNyelv70e0F1VNQAbvutOC9oc+xfWycI9FxDw==, + integrity: sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==, } engines: { node: ">=10" } peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 eslint-plugin-react@7.37.5: resolution: @@ -4463,6 +4889,13 @@ packages: peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 + eslint-scope@5.1.1: + resolution: + { + integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==, + } + engines: { node: ">=8.0.0" } + eslint-scope@8.4.0: resolution: { @@ -4526,6 +4959,13 @@ packages: } engines: { node: ">=4.0" } + estraverse@4.3.0: + resolution: + { + integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==, + } + engines: { node: ">=4.0" } + estraverse@5.3.0: resolution: { @@ -4552,13 +4992,6 @@ packages: } engines: { node: ">=0.10.0" } - etag@1.8.1: - resolution: - { - integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==, - } - engines: { node: ">= 0.6" } - event-target-shim@6.0.2: resolution: { @@ -4566,12 +4999,6 @@ packages: } engines: { node: ">=10.13.0" } - events-intercept@2.0.0: - resolution: - { - integrity: sha512-blk1va0zol9QOrdZt0rFXo5KMkNPVSp92Eju/Qz8THwKWKRKeE0T8Br/1aW6+Edkyq9xHYgYxn2QtOnUKPUp+Q==, - } - events@3.3.0: resolution: { @@ -4579,13 +5006,6 @@ packages: } engines: { node: ">=0.8.x" } - execa@3.2.0: - resolution: - { - integrity: sha512-kJJfVbI/lZE1PZYDI5VPxp8zXPO9rtxOkhpZ0jMKha56AI9y2gGVC6bkukStQf0ka5Rh15BA5m7cCCH4jmHqkw==, - } - engines: { node: ^8.12.0 || >=9.7.0 } - execa@5.1.1: resolution: { @@ -4625,6 +5045,13 @@ packages: integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==, } + fast-glob@3.3.1: + resolution: + { + integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==, + } + engines: { node: ">=8.6.0" } + fast-glob@3.3.3: resolution: { @@ -4650,6 +5077,12 @@ packages: integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==, } + fast-uri@3.1.0: + resolution: + { + integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==, + } + fastq@1.19.1: resolution: { @@ -4662,12 +5095,6 @@ packages: integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==, } - fd-slicer@1.1.0: - resolution: - { - integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==, - } - fdir@6.4.6: resolution: { @@ -4686,12 +5113,6 @@ packages: } engines: { node: ">=16.0.0" } - file-uri-to-path@1.0.0: - resolution: - { - integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==, - } - fill-range@7.1.1: resolution: { @@ -4771,53 +5192,24 @@ packages: } engines: { node: ">= 6" } + forwarded-parse@2.1.2: + resolution: + { + integrity: sha512-alTFZZQDKMporBH77856pXgzhEzaUVmLCDk+egLgIgHst3Tpndzz8MnKe+GzRJRfvVdn69HhpW7cmXzvtLvJAw==, + } + fraction.js@4.3.7: resolution: { integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==, } - fs-extra@11.1.0: - resolution: - { - integrity: sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==, - } - engines: { node: ">=14.14" } - - fs-extra@8.1.0: - resolution: - { - integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==, - } - engines: { node: ">=6 <7 || >=8" } - - fs-minipass@1.2.7: - resolution: - { - integrity: sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==, - } - - fs-minipass@2.1.0: - resolution: - { - integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==, - } - engines: { node: ">= 8" } - fs.realpath@1.0.0: resolution: { integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==, } - fsevents@2.1.3: - resolution: - { - integrity: sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==, - } - engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 } - os: [darwin] - fsevents@2.3.3: resolution: { @@ -4845,21 +5237,6 @@ packages: integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==, } - gauge@3.0.2: - resolution: - { - integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==, - } - engines: { node: ">=10" } - deprecated: This package is no longer supported. - - generic-pool@3.4.2: - resolution: - { - integrity: sha512-H7cUpwCQSiJmAHM4c/aFu6fUfrhWXW1ncyh8ftxEPMu6AiYkHw9K8br720TGPZJbk5eOH2bynjZD1yPvdDAmag==, - } - engines: { node: ">= 4" } - gensync@1.0.0-beta.2: resolution: { @@ -4908,13 +5285,6 @@ packages: } engines: { node: ">= 0.4" } - get-stream@5.2.0: - resolution: - { - integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==, - } - engines: { node: ">=8" } - get-stream@6.0.1: resolution: { @@ -4949,13 +5319,11 @@ packages: } engines: { node: ">=10.13.0" } - glob@10.3.10: + glob-to-regexp@0.4.1: resolution: { - integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==, + integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==, } - engines: { node: ">=16 || 14 >=14.17" } - hasBin: true glob@10.4.5: resolution: @@ -4971,13 +5339,12 @@ packages: } deprecated: Glob versions prior to v9 are no longer supported - glob@8.1.0: + glob@9.3.5: resolution: { - integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==, + integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==, } - engines: { node: ">=12" } - deprecated: Glob versions prior to v9 are no longer supported + engines: { node: ">=16 || 14 >=14.17" } globals@14.0.0: resolution: @@ -5068,12 +5435,6 @@ packages: } engines: { node: ">= 0.4" } - has-unicode@2.0.1: - resolution: - { - integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==, - } - hasown@2.0.2: resolution: { @@ -5117,20 +5478,6 @@ packages: integrity: sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ==, } - http-errors@1.4.0: - resolution: - { - integrity: sha512-oLjPqve1tuOl5aRhv8GK5eHpqP1C9fb+Ol+XTLjKfLltE44zdDbEdjPSbU7Ch5rSNsVFqZn97SrMmZLdu1/YMw==, - } - engines: { node: ">= 0.6" } - - http-errors@1.7.3: - resolution: - { - integrity: sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==, - } - engines: { node: ">= 0.6" } - https-proxy-agent@5.0.1: resolution: { @@ -5145,13 +5492,6 @@ packages: } engines: { node: ">= 14" } - human-signals@1.1.1: - resolution: - { - integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==, - } - engines: { node: ">=8.12.0" } - human-signals@2.1.0: resolution: { @@ -5165,13 +5505,6 @@ packages: integrity: sha512-IvLy8MzHTSJ0fDpSzrb8rcdnla6yROEmNBSxInEMyIFu2DQkbmpadTf6B4fHvnytN6iHL2gGwpe5/jHL3wMi+A==, } - iconv-lite@0.4.24: - resolution: - { - integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==, - } - engines: { node: ">=0.10.0" } - ieee754@1.2.1: resolution: { @@ -5192,12 +5525,6 @@ packages: } engines: { node: ">= 4" } - immediate@3.0.6: - resolution: - { - integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==, - } - immer@10.1.1: resolution: { @@ -5217,6 +5544,12 @@ packages: } engines: { node: ">=6" } + import-in-the-middle@1.14.2: + resolution: + { + integrity: sha512-5tCuY9BV8ujfOpwtAGgsTx9CGUapcFMEEyByLv1B+v2+6DhAcw+Zr0nhQT7uwaZ7DiourxFEscghOR8e1aPLQw==, + } + import-local@3.2.0: resolution: { @@ -5246,12 +5579,6 @@ packages: } deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - inherits@2.0.1: - resolution: - { - integrity: sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==, - } - inherits@2.0.4: resolution: { @@ -5323,6 +5650,12 @@ packages: integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==, } + is-arrayish@0.3.2: + resolution: + { + integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==, + } + is-async-function@2.1.1: resolution: { @@ -5556,12 +5889,6 @@ packages: } engines: { node: ">= 0.4" } - isarray@0.0.1: - resolution: - { - integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==, - } - isarray@2.0.5: resolution: { @@ -5616,13 +5943,6 @@ packages: } engines: { node: ">= 0.4" } - jackspeak@2.3.6: - resolution: - { - integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==, - } - engines: { node: ">=14" } - jackspeak@3.4.3: resolution: { @@ -5819,6 +6139,13 @@ packages: } engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } + jest-worker@27.5.1: + resolution: + { + integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==, + } + engines: { node: ">= 10.13.0" } + jest-worker@29.7.0: resolution: { @@ -5912,12 +6239,6 @@ packages: integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==, } - json-schema-to-ts@1.6.4: - resolution: - { - integrity: sha512-pR4yQ9DHz6itqswtHCm26mw45FSNfQ9rEQjosaZErhn5J3J2sIViQiz8rDaezjKAhFGpmsoczYVBgGHzFw/stA==, - } - json-schema-traverse@0.4.1: resolution: { @@ -5951,18 +6272,6 @@ packages: engines: { node: ">=6" } hasBin: true - jsonfile@4.0.0: - resolution: - { - integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==, - } - - jsonfile@6.2.0: - resolution: - { - integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==, - } - jsx-ast-utils@3.3.5: resolution: { @@ -6003,12 +6312,6 @@ packages: } engines: { node: ">= 0.8.0" } - lie@3.1.1: - resolution: - { - integrity: sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==, - } - lighterhtml@4.2.0: resolution: { @@ -6028,11 +6331,12 @@ packages: integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==, } - localforage@1.10.0: + loader-runner@4.3.0: resolution: { - integrity: sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==, + integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==, } + engines: { node: ">=6.11.5" } locate-path@5.0.0: resolution: @@ -6112,20 +6416,19 @@ packages: peerDependencies: react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 - magic-string@0.27.0: + magic-string@0.30.19: resolution: { - integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==, + integrity: sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==, + } + + magic-string@0.30.8: + resolution: + { + integrity: sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==, } engines: { node: ">=12" } - make-dir@3.1.0: - resolution: - { - integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==, - } - engines: { node: ">=8" } - make-dir@4.0.0: resolution: { @@ -6220,14 +6523,6 @@ packages: } engines: { node: ">= 8" } - micro@9.3.5-canary.3: - resolution: - { - integrity: sha512-viYIo9PefV+w9dvoIBh1gI44Mvx1BOk67B4BpC2QK77qdY0xZF0Q+vWLt/BII6cLkIc8rLmSIcJaB/OrXXKe1g==, - } - engines: { node: ">= 8.0.0" } - hasBin: true - micromark-core-commonmark@2.0.3: resolution: { @@ -6395,6 +6690,13 @@ packages: } engines: { node: ">=10" } + minimatch@8.0.4: + resolution: + { + integrity: sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==, + } + engines: { node: ">=16 || 14 >=14.17" } + minimatch@9.0.5: resolution: { @@ -6408,23 +6710,10 @@ packages: integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==, } - minipass@2.9.0: + minipass@4.2.8: resolution: { - integrity: sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==, - } - - minipass@3.3.6: - resolution: - { - integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==, - } - engines: { node: ">=8" } - - minipass@5.0.0: - resolution: - { - integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==, + integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==, } engines: { node: ">=8" } @@ -6435,51 +6724,16 @@ packages: } engines: { node: ">=16 || 14 >=14.17" } - minizlib@1.3.3: - resolution: - { - integrity: sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==, - } - - minizlib@2.1.2: - resolution: - { - integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==, - } - engines: { node: ">= 8" } - mitt@3.0.1: resolution: { integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==, } - mkdirp@0.5.6: + module-details-from-path@1.0.4: resolution: { - integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==, - } - hasBin: true - - mkdirp@1.0.4: - resolution: - { - integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==, - } - engines: { node: ">=10" } - hasBin: true - - mri@1.2.0: - resolution: - { - integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==, - } - engines: { node: ">=4" } - - ms@2.1.1: - resolution: - { - integrity: sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==, + integrity: sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w==, } ms@2.1.3: @@ -6548,24 +6802,27 @@ packages: react: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc react-dom: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc - next@14.2.31: + next@15.5.3: resolution: { - integrity: sha512-Wyw1m4t8PhqG+or5a1U/Deb888YApC4rAez9bGhHkTsfwAy4SWKVro0GhEx4sox1856IbLhvhce2hAA6o8vkog==, + integrity: sha512-r/liNAx16SQj4D+XH/oI1dlpv9tdKJ6cONYPwwcCC46f2NjpaRWY+EKCzULfgQYV6YKXjHBchff2IZBSlZmJNw==, } - engines: { node: ">=18.17.0" } + engines: { node: ^18.18.0 || ^19.8.0 || >= 20.0.0 } hasBin: true peerDependencies: "@opentelemetry/api": ^1.1.0 - "@playwright/test": ^1.41.2 - react: ^18.2.0 - react-dom: ^18.2.0 + "@playwright/test": ^1.51.1 + babel-plugin-react-compiler: "*" + react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 + react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 sass: ^1.3.0 peerDependenciesMeta: "@opentelemetry/api": optional: true "@playwright/test": optional: true + babel-plugin-react-compiler: + optional: true sass: optional: true @@ -6581,30 +6838,6 @@ packages: integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==, } - node-fetch@2.6.7: - resolution: - { - integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==, - } - engines: { node: 4.x || >=6.0.0 } - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - - node-fetch@2.6.9: - resolution: - { - integrity: sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==, - } - engines: { node: 4.x || >=6.0.0 } - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - node-fetch@2.7.0: resolution: { @@ -6617,13 +6850,6 @@ packages: encoding: optional: true - node-gyp-build@4.8.4: - resolution: - { - integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==, - } - hasBin: true - node-int64@0.4.0: resolution: { @@ -6636,14 +6862,6 @@ packages: integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==, } - nopt@5.0.0: - resolution: - { - integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==, - } - engines: { node: ">=6" } - hasBin: true - normalize-path@3.0.0: resolution: { @@ -6665,13 +6883,6 @@ packages: } engines: { node: ">=8" } - npmlog@5.0.1: - resolution: - { - integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==, - } - deprecated: This package is no longer supported. - nuqs@2.4.3: resolution: { @@ -6776,12 +6987,6 @@ packages: } engines: { node: ^10.13.0 || >=12.0.0 } - once@1.3.3: - resolution: - { - integrity: sha512-6vaNInhu+CHxtONf3zw3vq4SP2DOQhjBvIa3rNcG0+P7eKWlYH6Peu7rHizSloRU2EwMz6GraLieis9Ac9+p1w==, - } - once@1.4.0: resolution: { @@ -6838,13 +7043,6 @@ packages: } engines: { node: ">= 0.8.0" } - os-paths@4.4.0: - resolution: - { - integrity: sha512-wrAwOeXp1RRMFfQY8Sy7VaGVmPocaLwSFOYCGKSyo8qmJ+/yaafCl5BCA1IQZWqFSRBrKDYFeR9d/VyQzfH/jg==, - } - engines: { node: ">= 6.0" } - own-keys@1.0.1: resolution: { @@ -6852,13 +7050,6 @@ packages: } engines: { node: ">= 0.4" } - p-finally@2.0.1: - resolution: - { - integrity: sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==, - } - engines: { node: ">=8" } - p-limit@2.3.0: resolution: { @@ -6927,19 +7118,6 @@ packages: } engines: { node: ">=18" } - parse-ms@2.1.0: - resolution: - { - integrity: sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==, - } - engines: { node: ">=6" } - - path-browserify@1.0.1: - resolution: - { - integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==, - } - path-exists@4.0.0: resolution: { @@ -6961,13 +7139,6 @@ packages: } engines: { node: ">=8" } - path-match@1.2.4: - resolution: - { - integrity: sha512-UWlehEdqu36jmh4h5CWJ7tARp1OEVKGHKm6+dg9qMq5RKUTV5WJrGgaZ3dN2m7WFAXDbjlHzvJvL/IUpy84Ktw==, - } - deprecated: This package is archived and no longer maintained. For support, visit https://github.com/expressjs/express/discussions - path-parse@1.0.7: resolution: { @@ -6981,24 +7152,6 @@ packages: } engines: { node: ">=16 || 14 >=14.18" } - path-to-regexp@1.9.0: - resolution: - { - integrity: sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==, - } - - path-to-regexp@6.1.0: - resolution: - { - integrity: sha512-h9DqehX3zZZDCEm+xbfU0ZmwCGFCAAraPJWMXJ4+v32NjZJilVg3k1TcKsRgIb8IQ/izZSaydDc1OhJCZvs2Dw==, - } - - path-to-regexp@6.2.1: - resolution: - { - integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==, - } - path-type@4.0.0: resolution: { @@ -7006,23 +7159,31 @@ packages: } engines: { node: ">=8" } - pend@1.2.0: - resolution: - { - integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==, - } - perfect-freehand@1.2.2: resolution: { integrity: sha512-eh31l019WICQ03pkF3FSzHxB8n07ItqIQ++G5UV8JX0zVOXzgTGCqnRR0jJ2h9U8/2uW4W4mtGJELt9kEV0CFQ==, } - picocolors@1.0.0: + pg-int8@1.0.1: resolution: { - integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==, + integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==, } + engines: { node: ">=4.0.0" } + + pg-protocol@1.10.3: + resolution: + { + integrity: sha512-6DIBgBQaTKDJyxnXaLiLR8wBpQQcGWuAESkRBX/t6OwA8YsqP+iVSiond2EDy6Y/dsGk8rh/jtax3js5NeV7JQ==, + } + + pg-types@2.2.0: + resolution: + { + integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==, + } + engines: { node: ">=4" } picocolors@1.1.1: resolution: @@ -7148,6 +7309,34 @@ packages: } engines: { node: ^10 || ^12 || >=14 } + postgres-array@2.0.0: + resolution: + { + integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==, + } + engines: { node: ">=4" } + + postgres-bytea@1.0.0: + resolution: + { + integrity: sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==, + } + engines: { node: ">=0.10.0" } + + postgres-date@1.0.7: + resolution: + { + integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==, + } + engines: { node: ">=0.10.0" } + + postgres-interval@1.2.0: + resolution: + { + integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==, + } + engines: { node: ">=0.10.0" } + preact-render-to-string@5.2.6: resolution: { @@ -7190,13 +7379,6 @@ packages: } engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } - pretty-ms@7.0.1: - resolution: - { - integrity: sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==, - } - engines: { node: ">=10" } - progress@2.0.3: resolution: { @@ -7204,12 +7386,6 @@ packages: } engines: { node: ">=0.4.0" } - promisepipe@3.0.0: - resolution: - { - integrity: sha512-V6TbZDJ/ZswevgkDNpGt/YqNCiZP9ASfgU+p83uJE6NrGtvSGoOcHLiDCqkMs2+yg7F5qHdLV8d0aS8O26G/KA==, - } - prop-types@15.8.1: resolution: { @@ -7240,12 +7416,6 @@ packages: integrity: sha512-VDdG/VYtOgdGkWJx7y0o7p+zArSf2383Isci8C+BP3YXgMYDoPd3cCBjw0JdWb6YBb9sFiOPbAADDVTPJnh+9g==, } - pump@3.0.3: - resolution: - { - integrity: sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==, - } - punycode@2.3.1: resolution: { @@ -7277,13 +7447,6 @@ packages: integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==, } - raw-body@2.4.1: - resolution: - { - integrity: sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA==, - } - engines: { node: ">= 0.8" } - react-dom@18.3.1: resolution: { @@ -7407,13 +7570,6 @@ packages: } engines: { node: ">= 6" } - readdirp@3.3.0: - resolution: - { - integrity: sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ==, - } - engines: { node: ">=8.10.0" } - readdirp@3.6.0: resolution: { @@ -7503,6 +7659,13 @@ packages: } engines: { node: ">=0.10.0" } + require-in-the-middle@7.5.2: + resolution: + { + integrity: sha512-gAZ+kLqBdHarXB64XpAe2VCjB7rIRv+mU8tfRWziHRJ5umKsIHN2tLLv6EtMw7WCdP19S0ERVMldNvxYCHnhSQ==, + } + engines: { node: ">=8.6.0" } + reraf@1.1.1: resolution: { @@ -7571,20 +7734,12 @@ packages: } engines: { iojs: ">=1.0.0", node: ">=0.10.0" } - rimraf@3.0.2: + rollup@4.50.1: resolution: { - integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==, + integrity: sha512-78E9voJHwnXQMiQdiqswVLZwJIzdBKJ1GdI5Zx6XwoFKUIk09/sSrr+05QFzvYb8q6Y9pPV45zzDuYa3907TZA==, } - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true - - rollup@2.79.2: - resolution: - { - integrity: sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==, - } - engines: { node: ">=10.0.0" } + engines: { node: ">=18.0.0", npm: ">=8.0.0" } hasBin: true rtcstats@https://codeload.github.com/whereby/rtcstats/tar.gz/63bcb6420d76d34161b39e494524ae73aa6dd70d: @@ -7634,12 +7789,6 @@ packages: } engines: { node: ">= 0.4" } - safer-buffer@2.1.2: - resolution: - { - integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==, - } - sass@1.90.0: resolution: { @@ -7654,6 +7803,13 @@ packages: integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==, } + schema-utils@4.3.2: + resolution: + { + integrity: sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==, + } + engines: { node: ">= 10.13.0" } + sdp-transform@2.15.0: resolution: { @@ -7674,14 +7830,6 @@ packages: } hasBin: true - semver@7.3.5: - resolution: - { - integrity: sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==, - } - engines: { node: ">=10" } - hasBin: true - semver@7.7.2: resolution: { @@ -7690,10 +7838,10 @@ packages: engines: { node: ">=10" } hasBin: true - set-blocking@2.0.0: + serialize-javascript@6.0.2: resolution: { - integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==, + integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==, } set-function-length@1.2.2: @@ -7717,11 +7865,12 @@ packages: } engines: { node: ">= 0.4" } - setprototypeof@1.1.1: + sharp@0.34.3: resolution: { - integrity: sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==, + integrity: sha512-eX2IQ6nFohW4DbvHIOLRB3MHFpYqaqvXd3Tp5e/T/dSH83fxaNJQRvDMhASmkNTsNTVF2/OOopzRCt7xokgPfg==, } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } shebang-command@2.0.0: resolution: @@ -7737,6 +7886,12 @@ packages: } engines: { node: ">=8" } + shimmer@1.2.1: + resolution: + { + integrity: sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==, + } + side-channel-list@1.0.0: resolution: { @@ -7771,13 +7926,6 @@ packages: integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==, } - signal-exit@4.0.2: - resolution: - { - integrity: sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==, - } - engines: { node: ">=14" } - signal-exit@4.1.0: resolution: { @@ -7791,6 +7939,12 @@ packages: integrity: sha512-D1SaWpOW8afq1CZGWB8xTfrT3FekjQmPValrqncJMX7QFl8YwhrPTZvMCANLtgBwwdS+7zURyqxDDEmY558tTw==, } + simple-swizzle@0.2.2: + resolution: + { + integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==, + } + slash@3.0.0: resolution: { @@ -7825,6 +7979,12 @@ packages: integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==, } + source-map-support@0.5.21: + resolution: + { + integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==, + } + source-map@0.5.7: resolution: { @@ -7883,19 +8043,6 @@ packages: integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==, } - stat-mode@0.3.0: - resolution: - { - integrity: sha512-QjMLR0A3WwFY2aZdV0okfFEJB5TRjkggXZjxP3A1RsWsNHNu3YPv8btmtc6iCFZ0Rul3FE93OYogvhOUClU+ng==, - } - - statuses@1.5.0: - resolution: - { - integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==, - } - engines: { node: ">= 0.6" } - stop-iteration-iterator@1.1.0: resolution: { @@ -7903,25 +8050,6 @@ packages: } engines: { node: ">= 0.4" } - stream-to-array@2.3.0: - resolution: - { - integrity: sha512-UsZtOYEn4tWU2RGLOXr/o/xjRBftZRlG3dEWoaHr8j4GuypJ3isitGbVyjQKAuMu+xbiop8q224TjiZWc4XTZA==, - } - - stream-to-promise@2.2.0: - resolution: - { - integrity: sha512-HAGUASw8NT0k8JvIVutB2Y/9iBk7gpgEyAudXwNJmZERdMITGdajOa4VJfD/kNiA3TppQpTP4J+CtcHwdzKBAw==, - } - - streamsearch@1.1.0: - resolution: - { - integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==, - } - engines: { node: ">=10.0.0" } - string-length@4.0.2: resolution: { @@ -8050,16 +8178,16 @@ packages: integrity: sha512-G4qppLgKu/k6FwRpHiGiKPaPTFcG3g4wNVX/Qsfu+RqQM30E7Tyu/TEgxcL9PNLF5pdRLwQdE3YKKf+KF2Dzlw==, } - styled-jsx@5.1.1: + styled-jsx@5.1.6: resolution: { - integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==, + integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==, } engines: { node: ">= 12.0.0" } peerDependencies: "@babel/core": "*" babel-plugin-macros: "*" - react: ">= 16.8.0 || 17.x.x || ^18.0.0-0" + react: ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0" peerDependenciesMeta: "@babel/core": optional: true @@ -8130,19 +8258,39 @@ packages: engines: { node: ">=14.0.0" } hasBin: true - tar@4.4.18: + tapable@2.2.3: resolution: { - integrity: sha512-ZuOtqqmkV9RE1+4odd+MhBpibmCxNP6PJhH/h2OqNuotTX7/XHPZQJv2pKvWMplFH9SIZZhitehh6vBH6LO8Pg==, + integrity: sha512-ZL6DDuAlRlLGghwcfmSn9sK3Hr6ArtyudlSAiCqQ6IfE+b+HHbydbYDIG15IfS5do+7XQQBdBiubF/cV2dnDzg==, } - engines: { node: ">=4.5" } + engines: { node: ">=6" } - tar@6.2.1: + terser-webpack-plugin@5.3.14: resolution: { - integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==, + integrity: sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==, + } + engines: { node: ">= 10.13.0" } + peerDependencies: + "@swc/core": "*" + esbuild: "*" + uglify-js: "*" + webpack: ^5.1.0 + peerDependenciesMeta: + "@swc/core": + optional: true + esbuild: + optional: true + uglify-js: + optional: true + + terser@5.44.0: + resolution: + { + integrity: sha512-nIVck8DK+GM/0Frwd+nIhZ84pR/BX7rmXMfYwyg+Sri5oGVE99/E3KvXqpC2xHFxyqXyGHTKBSioxxplrO4I4w==, } engines: { node: ">=10" } + hasBin: true test-exclude@6.0.0: resolution: @@ -8164,13 +8312,6 @@ packages: integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==, } - time-span@4.0.0: - resolution: - { - integrity: sha512-MyqZCTGLDZ77u4k+jqg4UlrzPTPZ49NDlaekU6uuFaJLzPIN1woaRXCbGeqOfxwc3Y37ZROGAJ614Rdv7Olt+g==, - } - engines: { node: ">=10" } - tinyglobby@0.2.14: resolution: { @@ -8191,26 +8332,12 @@ packages: } engines: { node: ">=8.0" } - toidentifier@1.0.0: - resolution: - { - integrity: sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==, - } - engines: { node: ">=0.6" } - tr46@0.0.3: resolution: { integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==, } - tree-kill@1.2.2: - resolution: - { - integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==, - } - hasBin: true - trim-lines@3.0.1: resolution: { @@ -8268,12 +8395,6 @@ packages: jest-util: optional: true - ts-morph@12.0.0: - resolution: - { - integrity: sha512-VHC8XgU2fFW7yO1f/b3mxKDje1vmyzFXHWzOYmKEkCEwcLjDtbdLgBQviqj4ZwP4MJkQtRo6Ha2I29lq/B+VxA==, - } - ts-node@10.9.1: resolution: { @@ -8291,12 +8412,6 @@ packages: "@swc/wasm": optional: true - ts-toolbelt@6.15.5: - resolution: - { - integrity: sha512-FZIXf1ksVyLcfr7M317jbB67XFJhOO1YqdTcuGaq9q5jLUoTikukZ+98TPjKiP2jC5CgmYdWWYs0s2nLSU0/1A==, - } - tsconfig-paths@3.15.0: resolution: { @@ -8372,14 +8487,6 @@ packages: } engines: { node: ">= 0.4" } - typescript@4.9.5: - resolution: - { - integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==, - } - engines: { node: ">=4.2.0" } - hasBin: true - typescript@5.9.2: resolution: { @@ -8440,12 +8547,6 @@ packages: integrity: sha512-o0QVGuFg24FK765Qdd5kk0zU/U4dEsCtN/GSiwNI9i8xsSVtjIAOdTaVhLwZ1nrbWxFVMxNDDl+9fednsOMsBw==, } - uid-promise@1.0.0: - resolution: - { - integrity: sha512-R8375j0qwXyIu/7R0tjdF06/sElHqbmdmWC9M2qQHpEVbvE4I5+38KJI7LUUmQMp7NVq4tKHiBMkT0NFM453Ig==, - } - umap@1.0.2: resolution: { @@ -8465,13 +8566,6 @@ packages: integrity: sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==, } - undici@5.28.4: - resolution: - { - integrity: sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==, - } - engines: { node: ">=14.0" } - unified@11.0.5: resolution: { @@ -8508,26 +8602,11 @@ packages: integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==, } - universalify@0.1.2: + unplugin@1.0.1: resolution: { - integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==, + integrity: sha512-aqrHaVBWW1JVKBHmGo33T5TxeL0qWzfvjWokObHA9bYmN7eNDkwOxmLjhioHl9878qDFMAaT51XNroRyuz7WxA==, } - engines: { node: ">= 4.0.0" } - - universalify@2.0.1: - resolution: - { - integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==, - } - engines: { node: ">= 10.0.0" } - - unpipe@1.0.0: - resolution: - { - integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==, - } - engines: { node: ">= 0.8" } unrs-resolver@1.11.1: resolution: @@ -8600,14 +8679,6 @@ packages: integrity: sha512-Fykw5U4eZESbq739BeLvEBFRuJODfrlmjx5eJux7W817LjRaq4b7/i4t2zxQmhcX+fAj4nMfRdTzO4tmwLKn0w==, } - uuid@3.3.2: - resolution: - { - integrity: sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==, - } - deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. - hasBin: true - uuid@8.3.2: resolution: { @@ -8641,14 +8712,6 @@ packages: } engines: { node: ">=10.12.0" } - vercel@37.14.0: - resolution: - { - integrity: sha512-ZSEvhARyJBn4YnEVZULsvti8/OHd5txRCgJqEhNIyo/XXSvBJSvlCjA+SE1zraqn0rqyEOG3+56N3kh1Enk8Tg==, - } - engines: { node: ">= 16" } - hasBin: true - vfile-message@4.0.3: resolution: { @@ -8667,18 +8730,19 @@ packages: integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==, } + watchpack@2.4.4: + resolution: + { + integrity: sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==, + } + engines: { node: ">=10.13.0" } + wavesurfer.js@7.10.1: resolution: { integrity: sha512-tF1ptFCAi8SAqKbM1e7705zouLC3z4ulXCg15kSP5dQ7VDV30Q3x/xFRcuVIYTT5+jB/PdkhiBRCfsMshZG1Ug==, } - web-vitals@0.2.4: - resolution: - { - integrity: sha512-6BjspCO9VriYy12z356nL6JBS0GYeEcA457YyRzD+dD6XYCQ75NKhcOHUMHentOE7OcVCIXXDvOm0jKFfQG2Gg==, - } - webidl-conversions@3.0.1: resolution: { @@ -8692,6 +8756,25 @@ packages: } engines: { node: ">=10.13.0" } + webpack-virtual-modules@0.5.0: + resolution: + { + integrity: sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==, + } + + webpack@5.101.3: + resolution: + { + integrity: sha512-7b0dTKR3Ed//AD/6kkx/o7duS8H3f1a4w3BYpIriX4BzIhjkn4teo05cptsxvLesHFKK5KObnadmCHBwGc+51A==, + } + engines: { node: ">=10.13.0" } + hasBin: true + peerDependencies: + webpack-cli: "*" + peerDependenciesMeta: + webpack-cli: + optional: true + webrtc-adapter@9.0.3: resolution: { @@ -8741,12 +8824,6 @@ packages: engines: { node: ">= 8" } hasBin: true - wide-align@1.1.5: - resolution: - { - integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==, - } - word-wrap@1.2.5: resolution: { @@ -8802,20 +8879,6 @@ packages: utf-8-validate: optional: true - xdg-app-paths@5.1.0: - resolution: - { - integrity: sha512-RAQ3WkPf4KTU1A8RtFx3gWywzVKe00tfOPFfl2NDGqbIFENQO4kqAJp7mhQjNj/33W5x5hiWWUdyfPq/5SU3QA==, - } - engines: { node: ">=6" } - - xdg-portable@7.3.0: - resolution: - { - integrity: sha512-sqMMuL1rc0FmMBOzCpd0yuy9trqF2yTTVe+E9ogwCSWQCdDEtQUwrZPT6AxqtsFGRNxycgncbP/xmOOSPw5ZUw==, - } - engines: { node: ">= 6.0" } - xmlhttprequest-ssl@2.0.0: resolution: { @@ -8823,6 +8886,13 @@ packages: } engines: { node: ">=0.4.0" } + xtend@4.0.2: + resolution: + { + integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==, + } + engines: { node: ">=0.4" } + y18n@5.0.8: resolution: { @@ -8877,26 +8947,6 @@ packages: } engines: { node: ">=12" } - yauzl-clone@1.0.4: - resolution: - { - integrity: sha512-igM2RRCf3k8TvZoxR2oguuw4z1xasOnA31joCqHIyLkeWrvAc2Jgay5ISQ2ZplinkoGaJ6orCz56Ey456c5ESA==, - } - engines: { node: ">=6" } - - yauzl-promise@2.1.3: - resolution: - { - integrity: sha512-A1pf6fzh6eYkK0L4Qp7g9jzJSDrM6nN0bOn5T0IbY4Yo3w+YkWlHFkJP7mzknMXjqusHFHlKsK2N+4OLsK2MRA==, - } - engines: { node: ">=6" } - - yauzl@2.10.0: - resolution: - { - integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==, - } - yn@3.1.1: resolution: { @@ -9227,18 +9277,7 @@ snapshots: "@cspotcode/source-map-support@0.8.1": dependencies: "@jridgewell/trace-mapping": 0.3.9 - - "@edge-runtime/format@2.2.1": {} - - "@edge-runtime/node-utils@2.3.0": {} - - "@edge-runtime/ponyfill@2.4.2": {} - - "@edge-runtime/primitives@4.1.0": {} - - "@edge-runtime/vm@3.2.0": - dependencies: - "@edge-runtime/primitives": 4.1.0 + optional: true "@emnapi/core@1.4.5": dependencies: @@ -9368,8 +9407,6 @@ snapshots: "@eslint/core": 0.15.2 levn: 0.4.1 - "@fastify/busboy@2.1.1": {} - "@floating-ui/core@1.7.3": dependencies: "@floating-ui/utils": 0.2.10 @@ -9421,6 +9458,92 @@ snapshots: "@humanwhocodes/retry@0.4.3": {} + "@img/sharp-darwin-arm64@0.34.3": + optionalDependencies: + "@img/sharp-libvips-darwin-arm64": 1.2.0 + optional: true + + "@img/sharp-darwin-x64@0.34.3": + optionalDependencies: + "@img/sharp-libvips-darwin-x64": 1.2.0 + optional: true + + "@img/sharp-libvips-darwin-arm64@1.2.0": + optional: true + + "@img/sharp-libvips-darwin-x64@1.2.0": + optional: true + + "@img/sharp-libvips-linux-arm64@1.2.0": + optional: true + + "@img/sharp-libvips-linux-arm@1.2.0": + optional: true + + "@img/sharp-libvips-linux-ppc64@1.2.0": + optional: true + + "@img/sharp-libvips-linux-s390x@1.2.0": + optional: true + + "@img/sharp-libvips-linux-x64@1.2.0": + optional: true + + "@img/sharp-libvips-linuxmusl-arm64@1.2.0": + optional: true + + "@img/sharp-libvips-linuxmusl-x64@1.2.0": + optional: true + + "@img/sharp-linux-arm64@0.34.3": + optionalDependencies: + "@img/sharp-libvips-linux-arm64": 1.2.0 + optional: true + + "@img/sharp-linux-arm@0.34.3": + optionalDependencies: + "@img/sharp-libvips-linux-arm": 1.2.0 + optional: true + + "@img/sharp-linux-ppc64@0.34.3": + optionalDependencies: + "@img/sharp-libvips-linux-ppc64": 1.2.0 + optional: true + + "@img/sharp-linux-s390x@0.34.3": + optionalDependencies: + "@img/sharp-libvips-linux-s390x": 1.2.0 + optional: true + + "@img/sharp-linux-x64@0.34.3": + optionalDependencies: + "@img/sharp-libvips-linux-x64": 1.2.0 + optional: true + + "@img/sharp-linuxmusl-arm64@0.34.3": + optionalDependencies: + "@img/sharp-libvips-linuxmusl-arm64": 1.2.0 + optional: true + + "@img/sharp-linuxmusl-x64@0.34.3": + optionalDependencies: + "@img/sharp-libvips-linuxmusl-x64": 1.2.0 + optional: true + + "@img/sharp-wasm32@0.34.3": + dependencies: + "@emnapi/runtime": 1.4.5 + optional: true + + "@img/sharp-win32-arm64@0.34.3": + optional: true + + "@img/sharp-win32-ia32@0.34.3": + optional: true + + "@img/sharp-win32-x64@0.34.3": + optional: true + "@internationalized/date@3.8.2": dependencies: "@swc/helpers": 0.5.17 @@ -9459,7 +9582,7 @@ snapshots: jest-util: 30.0.5 slash: 3.0.0 - "@jest/core@30.1.3(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@types/node@16.18.11)(typescript@5.9.2))": + "@jest/core@30.1.3(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@types/node@24.2.1)(typescript@5.9.2))": dependencies: "@jest/console": 30.1.2 "@jest/pattern": 30.0.1 @@ -9474,7 +9597,7 @@ snapshots: exit-x: 0.2.2 graceful-fs: 4.2.11 jest-changed-files: 30.0.5 - jest-config: 30.1.3(@types/node@24.2.1)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@types/node@16.18.11)(typescript@5.9.2)) + jest-config: 30.1.3(@types/node@24.2.1)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@types/node@24.2.1)(typescript@5.9.2)) jest-haste-map: 30.1.0 jest-message-util: 30.1.0 jest-regex-util: 30.0.1 @@ -9649,6 +9772,11 @@ snapshots: "@jridgewell/resolve-uri@3.1.2": {} + "@jridgewell/source-map@0.3.11": + dependencies: + "@jridgewell/gen-mapping": 0.3.13 + "@jridgewell/trace-mapping": 0.3.31 + "@jridgewell/sourcemap-codec@1.5.5": {} "@jridgewell/trace-mapping@0.3.30": @@ -9656,25 +9784,16 @@ snapshots: "@jridgewell/resolve-uri": 3.1.2 "@jridgewell/sourcemap-codec": 1.5.5 + "@jridgewell/trace-mapping@0.3.31": + dependencies: + "@jridgewell/resolve-uri": 3.1.2 + "@jridgewell/sourcemap-codec": 1.5.5 + "@jridgewell/trace-mapping@0.3.9": dependencies: "@jridgewell/resolve-uri": 3.1.2 "@jridgewell/sourcemap-codec": 1.5.5 - - "@mapbox/node-pre-gyp@1.0.11": - dependencies: - detect-libc: 2.0.4 - https-proxy-agent: 5.0.1 - make-dir: 3.1.0 - node-fetch: 2.7.0 - nopt: 5.0.0 - npmlog: 5.0.1 - rimraf: 3.0.2 - semver: 7.7.2 - tar: 6.2.1 - transitivePeerDependencies: - - encoding - - supports-color + optional: true "@napi-rs/wasm-runtime@0.2.12": dependencies: @@ -9683,37 +9802,34 @@ snapshots: "@tybys/wasm-util": 0.10.0 optional: true - "@next/env@14.2.31": {} + "@next/env@15.5.3": {} - "@next/eslint-plugin-next@14.2.31": + "@next/eslint-plugin-next@15.5.3": dependencies: - glob: 10.3.10 + fast-glob: 3.3.1 - "@next/swc-darwin-arm64@14.2.31": + "@next/swc-darwin-arm64@15.5.3": optional: true - "@next/swc-darwin-x64@14.2.31": + "@next/swc-darwin-x64@15.5.3": optional: true - "@next/swc-linux-arm64-gnu@14.2.31": + "@next/swc-linux-arm64-gnu@15.5.3": optional: true - "@next/swc-linux-arm64-musl@14.2.31": + "@next/swc-linux-arm64-musl@15.5.3": optional: true - "@next/swc-linux-x64-gnu@14.2.31": + "@next/swc-linux-x64-gnu@15.5.3": optional: true - "@next/swc-linux-x64-musl@14.2.31": + "@next/swc-linux-x64-musl@15.5.3": optional: true - "@next/swc-win32-arm64-msvc@14.2.31": + "@next/swc-win32-arm64-msvc@15.5.3": optional: true - "@next/swc-win32-ia32-msvc@14.2.31": - optional: true - - "@next/swc-win32-x64-msvc@14.2.31": + "@next/swc-win32-x64-msvc@15.5.3": optional: true "@nodelib/fs.scandir@2.1.5": @@ -9730,6 +9846,276 @@ snapshots: "@nolyfill/is-core-module@1.0.39": {} + "@opentelemetry/api-logs@0.203.0": + dependencies: + "@opentelemetry/api": 1.9.0 + + "@opentelemetry/api-logs@0.204.0": + dependencies: + "@opentelemetry/api": 1.9.0 + + "@opentelemetry/api-logs@0.57.2": + dependencies: + "@opentelemetry/api": 1.9.0 + + "@opentelemetry/api@1.9.0": {} + + "@opentelemetry/context-async-hooks@2.1.0(@opentelemetry/api@1.9.0)": + dependencies: + "@opentelemetry/api": 1.9.0 + + "@opentelemetry/core@2.0.1(@opentelemetry/api@1.9.0)": + dependencies: + "@opentelemetry/api": 1.9.0 + "@opentelemetry/semantic-conventions": 1.37.0 + + "@opentelemetry/core@2.1.0(@opentelemetry/api@1.9.0)": + dependencies: + "@opentelemetry/api": 1.9.0 + "@opentelemetry/semantic-conventions": 1.37.0 + + "@opentelemetry/instrumentation-amqplib@0.50.0(@opentelemetry/api@1.9.0)": + dependencies: + "@opentelemetry/api": 1.9.0 + "@opentelemetry/core": 2.1.0(@opentelemetry/api@1.9.0) + "@opentelemetry/instrumentation": 0.203.0(@opentelemetry/api@1.9.0) + "@opentelemetry/semantic-conventions": 1.37.0 + transitivePeerDependencies: + - supports-color + + "@opentelemetry/instrumentation-connect@0.47.0(@opentelemetry/api@1.9.0)": + dependencies: + "@opentelemetry/api": 1.9.0 + "@opentelemetry/core": 2.1.0(@opentelemetry/api@1.9.0) + "@opentelemetry/instrumentation": 0.203.0(@opentelemetry/api@1.9.0) + "@opentelemetry/semantic-conventions": 1.37.0 + "@types/connect": 3.4.38 + transitivePeerDependencies: + - supports-color + + "@opentelemetry/instrumentation-dataloader@0.21.1(@opentelemetry/api@1.9.0)": + dependencies: + "@opentelemetry/api": 1.9.0 + "@opentelemetry/instrumentation": 0.203.0(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + + "@opentelemetry/instrumentation-express@0.52.0(@opentelemetry/api@1.9.0)": + dependencies: + "@opentelemetry/api": 1.9.0 + "@opentelemetry/core": 2.1.0(@opentelemetry/api@1.9.0) + "@opentelemetry/instrumentation": 0.203.0(@opentelemetry/api@1.9.0) + "@opentelemetry/semantic-conventions": 1.37.0 + transitivePeerDependencies: + - supports-color + + "@opentelemetry/instrumentation-fs@0.23.0(@opentelemetry/api@1.9.0)": + dependencies: + "@opentelemetry/api": 1.9.0 + "@opentelemetry/core": 2.1.0(@opentelemetry/api@1.9.0) + "@opentelemetry/instrumentation": 0.203.0(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + + "@opentelemetry/instrumentation-generic-pool@0.47.0(@opentelemetry/api@1.9.0)": + dependencies: + "@opentelemetry/api": 1.9.0 + "@opentelemetry/instrumentation": 0.203.0(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + + "@opentelemetry/instrumentation-graphql@0.51.0(@opentelemetry/api@1.9.0)": + dependencies: + "@opentelemetry/api": 1.9.0 + "@opentelemetry/instrumentation": 0.203.0(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + + "@opentelemetry/instrumentation-hapi@0.50.0(@opentelemetry/api@1.9.0)": + dependencies: + "@opentelemetry/api": 1.9.0 + "@opentelemetry/core": 2.1.0(@opentelemetry/api@1.9.0) + "@opentelemetry/instrumentation": 0.203.0(@opentelemetry/api@1.9.0) + "@opentelemetry/semantic-conventions": 1.37.0 + transitivePeerDependencies: + - supports-color + + "@opentelemetry/instrumentation-http@0.203.0(@opentelemetry/api@1.9.0)": + dependencies: + "@opentelemetry/api": 1.9.0 + "@opentelemetry/core": 2.0.1(@opentelemetry/api@1.9.0) + "@opentelemetry/instrumentation": 0.203.0(@opentelemetry/api@1.9.0) + "@opentelemetry/semantic-conventions": 1.37.0 + forwarded-parse: 2.1.2 + transitivePeerDependencies: + - supports-color + + "@opentelemetry/instrumentation-ioredis@0.52.0(@opentelemetry/api@1.9.0)": + dependencies: + "@opentelemetry/api": 1.9.0 + "@opentelemetry/instrumentation": 0.204.0(@opentelemetry/api@1.9.0) + "@opentelemetry/redis-common": 0.38.0 + "@opentelemetry/semantic-conventions": 1.37.0 + transitivePeerDependencies: + - supports-color + + "@opentelemetry/instrumentation-kafkajs@0.13.0(@opentelemetry/api@1.9.0)": + dependencies: + "@opentelemetry/api": 1.9.0 + "@opentelemetry/instrumentation": 0.203.0(@opentelemetry/api@1.9.0) + "@opentelemetry/semantic-conventions": 1.37.0 + transitivePeerDependencies: + - supports-color + + "@opentelemetry/instrumentation-knex@0.48.0(@opentelemetry/api@1.9.0)": + dependencies: + "@opentelemetry/api": 1.9.0 + "@opentelemetry/instrumentation": 0.203.0(@opentelemetry/api@1.9.0) + "@opentelemetry/semantic-conventions": 1.37.0 + transitivePeerDependencies: + - supports-color + + "@opentelemetry/instrumentation-koa@0.51.0(@opentelemetry/api@1.9.0)": + dependencies: + "@opentelemetry/api": 1.9.0 + "@opentelemetry/core": 2.1.0(@opentelemetry/api@1.9.0) + "@opentelemetry/instrumentation": 0.203.0(@opentelemetry/api@1.9.0) + "@opentelemetry/semantic-conventions": 1.37.0 + transitivePeerDependencies: + - supports-color + + "@opentelemetry/instrumentation-lru-memoizer@0.48.0(@opentelemetry/api@1.9.0)": + dependencies: + "@opentelemetry/api": 1.9.0 + "@opentelemetry/instrumentation": 0.203.0(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + + "@opentelemetry/instrumentation-mongodb@0.56.0(@opentelemetry/api@1.9.0)": + dependencies: + "@opentelemetry/api": 1.9.0 + "@opentelemetry/instrumentation": 0.203.0(@opentelemetry/api@1.9.0) + "@opentelemetry/semantic-conventions": 1.37.0 + transitivePeerDependencies: + - supports-color + + "@opentelemetry/instrumentation-mongoose@0.50.0(@opentelemetry/api@1.9.0)": + dependencies: + "@opentelemetry/api": 1.9.0 + "@opentelemetry/core": 2.1.0(@opentelemetry/api@1.9.0) + "@opentelemetry/instrumentation": 0.203.0(@opentelemetry/api@1.9.0) + "@opentelemetry/semantic-conventions": 1.37.0 + transitivePeerDependencies: + - supports-color + + "@opentelemetry/instrumentation-mysql2@0.50.0(@opentelemetry/api@1.9.0)": + dependencies: + "@opentelemetry/api": 1.9.0 + "@opentelemetry/instrumentation": 0.203.0(@opentelemetry/api@1.9.0) + "@opentelemetry/semantic-conventions": 1.37.0 + "@opentelemetry/sql-common": 0.41.0(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + + "@opentelemetry/instrumentation-mysql@0.49.0(@opentelemetry/api@1.9.0)": + dependencies: + "@opentelemetry/api": 1.9.0 + "@opentelemetry/instrumentation": 0.203.0(@opentelemetry/api@1.9.0) + "@opentelemetry/semantic-conventions": 1.37.0 + "@types/mysql": 2.15.27 + transitivePeerDependencies: + - supports-color + + "@opentelemetry/instrumentation-pg@0.55.0(@opentelemetry/api@1.9.0)": + dependencies: + "@opentelemetry/api": 1.9.0 + "@opentelemetry/core": 2.1.0(@opentelemetry/api@1.9.0) + "@opentelemetry/instrumentation": 0.203.0(@opentelemetry/api@1.9.0) + "@opentelemetry/semantic-conventions": 1.37.0 + "@opentelemetry/sql-common": 0.41.0(@opentelemetry/api@1.9.0) + "@types/pg": 8.15.4 + "@types/pg-pool": 2.0.6 + transitivePeerDependencies: + - supports-color + + "@opentelemetry/instrumentation-redis@0.51.0(@opentelemetry/api@1.9.0)": + dependencies: + "@opentelemetry/api": 1.9.0 + "@opentelemetry/instrumentation": 0.203.0(@opentelemetry/api@1.9.0) + "@opentelemetry/redis-common": 0.38.0 + "@opentelemetry/semantic-conventions": 1.37.0 + transitivePeerDependencies: + - supports-color + + "@opentelemetry/instrumentation-tedious@0.22.0(@opentelemetry/api@1.9.0)": + dependencies: + "@opentelemetry/api": 1.9.0 + "@opentelemetry/instrumentation": 0.203.0(@opentelemetry/api@1.9.0) + "@opentelemetry/semantic-conventions": 1.37.0 + "@types/tedious": 4.0.14 + transitivePeerDependencies: + - supports-color + + "@opentelemetry/instrumentation-undici@0.14.0(@opentelemetry/api@1.9.0)": + dependencies: + "@opentelemetry/api": 1.9.0 + "@opentelemetry/core": 2.1.0(@opentelemetry/api@1.9.0) + "@opentelemetry/instrumentation": 0.203.0(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + + "@opentelemetry/instrumentation@0.203.0(@opentelemetry/api@1.9.0)": + dependencies: + "@opentelemetry/api": 1.9.0 + "@opentelemetry/api-logs": 0.203.0 + import-in-the-middle: 1.14.2 + require-in-the-middle: 7.5.2 + transitivePeerDependencies: + - supports-color + + "@opentelemetry/instrumentation@0.204.0(@opentelemetry/api@1.9.0)": + dependencies: + "@opentelemetry/api": 1.9.0 + "@opentelemetry/api-logs": 0.204.0 + import-in-the-middle: 1.14.2 + require-in-the-middle: 7.5.2 + transitivePeerDependencies: + - supports-color + + "@opentelemetry/instrumentation@0.57.2(@opentelemetry/api@1.9.0)": + dependencies: + "@opentelemetry/api": 1.9.0 + "@opentelemetry/api-logs": 0.57.2 + "@types/shimmer": 1.2.0 + import-in-the-middle: 1.14.2 + require-in-the-middle: 7.5.2 + semver: 7.7.2 + shimmer: 1.2.1 + transitivePeerDependencies: + - supports-color + + "@opentelemetry/redis-common@0.38.0": {} + + "@opentelemetry/resources@2.1.0(@opentelemetry/api@1.9.0)": + dependencies: + "@opentelemetry/api": 1.9.0 + "@opentelemetry/core": 2.1.0(@opentelemetry/api@1.9.0) + "@opentelemetry/semantic-conventions": 1.37.0 + + "@opentelemetry/sdk-trace-base@2.1.0(@opentelemetry/api@1.9.0)": + dependencies: + "@opentelemetry/api": 1.9.0 + "@opentelemetry/core": 2.1.0(@opentelemetry/api@1.9.0) + "@opentelemetry/resources": 2.1.0(@opentelemetry/api@1.9.0) + "@opentelemetry/semantic-conventions": 1.37.0 + + "@opentelemetry/semantic-conventions@1.37.0": {} + + "@opentelemetry/sql-common@0.41.0(@opentelemetry/api@1.9.0)": + dependencies: + "@opentelemetry/api": 1.9.0 + "@opentelemetry/core": 2.1.0(@opentelemetry/api@1.9.0) + "@pandacss/is-valid-prop@0.54.0": {} "@panva/hkdf@1.2.1": {} @@ -9800,6 +10186,13 @@ snapshots: "@pkgr/core@0.2.9": {} + "@prisma/instrumentation@6.14.0(@opentelemetry/api@1.9.0)": + dependencies: + "@opentelemetry/api": 1.9.0 + "@opentelemetry/instrumentation": 0.57.2(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + "@radix-ui/primitive@1.1.3": {} "@radix-ui/react-arrow@1.1.7(@types/react@18.2.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)": @@ -10013,157 +10406,293 @@ snapshots: optionalDependencies: react: 18.3.1 - "@rollup/plugin-commonjs@24.0.0(rollup@2.79.2)": + "@rollup/plugin-commonjs@28.0.1(rollup@4.50.1)": dependencies: - "@rollup/pluginutils": 5.2.0(rollup@2.79.2) + "@rollup/pluginutils": 5.2.0(rollup@4.50.1) commondir: 1.0.1 estree-walker: 2.0.2 - glob: 8.1.0 + fdir: 6.4.6(picomatch@4.0.3) is-reference: 1.2.1 - magic-string: 0.27.0 + magic-string: 0.30.19 + picomatch: 4.0.3 optionalDependencies: - rollup: 2.79.2 + rollup: 4.50.1 - "@rollup/pluginutils@4.2.1": - dependencies: - estree-walker: 2.0.2 - picomatch: 2.3.1 - - "@rollup/pluginutils@5.2.0(rollup@2.79.2)": + "@rollup/pluginutils@5.2.0(rollup@4.50.1)": dependencies: "@types/estree": 1.0.8 estree-walker: 2.0.2 picomatch: 4.0.3 optionalDependencies: - rollup: 2.79.2 + rollup: 4.50.1 + + "@rollup/rollup-android-arm-eabi@4.50.1": + optional: true + + "@rollup/rollup-android-arm64@4.50.1": + optional: true + + "@rollup/rollup-darwin-arm64@4.50.1": + optional: true + + "@rollup/rollup-darwin-x64@4.50.1": + optional: true + + "@rollup/rollup-freebsd-arm64@4.50.1": + optional: true + + "@rollup/rollup-freebsd-x64@4.50.1": + optional: true + + "@rollup/rollup-linux-arm-gnueabihf@4.50.1": + optional: true + + "@rollup/rollup-linux-arm-musleabihf@4.50.1": + optional: true + + "@rollup/rollup-linux-arm64-gnu@4.50.1": + optional: true + + "@rollup/rollup-linux-arm64-musl@4.50.1": + optional: true + + "@rollup/rollup-linux-loongarch64-gnu@4.50.1": + optional: true + + "@rollup/rollup-linux-ppc64-gnu@4.50.1": + optional: true + + "@rollup/rollup-linux-riscv64-gnu@4.50.1": + optional: true + + "@rollup/rollup-linux-riscv64-musl@4.50.1": + optional: true + + "@rollup/rollup-linux-s390x-gnu@4.50.1": + optional: true + + "@rollup/rollup-linux-x64-gnu@4.50.1": + optional: true + + "@rollup/rollup-linux-x64-musl@4.50.1": + optional: true + + "@rollup/rollup-openharmony-arm64@4.50.1": + optional: true + + "@rollup/rollup-win32-arm64-msvc@4.50.1": + optional: true + + "@rollup/rollup-win32-ia32-msvc@4.50.1": + optional: true + + "@rollup/rollup-win32-x64-msvc@4.50.1": + optional: true "@rtsao/scc@1.1.0": {} "@rushstack/eslint-patch@1.12.0": {} - "@sentry-internal/feedback@7.120.4": + "@sentry-internal/browser-utils@10.11.0": dependencies: - "@sentry/core": 7.120.4 - "@sentry/types": 7.120.4 - "@sentry/utils": 7.120.4 + "@sentry/core": 10.11.0 - "@sentry-internal/replay-canvas@7.120.4": + "@sentry-internal/feedback@10.11.0": dependencies: - "@sentry/core": 7.120.4 - "@sentry/replay": 7.120.4 - "@sentry/types": 7.120.4 - "@sentry/utils": 7.120.4 + "@sentry/core": 10.11.0 - "@sentry-internal/tracing@7.120.4": + "@sentry-internal/replay-canvas@10.11.0": dependencies: - "@sentry/core": 7.120.4 - "@sentry/types": 7.120.4 - "@sentry/utils": 7.120.4 + "@sentry-internal/replay": 10.11.0 + "@sentry/core": 10.11.0 - "@sentry/browser@7.120.4": + "@sentry-internal/replay@10.11.0": dependencies: - "@sentry-internal/feedback": 7.120.4 - "@sentry-internal/replay-canvas": 7.120.4 - "@sentry-internal/tracing": 7.120.4 - "@sentry/core": 7.120.4 - "@sentry/integrations": 7.120.4 - "@sentry/replay": 7.120.4 - "@sentry/types": 7.120.4 - "@sentry/utils": 7.120.4 + "@sentry-internal/browser-utils": 10.11.0 + "@sentry/core": 10.11.0 - "@sentry/cli@1.77.3": + "@sentry/babel-plugin-component-annotate@4.3.0": {} + + "@sentry/browser@10.11.0": + dependencies: + "@sentry-internal/browser-utils": 10.11.0 + "@sentry-internal/feedback": 10.11.0 + "@sentry-internal/replay": 10.11.0 + "@sentry-internal/replay-canvas": 10.11.0 + "@sentry/core": 10.11.0 + + "@sentry/bundler-plugin-core@4.3.0": + dependencies: + "@babel/core": 7.28.3 + "@sentry/babel-plugin-component-annotate": 4.3.0 + "@sentry/cli": 2.53.0 + dotenv: 16.6.1 + find-up: 5.0.0 + glob: 9.3.5 + magic-string: 0.30.8 + unplugin: 1.0.1 + transitivePeerDependencies: + - encoding + - supports-color + + "@sentry/cli-darwin@2.53.0": + optional: true + + "@sentry/cli-linux-arm64@2.53.0": + optional: true + + "@sentry/cli-linux-arm@2.53.0": + optional: true + + "@sentry/cli-linux-i686@2.53.0": + optional: true + + "@sentry/cli-linux-x64@2.53.0": + optional: true + + "@sentry/cli-win32-arm64@2.53.0": + optional: true + + "@sentry/cli-win32-i686@2.53.0": + optional: true + + "@sentry/cli-win32-x64@2.53.0": + optional: true + + "@sentry/cli@2.53.0": dependencies: https-proxy-agent: 5.0.1 - mkdirp: 0.5.6 node-fetch: 2.7.0 progress: 2.0.3 proxy-from-env: 1.1.0 which: 2.0.2 + optionalDependencies: + "@sentry/cli-darwin": 2.53.0 + "@sentry/cli-linux-arm": 2.53.0 + "@sentry/cli-linux-arm64": 2.53.0 + "@sentry/cli-linux-i686": 2.53.0 + "@sentry/cli-linux-x64": 2.53.0 + "@sentry/cli-win32-arm64": 2.53.0 + "@sentry/cli-win32-i686": 2.53.0 + "@sentry/cli-win32-x64": 2.53.0 transitivePeerDependencies: - encoding - supports-color - "@sentry/core@7.120.4": - dependencies: - "@sentry/types": 7.120.4 - "@sentry/utils": 7.120.4 + "@sentry/core@10.11.0": {} - "@sentry/integrations@7.120.4": + "@sentry/nextjs@10.11.0(@opentelemetry/context-async-hooks@2.1.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.1.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.1.0(@opentelemetry/api@1.9.0))(next@15.5.3(@babel/core@7.28.3)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.90.0))(react@18.3.1)(webpack@5.101.3)": dependencies: - "@sentry/core": 7.120.4 - "@sentry/types": 7.120.4 - "@sentry/utils": 7.120.4 - localforage: 1.10.0 - - "@sentry/nextjs@7.120.4(next@14.2.31(@babel/core@7.28.3)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.90.0))(react@18.3.1)": - dependencies: - "@rollup/plugin-commonjs": 24.0.0(rollup@2.79.2) - "@sentry/core": 7.120.4 - "@sentry/integrations": 7.120.4 - "@sentry/node": 7.120.4 - "@sentry/react": 7.120.4(react@18.3.1) - "@sentry/types": 7.120.4 - "@sentry/utils": 7.120.4 - "@sentry/vercel-edge": 7.120.4 - "@sentry/webpack-plugin": 1.21.0 + "@opentelemetry/api": 1.9.0 + "@opentelemetry/semantic-conventions": 1.37.0 + "@rollup/plugin-commonjs": 28.0.1(rollup@4.50.1) + "@sentry-internal/browser-utils": 10.11.0 + "@sentry/bundler-plugin-core": 4.3.0 + "@sentry/core": 10.11.0 + "@sentry/node": 10.11.0 + "@sentry/opentelemetry": 10.11.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.1.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.1.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.1.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.37.0) + "@sentry/react": 10.11.0(react@18.3.1) + "@sentry/vercel-edge": 10.11.0 + "@sentry/webpack-plugin": 4.3.0(webpack@5.101.3) chalk: 3.0.0 - next: 14.2.31(@babel/core@7.28.3)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.90.0) - react: 18.3.1 + next: 15.5.3(@babel/core@7.28.3)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.90.0) resolve: 1.22.8 - rollup: 2.79.2 + rollup: 4.50.1 stacktrace-parser: 0.1.11 transitivePeerDependencies: + - "@opentelemetry/context-async-hooks" + - "@opentelemetry/core" + - "@opentelemetry/sdk-trace-base" - encoding + - react + - supports-color + - webpack + + "@sentry/node-core@10.11.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.1.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.1.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.203.0(@opentelemetry/api@1.9.0))(@opentelemetry/resources@2.1.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.1.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.37.0)": + dependencies: + "@opentelemetry/api": 1.9.0 + "@opentelemetry/context-async-hooks": 2.1.0(@opentelemetry/api@1.9.0) + "@opentelemetry/core": 2.1.0(@opentelemetry/api@1.9.0) + "@opentelemetry/instrumentation": 0.203.0(@opentelemetry/api@1.9.0) + "@opentelemetry/resources": 2.1.0(@opentelemetry/api@1.9.0) + "@opentelemetry/sdk-trace-base": 2.1.0(@opentelemetry/api@1.9.0) + "@opentelemetry/semantic-conventions": 1.37.0 + "@sentry/core": 10.11.0 + "@sentry/opentelemetry": 10.11.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.1.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.1.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.1.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.37.0) + import-in-the-middle: 1.14.2 + + "@sentry/node@10.11.0": + dependencies: + "@opentelemetry/api": 1.9.0 + "@opentelemetry/context-async-hooks": 2.1.0(@opentelemetry/api@1.9.0) + "@opentelemetry/core": 2.1.0(@opentelemetry/api@1.9.0) + "@opentelemetry/instrumentation": 0.203.0(@opentelemetry/api@1.9.0) + "@opentelemetry/instrumentation-amqplib": 0.50.0(@opentelemetry/api@1.9.0) + "@opentelemetry/instrumentation-connect": 0.47.0(@opentelemetry/api@1.9.0) + "@opentelemetry/instrumentation-dataloader": 0.21.1(@opentelemetry/api@1.9.0) + "@opentelemetry/instrumentation-express": 0.52.0(@opentelemetry/api@1.9.0) + "@opentelemetry/instrumentation-fs": 0.23.0(@opentelemetry/api@1.9.0) + "@opentelemetry/instrumentation-generic-pool": 0.47.0(@opentelemetry/api@1.9.0) + "@opentelemetry/instrumentation-graphql": 0.51.0(@opentelemetry/api@1.9.0) + "@opentelemetry/instrumentation-hapi": 0.50.0(@opentelemetry/api@1.9.0) + "@opentelemetry/instrumentation-http": 0.203.0(@opentelemetry/api@1.9.0) + "@opentelemetry/instrumentation-ioredis": 0.52.0(@opentelemetry/api@1.9.0) + "@opentelemetry/instrumentation-kafkajs": 0.13.0(@opentelemetry/api@1.9.0) + "@opentelemetry/instrumentation-knex": 0.48.0(@opentelemetry/api@1.9.0) + "@opentelemetry/instrumentation-koa": 0.51.0(@opentelemetry/api@1.9.0) + "@opentelemetry/instrumentation-lru-memoizer": 0.48.0(@opentelemetry/api@1.9.0) + "@opentelemetry/instrumentation-mongodb": 0.56.0(@opentelemetry/api@1.9.0) + "@opentelemetry/instrumentation-mongoose": 0.50.0(@opentelemetry/api@1.9.0) + "@opentelemetry/instrumentation-mysql": 0.49.0(@opentelemetry/api@1.9.0) + "@opentelemetry/instrumentation-mysql2": 0.50.0(@opentelemetry/api@1.9.0) + "@opentelemetry/instrumentation-pg": 0.55.0(@opentelemetry/api@1.9.0) + "@opentelemetry/instrumentation-redis": 0.51.0(@opentelemetry/api@1.9.0) + "@opentelemetry/instrumentation-tedious": 0.22.0(@opentelemetry/api@1.9.0) + "@opentelemetry/instrumentation-undici": 0.14.0(@opentelemetry/api@1.9.0) + "@opentelemetry/resources": 2.1.0(@opentelemetry/api@1.9.0) + "@opentelemetry/sdk-trace-base": 2.1.0(@opentelemetry/api@1.9.0) + "@opentelemetry/semantic-conventions": 1.37.0 + "@prisma/instrumentation": 6.14.0(@opentelemetry/api@1.9.0) + "@sentry/core": 10.11.0 + "@sentry/node-core": 10.11.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.1.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.1.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.203.0(@opentelemetry/api@1.9.0))(@opentelemetry/resources@2.1.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.1.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.37.0) + "@sentry/opentelemetry": 10.11.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.1.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.1.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.1.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.37.0) + import-in-the-middle: 1.14.2 + minimatch: 9.0.5 + transitivePeerDependencies: - supports-color - "@sentry/node@7.120.4": + "@sentry/opentelemetry@10.11.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.1.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.1.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.1.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.37.0)": dependencies: - "@sentry-internal/tracing": 7.120.4 - "@sentry/core": 7.120.4 - "@sentry/integrations": 7.120.4 - "@sentry/types": 7.120.4 - "@sentry/utils": 7.120.4 + "@opentelemetry/api": 1.9.0 + "@opentelemetry/context-async-hooks": 2.1.0(@opentelemetry/api@1.9.0) + "@opentelemetry/core": 2.1.0(@opentelemetry/api@1.9.0) + "@opentelemetry/sdk-trace-base": 2.1.0(@opentelemetry/api@1.9.0) + "@opentelemetry/semantic-conventions": 1.37.0 + "@sentry/core": 10.11.0 - "@sentry/react@7.120.4(react@18.3.1)": + "@sentry/react@10.11.0(react@18.3.1)": dependencies: - "@sentry/browser": 7.120.4 - "@sentry/core": 7.120.4 - "@sentry/types": 7.120.4 - "@sentry/utils": 7.120.4 + "@sentry/browser": 10.11.0 + "@sentry/core": 10.11.0 hoist-non-react-statics: 3.3.2 react: 18.3.1 - "@sentry/replay@7.120.4": + "@sentry/vercel-edge@10.11.0": dependencies: - "@sentry-internal/tracing": 7.120.4 - "@sentry/core": 7.120.4 - "@sentry/types": 7.120.4 - "@sentry/utils": 7.120.4 + "@opentelemetry/api": 1.9.0 + "@opentelemetry/resources": 2.1.0(@opentelemetry/api@1.9.0) + "@sentry/core": 10.11.0 - "@sentry/types@7.120.4": {} - - "@sentry/utils@7.120.4": + "@sentry/webpack-plugin@4.3.0(webpack@5.101.3)": dependencies: - "@sentry/types": 7.120.4 - - "@sentry/vercel-edge@7.120.4": - dependencies: - "@sentry-internal/tracing": 7.120.4 - "@sentry/core": 7.120.4 - "@sentry/integrations": 7.120.4 - "@sentry/types": 7.120.4 - "@sentry/utils": 7.120.4 - - "@sentry/webpack-plugin@1.21.0": - dependencies: - "@sentry/cli": 1.77.3 - webpack-sources: 3.3.3 + "@sentry/bundler-plugin-core": 4.3.0 + unplugin: 1.0.1 + uuid: 9.0.1 + webpack: 5.101.3 transitivePeerDependencies: - encoding - supports-color - "@sinclair/typebox@0.25.24": {} - "@sinclair/typebox@0.27.8": {} "@sinclair/typebox@0.34.41": {} @@ -10182,15 +10711,12 @@ snapshots: "@standard-schema/utils@0.3.0": {} - "@swc/counter@0.1.3": {} - - "@swc/helpers@0.5.17": + "@swc/helpers@0.5.15": dependencies: tslib: 2.8.1 - "@swc/helpers@0.5.5": + "@swc/helpers@0.5.17": dependencies: - "@swc/counter": 0.1.3 tslib: 2.8.1 "@tanstack/query-core@5.85.9": {} @@ -10200,22 +10726,17 @@ snapshots: "@tanstack/query-core": 5.85.9 react: 18.3.1 - "@tootallnate/once@2.0.0": {} + "@tsconfig/node10@1.0.11": + optional: true - "@ts-morph/common@0.11.1": - dependencies: - fast-glob: 3.3.3 - minimatch: 3.1.2 - mkdirp: 1.0.4 - path-browserify: 1.0.1 + "@tsconfig/node12@1.0.11": + optional: true - "@tsconfig/node10@1.0.11": {} + "@tsconfig/node14@1.0.3": + optional: true - "@tsconfig/node12@1.0.11": {} - - "@tsconfig/node14@1.0.3": {} - - "@tsconfig/node16@1.0.4": {} + "@tsconfig/node16@1.0.4": + optional: true "@tybys/wasm-util@0.10.0": dependencies: @@ -10243,10 +10764,24 @@ snapshots: dependencies: "@babel/types": 7.28.2 + "@types/connect@3.4.38": + dependencies: + "@types/node": 24.2.1 + "@types/debug@4.1.12": dependencies: "@types/ms": 2.1.0 + "@types/eslint-scope@3.7.7": + dependencies: + "@types/eslint": 9.6.1 + "@types/estree": 1.0.8 + + "@types/eslint@9.6.1": + dependencies: + "@types/estree": 1.0.8 + "@types/json-schema": 7.0.15 + "@types/estree-jsx@1.0.5": dependencies: "@types/estree": 1.0.8 @@ -10290,19 +10825,35 @@ snapshots: "@types/ms@2.1.0": {} + "@types/mysql@2.15.27": + dependencies: + "@types/node": 24.2.1 + "@types/node-fetch@2.6.13": dependencies: "@types/node": 24.2.1 form-data: 4.0.4 - "@types/node@16.18.11": {} - "@types/node@24.2.1": dependencies: undici-types: 7.10.0 + "@types/node@24.3.1": + dependencies: + undici-types: 7.10.0 + "@types/parse-json@4.0.2": {} + "@types/pg-pool@2.0.6": + dependencies: + "@types/pg": 8.15.4 + + "@types/pg@8.15.4": + dependencies: + "@types/node": 24.2.1 + pg-protocol: 1.10.3 + pg-types: 2.2.0 + "@types/prop-types@15.7.15": {} "@types/react@18.2.20": @@ -10313,8 +10864,14 @@ snapshots: "@types/scheduler@0.26.0": {} + "@types/shimmer@1.2.0": {} + "@types/stack-utils@2.0.3": {} + "@types/tedious@4.0.14": + dependencies: + "@types/node": 24.2.1 + "@types/ua-parser-js@0.7.39": {} "@types/unist@2.0.11": {} @@ -10493,158 +11050,81 @@ snapshots: "@unrs/resolver-binding-win32-x64-msvc@1.11.1": optional: true - "@vercel/build-utils@8.4.12": {} - - "@vercel/edge-config-fs@0.1.0": {} - - "@vercel/edge-config@0.4.1": + "@webassemblyjs/ast@1.14.1": dependencies: - "@vercel/edge-config-fs": 0.1.0 + "@webassemblyjs/helper-numbers": 1.13.2 + "@webassemblyjs/helper-wasm-bytecode": 1.13.2 - "@vercel/error-utils@2.0.2": {} + "@webassemblyjs/floating-point-hex-parser@1.13.2": {} - "@vercel/fun@1.1.0": + "@webassemblyjs/helper-api-error@1.13.2": {} + + "@webassemblyjs/helper-buffer@1.14.1": {} + + "@webassemblyjs/helper-numbers@1.13.2": dependencies: - "@tootallnate/once": 2.0.0 - async-listen: 1.2.0 - debug: 4.1.1 - execa: 3.2.0 - fs-extra: 8.1.0 - generic-pool: 3.4.2 - micro: 9.3.5-canary.3 - ms: 2.1.1 - node-fetch: 2.6.7 - path-match: 1.2.4 - promisepipe: 3.0.0 - semver: 7.3.5 - stat-mode: 0.3.0 - stream-to-promise: 2.2.0 - tar: 4.4.18 - tree-kill: 1.2.2 - uid-promise: 1.0.0 - uuid: 3.3.2 - xdg-app-paths: 5.1.0 - yauzl-promise: 2.1.3 - transitivePeerDependencies: - - encoding - - supports-color + "@webassemblyjs/floating-point-hex-parser": 1.13.2 + "@webassemblyjs/helper-api-error": 1.13.2 + "@xtuc/long": 4.2.2 - "@vercel/gatsby-plugin-vercel-analytics@1.0.11": + "@webassemblyjs/helper-wasm-bytecode@1.13.2": {} + + "@webassemblyjs/helper-wasm-section@1.14.1": dependencies: - web-vitals: 0.2.4 + "@webassemblyjs/ast": 1.14.1 + "@webassemblyjs/helper-buffer": 1.14.1 + "@webassemblyjs/helper-wasm-bytecode": 1.13.2 + "@webassemblyjs/wasm-gen": 1.14.1 - "@vercel/gatsby-plugin-vercel-builder@2.0.56": + "@webassemblyjs/ieee754@1.13.2": dependencies: - "@sinclair/typebox": 0.25.24 - "@vercel/build-utils": 8.4.12 - "@vercel/routing-utils": 3.1.0 - esbuild: 0.14.47 - etag: 1.8.1 - fs-extra: 11.1.0 + "@xtuc/ieee754": 1.2.0 - "@vercel/go@3.2.0": {} - - "@vercel/hydrogen@1.0.9": + "@webassemblyjs/leb128@1.13.2": dependencies: - "@vercel/static-config": 3.0.0 - ts-morph: 12.0.0 + "@xtuc/long": 4.2.2 - "@vercel/next@4.3.18": + "@webassemblyjs/utf8@1.13.2": {} + + "@webassemblyjs/wasm-edit@1.14.1": dependencies: - "@vercel/nft": 0.27.3 - transitivePeerDependencies: - - encoding - - supports-color + "@webassemblyjs/ast": 1.14.1 + "@webassemblyjs/helper-buffer": 1.14.1 + "@webassemblyjs/helper-wasm-bytecode": 1.13.2 + "@webassemblyjs/helper-wasm-section": 1.14.1 + "@webassemblyjs/wasm-gen": 1.14.1 + "@webassemblyjs/wasm-opt": 1.14.1 + "@webassemblyjs/wasm-parser": 1.14.1 + "@webassemblyjs/wast-printer": 1.14.1 - "@vercel/nft@0.27.3": + "@webassemblyjs/wasm-gen@1.14.1": dependencies: - "@mapbox/node-pre-gyp": 1.0.11 - "@rollup/pluginutils": 4.2.1 - 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: 7.2.3 - graceful-fs: 4.2.11 - micromatch: 4.0.8 - node-gyp-build: 4.8.4 - resolve-from: 5.0.0 - transitivePeerDependencies: - - encoding - - supports-color + "@webassemblyjs/ast": 1.14.1 + "@webassemblyjs/helper-wasm-bytecode": 1.13.2 + "@webassemblyjs/ieee754": 1.13.2 + "@webassemblyjs/leb128": 1.13.2 + "@webassemblyjs/utf8": 1.13.2 - "@vercel/node@3.2.24": + "@webassemblyjs/wasm-opt@1.14.1": dependencies: - "@edge-runtime/node-utils": 2.3.0 - "@edge-runtime/primitives": 4.1.0 - "@edge-runtime/vm": 3.2.0 - "@types/node": 16.18.11 - "@vercel/build-utils": 8.4.12 - "@vercel/error-utils": 2.0.2 - "@vercel/nft": 0.27.3 - "@vercel/static-config": 3.0.0 - async-listen: 3.0.0 - cjs-module-lexer: 1.2.3 - edge-runtime: 2.5.9 - es-module-lexer: 1.4.1 - esbuild: 0.14.47 - etag: 1.8.1 - node-fetch: 2.6.9 - path-to-regexp: 6.2.1 - ts-morph: 12.0.0 - ts-node: 10.9.1(@types/node@16.18.11)(typescript@4.9.5) - typescript: 4.9.5 - undici: 5.28.4 - transitivePeerDependencies: - - "@swc/core" - - "@swc/wasm" - - encoding - - supports-color + "@webassemblyjs/ast": 1.14.1 + "@webassemblyjs/helper-buffer": 1.14.1 + "@webassemblyjs/wasm-gen": 1.14.1 + "@webassemblyjs/wasm-parser": 1.14.1 - "@vercel/python@4.3.1": {} - - "@vercel/redwood@2.1.8": + "@webassemblyjs/wasm-parser@1.14.1": dependencies: - "@vercel/nft": 0.27.3 - "@vercel/routing-utils": 3.1.0 - "@vercel/static-config": 3.0.0 - semver: 6.3.1 - ts-morph: 12.0.0 - transitivePeerDependencies: - - encoding - - supports-color + "@webassemblyjs/ast": 1.14.1 + "@webassemblyjs/helper-api-error": 1.13.2 + "@webassemblyjs/helper-wasm-bytecode": 1.13.2 + "@webassemblyjs/ieee754": 1.13.2 + "@webassemblyjs/leb128": 1.13.2 + "@webassemblyjs/utf8": 1.13.2 - "@vercel/remix-builder@2.2.13": + "@webassemblyjs/wast-printer@1.14.1": dependencies: - "@vercel/error-utils": 2.0.2 - "@vercel/nft": 0.27.3 - "@vercel/static-config": 3.0.0 - ts-morph: 12.0.0 - transitivePeerDependencies: - - encoding - - supports-color - - "@vercel/routing-utils@3.1.0": - dependencies: - path-to-regexp: 6.1.0 - optionalDependencies: - ajv: 6.12.6 - - "@vercel/ruby@2.1.0": {} - - "@vercel/static-build@2.5.34": - dependencies: - "@vercel/gatsby-plugin-vercel-analytics": 1.0.11 - "@vercel/gatsby-plugin-vercel-builder": 2.0.56 - "@vercel/static-config": 3.0.0 - ts-morph: 12.0.0 - - "@vercel/static-config@3.0.0": - dependencies: - ajv: 8.6.3 - json-schema-to-ts: 1.6.4 - ts-morph: 12.0.0 + "@webassemblyjs/ast": 1.14.1 + "@xtuc/long": 4.2.2 "@whereby.com/browser-sdk@3.13.1(@types/react@18.2.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)": dependencies: @@ -10703,6 +11183,10 @@ snapshots: - supports-color - utf-8-validate + "@xtuc/ieee754@1.2.0": {} + + "@xtuc/long@4.2.2": {} + "@zag-js/accordion@1.21.0": dependencies: "@zag-js/anatomy": 1.21.0 @@ -11204,12 +11688,14 @@ snapshots: "@zag-js/utils@1.21.0": {} - abbrev@1.1.1: {} - acorn-import-attributes@1.9.5(acorn@8.15.0): dependencies: acorn: 8.15.0 + acorn-import-phases@1.0.4(acorn@8.15.0): + dependencies: + acorn: 8.15.0 + acorn-jsx@5.3.2(acorn@8.15.0): dependencies: acorn: 8.15.0 @@ -11217,6 +11703,7 @@ snapshots: acorn-walk@8.3.4: dependencies: acorn: 8.15.0 + optional: true acorn@8.15.0: {} @@ -11228,6 +11715,15 @@ snapshots: agent-base@7.1.4: {} + ajv-formats@2.1.1(ajv@8.17.1): + optionalDependencies: + ajv: 8.17.1 + + ajv-keywords@5.1.0(ajv@8.17.1): + dependencies: + ajv: 8.17.1 + fast-deep-equal: 3.1.3 + ajv@6.12.6: dependencies: fast-deep-equal: 3.1.3 @@ -11235,12 +11731,12 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 - ajv@8.6.3: + ajv@8.17.1: dependencies: fast-deep-equal: 3.1.3 + fast-uri: 3.1.0 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - uri-js: 4.4.1 ansi-colors@4.1.3: {} @@ -11267,16 +11763,8 @@ snapshots: normalize-path: 3.0.0 picomatch: 2.3.1 - aproba@2.1.0: {} - - are-we-there-yet@2.0.0: - dependencies: - delegates: 1.0.0 - readable-stream: 3.6.2 - - arg@4.1.0: {} - - arg@4.1.3: {} + arg@4.1.3: + optional: true arg@5.0.2: {} @@ -11363,14 +11851,6 @@ snapshots: async-function@1.0.0: {} - async-listen@1.2.0: {} - - async-listen@3.0.0: {} - - async-listen@3.0.1: {} - - async-sema@3.1.1: {} - asynckit@0.4.0: {} augmentor@2.2.0: @@ -11478,10 +11958,6 @@ snapshots: binary-extensions@2.3.0: {} - bindings@1.5.0: - dependencies: - file-uri-to-path: 1.0.0 - brace-expansion@1.1.12: dependencies: balanced-match: 1.0.2 @@ -11512,8 +11988,6 @@ snapshots: btoa@1.2.1: {} - buffer-crc32@0.2.13: {} - buffer-from@1.1.2: {} buffer@6.0.3: @@ -11521,12 +11995,6 @@ snapshots: base64-js: 1.5.1 ieee754: 1.2.1 - busboy@1.6.0: - dependencies: - streamsearch: 1.1.0 - - bytes@3.1.0: {} - call-bind-apply-helpers@1.0.2: dependencies: es-errors: 1.3.0 @@ -11582,18 +12050,6 @@ snapshots: dependencies: ip-range-check: 0.0.2 - chokidar@3.3.1: - 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.3.0 - optionalDependencies: - fsevents: 2.1.3 - chokidar@3.6.0: dependencies: anymatch: 3.1.3 @@ -11610,15 +12066,13 @@ snapshots: dependencies: readdirp: 4.1.2 - chownr@1.1.4: {} - - chownr@2.0.0: {} + chrome-trace-event@1.0.4: {} ci-info@3.9.0: {} ci-info@4.3.0: {} - cjs-module-lexer@1.2.3: {} + cjs-module-lexer@1.4.3: {} cjs-module-lexer@2.1.0: {} @@ -11638,8 +12092,6 @@ snapshots: co@4.6.0: {} - code-block-writer@10.1.1: {} - collect-v8-coverage@1.0.2: {} color-convert@2.0.1: @@ -11648,7 +12100,17 @@ snapshots: color-name@1.1.4: {} - color-support@1.1.3: {} + color-string@1.9.1: + dependencies: + color-name: 1.1.4 + simple-swizzle: 0.2.2 + optional: true + + color@4.2.3: + dependencies: + color-convert: 2.0.1 + color-string: 1.9.1 + optional: true colorette@1.4.0: {} @@ -11658,18 +12120,14 @@ snapshots: comma-separated-tokens@2.0.3: {} + commander@2.20.3: {} + commander@4.1.1: {} commondir@1.0.1: {} concat-map@0.0.1: {} - console-control-strings@1.1.0: {} - - content-type@1.0.4: {} - - convert-hrtime@3.0.0: {} - convert-source-map@1.9.0: {} convert-source-map@2.0.0: {} @@ -11684,7 +12142,8 @@ snapshots: path-type: 4.0.0 yaml: 1.10.2 - create-require@1.1.1: {} + create-require@1.1.1: + optional: true cross-spawn@7.0.6: dependencies: @@ -11720,10 +12179,6 @@ snapshots: dependencies: ms: 2.1.3 - debug@4.1.1: - dependencies: - ms: 2.1.1 - debug@4.3.7: dependencies: ms: 2.1.3 @@ -11766,12 +12221,8 @@ snapshots: delayed-stream@1.0.0: {} - delegates@1.0.0: {} - denque@2.1.0: {} - depd@1.1.2: {} - dequal@2.0.3: {} detect-europe-js@0.1.2: {} @@ -11779,7 +12230,8 @@ snapshots: detect-libc@1.0.3: optional: true - detect-libc@2.0.4: {} + detect-libc@2.0.4: + optional: true detect-newline@3.1.0: {} @@ -11791,7 +12243,8 @@ snapshots: didyoumean@1.2.2: {} - diff@4.0.2: {} + diff@4.0.2: + optional: true dlv@1.1.3: {} @@ -11815,6 +12268,8 @@ snapshots: domsanitizer: 0.2.3 umap: 1.0.2 + dotenv@16.6.1: {} + dunder-proto@1.0.1: dependencies: call-bind-apply-helpers: 1.0.2 @@ -11823,18 +12278,6 @@ snapshots: eastasianwidth@0.2.0: {} - edge-runtime@2.5.9: - dependencies: - "@edge-runtime/format": 2.2.1 - "@edge-runtime/ponyfill": 2.4.2 - "@edge-runtime/vm": 3.2.0 - async-listen: 3.0.1 - mri: 1.2.0 - picocolors: 1.0.0 - pretty-ms: 7.0.1 - signal-exit: 4.0.2 - time-span: 4.0.0 - electron-to-chromium@1.5.200: {} emittery@0.13.1: {} @@ -11843,14 +12286,6 @@ snapshots: emoji-regex@9.2.2: {} - end-of-stream@1.1.0: - dependencies: - once: 1.3.3 - - end-of-stream@1.4.5: - dependencies: - once: 1.4.0 - engine.io-client@6.5.4: dependencies: "@socket.io/component-emitter": 3.1.2 @@ -11865,6 +12300,11 @@ snapshots: engine.io-parser@5.2.3: {} + enhanced-resolve@5.18.3: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.3 + err-code@3.0.1: {} error-ex@1.3.2: @@ -11951,7 +12391,7 @@ snapshots: iterator.prototype: 1.1.5 safe-array-concat: 1.1.3 - es-module-lexer@1.4.1: {} + es-module-lexer@1.7.0: {} es-object-atoms@1.1.1: dependencies: @@ -11974,98 +12414,15 @@ snapshots: is-date-object: 1.1.0 is-symbol: 1.1.1 - esbuild-android-64@0.14.47: - optional: true - - esbuild-android-arm64@0.14.47: - optional: true - - esbuild-darwin-64@0.14.47: - optional: true - - esbuild-darwin-arm64@0.14.47: - optional: true - - esbuild-freebsd-64@0.14.47: - optional: true - - esbuild-freebsd-arm64@0.14.47: - optional: true - - esbuild-linux-32@0.14.47: - optional: true - - esbuild-linux-64@0.14.47: - optional: true - - esbuild-linux-arm64@0.14.47: - optional: true - - esbuild-linux-arm@0.14.47: - optional: true - - esbuild-linux-mips64le@0.14.47: - optional: true - - esbuild-linux-ppc64le@0.14.47: - optional: true - - esbuild-linux-riscv64@0.14.47: - optional: true - - esbuild-linux-s390x@0.14.47: - optional: true - - esbuild-netbsd-64@0.14.47: - optional: true - - esbuild-openbsd-64@0.14.47: - optional: true - - esbuild-sunos-64@0.14.47: - optional: true - - esbuild-windows-32@0.14.47: - optional: true - - esbuild-windows-64@0.14.47: - optional: true - - esbuild-windows-arm64@0.14.47: - optional: true - - esbuild@0.14.47: - optionalDependencies: - esbuild-android-64: 0.14.47 - esbuild-android-arm64: 0.14.47 - esbuild-darwin-64: 0.14.47 - esbuild-darwin-arm64: 0.14.47 - esbuild-freebsd-64: 0.14.47 - esbuild-freebsd-arm64: 0.14.47 - esbuild-linux-32: 0.14.47 - esbuild-linux-64: 0.14.47 - esbuild-linux-arm: 0.14.47 - esbuild-linux-arm64: 0.14.47 - esbuild-linux-mips64le: 0.14.47 - esbuild-linux-ppc64le: 0.14.47 - esbuild-linux-riscv64: 0.14.47 - esbuild-linux-s390x: 0.14.47 - esbuild-netbsd-64: 0.14.47 - esbuild-openbsd-64: 0.14.47 - esbuild-sunos-64: 0.14.47 - esbuild-windows-32: 0.14.47 - esbuild-windows-64: 0.14.47 - esbuild-windows-arm64: 0.14.47 - escalade@3.2.0: {} escape-string-regexp@2.0.0: {} escape-string-regexp@4.0.0: {} - eslint-config-next@14.2.31(eslint@9.33.0(jiti@1.21.7))(typescript@5.9.2): + eslint-config-next@15.5.3(eslint@9.33.0(jiti@1.21.7))(typescript@5.9.2): dependencies: - "@next/eslint-plugin-next": 14.2.31 + "@next/eslint-plugin-next": 15.5.3 "@rushstack/eslint-patch": 1.12.0 "@typescript-eslint/eslint-plugin": 8.39.1(@typescript-eslint/parser@8.39.1(eslint@9.33.0(jiti@1.21.7))(typescript@5.9.2))(eslint@9.33.0(jiti@1.21.7))(typescript@5.9.2) "@typescript-eslint/parser": 8.39.1(eslint@9.33.0(jiti@1.21.7))(typescript@5.9.2) @@ -12075,7 +12432,7 @@ snapshots: eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.39.1(eslint@9.33.0(jiti@1.21.7))(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@9.33.0(jiti@1.21.7)) eslint-plugin-jsx-a11y: 6.10.2(eslint@9.33.0(jiti@1.21.7)) eslint-plugin-react: 7.37.5(eslint@9.33.0(jiti@1.21.7)) - eslint-plugin-react-hooks: 5.0.0-canary-7118f5dd7-20230705(eslint@9.33.0(jiti@1.21.7)) + eslint-plugin-react-hooks: 5.2.0(eslint@9.33.0(jiti@1.21.7)) optionalDependencies: typescript: 5.9.2 transitivePeerDependencies: @@ -12165,7 +12522,7 @@ snapshots: safe-regex-test: 1.1.0 string.prototype.includes: 2.0.1 - eslint-plugin-react-hooks@5.0.0-canary-7118f5dd7-20230705(eslint@9.33.0(jiti@1.21.7)): + eslint-plugin-react-hooks@5.2.0(eslint@9.33.0(jiti@1.21.7)): dependencies: eslint: 9.33.0(jiti@1.21.7) @@ -12191,6 +12548,11 @@ snapshots: string.prototype.matchall: 4.0.12 string.prototype.repeat: 1.0.0 + eslint-scope@5.1.1: + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + eslint-scope@8.4.0: dependencies: esrecurse: 4.3.0 @@ -12258,6 +12620,8 @@ snapshots: dependencies: estraverse: 5.3.0 + estraverse@4.3.0: {} + estraverse@5.3.0: {} estree-util-is-identifier-name@3.0.0: {} @@ -12266,27 +12630,10 @@ snapshots: esutils@2.0.3: {} - etag@1.8.1: {} - event-target-shim@6.0.2: {} - events-intercept@2.0.0: {} - events@3.3.0: {} - execa@3.2.0: - dependencies: - cross-spawn: 7.0.6 - get-stream: 5.2.0 - human-signals: 1.1.1 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - p-finally: 2.0.1 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 - execa@5.1.1: dependencies: cross-spawn: 7.0.6 @@ -12319,6 +12666,14 @@ snapshots: fast-deep-equal@3.1.3: {} + fast-glob@3.3.1: + dependencies: + "@nodelib/fs.stat": 2.0.5 + "@nodelib/fs.walk": 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + fast-glob@3.3.3: dependencies: "@nodelib/fs.stat": 2.0.5 @@ -12333,6 +12688,8 @@ snapshots: fast-safe-stringify@2.1.1: {} + fast-uri@3.1.0: {} + fastq@1.19.1: dependencies: reusify: 1.1.0 @@ -12341,10 +12698,6 @@ snapshots: dependencies: bser: 2.1.1 - fd-slicer@1.1.0: - dependencies: - pend: 1.2.0 - fdir@6.4.6(picomatch@4.0.3): optionalDependencies: picomatch: 4.0.3 @@ -12353,8 +12706,6 @@ snapshots: dependencies: flat-cache: 4.0.1 - file-uri-to-path@1.0.0: {} - fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 @@ -12399,33 +12750,12 @@ snapshots: hasown: 2.0.2 mime-types: 2.1.35 + forwarded-parse@2.1.2: {} + fraction.js@4.3.7: {} - fs-extra@11.1.0: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.2.0 - universalify: 2.0.1 - - fs-extra@8.1.0: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 4.0.0 - universalify: 0.1.2 - - fs-minipass@1.2.7: - dependencies: - minipass: 2.9.0 - - fs-minipass@2.1.0: - dependencies: - minipass: 3.3.6 - fs.realpath@1.0.0: {} - fsevents@2.1.3: - optional: true - fsevents@2.3.3: optional: true @@ -12442,20 +12772,6 @@ snapshots: functions-have-names@1.2.3: {} - gauge@3.0.2: - dependencies: - aproba: 2.1.0 - color-support: 1.1.3 - console-control-strings: 1.1.0 - has-unicode: 2.0.1 - object-assign: 4.1.1 - signal-exit: 3.0.7 - string-width: 4.2.3 - strip-ansi: 6.0.1 - wide-align: 1.1.5 - - generic-pool@3.4.2: {} - gensync@1.0.0-beta.2: {} get-browser-rtc@1.1.0: {} @@ -12484,10 +12800,6 @@ snapshots: dunder-proto: 1.0.1 es-object-atoms: 1.1.1 - get-stream@5.2.0: - dependencies: - pump: 3.0.3 - get-stream@6.0.1: {} get-symbol-description@1.1.0: @@ -12508,13 +12820,7 @@ snapshots: dependencies: is-glob: 4.0.3 - glob@10.3.10: - dependencies: - foreground-child: 3.3.1 - jackspeak: 2.3.6 - minimatch: 9.0.5 - minipass: 7.1.2 - path-scurry: 1.11.1 + glob-to-regexp@0.4.1: {} glob@10.4.5: dependencies: @@ -12534,13 +12840,12 @@ snapshots: once: 1.4.0 path-is-absolute: 1.0.1 - glob@8.1.0: + glob@9.3.5: dependencies: fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 5.1.6 - once: 1.4.0 + minimatch: 8.0.4 + minipass: 4.2.8 + path-scurry: 1.11.1 globals@14.0.0: {} @@ -12588,8 +12893,6 @@ snapshots: dependencies: has-symbols: 1.1.0 - has-unicode@2.0.1: {} - hasown@2.0.2: dependencies: function-bind: 1.1.2 @@ -12635,19 +12938,6 @@ snapshots: html-url-attributes@3.0.1: {} - http-errors@1.4.0: - dependencies: - inherits: 2.0.1 - statuses: 1.5.0 - - http-errors@1.7.3: - dependencies: - depd: 1.1.2 - inherits: 2.0.4 - setprototypeof: 1.1.1 - statuses: 1.5.0 - toidentifier: 1.0.0 - https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 @@ -12662,24 +12952,16 @@ snapshots: transitivePeerDependencies: - supports-color - human-signals@1.1.1: {} - human-signals@2.1.0: {} hyperhtml-style@0.1.3: {} - iconv-lite@0.4.24: - dependencies: - safer-buffer: 2.1.2 - ieee754@1.2.1: {} ignore@5.3.2: {} ignore@7.0.5: {} - immediate@3.0.6: {} - immer@10.1.1: {} immutable@5.1.3: {} @@ -12689,6 +12971,13 @@ snapshots: parent-module: 1.0.1 resolve-from: 4.0.0 + import-in-the-middle@1.14.2: + dependencies: + acorn: 8.15.0 + acorn-import-attributes: 1.9.5(acorn@8.15.0) + cjs-module-lexer: 1.4.3 + module-details-from-path: 1.0.4 + import-local@3.2.0: dependencies: pkg-dir: 4.2.0 @@ -12703,8 +12992,6 @@ snapshots: once: 1.4.0 wrappy: 1.0.2 - inherits@2.0.1: {} - inherits@2.0.4: {} inline-style-parser@0.2.4: {} @@ -12755,6 +13042,9 @@ snapshots: is-arrayish@0.2.1: {} + is-arrayish@0.3.2: + optional: true + is-async-function@2.1.1: dependencies: async-function: 1.0.0 @@ -12882,8 +13172,6 @@ snapshots: call-bound: 1.0.4 get-intrinsic: 1.3.0 - isarray@0.0.1: {} - isarray@2.0.5: {} isexe@2.0.0: {} @@ -12928,12 +13216,6 @@ snapshots: has-symbols: 1.1.0 set-function-name: 2.0.2 - jackspeak@2.3.6: - dependencies: - "@isaacs/cliui": 8.0.2 - optionalDependencies: - "@pkgjs/parseargs": 0.11.0 - jackspeak@3.4.3: dependencies: "@isaacs/cliui": 8.0.2 @@ -12972,15 +13254,15 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@30.1.3(@types/node@16.18.11)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@types/node@16.18.11)(typescript@5.9.2)): + jest-cli@30.1.3(@types/node@24.2.1)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@types/node@24.2.1)(typescript@5.9.2)): dependencies: - "@jest/core": 30.1.3(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@types/node@16.18.11)(typescript@5.9.2)) + "@jest/core": 30.1.3(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@types/node@24.2.1)(typescript@5.9.2)) "@jest/test-result": 30.1.3 "@jest/types": 30.0.5 chalk: 4.1.2 exit-x: 0.2.2 import-local: 3.2.0 - jest-config: 30.1.3(@types/node@16.18.11)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@types/node@16.18.11)(typescript@5.9.2)) + jest-config: 30.1.3(@types/node@24.2.1)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@types/node@24.2.1)(typescript@5.9.2)) jest-util: 30.0.5 jest-validate: 30.1.0 yargs: 17.7.2 @@ -12991,40 +13273,7 @@ snapshots: - supports-color - ts-node - jest-config@30.1.3(@types/node@16.18.11)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@types/node@16.18.11)(typescript@5.9.2)): - dependencies: - "@babel/core": 7.28.3 - "@jest/get-type": 30.1.0 - "@jest/pattern": 30.0.1 - "@jest/test-sequencer": 30.1.3 - "@jest/types": 30.0.5 - babel-jest: 30.1.2(@babel/core@7.28.3) - chalk: 4.1.2 - ci-info: 4.3.0 - deepmerge: 4.3.1 - glob: 10.4.5 - graceful-fs: 4.2.11 - jest-circus: 30.1.3(babel-plugin-macros@3.1.0) - jest-docblock: 30.0.1 - jest-environment-node: 30.1.2 - jest-regex-util: 30.0.1 - jest-resolve: 30.1.3 - jest-runner: 30.1.3 - jest-util: 30.0.5 - jest-validate: 30.1.0 - micromatch: 4.0.8 - parse-json: 5.2.0 - pretty-format: 30.0.5 - slash: 3.0.0 - strip-json-comments: 3.1.1 - optionalDependencies: - "@types/node": 16.18.11 - ts-node: 10.9.1(@types/node@16.18.11)(typescript@5.9.2) - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - jest-config@30.1.3(@types/node@24.2.1)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@types/node@16.18.11)(typescript@5.9.2)): + jest-config@30.1.3(@types/node@24.2.1)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@types/node@24.2.1)(typescript@5.9.2)): dependencies: "@babel/core": 7.28.3 "@jest/get-type": 30.1.0 @@ -13052,7 +13301,7 @@ snapshots: strip-json-comments: 3.1.1 optionalDependencies: "@types/node": 24.2.1 - ts-node: 10.9.1(@types/node@16.18.11)(typescript@5.9.2) + ts-node: 10.9.1(@types/node@24.2.1)(typescript@5.9.2) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -13273,6 +13522,12 @@ snapshots: jest-util: 30.0.5 string-length: 4.0.2 + jest-worker@27.5.1: + dependencies: + "@types/node": 24.3.1 + merge-stream: 2.0.0 + supports-color: 8.1.1 + jest-worker@29.7.0: dependencies: "@types/node": 24.2.1 @@ -13288,12 +13543,12 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 - jest@30.1.3(@types/node@16.18.11)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@types/node@16.18.11)(typescript@5.9.2)): + jest@30.1.3(@types/node@24.2.1)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@types/node@24.2.1)(typescript@5.9.2)): dependencies: - "@jest/core": 30.1.3(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@types/node@16.18.11)(typescript@5.9.2)) + "@jest/core": 30.1.3(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@types/node@24.2.1)(typescript@5.9.2)) "@jest/types": 30.0.5 import-local: 3.2.0 - jest-cli: 30.1.3(@types/node@16.18.11)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@types/node@16.18.11)(typescript@5.9.2)) + jest-cli: 30.1.3(@types/node@24.2.1)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@types/node@24.2.1)(typescript@5.9.2)) transitivePeerDependencies: - "@types/node" - babel-plugin-macros @@ -13326,11 +13581,6 @@ snapshots: json-parse-even-better-errors@2.3.1: {} - json-schema-to-ts@1.6.4: - dependencies: - "@types/json-schema": 7.0.15 - ts-toolbelt: 6.15.5 - json-schema-traverse@0.4.1: {} json-schema-traverse@1.0.0: {} @@ -13343,16 +13593,6 @@ snapshots: json5@2.2.3: {} - jsonfile@4.0.0: - optionalDependencies: - graceful-fs: 4.2.11 - - jsonfile@6.2.0: - dependencies: - universalify: 2.0.1 - optionalDependencies: - graceful-fs: 4.2.11 - jsx-ast-utils@3.3.5: dependencies: array-includes: 3.1.9 @@ -13377,10 +13617,6 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 - lie@3.1.1: - dependencies: - immediate: 3.0.6 - lighterhtml@4.2.0: dependencies: "@ungap/create-content": 0.2.0 @@ -13397,9 +13633,7 @@ snapshots: lines-and-columns@1.2.4: {} - localforage@1.10.0: - dependencies: - lie: 3.1.1 + loader-runner@4.3.0: {} locate-path@5.0.0: dependencies: @@ -13437,13 +13671,13 @@ snapshots: dependencies: react: 18.3.1 - magic-string@0.27.0: + magic-string@0.30.19: dependencies: "@jridgewell/sourcemap-codec": 1.5.5 - make-dir@3.1.0: + magic-string@0.30.8: dependencies: - semver: 6.3.1 + "@jridgewell/sourcemap-codec": 1.5.5 make-dir@4.0.0: dependencies: @@ -13566,12 +13800,6 @@ snapshots: merge2@1.4.1: {} - micro@9.3.5-canary.3: - dependencies: - arg: 4.1.0 - content-type: 1.0.4 - raw-body: 2.4.1 - micromark-core-commonmark@2.0.3: dependencies: decode-named-character-reference: 1.2.0 @@ -13726,45 +13954,23 @@ snapshots: dependencies: brace-expansion: 2.0.2 + minimatch@8.0.4: + dependencies: + brace-expansion: 2.0.2 + minimatch@9.0.5: dependencies: brace-expansion: 2.0.2 minimist@1.2.8: {} - minipass@2.9.0: - dependencies: - safe-buffer: 5.2.1 - yallist: 3.1.1 - - minipass@3.3.6: - dependencies: - yallist: 4.0.0 - - minipass@5.0.0: {} + minipass@4.2.8: {} minipass@7.1.2: {} - minizlib@1.3.3: - dependencies: - minipass: 2.9.0 - - minizlib@2.1.2: - dependencies: - minipass: 3.3.6 - yallist: 4.0.0 - mitt@3.0.1: {} - mkdirp@0.5.6: - dependencies: - minimist: 1.2.8 - - mkdirp@1.0.4: {} - - mri@1.2.0: {} - - ms@2.1.1: {} + module-details-from-path@1.0.4: {} ms@2.1.3: {} @@ -13782,13 +13988,13 @@ snapshots: neo-async@2.6.2: {} - next-auth@4.24.11(next@14.2.31(@babel/core@7.28.3)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.90.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + next-auth@4.24.11(next@15.5.3(@babel/core@7.28.3)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.90.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: "@babel/runtime": 7.28.2 "@panva/hkdf": 1.2.1 cookie: 0.7.2 jose: 4.15.9 - next: 14.2.31(@babel/core@7.28.3)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.90.0) + next: 15.5.3(@babel/core@7.28.3)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.90.0) oauth: 0.9.15 openid-client: 5.7.1 preact: 10.27.0 @@ -13802,28 +14008,27 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - next@14.2.31(@babel/core@7.28.3)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.90.0): + next@15.5.3(@babel/core@7.28.3)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.90.0): dependencies: - "@next/env": 14.2.31 - "@swc/helpers": 0.5.5 - busboy: 1.6.0 + "@next/env": 15.5.3 + "@swc/helpers": 0.5.15 caniuse-lite: 1.0.30001734 - graceful-fs: 4.2.11 postcss: 8.4.31 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - styled-jsx: 5.1.1(@babel/core@7.28.3)(babel-plugin-macros@3.1.0)(react@18.3.1) + styled-jsx: 5.1.6(@babel/core@7.28.3)(babel-plugin-macros@3.1.0)(react@18.3.1) optionalDependencies: - "@next/swc-darwin-arm64": 14.2.31 - "@next/swc-darwin-x64": 14.2.31 - "@next/swc-linux-arm64-gnu": 14.2.31 - "@next/swc-linux-arm64-musl": 14.2.31 - "@next/swc-linux-x64-gnu": 14.2.31 - "@next/swc-linux-x64-musl": 14.2.31 - "@next/swc-win32-arm64-msvc": 14.2.31 - "@next/swc-win32-ia32-msvc": 14.2.31 - "@next/swc-win32-x64-msvc": 14.2.31 + "@next/swc-darwin-arm64": 15.5.3 + "@next/swc-darwin-x64": 15.5.3 + "@next/swc-linux-arm64-gnu": 15.5.3 + "@next/swc-linux-arm64-musl": 15.5.3 + "@next/swc-linux-x64-gnu": 15.5.3 + "@next/swc-linux-x64-musl": 15.5.3 + "@next/swc-win32-arm64-msvc": 15.5.3 + "@next/swc-win32-x64-msvc": 15.5.3 + "@opentelemetry/api": 1.9.0 sass: 1.90.0 + sharp: 0.34.3 transitivePeerDependencies: - "@babel/core" - babel-plugin-macros @@ -13833,28 +14038,14 @@ snapshots: node-addon-api@7.1.1: optional: true - node-fetch@2.6.7: - dependencies: - whatwg-url: 5.0.0 - - node-fetch@2.6.9: - dependencies: - whatwg-url: 5.0.0 - node-fetch@2.7.0: dependencies: whatwg-url: 5.0.0 - node-gyp-build@4.8.4: {} - node-int64@0.4.0: {} node-releases@2.0.19: {} - nopt@5.0.0: - dependencies: - abbrev: 1.1.1 - normalize-path@3.0.0: {} normalize-range@0.1.2: {} @@ -13863,19 +14054,12 @@ snapshots: dependencies: path-key: 3.1.1 - npmlog@5.0.1: - dependencies: - are-we-there-yet: 2.0.0 - console-control-strings: 1.1.0 - gauge: 3.0.2 - set-blocking: 2.0.0 - - nuqs@2.4.3(next@14.2.31(@babel/core@7.28.3)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.90.0))(react@18.3.1): + nuqs@2.4.3(next@15.5.3(@babel/core@7.28.3)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.90.0))(react@18.3.1): dependencies: mitt: 3.0.1 react: 18.3.1 optionalDependencies: - next: 14.2.31(@babel/core@7.28.3)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.90.0) + next: 15.5.3(@babel/core@7.28.3)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.90.0) oauth@0.9.15: {} @@ -13927,10 +14111,6 @@ snapshots: oidc-token-hash@5.1.1: {} - once@1.3.3: - dependencies: - wrappy: 1.0.2 - once@1.4.0: dependencies: wrappy: 1.0.2 @@ -13977,16 +14157,12 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 - os-paths@4.4.0: {} - own-keys@1.0.1: dependencies: get-intrinsic: 1.3.0 object-keys: 1.1.1 safe-push-apply: 1.0.0 - p-finally@2.0.1: {} - p-limit@2.3.0: dependencies: p-try: 2.2.0 @@ -14034,21 +14210,12 @@ snapshots: index-to-position: 1.1.0 type-fest: 4.41.0 - parse-ms@2.1.0: {} - - path-browserify@1.0.1: {} - path-exists@4.0.0: {} path-is-absolute@1.0.1: {} path-key@3.1.1: {} - path-match@1.2.4: - dependencies: - http-errors: 1.4.0 - path-to-regexp: 1.9.0 - path-parse@1.0.7: {} path-scurry@1.11.1: @@ -14056,21 +14223,21 @@ snapshots: lru-cache: 10.4.3 minipass: 7.1.2 - path-to-regexp@1.9.0: - dependencies: - isarray: 0.0.1 - - path-to-regexp@6.1.0: {} - - path-to-regexp@6.2.1: {} - path-type@4.0.0: {} - pend@1.2.0: {} - perfect-freehand@1.2.2: {} - picocolors@1.0.0: {} + pg-int8@1.0.1: {} + + pg-protocol@1.10.3: {} + + pg-types@2.2.0: + dependencies: + pg-int8: 1.0.1 + postgres-array: 2.0.0 + postgres-bytea: 1.0.0 + postgres-date: 1.0.7 + postgres-interval: 1.2.0 picocolors@1.1.1: {} @@ -14102,13 +14269,13 @@ snapshots: camelcase-css: 2.0.1 postcss: 8.5.6 - postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.1(@types/node@16.18.11)(typescript@5.9.2)): + postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.1(@types/node@24.2.1)(typescript@5.9.2)): dependencies: lilconfig: 3.1.3 yaml: 2.8.1 optionalDependencies: postcss: 8.5.6 - ts-node: 10.9.1(@types/node@16.18.11)(typescript@5.9.2) + ts-node: 10.9.1(@types/node@24.2.1)(typescript@5.9.2) postcss-nested@6.2.0(postcss@8.5.6): dependencies: @@ -14134,6 +14301,16 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + postgres-array@2.0.0: {} + + postgres-bytea@1.0.0: {} + + postgres-date@1.0.7: {} + + postgres-interval@1.2.0: + dependencies: + xtend: 4.0.2 + preact-render-to-string@5.2.6(preact@10.27.0): dependencies: preact: 10.27.0 @@ -14153,14 +14330,8 @@ snapshots: ansi-styles: 5.2.0 react-is: 18.3.1 - pretty-ms@7.0.1: - dependencies: - parse-ms: 2.1.0 - progress@2.0.3: {} - promisepipe@3.0.0: {} - prop-types@15.8.1: dependencies: loose-envify: 1.4.0 @@ -14177,11 +14348,6 @@ snapshots: dependencies: proxy-compare: 3.0.1 - pump@3.0.3: - dependencies: - end-of-stream: 1.4.5 - once: 1.4.0 - punycode@2.3.1: {} pure-rand@7.0.1: {} @@ -14194,13 +14360,6 @@ snapshots: dependencies: safe-buffer: 5.2.1 - raw-body@2.4.1: - dependencies: - bytes: 3.1.0 - http-errors: 1.7.3 - iconv-lite: 0.4.24 - unpipe: 1.0.0 - react-dom@18.3.1(react@18.3.1): dependencies: loose-envify: 1.4.0 @@ -14292,10 +14451,6 @@ snapshots: string_decoder: 1.3.0 util-deprecate: 1.0.2 - readdirp@3.3.0: - dependencies: - picomatch: 2.3.1 - readdirp@3.6.0: dependencies: picomatch: 2.3.1 @@ -14359,6 +14514,14 @@ snapshots: require-from-string@2.0.2: {} + require-in-the-middle@7.5.2: + dependencies: + debug: 4.4.1(supports-color@9.4.0) + module-details-from-path: 1.0.4 + resolve: 1.22.10 + transitivePeerDependencies: + - supports-color + reraf@1.1.1: {} reselect@5.1.1: {} @@ -14393,12 +14556,31 @@ snapshots: reusify@1.1.0: {} - rimraf@3.0.2: + rollup@4.50.1: dependencies: - glob: 7.2.3 - - rollup@2.79.2: + "@types/estree": 1.0.8 optionalDependencies: + "@rollup/rollup-android-arm-eabi": 4.50.1 + "@rollup/rollup-android-arm64": 4.50.1 + "@rollup/rollup-darwin-arm64": 4.50.1 + "@rollup/rollup-darwin-x64": 4.50.1 + "@rollup/rollup-freebsd-arm64": 4.50.1 + "@rollup/rollup-freebsd-x64": 4.50.1 + "@rollup/rollup-linux-arm-gnueabihf": 4.50.1 + "@rollup/rollup-linux-arm-musleabihf": 4.50.1 + "@rollup/rollup-linux-arm64-gnu": 4.50.1 + "@rollup/rollup-linux-arm64-musl": 4.50.1 + "@rollup/rollup-linux-loongarch64-gnu": 4.50.1 + "@rollup/rollup-linux-ppc64-gnu": 4.50.1 + "@rollup/rollup-linux-riscv64-gnu": 4.50.1 + "@rollup/rollup-linux-riscv64-musl": 4.50.1 + "@rollup/rollup-linux-s390x-gnu": 4.50.1 + "@rollup/rollup-linux-x64-gnu": 4.50.1 + "@rollup/rollup-linux-x64-musl": 4.50.1 + "@rollup/rollup-openharmony-arm64": 4.50.1 + "@rollup/rollup-win32-arm64-msvc": 4.50.1 + "@rollup/rollup-win32-ia32-msvc": 4.50.1 + "@rollup/rollup-win32-x64-msvc": 4.50.1 fsevents: 2.3.3 rtcstats@https://codeload.github.com/whereby/rtcstats/tar.gz/63bcb6420d76d34161b39e494524ae73aa6dd70d: @@ -14431,8 +14613,6 @@ snapshots: es-errors: 1.3.0 is-regex: 1.2.1 - safer-buffer@2.1.2: {} - sass@1.90.0: dependencies: chokidar: 4.0.3 @@ -14445,19 +14625,24 @@ snapshots: dependencies: loose-envify: 1.4.0 + schema-utils@4.3.2: + dependencies: + "@types/json-schema": 7.0.15 + ajv: 8.17.1 + ajv-formats: 2.1.1(ajv@8.17.1) + ajv-keywords: 5.1.0(ajv@8.17.1) + sdp-transform@2.15.0: {} sdp@3.2.1: {} semver@6.3.1: {} - semver@7.3.5: - dependencies: - lru-cache: 6.0.0 - semver@7.7.2: {} - set-blocking@2.0.0: {} + serialize-javascript@6.0.2: + dependencies: + randombytes: 2.1.0 set-function-length@1.2.2: dependencies: @@ -14481,7 +14666,35 @@ snapshots: es-errors: 1.3.0 es-object-atoms: 1.1.1 - setprototypeof@1.1.1: {} + sharp@0.34.3: + dependencies: + color: 4.2.3 + detect-libc: 2.0.4 + semver: 7.7.2 + optionalDependencies: + "@img/sharp-darwin-arm64": 0.34.3 + "@img/sharp-darwin-x64": 0.34.3 + "@img/sharp-libvips-darwin-arm64": 1.2.0 + "@img/sharp-libvips-darwin-x64": 1.2.0 + "@img/sharp-libvips-linux-arm": 1.2.0 + "@img/sharp-libvips-linux-arm64": 1.2.0 + "@img/sharp-libvips-linux-ppc64": 1.2.0 + "@img/sharp-libvips-linux-s390x": 1.2.0 + "@img/sharp-libvips-linux-x64": 1.2.0 + "@img/sharp-libvips-linuxmusl-arm64": 1.2.0 + "@img/sharp-libvips-linuxmusl-x64": 1.2.0 + "@img/sharp-linux-arm": 0.34.3 + "@img/sharp-linux-arm64": 0.34.3 + "@img/sharp-linux-ppc64": 0.34.3 + "@img/sharp-linux-s390x": 0.34.3 + "@img/sharp-linux-x64": 0.34.3 + "@img/sharp-linuxmusl-arm64": 0.34.3 + "@img/sharp-linuxmusl-x64": 0.34.3 + "@img/sharp-wasm32": 0.34.3 + "@img/sharp-win32-arm64": 0.34.3 + "@img/sharp-win32-ia32": 0.34.3 + "@img/sharp-win32-x64": 0.34.3 + optional: true shebang-command@2.0.0: dependencies: @@ -14489,6 +14702,8 @@ snapshots: shebang-regex@3.0.0: {} + shimmer@1.2.1: {} + side-channel-list@1.0.0: dependencies: es-errors: 1.3.0 @@ -14519,8 +14734,6 @@ snapshots: signal-exit@3.0.7: {} - signal-exit@4.0.2: {} - signal-exit@4.1.0: {} simple-peer@9.11.1: @@ -14535,6 +14748,11 @@ snapshots: transitivePeerDependencies: - supports-color + simple-swizzle@0.2.2: + dependencies: + is-arrayish: 0.3.2 + optional: true + slash@3.0.0: {} socket.io-client@4.7.2: @@ -14562,6 +14780,11 @@ snapshots: buffer-from: 1.1.2 source-map: 0.6.1 + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + source-map@0.5.7: {} source-map@0.6.1: {} @@ -14584,27 +14807,11 @@ snapshots: standard-as-callback@2.1.0: {} - stat-mode@0.3.0: {} - - statuses@1.5.0: {} - stop-iteration-iterator@1.1.0: dependencies: es-errors: 1.3.0 internal-slot: 1.1.0 - stream-to-array@2.3.0: - dependencies: - any-promise: 1.3.0 - - stream-to-promise@2.2.0: - dependencies: - any-promise: 1.3.0 - end-of-stream: 1.1.0 - stream-to-array: 2.3.0 - - streamsearch@1.1.0: {} - string-length@4.0.2: dependencies: char-regex: 1.0.2 @@ -14705,7 +14912,7 @@ snapshots: dependencies: inline-style-parser: 0.2.4 - styled-jsx@5.1.1(@babel/core@7.28.3)(babel-plugin-macros@3.1.0)(react@18.3.1): + styled-jsx@5.1.6(@babel/core@7.28.3)(babel-plugin-macros@3.1.0)(react@18.3.1): dependencies: client-only: 0.0.1 react: 18.3.1 @@ -14743,7 +14950,7 @@ snapshots: dependencies: "@pkgr/core": 0.2.9 - tailwindcss@3.4.17(ts-node@10.9.1(@types/node@16.18.11)(typescript@5.9.2)): + tailwindcss@3.4.17(ts-node@10.9.1(@types/node@24.2.1)(typescript@5.9.2)): dependencies: "@alloc/quick-lru": 5.2.0 arg: 5.0.2 @@ -14762,7 +14969,7 @@ snapshots: postcss: 8.5.6 postcss-import: 15.1.0(postcss@8.5.6) postcss-js: 4.0.1(postcss@8.5.6) - postcss-load-config: 4.0.2(postcss@8.5.6)(ts-node@10.9.1(@types/node@16.18.11)(typescript@5.9.2)) + postcss-load-config: 4.0.2(postcss@8.5.6)(ts-node@10.9.1(@types/node@24.2.1)(typescript@5.9.2)) postcss-nested: 6.2.0(postcss@8.5.6) postcss-selector-parser: 6.1.2 resolve: 1.22.10 @@ -14770,24 +14977,23 @@ snapshots: transitivePeerDependencies: - ts-node - tar@4.4.18: - dependencies: - chownr: 1.1.4 - fs-minipass: 1.2.7 - minipass: 2.9.0 - minizlib: 1.3.3 - mkdirp: 0.5.6 - safe-buffer: 5.2.1 - yallist: 3.1.1 + tapable@2.2.3: {} - tar@6.2.1: + terser-webpack-plugin@5.3.14(webpack@5.101.3): dependencies: - chownr: 2.0.0 - fs-minipass: 2.1.0 - minipass: 5.0.0 - minizlib: 2.1.2 - mkdirp: 1.0.4 - yallist: 4.0.0 + "@jridgewell/trace-mapping": 0.3.31 + jest-worker: 27.5.1 + schema-utils: 4.3.2 + serialize-javascript: 6.0.2 + terser: 5.44.0 + webpack: 5.101.3 + + terser@5.44.0: + dependencies: + "@jridgewell/source-map": 0.3.11 + acorn: 8.15.0 + commander: 2.20.3 + source-map-support: 0.5.21 test-exclude@6.0.0: dependencies: @@ -14803,10 +15009,6 @@ snapshots: dependencies: any-promise: 1.3.0 - time-span@4.0.0: - dependencies: - convert-hrtime: 3.0.0 - tinyglobby@0.2.14: dependencies: fdir: 6.4.6(picomatch@4.0.3) @@ -14818,12 +15020,8 @@ snapshots: dependencies: is-number: 7.0.0 - toidentifier@1.0.0: {} - tr46@0.0.3: {} - tree-kill@1.2.2: {} - trim-lines@3.0.1: {} trough@2.2.0: {} @@ -14834,12 +15032,12 @@ snapshots: ts-interface-checker@0.1.13: {} - ts-jest@29.4.1(@babel/core@7.28.3)(@jest/transform@30.1.2)(@jest/types@30.0.5)(babel-jest@30.1.2(@babel/core@7.28.3))(jest-util@30.0.5)(jest@30.1.3(@types/node@16.18.11)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@types/node@16.18.11)(typescript@5.9.2)))(typescript@5.9.2): + ts-jest@29.4.1(@babel/core@7.28.3)(@jest/transform@30.1.2)(@jest/types@30.0.5)(babel-jest@30.1.2(@babel/core@7.28.3))(jest-util@30.0.5)(jest@30.1.3(@types/node@24.2.1)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@types/node@24.2.1)(typescript@5.9.2)))(typescript@5.9.2): dependencies: bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 handlebars: 4.7.8 - jest: 30.1.3(@types/node@16.18.11)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@types/node@16.18.11)(typescript@5.9.2)) + jest: 30.1.3(@types/node@24.2.1)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@types/node@24.2.1)(typescript@5.9.2)) json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 @@ -14854,37 +15052,14 @@ snapshots: babel-jest: 30.1.2(@babel/core@7.28.3) jest-util: 30.0.5 - ts-morph@12.0.0: - dependencies: - "@ts-morph/common": 0.11.1 - code-block-writer: 10.1.1 - - ts-node@10.9.1(@types/node@16.18.11)(typescript@4.9.5): + ts-node@10.9.1(@types/node@24.2.1)(typescript@5.9.2): dependencies: "@cspotcode/source-map-support": 0.8.1 "@tsconfig/node10": 1.0.11 "@tsconfig/node12": 1.0.11 "@tsconfig/node14": 1.0.3 "@tsconfig/node16": 1.0.4 - "@types/node": 16.18.11 - acorn: 8.15.0 - acorn-walk: 8.3.4 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 4.9.5 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - - ts-node@10.9.1(@types/node@16.18.11)(typescript@5.9.2): - dependencies: - "@cspotcode/source-map-support": 0.8.1 - "@tsconfig/node10": 1.0.11 - "@tsconfig/node12": 1.0.11 - "@tsconfig/node14": 1.0.3 - "@tsconfig/node16": 1.0.4 - "@types/node": 16.18.11 + "@types/node": 24.2.1 acorn: 8.15.0 acorn-walk: 8.3.4 arg: 4.1.3 @@ -14896,8 +15071,6 @@ snapshots: yn: 3.1.1 optional: true - ts-toolbelt@6.15.5: {} - tsconfig-paths@3.15.0: dependencies: "@types/json5": 0.0.29 @@ -14952,8 +15125,6 @@ snapshots: possible-typed-array-names: 1.1.0 reflect.getprototypeof: 1.0.10 - typescript@4.9.5: {} - typescript@5.9.2: {} ua-is-frozen@0.1.2: {} @@ -14983,8 +15154,6 @@ snapshots: uhyphen@0.1.0: {} - uid-promise@1.0.0: {} - umap@1.0.2: {} unbox-primitive@1.1.0: @@ -14996,10 +15165,6 @@ snapshots: undici-types@7.10.0: {} - undici@5.28.4: - dependencies: - "@fastify/busboy": 2.1.1 - unified@11.0.5: dependencies: "@types/unist": 3.0.3 @@ -15033,11 +15198,12 @@ snapshots: unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 - universalify@0.1.2: {} - - universalify@2.0.1: {} - - unpipe@1.0.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 unrs-resolver@1.11.1: dependencies: @@ -15096,8 +15262,6 @@ snapshots: uuid-validate@0.0.3: {} - uuid@3.3.2: {} - uuid@8.3.2: {} uuid@9.0.1: {} @@ -15106,7 +15270,8 @@ snapshots: dependencies: uarray: 1.0.0 - v8-compile-cache-lib@3.0.1: {} + v8-compile-cache-lib@3.0.1: + optional: true v8-to-istanbul@9.3.0: dependencies: @@ -15114,26 +15279,6 @@ snapshots: "@types/istanbul-lib-coverage": 2.0.6 convert-source-map: 2.0.0 - vercel@37.14.0: - dependencies: - "@vercel/build-utils": 8.4.12 - "@vercel/fun": 1.1.0 - "@vercel/go": 3.2.0 - "@vercel/hydrogen": 1.0.9 - "@vercel/next": 4.3.18 - "@vercel/node": 3.2.24 - "@vercel/python": 4.3.1 - "@vercel/redwood": 2.1.8 - "@vercel/remix-builder": 2.2.13 - "@vercel/ruby": 2.1.0 - "@vercel/static-build": 2.5.34 - chokidar: 3.3.1 - transitivePeerDependencies: - - "@swc/core" - - "@swc/wasm" - - encoding - - supports-color - vfile-message@4.0.3: dependencies: "@types/unist": 3.0.3 @@ -15148,14 +15293,51 @@ snapshots: dependencies: makeerror: 1.0.12 - wavesurfer.js@7.10.1: {} + watchpack@2.4.4: + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 - web-vitals@0.2.4: {} + wavesurfer.js@7.10.1: {} webidl-conversions@3.0.1: {} webpack-sources@3.3.3: {} + webpack-virtual-modules@0.5.0: {} + + webpack@5.101.3: + dependencies: + "@types/eslint-scope": 3.7.7 + "@types/estree": 1.0.8 + "@types/json-schema": 7.0.15 + "@webassemblyjs/ast": 1.14.1 + "@webassemblyjs/wasm-edit": 1.14.1 + "@webassemblyjs/wasm-parser": 1.14.1 + acorn: 8.15.0 + acorn-import-phases: 1.0.4(acorn@8.15.0) + browserslist: 4.25.2 + chrome-trace-event: 1.0.4 + enhanced-resolve: 5.18.3 + es-module-lexer: 1.7.0 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.0 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 4.3.2 + tapable: 2.2.3 + terser-webpack-plugin: 5.3.14(webpack@5.101.3) + watchpack: 2.4.4 + webpack-sources: 3.3.3 + transitivePeerDependencies: + - "@swc/core" + - esbuild + - uglify-js + webrtc-adapter@9.0.3: dependencies: sdp: 3.2.1 @@ -15210,10 +15392,6 @@ snapshots: dependencies: isexe: 2.0.0 - wide-align@1.1.5: - dependencies: - string-width: 4.2.3 - word-wrap@1.2.5: {} wordwrap@1.0.0: {} @@ -15239,16 +15417,10 @@ snapshots: ws@8.17.1: {} - xdg-app-paths@5.1.0: - dependencies: - xdg-portable: 7.3.0 - - xdg-portable@7.3.0: - dependencies: - os-paths: 4.4.0 - xmlhttprequest-ssl@2.0.0: {} + xtend@4.0.2: {} + y18n@5.0.8: {} yallist@3.1.1: {} @@ -15273,21 +15445,8 @@ snapshots: y18n: 5.0.8 yargs-parser: 21.1.1 - yauzl-clone@1.0.4: - dependencies: - events-intercept: 2.0.0 - - yauzl-promise@2.1.3: - dependencies: - yauzl: 2.10.0 - yauzl-clone: 1.0.4 - - yauzl@2.10.0: - dependencies: - buffer-crc32: 0.2.13 - fd-slicer: 1.1.0 - - yn@3.1.1: {} + yn@3.1.1: + optional: true yocto-queue@0.1.0: {}