diff --git a/demos/use_cases/vercel-ai-sdk/.github/workflows/lint.yml b/demos/use_cases/vercel-ai-sdk/.github/workflows/lint.yml
deleted file mode 100644
index 1d57a670..00000000
--- a/demos/use_cases/vercel-ai-sdk/.github/workflows/lint.yml
+++ /dev/null
@@ -1,25 +0,0 @@
-name: Lint
-on:
- push:
-
-jobs:
- build:
- runs-on: ubuntu-22.04
- strategy:
- matrix:
- node-version: [20]
- steps:
- - uses: actions/checkout@v4
- - name: Install pnpm
- uses: pnpm/action-setup@v4
- with:
- version: 9.12.3
- - name: Use Node.js ${{ matrix.node-version }}
- uses: actions/setup-node@v4
- with:
- node-version: ${{ matrix.node-version }}
- cache: "pnpm"
- - name: Install dependencies
- run: pnpm install
- - name: Run lint
- run: pnpm lint
diff --git a/demos/use_cases/vercel-ai-sdk/.github/workflows/playwright.yml b/demos/use_cases/vercel-ai-sdk/.github/workflows/playwright.yml
deleted file mode 100644
index 6e18c3ec..00000000
--- a/demos/use_cases/vercel-ai-sdk/.github/workflows/playwright.yml
+++ /dev/null
@@ -1,73 +0,0 @@
-name: Playwright Tests
-on:
- push:
- branches: [main, master]
- pull_request:
- branches: [main, master]
-
-jobs:
- test:
- timeout-minutes: 30
- runs-on: ubuntu-latest
- env:
- AUTH_SECRET: ${{ secrets.AUTH_SECRET }}
- POSTGRES_URL: ${{ secrets.POSTGRES_URL }}
- BLOB_READ_WRITE_TOKEN: ${{ secrets.BLOB_READ_WRITE_TOKEN }}
- REDIS_URL: ${{ secrets.REDIS_URL }}
-
- steps:
- - uses: actions/checkout@v4
- with:
- fetch-depth: 1
-
- - uses: actions/setup-node@v4
- with:
- node-version: lts/*
-
- - name: Install pnpm
- uses: pnpm/action-setup@v2
- with:
- version: latest
- run_install: false
-
- - name: Get pnpm store directory
- id: pnpm-cache
- shell: bash
- run: |
- echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
-
- - uses: actions/cache@v3
- with:
- path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
- key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
- restore-keys: |
- ${{ runner.os }}-pnpm-store-
-
- - uses: actions/setup-node@v4
- with:
- node-version: lts/*
- cache: "pnpm"
-
- - name: Install dependencies
- run: pnpm install --frozen-lockfile
-
- - name: Cache Playwright browsers
- uses: actions/cache@v3
- id: playwright-cache
- with:
- path: ~/.cache/ms-playwright
- key: ${{ runner.os }}-playwright-${{ hashFiles('**/pnpm-lock.yaml') }}
-
- - name: Install Playwright Browsers
- if: steps.playwright-cache.outputs.cache-hit != 'true'
- run: pnpm exec playwright install --with-deps chromium
-
- - name: Run Playwright tests
- run: pnpm test
-
- - uses: actions/upload-artifact@v4
- if: always() && !cancelled()
- with:
- name: playwright-report
- path: playwright-report/
- retention-days: 7
diff --git a/demos/use_cases/vercel-ai-sdk/LICENSE b/demos/use_cases/vercel-ai-sdk/LICENSE
deleted file mode 100644
index f8a36dbb..00000000
--- a/demos/use_cases/vercel-ai-sdk/LICENSE
+++ /dev/null
@@ -1,13 +0,0 @@
-Copyright 2024 Vercel, Inc.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
diff --git a/demos/use_cases/vercel-ai-sdk/app/(chat)/api/document/route.ts b/demos/use_cases/vercel-ai-sdk/app/(chat)/api/document/route.ts
deleted file mode 100644
index 0ea78ff5..00000000
--- a/demos/use_cases/vercel-ai-sdk/app/(chat)/api/document/route.ts
+++ /dev/null
@@ -1,126 +0,0 @@
-import { auth } from "@/app/(auth)/auth";
-import type { ArtifactKind } from "@/components/artifact";
-import {
- deleteDocumentsByIdAfterTimestamp,
- getDocumentsById,
- saveDocument,
-} from "@/lib/db/queries";
-import { ChatSDKError } from "@/lib/errors";
-
-export async function GET(request: Request) {
- const { searchParams } = new URL(request.url);
- const id = searchParams.get("id");
-
- if (!id) {
- return new ChatSDKError(
- "bad_request:api",
- "Parameter id is missing"
- ).toResponse();
- }
-
- const session = await auth();
-
- if (!session?.user) {
- return new ChatSDKError("unauthorized:document").toResponse();
- }
-
- const documents = await getDocumentsById({ id });
-
- const [document] = documents;
-
- if (!document) {
- return new ChatSDKError("not_found:document").toResponse();
- }
-
- if (document.userId !== session.user.id) {
- return new ChatSDKError("forbidden:document").toResponse();
- }
-
- return Response.json(documents, { status: 200 });
-}
-
-export async function POST(request: Request) {
- const { searchParams } = new URL(request.url);
- const id = searchParams.get("id");
-
- if (!id) {
- return new ChatSDKError(
- "bad_request:api",
- "Parameter id is required."
- ).toResponse();
- }
-
- const session = await auth();
-
- if (!session?.user) {
- return new ChatSDKError("not_found:document").toResponse();
- }
-
- const {
- content,
- title,
- kind,
- }: { content: string; title: string; kind: ArtifactKind } =
- await request.json();
-
- const documents = await getDocumentsById({ id });
-
- if (documents.length > 0) {
- const [doc] = documents;
-
- if (doc.userId !== session.user.id) {
- return new ChatSDKError("forbidden:document").toResponse();
- }
- }
-
- const document = await saveDocument({
- id,
- content,
- title,
- kind,
- userId: session.user.id,
- });
-
- return Response.json(document, { status: 200 });
-}
-
-export async function DELETE(request: Request) {
- const { searchParams } = new URL(request.url);
- const id = searchParams.get("id");
- const timestamp = searchParams.get("timestamp");
-
- if (!id) {
- return new ChatSDKError(
- "bad_request:api",
- "Parameter id is required."
- ).toResponse();
- }
-
- if (!timestamp) {
- return new ChatSDKError(
- "bad_request:api",
- "Parameter timestamp is required."
- ).toResponse();
- }
-
- const session = await auth();
-
- if (!session?.user) {
- return new ChatSDKError("unauthorized:document").toResponse();
- }
-
- const documents = await getDocumentsById({ id });
-
- const [document] = documents;
-
- if (document.userId !== session.user.id) {
- return new ChatSDKError("forbidden:document").toResponse();
- }
-
- const documentsDeleted = await deleteDocumentsByIdAfterTimestamp({
- id,
- timestamp: new Date(timestamp),
- });
-
- return Response.json(documentsDeleted, { status: 200 });
-}
diff --git a/demos/use_cases/vercel-ai-sdk/app/(chat)/api/suggestions/route.ts b/demos/use_cases/vercel-ai-sdk/app/(chat)/api/suggestions/route.ts
deleted file mode 100644
index 8801004e..00000000
--- a/demos/use_cases/vercel-ai-sdk/app/(chat)/api/suggestions/route.ts
+++ /dev/null
@@ -1,37 +0,0 @@
-import { auth } from "@/app/(auth)/auth";
-import { getSuggestionsByDocumentId } from "@/lib/db/queries";
-import { ChatSDKError } from "@/lib/errors";
-
-export async function GET(request: Request) {
- const { searchParams } = new URL(request.url);
- const documentId = searchParams.get("documentId");
-
- if (!documentId) {
- return new ChatSDKError(
- "bad_request:api",
- "Parameter documentId is required."
- ).toResponse();
- }
-
- const session = await auth();
-
- if (!session?.user) {
- return new ChatSDKError("unauthorized:suggestions").toResponse();
- }
-
- const suggestions = await getSuggestionsByDocumentId({
- documentId,
- });
-
- const [suggestion] = suggestions;
-
- if (!suggestion) {
- return Response.json([], { status: 200 });
- }
-
- if (suggestion.userId !== session.user.id) {
- return new ChatSDKError("forbidden:api").toResponse();
- }
-
- return Response.json(suggestions, { status: 200 });
-}
diff --git a/demos/use_cases/vercel-ai-sdk/artifacts/actions.ts b/demos/use_cases/vercel-ai-sdk/artifacts/actions.ts
deleted file mode 100644
index 2000ca11..00000000
--- a/demos/use_cases/vercel-ai-sdk/artifacts/actions.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-"use server";
-
-import { getSuggestionsByDocumentId } from "@/lib/db/queries";
-
-export async function getSuggestions({ documentId }: { documentId: string }) {
- const suggestions = await getSuggestionsByDocumentId({ documentId });
- return suggestions ?? [];
-}
diff --git a/demos/use_cases/vercel-ai-sdk/artifacts/code/client.tsx b/demos/use_cases/vercel-ai-sdk/artifacts/code/client.tsx
deleted file mode 100644
index 5444a12f..00000000
--- a/demos/use_cases/vercel-ai-sdk/artifacts/code/client.tsx
+++ /dev/null
@@ -1,280 +0,0 @@
-import { toast } from "sonner";
-import { CodeEditor } from "@/components/code-editor";
-import {
- Console,
- type ConsoleOutput,
- type ConsoleOutputContent,
-} from "@/components/console";
-import { Artifact } from "@/components/create-artifact";
-import {
- CopyIcon,
- LogsIcon,
- MessageIcon,
- PlayIcon,
- RedoIcon,
- UndoIcon,
-} from "@/components/icons";
-import { generateUUID } from "@/lib/utils";
-
-const OUTPUT_HANDLERS = {
- matplotlib: `
- import io
- import base64
- from matplotlib import pyplot as plt
-
- # Clear any existing plots
- plt.clf()
- plt.close('all')
-
- # Switch to agg backend
- plt.switch_backend('agg')
-
- def setup_matplotlib_output():
- def custom_show():
- if plt.gcf().get_size_inches().prod() * plt.gcf().dpi ** 2 > 25_000_000:
- print("Warning: Plot size too large, reducing quality")
- plt.gcf().set_dpi(100)
-
- png_buf = io.BytesIO()
- plt.savefig(png_buf, format='png')
- png_buf.seek(0)
- png_base64 = base64.b64encode(png_buf.read()).decode('utf-8')
- print(f'data:image/png;base64,{png_base64}')
- png_buf.close()
-
- plt.clf()
- plt.close('all')
-
- plt.show = custom_show
- `,
- basic: `
- # Basic output capture setup
- `,
-};
-
-function detectRequiredHandlers(code: string): string[] {
- const handlers: string[] = ["basic"];
-
- if (code.includes("matplotlib") || code.includes("plt.")) {
- handlers.push("matplotlib");
- }
-
- return handlers;
-}
-
-type Metadata = {
- outputs: ConsoleOutput[];
-};
-
-export const codeArtifact = new Artifact<"code", Metadata>({
- kind: "code",
- description:
- "Useful for code generation; Code execution is only available for python code.",
- initialize: ({ setMetadata }) => {
- setMetadata({
- outputs: [],
- });
- },
- onStreamPart: ({ streamPart, setArtifact }) => {
- if (streamPart.type === "data-codeDelta") {
- setArtifact((draftArtifact) => ({
- ...draftArtifact,
- content: streamPart.data,
- isVisible:
- draftArtifact.status === "streaming" &&
- draftArtifact.content.length > 300 &&
- draftArtifact.content.length < 310
- ? true
- : draftArtifact.isVisible,
- status: "streaming",
- }));
- }
- },
- content: ({ metadata, setMetadata, ...props }) => {
- return (
- <>
-
-
-
-
- {metadata?.outputs && (
- {
- setMetadata({
- ...metadata,
- outputs: [],
- });
- }}
- />
- )}
- >
- );
- },
- actions: [
- {
- icon: ,
- label: "Run",
- description: "Execute code",
- onClick: async ({ content, setMetadata }) => {
- const runId = generateUUID();
- const outputContent: ConsoleOutputContent[] = [];
-
- setMetadata((metadata) => ({
- ...metadata,
- outputs: [
- ...metadata.outputs,
- {
- id: runId,
- contents: [],
- status: "in_progress",
- },
- ],
- }));
-
- try {
- // @ts-expect-error - loadPyodide is not defined
- const currentPyodideInstance = await globalThis.loadPyodide({
- indexURL: "https://cdn.jsdelivr.net/pyodide/v0.23.4/full/",
- });
-
- currentPyodideInstance.setStdout({
- batched: (output: string) => {
- outputContent.push({
- type: output.startsWith("data:image/png;base64")
- ? "image"
- : "text",
- value: output,
- });
- },
- });
-
- await currentPyodideInstance.loadPackagesFromImports(content, {
- messageCallback: (message: string) => {
- setMetadata((metadata) => ({
- ...metadata,
- outputs: [
- ...metadata.outputs.filter((output) => output.id !== runId),
- {
- id: runId,
- contents: [{ type: "text", value: message }],
- status: "loading_packages",
- },
- ],
- }));
- },
- });
-
- const requiredHandlers = detectRequiredHandlers(content);
- for (const handler of requiredHandlers) {
- if (OUTPUT_HANDLERS[handler as keyof typeof OUTPUT_HANDLERS]) {
- await currentPyodideInstance.runPythonAsync(
- OUTPUT_HANDLERS[handler as keyof typeof OUTPUT_HANDLERS]
- );
-
- if (handler === "matplotlib") {
- await currentPyodideInstance.runPythonAsync(
- "setup_matplotlib_output()"
- );
- }
- }
- }
-
- await currentPyodideInstance.runPythonAsync(content);
-
- setMetadata((metadata) => ({
- ...metadata,
- outputs: [
- ...metadata.outputs.filter((output) => output.id !== runId),
- {
- id: runId,
- contents: outputContent,
- status: "completed",
- },
- ],
- }));
- } catch (error: any) {
- setMetadata((metadata) => ({
- ...metadata,
- outputs: [
- ...metadata.outputs.filter((output) => output.id !== runId),
- {
- id: runId,
- contents: [{ type: "text", value: error.message }],
- status: "failed",
- },
- ],
- }));
- }
- },
- },
- {
- icon: ,
- description: "View Previous version",
- onClick: ({ handleVersionChange }) => {
- handleVersionChange("prev");
- },
- isDisabled: ({ currentVersionIndex }) => {
- if (currentVersionIndex === 0) {
- return true;
- }
-
- return false;
- },
- },
- {
- icon: ,
- description: "View Next version",
- onClick: ({ handleVersionChange }) => {
- handleVersionChange("next");
- },
- isDisabled: ({ isCurrentVersion }) => {
- if (isCurrentVersion) {
- return true;
- }
-
- return false;
- },
- },
- {
- icon: ,
- description: "Copy code to clipboard",
- onClick: ({ content }) => {
- navigator.clipboard.writeText(content);
- toast.success("Copied to clipboard!");
- },
- },
- ],
- toolbar: [
- {
- icon: ,
- description: "Add comments",
- onClick: ({ sendMessage }) => {
- sendMessage({
- role: "user",
- parts: [
- {
- type: "text",
- text: "Add comments to the code snippet for understanding",
- },
- ],
- });
- },
- },
- {
- icon: ,
- description: "Add logs",
- onClick: ({ sendMessage }) => {
- sendMessage({
- role: "user",
- parts: [
- {
- type: "text",
- text: "Add logs to the code snippet for debugging",
- },
- ],
- });
- },
- },
- ],
-});
diff --git a/demos/use_cases/vercel-ai-sdk/artifacts/code/server.ts b/demos/use_cases/vercel-ai-sdk/artifacts/code/server.ts
deleted file mode 100644
index 1318ef86..00000000
--- a/demos/use_cases/vercel-ai-sdk/artifacts/code/server.ts
+++ /dev/null
@@ -1,75 +0,0 @@
-import { streamObject } from "ai";
-import { z } from "zod";
-import { codePrompt, updateDocumentPrompt } from "@/lib/ai/prompts";
-import { getArtifactModel } from "@/lib/ai/providers";
-import { createDocumentHandler } from "@/lib/artifacts/server";
-
-export const codeDocumentHandler = createDocumentHandler<"code">({
- kind: "code",
- onCreateDocument: async ({ title, dataStream }) => {
- let draftContent = "";
-
- const { fullStream } = streamObject({
- model: getArtifactModel(),
- system: codePrompt,
- prompt: title,
- schema: z.object({
- code: z.string(),
- }),
- });
-
- for await (const delta of fullStream) {
- const { type } = delta;
-
- if (type === "object") {
- const { object } = delta;
- const { code } = object;
-
- if (code) {
- dataStream.write({
- type: "data-codeDelta",
- data: code ?? "",
- transient: true,
- });
-
- draftContent = code;
- }
- }
- }
-
- return draftContent;
- },
- onUpdateDocument: async ({ document, description, dataStream }) => {
- let draftContent = "";
-
- const { fullStream } = streamObject({
- model: getArtifactModel(),
- system: updateDocumentPrompt(document.content, "code"),
- prompt: description,
- schema: z.object({
- code: z.string(),
- }),
- });
-
- for await (const delta of fullStream) {
- const { type } = delta;
-
- if (type === "object") {
- const { object } = delta;
- const { code } = object;
-
- if (code) {
- dataStream.write({
- type: "data-codeDelta",
- data: code ?? "",
- transient: true,
- });
-
- draftContent = code;
- }
- }
- }
-
- return draftContent;
- },
-});
diff --git a/demos/use_cases/vercel-ai-sdk/artifacts/image/client.tsx b/demos/use_cases/vercel-ai-sdk/artifacts/image/client.tsx
deleted file mode 100644
index 54045eb1..00000000
--- a/demos/use_cases/vercel-ai-sdk/artifacts/image/client.tsx
+++ /dev/null
@@ -1,76 +0,0 @@
-import { toast } from "sonner";
-import { Artifact } from "@/components/create-artifact";
-import { CopyIcon, RedoIcon, UndoIcon } from "@/components/icons";
-import { ImageEditor } from "@/components/image-editor";
-
-export const imageArtifact = new Artifact({
- kind: "image",
- description: "Useful for image generation",
- onStreamPart: ({ streamPart, setArtifact }) => {
- if (streamPart.type === "data-imageDelta") {
- setArtifact((draftArtifact) => ({
- ...draftArtifact,
- content: streamPart.data,
- isVisible: true,
- status: "streaming",
- }));
- }
- },
- content: ImageEditor,
- actions: [
- {
- icon: ,
- description: "View Previous version",
- onClick: ({ handleVersionChange }) => {
- handleVersionChange("prev");
- },
- isDisabled: ({ currentVersionIndex }) => {
- if (currentVersionIndex === 0) {
- return true;
- }
-
- return false;
- },
- },
- {
- icon: ,
- description: "View Next version",
- onClick: ({ handleVersionChange }) => {
- handleVersionChange("next");
- },
- isDisabled: ({ isCurrentVersion }) => {
- if (isCurrentVersion) {
- return true;
- }
-
- return false;
- },
- },
- {
- icon: ,
- description: "Copy image to clipboard",
- onClick: ({ content }) => {
- const img = new Image();
- img.src = `data:image/png;base64,${content}`;
-
- img.onload = () => {
- const canvas = document.createElement("canvas");
- canvas.width = img.width;
- canvas.height = img.height;
- const ctx = canvas.getContext("2d");
- ctx?.drawImage(img, 0, 0);
- canvas.toBlob((blob) => {
- if (blob) {
- navigator.clipboard.write([
- new ClipboardItem({ "image/png": blob }),
- ]);
- }
- }, "image/png");
- };
-
- toast.success("Copied image to clipboard!");
- },
- },
- ],
- toolbar: [],
-});
diff --git a/demos/use_cases/vercel-ai-sdk/artifacts/sheet/client.tsx b/demos/use_cases/vercel-ai-sdk/artifacts/sheet/client.tsx
deleted file mode 100644
index 5db4abf4..00000000
--- a/demos/use_cases/vercel-ai-sdk/artifacts/sheet/client.tsx
+++ /dev/null
@@ -1,115 +0,0 @@
-import { parse, unparse } from "papaparse";
-import { toast } from "sonner";
-import { Artifact } from "@/components/create-artifact";
-import {
- CopyIcon,
- LineChartIcon,
- RedoIcon,
- SparklesIcon,
- UndoIcon,
-} from "@/components/icons";
-import { SpreadsheetEditor } from "@/components/sheet-editor";
-
-type Metadata = any;
-
-export const sheetArtifact = new Artifact<"sheet", Metadata>({
- kind: "sheet",
- description: "Useful for working with spreadsheets",
- initialize: () => null,
- onStreamPart: ({ setArtifact, streamPart }) => {
- if (streamPart.type === "data-sheetDelta") {
- setArtifact((draftArtifact) => ({
- ...draftArtifact,
- content: streamPart.data,
- isVisible: true,
- status: "streaming",
- }));
- }
- },
- content: ({ content, currentVersionIndex, onSaveContent, status }) => {
- return (
-
- );
- },
- actions: [
- {
- icon: ,
- description: "View Previous version",
- onClick: ({ handleVersionChange }) => {
- handleVersionChange("prev");
- },
- isDisabled: ({ currentVersionIndex }) => {
- if (currentVersionIndex === 0) {
- return true;
- }
-
- return false;
- },
- },
- {
- icon: ,
- description: "View Next version",
- onClick: ({ handleVersionChange }) => {
- handleVersionChange("next");
- },
- isDisabled: ({ isCurrentVersion }) => {
- if (isCurrentVersion) {
- return true;
- }
-
- return false;
- },
- },
- {
- icon: ,
- description: "Copy as .csv",
- onClick: ({ content }) => {
- const parsed = parse(content, { skipEmptyLines: true });
-
- const nonEmptyRows = parsed.data.filter((row) =>
- row.some((cell) => cell.trim() !== "")
- );
-
- const cleanedCsv = unparse(nonEmptyRows);
-
- navigator.clipboard.writeText(cleanedCsv);
- toast.success("Copied csv to clipboard!");
- },
- },
- ],
- toolbar: [
- {
- description: "Format and clean data",
- icon: ,
- onClick: ({ sendMessage }) => {
- sendMessage({
- role: "user",
- parts: [
- { type: "text", text: "Can you please format and clean the data?" },
- ],
- });
- },
- },
- {
- description: "Analyze and visualize data",
- icon: ,
- onClick: ({ sendMessage }) => {
- sendMessage({
- role: "user",
- parts: [
- {
- type: "text",
- text: "Can you please analyze and visualize the data by creating a new code artifact in python?",
- },
- ],
- });
- },
- },
- ],
-});
diff --git a/demos/use_cases/vercel-ai-sdk/artifacts/sheet/server.ts b/demos/use_cases/vercel-ai-sdk/artifacts/sheet/server.ts
deleted file mode 100644
index 4d90f2c9..00000000
--- a/demos/use_cases/vercel-ai-sdk/artifacts/sheet/server.ts
+++ /dev/null
@@ -1,81 +0,0 @@
-import { streamObject } from "ai";
-import { z } from "zod";
-import { sheetPrompt, updateDocumentPrompt } from "@/lib/ai/prompts";
-import { getArtifactModel } from "@/lib/ai/providers";
-import { createDocumentHandler } from "@/lib/artifacts/server";
-
-export const sheetDocumentHandler = createDocumentHandler<"sheet">({
- kind: "sheet",
- onCreateDocument: async ({ title, dataStream }) => {
- let draftContent = "";
-
- const { fullStream } = streamObject({
- model: getArtifactModel(),
- system: sheetPrompt,
- prompt: title,
- schema: z.object({
- csv: z.string().describe("CSV data"),
- }),
- });
-
- for await (const delta of fullStream) {
- const { type } = delta;
-
- if (type === "object") {
- const { object } = delta;
- const { csv } = object;
-
- if (csv) {
- dataStream.write({
- type: "data-sheetDelta",
- data: csv,
- transient: true,
- });
-
- draftContent = csv;
- }
- }
- }
-
- dataStream.write({
- type: "data-sheetDelta",
- data: draftContent,
- transient: true,
- });
-
- return draftContent;
- },
- onUpdateDocument: async ({ document, description, dataStream }) => {
- let draftContent = "";
-
- const { fullStream } = streamObject({
- model: getArtifactModel(),
- system: updateDocumentPrompt(document.content, "sheet"),
- prompt: description,
- schema: z.object({
- csv: z.string(),
- }),
- });
-
- for await (const delta of fullStream) {
- const { type } = delta;
-
- if (type === "object") {
- const { object } = delta;
- const { csv } = object;
-
- if (csv) {
- dataStream.write({
- type: "data-sheetDelta",
- data: csv,
- transient: true,
- });
-
- draftContent = csv;
- }
- }
- }
-
- return draftContent;
- },
-});
diff --git a/demos/use_cases/vercel-ai-sdk/artifacts/text/client.tsx b/demos/use_cases/vercel-ai-sdk/artifacts/text/client.tsx
deleted file mode 100644
index 10730e49..00000000
--- a/demos/use_cases/vercel-ai-sdk/artifacts/text/client.tsx
+++ /dev/null
@@ -1,179 +0,0 @@
-import { toast } from "sonner";
-import { Artifact } from "@/components/create-artifact";
-import { DiffView } from "@/components/diffview";
-import { DocumentSkeleton } from "@/components/document-skeleton";
-import {
- ClockRewind,
- CopyIcon,
- MessageIcon,
- PenIcon,
- RedoIcon,
- UndoIcon,
-} from "@/components/icons";
-import { Editor } from "@/components/text-editor";
-import type { Suggestion } from "@/lib/db/schema";
-import { getSuggestions } from "../actions";
-
-type TextArtifactMetadata = {
- suggestions: Suggestion[];
-};
-
-export const textArtifact = new Artifact<"text", TextArtifactMetadata>({
- kind: "text",
- description: "Useful for text content, like drafting essays and emails.",
- initialize: async ({ documentId, setMetadata }) => {
- const suggestions = await getSuggestions({ documentId });
-
- setMetadata({
- suggestions,
- });
- },
- onStreamPart: ({ streamPart, setMetadata, setArtifact }) => {
- if (streamPart.type === "data-suggestion") {
- setMetadata((metadata) => {
- return {
- suggestions: [...metadata.suggestions, streamPart.data],
- };
- });
- }
-
- if (streamPart.type === "data-textDelta") {
- setArtifact((draftArtifact) => {
- return {
- ...draftArtifact,
- content: draftArtifact.content + streamPart.data,
- isVisible:
- draftArtifact.status === "streaming" &&
- draftArtifact.content.length > 400 &&
- draftArtifact.content.length < 450
- ? true
- : draftArtifact.isVisible,
- status: "streaming",
- };
- });
- }
- },
- content: ({
- mode,
- status,
- content,
- isCurrentVersion,
- currentVersionIndex,
- onSaveContent,
- getDocumentContentById,
- isLoading,
- metadata,
- }) => {
- if (isLoading) {
- return ;
- }
-
- if (mode === "diff") {
- const oldContent = getDocumentContentById(currentVersionIndex - 1);
- const newContent = getDocumentContentById(currentVersionIndex);
-
- return ;
- }
-
- return (
-
-
-
- {metadata?.suggestions && metadata.suggestions.length > 0 ? (
-
- ) : null}
-
- );
- },
- actions: [
- {
- icon: ,
- description: "View changes",
- onClick: ({ handleVersionChange }) => {
- handleVersionChange("toggle");
- },
- isDisabled: ({ currentVersionIndex }) => {
- if (currentVersionIndex === 0) {
- return true;
- }
-
- return false;
- },
- },
- {
- icon: ,
- description: "View Previous version",
- onClick: ({ handleVersionChange }) => {
- handleVersionChange("prev");
- },
- isDisabled: ({ currentVersionIndex }) => {
- if (currentVersionIndex === 0) {
- return true;
- }
-
- return false;
- },
- },
- {
- icon: ,
- description: "View Next version",
- onClick: ({ handleVersionChange }) => {
- handleVersionChange("next");
- },
- isDisabled: ({ isCurrentVersion }) => {
- if (isCurrentVersion) {
- return true;
- }
-
- return false;
- },
- },
- {
- icon: ,
- description: "Copy to clipboard",
- onClick: ({ content }) => {
- navigator.clipboard.writeText(content);
- toast.success("Copied to clipboard!");
- },
- },
- ],
- toolbar: [
- {
- icon: ,
- description: "Add final polish",
- onClick: ({ sendMessage }) => {
- sendMessage({
- role: "user",
- parts: [
- {
- type: "text",
- text: "Please add final polish and check for grammar, add section titles for better structure, and ensure everything reads smoothly.",
- },
- ],
- });
- },
- },
- {
- icon: ,
- description: "Request suggestions",
- onClick: ({ sendMessage }) => {
- sendMessage({
- role: "user",
- parts: [
- {
- type: "text",
- text: "Please add suggestions you have that could improve the writing.",
- },
- ],
- });
- },
- },
- ],
-});
diff --git a/demos/use_cases/vercel-ai-sdk/artifacts/text/server.ts b/demos/use_cases/vercel-ai-sdk/artifacts/text/server.ts
deleted file mode 100644
index 8f7756cc..00000000
--- a/demos/use_cases/vercel-ai-sdk/artifacts/text/server.ts
+++ /dev/null
@@ -1,73 +0,0 @@
-import { smoothStream, streamText } from "ai";
-import { updateDocumentPrompt } from "@/lib/ai/prompts";
-import { getArtifactModel } from "@/lib/ai/providers";
-import { createDocumentHandler } from "@/lib/artifacts/server";
-
-export const textDocumentHandler = createDocumentHandler<"text">({
- kind: "text",
- onCreateDocument: async ({ title, dataStream }) => {
- let draftContent = "";
-
- const { fullStream } = streamText({
- model: getArtifactModel(),
- system:
- "Write about the given topic. Markdown is supported. Use headings wherever appropriate.",
- experimental_transform: smoothStream({ chunking: "word" }),
- prompt: title,
- });
-
- for await (const delta of fullStream) {
- const { type } = delta;
-
- if (type === "text-delta") {
- const { text } = delta;
-
- draftContent += text;
-
- dataStream.write({
- type: "data-textDelta",
- data: text,
- transient: true,
- });
- }
- }
-
- return draftContent;
- },
- onUpdateDocument: async ({ document, description, dataStream }) => {
- let draftContent = "";
-
- const { fullStream } = streamText({
- model: getArtifactModel(),
- system: updateDocumentPrompt(document.content, "text"),
- experimental_transform: smoothStream({ chunking: "word" }),
- prompt: description,
- providerOptions: {
- openai: {
- prediction: {
- type: "content",
- content: document.content,
- },
- },
- },
- });
-
- for await (const delta of fullStream) {
- const { type } = delta;
-
- if (type === "text-delta") {
- const { text } = delta;
-
- draftContent += text;
-
- dataStream.write({
- type: "data-textDelta",
- data: text,
- transient: true,
- });
- }
- }
-
- return draftContent;
- },
-});
diff --git a/demos/use_cases/vercel-ai-sdk/components/artifact-actions.tsx b/demos/use_cases/vercel-ai-sdk/components/artifact-actions.tsx
deleted file mode 100644
index 308b56ae..00000000
--- a/demos/use_cases/vercel-ai-sdk/components/artifact-actions.tsx
+++ /dev/null
@@ -1,107 +0,0 @@
-import { type Dispatch, memo, type SetStateAction, useState } from "react";
-import { toast } from "sonner";
-import { cn } from "@/lib/utils";
-import { artifactDefinitions, type UIArtifact } from "./artifact";
-import type { ArtifactActionContext } from "./create-artifact";
-import { Button } from "./ui/button";
-import { Tooltip, TooltipContent, TooltipTrigger } from "./ui/tooltip";
-
-type ArtifactActionsProps = {
- artifact: UIArtifact;
- handleVersionChange: (type: "next" | "prev" | "toggle" | "latest") => void;
- currentVersionIndex: number;
- isCurrentVersion: boolean;
- mode: "edit" | "diff";
- metadata: any;
- setMetadata: Dispatch>;
-};
-
-function PureArtifactActions({
- artifact,
- handleVersionChange,
- currentVersionIndex,
- isCurrentVersion,
- mode,
- metadata,
- setMetadata,
-}: ArtifactActionsProps) {
- const [isLoading, setIsLoading] = useState(false);
-
- const artifactDefinition = artifactDefinitions.find(
- (definition) => definition.kind === artifact.kind
- );
-
- if (!artifactDefinition) {
- throw new Error("Artifact definition not found!");
- }
-
- const actionContext: ArtifactActionContext = {
- content: artifact.content,
- handleVersionChange,
- currentVersionIndex,
- isCurrentVersion,
- mode,
- metadata,
- setMetadata,
- };
-
- return (
-
- {artifactDefinition.actions.map((action) => (
-
-
-
-
- {action.description}
-
- ))}
-
- );
-}
-
-export const ArtifactActions = memo(
- PureArtifactActions,
- (prevProps, nextProps) => {
- if (prevProps.artifact.status !== nextProps.artifact.status) {
- return false;
- }
- if (prevProps.currentVersionIndex !== nextProps.currentVersionIndex) {
- return false;
- }
- if (prevProps.isCurrentVersion !== nextProps.isCurrentVersion) {
- return false;
- }
- if (prevProps.artifact.content !== nextProps.artifact.content) {
- return false;
- }
-
- return true;
- }
-);
diff --git a/demos/use_cases/vercel-ai-sdk/components/artifact-close-button.tsx b/demos/use_cases/vercel-ai-sdk/components/artifact-close-button.tsx
deleted file mode 100644
index 02112a22..00000000
--- a/demos/use_cases/vercel-ai-sdk/components/artifact-close-button.tsx
+++ /dev/null
@@ -1,30 +0,0 @@
-import { memo } from "react";
-import { initialArtifactData, useArtifact } from "@/hooks/use-artifact";
-import { CrossIcon } from "./icons";
-import { Button } from "./ui/button";
-
-function PureArtifactCloseButton() {
- const { setArtifact } = useArtifact();
-
- return (
-
- );
-}
-
-export const ArtifactCloseButton = memo(PureArtifactCloseButton, () => true);
diff --git a/demos/use_cases/vercel-ai-sdk/components/artifact-messages.tsx b/demos/use_cases/vercel-ai-sdk/components/artifact-messages.tsx
deleted file mode 100644
index 3cfa972b..00000000
--- a/demos/use_cases/vercel-ai-sdk/components/artifact-messages.tsx
+++ /dev/null
@@ -1,115 +0,0 @@
-import type { UseChatHelpers } from "@ai-sdk/react";
-import equal from "fast-deep-equal";
-import { AnimatePresence, motion } from "framer-motion";
-import { memo } from "react";
-import { useMessages } from "@/hooks/use-messages";
-import type { Vote } from "@/lib/db/schema";
-import type { ChatMessage } from "@/lib/types";
-import type { UIArtifact } from "./artifact";
-import { PreviewMessage, ThinkingMessage } from "./message";
-
-type ArtifactMessagesProps = {
- addToolApprovalResponse: UseChatHelpers["addToolApprovalResponse"];
- chatId: string;
- status: UseChatHelpers["status"];
- votes: Vote[] | undefined;
- messages: ChatMessage[];
- setMessages: UseChatHelpers["setMessages"];
- regenerate: UseChatHelpers["regenerate"];
- isReadonly: boolean;
- artifactStatus: UIArtifact["status"];
-};
-
-function PureArtifactMessages({
- addToolApprovalResponse,
- chatId,
- status,
- votes,
- messages,
- setMessages,
- regenerate,
- isReadonly,
-}: ArtifactMessagesProps) {
- const {
- containerRef: messagesContainerRef,
- endRef: messagesEndRef,
- onViewportEnter,
- onViewportLeave,
- hasSentMessage,
- } = useMessages({
- status,
- });
-
- return (
-
- {messages.map((message, index) => (
-
vote.messageId === message.id)
- : undefined
- }
- />
- ))}
-
-
- {status === "submitted" &&
- !messages.some((msg) =>
- msg.parts?.some(
- (part) => "state" in part && part.state === "approval-responded"
- )
- ) && }
-
-
-
-
- );
-}
-
-function areEqual(
- prevProps: ArtifactMessagesProps,
- nextProps: ArtifactMessagesProps
-) {
- if (
- prevProps.artifactStatus === "streaming" &&
- nextProps.artifactStatus === "streaming"
- ) {
- return true;
- }
-
- if (prevProps.status !== nextProps.status) {
- return false;
- }
- if (prevProps.status && nextProps.status) {
- return false;
- }
- if (prevProps.messages.length !== nextProps.messages.length) {
- return false;
- }
- if (!equal(prevProps.votes, nextProps.votes)) {
- return false;
- }
-
- return true;
-}
-
-export const ArtifactMessages = memo(PureArtifactMessages, areEqual);
diff --git a/demos/use_cases/vercel-ai-sdk/components/artifact.tsx b/demos/use_cases/vercel-ai-sdk/components/artifact.tsx
deleted file mode 100644
index 5cde3b18..00000000
--- a/demos/use_cases/vercel-ai-sdk/components/artifact.tsx
+++ /dev/null
@@ -1,532 +0,0 @@
-import type { UseChatHelpers } from "@ai-sdk/react";
-import { formatDistance } from "date-fns";
-import equal from "fast-deep-equal";
-import { AnimatePresence, motion } from "framer-motion";
-import {
- type Dispatch,
- memo,
- type SetStateAction,
- useCallback,
- useEffect,
- useState,
-} from "react";
-import useSWR, { useSWRConfig } from "swr";
-import { useDebounceCallback, useWindowSize } from "usehooks-ts";
-import { codeArtifact } from "@/artifacts/code/client";
-import { imageArtifact } from "@/artifacts/image/client";
-import { sheetArtifact } from "@/artifacts/sheet/client";
-import { textArtifact } from "@/artifacts/text/client";
-import { useArtifact } from "@/hooks/use-artifact";
-import type { Document, Vote } from "@/lib/db/schema";
-import type { Attachment, ChatMessage } from "@/lib/types";
-import { fetcher } from "@/lib/utils";
-import { ArtifactActions } from "./artifact-actions";
-import { ArtifactCloseButton } from "./artifact-close-button";
-import { ArtifactMessages } from "./artifact-messages";
-import { MultimodalInput } from "./multimodal-input";
-import { Toolbar } from "./toolbar";
-import { useSidebar } from "./ui/sidebar";
-import { VersionFooter } from "./version-footer";
-import type { VisibilityType } from "./visibility-selector";
-
-export const artifactDefinitions = [
- textArtifact,
- codeArtifact,
- imageArtifact,
- sheetArtifact,
-];
-export type ArtifactKind = (typeof artifactDefinitions)[number]["kind"];
-
-export type UIArtifact = {
- title: string;
- documentId: string;
- kind: ArtifactKind;
- content: string;
- isVisible: boolean;
- status: "streaming" | "idle";
- boundingBox: {
- top: number;
- left: number;
- width: number;
- height: number;
- };
-};
-
-function PureArtifact({
- addToolApprovalResponse,
- chatId,
- input,
- setInput,
- status,
- stop,
- attachments,
- setAttachments,
- sendMessage,
- messages,
- setMessages,
- regenerate,
- votes,
- isReadonly,
- selectedVisibilityType,
- selectedModelId,
-}: {
- addToolApprovalResponse: UseChatHelpers["addToolApprovalResponse"];
- chatId: string;
- input: string;
- setInput: Dispatch>;
- status: UseChatHelpers["status"];
- stop: UseChatHelpers["stop"];
- attachments: Attachment[];
- setAttachments: Dispatch>;
- messages: ChatMessage[];
- setMessages: UseChatHelpers["setMessages"];
- votes: Vote[] | undefined;
- sendMessage: UseChatHelpers["sendMessage"];
- regenerate: UseChatHelpers["regenerate"];
- isReadonly: boolean;
- selectedVisibilityType: VisibilityType;
- selectedModelId: string;
-}) {
- const { artifact, setArtifact, metadata, setMetadata } = useArtifact();
-
- const {
- data: documents,
- isLoading: isDocumentsFetching,
- mutate: mutateDocuments,
- } = useSWR(
- artifact.documentId !== "init" && artifact.status !== "streaming"
- ? `/api/document?id=${artifact.documentId}`
- : null,
- fetcher
- );
-
- const [mode, setMode] = useState<"edit" | "diff">("edit");
- const [document, setDocument] = useState(null);
- const [currentVersionIndex, setCurrentVersionIndex] = useState(-1);
-
- const { open: isSidebarOpen } = useSidebar();
-
- useEffect(() => {
- if (documents && documents.length > 0) {
- const mostRecentDocument = documents.at(-1);
-
- if (mostRecentDocument) {
- setDocument(mostRecentDocument);
- setCurrentVersionIndex(documents.length - 1);
- setArtifact((currentArtifact) => ({
- ...currentArtifact,
- content: mostRecentDocument.content ?? "",
- }));
- }
- }
- }, [documents, setArtifact]);
-
- useEffect(() => {
- mutateDocuments();
- }, [mutateDocuments]);
-
- const { mutate } = useSWRConfig();
- const [isContentDirty, setIsContentDirty] = useState(false);
-
- const handleContentChange = useCallback(
- (updatedContent: string) => {
- if (!artifact) {
- return;
- }
-
- mutate(
- `/api/document?id=${artifact.documentId}`,
- async (currentDocuments) => {
- if (!currentDocuments) {
- return [];
- }
-
- const currentDocument = currentDocuments.at(-1);
-
- if (!currentDocument || !currentDocument.content) {
- setIsContentDirty(false);
- return currentDocuments;
- }
-
- if (currentDocument.content !== updatedContent) {
- await fetch(`/api/document?id=${artifact.documentId}`, {
- method: "POST",
- body: JSON.stringify({
- title: artifact.title,
- content: updatedContent,
- kind: artifact.kind,
- }),
- });
-
- setIsContentDirty(false);
-
- const newDocument = {
- ...currentDocument,
- content: updatedContent,
- createdAt: new Date(),
- };
-
- return [...currentDocuments, newDocument];
- }
- return currentDocuments;
- },
- { revalidate: false }
- );
- },
- [artifact, mutate]
- );
-
- const debouncedHandleContentChange = useDebounceCallback(
- handleContentChange,
- 2000
- );
-
- const saveContent = useCallback(
- (updatedContent: string, debounce: boolean) => {
- if (document && updatedContent !== document.content) {
- setIsContentDirty(true);
-
- if (debounce) {
- debouncedHandleContentChange(updatedContent);
- } else {
- handleContentChange(updatedContent);
- }
- }
- },
- [document, debouncedHandleContentChange, handleContentChange]
- );
-
- function getDocumentContentById(index: number) {
- if (!documents) {
- return "";
- }
- if (!documents[index]) {
- return "";
- }
- return documents[index].content ?? "";
- }
-
- const handleVersionChange = (type: "next" | "prev" | "toggle" | "latest") => {
- if (!documents) {
- return;
- }
-
- if (type === "latest") {
- setCurrentVersionIndex(documents.length - 1);
- setMode("edit");
- }
-
- if (type === "toggle") {
- setMode((currentMode) => (currentMode === "edit" ? "diff" : "edit"));
- }
-
- if (type === "prev") {
- if (currentVersionIndex > 0) {
- setCurrentVersionIndex((index) => index - 1);
- }
- } else if (type === "next" && currentVersionIndex < documents.length - 1) {
- setCurrentVersionIndex((index) => index + 1);
- }
- };
-
- const [isToolbarVisible, setIsToolbarVisible] = useState(false);
-
- /*
- * NOTE: if there are no documents, or if
- * the documents are being fetched, then
- * we mark it as the current version.
- */
-
- const isCurrentVersion =
- documents && documents.length > 0
- ? currentVersionIndex === documents.length - 1
- : true;
-
- const { width: windowWidth, height: windowHeight } = useWindowSize();
- const isMobile = windowWidth ? windowWidth < 768 : false;
-
- const artifactDefinition = artifactDefinitions.find(
- (definition) => definition.kind === artifact.kind
- );
-
- if (!artifactDefinition) {
- throw new Error("Artifact definition not found!");
- }
-
- useEffect(() => {
- if (artifact.documentId !== "init" && artifactDefinition.initialize) {
- artifactDefinition.initialize({
- documentId: artifact.documentId,
- setMetadata,
- });
- }
- }, [artifact.documentId, artifactDefinition, setMetadata]);
-
- return (
-
- {artifact.isVisible && (
-
- {!isMobile && (
-
- )}
-
- {!isMobile && (
-
-
- {!isCurrentVersion && (
-
- )}
-
-
-
-
- )}
-
-
-
-
-
-
-
-
{artifact.title}
-
- {isContentDirty ? (
-
- Saving changes...
-
- ) : document ? (
-
- {`Updated ${formatDistance(
- new Date(document.createdAt),
- new Date(),
- {
- addSuffix: true,
- }
- )}`}
-
- ) : (
-
- )}
-
-
-
-
-
-
-
-
-
-
- {isCurrentVersion && (
-
- )}
-
-
-
-
- {!isCurrentVersion && (
-
- )}
-
-
-
- )}
-
- );
-}
-
-export const Artifact = memo(PureArtifact, (prevProps, nextProps) => {
- if (prevProps.status !== nextProps.status) {
- return false;
- }
- if (!equal(prevProps.votes, nextProps.votes)) {
- return false;
- }
- if (prevProps.input !== nextProps.input) {
- return false;
- }
- if (!equal(prevProps.messages, nextProps.messages.length)) {
- return false;
- }
- if (prevProps.selectedVisibilityType !== nextProps.selectedVisibilityType) {
- return false;
- }
-
- return true;
-});
diff --git a/demos/use_cases/vercel-ai-sdk/components/chat.tsx b/demos/use_cases/vercel-ai-sdk/components/chat.tsx
index 03bc28c0..4db08fd6 100644
--- a/demos/use_cases/vercel-ai-sdk/components/chat.tsx
+++ b/demos/use_cases/vercel-ai-sdk/components/chat.tsx
@@ -17,14 +17,12 @@ import {
AlertDialogHeader,
AlertDialogTitle,
} from "@/components/ui/alert-dialog";
-import { useArtifactSelector } from "@/hooks/use-artifact";
import { useAutoResume } from "@/hooks/use-auto-resume";
import { useChatVisibility } from "@/hooks/use-chat-visibility";
import type { Vote } from "@/lib/db/schema";
import { ChatSDKError } from "@/lib/errors";
import type { Attachment, ChatMessage } from "@/lib/types";
import { fetcher, fetchWithErrorHandlers, generateUUID } from "@/lib/utils";
-import { Artifact } from "./artifact";
import { useDataStream } from "./data-stream-provider";
import { Messages } from "./messages";
import { MultimodalInput } from "./multimodal-input";
@@ -186,7 +184,6 @@ export function Chat({
);
const [attachments, setAttachments] = useState([]);
- const isArtifactVisible = useArtifactSelector((state) => state.isVisible);
useAutoResume({
autoResume,
@@ -207,7 +204,6 @@ export function Chat({
-
-
void;
- status: "streaming" | "idle";
- isCurrentVersion: boolean;
- currentVersionIndex: number;
- suggestions: Suggestion[];
-};
-
-function PureCodeEditor({ content, onSaveContent, status }: EditorProps) {
- const containerRef = useRef(null);
- const editorRef = useRef(null);
-
- useEffect(() => {
- if (containerRef.current && !editorRef.current) {
- const startState = EditorState.create({
- doc: content,
- extensions: [basicSetup, python(), oneDark],
- });
-
- editorRef.current = new EditorView({
- state: startState,
- parent: containerRef.current,
- });
- }
-
- return () => {
- if (editorRef.current) {
- editorRef.current.destroy();
- editorRef.current = null;
- }
- };
- // NOTE: we only want to run this effect once
- // eslint-disable-next-line
- }, [content]);
-
- useEffect(() => {
- if (editorRef.current) {
- const updateListener = EditorView.updateListener.of((update) => {
- if (update.docChanged) {
- const transaction = update.transactions.find(
- (tr) => !tr.annotation(Transaction.remote)
- );
-
- if (transaction) {
- const newContent = update.state.doc.toString();
- onSaveContent(newContent, true);
- }
- }
- });
-
- const currentSelection = editorRef.current.state.selection;
-
- const newState = EditorState.create({
- doc: editorRef.current.state.doc,
- extensions: [basicSetup, python(), oneDark, updateListener],
- selection: currentSelection,
- });
-
- editorRef.current.setState(newState);
- }
- }, [onSaveContent]);
-
- useEffect(() => {
- if (editorRef.current && content) {
- const currentContent = editorRef.current.state.doc.toString();
-
- if (status === "streaming" || currentContent !== content) {
- const transaction = editorRef.current.state.update({
- changes: {
- from: 0,
- to: currentContent.length,
- insert: content,
- },
- annotations: [Transaction.remote.of(true)],
- });
-
- editorRef.current.dispatch(transaction);
- }
- }
- }, [content, status]);
-
- return (
-
- );
-}
-
-function areEqual(prevProps: EditorProps, nextProps: EditorProps) {
- if (prevProps.suggestions !== nextProps.suggestions) {
- return false;
- }
- if (prevProps.currentVersionIndex !== nextProps.currentVersionIndex) {
- return false;
- }
- if (prevProps.isCurrentVersion !== nextProps.isCurrentVersion) {
- return false;
- }
- if (prevProps.status === "streaming" && nextProps.status === "streaming") {
- return false;
- }
- if (prevProps.content !== nextProps.content) {
- return false;
- }
-
- return true;
-}
-
-export const CodeEditor = memo(PureCodeEditor, areEqual);
diff --git a/demos/use_cases/vercel-ai-sdk/components/console.tsx b/demos/use_cases/vercel-ai-sdk/components/console.tsx
deleted file mode 100644
index a9995785..00000000
--- a/demos/use_cases/vercel-ai-sdk/components/console.tsx
+++ /dev/null
@@ -1,193 +0,0 @@
-import {
- type Dispatch,
- type SetStateAction,
- useCallback,
- useEffect,
- useRef,
- useState,
-} from "react";
-import { useArtifactSelector } from "@/hooks/use-artifact";
-import { cn } from "@/lib/utils";
-import { Loader } from "./elements/loader";
-import { CrossSmallIcon, TerminalWindowIcon } from "./icons";
-import { Button } from "./ui/button";
-
-export type ConsoleOutputContent = {
- type: "text" | "image";
- value: string;
-};
-
-export type ConsoleOutput = {
- id: string;
- status: "in_progress" | "loading_packages" | "completed" | "failed";
- contents: ConsoleOutputContent[];
-};
-
-type ConsoleProps = {
- consoleOutputs: ConsoleOutput[];
- setConsoleOutputs: Dispatch>;
-};
-
-export function Console({ consoleOutputs, setConsoleOutputs }: ConsoleProps) {
- const [height, setHeight] = useState(300);
- const [isResizing, setIsResizing] = useState(false);
- const consoleEndRef = useRef(null);
-
- const isArtifactVisible = useArtifactSelector((state) => state.isVisible);
-
- const minHeight = 100;
- const maxHeight = 800;
-
- const startResizing = useCallback(() => {
- setIsResizing(true);
- }, []);
-
- const stopResizing = useCallback(() => {
- setIsResizing(false);
- }, []);
-
- const resize = useCallback(
- (e: MouseEvent) => {
- if (isResizing) {
- const newHeight = window.innerHeight - e.clientY;
- if (newHeight >= minHeight && newHeight <= maxHeight) {
- setHeight(newHeight);
- }
- }
- },
- [isResizing]
- );
-
- useEffect(() => {
- window.addEventListener("mousemove", resize);
- window.addEventListener("mouseup", stopResizing);
- return () => {
- window.removeEventListener("mousemove", resize);
- window.removeEventListener("mouseup", stopResizing);
- };
- }, [resize, stopResizing]);
-
- useEffect(() => {
- consoleEndRef.current?.scrollIntoView({ behavior: "smooth" });
- }, []);
-
- useEffect(() => {
- if (!isArtifactVisible) {
- setConsoleOutputs([]);
- }
- }, [isArtifactVisible, setConsoleOutputs]);
-
- return consoleOutputs.length > 0 ? (
- <>
- {
- if (e.key === "ArrowUp") {
- setHeight((prev) => Math.min(prev + 10, maxHeight));
- } else if (e.key === "ArrowDown") {
- setHeight((prev) => Math.max(prev - 10, minHeight));
- }
- }}
- onMouseDown={startResizing}
- role="slider"
- style={{ bottom: height - 4 }}
- tabIndex={0}
- />
-
-
-
-
-
-
-
-
- {consoleOutputs.map((consoleOutput, index) => (
-
-
- [{index + 1}]
-
- {["in_progress", "loading_packages"].includes(
- consoleOutput.status
- ) ? (
-
-
-
-
-
- {consoleOutput.status === "in_progress"
- ? "Initializing..."
- : consoleOutput.status === "loading_packages"
- ? consoleOutput.contents.map((content) =>
- content.type === "text" ? content.value : null
- )
- : null}
-
-
- ) : (
-
- {consoleOutput.contents.map((content, contentIndex) =>
- content.type === "image" ? (
-
- {/** biome-ignore lint/nursery/useImageSize: "Generated image without explicit size" */}
-
-
- ) : (
-
- {content.value}
-
- )
- )}
-
- )}
-
- ))}
-
-
-
- >
- ) : null;
-}
diff --git a/demos/use_cases/vercel-ai-sdk/components/create-artifact.tsx b/demos/use_cases/vercel-ai-sdk/components/create-artifact.tsx
deleted file mode 100644
index 78b24b10..00000000
--- a/demos/use_cases/vercel-ai-sdk/components/create-artifact.tsx
+++ /dev/null
@@ -1,93 +0,0 @@
-import type { UseChatHelpers } from "@ai-sdk/react";
-import type { DataUIPart } from "ai";
-import type { ComponentType, Dispatch, ReactNode, SetStateAction } from "react";
-import type { Suggestion } from "@/lib/db/schema";
-import type { ChatMessage, CustomUIDataTypes } from "@/lib/types";
-import type { UIArtifact } from "./artifact";
-
-export type ArtifactActionContext
= {
- content: string;
- handleVersionChange: (type: "next" | "prev" | "toggle" | "latest") => void;
- currentVersionIndex: number;
- isCurrentVersion: boolean;
- mode: "edit" | "diff";
- metadata: M;
- setMetadata: Dispatch>;
-};
-
-type ArtifactAction = {
- icon: ReactNode;
- label?: string;
- description: string;
- onClick: (context: ArtifactActionContext) => Promise | void;
- isDisabled?: (context: ArtifactActionContext) => boolean;
-};
-
-export type ArtifactToolbarContext = {
- sendMessage: UseChatHelpers["sendMessage"];
-};
-
-export type ArtifactToolbarItem = {
- description: string;
- icon: ReactNode;
- onClick: (context: ArtifactToolbarContext) => void;
-};
-
-type ArtifactContent = {
- title: string;
- content: string;
- mode: "edit" | "diff";
- isCurrentVersion: boolean;
- currentVersionIndex: number;
- status: "streaming" | "idle";
- suggestions: Suggestion[];
- onSaveContent: (updatedContent: string, debounce: boolean) => void;
- isInline: boolean;
- getDocumentContentById: (index: number) => string;
- isLoading: boolean;
- metadata: M;
- setMetadata: Dispatch>;
-};
-
-type InitializeParameters = {
- documentId: string;
- setMetadata: Dispatch>;
-};
-
-type ArtifactConfig = {
- kind: T;
- description: string;
- content: ComponentType>;
- actions: ArtifactAction[];
- toolbar: ArtifactToolbarItem[];
- initialize?: (parameters: InitializeParameters) => void;
- onStreamPart: (args: {
- setMetadata: Dispatch>;
- setArtifact: Dispatch>;
- streamPart: DataUIPart;
- }) => void;
-};
-
-export class Artifact {
- readonly kind: T;
- readonly description: string;
- readonly content: ComponentType>;
- readonly actions: ArtifactAction[];
- readonly toolbar: ArtifactToolbarItem[];
- readonly initialize?: (parameters: InitializeParameters) => void;
- readonly onStreamPart: (args: {
- setMetadata: Dispatch>;
- setArtifact: Dispatch>;
- streamPart: DataUIPart;
- }) => void;
-
- constructor(config: ArtifactConfig) {
- this.kind = config.kind;
- this.description = config.description;
- this.content = config.content;
- this.actions = config.actions || [];
- this.toolbar = config.toolbar || [];
- this.initialize = config.initialize || (async () => ({}));
- this.onStreamPart = config.onStreamPart;
- }
-}
diff --git a/demos/use_cases/vercel-ai-sdk/components/currency-exchange.tsx b/demos/use_cases/vercel-ai-sdk/components/currency-exchange.tsx
index f32cd51e..a4d94396 100644
--- a/demos/use_cases/vercel-ai-sdk/components/currency-exchange.tsx
+++ b/demos/use_cases/vercel-ai-sdk/components/currency-exchange.tsx
@@ -181,10 +181,6 @@ export function CurrencyExchange({
>
)}
-
-
- Powered by Frankfurter API
-
);
diff --git a/demos/use_cases/vercel-ai-sdk/components/data-stream-handler.tsx b/demos/use_cases/vercel-ai-sdk/components/data-stream-handler.tsx
index cb53d940..b4d875dc 100644
--- a/demos/use_cases/vercel-ai-sdk/components/data-stream-handler.tsx
+++ b/demos/use_cases/vercel-ai-sdk/components/data-stream-handler.tsx
@@ -3,8 +3,6 @@
import { useEffect } from "react";
import { useSWRConfig } from "swr";
import { unstable_serialize } from "swr/infinite";
-import { initialArtifactData, useArtifact } from "@/hooks/use-artifact";
-import { artifactDefinitions } from "./artifact";
import { useDataStream } from "./data-stream-provider";
import { getChatHistoryPaginationKey } from "./sidebar-history";
@@ -12,8 +10,6 @@ export function DataStreamHandler() {
const { dataStream, setDataStream } = useDataStream();
const { mutate } = useSWRConfig();
- const { artifact, setArtifact, setMetadata } = useArtifact();
-
useEffect(() => {
if (!dataStream?.length) {
return;
@@ -26,67 +22,9 @@ export function DataStreamHandler() {
// Handle chat title updates
if (delta.type === "data-chat-title") {
mutate(unstable_serialize(getChatHistoryPaginationKey));
- continue;
}
- const artifactDefinition = artifactDefinitions.find(
- (currentArtifactDefinition) =>
- currentArtifactDefinition.kind === artifact.kind
- );
-
- if (artifactDefinition?.onStreamPart) {
- artifactDefinition.onStreamPart({
- streamPart: delta,
- setArtifact,
- setMetadata,
- });
- }
-
- setArtifact((draftArtifact) => {
- if (!draftArtifact) {
- return { ...initialArtifactData, status: "streaming" };
- }
-
- switch (delta.type) {
- case "data-id":
- return {
- ...draftArtifact,
- documentId: delta.data,
- status: "streaming",
- };
-
- case "data-title":
- return {
- ...draftArtifact,
- title: delta.data,
- status: "streaming",
- };
-
- case "data-kind":
- return {
- ...draftArtifact,
- kind: delta.data,
- status: "streaming",
- };
-
- case "data-clear":
- return {
- ...draftArtifact,
- content: "",
- status: "streaming",
- };
-
- case "data-finish":
- return {
- ...draftArtifact,
- status: "idle",
- };
-
- default:
- return draftArtifact;
- }
- });
}
- }, [dataStream, setArtifact, setMetadata, artifact, setDataStream, mutate]);
+ }, [dataStream, setDataStream, mutate]);
return null;
}
diff --git a/demos/use_cases/vercel-ai-sdk/components/diffview.tsx b/demos/use_cases/vercel-ai-sdk/components/diffview.tsx
deleted file mode 100644
index 9b1d10fe..00000000
--- a/demos/use_cases/vercel-ai-sdk/components/diffview.tsx
+++ /dev/null
@@ -1,100 +0,0 @@
-import OrderedMap from "orderedmap";
-import {
- DOMParser,
- type MarkSpec,
- type Node as ProsemirrorNode,
- Schema,
-} from "prosemirror-model";
-import { schema } from "prosemirror-schema-basic";
-import { addListNodes } from "prosemirror-schema-list";
-import { EditorState } from "prosemirror-state";
-import { EditorView } from "prosemirror-view";
-import { useEffect, useRef } from "react";
-import { renderToString } from "react-dom/server";
-import { Streamdown } from "streamdown";
-
-import { DiffType, diffEditor } from "@/lib/editor/diff";
-
-const diffSchema = new Schema({
- nodes: addListNodes(schema.spec.nodes, "paragraph block*", "block"),
- marks: OrderedMap.from({
- ...schema.spec.marks.toObject(),
- diffMark: {
- attrs: { type: { default: "" } },
- toDOM(mark) {
- let className = "";
-
- switch (mark.attrs.type) {
- case DiffType.Inserted:
- className =
- "bg-green-100 text-green-700 dark:bg-green-500/70 dark:text-green-300";
- break;
- case DiffType.Deleted:
- className =
- "bg-red-100 line-through text-red-600 dark:bg-red-500/70 dark:text-red-300";
- break;
- default:
- className = "";
- }
- return ["span", { class: className }, 0];
- },
- } as MarkSpec,
- }),
-});
-
-function computeDiff(oldDoc: ProsemirrorNode, newDoc: ProsemirrorNode) {
- return diffEditor(diffSchema, oldDoc.toJSON(), newDoc.toJSON());
-}
-
-type DiffEditorProps = {
- oldContent: string;
- newContent: string;
-};
-
-export const DiffView = ({ oldContent, newContent }: DiffEditorProps) => {
- const editorRef = useRef(null);
- const viewRef = useRef(null);
-
- useEffect(() => {
- if (editorRef.current && !viewRef.current) {
- const parser = DOMParser.fromSchema(diffSchema);
-
- const oldHtmlContent = renderToString(
- {oldContent}
- );
- const newHtmlContent = renderToString(
- {newContent}
- );
-
- const oldContainer = document.createElement("div");
- oldContainer.innerHTML = oldHtmlContent;
-
- const newContainer = document.createElement("div");
- newContainer.innerHTML = newHtmlContent;
-
- const oldDoc = parser.parse(oldContainer);
- const newDoc = parser.parse(newContainer);
-
- const diffedDoc = computeDiff(oldDoc, newDoc);
-
- const state = EditorState.create({
- doc: diffedDoc,
- plugins: [],
- });
-
- viewRef.current = new EditorView(editorRef.current, {
- state,
- editable: () => false,
- });
- }
-
- return () => {
- if (viewRef.current) {
- viewRef.current.destroy();
- viewRef.current = null;
- }
- };
- }, [oldContent, newContent]);
-
- return ;
-};
diff --git a/demos/use_cases/vercel-ai-sdk/components/document-preview.tsx b/demos/use_cases/vercel-ai-sdk/components/document-preview.tsx
deleted file mode 100644
index cd0e331f..00000000
--- a/demos/use_cases/vercel-ai-sdk/components/document-preview.tsx
+++ /dev/null
@@ -1,295 +0,0 @@
-"use client";
-
-import equal from "fast-deep-equal";
-import {
- type MouseEvent,
- memo,
- useCallback,
- useEffect,
- useMemo,
- useRef,
-} from "react";
-import useSWR from "swr";
-import { useArtifact } from "@/hooks/use-artifact";
-import type { Document } from "@/lib/db/schema";
-import { cn, fetcher } from "@/lib/utils";
-import type { ArtifactKind, UIArtifact } from "./artifact";
-import { CodeEditor } from "./code-editor";
-import { DocumentToolCall, DocumentToolResult } from "./document";
-import { InlineDocumentSkeleton } from "./document-skeleton";
-import { FileIcon, FullscreenIcon, ImageIcon, LoaderIcon } from "./icons";
-import { ImageEditor } from "./image-editor";
-import { SpreadsheetEditor } from "./sheet-editor";
-import { Editor } from "./text-editor";
-
-type DocumentPreviewProps = {
- isReadonly: boolean;
- result?: any;
- args?: any;
-};
-
-export function DocumentPreview({
- isReadonly,
- result,
- args,
-}: DocumentPreviewProps) {
- const { artifact, setArtifact } = useArtifact();
-
- const { data: documents, isLoading: isDocumentsFetching } = useSWR<
- Document[]
- >(result ? `/api/document?id=${result.id}` : null, fetcher);
-
- const previewDocument = useMemo(() => documents?.[0], [documents]);
- const hitboxRef = useRef(null);
-
- useEffect(() => {
- const boundingBox = hitboxRef.current?.getBoundingClientRect();
-
- if (artifact.documentId && boundingBox) {
- setArtifact((currentArtifact) => ({
- ...currentArtifact,
- boundingBox: {
- left: boundingBox.x,
- top: boundingBox.y,
- width: boundingBox.width,
- height: boundingBox.height,
- },
- }));
- }
- }, [artifact.documentId, setArtifact]);
-
- if (artifact.isVisible) {
- if (result) {
- return (
-
- );
- }
-
- if (args) {
- return (
-
- );
- }
- }
-
- if (isDocumentsFetching) {
- return ;
- }
-
- const document: Document | null = previewDocument
- ? previewDocument
- : artifact.status === "streaming"
- ? {
- title: artifact.title,
- kind: artifact.kind,
- content: artifact.content,
- id: artifact.documentId,
- createdAt: new Date(),
- userId: "noop",
- }
- : null;
-
- if (!document) {
- return ;
- }
-
- return (
-
-
-
-
-
- );
-}
-
-const LoadingSkeleton = ({ artifactKind }: { artifactKind: ArtifactKind }) => (
-
-
- {artifactKind === "image" ? (
-
- ) : (
-
-
-
- )}
-
-);
-
-const PureHitboxLayer = ({
- hitboxRef,
- result,
- setArtifact,
-}: {
- hitboxRef: React.RefObject;
- result: any;
- setArtifact: (
- updaterFn: UIArtifact | ((currentArtifact: UIArtifact) => UIArtifact)
- ) => void;
-}) => {
- const handleClick = useCallback(
- (event: MouseEvent) => {
- const boundingBox = event.currentTarget.getBoundingClientRect();
-
- setArtifact((artifact) =>
- artifact.status === "streaming"
- ? { ...artifact, isVisible: true }
- : {
- ...artifact,
- title: result.title,
- documentId: result.id,
- kind: result.kind,
- isVisible: true,
- boundingBox: {
- left: boundingBox.x,
- top: boundingBox.y,
- width: boundingBox.width,
- height: boundingBox.height,
- },
- }
- );
- },
- [setArtifact, result]
- );
-
- return (
-
- );
-};
-
-const HitboxLayer = memo(PureHitboxLayer, (prevProps, nextProps) => {
- if (!equal(prevProps.result, nextProps.result)) {
- return false;
- }
- return true;
-});
-
-const PureDocumentHeader = ({
- title,
- kind,
- isStreaming,
-}: {
- title: string;
- kind: ArtifactKind;
- isStreaming: boolean;
-}) => (
-
-
-
- {isStreaming ? (
-
-
-
- ) : kind === "image" ? (
-
- ) : (
-
- )}
-
-
{title}
-
-
-
-);
-
-const DocumentHeader = memo(PureDocumentHeader, (prevProps, nextProps) => {
- if (prevProps.title !== nextProps.title) {
- return false;
- }
- if (prevProps.isStreaming !== nextProps.isStreaming) {
- return false;
- }
-
- return true;
-});
-
-const DocumentContent = ({ document }: { document: Document }) => {
- const { artifact } = useArtifact();
-
- const containerClassName = cn(
- "h-[257px] overflow-y-scroll rounded-b-2xl border border-t-0 dark:border-zinc-700 dark:bg-muted",
- {
- "p-4 sm:px-14 sm:py-16": document.kind === "text",
- "p-0": document.kind === "code",
- }
- );
-
- const commonProps = {
- content: document.content ?? "",
- isCurrentVersion: true,
- currentVersionIndex: 0,
- status: artifact.status,
- saveContent: () => null,
- suggestions: [],
- };
-
- const handleSaveContent = () => null;
-
- return (
-
- {document.kind === "text" ? (
-
- ) : document.kind === "code" ? (
-
- ) : document.kind === "sheet" ? (
-
- ) : document.kind === "image" ? (
-
- ) : null}
-
- );
-};
diff --git a/demos/use_cases/vercel-ai-sdk/components/document-skeleton.tsx b/demos/use_cases/vercel-ai-sdk/components/document-skeleton.tsx
deleted file mode 100644
index 3dae0c02..00000000
--- a/demos/use_cases/vercel-ai-sdk/components/document-skeleton.tsx
+++ /dev/null
@@ -1,39 +0,0 @@
-"use client";
-
-import type { ArtifactKind } from "./artifact";
-
-export const DocumentSkeleton = ({
- artifactKind,
-}: {
- artifactKind: ArtifactKind;
-}) => {
- return artifactKind === "image" ? (
-
- ) : (
-
- );
-};
-
-export const InlineDocumentSkeleton = () => {
- return (
-
- );
-};
diff --git a/demos/use_cases/vercel-ai-sdk/components/document.tsx b/demos/use_cases/vercel-ai-sdk/components/document.tsx
deleted file mode 100644
index 27f5567a..00000000
--- a/demos/use_cases/vercel-ai-sdk/components/document.tsx
+++ /dev/null
@@ -1,161 +0,0 @@
-import { memo } from "react";
-import { toast } from "sonner";
-import { useArtifact } from "@/hooks/use-artifact";
-import type { ArtifactKind } from "./artifact";
-import { FileIcon, LoaderIcon, MessageIcon, PencilEditIcon } from "./icons";
-
-const getActionText = (
- type: "create" | "update" | "request-suggestions",
- tense: "present" | "past"
-) => {
- switch (type) {
- case "create":
- return tense === "present" ? "Creating" : "Created";
- case "update":
- return tense === "present" ? "Updating" : "Updated";
- case "request-suggestions":
- return tense === "present"
- ? "Adding suggestions"
- : "Added suggestions to";
- default:
- return null;
- }
-};
-
-type DocumentToolResultProps = {
- type: "create" | "update" | "request-suggestions";
- result: { id: string; title: string; kind: ArtifactKind };
- isReadonly: boolean;
-};
-
-function PureDocumentToolResult({
- type,
- result,
- isReadonly,
-}: DocumentToolResultProps) {
- const { setArtifact } = useArtifact();
-
- return (
-
- );
-}
-
-export const DocumentToolResult = memo(PureDocumentToolResult, () => true);
-
-type DocumentToolCallProps = {
- type: "create" | "update" | "request-suggestions";
- args:
- | { title: string; kind: ArtifactKind } // for create
- | { id: string; description: string } // for update
- | { documentId: string }; // for request-suggestions
- isReadonly: boolean;
-};
-
-function PureDocumentToolCall({
- type,
- args,
- isReadonly,
-}: DocumentToolCallProps) {
- const { setArtifact } = useArtifact();
-
- return (
-
- );
-}
-
-export const DocumentToolCall = memo(PureDocumentToolCall, () => true);
diff --git a/demos/use_cases/vercel-ai-sdk/components/image-editor.tsx b/demos/use_cases/vercel-ai-sdk/components/image-editor.tsx
deleted file mode 100644
index 2ee56b9c..00000000
--- a/demos/use_cases/vercel-ai-sdk/components/image-editor.tsx
+++ /dev/null
@@ -1,49 +0,0 @@
-import cn from "classnames";
-import { LoaderIcon } from "./icons";
-
-type ImageEditorProps = {
- title: string;
- content: string;
- isCurrentVersion: boolean;
- currentVersionIndex: number;
- status: string;
- isInline: boolean;
-};
-
-export function ImageEditor({
- title,
- content,
- status,
- isInline,
-}: ImageEditorProps) {
- return (
-
- {status === "streaming" ? (
-
- {!isInline && (
-
-
-
- )}
-
Generating Image...
-
- ) : (
-
- {/** biome-ignore lint/nursery/useImageSize: "Generated image without explicit size" */}
-
-
- )}
-
- );
-}
diff --git a/demos/use_cases/vercel-ai-sdk/components/messages.tsx b/demos/use_cases/vercel-ai-sdk/components/messages.tsx
index 729c4307..6bb59791 100644
--- a/demos/use_cases/vercel-ai-sdk/components/messages.tsx
+++ b/demos/use_cases/vercel-ai-sdk/components/messages.tsx
@@ -18,7 +18,6 @@ type MessagesProps = {
setMessages: UseChatHelpers["setMessages"];
regenerate: UseChatHelpers["regenerate"];
isReadonly: boolean;
- isArtifactVisible: boolean;
selectedModelId: string;
};
@@ -108,10 +107,6 @@ function PureMessages({
}
export const Messages = memo(PureMessages, (prevProps, nextProps) => {
- if (prevProps.isArtifactVisible && nextProps.isArtifactVisible) {
- return true;
- }
-
if (prevProps.status !== nextProps.status) {
return false;
}
diff --git a/demos/use_cases/vercel-ai-sdk/components/sheet-editor.tsx b/demos/use_cases/vercel-ai-sdk/components/sheet-editor.tsx
deleted file mode 100644
index 3f60e2b6..00000000
--- a/demos/use_cases/vercel-ai-sdk/components/sheet-editor.tsx
+++ /dev/null
@@ -1,140 +0,0 @@
-"use client";
-
-import { useTheme } from "next-themes";
-import { parse, unparse } from "papaparse";
-import { memo, useEffect, useMemo, useState } from "react";
-import DataGrid, { textEditor } from "react-data-grid";
-import { cn } from "@/lib/utils";
-
-import "react-data-grid/lib/styles.css";
-
-type SheetEditorProps = {
- content: string;
- saveContent: (content: string, isCurrentVersion: boolean) => void;
- currentVersionIndex: number;
- isCurrentVersion: boolean;
- status: string;
-};
-
-const MIN_ROWS = 50;
-const MIN_COLS = 26;
-
-const PureSpreadsheetEditor = ({ content, saveContent }: SheetEditorProps) => {
- const { resolvedTheme } = useTheme();
-
- const parseData = useMemo(() => {
- if (!content) {
- return new Array(MIN_ROWS).fill(new Array(MIN_COLS).fill(""));
- }
- const result = parse(content, { skipEmptyLines: true });
-
- const paddedData = result.data.map((row) => {
- const paddedRow = [...row];
- while (paddedRow.length < MIN_COLS) {
- paddedRow.push("");
- }
- return paddedRow;
- });
-
- while (paddedData.length < MIN_ROWS) {
- paddedData.push(new Array(MIN_COLS).fill(""));
- }
-
- return paddedData;
- }, [content]);
-
- const columns = useMemo(() => {
- const rowNumberColumn = {
- key: "rowNumber",
- name: "",
- frozen: true,
- width: 50,
- renderCell: ({ rowIdx }: { rowIdx: number }) => rowIdx + 1,
- cellClass: "border-t border-r dark:bg-zinc-950 dark:text-zinc-50",
- headerCellClass: "border-t border-r dark:bg-zinc-900 dark:text-zinc-50",
- };
-
- const dataColumns = Array.from({ length: MIN_COLS }, (_, i) => ({
- key: i.toString(),
- name: String.fromCharCode(65 + i),
- renderEditCell: textEditor,
- width: 120,
- cellClass: cn("border-t dark:bg-zinc-950 dark:text-zinc-50", {
- "border-l": i !== 0,
- }),
- headerCellClass: cn("border-t dark:bg-zinc-900 dark:text-zinc-50", {
- "border-l": i !== 0,
- }),
- }));
-
- return [rowNumberColumn, ...dataColumns];
- }, []);
-
- const initialRows = useMemo(() => {
- return parseData.map((row, rowIndex) => {
- const rowData: any = {
- id: rowIndex,
- rowNumber: rowIndex + 1,
- };
-
- columns.slice(1).forEach((col, colIndex) => {
- rowData[col.key] = row[colIndex] || "";
- });
-
- return rowData;
- });
- }, [parseData, columns]);
-
- const [localRows, setLocalRows] = useState(initialRows);
-
- useEffect(() => {
- setLocalRows(initialRows);
- }, [initialRows]);
-
- const generateCsv = (data: any[][]) => {
- return unparse(data);
- };
-
- const handleRowsChange = (newRows: any[]) => {
- setLocalRows(newRows);
-
- const updatedData = newRows.map((row) => {
- return columns.slice(1).map((col) => row[col.key] || "");
- });
-
- const newCsvContent = generateCsv(updatedData);
- saveContent(newCsvContent, true);
- };
-
- return (
- {
- if (args.column.key !== "rowNumber") {
- args.selectCell(true);
- }
- }}
- onRowsChange={handleRowsChange}
- rows={localRows}
- style={{ height: "100%" }}
- />
- );
-};
-
-function areEqual(prevProps: SheetEditorProps, nextProps: SheetEditorProps) {
- return (
- prevProps.currentVersionIndex === nextProps.currentVersionIndex &&
- prevProps.isCurrentVersion === nextProps.isCurrentVersion &&
- !(prevProps.status === "streaming" && nextProps.status === "streaming") &&
- prevProps.content === nextProps.content &&
- prevProps.saveContent === nextProps.saveContent
- );
-}
-
-export const SpreadsheetEditor = memo(PureSpreadsheetEditor, areEqual);
diff --git a/demos/use_cases/vercel-ai-sdk/components/suggestion.tsx b/demos/use_cases/vercel-ai-sdk/components/suggestion.tsx
deleted file mode 100644
index 846ab0fb..00000000
--- a/demos/use_cases/vercel-ai-sdk/components/suggestion.tsx
+++ /dev/null
@@ -1,77 +0,0 @@
-"use client";
-
-import { AnimatePresence, motion } from "framer-motion";
-import { useState } from "react";
-import { useWindowSize } from "usehooks-ts";
-
-import type { UISuggestion } from "@/lib/editor/suggestions";
-import { cn } from "@/lib/utils";
-import type { ArtifactKind } from "./artifact";
-import { CrossIcon, MessageIcon } from "./icons";
-import { Button } from "./ui/button";
-
-export const Suggestion = ({
- suggestion,
- onApply,
- artifactKind,
-}: {
- suggestion: UISuggestion;
- onApply: () => void;
- artifactKind: ArtifactKind;
-}) => {
- const [isExpanded, setIsExpanded] = useState(false);
- const { width: windowWidth } = useWindowSize();
-
- return (
-
- {isExpanded ? (
-
-
-
-
-
- {suggestion.description}
-
-
- ) : (
- {
- setIsExpanded(true);
- }}
- whileHover={{ scale: 1.1 }}
- >
-
-
- )}
-
- );
-};
diff --git a/demos/use_cases/vercel-ai-sdk/components/text-editor.tsx b/demos/use_cases/vercel-ai-sdk/components/text-editor.tsx
deleted file mode 100644
index 7f600788..00000000
--- a/demos/use_cases/vercel-ai-sdk/components/text-editor.tsx
+++ /dev/null
@@ -1,164 +0,0 @@
-"use client";
-
-import { exampleSetup } from "prosemirror-example-setup";
-import { inputRules } from "prosemirror-inputrules";
-import { EditorState } from "prosemirror-state";
-import { EditorView } from "prosemirror-view";
-import { memo, useEffect, useRef } from "react";
-
-import type { Suggestion } from "@/lib/db/schema";
-import {
- documentSchema,
- handleTransaction,
- headingRule,
-} from "@/lib/editor/config";
-import {
- buildContentFromDocument,
- buildDocumentFromContent,
- createDecorations,
-} from "@/lib/editor/functions";
-import {
- projectWithPositions,
- suggestionsPlugin,
- suggestionsPluginKey,
-} from "@/lib/editor/suggestions";
-
-type EditorProps = {
- content: string;
- onSaveContent: (updatedContent: string, debounce: boolean) => void;
- status: "streaming" | "idle";
- isCurrentVersion: boolean;
- currentVersionIndex: number;
- suggestions: Suggestion[];
-};
-
-function PureEditor({
- content,
- onSaveContent,
- suggestions,
- status,
-}: EditorProps) {
- const containerRef = useRef(null);
- const editorRef = useRef(null);
-
- useEffect(() => {
- if (containerRef.current && !editorRef.current) {
- const state = EditorState.create({
- doc: buildDocumentFromContent(content),
- plugins: [
- ...exampleSetup({ schema: documentSchema, menuBar: false }),
- inputRules({
- rules: [
- headingRule(1),
- headingRule(2),
- headingRule(3),
- headingRule(4),
- headingRule(5),
- headingRule(6),
- ],
- }),
- suggestionsPlugin,
- ],
- });
-
- editorRef.current = new EditorView(containerRef.current, {
- state,
- });
- }
-
- return () => {
- if (editorRef.current) {
- editorRef.current.destroy();
- editorRef.current = null;
- }
- };
- // NOTE: we only want to run this effect once
- // eslint-disable-next-line
- }, [content]);
-
- useEffect(() => {
- if (editorRef.current) {
- editorRef.current.setProps({
- dispatchTransaction: (transaction) => {
- handleTransaction({
- transaction,
- editorRef,
- onSaveContent,
- });
- },
- });
- }
- }, [onSaveContent]);
-
- useEffect(() => {
- if (editorRef.current && content) {
- const currentContent = buildContentFromDocument(
- editorRef.current.state.doc
- );
-
- if (status === "streaming") {
- const newDocument = buildDocumentFromContent(content);
-
- const transaction = editorRef.current.state.tr.replaceWith(
- 0,
- editorRef.current.state.doc.content.size,
- newDocument.content
- );
-
- transaction.setMeta("no-save", true);
- editorRef.current.dispatch(transaction);
- return;
- }
-
- if (currentContent !== content) {
- const newDocument = buildDocumentFromContent(content);
-
- const transaction = editorRef.current.state.tr.replaceWith(
- 0,
- editorRef.current.state.doc.content.size,
- newDocument.content
- );
-
- transaction.setMeta("no-save", true);
- editorRef.current.dispatch(transaction);
- }
- }
- }, [content, status]);
-
- useEffect(() => {
- if (editorRef.current?.state.doc && content) {
- const projectedSuggestions = projectWithPositions(
- editorRef.current.state.doc,
- suggestions
- ).filter(
- (suggestion) => suggestion.selectionStart && suggestion.selectionEnd
- );
-
- const decorations = createDecorations(
- projectedSuggestions,
- editorRef.current
- );
-
- const transaction = editorRef.current.state.tr;
- transaction.setMeta(suggestionsPluginKey, { decorations });
- editorRef.current.dispatch(transaction);
- }
- }, [suggestions, content]);
-
- return (
-
- );
-}
-
-function areEqual(prevProps: EditorProps, nextProps: EditorProps) {
- return (
- prevProps.suggestions === nextProps.suggestions &&
- prevProps.currentVersionIndex === nextProps.currentVersionIndex &&
- prevProps.isCurrentVersion === nextProps.isCurrentVersion &&
- !(prevProps.status === "streaming" && nextProps.status === "streaming") &&
- prevProps.content === nextProps.content &&
- prevProps.onSaveContent === nextProps.onSaveContent
- );
-}
-
-export const Editor = memo(PureEditor, areEqual);
diff --git a/demos/use_cases/vercel-ai-sdk/components/toolbar.tsx b/demos/use_cases/vercel-ai-sdk/components/toolbar.tsx
deleted file mode 100644
index b6b4fd08..00000000
--- a/demos/use_cases/vercel-ai-sdk/components/toolbar.tsx
+++ /dev/null
@@ -1,476 +0,0 @@
-"use client";
-import type { UseChatHelpers } from "@ai-sdk/react";
-import cx from "classnames";
-import {
- AnimatePresence,
- motion,
- useMotionValue,
- useTransform,
-} from "framer-motion";
-import { nanoid } from "nanoid";
-import {
- type Dispatch,
- memo,
- type ReactNode,
- type SetStateAction,
- useEffect,
- useRef,
- useState,
-} from "react";
-import { useOnClickOutside } from "usehooks-ts";
-import {
- Tooltip,
- TooltipContent,
- TooltipProvider,
- TooltipTrigger,
-} from "@/components/ui/tooltip";
-import type { ChatMessage } from "@/lib/types";
-import { type ArtifactKind, artifactDefinitions } from "./artifact";
-import type { ArtifactToolbarItem } from "./create-artifact";
-import { ArrowUpIcon, StopIcon, SummarizeIcon } from "./icons";
-
-type ToolProps = {
- description: string;
- icon: ReactNode;
- selectedTool: string | null;
- setSelectedTool: Dispatch>;
- isToolbarVisible?: boolean;
- setIsToolbarVisible?: Dispatch>;
- isAnimating: boolean;
- sendMessage: UseChatHelpers["sendMessage"];
- onClick: ({
- sendMessage,
- }: {
- sendMessage: UseChatHelpers["sendMessage"];
- }) => void;
-};
-
-const Tool = ({
- description,
- icon,
- selectedTool,
- setSelectedTool,
- isToolbarVisible,
- setIsToolbarVisible,
- isAnimating,
- sendMessage,
- onClick,
-}: ToolProps) => {
- const [isHovered, setIsHovered] = useState(false);
-
- useEffect(() => {
- if (selectedTool !== description) {
- setIsHovered(false);
- }
- }, [selectedTool, description]);
-
- const handleSelect = () => {
- if (!isToolbarVisible && setIsToolbarVisible) {
- setIsToolbarVisible(true);
- return;
- }
-
- if (!selectedTool) {
- setIsHovered(true);
- setSelectedTool(description);
- return;
- }
-
- if (selectedTool !== description) {
- setSelectedTool(description);
- } else {
- setSelectedTool(null);
- onClick({ sendMessage });
- }
- };
-
- return (
-
-
- {
- handleSelect();
- }}
- onHoverEnd={() => {
- if (selectedTool !== description) {
- setIsHovered(false);
- }
- }}
- onHoverStart={() => {
- setIsHovered(true);
- }}
- onKeyDown={(event) => {
- if (event.key === "Enter") {
- handleSelect();
- }
- }}
- whileHover={{ scale: 1.1 }}
- whileTap={{ scale: 0.95 }}
- >
- {selectedTool === description ? : icon}
-
-
-
- {description}
-
-
- );
-};
-
-const randomArr = [...new Array(6)].map((_x) => nanoid(5));
-
-const ReadingLevelSelector = ({
- setSelectedTool,
- sendMessage,
- isAnimating,
-}: {
- setSelectedTool: Dispatch>;
- isAnimating: boolean;
- sendMessage: UseChatHelpers["sendMessage"];
-}) => {
- const LEVELS = [
- "Elementary",
- "Middle School",
- "Keep current level",
- "High School",
- "College",
- "Graduate",
- ];
-
- const y = useMotionValue(-40 * 2);
- const dragConstraints = 5 * 40 + 2;
- const yToLevel = useTransform(y, [0, -dragConstraints], [0, 5]);
-
- const [currentLevel, setCurrentLevel] = useState(2);
- const [hasUserSelectedLevel, setHasUserSelectedLevel] =
- useState(false);
-
- useEffect(() => {
- const unsubscribe = yToLevel.on("change", (latest) => {
- const level = Math.min(5, Math.max(0, Math.round(Math.abs(latest))));
- setCurrentLevel(level);
- });
-
- return () => unsubscribe();
- }, [yToLevel]);
-
- return (
-
- {randomArr.map((id) => (
-
-
-
- ))}
-
-
-
-
- {
- if (currentLevel !== 2 && hasUserSelectedLevel) {
- sendMessage({
- role: "user",
- parts: [
- {
- type: "text",
- text: `Please adjust the reading level to ${LEVELS[currentLevel]} level.`,
- },
- ],
- });
-
- setSelectedTool(null);
- }
- }}
- onDragEnd={() => {
- if (currentLevel === 2) {
- setSelectedTool(null);
- } else {
- setHasUserSelectedLevel(true);
- }
- }}
- onDragStart={() => {
- setHasUserSelectedLevel(false);
- }}
- style={{ y }}
- transition={{ duration: 0.1 }}
- whileHover={{ scale: 1.05 }}
- whileTap={{ scale: 0.95 }}
- >
- {currentLevel === 2 ? : }
-
-
-
- {LEVELS[currentLevel]}
-
-
-
-
- );
-};
-
-export const Tools = ({
- isToolbarVisible,
- selectedTool,
- setSelectedTool,
- sendMessage,
- isAnimating,
- setIsToolbarVisible,
- tools,
-}: {
- isToolbarVisible: boolean;
- selectedTool: string | null;
- setSelectedTool: Dispatch>;
- sendMessage: UseChatHelpers["sendMessage"];
- isAnimating: boolean;
- setIsToolbarVisible: Dispatch>;
- tools: ArtifactToolbarItem[];
-}) => {
- const [primaryTool, ...secondaryTools] = tools;
-
- return (
-
-
- {isToolbarVisible &&
- secondaryTools.map((secondaryTool) => (
-
- ))}
-
-
-
-
- );
-};
-
-const PureToolbar = ({
- isToolbarVisible,
- setIsToolbarVisible,
- sendMessage,
- status,
- stop,
- setMessages,
- artifactKind,
-}: {
- isToolbarVisible: boolean;
- setIsToolbarVisible: Dispatch>;
- status: UseChatHelpers["status"];
- sendMessage: UseChatHelpers["sendMessage"];
- stop: UseChatHelpers["stop"];
- setMessages: UseChatHelpers["setMessages"];
- artifactKind: ArtifactKind;
-}) => {
- const toolbarRef = useRef(null);
- const timeoutRef = useRef>();
-
- const [selectedTool, setSelectedTool] = useState(null);
- const [isAnimating, setIsAnimating] = useState(false);
-
- useOnClickOutside(toolbarRef, () => {
- setIsToolbarVisible(false);
- setSelectedTool(null);
- });
-
- const startCloseTimer = () => {
- if (timeoutRef.current) {
- clearTimeout(timeoutRef.current);
- }
-
- timeoutRef.current = setTimeout(() => {
- setSelectedTool(null);
- setIsToolbarVisible(false);
- }, 2000);
- };
-
- const cancelCloseTimer = () => {
- if (timeoutRef.current) {
- clearTimeout(timeoutRef.current);
- }
- };
-
- useEffect(() => {
- return () => {
- if (timeoutRef.current) {
- clearTimeout(timeoutRef.current);
- }
- };
- }, []);
-
- useEffect(() => {
- if (status === "streaming") {
- setIsToolbarVisible(false);
- }
- }, [status, setIsToolbarVisible]);
-
- const artifactDefinition = artifactDefinitions.find(
- (definition) => definition.kind === artifactKind
- );
-
- if (!artifactDefinition) {
- throw new Error("Artifact definition not found!");
- }
-
- const toolsByArtifactKind = artifactDefinition.toolbar;
-
- if (toolsByArtifactKind.length === 0) {
- return null;
- }
-
- return (
-
- {
- setIsAnimating(false);
- }}
- onAnimationStart={() => {
- setIsAnimating(true);
- }}
- onHoverEnd={() => {
- if (status === "streaming") {
- return;
- }
-
- startCloseTimer();
- }}
- onHoverStart={() => {
- if (status === "streaming") {
- return;
- }
-
- cancelCloseTimer();
- setIsToolbarVisible(true);
- }}
- ref={toolbarRef}
- transition={{ type: "spring", stiffness: 300, damping: 25 }}
- >
- {status === "streaming" ? (
- {
- stop();
- setMessages((messages) => messages);
- }}
- >
-
-
- ) : selectedTool === "adjust-reading-level" ? (
-
- ) : (
-
- )}
-
-
- );
-};
-
-export const Toolbar = memo(PureToolbar, (prevProps, nextProps) => {
- if (prevProps.status !== nextProps.status) {
- return false;
- }
- if (prevProps.isToolbarVisible !== nextProps.isToolbarVisible) {
- return false;
- }
- if (prevProps.artifactKind !== nextProps.artifactKind) {
- return false;
- }
-
- return true;
-});
diff --git a/demos/use_cases/vercel-ai-sdk/components/version-footer.tsx b/demos/use_cases/vercel-ai-sdk/components/version-footer.tsx
deleted file mode 100644
index 41bf5e58..00000000
--- a/demos/use_cases/vercel-ai-sdk/components/version-footer.tsx
+++ /dev/null
@@ -1,107 +0,0 @@
-"use client";
-
-import { isAfter } from "date-fns";
-import { motion } from "framer-motion";
-import { useState } from "react";
-import { useSWRConfig } from "swr";
-import { useWindowSize } from "usehooks-ts";
-import { useArtifact } from "@/hooks/use-artifact";
-import type { Document } from "@/lib/db/schema";
-import { getDocumentTimestampByIndex } from "@/lib/utils";
-import { LoaderIcon } from "./icons";
-import { Button } from "./ui/button";
-
-type VersionFooterProps = {
- handleVersionChange: (type: "next" | "prev" | "toggle" | "latest") => void;
- documents: Document[] | undefined;
- currentVersionIndex: number;
-};
-
-export const VersionFooter = ({
- handleVersionChange,
- documents,
- currentVersionIndex,
-}: VersionFooterProps) => {
- const { artifact } = useArtifact();
-
- const { width } = useWindowSize();
- const isMobile = width < 768;
-
- const { mutate } = useSWRConfig();
- const [isMutating, setIsMutating] = useState(false);
-
- if (!documents) {
- return;
- }
-
- return (
-
-
-
You are viewing a previous version
-
- Restore this version to make edits
-
-
-
-
-
-
-
-
- );
-};
diff --git a/demos/use_cases/vercel-ai-sdk/hooks/use-artifact.ts b/demos/use_cases/vercel-ai-sdk/hooks/use-artifact.ts
deleted file mode 100644
index 61107986..00000000
--- a/demos/use_cases/vercel-ai-sdk/hooks/use-artifact.ts
+++ /dev/null
@@ -1,89 +0,0 @@
-"use client";
-
-import { useCallback, useMemo } from "react";
-import useSWR from "swr";
-import type { UIArtifact } from "@/components/artifact";
-
-export const initialArtifactData: UIArtifact = {
- documentId: "init",
- content: "",
- kind: "text",
- title: "",
- status: "idle",
- isVisible: false,
- boundingBox: {
- top: 0,
- left: 0,
- width: 0,
- height: 0,
- },
-};
-
-type Selector = (state: UIArtifact) => T;
-
-export function useArtifactSelector(selector: Selector) {
- const { data: localArtifact } = useSWR("artifact", null, {
- fallbackData: initialArtifactData,
- });
-
- const selectedValue = useMemo(() => {
- if (!localArtifact) {
- return selector(initialArtifactData);
- }
- return selector(localArtifact);
- }, [localArtifact, selector]);
-
- return selectedValue;
-}
-
-export function useArtifact() {
- const { data: localArtifact, mutate: setLocalArtifact } = useSWR(
- "artifact",
- null,
- {
- fallbackData: initialArtifactData,
- }
- );
-
- const artifact = useMemo(() => {
- if (!localArtifact) {
- return initialArtifactData;
- }
- return localArtifact;
- }, [localArtifact]);
-
- const setArtifact = useCallback(
- (updaterFn: UIArtifact | ((currentArtifact: UIArtifact) => UIArtifact)) => {
- setLocalArtifact((currentArtifact) => {
- const artifactToUpdate = currentArtifact || initialArtifactData;
-
- if (typeof updaterFn === "function") {
- return updaterFn(artifactToUpdate);
- }
-
- return updaterFn;
- });
- },
- [setLocalArtifact]
- );
-
- const { data: localArtifactMetadata, mutate: setLocalArtifactMetadata } =
- useSWR(
- () =>
- artifact.documentId ? `artifact-metadata-${artifact.documentId}` : null,
- null,
- {
- fallbackData: null,
- }
- );
-
- return useMemo(
- () => ({
- artifact,
- setArtifact,
- metadata: localArtifactMetadata,
- setMetadata: setLocalArtifactMetadata,
- }),
- [artifact, setArtifact, localArtifactMetadata, setLocalArtifactMetadata]
- );
-}
diff --git a/demos/use_cases/vercel-ai-sdk/instrumentation.ts b/demos/use_cases/vercel-ai-sdk/instrumentation.ts
deleted file mode 100644
index 4b3bdee4..00000000
--- a/demos/use_cases/vercel-ai-sdk/instrumentation.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-import { registerOTel } from "@vercel/otel";
-
-export function register() {
- registerOTel({ serviceName: "ai-chatbot" });
-}
diff --git a/demos/use_cases/vercel-ai-sdk/lib/ai/models.mock.ts b/demos/use_cases/vercel-ai-sdk/lib/ai/models.mock.ts
deleted file mode 100644
index 31ee31a3..00000000
--- a/demos/use_cases/vercel-ai-sdk/lib/ai/models.mock.ts
+++ /dev/null
@@ -1,173 +0,0 @@
-import type { LanguageModel } from "ai";
-
-const mockResponses: Record = {
- default: "This is a mock response for testing.",
- weather: "The weather in San Francisco is sunny and 72°F.",
- greeting: "Hello! How can I help you today?",
-};
-
-const mockUsage = {
- inputTokens: { total: 10, noCache: 10, cacheRead: 0, cacheWrite: 0 },
- outputTokens: { total: 20, text: 20, reasoning: 0 },
-};
-
-function getResponseForPrompt(prompt: unknown): string {
- const promptStr = JSON.stringify(prompt).toLowerCase();
-
- if (promptStr.includes("weather") || promptStr.includes("temperature")) {
- return mockResponses.weather;
- }
- if (
- promptStr.includes("hello") ||
- promptStr.includes("hi") ||
- promptStr.includes("hey")
- ) {
- return mockResponses.greeting;
- }
-
- return mockResponses.default;
-}
-
-const createMockModel = (): LanguageModel => {
- return {
- specificationVersion: "v3",
- provider: "mock",
- modelId: "mock-model",
- defaultObjectGenerationMode: "tool",
- supportedUrls: {},
- doGenerate: async ({ prompt }: { prompt: unknown }) => ({
- finishReason: "stop",
- usage: mockUsage,
- content: [{ type: "text", text: getResponseForPrompt(prompt) }],
- warnings: [],
- }),
- doStream: ({ prompt }: { prompt: unknown }) => {
- const response = getResponseForPrompt(prompt);
- const words = response.split(" ");
-
- return {
- stream: new ReadableStream({
- async start(controller) {
- controller.enqueue({ type: "text-start", id: "t1" });
- for (const word of words) {
- controller.enqueue({
- type: "text-delta",
- id: "t1",
- delta: `${word} `,
- });
- await new Promise((resolve) => {
- setTimeout(resolve, 10);
- });
- }
- controller.enqueue({ type: "text-end", id: "t1" });
- controller.enqueue({
- type: "finish",
- finishReason: "stop",
- usage: mockUsage,
- });
- controller.close();
- },
- }),
- };
- },
- } as unknown as LanguageModel;
-};
-
-const createMockReasoningModel = (): LanguageModel => {
- return {
- specificationVersion: "v3",
- provider: "mock",
- modelId: "mock-reasoning-model",
- defaultObjectGenerationMode: "tool",
- supportedUrls: {},
- doGenerate: async () => ({
- finishReason: "stop",
- usage: mockUsage,
- content: [{ type: "text", text: "This is a reasoned response." }],
- reasoning: [
- { type: "text", text: "Let me think through this step by step..." },
- ],
- warnings: [],
- }),
- doStream: () => ({
- stream: new ReadableStream({
- async start(controller) {
- controller.enqueue({ type: "reasoning-start", id: "r1" });
- controller.enqueue({
- type: "reasoning-delta",
- id: "r1",
- delta: "Let me think through this step by step... ",
- });
- controller.enqueue({ type: "reasoning-end", id: "r1" });
- await new Promise((resolve) => {
- setTimeout(resolve, 10);
- });
- controller.enqueue({ type: "text-start", id: "t1" });
- controller.enqueue({
- type: "text-delta",
- id: "t1",
- delta: "This is a reasoned response.",
- });
- controller.enqueue({ type: "text-end", id: "t1" });
- controller.enqueue({
- type: "finish",
- finishReason: "stop",
- usage: mockUsage,
- });
- controller.close();
- },
- }),
- }),
- } as unknown as LanguageModel;
-};
-
-const createMockTitleModel = (): LanguageModel => {
- return {
- specificationVersion: "v3",
- provider: "mock",
- modelId: "mock-title-model",
- defaultObjectGenerationMode: "tool",
- supportedUrls: {},
- doGenerate: async () => ({
- finishReason: "stop",
- usage: {
- inputTokens: { total: 5, noCache: 5, cacheRead: 0, cacheWrite: 0 },
- outputTokens: { total: 5, text: 5, reasoning: 0 },
- },
- content: [{ type: "text", text: "Test Conversation" }],
- warnings: [],
- }),
- doStream: () => ({
- stream: new ReadableStream({
- start(controller) {
- controller.enqueue({ type: "text-start", id: "t1" });
- controller.enqueue({
- type: "text-delta",
- id: "t1",
- delta: "Test Conversation",
- });
- controller.enqueue({ type: "text-end", id: "t1" });
- controller.enqueue({
- type: "finish",
- finishReason: "stop",
- usage: {
- inputTokens: {
- total: 5,
- noCache: 5,
- cacheRead: 0,
- cacheWrite: 0,
- },
- outputTokens: { total: 5, text: 5, reasoning: 0 },
- },
- });
- controller.close();
- },
- }),
- }),
- } as unknown as LanguageModel;
-};
-
-export const chatModel = createMockModel();
-export const reasoningModel = createMockReasoningModel();
-export const titleModel = createMockTitleModel();
-export const artifactModel = createMockModel();
diff --git a/demos/use_cases/vercel-ai-sdk/lib/ai/models.test.ts b/demos/use_cases/vercel-ai-sdk/lib/ai/models.test.ts
deleted file mode 100644
index 66d7b81a..00000000
--- a/demos/use_cases/vercel-ai-sdk/lib/ai/models.test.ts
+++ /dev/null
@@ -1,81 +0,0 @@
-import { simulateReadableStream } from "ai";
-import { MockLanguageModelV3 } from "ai/test";
-import { getResponseChunksByPrompt } from "@/tests/prompts/utils";
-
-const mockUsage = {
- inputTokens: { total: 10, noCache: 10, cacheRead: 0, cacheWrite: 0 },
- outputTokens: { total: 20, text: 20, reasoning: 0 },
-};
-
-export const chatModel = new MockLanguageModelV3({
- doGenerate: async () => ({
- finishReason: "stop",
- usage: mockUsage,
- content: [{ type: "text", text: "Hello, world!" }],
- warnings: [],
- }),
- doStream: async ({ prompt }) => ({
- stream: simulateReadableStream({
- chunkDelayInMs: 500,
- initialDelayInMs: 1000,
- chunks: getResponseChunksByPrompt(prompt),
- }),
- }),
-});
-
-export const reasoningModel = new MockLanguageModelV3({
- doGenerate: async () => ({
- finishReason: "stop",
- usage: mockUsage,
- content: [{ type: "text", text: "Hello, world!" }],
- warnings: [],
- }),
- doStream: async ({ prompt }) => ({
- stream: simulateReadableStream({
- chunkDelayInMs: 500,
- initialDelayInMs: 1000,
- chunks: getResponseChunksByPrompt(prompt, true),
- }),
- }),
-});
-
-export const titleModel = new MockLanguageModelV3({
- doGenerate: async () => ({
- finishReason: "stop",
- usage: mockUsage,
- content: [{ type: "text", text: "This is a test title" }],
- warnings: [],
- }),
- doStream: async () => ({
- stream: simulateReadableStream({
- chunkDelayInMs: 500,
- initialDelayInMs: 1000,
- chunks: [
- { id: "1", type: "text-start" },
- { id: "1", type: "text-delta", delta: "This is a test title" },
- { id: "1", type: "text-end" },
- {
- type: "finish",
- finishReason: "stop",
- usage: mockUsage,
- },
- ],
- }),
- }),
-});
-
-export const artifactModel = new MockLanguageModelV3({
- doGenerate: async () => ({
- finishReason: "stop",
- usage: mockUsage,
- content: [{ type: "text", text: "Hello, world!" }],
- warnings: [],
- }),
- doStream: async ({ prompt }) => ({
- stream: simulateReadableStream({
- chunkDelayInMs: 50,
- initialDelayInMs: 100,
- chunks: getResponseChunksByPrompt(prompt),
- }),
- }),
-});
diff --git a/demos/use_cases/vercel-ai-sdk/lib/ai/prompts.ts b/demos/use_cases/vercel-ai-sdk/lib/ai/prompts.ts
index fabb2245..65d0d670 100644
--- a/demos/use_cases/vercel-ai-sdk/lib/ai/prompts.ts
+++ b/demos/use_cases/vercel-ai-sdk/lib/ai/prompts.ts
@@ -1,44 +1,9 @@
import type { Geo } from "@vercel/functions";
-import type { ArtifactKind } from "@/components/artifact";
-
-export const artifactsPrompt = `
-Artifacts is a special user interface mode that helps users with writing, editing, and other content creation tasks. When artifact is open, it is on the right side of the screen, while the conversation is on the left side. When creating or updating documents, changes are reflected in real-time on the artifacts and visible to the user.
-
-When asked to write code, always use artifacts. When writing code, specify the language in the backticks, e.g. \`\`\`python\`code here\`\`\`. The default language is Python. Other languages are not yet supported, so let the user know if they request a different language.
-
-DO NOT UPDATE DOCUMENTS IMMEDIATELY AFTER CREATING THEM. WAIT FOR USER FEEDBACK OR REQUEST TO UPDATE IT.
-
-This is a guide for using artifacts tools: \`createDocument\` and \`updateDocument\`, which render content on a artifacts beside the conversation.
-
-**When to use \`createDocument\`:**
-- For substantial content (>10 lines) or code
-- For content users will likely save/reuse (emails, code, essays, etc.)
-- When explicitly requested to create a document
-- For when content contains a single code snippet
-
-**When NOT to use \`createDocument\`:**
-- For informational/explanatory content
-- For conversational responses
-- When asked to keep it in chat
-
-**Using \`updateDocument\`:**
-- Default to full document rewrites for major changes
-- Use targeted updates only for specific, isolated changes
-- Follow user instructions for which parts to modify
-
-**When NOT to use \`updateDocument\`:**
-- Immediately after creating a document
-
-Do not update document right after creating it. Wait for user feedback or request to update it.
-
-**Using \`requestSuggestions\`:**
-- ONLY use when the user explicitly asks for suggestions on an existing document
-- Requires a valid document ID from a previously created document
-- Never use for general questions or information requests
-`;
export const regularPrompt = `You are a friendly assistant! Keep your responses concise and helpful.
+You can use tools to help answer weather and currency exchange questions when needed.
+
When asked to write, create, or help with something, just do it directly. Don't ask clarifying questions unless absolutely necessary - make reasonable assumptions and proceed with the task.`;
export type RequestHints = {
@@ -57,7 +22,7 @@ About the origin of user's request:
`;
export const systemPrompt = ({
- selectedChatModel,
+ selectedChatModel: _selectedChatModel,
requestHints,
}: {
selectedChatModel: string;
@@ -65,62 +30,7 @@ export const systemPrompt = ({
}) => {
const requestPrompt = getRequestPromptFromHints(requestHints);
- // reasoning models don't need artifacts prompt (they can't use tools)
- if (
- selectedChatModel.includes("reasoning") ||
- selectedChatModel.includes("thinking")
- ) {
- return `${regularPrompt}\n\n${requestPrompt}`;
- }
-
- return `${regularPrompt}\n\n${requestPrompt}\n\n${artifactsPrompt}`;
-};
-
-export const codePrompt = `
-You are a Python code generator that creates self-contained, executable code snippets. When writing code:
-
-1. Each snippet should be complete and runnable on its own
-2. Prefer using print() statements to display outputs
-3. Include helpful comments explaining the code
-4. Keep snippets concise (generally under 15 lines)
-5. Avoid external dependencies - use Python standard library
-6. Handle potential errors gracefully
-7. Return meaningful output that demonstrates the code's functionality
-8. Don't use input() or other interactive functions
-9. Don't access files or network resources
-10. Don't use infinite loops
-
-Examples of good snippets:
-
-# Calculate factorial iteratively
-def factorial(n):
- result = 1
- for i in range(1, n + 1):
- result *= i
- return result
-
-print(f"Factorial of 5 is: {factorial(5)}")
-`;
-
-export const sheetPrompt = `
-You are a spreadsheet creation assistant. Create a spreadsheet in csv format based on the given prompt. The spreadsheet should contain meaningful column headers and data.
-`;
-
-export const updateDocumentPrompt = (
- currentContent: string | null,
- type: ArtifactKind
-) => {
- let mediaType = "document";
-
- if (type === "code") {
- mediaType = "code snippet";
- } else if (type === "sheet") {
- mediaType = "spreadsheet";
- }
-
- return `Improve the following contents of the ${mediaType} based on the given prompt.
-
-${currentContent}`;
+ return `${regularPrompt}\n\n${requestPrompt}`;
};
export const titlePrompt = `Generate a very short chat title (2-5 words max) based on the user's message.
diff --git a/demos/use_cases/vercel-ai-sdk/lib/ai/providers.ts b/demos/use_cases/vercel-ai-sdk/lib/ai/providers.ts
index 876dbf1e..1acbdc21 100644
--- a/demos/use_cases/vercel-ai-sdk/lib/ai/providers.ts
+++ b/demos/use_cases/vercel-ai-sdk/lib/ai/providers.ts
@@ -1,69 +1,48 @@
import { createOpenAI } from "@ai-sdk/openai";
import {
- customProvider,
extractReasoningMiddleware,
+ type LanguageModel,
wrapLanguageModel,
} from "ai";
-import { isTestEnvironment } from "../constants";
const plano = createOpenAI({
baseURL: process.env.PLANO_BASE_URL || "http://localhost:12000/v1",
- apiKey: process.env.AI_GATEWAY_API_KEY || "plano",
+ apiKey: "plano",
});
const THINKING_SUFFIX_REGEX = /-thinking$/;
-export const myProvider = isTestEnvironment
- ? (() => {
- const {
- artifactModel,
- chatModel,
- reasoningModel,
- titleModel,
- } = require("./models.mock");
- return customProvider({
- languageModels: {
- "chat-model": chatModel,
- "chat-model-reasoning": reasoningModel,
- "title-model": titleModel,
- "artifact-model": artifactModel,
- },
- });
- })()
- : null;
+type WrapLanguageModelInput = Parameters[0]["model"];
-export function getLanguageModel(modelId: string) {
- if (isTestEnvironment && myProvider) {
- return myProvider.languageModel(modelId);
- }
+function asLanguageModel(model: unknown): LanguageModel {
+ // We intentionally cast here to avoid TS conflicts when multiple copies of
+ // `@ai-sdk/provider` exist in node_modules (e.g. nested under @ai-sdk/openai).
+ return model as unknown as LanguageModel;
+}
+function asWrapLanguageModelInput(model: unknown): WrapLanguageModelInput {
+ return model as unknown as WrapLanguageModelInput;
+}
+
+export function getLanguageModel(modelId: string): LanguageModel {
const isReasoningModel =
modelId.includes("reasoning") || modelId.endsWith("-thinking");
if (isReasoningModel) {
const gatewayModelId = modelId.replace(THINKING_SUFFIX_REGEX, "");
- return wrapLanguageModel({
- model: plano(gatewayModelId),
- middleware: extractReasoningMiddleware({ tagName: "thinking" }),
- });
+ return asLanguageModel(
+ wrapLanguageModel({
+ model: asWrapLanguageModelInput(plano(gatewayModelId)),
+ middleware: extractReasoningMiddleware({ tagName: "thinking" }),
+ })
+ );
}
- return plano(modelId);
+ return asLanguageModel(plano(modelId));
}
-export function getTitleModel() {
- if (isTestEnvironment && myProvider) {
- return myProvider.languageModel("title-model");
- }
+export function getTitleModel(): LanguageModel {
// Keep demo dependency-light: default to an OpenAI model so only OPENAI_API_KEY is required.
- return plano("openai/gpt-4.1-mini");
-}
-
-export function getArtifactModel() {
- if (isTestEnvironment && myProvider) {
- return myProvider.languageModel("artifact-model");
- }
- // Keep demo dependency-light: default to an OpenAI model so only OPENAI_API_KEY is required.
- return plano("openai/gpt-4o");
+ return asLanguageModel(plano("openai/gpt-4.1-mini"));
}
diff --git a/demos/use_cases/vercel-ai-sdk/lib/artifacts/server.ts b/demos/use_cases/vercel-ai-sdk/lib/artifacts/server.ts
deleted file mode 100644
index a11ecfdd..00000000
--- a/demos/use_cases/vercel-ai-sdk/lib/artifacts/server.ts
+++ /dev/null
@@ -1,98 +0,0 @@
-import type { UIMessageStreamWriter } from "ai";
-import type { Session } from "next-auth";
-import { codeDocumentHandler } from "@/artifacts/code/server";
-import { sheetDocumentHandler } from "@/artifacts/sheet/server";
-import { textDocumentHandler } from "@/artifacts/text/server";
-import type { ArtifactKind } from "@/components/artifact";
-import { saveDocument } from "../db/queries";
-import type { Document } from "../db/schema";
-import type { ChatMessage } from "../types";
-
-export type SaveDocumentProps = {
- id: string;
- title: string;
- kind: ArtifactKind;
- content: string;
- userId: string;
-};
-
-export type CreateDocumentCallbackProps = {
- id: string;
- title: string;
- dataStream: UIMessageStreamWriter;
- session: Session;
-};
-
-export type UpdateDocumentCallbackProps = {
- document: Document;
- description: string;
- dataStream: UIMessageStreamWriter;
- session: Session;
-};
-
-export type DocumentHandler = {
- kind: T;
- onCreateDocument: (args: CreateDocumentCallbackProps) => Promise;
- onUpdateDocument: (args: UpdateDocumentCallbackProps) => Promise;
-};
-
-export function createDocumentHandler(config: {
- kind: T;
- onCreateDocument: (params: CreateDocumentCallbackProps) => Promise;
- onUpdateDocument: (params: UpdateDocumentCallbackProps) => Promise;
-}): DocumentHandler {
- return {
- kind: config.kind,
- onCreateDocument: async (args: CreateDocumentCallbackProps) => {
- const draftContent = await config.onCreateDocument({
- id: args.id,
- title: args.title,
- dataStream: args.dataStream,
- session: args.session,
- });
-
- if (args.session?.user?.id) {
- await saveDocument({
- id: args.id,
- title: args.title,
- content: draftContent,
- kind: config.kind,
- userId: args.session.user.id,
- });
- }
-
- return;
- },
- onUpdateDocument: async (args: UpdateDocumentCallbackProps) => {
- const draftContent = await config.onUpdateDocument({
- document: args.document,
- description: args.description,
- dataStream: args.dataStream,
- session: args.session,
- });
-
- if (args.session?.user?.id) {
- await saveDocument({
- id: args.document.id,
- title: args.document.title,
- content: draftContent,
- kind: config.kind,
- userId: args.session.user.id,
- });
- }
-
- return;
- },
- };
-}
-
-/*
- * Use this array to define the document handlers for each artifact kind.
- */
-export const documentHandlersByArtifactKind: DocumentHandler[] = [
- textDocumentHandler,
- codeDocumentHandler,
- sheetDocumentHandler,
-];
-
-export const artifactKinds = ["text", "code", "sheet"] as const;
diff --git a/demos/use_cases/vercel-ai-sdk/lib/db/queries.ts b/demos/use_cases/vercel-ai-sdk/lib/db/queries.ts
index 2855423a..daebaaa2 100644
--- a/demos/use_cases/vercel-ai-sdk/lib/db/queries.ts
+++ b/demos/use_cases/vercel-ai-sdk/lib/db/queries.ts
@@ -14,7 +14,6 @@ import {
} from "drizzle-orm";
import { drizzle } from "drizzle-orm/postgres-js";
import postgres from "postgres";
-import type { ArtifactKind } from "@/components/artifact";
import type { VisibilityType } from "@/components/visibility-selector";
import { ChatSDKError } from "../errors";
import { generateUUID } from "../utils";
@@ -22,11 +21,8 @@ import {
type Chat,
chat,
type DBMessage,
- document,
message,
- type Suggestion,
stream,
- suggestion,
type User,
user,
vote,
@@ -321,132 +317,6 @@ export async function getVotesByChatId({ id }: { id: string }) {
}
}
-export async function saveDocument({
- id,
- title,
- kind,
- content,
- userId,
-}: {
- id: string;
- title: string;
- kind: ArtifactKind;
- content: string;
- userId: string;
-}) {
- try {
- return await db
- .insert(document)
- .values({
- id,
- title,
- kind,
- content,
- userId,
- createdAt: new Date(),
- })
- .returning();
- } catch (_error) {
- throw new ChatSDKError("bad_request:database", "Failed to save document");
- }
-}
-
-export async function getDocumentsById({ id }: { id: string }) {
- try {
- const documents = await db
- .select()
- .from(document)
- .where(eq(document.id, id))
- .orderBy(asc(document.createdAt));
-
- return documents;
- } catch (_error) {
- throw new ChatSDKError(
- "bad_request:database",
- "Failed to get documents by id"
- );
- }
-}
-
-export async function getDocumentById({ id }: { id: string }) {
- try {
- const [selectedDocument] = await db
- .select()
- .from(document)
- .where(eq(document.id, id))
- .orderBy(desc(document.createdAt));
-
- return selectedDocument;
- } catch (_error) {
- throw new ChatSDKError(
- "bad_request:database",
- "Failed to get document by id"
- );
- }
-}
-
-export async function deleteDocumentsByIdAfterTimestamp({
- id,
- timestamp,
-}: {
- id: string;
- timestamp: Date;
-}) {
- try {
- await db
- .delete(suggestion)
- .where(
- and(
- eq(suggestion.documentId, id),
- gt(suggestion.documentCreatedAt, timestamp)
- )
- );
-
- return await db
- .delete(document)
- .where(and(eq(document.id, id), gt(document.createdAt, timestamp)))
- .returning();
- } catch (_error) {
- throw new ChatSDKError(
- "bad_request:database",
- "Failed to delete documents by id after timestamp"
- );
- }
-}
-
-export async function saveSuggestions({
- suggestions,
-}: {
- suggestions: Suggestion[];
-}) {
- try {
- return await db.insert(suggestion).values(suggestions);
- } catch (_error) {
- throw new ChatSDKError(
- "bad_request:database",
- "Failed to save suggestions"
- );
- }
-}
-
-export async function getSuggestionsByDocumentId({
- documentId,
-}: {
- documentId: string;
-}) {
- try {
- return await db
- .select()
- .from(suggestion)
- .where(eq(suggestion.documentId, documentId));
- } catch (_error) {
- throw new ChatSDKError(
- "bad_request:database",
- "Failed to get suggestions by document id"
- );
- }
-}
-
export async function getMessageById({ id }: { id: string }) {
try {
return await db.select().from(message).where(eq(message.id, id));
diff --git a/demos/use_cases/vercel-ai-sdk/lib/db/schema.ts b/demos/use_cases/vercel-ai-sdk/lib/db/schema.ts
index da060e27..e838b5a4 100644
--- a/demos/use_cases/vercel-ai-sdk/lib/db/schema.ts
+++ b/demos/use_cases/vercel-ai-sdk/lib/db/schema.ts
@@ -102,55 +102,6 @@ export const vote = pgTable(
export type Vote = InferSelectModel;
-export const document = pgTable(
- "Document",
- {
- id: uuid("id").notNull().defaultRandom(),
- createdAt: timestamp("createdAt").notNull(),
- title: text("title").notNull(),
- content: text("content"),
- kind: varchar("text", { enum: ["text", "code", "image", "sheet"] })
- .notNull()
- .default("text"),
- userId: uuid("userId")
- .notNull()
- .references(() => user.id),
- },
- (table) => {
- return {
- pk: primaryKey({ columns: [table.id, table.createdAt] }),
- };
- }
-);
-
-export type Document = InferSelectModel;
-
-export const suggestion = pgTable(
- "Suggestion",
- {
- id: uuid("id").notNull().defaultRandom(),
- documentId: uuid("documentId").notNull(),
- documentCreatedAt: timestamp("documentCreatedAt").notNull(),
- originalText: text("originalText").notNull(),
- suggestedText: text("suggestedText").notNull(),
- description: text("description"),
- isResolved: boolean("isResolved").notNull().default(false),
- userId: uuid("userId")
- .notNull()
- .references(() => user.id),
- createdAt: timestamp("createdAt").notNull(),
- },
- (table) => ({
- pk: primaryKey({ columns: [table.id] }),
- documentRef: foreignKey({
- columns: [table.documentId, table.documentCreatedAt],
- foreignColumns: [document.id, document.createdAt],
- }),
- })
-);
-
-export type Suggestion = InferSelectModel;
-
export const stream = pgTable(
"Stream",
{
diff --git a/demos/use_cases/vercel-ai-sdk/lib/editor/config.ts b/demos/use_cases/vercel-ai-sdk/lib/editor/config.ts
deleted file mode 100644
index 1d73e852..00000000
--- a/demos/use_cases/vercel-ai-sdk/lib/editor/config.ts
+++ /dev/null
@@ -1,49 +0,0 @@
-import { textblockTypeInputRule } from "prosemirror-inputrules";
-import { Schema } from "prosemirror-model";
-import { schema } from "prosemirror-schema-basic";
-import { addListNodes } from "prosemirror-schema-list";
-import type { Transaction } from "prosemirror-state";
-import type { EditorView } from "prosemirror-view";
-import type { MutableRefObject } from "react";
-
-import { buildContentFromDocument } from "./functions";
-
-export const documentSchema = new Schema({
- nodes: addListNodes(schema.spec.nodes, "paragraph block*", "block"),
- marks: schema.spec.marks,
-});
-
-export function headingRule(level: number) {
- return textblockTypeInputRule(
- new RegExp(`^(#{1,${level}})\\s$`),
- documentSchema.nodes.heading,
- () => ({ level })
- );
-}
-
-export const handleTransaction = ({
- transaction,
- editorRef,
- onSaveContent,
-}: {
- transaction: Transaction;
- editorRef: MutableRefObject;
- onSaveContent: (updatedContent: string, debounce: boolean) => void;
-}) => {
- if (!editorRef || !editorRef.current) {
- return;
- }
-
- const newState = editorRef.current.state.apply(transaction);
- editorRef.current.updateState(newState);
-
- if (transaction.docChanged && !transaction.getMeta("no-save")) {
- const updatedContent = buildContentFromDocument(newState.doc);
-
- if (transaction.getMeta("no-debounce")) {
- onSaveContent(updatedContent, false);
- } else {
- onSaveContent(updatedContent, true);
- }
- }
-};
diff --git a/demos/use_cases/vercel-ai-sdk/lib/editor/diff.js b/demos/use_cases/vercel-ai-sdk/lib/editor/diff.js
deleted file mode 100644
index 696681e0..00000000
--- a/demos/use_cases/vercel-ai-sdk/lib/editor/diff.js
+++ /dev/null
@@ -1,475 +0,0 @@
-// Modified from https://github.com/hamflx/prosemirror-diff/blob/master/src/diff.js
-
-import { diff_match_patch } from "diff-match-patch";
-import { Fragment, Node } from "prosemirror-model";
-
-export const DiffType = {
- Unchanged: 0,
- Deleted: -1,
- Inserted: 1,
-};
-
-export const patchDocumentNode = (schema, oldNode, newNode) => {
- assertNodeTypeEqual(oldNode, newNode);
-
- const finalLeftChildren = [];
- const finalRightChildren = [];
-
- const oldChildren = normalizeNodeContent(oldNode);
- const newChildren = normalizeNodeContent(newNode);
- const oldChildLen = oldChildren.length;
- const newChildLen = newChildren.length;
- const minChildLen = Math.min(oldChildLen, newChildLen);
-
- let left = 0;
- let right = 0;
-
- for (; left < minChildLen; left++) {
- const oldChild = oldChildren[left];
- const newChild = newChildren[left];
- if (!isNodeEqual(oldChild, newChild)) {
- break;
- }
- finalLeftChildren.push(...ensureArray(oldChild));
- }
-
- for (; right + left + 1 < minChildLen; right++) {
- const oldChild = oldChildren[oldChildLen - right - 1];
- const newChild = newChildren[newChildLen - right - 1];
- if (!isNodeEqual(oldChild, newChild)) {
- break;
- }
- finalRightChildren.unshift(...ensureArray(oldChild));
- }
-
- const diffOldChildren = oldChildren.slice(left, oldChildLen - right);
- const diffNewChildren = newChildren.slice(left, newChildLen - right);
-
- if (diffOldChildren.length && diffNewChildren.length) {
- const matchedNodes = matchNodes(
- schema,
- diffOldChildren,
- diffNewChildren
- ).sort((a, b) => b.count - a.count);
- const bestMatch = matchedNodes[0];
- if (bestMatch) {
- const { oldStartIndex, newStartIndex, oldEndIndex, newEndIndex } =
- bestMatch;
- const oldBeforeMatchChildren = diffOldChildren.slice(0, oldStartIndex);
- const newBeforeMatchChildren = diffNewChildren.slice(0, newStartIndex);
-
- finalLeftChildren.push(
- ...patchRemainNodes(
- schema,
- oldBeforeMatchChildren,
- newBeforeMatchChildren
- )
- );
- finalLeftChildren.push(
- ...diffOldChildren.slice(oldStartIndex, oldEndIndex)
- );
-
- const oldAfterMatchChildren = diffOldChildren.slice(oldEndIndex);
- const newAfterMatchChildren = diffNewChildren.slice(newEndIndex);
-
- finalRightChildren.unshift(
- ...patchRemainNodes(
- schema,
- oldAfterMatchChildren,
- newAfterMatchChildren
- )
- );
- } else {
- finalLeftChildren.push(
- ...patchRemainNodes(schema, diffOldChildren, diffNewChildren)
- );
- }
- } else {
- finalLeftChildren.push(
- ...patchRemainNodes(schema, diffOldChildren, diffNewChildren)
- );
- }
-
- return createNewNode(oldNode, [...finalLeftChildren, ...finalRightChildren]);
-};
-
-const matchNodes = (_schema, oldChildren, newChildren) => {
- const matches = [];
- for (
- let oldStartIndex = 0;
- oldStartIndex < oldChildren.length;
- oldStartIndex++
- ) {
- const oldStartNode = oldChildren[oldStartIndex];
- const newStartIndex = findMatchNode(newChildren, oldStartNode);
-
- if (newStartIndex !== -1) {
- let oldEndIndex = oldStartIndex + 1;
- let newEndIndex = newStartIndex + 1;
- for (
- ;
- oldEndIndex < oldChildren.length && newEndIndex < newChildren.length;
- oldEndIndex++, newEndIndex++
- ) {
- const oldEndNode = oldChildren[oldEndIndex];
- if (!isNodeEqual(newChildren[newEndIndex], oldEndNode)) {
- break;
- }
- }
- matches.push({
- oldStartIndex,
- newStartIndex,
- oldEndIndex,
- newEndIndex,
- count: newEndIndex - newStartIndex,
- });
- }
- }
- return matches;
-};
-
-const findMatchNode = (children, node, startIndex = 0) => {
- for (let i = startIndex; i < children.length; i++) {
- if (isNodeEqual(children[i], node)) {
- return i;
- }
- }
- return -1;
-};
-
-const patchRemainNodes = (schema, oldChildren, newChildren) => {
- const finalLeftChildren = [];
- const finalRightChildren = [];
- const oldChildLen = oldChildren.length;
- const newChildLen = newChildren.length;
- let left = 0;
- let right = 0;
- while (oldChildLen - left - right > 0 && newChildLen - left - right > 0) {
- const leftOldNode = oldChildren[left];
- const leftNewNode = newChildren[left];
- const rightOldNode = oldChildren[oldChildLen - right - 1];
- const rightNewNode = newChildren[newChildLen - right - 1];
- let updateLeft =
- !isTextNode(leftOldNode) && matchNodeType(leftOldNode, leftNewNode);
- let updateRight =
- !isTextNode(rightOldNode) && matchNodeType(rightOldNode, rightNewNode);
- if (Array.isArray(leftOldNode) && Array.isArray(leftNewNode)) {
- finalLeftChildren.push(
- ...patchTextNodes(schema, leftOldNode, leftNewNode)
- );
- left += 1;
- continue;
- }
-
- if (updateLeft && updateRight) {
- const equalityLeft = computeChildEqualityFactor(leftOldNode, leftNewNode);
- const equalityRight = computeChildEqualityFactor(
- rightOldNode,
- rightNewNode
- );
- if (equalityLeft < equalityRight) {
- updateLeft = false;
- } else {
- updateRight = false;
- }
- }
- if (updateLeft) {
- finalLeftChildren.push(
- patchDocumentNode(schema, leftOldNode, leftNewNode)
- );
- left += 1;
- } else if (updateRight) {
- finalRightChildren.unshift(
- patchDocumentNode(schema, rightOldNode, rightNewNode)
- );
- right += 1;
- } else {
- // Delete and insert
- finalLeftChildren.push(
- createDiffNode(schema, leftOldNode, DiffType.Deleted)
- );
- finalLeftChildren.push(
- createDiffNode(schema, leftNewNode, DiffType.Inserted)
- );
- left += 1;
- }
- }
-
- const deleteNodeLen = oldChildLen - left - right;
- const insertNodeLen = newChildLen - left - right;
- if (deleteNodeLen) {
- finalLeftChildren.push(
- ...oldChildren
- .slice(left, left + deleteNodeLen)
- .flat()
- .map((node) => createDiffNode(schema, node, DiffType.Deleted))
- );
- }
-
- if (insertNodeLen) {
- finalRightChildren.unshift(
- ...newChildren
- .slice(left, left + insertNodeLen)
- .flat()
- .map((node) => createDiffNode(schema, node, DiffType.Inserted))
- );
- }
-
- return [...finalLeftChildren, ...finalRightChildren];
-};
-
-// Updated function to perform sentence-level diffs
-export const patchTextNodes = (schema, oldNode, newNode) => {
- const dmp = new diff_match_patch();
-
- // Concatenate the text from the text nodes
- const oldText = oldNode.map((n) => getNodeText(n)).join("");
- const newText = newNode.map((n) => getNodeText(n)).join("");
-
- // Tokenize the text into sentences
- const oldSentences = tokenizeSentences(oldText);
- const newSentences = tokenizeSentences(newText);
-
- // Map sentences to unique characters
- const { chars1, chars2, lineArray } = sentencesToChars(
- oldSentences,
- newSentences
- );
-
- // Perform the diff
- let diffs = dmp.diff_main(chars1, chars2, false);
-
- // Convert back to sentences
- diffs = diffs.map(([type, text]) => {
- const sentences = text
- .split("")
- .map((char) => lineArray[char.charCodeAt(0)]);
- return [type, sentences];
- });
-
- // Map diffs to nodes
- const res = diffs.flatMap(([type, sentences]) => {
- return sentences.map((sentence) => {
- const node = createTextNode(
- schema,
- sentence,
- type !== DiffType.Unchanged ? [createDiffMark(schema, type)] : []
- );
- return node;
- });
- });
-
- return res;
-};
-
-// Function to tokenize text into sentences
-const tokenizeSentences = (text) => {
- return text.match(/[^.!?]+[.!?]*\s*/g) || [];
-};
-
-// Function to map sentences to unique characters
-const sentencesToChars = (oldSentences, newSentences) => {
- const lineArray = [];
- const lineHash = {};
- let lineStart = 0;
-
- const chars1 = oldSentences
- .map((sentence) => {
- const line = sentence;
- if (line in lineHash) {
- return String.fromCharCode(lineHash[line]);
- }
- lineHash[line] = lineStart;
- lineArray[lineStart] = line;
- lineStart++;
- return String.fromCharCode(lineHash[line]);
- })
- .join("");
-
- const chars2 = newSentences
- .map((sentence) => {
- const line = sentence;
- if (line in lineHash) {
- return String.fromCharCode(lineHash[line]);
- }
- lineHash[line] = lineStart;
- lineArray[lineStart] = line;
- lineStart++;
- return String.fromCharCode(lineHash[line]);
- })
- .join("");
-
- return { chars1, chars2, lineArray };
-};
-
-export const computeChildEqualityFactor = (_node1, _node2) => {
- return 0;
-};
-
-export const assertNodeTypeEqual = (node1, node2) => {
- if (getNodeProperty(node1, "type") !== getNodeProperty(node2, "type")) {
- throw new Error(`node type not equal: ${node1.type} !== ${node2.type}`);
- }
-};
-
-export const ensureArray = (value) => {
- return Array.isArray(value) ? value : [value];
-};
-
-export const isNodeEqual = (node1, node2) => {
- const isNode1Array = Array.isArray(node1);
- const isNode2Array = Array.isArray(node2);
- if (isNode1Array !== isNode2Array) {
- return false;
- }
- if (isNode1Array) {
- return (
- node1.length === node2.length &&
- node1.every((node, index) => isNodeEqual(node, node2[index]))
- );
- }
-
- const type1 = getNodeProperty(node1, "type");
- const type2 = getNodeProperty(node2, "type");
- if (type1 !== type2) {
- return false;
- }
- if (isTextNode(node1)) {
- const text1 = getNodeProperty(node1, "text");
- const text2 = getNodeProperty(node2, "text");
- if (text1 !== text2) {
- return false;
- }
- }
- const attrs1 = getNodeAttributes(node1);
- const attrs2 = getNodeAttributes(node2);
- const attrs = [...new Set([...Object.keys(attrs1), ...Object.keys(attrs2)])];
- for (const attr of attrs) {
- if (attrs1[attr] !== attrs2[attr]) {
- return false;
- }
- }
- const marks1 = getNodeMarks(node1);
- const marks2 = getNodeMarks(node2);
- if (marks1.length !== marks2.length) {
- return false;
- }
- for (let i = 0; i < marks1.length; i++) {
- if (!isNodeEqual(marks1[i], marks2[i])) {
- return false;
- }
- }
- const children1 = getNodeChildren(node1);
- const children2 = getNodeChildren(node2);
- if (children1.length !== children2.length) {
- return false;
- }
- for (let i = 0; i < children1.length; i++) {
- if (!isNodeEqual(children1[i], children2[i])) {
- return false;
- }
- }
- return true;
-};
-
-export const normalizeNodeContent = (node) => {
- const content = getNodeChildren(node) ?? [];
- const res = [];
- for (let i = 0; i < content.length; i++) {
- const child = content[i];
- if (isTextNode(child)) {
- const textNodes = [];
- for (
- let textNode = content[i];
- i < content.length && isTextNode(textNode);
- textNode = content[++i]
- ) {
- textNodes.push(textNode);
- }
- i--;
- res.push(textNodes);
- } else {
- res.push(child);
- }
- }
- return res;
-};
-
-export const getNodeProperty = (node, property) => {
- if (property === "type") {
- return node.type?.name;
- }
- return node[property];
-};
-
-export const getNodeAttribute = (node, attribute) =>
- node.attrs ? node.attrs[attribute] : undefined;
-
-export const getNodeAttributes = (node) => (node.attrs ? node.attrs : {});
-
-export const getNodeMarks = (node) => node.marks ?? [];
-
-export const getNodeChildren = (node) => node.content?.content ?? [];
-
-export const getNodeText = (node) => node.text;
-
-export const isTextNode = (node) => node.type?.name === "text";
-
-export const matchNodeType = (node1, node2) =>
- node1.type?.name === node2.type?.name ||
- (Array.isArray(node1) && Array.isArray(node2));
-
-export const createNewNode = (oldNode, children) => {
- if (!oldNode.type) {
- throw new Error("oldNode.type is undefined");
- }
- return new Node(
- oldNode.type,
- oldNode.attrs,
- Fragment.fromArray(children),
- oldNode.marks
- );
-};
-
-export const createDiffNode = (schema, node, type) => {
- return mapDocumentNode(node, (currentNode) => {
- if (isTextNode(currentNode)) {
- return createTextNode(schema, getNodeText(currentNode), [
- ...(currentNode.marks || []),
- createDiffMark(schema, type),
- ]);
- }
- return currentNode;
- });
-};
-
-function mapDocumentNode(node, mapper) {
- const copy = node.copy(
- Fragment.from(
- node.content.content
- .map((currentNode) => mapDocumentNode(currentNode, mapper))
- .filter((n) => n)
- )
- );
- return mapper(copy) || copy;
-}
-
-export const createDiffMark = (schema, type) => {
- if (type === DiffType.Inserted) {
- return schema.mark("diffMark", { type });
- }
- if (type === DiffType.Deleted) {
- return schema.mark("diffMark", { type });
- }
- throw new Error("type is not valid");
-};
-
-export const createTextNode = (schema, content, marks = []) => {
- return schema.text(content, marks);
-};
-
-export const diffEditor = (schema, oldDoc, newDoc) => {
- const oldNode = Node.fromJSON(schema, oldDoc);
- const newNode = Node.fromJSON(schema, newDoc);
- return patchDocumentNode(schema, oldNode, newNode);
-};
diff --git a/demos/use_cases/vercel-ai-sdk/lib/editor/functions.tsx b/demos/use_cases/vercel-ai-sdk/lib/editor/functions.tsx
deleted file mode 100644
index 3ff667bd..00000000
--- a/demos/use_cases/vercel-ai-sdk/lib/editor/functions.tsx
+++ /dev/null
@@ -1,62 +0,0 @@
-"use client";
-
-import { defaultMarkdownSerializer } from "prosemirror-markdown";
-import { DOMParser, type Node } from "prosemirror-model";
-import { Decoration, DecorationSet, type EditorView } from "prosemirror-view";
-import { renderToString } from "react-dom/server";
-
-import { Response } from "@/components/elements/response";
-
-import { documentSchema } from "./config";
-import { createSuggestionWidget, type UISuggestion } from "./suggestions";
-
-export const buildDocumentFromContent = (content: string) => {
- const parser = DOMParser.fromSchema(documentSchema);
- const stringFromMarkdown = renderToString({content});
- const tempContainer = document.createElement("div");
- tempContainer.innerHTML = stringFromMarkdown;
- return parser.parse(tempContainer);
-};
-
-export const buildContentFromDocument = (document: Node) => {
- return defaultMarkdownSerializer.serialize(document);
-};
-
-export const createDecorations = (
- suggestions: UISuggestion[],
- view: EditorView
-) => {
- const decorations: Decoration[] = [];
-
- for (const suggestion of suggestions) {
- decorations.push(
- Decoration.inline(
- suggestion.selectionStart,
- suggestion.selectionEnd,
- {
- class: "suggestion-highlight",
- },
- {
- suggestionId: suggestion.id,
- type: "highlight",
- }
- )
- );
-
- decorations.push(
- Decoration.widget(
- suggestion.selectionStart,
- (currentView) => {
- const { dom } = createSuggestionWidget(suggestion, currentView);
- return dom;
- },
- {
- suggestionId: suggestion.id,
- type: "widget",
- }
- )
- );
- }
-
- return DecorationSet.create(view.state.doc, decorations);
-};
diff --git a/demos/use_cases/vercel-ai-sdk/lib/editor/react-renderer.tsx b/demos/use_cases/vercel-ai-sdk/lib/editor/react-renderer.tsx
deleted file mode 100644
index b44b165a..00000000
--- a/demos/use_cases/vercel-ai-sdk/lib/editor/react-renderer.tsx
+++ /dev/null
@@ -1,13 +0,0 @@
-import { createRoot } from "react-dom/client";
-
-// biome-ignore lint/complexity/noStaticOnlyClass: "Needs to be static"
-export class ReactRenderer {
- static render(component: React.ReactElement, dom: HTMLElement) {
- const root = createRoot(dom);
- root.render(component);
-
- return {
- destroy: () => root.unmount(),
- };
- }
-}
diff --git a/demos/use_cases/vercel-ai-sdk/lib/editor/suggestions.tsx b/demos/use_cases/vercel-ai-sdk/lib/editor/suggestions.tsx
deleted file mode 100644
index c8d0ece4..00000000
--- a/demos/use_cases/vercel-ai-sdk/lib/editor/suggestions.tsx
+++ /dev/null
@@ -1,158 +0,0 @@
-import type { Node } from "prosemirror-model";
-import { Plugin, PluginKey } from "prosemirror-state";
-import {
- type Decoration,
- DecorationSet,
- type EditorView,
-} from "prosemirror-view";
-import { createRoot } from "react-dom/client";
-import type { ArtifactKind } from "@/components/artifact";
-import { Suggestion as PreviewSuggestion } from "@/components/suggestion";
-import type { Suggestion } from "@/lib/db/schema";
-
-export interface UISuggestion extends Suggestion {
- selectionStart: number;
- selectionEnd: number;
-}
-
-type Position = {
- start: number;
- end: number;
-};
-
-function findPositionsInDoc(doc: Node, searchText: string): Position | null {
- let positions: { start: number; end: number } | null = null;
-
- doc.nodesBetween(0, doc.content.size, (node, pos) => {
- if (node.isText && node.text) {
- const index = node.text.indexOf(searchText);
-
- if (index !== -1) {
- positions = {
- start: pos + index,
- end: pos + index + searchText.length,
- };
-
- return false;
- }
- }
-
- return true;
- });
-
- return positions;
-}
-
-export function projectWithPositions(
- doc: Node,
- suggestions: Suggestion[]
-): UISuggestion[] {
- return suggestions.map((suggestion) => {
- const positions = findPositionsInDoc(doc, suggestion.originalText);
-
- if (!positions) {
- return {
- ...suggestion,
- selectionStart: 0,
- selectionEnd: 0,
- };
- }
-
- return {
- ...suggestion,
- selectionStart: positions.start,
- selectionEnd: positions.end,
- };
- });
-}
-
-export function createSuggestionWidget(
- suggestion: UISuggestion,
- view: EditorView,
- artifactKind: ArtifactKind = "text"
-): { dom: HTMLElement; destroy: () => void } {
- const dom = document.createElement("span");
- const root = createRoot(dom);
-
- dom.addEventListener("mousedown", (event) => {
- event.preventDefault();
- view.dom.blur();
- });
-
- const onApply = () => {
- const { state, dispatch } = view;
-
- const decorationTransaction = state.tr;
- const currentState = suggestionsPluginKey.getState(state);
- const currentDecorations = currentState?.decorations;
-
- if (currentDecorations) {
- const newDecorations = DecorationSet.create(
- state.doc,
- currentDecorations.find().filter((decoration: Decoration) => {
- return decoration.spec.suggestionId !== suggestion.id;
- })
- );
-
- decorationTransaction.setMeta(suggestionsPluginKey, {
- decorations: newDecorations,
- selected: null,
- });
- dispatch(decorationTransaction);
- }
-
- const textTransaction = view.state.tr.replaceWith(
- suggestion.selectionStart,
- suggestion.selectionEnd,
- state.schema.text(suggestion.suggestedText)
- );
-
- textTransaction.setMeta("no-debounce", true);
-
- dispatch(textTransaction);
- };
-
- root.render(
-
- );
-
- return {
- dom,
- destroy: () => {
- // Wrapping unmount in setTimeout to avoid synchronous unmounting during render
- setTimeout(() => {
- root.unmount();
- }, 0);
- },
- };
-}
-
-export const suggestionsPluginKey = new PluginKey("suggestions");
-export const suggestionsPlugin = new Plugin({
- key: suggestionsPluginKey,
- state: {
- init() {
- return { decorations: DecorationSet.empty, selected: null };
- },
- apply(tr, state) {
- const newDecorations = tr.getMeta(suggestionsPluginKey);
- if (newDecorations) {
- return newDecorations;
- }
-
- return {
- decorations: state.decorations.map(tr.mapping, tr.doc),
- selected: state.selected,
- };
- },
- },
- props: {
- decorations(state) {
- return this.getState(state)?.decorations ?? DecorationSet.empty;
- },
- },
-});
diff --git a/demos/use_cases/vercel-ai-sdk/lib/errors.ts b/demos/use_cases/vercel-ai-sdk/lib/errors.ts
index 09068221..1a1d2ae2 100644
--- a/demos/use_cases/vercel-ai-sdk/lib/errors.ts
+++ b/demos/use_cases/vercel-ai-sdk/lib/errors.ts
@@ -14,8 +14,6 @@ export type Surface =
| "database"
| "history"
| "vote"
- | "document"
- | "suggestions"
| "activate_gateway";
export type ErrorCode = `${ErrorType}:${Surface}`;
@@ -30,8 +28,6 @@ export const visibilityBySurface: Record = {
api: "response",
history: "response",
vote: "response",
- document: "response",
- suggestions: "response",
activate_gateway: "response",
};
@@ -103,15 +99,6 @@ export function getMessageByErrorCode(errorCode: ErrorCode): string {
case "offline:chat":
return "We're having trouble sending your message. Please check your internet connection and try again.";
- case "not_found:document":
- return "The requested document was not found. Please check the document ID and try again.";
- case "forbidden:document":
- return "This document belongs to another user. Please check the document ID and try again.";
- case "unauthorized:document":
- return "You need to sign in to view this document. Please sign in and try again.";
- case "bad_request:document":
- return "The request to create or update the document was invalid. Please check your input and try again.";
-
default:
return "Something went wrong. Please try again later.";
}
diff --git a/demos/use_cases/vercel-ai-sdk/lib/types.ts b/demos/use_cases/vercel-ai-sdk/lib/types.ts
index 8af9c9e6..b53774f1 100644
--- a/demos/use_cases/vercel-ai-sdk/lib/types.ts
+++ b/demos/use_cases/vercel-ai-sdk/lib/types.ts
@@ -1,9 +1,7 @@
import type { InferUITool, UIMessage } from "ai";
import { z } from "zod";
-import type { ArtifactKind } from "@/components/artifact";
import type { getWeather } from "./ai/tools/get-weather";
import type { getCurrencyExchange } from "./ai/tools/get-currency-exchange";
-import type { Suggestion } from "./db/schema";
export type DataPart = { type: "append-message"; message: string };
@@ -22,17 +20,7 @@ export type ChatTools = {
};
export type CustomUIDataTypes = {
- textDelta: string;
- imageDelta: string;
- sheetDelta: string;
- codeDelta: string;
- suggestion: Suggestion;
appendMessage: string;
- id: string;
- title: string;
- kind: ArtifactKind;
- clear: null;
- finish: null;
"chat-title": string;
};
diff --git a/demos/use_cases/vercel-ai-sdk/lib/utils.ts b/demos/use_cases/vercel-ai-sdk/lib/utils.ts
index 7f0c2d5c..344bd765 100644
--- a/demos/use_cases/vercel-ai-sdk/lib/utils.ts
+++ b/demos/use_cases/vercel-ai-sdk/lib/utils.ts
@@ -7,7 +7,7 @@ import type {
import { type ClassValue, clsx } from 'clsx';
import { formatISO } from 'date-fns';
import { twMerge } from 'tailwind-merge';
-import type { DBMessage, Document } from '@/lib/db/schema';
+import type { DBMessage } from '@/lib/db/schema';
import { ChatSDKError, type ErrorCode } from './errors';
import type { ChatMessage, ChatTools, CustomUIDataTypes } from './types';
@@ -71,16 +71,6 @@ export function getMostRecentUserMessage(messages: UIMessage[]) {
return userMessages.at(-1);
}
-export function getDocumentTimestampByIndex(
- documents: Document[],
- index: number,
-) {
- if (!documents) { return new Date(); }
- if (index > documents.length) { return new Date(); }
-
- return documents[index].createdAt;
-}
-
export function getTrailingMessageId({
messages,
}: {
diff --git a/demos/use_cases/vercel-ai-sdk/playwright.config.ts b/demos/use_cases/vercel-ai-sdk/playwright.config.ts
deleted file mode 100644
index 06e99822..00000000
--- a/demos/use_cases/vercel-ai-sdk/playwright.config.ts
+++ /dev/null
@@ -1,100 +0,0 @@
-import { defineConfig, devices } from "@playwright/test";
-
-/**
- * Read environment variables from file.
- * https://github.com/motdotla/dotenv
- */
-import { config } from "dotenv";
-
-config({
- path: ".env.local",
-});
-
-/* Use process.env.PORT by default and fallback to port 3000 */
-const PORT = process.env.PORT || 3000;
-
-/**
- * Set webServer.url and use.baseURL with the location
- * of the WebServer respecting the correct set port
- */
-const baseURL = `http://localhost:${PORT}`;
-
-/**
- * See https://playwright.dev/docs/test-configuration.
- */
-export default defineConfig({
- testDir: "./tests",
- /* Run tests in files in parallel */
- fullyParallel: true,
- /* Fail the build on CI if you accidentally left test.only in the source code. */
- forbidOnly: !!process.env.CI,
- /* Retry on CI only */
- retries: 0,
- /* Limit workers to prevent browser crashes */
- workers: process.env.CI ? 2 : 2,
- /* Reporter to use. See https://playwright.dev/docs/test-reporters */
- reporter: "html",
- /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */
- use: {
- /* Base URL to use in actions like `await page.goto('/')`. */
- baseURL,
-
- /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */
- trace: "retain-on-failure",
- },
-
- /* Configure global timeout for each test */
- timeout: 240 * 1000, // 120 seconds
- expect: {
- timeout: 240 * 1000,
- },
-
- /* Configure projects */
- projects: [
- {
- name: "e2e",
- testMatch: /e2e\/.*.test.ts/,
- use: {
- ...devices["Desktop Chrome"],
- },
- },
-
- // {
- // name: 'firefox',
- // use: { ...devices['Desktop Firefox'] },
- // },
-
- // {
- // name: 'webkit',
- // use: { ...devices['Desktop Safari'] },
- // },
-
- /* Test against mobile viewports. */
- // {
- // name: 'Mobile Chrome',
- // use: { ...devices['Pixel 5'] },
- // },
- // {
- // name: 'Mobile Safari',
- // use: { ...devices['iPhone 12'] },
- // },
-
- /* Test against branded browsers. */
- // {
- // name: 'Microsoft Edge',
- // use: { ...devices['Desktop Edge'], channel: 'msedge' },
- // },
- // {
- // name: 'Google Chrome',
- // use: { ...devices['Desktop Chrome'], channel: 'chrome' },
- // },
- ],
-
- /* Run your local dev server before starting the tests */
- webServer: {
- command: "pnpm dev",
- url: `${baseURL}/ping`,
- timeout: 120 * 1000,
- reuseExistingServer: !process.env.CI,
- },
-});
diff --git a/demos/use_cases/vercel-ai-sdk/pnpm-lock.yaml b/demos/use_cases/vercel-ai-sdk/pnpm-lock.yaml
deleted file mode 100644
index 07bcac3f..00000000
--- a/demos/use_cases/vercel-ai-sdk/pnpm-lock.yaml
+++ /dev/null
@@ -1,8951 +0,0 @@
-lockfileVersion: '9.0'
-
-settings:
- autoInstallPeers: true
- excludeLinksFromLockfile: false
-
-importers:
-
- .:
- dependencies:
- '@ai-sdk/gateway':
- specifier: 2.0.0-beta.85
- version: 2.0.0-beta.85(zod@3.25.76)
- '@ai-sdk/provider':
- specifier: 3.0.0-beta.27
- version: 3.0.0-beta.27
- '@ai-sdk/react':
- specifier: 3.0.0-beta.162
- version: 3.0.0-beta.162(react@19.0.1)(zod@3.25.76)
- '@codemirror/lang-javascript':
- specifier: ^6.2.2
- version: 6.2.3
- '@codemirror/lang-python':
- specifier: ^6.1.6
- version: 6.1.7
- '@codemirror/state':
- specifier: ^6.5.0
- version: 6.5.2
- '@codemirror/theme-one-dark':
- specifier: ^6.1.2
- version: 6.1.2
- '@codemirror/view':
- specifier: ^6.35.3
- version: 6.36.4
- '@icons-pack/react-simple-icons':
- specifier: ^13.7.0
- version: 13.8.0(react@19.0.1)
- '@opentelemetry/api':
- specifier: ^1.9.0
- version: 1.9.0
- '@opentelemetry/api-logs':
- specifier: ^0.200.0
- version: 0.200.0
- '@radix-ui/react-collapsible':
- specifier: ^1.1.12
- version: 1.1.12(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-dialog':
- specifier: ^1.1.15
- version: 1.1.15(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-dropdown-menu':
- specifier: ^2.1.16
- version: 2.1.16(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-hover-card':
- specifier: ^1.1.15
- version: 1.1.15(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-icons':
- specifier: ^1.3.0
- version: 1.3.2(react@19.0.1)
- '@radix-ui/react-progress':
- specifier: ^1.1.8
- version: 1.1.8(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-scroll-area':
- specifier: ^1.2.10
- version: 1.2.10(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-select':
- specifier: ^2.2.6
- version: 2.2.6(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-separator':
- specifier: ^1.1.8
- version: 1.1.8(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-slot':
- specifier: ^1.2.4
- version: 1.2.4(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-tooltip':
- specifier: ^1.2.8
- version: 1.2.8(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-use-controllable-state':
- specifier: ^1.2.2
- version: 1.2.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-visually-hidden':
- specifier: ^1.1.0
- version: 1.1.2(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@vercel/analytics':
- specifier: ^1.3.1
- version: 1.5.0(next@16.0.10(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(react-dom@19.0.1(react@19.0.1))(react@19.0.1))(react@19.0.1)
- '@vercel/blob':
- specifier: ^0.24.1
- version: 0.24.1
- '@vercel/functions':
- specifier: ^2.0.0
- version: 2.2.13
- '@vercel/otel':
- specifier: ^1.12.0
- version: 1.14.0(@opentelemetry/api-logs@0.200.0)(@opentelemetry/api@1.9.0)(@opentelemetry/instrumentation@0.57.2(@opentelemetry/api@1.9.0))(@opentelemetry/resources@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.57.2(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))
- '@xyflow/react':
- specifier: ^12.10.0
- version: 12.10.0(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- ai:
- specifier: 6.0.0-beta.159
- version: 6.0.0-beta.159(zod@3.25.76)
- bcrypt-ts:
- specifier: ^5.0.2
- version: 5.0.3
- class-variance-authority:
- specifier: ^0.7.1
- version: 0.7.1
- classnames:
- specifier: ^2.5.1
- version: 2.5.1
- clsx:
- specifier: ^2.1.1
- version: 2.1.1
- cmdk:
- specifier: ^1.1.1
- version: 1.1.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- codemirror:
- specifier: ^6.0.1
- version: 6.0.1
- date-fns:
- specifier: ^4.1.0
- version: 4.1.0
- diff-match-patch:
- specifier: ^1.0.5
- version: 1.0.5
- dotenv:
- specifier: ^16.4.5
- version: 16.4.7
- drizzle-orm:
- specifier: ^0.34.0
- version: 0.34.1(@neondatabase/serverless@0.9.5)(@opentelemetry/api@1.9.0)(@types/pg@8.11.6)(@types/react@18.3.18)(@vercel/postgres@0.10.0)(postgres@3.4.5)(react@19.0.1)
- embla-carousel-react:
- specifier: ^8.6.0
- version: 8.6.0(react@19.0.1)
- fast-deep-equal:
- specifier: ^3.1.3
- version: 3.1.3
- framer-motion:
- specifier: ^11.3.19
- version: 11.18.2(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- geist:
- specifier: ^1.3.1
- version: 1.3.1(next@16.0.10(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(react-dom@19.0.1(react@19.0.1))(react@19.0.1))
- katex:
- specifier: ^0.16.25
- version: 0.16.25
- lucide-react:
- specifier: ^0.446.0
- version: 0.446.0(react@19.0.1)
- motion:
- specifier: ^12.23.26
- version: 12.23.26(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- nanoid:
- specifier: ^5.1.3
- version: 5.1.3
- next:
- specifier: 16.0.10
- version: 16.0.10(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- next-auth:
- specifier: 5.0.0-beta.25
- version: 5.0.0-beta.25(next@16.0.10(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(react-dom@19.0.1(react@19.0.1))(react@19.0.1))(react@19.0.1)
- next-themes:
- specifier: ^0.3.0
- version: 0.3.0(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- orderedmap:
- specifier: ^2.1.1
- version: 2.1.1
- papaparse:
- specifier: ^5.5.2
- version: 5.5.2
- postgres:
- specifier: ^3.4.4
- version: 3.4.5
- prosemirror-example-setup:
- specifier: ^1.2.3
- version: 1.2.3
- prosemirror-inputrules:
- specifier: ^1.4.0
- version: 1.4.0
- prosemirror-markdown:
- specifier: ^1.13.1
- version: 1.13.1
- prosemirror-model:
- specifier: ^1.23.0
- version: 1.24.1
- prosemirror-schema-basic:
- specifier: ^1.2.3
- version: 1.2.3
- prosemirror-schema-list:
- specifier: ^1.4.1
- version: 1.5.1
- prosemirror-state:
- specifier: ^1.4.3
- version: 1.4.3
- prosemirror-view:
- specifier: ^1.34.3
- version: 1.38.1
- radix-ui:
- specifier: ^1.4.3
- version: 1.4.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- react:
- specifier: 19.0.1
- version: 19.0.1
- react-data-grid:
- specifier: 7.0.0-beta.47
- version: 7.0.0-beta.47(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- react-dom:
- specifier: 19.0.1
- version: 19.0.1(react@19.0.1)
- react-resizable-panels:
- specifier: ^2.1.7
- version: 2.1.7(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- react-syntax-highlighter:
- specifier: ^15.6.6
- version: 15.6.6(react@19.0.1)
- redis:
- specifier: ^5.0.0
- version: 5.9.0
- resumable-stream:
- specifier: ^2.0.0
- version: 2.2.8
- server-only:
- specifier: ^0.0.1
- version: 0.0.1
- shiki:
- specifier: ^3.14.0
- version: 3.14.0
- sonner:
- specifier: ^1.5.0
- version: 1.7.4(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- streamdown:
- specifier: ^1.4.0
- version: 1.4.0(@types/react@18.3.18)(react@19.0.1)
- swr:
- specifier: ^2.2.5
- version: 2.3.3(react@19.0.1)
- tailwind-merge:
- specifier: ^2.5.2
- version: 2.6.0
- tailwindcss-animate:
- specifier: ^1.0.7
- version: 1.0.7(tailwindcss@4.1.16)
- use-stick-to-bottom:
- specifier: ^1.1.1
- version: 1.1.1(react@19.0.1)
- usehooks-ts:
- specifier: ^3.1.0
- version: 3.1.1(react@19.0.1)
- zod:
- specifier: ^3.25.76
- version: 3.25.76
- devDependencies:
- '@biomejs/biome':
- specifier: 2.2.2
- version: 2.2.2
- '@playwright/test':
- specifier: ^1.50.1
- version: 1.51.0
- '@tailwindcss/postcss':
- specifier: ^4.1.13
- version: 4.1.16
- '@tailwindcss/typography':
- specifier: ^0.5.15
- version: 0.5.16(tailwindcss@4.1.16)
- '@types/d3-scale':
- specifier: ^4.0.8
- version: 4.0.9
- '@types/node':
- specifier: ^22.8.6
- version: 22.13.10
- '@types/papaparse':
- specifier: ^5.3.15
- version: 5.3.15
- '@types/pdf-parse':
- specifier: ^1.1.4
- version: 1.1.4
- '@types/react':
- specifier: ^18
- version: 18.3.18
- '@types/react-dom':
- specifier: ^18
- version: 18.3.5(@types/react@18.3.18)
- '@types/react-syntax-highlighter':
- specifier: ^15.5.13
- version: 15.5.13
- drizzle-kit:
- specifier: ^0.25.0
- version: 0.25.0
- postcss:
- specifier: ^8
- version: 8.5.3
- tailwindcss:
- specifier: ^4.1.13
- version: 4.1.16
- tsx:
- specifier: ^4.19.1
- version: 4.19.3
- typescript:
- specifier: ^5.6.3
- version: 5.8.2
- ultracite:
- specifier: 5.3.9
- version: 5.3.9(@types/debug@4.1.12)(@types/node@22.13.10)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0)
-
-packages:
-
- '@ai-sdk/gateway@2.0.0-beta.85':
- resolution: {integrity: sha512-1LFCTwweCe1KWyBR/v64zbvNJbAu4JPooa+0JVUclcb90RYQH2FDIQCbxN4H6J8is4yaTkHW5tbLNjHpOkxZuA==}
- engines: {node: '>=18'}
- peerDependencies:
- zod: ^3.25.76 || ^4.1.8
-
- '@ai-sdk/provider-utils@4.0.0-beta.53':
- resolution: {integrity: sha512-83/aNTnKfurb4jdaOSfh1KgxY27SuWZbecc3bUfiUxLMtAMBLusgWMaaSbfl2VHufAoGLXIuRYRq4lXlNCdXzw==}
- engines: {node: '>=18'}
- peerDependencies:
- zod: ^3.25.76 || ^4.1.8
-
- '@ai-sdk/provider@3.0.0-beta.27':
- resolution: {integrity: sha512-g/H1lyBQa5TAolD0t9uW552z0dwo2evMPxE9gu22zkEUvQSkOl8F1C0Jg31sUPTn9xmKnDK+hjWsAsZnOFE9mQ==}
- engines: {node: '>=18'}
-
- '@ai-sdk/react@3.0.0-beta.162':
- resolution: {integrity: sha512-vgJPUbHJ+y5Ebs1KmCnnjdebP7dsgW4uBEtPvmJJv/5JW7K4nizEFVOoxb2FF/mU7KbbE8qiprnM/XPRgC/znQ==}
- engines: {node: '>=18'}
- peerDependencies:
- react: ^18 || ~19.0.1 || ~19.1.2 || ^19.2.1
-
- '@alloc/quick-lru@5.2.0':
- resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
- engines: {node: '>=10'}
-
- '@antfu/install-pkg@1.1.0':
- resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==}
-
- '@antfu/utils@9.3.0':
- resolution: {integrity: sha512-9hFT4RauhcUzqOE4f1+frMKLZrgNog5b06I7VmZQV1BkvwvqrbC8EBZf3L1eEL2AKb6rNKjER0sEvJiSP1FXEA==}
-
- '@auth/core@0.37.2':
- resolution: {integrity: sha512-kUvzyvkcd6h1vpeMAojK2y7+PAV5H+0Cc9+ZlKYDFhDY31AlvsB+GW5vNO4qE3Y07KeQgvNO9U0QUx/fN62kBw==}
- peerDependencies:
- '@simplewebauthn/browser': ^9.0.1
- '@simplewebauthn/server': ^9.0.2
- nodemailer: ^6.8.0
- peerDependenciesMeta:
- '@simplewebauthn/browser':
- optional: true
- '@simplewebauthn/server':
- optional: true
- nodemailer:
- optional: true
-
- '@babel/runtime@7.28.4':
- resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==}
- engines: {node: '>=6.9.0'}
-
- '@biomejs/biome@2.2.2':
- resolution: {integrity: sha512-j1omAiQWCkhuLgwpMKisNKnsM6W8Xtt1l0WZmqY/dFj8QPNkIoTvk4tSsi40FaAAkBE1PU0AFG2RWFBWenAn+w==}
- engines: {node: '>=14.21.3'}
- hasBin: true
-
- '@biomejs/cli-darwin-arm64@2.2.2':
- resolution: {integrity: sha512-6ePfbCeCPryWu0CXlzsWNZgVz/kBEvHiPyNpmViSt6A2eoDf4kXs3YnwQPzGjy8oBgQulrHcLnJL0nkCh80mlQ==}
- engines: {node: '>=14.21.3'}
- cpu: [arm64]
- os: [darwin]
-
- '@biomejs/cli-darwin-x64@2.2.2':
- resolution: {integrity: sha512-Tn4JmVO+rXsbRslml7FvKaNrlgUeJot++FkvYIhl1OkslVCofAtS35MPlBMhXgKWF9RNr9cwHanrPTUUXcYGag==}
- engines: {node: '>=14.21.3'}
- cpu: [x64]
- os: [darwin]
-
- '@biomejs/cli-linux-arm64-musl@2.2.2':
- resolution: {integrity: sha512-/MhYg+Bd6renn6i1ylGFL5snYUn/Ct7zoGVKhxnro3bwekiZYE8Kl39BSb0MeuqM+72sThkQv4TnNubU9njQRw==}
- engines: {node: '>=14.21.3'}
- cpu: [arm64]
- os: [linux]
-
- '@biomejs/cli-linux-arm64@2.2.2':
- resolution: {integrity: sha512-JfrK3gdmWWTh2J5tq/rcWCOsImVyzUnOS2fkjhiYKCQ+v8PqM+du5cfB7G1kXas+7KQeKSWALv18iQqdtIMvzw==}
- engines: {node: '>=14.21.3'}
- cpu: [arm64]
- os: [linux]
-
- '@biomejs/cli-linux-x64-musl@2.2.2':
- resolution: {integrity: sha512-ZCLXcZvjZKSiRY/cFANKg+z6Fhsf9MHOzj+NrDQcM+LbqYRT97LyCLWy2AS+W2vP+i89RyRM+kbGpUzbRTYWig==}
- engines: {node: '>=14.21.3'}
- cpu: [x64]
- os: [linux]
-
- '@biomejs/cli-linux-x64@2.2.2':
- resolution: {integrity: sha512-Ogb+77edO5LEP/xbNicACOWVLt8mgC+E1wmpUakr+O4nKwLt9vXe74YNuT3T1dUBxC/SnrVmlzZFC7kQJEfquQ==}
- engines: {node: '>=14.21.3'}
- cpu: [x64]
- os: [linux]
-
- '@biomejs/cli-win32-arm64@2.2.2':
- resolution: {integrity: sha512-wBe2wItayw1zvtXysmHJQoQqXlTzHSpQRyPpJKiNIR21HzH/CrZRDFic1C1jDdp+zAPtqhNExa0owKMbNwW9cQ==}
- engines: {node: '>=14.21.3'}
- cpu: [arm64]
- os: [win32]
-
- '@biomejs/cli-win32-x64@2.2.2':
- resolution: {integrity: sha512-DAuHhHekGfiGb6lCcsT4UyxQmVwQiBCBUMwVra/dcOSs9q8OhfaZgey51MlekT3p8UwRqtXQfFuEJBhJNdLZwg==}
- engines: {node: '>=14.21.3'}
- cpu: [x64]
- os: [win32]
-
- '@braintree/sanitize-url@7.1.1':
- resolution: {integrity: sha512-i1L7noDNxtFyL5DmZafWy1wRVhGehQmzZaz1HiN5e7iylJMSZR7ekOV7NsIqa5qBldlLrsKv4HbgFUVlQrz8Mw==}
-
- '@chevrotain/cst-dts-gen@11.0.3':
- resolution: {integrity: sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ==}
-
- '@chevrotain/gast@11.0.3':
- resolution: {integrity: sha512-+qNfcoNk70PyS/uxmj3li5NiECO+2YKZZQMbmjTqRI3Qchu8Hig/Q9vgkHpI3alNjr7M+a2St5pw5w5F6NL5/Q==}
-
- '@chevrotain/regexp-to-ast@11.0.3':
- resolution: {integrity: sha512-1fMHaBZxLFvWI067AVbGJav1eRY7N8DDvYCTwGBiE/ytKBgP8azTdgyrKyWZ9Mfh09eHWb5PgTSO8wi7U824RA==}
-
- '@chevrotain/types@11.0.3':
- resolution: {integrity: sha512-gsiM3G8b58kZC2HaWR50gu6Y1440cHiJ+i3JUvcp/35JchYejb2+5MVeJK0iKThYpAa/P2PYFV4hoi44HD+aHQ==}
-
- '@chevrotain/utils@11.0.3':
- resolution: {integrity: sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==}
-
- '@clack/core@0.5.0':
- resolution: {integrity: sha512-p3y0FIOwaYRUPRcMO7+dlmLh8PSRcrjuTndsiA0WAFbWES0mLZlrjVoBRZ9DzkPFJZG6KGkJmoEAY0ZcVWTkow==}
-
- '@clack/prompts@0.11.0':
- resolution: {integrity: sha512-pMN5FcrEw9hUkZA4f+zLlzivQSeQf5dRGJjSUbvVYDLvpKCdQx5OaknvKzgbtXOizhP+SJJJjqEbOe55uKKfAw==}
-
- '@codemirror/autocomplete@6.18.6':
- resolution: {integrity: sha512-PHHBXFomUs5DF+9tCOM/UoW6XQ4R44lLNNhRaW9PKPTU0D7lIjRg3ElxaJnTwsl/oHiR93WSXDBrekhoUGCPtg==}
-
- '@codemirror/commands@6.8.0':
- resolution: {integrity: sha512-q8VPEFaEP4ikSlt6ZxjB3zW72+7osfAYW9i8Zu943uqbKuz6utc1+F170hyLUCUltXORjQXRyYQNfkckzA/bPQ==}
-
- '@codemirror/lang-javascript@6.2.3':
- resolution: {integrity: sha512-8PR3vIWg7pSu7ur8A07pGiYHgy3hHj+mRYRCSG8q+mPIrl0F02rgpGv+DsQTHRTc30rydOsf5PZ7yjKFg2Ackw==}
-
- '@codemirror/lang-python@6.1.7':
- resolution: {integrity: sha512-mZnFTsL4lW5p9ch8uKNKeRU3xGGxr1QpESLilfON2E3fQzOa/OygEMkaDvERvXDJWJA9U9oN/D4w0ZuUzNO4+g==}
-
- '@codemirror/language@6.11.0':
- resolution: {integrity: sha512-A7+f++LodNNc1wGgoRDTt78cOwWm9KVezApgjOMp1W4hM0898nsqBXwF+sbePE7ZRcjN7Sa1Z5m2oN27XkmEjQ==}
-
- '@codemirror/lint@6.8.4':
- resolution: {integrity: sha512-u4q7PnZlJUojeRe8FJa/njJcMctISGgPQ4PnWsd9268R4ZTtU+tfFYmwkBvgcrK2+QQ8tYFVALVb5fVJykKc5A==}
-
- '@codemirror/search@6.5.10':
- resolution: {integrity: sha512-RMdPdmsrUf53pb2VwflKGHEe1XVM07hI7vV2ntgw1dmqhimpatSJKva4VA9h4TLUDOD4EIF02201oZurpnEFsg==}
-
- '@codemirror/state@6.5.2':
- resolution: {integrity: sha512-FVqsPqtPWKVVL3dPSxy8wEF/ymIEuVzF1PK3VbUgrxXpJUSHQWWZz4JMToquRxnkw+36LTamCZG2iua2Ptq0fA==}
-
- '@codemirror/theme-one-dark@6.1.2':
- resolution: {integrity: sha512-F+sH0X16j/qFLMAfbciKTxVOwkdAS336b7AXTKOZhy8BR3eH/RelsnLgLFINrpST63mmN2OuwUt0W2ndUgYwUA==}
-
- '@codemirror/view@6.36.4':
- resolution: {integrity: sha512-ZQ0V5ovw/miKEXTvjgzRyjnrk9TwriUB1k4R5p7uNnHR9Hus+D1SXHGdJshijEzPFjU25xea/7nhIeSqYFKdbA==}
-
- '@drizzle-team/brocli@0.10.2':
- resolution: {integrity: sha512-z33Il7l5dKjUgGULTqBsQBQwckHh5AbIuxhdsIxDDiZAzBOrZO6q9ogcWC65kU382AfynTfgNumVcNIjuIua6w==}
-
- '@emnapi/runtime@1.7.1':
- resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==}
-
- '@esbuild-kit/core-utils@3.3.2':
- resolution: {integrity: sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ==}
- deprecated: 'Merged into tsx: https://tsx.is'
-
- '@esbuild-kit/esm-loader@2.6.5':
- resolution: {integrity: sha512-FxEMIkJKnodyA1OaCUoEvbYRkoZlLZ4d/eXFu9Fh8CbBBgP5EmZxrfTRyN0qpXZ4vOvqnE5YdRdcrmUUXuU+dA==}
- deprecated: 'Merged into tsx: https://tsx.is'
-
- '@esbuild/aix-ppc64@0.19.12':
- resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==}
- engines: {node: '>=12'}
- cpu: [ppc64]
- os: [aix]
-
- '@esbuild/aix-ppc64@0.25.1':
- resolution: {integrity: sha512-kfYGy8IdzTGy+z0vFGvExZtxkFlA4zAxgKEahG9KE1ScBjpQnFsNOX8KTU5ojNru5ed5CVoJYXFtoxaq5nFbjQ==}
- engines: {node: '>=18'}
- cpu: [ppc64]
- os: [aix]
-
- '@esbuild/android-arm64@0.18.20':
- resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==}
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [android]
-
- '@esbuild/android-arm64@0.19.12':
- resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==}
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [android]
-
- '@esbuild/android-arm64@0.25.1':
- resolution: {integrity: sha512-50tM0zCJW5kGqgG7fQ7IHvQOcAn9TKiVRuQ/lN0xR+T2lzEFvAi1ZcS8DiksFcEpf1t/GYOeOfCAgDHFpkiSmA==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [android]
-
- '@esbuild/android-arm@0.18.20':
- resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==}
- engines: {node: '>=12'}
- cpu: [arm]
- os: [android]
-
- '@esbuild/android-arm@0.19.12':
- resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==}
- engines: {node: '>=12'}
- cpu: [arm]
- os: [android]
-
- '@esbuild/android-arm@0.25.1':
- resolution: {integrity: sha512-dp+MshLYux6j/JjdqVLnMglQlFu+MuVeNrmT5nk6q07wNhCdSnB7QZj+7G8VMUGh1q+vj2Bq8kRsuyA00I/k+Q==}
- engines: {node: '>=18'}
- cpu: [arm]
- os: [android]
-
- '@esbuild/android-x64@0.18.20':
- resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [android]
-
- '@esbuild/android-x64@0.19.12':
- resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [android]
-
- '@esbuild/android-x64@0.25.1':
- resolution: {integrity: sha512-GCj6WfUtNldqUzYkN/ITtlhwQqGWu9S45vUXs7EIYf+7rCiiqH9bCloatO9VhxsL0Pji+PF4Lz2XXCES+Q8hDw==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [android]
-
- '@esbuild/darwin-arm64@0.18.20':
- resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==}
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [darwin]
-
- '@esbuild/darwin-arm64@0.19.12':
- resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==}
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [darwin]
-
- '@esbuild/darwin-arm64@0.25.1':
- resolution: {integrity: sha512-5hEZKPf+nQjYoSr/elb62U19/l1mZDdqidGfmFutVUjjUZrOazAtwK+Kr+3y0C/oeJfLlxo9fXb1w7L+P7E4FQ==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [darwin]
-
- '@esbuild/darwin-x64@0.18.20':
- resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [darwin]
-
- '@esbuild/darwin-x64@0.19.12':
- resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [darwin]
-
- '@esbuild/darwin-x64@0.25.1':
- resolution: {integrity: sha512-hxVnwL2Dqs3fM1IWq8Iezh0cX7ZGdVhbTfnOy5uURtao5OIVCEyj9xIzemDi7sRvKsuSdtCAhMKarxqtlyVyfA==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [darwin]
-
- '@esbuild/freebsd-arm64@0.18.20':
- resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==}
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [freebsd]
-
- '@esbuild/freebsd-arm64@0.19.12':
- resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==}
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [freebsd]
-
- '@esbuild/freebsd-arm64@0.25.1':
- resolution: {integrity: sha512-1MrCZs0fZa2g8E+FUo2ipw6jw5qqQiH+tERoS5fAfKnRx6NXH31tXBKI3VpmLijLH6yriMZsxJtaXUyFt/8Y4A==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [freebsd]
-
- '@esbuild/freebsd-x64@0.18.20':
- resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [freebsd]
-
- '@esbuild/freebsd-x64@0.19.12':
- resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [freebsd]
-
- '@esbuild/freebsd-x64@0.25.1':
- resolution: {integrity: sha512-0IZWLiTyz7nm0xuIs0q1Y3QWJC52R8aSXxe40VUxm6BB1RNmkODtW6LHvWRrGiICulcX7ZvyH6h5fqdLu4gkww==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [freebsd]
-
- '@esbuild/linux-arm64@0.18.20':
- resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==}
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [linux]
-
- '@esbuild/linux-arm64@0.19.12':
- resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==}
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [linux]
-
- '@esbuild/linux-arm64@0.25.1':
- resolution: {integrity: sha512-jaN3dHi0/DDPelk0nLcXRm1q7DNJpjXy7yWaWvbfkPvI+7XNSc/lDOnCLN7gzsyzgu6qSAmgSvP9oXAhP973uQ==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [linux]
-
- '@esbuild/linux-arm@0.18.20':
- resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==}
- engines: {node: '>=12'}
- cpu: [arm]
- os: [linux]
-
- '@esbuild/linux-arm@0.19.12':
- resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==}
- engines: {node: '>=12'}
- cpu: [arm]
- os: [linux]
-
- '@esbuild/linux-arm@0.25.1':
- resolution: {integrity: sha512-NdKOhS4u7JhDKw9G3cY6sWqFcnLITn6SqivVArbzIaf3cemShqfLGHYMx8Xlm/lBit3/5d7kXvriTUGa5YViuQ==}
- engines: {node: '>=18'}
- cpu: [arm]
- os: [linux]
-
- '@esbuild/linux-ia32@0.18.20':
- resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==}
- engines: {node: '>=12'}
- cpu: [ia32]
- os: [linux]
-
- '@esbuild/linux-ia32@0.19.12':
- resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==}
- engines: {node: '>=12'}
- cpu: [ia32]
- os: [linux]
-
- '@esbuild/linux-ia32@0.25.1':
- resolution: {integrity: sha512-OJykPaF4v8JidKNGz8c/q1lBO44sQNUQtq1KktJXdBLn1hPod5rE/Hko5ugKKZd+D2+o1a9MFGUEIUwO2YfgkQ==}
- engines: {node: '>=18'}
- cpu: [ia32]
- os: [linux]
-
- '@esbuild/linux-loong64@0.18.20':
- resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==}
- engines: {node: '>=12'}
- cpu: [loong64]
- os: [linux]
-
- '@esbuild/linux-loong64@0.19.12':
- resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==}
- engines: {node: '>=12'}
- cpu: [loong64]
- os: [linux]
-
- '@esbuild/linux-loong64@0.25.1':
- resolution: {integrity: sha512-nGfornQj4dzcq5Vp835oM/o21UMlXzn79KobKlcs3Wz9smwiifknLy4xDCLUU0BWp7b/houtdrgUz7nOGnfIYg==}
- engines: {node: '>=18'}
- cpu: [loong64]
- os: [linux]
-
- '@esbuild/linux-mips64el@0.18.20':
- resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==}
- engines: {node: '>=12'}
- cpu: [mips64el]
- os: [linux]
-
- '@esbuild/linux-mips64el@0.19.12':
- resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==}
- engines: {node: '>=12'}
- cpu: [mips64el]
- os: [linux]
-
- '@esbuild/linux-mips64el@0.25.1':
- resolution: {integrity: sha512-1osBbPEFYwIE5IVB/0g2X6i1qInZa1aIoj1TdL4AaAb55xIIgbg8Doq6a5BzYWgr+tEcDzYH67XVnTmUzL+nXg==}
- engines: {node: '>=18'}
- cpu: [mips64el]
- os: [linux]
-
- '@esbuild/linux-ppc64@0.18.20':
- resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==}
- engines: {node: '>=12'}
- cpu: [ppc64]
- os: [linux]
-
- '@esbuild/linux-ppc64@0.19.12':
- resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==}
- engines: {node: '>=12'}
- cpu: [ppc64]
- os: [linux]
-
- '@esbuild/linux-ppc64@0.25.1':
- resolution: {integrity: sha512-/6VBJOwUf3TdTvJZ82qF3tbLuWsscd7/1w+D9LH0W/SqUgM5/JJD0lrJ1fVIfZsqB6RFmLCe0Xz3fmZc3WtyVg==}
- engines: {node: '>=18'}
- cpu: [ppc64]
- os: [linux]
-
- '@esbuild/linux-riscv64@0.18.20':
- resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==}
- engines: {node: '>=12'}
- cpu: [riscv64]
- os: [linux]
-
- '@esbuild/linux-riscv64@0.19.12':
- resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==}
- engines: {node: '>=12'}
- cpu: [riscv64]
- os: [linux]
-
- '@esbuild/linux-riscv64@0.25.1':
- resolution: {integrity: sha512-nSut/Mx5gnilhcq2yIMLMe3Wl4FK5wx/o0QuuCLMtmJn+WeWYoEGDN1ipcN72g1WHsnIbxGXd4i/MF0gTcuAjQ==}
- engines: {node: '>=18'}
- cpu: [riscv64]
- os: [linux]
-
- '@esbuild/linux-s390x@0.18.20':
- resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==}
- engines: {node: '>=12'}
- cpu: [s390x]
- os: [linux]
-
- '@esbuild/linux-s390x@0.19.12':
- resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==}
- engines: {node: '>=12'}
- cpu: [s390x]
- os: [linux]
-
- '@esbuild/linux-s390x@0.25.1':
- resolution: {integrity: sha512-cEECeLlJNfT8kZHqLarDBQso9a27o2Zd2AQ8USAEoGtejOrCYHNtKP8XQhMDJMtthdF4GBmjR2au3x1udADQQQ==}
- engines: {node: '>=18'}
- cpu: [s390x]
- os: [linux]
-
- '@esbuild/linux-x64@0.18.20':
- resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [linux]
-
- '@esbuild/linux-x64@0.19.12':
- resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [linux]
-
- '@esbuild/linux-x64@0.25.1':
- resolution: {integrity: sha512-xbfUhu/gnvSEg+EGovRc+kjBAkrvtk38RlerAzQxvMzlB4fXpCFCeUAYzJvrnhFtdeyVCDANSjJvOvGYoeKzFA==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [linux]
-
- '@esbuild/netbsd-arm64@0.25.1':
- resolution: {integrity: sha512-O96poM2XGhLtpTh+s4+nP7YCCAfb4tJNRVZHfIE7dgmax+yMP2WgMd2OecBuaATHKTHsLWHQeuaxMRnCsH8+5g==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [netbsd]
-
- '@esbuild/netbsd-x64@0.18.20':
- resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [netbsd]
-
- '@esbuild/netbsd-x64@0.19.12':
- resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [netbsd]
-
- '@esbuild/netbsd-x64@0.25.1':
- resolution: {integrity: sha512-X53z6uXip6KFXBQ+Krbx25XHV/NCbzryM6ehOAeAil7X7oa4XIq+394PWGnwaSQ2WRA0KI6PUO6hTO5zeF5ijA==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [netbsd]
-
- '@esbuild/openbsd-arm64@0.25.1':
- resolution: {integrity: sha512-Na9T3szbXezdzM/Kfs3GcRQNjHzM6GzFBeU1/6IV/npKP5ORtp9zbQjvkDJ47s6BCgaAZnnnu/cY1x342+MvZg==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [openbsd]
-
- '@esbuild/openbsd-x64@0.18.20':
- resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [openbsd]
-
- '@esbuild/openbsd-x64@0.19.12':
- resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [openbsd]
-
- '@esbuild/openbsd-x64@0.25.1':
- resolution: {integrity: sha512-T3H78X2h1tszfRSf+txbt5aOp/e7TAz3ptVKu9Oyir3IAOFPGV6O9c2naym5TOriy1l0nNf6a4X5UXRZSGX/dw==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [openbsd]
-
- '@esbuild/sunos-x64@0.18.20':
- resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [sunos]
-
- '@esbuild/sunos-x64@0.19.12':
- resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [sunos]
-
- '@esbuild/sunos-x64@0.25.1':
- resolution: {integrity: sha512-2H3RUvcmULO7dIE5EWJH8eubZAI4xw54H1ilJnRNZdeo8dTADEZ21w6J22XBkXqGJbe0+wnNJtw3UXRoLJnFEg==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [sunos]
-
- '@esbuild/win32-arm64@0.18.20':
- resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==}
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [win32]
-
- '@esbuild/win32-arm64@0.19.12':
- resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==}
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [win32]
-
- '@esbuild/win32-arm64@0.25.1':
- resolution: {integrity: sha512-GE7XvrdOzrb+yVKB9KsRMq+7a2U/K5Cf/8grVFRAGJmfADr/e/ODQ134RK2/eeHqYV5eQRFxb1hY7Nr15fv1NQ==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [win32]
-
- '@esbuild/win32-ia32@0.18.20':
- resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==}
- engines: {node: '>=12'}
- cpu: [ia32]
- os: [win32]
-
- '@esbuild/win32-ia32@0.19.12':
- resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==}
- engines: {node: '>=12'}
- cpu: [ia32]
- os: [win32]
-
- '@esbuild/win32-ia32@0.25.1':
- resolution: {integrity: sha512-uOxSJCIcavSiT6UnBhBzE8wy3n0hOkJsBOzy7HDAuTDE++1DJMRRVCPGisULScHL+a/ZwdXPpXD3IyFKjA7K8A==}
- engines: {node: '>=18'}
- cpu: [ia32]
- os: [win32]
-
- '@esbuild/win32-x64@0.18.20':
- resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [win32]
-
- '@esbuild/win32-x64@0.19.12':
- resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [win32]
-
- '@esbuild/win32-x64@0.25.1':
- resolution: {integrity: sha512-Y1EQdcfwMSeQN/ujR5VayLOJ1BHaK+ssyk0AEzPjC+t1lITgsnccPqFjb6V+LsTp/9Iov4ysfjxLaGJ9RPtkVg==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [win32]
-
- '@fastify/busboy@2.1.1':
- resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==}
- engines: {node: '>=14'}
-
- '@floating-ui/core@1.6.9':
- resolution: {integrity: sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw==}
-
- '@floating-ui/dom@1.6.13':
- resolution: {integrity: sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w==}
-
- '@floating-ui/react-dom@2.1.2':
- resolution: {integrity: sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==}
- peerDependencies:
- react: '>=16.8.0'
- react-dom: '>=16.8.0'
-
- '@floating-ui/utils@0.2.9':
- resolution: {integrity: sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==}
-
- '@iconify/types@2.0.0':
- resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==}
-
- '@iconify/utils@3.0.2':
- resolution: {integrity: sha512-EfJS0rLfVuRuJRn4psJHtK2A9TqVnkxPpHY6lYHiB9+8eSuudsxbwMiavocG45ujOo6FJ+CIRlRnlOGinzkaGQ==}
-
- '@icons-pack/react-simple-icons@13.8.0':
- resolution: {integrity: sha512-iZrhL1fSklfCCVn68IYHaAoKfcby3RakUTn2tRPyHBkhr2tkYqeQbjJWf+NizIYBzKBn2IarDJXmTdXd6CuEfw==}
- peerDependencies:
- react: ^16.13 || ^17 || ^18 || ^19
-
- '@img/colour@1.0.0':
- resolution: {integrity: sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==}
- engines: {node: '>=18'}
-
- '@img/sharp-darwin-arm64@0.34.5':
- resolution: {integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [arm64]
- os: [darwin]
-
- '@img/sharp-darwin-x64@0.34.5':
- resolution: {integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [x64]
- os: [darwin]
-
- '@img/sharp-libvips-darwin-arm64@1.2.4':
- resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==}
- cpu: [arm64]
- os: [darwin]
-
- '@img/sharp-libvips-darwin-x64@1.2.4':
- resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==}
- cpu: [x64]
- os: [darwin]
-
- '@img/sharp-libvips-linux-arm64@1.2.4':
- resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==}
- cpu: [arm64]
- os: [linux]
-
- '@img/sharp-libvips-linux-arm@1.2.4':
- resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==}
- cpu: [arm]
- os: [linux]
-
- '@img/sharp-libvips-linux-ppc64@1.2.4':
- resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==}
- cpu: [ppc64]
- os: [linux]
-
- '@img/sharp-libvips-linux-riscv64@1.2.4':
- resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==}
- cpu: [riscv64]
- os: [linux]
-
- '@img/sharp-libvips-linux-s390x@1.2.4':
- resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==}
- cpu: [s390x]
- os: [linux]
-
- '@img/sharp-libvips-linux-x64@1.2.4':
- resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==}
- cpu: [x64]
- os: [linux]
-
- '@img/sharp-libvips-linuxmusl-arm64@1.2.4':
- resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==}
- cpu: [arm64]
- os: [linux]
-
- '@img/sharp-libvips-linuxmusl-x64@1.2.4':
- resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==}
- cpu: [x64]
- os: [linux]
-
- '@img/sharp-linux-arm64@0.34.5':
- resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [arm64]
- os: [linux]
-
- '@img/sharp-linux-arm@0.34.5':
- resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [arm]
- os: [linux]
-
- '@img/sharp-linux-ppc64@0.34.5':
- resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [ppc64]
- os: [linux]
-
- '@img/sharp-linux-riscv64@0.34.5':
- resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [riscv64]
- os: [linux]
-
- '@img/sharp-linux-s390x@0.34.5':
- resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [s390x]
- os: [linux]
-
- '@img/sharp-linux-x64@0.34.5':
- resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [x64]
- os: [linux]
-
- '@img/sharp-linuxmusl-arm64@0.34.5':
- resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [arm64]
- os: [linux]
-
- '@img/sharp-linuxmusl-x64@0.34.5':
- resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [x64]
- os: [linux]
-
- '@img/sharp-wasm32@0.34.5':
- resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [wasm32]
-
- '@img/sharp-win32-arm64@0.34.5':
- resolution: {integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [arm64]
- os: [win32]
-
- '@img/sharp-win32-ia32@0.34.5':
- resolution: {integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [ia32]
- os: [win32]
-
- '@img/sharp-win32-x64@0.34.5':
- resolution: {integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [x64]
- os: [win32]
-
- '@jridgewell/gen-mapping@0.3.8':
- resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==}
- engines: {node: '>=6.0.0'}
-
- '@jridgewell/remapping@2.3.5':
- resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==}
-
- '@jridgewell/resolve-uri@3.1.2':
- resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
- engines: {node: '>=6.0.0'}
-
- '@jridgewell/set-array@1.2.1':
- resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==}
- engines: {node: '>=6.0.0'}
-
- '@jridgewell/sourcemap-codec@1.5.0':
- resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
-
- '@jridgewell/sourcemap-codec@1.5.5':
- resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==}
-
- '@jridgewell/trace-mapping@0.3.25':
- resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
-
- '@lezer/common@1.2.3':
- resolution: {integrity: sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA==}
-
- '@lezer/highlight@1.2.1':
- resolution: {integrity: sha512-Z5duk4RN/3zuVO7Jq0pGLJ3qynpxUVsh7IbUbGj88+uV2ApSAn6kWg2au3iJb+0Zi7kKtqffIESgNcRXWZWmSA==}
-
- '@lezer/javascript@1.4.21':
- resolution: {integrity: sha512-lL+1fcuxWYPURMM/oFZLEDm0XuLN128QPV+VuGtKpeaOGdcl9F2LYC3nh1S9LkPqx9M0mndZFdXCipNAZpzIkQ==}
-
- '@lezer/lr@1.4.2':
- resolution: {integrity: sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA==}
-
- '@lezer/python@1.1.16':
- resolution: {integrity: sha512-ievIWylIZA5rNgAyHgA06/Y76vMUISKaYL9WrtjU8rCTTEzyZYo2jz9ER2YBdnN6dxCyS7eaK4HJCzamoAMKZw==}
-
- '@marijn/find-cluster-break@1.0.2':
- resolution: {integrity: sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g==}
-
- '@mermaid-js/parser@0.6.3':
- resolution: {integrity: sha512-lnjOhe7zyHjc+If7yT4zoedx2vo4sHaTmtkl1+or8BRTnCtDmcTpAjpzDSfCZrshM5bCoz0GyidzadJAH1xobA==}
-
- '@neondatabase/serverless@0.9.5':
- resolution: {integrity: sha512-siFas6gItqv6wD/pZnvdu34wEqgG3nSE6zWZdq5j2DEsa+VvX8i/5HXJOo06qrw5axPXn+lGCxeR+NLaSPIXug==}
-
- '@next/env@16.0.10':
- resolution: {integrity: sha512-8tuaQkyDVgeONQ1MeT9Mkk8pQmZapMKFh5B+OrFUlG3rVmYTXcXlBetBgTurKXGaIZvkoqRT9JL5K3phXcgang==}
-
- '@next/swc-darwin-arm64@16.0.10':
- resolution: {integrity: sha512-4XgdKtdVsaflErz+B5XeG0T5PeXKDdruDf3CRpnhN+8UebNa5N2H58+3GDgpn/9GBurrQ1uWW768FfscwYkJRg==}
- engines: {node: '>= 10'}
- cpu: [arm64]
- os: [darwin]
-
- '@next/swc-darwin-x64@16.0.10':
- resolution: {integrity: sha512-spbEObMvRKkQ3CkYVOME+ocPDFo5UqHb8EMTS78/0mQ+O1nqE8toHJVioZo4TvebATxgA8XMTHHrScPrn68OGw==}
- engines: {node: '>= 10'}
- cpu: [x64]
- os: [darwin]
-
- '@next/swc-linux-arm64-gnu@16.0.10':
- resolution: {integrity: sha512-uQtWE3X0iGB8apTIskOMi2w/MKONrPOUCi5yLO+v3O8Mb5c7K4Q5KD1jvTpTF5gJKa3VH/ijKjKUq9O9UhwOYw==}
- engines: {node: '>= 10'}
- cpu: [arm64]
- os: [linux]
-
- '@next/swc-linux-arm64-musl@16.0.10':
- resolution: {integrity: sha512-llA+hiDTrYvyWI21Z0L1GiXwjQaanPVQQwru5peOgtooeJ8qx3tlqRV2P7uH2pKQaUfHxI/WVarvI5oYgGxaTw==}
- engines: {node: '>= 10'}
- cpu: [arm64]
- os: [linux]
-
- '@next/swc-linux-x64-gnu@16.0.10':
- resolution: {integrity: sha512-AK2q5H0+a9nsXbeZ3FZdMtbtu9jxW4R/NgzZ6+lrTm3d6Zb7jYrWcgjcpM1k8uuqlSy4xIyPR2YiuUr+wXsavA==}
- engines: {node: '>= 10'}
- cpu: [x64]
- os: [linux]
-
- '@next/swc-linux-x64-musl@16.0.10':
- resolution: {integrity: sha512-1TDG9PDKivNw5550S111gsO4RGennLVl9cipPhtkXIFVwo31YZ73nEbLjNC8qG3SgTz/QZyYyaFYMeY4BKZR/g==}
- engines: {node: '>= 10'}
- cpu: [x64]
- os: [linux]
-
- '@next/swc-win32-arm64-msvc@16.0.10':
- resolution: {integrity: sha512-aEZIS4Hh32xdJQbHz121pyuVZniSNoqDVx1yIr2hy+ZwJGipeqnMZBJHyMxv2tiuAXGx6/xpTcQJ6btIiBjgmg==}
- engines: {node: '>= 10'}
- cpu: [arm64]
- os: [win32]
-
- '@next/swc-win32-x64-msvc@16.0.10':
- resolution: {integrity: sha512-E+njfCoFLb01RAFEnGZn6ERoOqhK1Gl3Lfz1Kjnj0Ulfu7oJbuMyvBKNj/bw8XZnenHDASlygTjZICQW+rYW1Q==}
- engines: {node: '>= 10'}
- cpu: [x64]
- os: [win32]
-
- '@opentelemetry/api-logs@0.200.0':
- resolution: {integrity: sha512-IKJBQxh91qJ+3ssRly5hYEJ8NDHu9oY/B1PXVSCWf7zytmYO9RNLB0Ox9XQ/fJ8m6gY6Q6NtBWlmXfaXt5Uc4Q==}
- 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/core@1.30.1':
- resolution: {integrity: sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ==}
- engines: {node: '>=14'}
- peerDependencies:
- '@opentelemetry/api': '>=1.0.0 <1.10.0'
-
- '@opentelemetry/instrumentation@0.57.2':
- resolution: {integrity: sha512-BdBGhQBh8IjZ2oIIX6F2/Q3LKm/FDDKi6ccYKcBTeilh6SNdNKveDOLk73BkSJjQLJk6qe4Yh+hHw1UPhCDdrg==}
- engines: {node: '>=14'}
- peerDependencies:
- '@opentelemetry/api': ^1.3.0
-
- '@opentelemetry/resources@1.30.1':
- resolution: {integrity: sha512-5UxZqiAgLYGFjS4s9qm5mBVo433u+dSPUFWVWXmLAD4wB65oMCoXaJP1KJa9DIYYMeHu3z4BZcStG3LC593cWA==}
- engines: {node: '>=14'}
- peerDependencies:
- '@opentelemetry/api': '>=1.0.0 <1.10.0'
-
- '@opentelemetry/sdk-logs@0.57.2':
- resolution: {integrity: sha512-TXFHJ5c+BKggWbdEQ/inpgIzEmS2BGQowLE9UhsMd7YYlUfBQJ4uax0VF/B5NYigdM/75OoJGhAV3upEhK+3gg==}
- engines: {node: '>=14'}
- peerDependencies:
- '@opentelemetry/api': '>=1.4.0 <1.10.0'
-
- '@opentelemetry/sdk-metrics@1.30.1':
- resolution: {integrity: sha512-q9zcZ0Okl8jRgmy7eNW3Ku1XSgg3sDLa5evHZpCwjspw7E8Is4K/haRPDJrBcX3YSn/Y7gUvFnByNYEKQNbNog==}
- engines: {node: '>=14'}
- peerDependencies:
- '@opentelemetry/api': '>=1.3.0 <1.10.0'
-
- '@opentelemetry/sdk-trace-base@1.30.1':
- resolution: {integrity: sha512-jVPgBbH1gCy2Lb7X0AVQ8XAfgg0pJ4nvl8/IiQA6nxOsPvS+0zMJaFSs2ltXe0J6C8dqjcnpyqINDJmU30+uOg==}
- engines: {node: '>=14'}
- peerDependencies:
- '@opentelemetry/api': '>=1.0.0 <1.10.0'
-
- '@opentelemetry/semantic-conventions@1.28.0':
- resolution: {integrity: sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==}
- engines: {node: '>=14'}
-
- '@panva/hkdf@1.2.1':
- resolution: {integrity: sha512-6oclG6Y3PiDFcoyk8srjLfVKyMfVCKJ27JwNPViuXziFpmdz+MZnZN/aKY0JGXgYuO/VghU0jcOAZgWXZ1Dmrw==}
-
- '@playwright/test@1.51.0':
- resolution: {integrity: sha512-dJ0dMbZeHhI+wb77+ljx/FeC8VBP6j/rj9OAojO08JI80wTZy6vRk9KvHKiDCUh4iMpEiseMgqRBIeW+eKX6RA==}
- engines: {node: '>=18'}
- hasBin: true
-
- '@radix-ui/number@1.1.1':
- resolution: {integrity: sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==}
-
- '@radix-ui/primitive@1.1.3':
- resolution: {integrity: sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==}
-
- '@radix-ui/react-accessible-icon@1.1.7':
- resolution: {integrity: sha512-XM+E4WXl0OqUJFovy6GjmxxFyx9opfCAIUku4dlKRd5YEPqt4kALOkQOp0Of6reHuUkJuiPBEc5k0o4z4lTC8A==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-accordion@1.2.12':
- resolution: {integrity: sha512-T4nygeh9YE9dLRPhAHSeOZi7HBXo+0kYIPJXayZfvWOWA0+n3dESrZbjfDPUABkUNym6Hd+f2IR113To8D2GPA==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-alert-dialog@1.1.15':
- resolution: {integrity: sha512-oTVLkEw5GpdRe29BqJ0LSDFWI3qu0vR1M0mUkOQWDIUnY/QIkLpgDMWuKxP94c2NAC2LGcgVhG1ImF3jkZ5wXw==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-arrow@1.1.7':
- resolution: {integrity: sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-aspect-ratio@1.1.7':
- resolution: {integrity: sha512-Yq6lvO9HQyPwev1onK1daHCHqXVLzPhSVjmsNjCa2Zcxy2f7uJD2itDtxknv6FzAKCwD1qQkeVDmX/cev13n/g==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-avatar@1.1.10':
- resolution: {integrity: sha512-V8piFfWapM5OmNCXTzVQY+E1rDa53zY+MQ4Y7356v4fFz6vqCyUtIz2rUD44ZEdwg78/jKmMJHj07+C/Z/rcog==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-checkbox@1.3.3':
- resolution: {integrity: sha512-wBbpv+NQftHDdG86Qc0pIyXk5IR3tM8Vd0nWLKDcX8nNn4nXFOFwsKuqw2okA/1D/mpaAkmuyndrPJTYDNZtFw==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-collapsible@1.1.12':
- resolution: {integrity: sha512-Uu+mSh4agx2ib1uIGPP4/CKNULyajb3p92LsVXmH2EHVMTfZWpll88XJ0j4W0z3f8NK1eYl1+Mf/szHPmcHzyA==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-collection@1.1.7':
- resolution: {integrity: sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-compose-refs@1.1.1':
- resolution: {integrity: sha512-Y9VzoRDSJtgFMUCoiZBDVo084VQ5hfpXxVE+NgkdNsjiDBByiImMZKKhxMwCbdHvhlENG6a833CbFkOQvTricw==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@radix-ui/react-compose-refs@1.1.2':
- resolution: {integrity: sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@radix-ui/react-context-menu@2.2.16':
- resolution: {integrity: sha512-O8morBEW+HsVG28gYDZPTrT9UUovQUlJue5YO836tiTJhuIWBm/zQHc7j388sHWtdH/xUZurK9olD2+pcqx5ww==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-context@1.1.2':
- resolution: {integrity: sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@radix-ui/react-context@1.1.3':
- resolution: {integrity: sha512-ieIFACdMpYfMEjF0rEf5KLvfVyIkOz6PDGyNnP+u+4xQ6jny3VCgA4OgXOwNx2aUkxn8zx9fiVcM8CfFYv9Lxw==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@radix-ui/react-dialog@1.1.15':
- resolution: {integrity: sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-direction@1.1.1':
- resolution: {integrity: sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@radix-ui/react-dismissable-layer@1.1.11':
- resolution: {integrity: sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-dropdown-menu@2.1.16':
- resolution: {integrity: sha512-1PLGQEynI/3OX/ftV54COn+3Sud/Mn8vALg2rWnBLnRaGtJDduNW/22XjlGgPdpcIbiQxjKtb7BkcjP00nqfJw==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-focus-guards@1.1.3':
- resolution: {integrity: sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@radix-ui/react-focus-scope@1.1.7':
- resolution: {integrity: sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-form@0.1.8':
- resolution: {integrity: sha512-QM70k4Zwjttifr5a4sZFts9fn8FzHYvQ5PiB19O2HsYibaHSVt9fH9rzB0XZo/YcM+b7t/p7lYCT/F5eOeF5yQ==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-hover-card@1.1.15':
- resolution: {integrity: sha512-qgTkjNT1CfKMoP0rcasmlH2r1DAiYicWsDsufxl940sT2wHNEWWv6FMWIQXWhVdmC1d/HYfbhQx60KYyAtKxjg==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-icons@1.3.2':
- resolution: {integrity: sha512-fyQIhGDhzfc9pK2kH6Pl9c4BDJGfMkPqkyIgYDthyNYoNg3wVhoJMMh19WS4Up/1KMPFVpNsT2q3WmXn2N1m6g==}
- peerDependencies:
- react: ^16.x || ^17.x || ^18.x || ^19.0.0 || ^19.0.0-rc
-
- '@radix-ui/react-id@1.1.1':
- resolution: {integrity: sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@radix-ui/react-label@2.1.7':
- resolution: {integrity: sha512-YT1GqPSL8kJn20djelMX7/cTRp/Y9w5IZHvfxQTVHrOqa2yMl7i/UfMqKRU5V7mEyKTrUVgJXhNQPVCG8PBLoQ==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-menu@2.1.16':
- resolution: {integrity: sha512-72F2T+PLlphrqLcAotYPp0uJMr5SjP5SL01wfEspJbru5Zs5vQaSHb4VB3ZMJPimgHHCHG7gMOeOB9H3Hdmtxg==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-menubar@1.1.16':
- resolution: {integrity: sha512-EB1FktTz5xRRi2Er974AUQZWg2yVBb1yjip38/lgwtCVRd3a+maUoGHN/xs9Yv8SY8QwbSEb+YrxGadVWbEutA==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-navigation-menu@1.2.14':
- resolution: {integrity: sha512-YB9mTFQvCOAQMHU+C/jVl96WmuWeltyUEpRJJky51huhds5W2FQr1J8D/16sQlf0ozxkPK8uF3niQMdUwZPv5w==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-one-time-password-field@0.1.8':
- resolution: {integrity: sha512-ycS4rbwURavDPVjCb5iS3aG4lURFDILi6sKI/WITUMZ13gMmn/xGjpLoqBAalhJaDk8I3UbCM5GzKHrnzwHbvg==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-password-toggle-field@0.1.3':
- resolution: {integrity: sha512-/UuCrDBWravcaMix4TdT+qlNdVwOM1Nck9kWx/vafXsdfj1ChfhOdfi3cy9SGBpWgTXwYCuboT/oYpJy3clqfw==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-popover@1.1.15':
- resolution: {integrity: sha512-kr0X2+6Yy/vJzLYJUPCZEc8SfQcf+1COFoAqauJm74umQhta9M7lNJHP7QQS3vkvcGLQUbWpMzwrXYwrYztHKA==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-popper@1.2.8':
- resolution: {integrity: sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-portal@1.1.9':
- resolution: {integrity: sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-presence@1.1.5':
- resolution: {integrity: sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-primitive@2.0.2':
- resolution: {integrity: sha512-Ec/0d38EIuvDF+GZjcMU/Ze6MxntVJYO/fRlCPhCaVUyPY9WTalHJw54tp9sXeJo3tlShWpy41vQRgLRGOuz+w==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-primitive@2.1.3':
- resolution: {integrity: sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-primitive@2.1.4':
- resolution: {integrity: sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-progress@1.1.7':
- resolution: {integrity: sha512-vPdg/tF6YC/ynuBIJlk1mm7Le0VgW6ub6J2UWnTQ7/D23KXcPI1qy+0vBkgKgd38RCMJavBXpB83HPNFMTb0Fg==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-progress@1.1.8':
- resolution: {integrity: sha512-+gISHcSPUJ7ktBy9RnTqbdKW78bcGke3t6taawyZ71pio1JewwGSJizycs7rLhGTvMJYCQB1DBK4KQsxs7U8dA==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-radio-group@1.3.8':
- resolution: {integrity: sha512-VBKYIYImA5zsxACdisNQ3BjCBfmbGH3kQlnFVqlWU4tXwjy7cGX8ta80BcrO+WJXIn5iBylEH3K6ZTlee//lgQ==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-roving-focus@1.1.11':
- resolution: {integrity: sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-scroll-area@1.2.10':
- resolution: {integrity: sha512-tAXIa1g3sM5CGpVT0uIbUx/U3Gs5N8T52IICuCtObaos1S8fzsrPXG5WObkQN3S6NVl6wKgPhAIiBGbWnvc97A==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-select@2.2.6':
- resolution: {integrity: sha512-I30RydO+bnn2PQztvo25tswPH+wFBjehVGtmagkU78yMdwTwVf12wnAOF+AeP8S2N8xD+5UPbGhkUfPyvT+mwQ==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-separator@1.1.7':
- resolution: {integrity: sha512-0HEb8R9E8A+jZjvmFCy/J4xhbXy3TV+9XSnGJ3KvTtjlIUy/YQ/p6UYZvi7YbeoeXdyU9+Y3scizK6hkY37baA==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-separator@1.1.8':
- resolution: {integrity: sha512-sDvqVY4itsKwwSMEe0jtKgfTh+72Sy3gPmQpjqcQneqQ4PFmr/1I0YA+2/puilhggCe2gJcx5EBAYFkWkdpa5g==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-slider@1.3.6':
- resolution: {integrity: sha512-JPYb1GuM1bxfjMRlNLE+BcmBC8onfCi60Blk7OBqi2MLTFdS+8401U4uFjnwkOr49BLmXxLC6JHkvAsx5OJvHw==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-slot@1.1.2':
- resolution: {integrity: sha512-YAKxaiGsSQJ38VzKH86/BPRC4rh+b1Jpa+JneA5LRE7skmLPNAyeG8kPJj/oo4STLvlrs8vkf/iYyc3A5stYCQ==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@radix-ui/react-slot@1.2.3':
- resolution: {integrity: sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@radix-ui/react-slot@1.2.4':
- resolution: {integrity: sha512-Jl+bCv8HxKnlTLVrcDE8zTMJ09R9/ukw4qBs/oZClOfoQk/cOTbDn+NceXfV7j09YPVQUryJPHurafcSg6EVKA==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@radix-ui/react-switch@1.2.6':
- resolution: {integrity: sha512-bByzr1+ep1zk4VubeEVViV592vu2lHE2BZY5OnzehZqOOgogN80+mNtCqPkhn2gklJqOpxWgPoYTSnhBCqpOXQ==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-tabs@1.1.13':
- resolution: {integrity: sha512-7xdcatg7/U+7+Udyoj2zodtI9H/IIopqo+YOIcZOq1nJwXWBZ9p8xiu5llXlekDbZkca79a/fozEYQXIA4sW6A==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-toast@1.2.15':
- resolution: {integrity: sha512-3OSz3TacUWy4WtOXV38DggwxoqJK4+eDkNMl5Z/MJZaoUPaP4/9lf81xXMe1I2ReTAptverZUpbPY4wWwWyL5g==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-toggle-group@1.1.11':
- resolution: {integrity: sha512-5umnS0T8JQzQT6HbPyO7Hh9dgd82NmS36DQr+X/YJ9ctFNCiiQd6IJAYYZ33LUwm8M+taCz5t2ui29fHZc4Y6Q==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-toggle@1.1.10':
- resolution: {integrity: sha512-lS1odchhFTeZv3xwHH31YPObmJn8gOg7Lq12inrr0+BH/l3Tsq32VfjqH1oh80ARM3mlkfMic15n0kg4sD1poQ==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-toolbar@1.1.11':
- resolution: {integrity: sha512-4ol06/1bLoFu1nwUqzdD4Y5RZ9oDdKeiHIsntug54Hcr1pgaHiPqHFEaXI1IFP/EsOfROQZ8Mig9VTIRza6Tjg==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-tooltip@1.2.8':
- resolution: {integrity: sha512-tY7sVt1yL9ozIxvmbtN5qtmH2krXcBCfjEiCgKGLqunJHvgvZG2Pcl2oQ3kbcZARb1BGEHdkLzcYGO8ynVlieg==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-use-callback-ref@1.1.1':
- resolution: {integrity: sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@radix-ui/react-use-controllable-state@1.2.2':
- resolution: {integrity: sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@radix-ui/react-use-effect-event@0.0.2':
- resolution: {integrity: sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@radix-ui/react-use-escape-keydown@1.1.1':
- resolution: {integrity: sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@radix-ui/react-use-is-hydrated@0.1.0':
- resolution: {integrity: sha512-U+UORVEq+cTnRIaostJv9AGdV3G6Y+zbVd+12e18jQ5A3c0xL03IhnHuiU4UV69wolOQp5GfR58NW/EgdQhwOA==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@radix-ui/react-use-layout-effect@1.1.1':
- resolution: {integrity: sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@radix-ui/react-use-previous@1.1.1':
- resolution: {integrity: sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@radix-ui/react-use-rect@1.1.1':
- resolution: {integrity: sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@radix-ui/react-use-size@1.1.1':
- resolution: {integrity: sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@radix-ui/react-visually-hidden@1.1.2':
- resolution: {integrity: sha512-1SzA4ns2M1aRlvxErqhLHsBHoS5eI5UUcI2awAMgGUp4LoaoWOKYmvqDY2s/tltuPkh3Yk77YF/r3IRj+Amx4Q==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-visually-hidden@1.2.3':
- resolution: {integrity: sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/rect@1.1.1':
- resolution: {integrity: sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==}
-
- '@redis/bloom@5.9.0':
- resolution: {integrity: sha512-W9D8yfKTWl4tP8lkC3MRYkMz4OfbuzE/W8iObe0jFgoRmgMfkBV+Vj38gvIqZPImtY0WB34YZkX3amYuQebvRQ==}
- engines: {node: '>= 18'}
- peerDependencies:
- '@redis/client': ^5.9.0
-
- '@redis/client@5.9.0':
- resolution: {integrity: sha512-EI0Ti5pojD2p7TmcS7RRa+AJVahdQvP/urpcSbK/K9Rlk6+dwMJTQ354pCNGCwfke8x4yKr5+iH85wcERSkwLQ==}
- engines: {node: '>= 18'}
-
- '@redis/json@5.9.0':
- resolution: {integrity: sha512-Bm2jjLYaXdUWPb9RaEywxnjmzw7dWKDZI4MS79mTWPV16R982jVWBj6lY2ZGelJbwxHtEVg4/FSVgYDkuO/MxA==}
- engines: {node: '>= 18'}
- peerDependencies:
- '@redis/client': ^5.9.0
-
- '@redis/search@5.9.0':
- resolution: {integrity: sha512-jdk2csmJ29DlpvCIb2ySjix2co14/0iwIT3C0I+7ZaToXgPbgBMB+zfEilSuncI2F9JcVxHki0YtLA0xX3VdpA==}
- engines: {node: '>= 18'}
- peerDependencies:
- '@redis/client': ^5.9.0
-
- '@redis/time-series@5.9.0':
- resolution: {integrity: sha512-W6ILxcyOqhnI7ELKjJXOktIg3w4+aBHugDbVpgVLPZ+YDjObis1M0v7ZzwlpXhlpwsfePfipeSK+KWNuymk52w==}
- engines: {node: '>= 18'}
- peerDependencies:
- '@redis/client': ^5.9.0
-
- '@rollup/rollup-android-arm-eabi@4.52.5':
- resolution: {integrity: sha512-8c1vW4ocv3UOMp9K+gToY5zL2XiiVw3k7f1ksf4yO1FlDFQ1C2u72iACFnSOceJFsWskc2WZNqeRhFRPzv+wtQ==}
- cpu: [arm]
- os: [android]
-
- '@rollup/rollup-android-arm64@4.52.5':
- resolution: {integrity: sha512-mQGfsIEFcu21mvqkEKKu2dYmtuSZOBMmAl5CFlPGLY94Vlcm+zWApK7F/eocsNzp8tKmbeBP8yXyAbx0XHsFNA==}
- cpu: [arm64]
- os: [android]
-
- '@rollup/rollup-darwin-arm64@4.52.5':
- resolution: {integrity: sha512-takF3CR71mCAGA+v794QUZ0b6ZSrgJkArC+gUiG6LB6TQty9T0Mqh3m2ImRBOxS2IeYBo4lKWIieSvnEk2OQWA==}
- cpu: [arm64]
- os: [darwin]
-
- '@rollup/rollup-darwin-x64@4.52.5':
- resolution: {integrity: sha512-W901Pla8Ya95WpxDn//VF9K9u2JbocwV/v75TE0YIHNTbhqUTv9w4VuQ9MaWlNOkkEfFwkdNhXgcLqPSmHy0fA==}
- cpu: [x64]
- os: [darwin]
-
- '@rollup/rollup-freebsd-arm64@4.52.5':
- resolution: {integrity: sha512-QofO7i7JycsYOWxe0GFqhLmF6l1TqBswJMvICnRUjqCx8b47MTo46W8AoeQwiokAx3zVryVnxtBMcGcnX12LvA==}
- cpu: [arm64]
- os: [freebsd]
-
- '@rollup/rollup-freebsd-x64@4.52.5':
- resolution: {integrity: sha512-jr21b/99ew8ujZubPo9skbrItHEIE50WdV86cdSoRkKtmWa+DDr6fu2c/xyRT0F/WazZpam6kk7IHBerSL7LDQ==}
- cpu: [x64]
- os: [freebsd]
-
- '@rollup/rollup-linux-arm-gnueabihf@4.52.5':
- resolution: {integrity: sha512-PsNAbcyv9CcecAUagQefwX8fQn9LQ4nZkpDboBOttmyffnInRy8R8dSg6hxxl2Re5QhHBf6FYIDhIj5v982ATQ==}
- cpu: [arm]
- os: [linux]
-
- '@rollup/rollup-linux-arm-musleabihf@4.52.5':
- resolution: {integrity: sha512-Fw4tysRutyQc/wwkmcyoqFtJhh0u31K+Q6jYjeicsGJJ7bbEq8LwPWV/w0cnzOqR2m694/Af6hpFayLJZkG2VQ==}
- cpu: [arm]
- os: [linux]
-
- '@rollup/rollup-linux-arm64-gnu@4.52.5':
- resolution: {integrity: sha512-a+3wVnAYdQClOTlyapKmyI6BLPAFYs0JM8HRpgYZQO02rMR09ZcV9LbQB+NL6sljzG38869YqThrRnfPMCDtZg==}
- cpu: [arm64]
- os: [linux]
-
- '@rollup/rollup-linux-arm64-musl@4.52.5':
- resolution: {integrity: sha512-AvttBOMwO9Pcuuf7m9PkC1PUIKsfaAJ4AYhy944qeTJgQOqJYJ9oVl2nYgY7Rk0mkbsuOpCAYSs6wLYB2Xiw0Q==}
- cpu: [arm64]
- os: [linux]
-
- '@rollup/rollup-linux-loong64-gnu@4.52.5':
- resolution: {integrity: sha512-DkDk8pmXQV2wVrF6oq5tONK6UHLz/XcEVow4JTTerdeV1uqPeHxwcg7aFsfnSm9L+OO8WJsWotKM2JJPMWrQtA==}
- cpu: [loong64]
- os: [linux]
-
- '@rollup/rollup-linux-ppc64-gnu@4.52.5':
- resolution: {integrity: sha512-W/b9ZN/U9+hPQVvlGwjzi+Wy4xdoH2I8EjaCkMvzpI7wJUs8sWJ03Rq96jRnHkSrcHTpQe8h5Tg3ZzUPGauvAw==}
- cpu: [ppc64]
- os: [linux]
-
- '@rollup/rollup-linux-riscv64-gnu@4.52.5':
- resolution: {integrity: sha512-sjQLr9BW7R/ZiXnQiWPkErNfLMkkWIoCz7YMn27HldKsADEKa5WYdobaa1hmN6slu9oWQbB6/jFpJ+P2IkVrmw==}
- cpu: [riscv64]
- os: [linux]
-
- '@rollup/rollup-linux-riscv64-musl@4.52.5':
- resolution: {integrity: sha512-hq3jU/kGyjXWTvAh2awn8oHroCbrPm8JqM7RUpKjalIRWWXE01CQOf/tUNWNHjmbMHg/hmNCwc/Pz3k1T/j/Lg==}
- cpu: [riscv64]
- os: [linux]
-
- '@rollup/rollup-linux-s390x-gnu@4.52.5':
- resolution: {integrity: sha512-gn8kHOrku8D4NGHMK1Y7NA7INQTRdVOntt1OCYypZPRt6skGbddska44K8iocdpxHTMMNui5oH4elPH4QOLrFQ==}
- cpu: [s390x]
- os: [linux]
-
- '@rollup/rollup-linux-x64-gnu@4.52.5':
- resolution: {integrity: sha512-hXGLYpdhiNElzN770+H2nlx+jRog8TyynpTVzdlc6bndktjKWyZyiCsuDAlpd+j+W+WNqfcyAWz9HxxIGfZm1Q==}
- cpu: [x64]
- os: [linux]
-
- '@rollup/rollup-linux-x64-musl@4.52.5':
- resolution: {integrity: sha512-arCGIcuNKjBoKAXD+y7XomR9gY6Mw7HnFBv5Rw7wQRvwYLR7gBAgV7Mb2QTyjXfTveBNFAtPt46/36vV9STLNg==}
- cpu: [x64]
- os: [linux]
-
- '@rollup/rollup-openharmony-arm64@4.52.5':
- resolution: {integrity: sha512-QoFqB6+/9Rly/RiPjaomPLmR/13cgkIGfA40LHly9zcH1S0bN2HVFYk3a1eAyHQyjs3ZJYlXvIGtcCs5tko9Cw==}
- cpu: [arm64]
- os: [openharmony]
-
- '@rollup/rollup-win32-arm64-msvc@4.52.5':
- resolution: {integrity: sha512-w0cDWVR6MlTstla1cIfOGyl8+qb93FlAVutcor14Gf5Md5ap5ySfQ7R9S/NjNaMLSFdUnKGEasmVnu3lCMqB7w==}
- cpu: [arm64]
- os: [win32]
-
- '@rollup/rollup-win32-ia32-msvc@4.52.5':
- resolution: {integrity: sha512-Aufdpzp7DpOTULJCuvzqcItSGDH73pF3ko/f+ckJhxQyHtp67rHw3HMNxoIdDMUITJESNE6a8uh4Lo4SLouOUg==}
- cpu: [ia32]
- os: [win32]
-
- '@rollup/rollup-win32-x64-gnu@4.52.5':
- resolution: {integrity: sha512-UGBUGPFp1vkj6p8wCRraqNhqwX/4kNQPS57BCFc8wYh0g94iVIW33wJtQAx3G7vrjjNtRaxiMUylM0ktp/TRSQ==}
- cpu: [x64]
- os: [win32]
-
- '@rollup/rollup-win32-x64-msvc@4.52.5':
- resolution: {integrity: sha512-TAcgQh2sSkykPRWLrdyy2AiceMckNf5loITqXxFI5VuQjS5tSuw3WlwdN8qv8vzjLAUTvYaH/mVjSFpbkFbpTg==}
- cpu: [x64]
- os: [win32]
-
- '@shikijs/core@3.14.0':
- resolution: {integrity: sha512-qRSeuP5vlYHCNUIrpEBQFO7vSkR7jn7Kv+5X3FO/zBKVDGQbcnlScD3XhkrHi/R8Ltz0kEjvFR9Szp/XMRbFMw==}
-
- '@shikijs/engine-javascript@3.14.0':
- resolution: {integrity: sha512-3v1kAXI2TsWQuwv86cREH/+FK9Pjw3dorVEykzQDhwrZj0lwsHYlfyARaKmn6vr5Gasf8aeVpb8JkzeWspxOLQ==}
-
- '@shikijs/engine-oniguruma@3.14.0':
- resolution: {integrity: sha512-TNcYTYMbJyy+ZjzWtt0bG5y4YyMIWC2nyePz+CFMWqm+HnZZyy9SWMgo8Z6KBJVIZnx8XUXS8U2afO6Y0g1Oug==}
-
- '@shikijs/langs@3.14.0':
- resolution: {integrity: sha512-DIB2EQY7yPX1/ZH7lMcwrK5pl+ZkP/xoSpUzg9YC8R+evRCCiSQ7yyrvEyBsMnfZq4eBzLzBlugMyTAf13+pzg==}
-
- '@shikijs/themes@3.14.0':
- resolution: {integrity: sha512-fAo/OnfWckNmv4uBoUu6dSlkcBc+SA1xzj5oUSaz5z3KqHtEbUypg/9xxgJARtM6+7RVm0Q6Xnty41xA1ma1IA==}
-
- '@shikijs/types@3.14.0':
- resolution: {integrity: sha512-bQGgC6vrY8U/9ObG1Z/vTro+uclbjjD/uG58RvfxKZVD5p9Yc1ka3tVyEFy7BNJLzxuWyHH5NWynP9zZZS59eQ==}
-
- '@shikijs/vscode-textmate@10.0.2':
- resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==}
-
- '@standard-schema/spec@1.1.0':
- resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==}
-
- '@swc/helpers@0.5.15':
- resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==}
-
- '@tailwindcss/node@4.1.16':
- resolution: {integrity: sha512-BX5iaSsloNuvKNHRN3k2RcCuTEgASTo77mofW0vmeHkfrDWaoFAFvNHpEgtu0eqyypcyiBkDWzSMxJhp3AUVcw==}
-
- '@tailwindcss/oxide-android-arm64@4.1.16':
- resolution: {integrity: sha512-8+ctzkjHgwDJ5caq9IqRSgsP70xhdhJvm+oueS/yhD5ixLhqTw9fSL1OurzMUhBwE5zK26FXLCz2f/RtkISqHA==}
- engines: {node: '>= 10'}
- cpu: [arm64]
- os: [android]
-
- '@tailwindcss/oxide-darwin-arm64@4.1.16':
- resolution: {integrity: sha512-C3oZy5042v2FOALBZtY0JTDnGNdS6w7DxL/odvSny17ORUnaRKhyTse8xYi3yKGyfnTUOdavRCdmc8QqJYwFKA==}
- engines: {node: '>= 10'}
- cpu: [arm64]
- os: [darwin]
-
- '@tailwindcss/oxide-darwin-x64@4.1.16':
- resolution: {integrity: sha512-vjrl/1Ub9+JwU6BP0emgipGjowzYZMjbWCDqwA2Z4vCa+HBSpP4v6U2ddejcHsolsYxwL5r4bPNoamlV0xDdLg==}
- engines: {node: '>= 10'}
- cpu: [x64]
- os: [darwin]
-
- '@tailwindcss/oxide-freebsd-x64@4.1.16':
- resolution: {integrity: sha512-TSMpPYpQLm+aR1wW5rKuUuEruc/oOX3C7H0BTnPDn7W/eMw8W+MRMpiypKMkXZfwH8wqPIRKppuZoedTtNj2tg==}
- engines: {node: '>= 10'}
- cpu: [x64]
- os: [freebsd]
-
- '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.16':
- resolution: {integrity: sha512-p0GGfRg/w0sdsFKBjMYvvKIiKy/LNWLWgV/plR4lUgrsxFAoQBFrXkZ4C0w8IOXfslB9vHK/JGASWD2IefIpvw==}
- engines: {node: '>= 10'}
- cpu: [arm]
- os: [linux]
-
- '@tailwindcss/oxide-linux-arm64-gnu@4.1.16':
- resolution: {integrity: sha512-DoixyMmTNO19rwRPdqviTrG1rYzpxgyYJl8RgQvdAQUzxC1ToLRqtNJpU/ATURSKgIg6uerPw2feW0aS8SNr/w==}
- engines: {node: '>= 10'}
- cpu: [arm64]
- os: [linux]
-
- '@tailwindcss/oxide-linux-arm64-musl@4.1.16':
- resolution: {integrity: sha512-H81UXMa9hJhWhaAUca6bU2wm5RRFpuHImrwXBUvPbYb+3jo32I9VIwpOX6hms0fPmA6f2pGVlybO6qU8pF4fzQ==}
- engines: {node: '>= 10'}
- cpu: [arm64]
- os: [linux]
-
- '@tailwindcss/oxide-linux-x64-gnu@4.1.16':
- resolution: {integrity: sha512-ZGHQxDtFC2/ruo7t99Qo2TTIvOERULPl5l0K1g0oK6b5PGqjYMga+FcY1wIUnrUxY56h28FxybtDEla+ICOyew==}
- engines: {node: '>= 10'}
- cpu: [x64]
- os: [linux]
-
- '@tailwindcss/oxide-linux-x64-musl@4.1.16':
- resolution: {integrity: sha512-Oi1tAaa0rcKf1Og9MzKeINZzMLPbhxvm7rno5/zuP1WYmpiG0bEHq4AcRUiG2165/WUzvxkW4XDYCscZWbTLZw==}
- engines: {node: '>= 10'}
- cpu: [x64]
- os: [linux]
-
- '@tailwindcss/oxide-wasm32-wasi@4.1.16':
- resolution: {integrity: sha512-B01u/b8LteGRwucIBmCQ07FVXLzImWESAIMcUU6nvFt/tYsQ6IHz8DmZ5KtvmwxD+iTYBtM1xwoGXswnlu9v0Q==}
- engines: {node: '>=14.0.0'}
- cpu: [wasm32]
- bundledDependencies:
- - '@napi-rs/wasm-runtime'
- - '@emnapi/core'
- - '@emnapi/runtime'
- - '@tybys/wasm-util'
- - '@emnapi/wasi-threads'
- - tslib
-
- '@tailwindcss/oxide-win32-arm64-msvc@4.1.16':
- resolution: {integrity: sha512-zX+Q8sSkGj6HKRTMJXuPvOcP8XfYON24zJBRPlszcH1Np7xuHXhWn8qfFjIujVzvH3BHU+16jBXwgpl20i+v9A==}
- engines: {node: '>= 10'}
- cpu: [arm64]
- os: [win32]
-
- '@tailwindcss/oxide-win32-x64-msvc@4.1.16':
- resolution: {integrity: sha512-m5dDFJUEejbFqP+UXVstd4W/wnxA4F61q8SoL+mqTypId2T2ZpuxosNSgowiCnLp2+Z+rivdU0AqpfgiD7yCBg==}
- engines: {node: '>= 10'}
- cpu: [x64]
- os: [win32]
-
- '@tailwindcss/oxide@4.1.16':
- resolution: {integrity: sha512-2OSv52FRuhdlgyOQqgtQHuCgXnS8nFSYRp2tJ+4WZXKgTxqPy7SMSls8c3mPT5pkZ17SBToGM5LHEJBO7miEdg==}
- engines: {node: '>= 10'}
-
- '@tailwindcss/postcss@4.1.16':
- resolution: {integrity: sha512-Qn3SFGPXYQMKR/UtqS+dqvPrzEeBZHrFA92maT4zijCVggdsXnDBMsPFJo1eArX3J+O+Gi+8pV4PkqjLCNBk3A==}
-
- '@tailwindcss/typography@0.5.16':
- resolution: {integrity: sha512-0wDLwCVF5V3x3b1SGXPCDcdsbDHMBe+lkFzBRaHeLvNi+nrrnZ1lA18u+OTWO8iSWU2GxUOCvlXtDuqftc1oiA==}
- peerDependencies:
- tailwindcss: '>=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1'
-
- '@trpc/server@11.7.1':
- resolution: {integrity: sha512-N3U8LNLIP4g9C7LJ/sLkjuPHwqlvE3bnspzC4DEFVdvx2+usbn70P80E3wj5cjOTLhmhRiwJCSXhlB+MHfGeCw==}
- peerDependencies:
- typescript: '>=5.7.2'
-
- '@types/chai@5.2.3':
- resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==}
-
- '@types/cookie@0.6.0':
- resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==}
-
- '@types/d3-array@3.2.2':
- resolution: {integrity: sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==}
-
- '@types/d3-axis@3.0.6':
- resolution: {integrity: sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==}
-
- '@types/d3-brush@3.0.6':
- resolution: {integrity: sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==}
-
- '@types/d3-chord@3.0.6':
- resolution: {integrity: sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==}
-
- '@types/d3-color@3.1.3':
- resolution: {integrity: sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==}
-
- '@types/d3-contour@3.0.6':
- resolution: {integrity: sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==}
-
- '@types/d3-delaunay@6.0.4':
- resolution: {integrity: sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==}
-
- '@types/d3-dispatch@3.0.7':
- resolution: {integrity: sha512-5o9OIAdKkhN1QItV2oqaE5KMIiXAvDWBDPrD85e58Qlz1c1kI/J0NcqbEG88CoTwJrYe7ntUCVfeUl2UJKbWgA==}
-
- '@types/d3-drag@3.0.7':
- resolution: {integrity: sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==}
-
- '@types/d3-dsv@3.0.7':
- resolution: {integrity: sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==}
-
- '@types/d3-ease@3.0.2':
- resolution: {integrity: sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==}
-
- '@types/d3-fetch@3.0.7':
- resolution: {integrity: sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==}
-
- '@types/d3-force@3.0.10':
- resolution: {integrity: sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==}
-
- '@types/d3-format@3.0.4':
- resolution: {integrity: sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==}
-
- '@types/d3-geo@3.1.0':
- resolution: {integrity: sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==}
-
- '@types/d3-hierarchy@3.1.7':
- resolution: {integrity: sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==}
-
- '@types/d3-interpolate@3.0.4':
- resolution: {integrity: sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==}
-
- '@types/d3-path@3.1.1':
- resolution: {integrity: sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==}
-
- '@types/d3-polygon@3.0.2':
- resolution: {integrity: sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==}
-
- '@types/d3-quadtree@3.0.6':
- resolution: {integrity: sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==}
-
- '@types/d3-random@3.0.3':
- resolution: {integrity: sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==}
-
- '@types/d3-scale-chromatic@3.1.0':
- resolution: {integrity: sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==}
-
- '@types/d3-scale@4.0.9':
- resolution: {integrity: sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==}
-
- '@types/d3-selection@3.0.11':
- resolution: {integrity: sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==}
-
- '@types/d3-shape@3.1.7':
- resolution: {integrity: sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg==}
-
- '@types/d3-time-format@4.0.3':
- resolution: {integrity: sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==}
-
- '@types/d3-time@3.0.4':
- resolution: {integrity: sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==}
-
- '@types/d3-timer@3.0.2':
- resolution: {integrity: sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==}
-
- '@types/d3-transition@3.0.9':
- resolution: {integrity: sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==}
-
- '@types/d3-zoom@3.0.8':
- resolution: {integrity: sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==}
-
- '@types/d3@7.4.3':
- resolution: {integrity: sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==}
-
- '@types/debug@4.1.12':
- resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==}
-
- '@types/deep-eql@4.0.2':
- resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==}
-
- '@types/estree-jsx@1.0.5':
- resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==}
-
- '@types/estree@1.0.6':
- resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==}
-
- '@types/estree@1.0.8':
- resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
-
- '@types/geojson@7946.0.16':
- resolution: {integrity: sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==}
-
- '@types/hast@2.3.10':
- resolution: {integrity: sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==}
-
- '@types/hast@3.0.4':
- resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==}
-
- '@types/katex@0.16.7':
- resolution: {integrity: sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==}
-
- '@types/linkify-it@5.0.0':
- resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==}
-
- '@types/markdown-it@14.1.2':
- resolution: {integrity: sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==}
-
- '@types/mdast@4.0.4':
- resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==}
-
- '@types/mdurl@2.0.0':
- resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==}
-
- '@types/ms@2.1.0':
- resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==}
-
- '@types/node@22.13.10':
- resolution: {integrity: sha512-I6LPUvlRH+O6VRUqYOcMudhaIdUVWfsjnZavnsraHvpBwaEyMN29ry+0UVJhImYL16xsscu0aske3yA+uPOWfw==}
-
- '@types/omelette@0.4.5':
- resolution: {integrity: sha512-zUCJpVRwfMcZfkxSCGp73mgd3/xesvPz5tQJIORlfP/zkYEyp9KUfF7IP3RRjyZR3DwxkPs96/IFf70GmYZYHQ==}
-
- '@types/papaparse@5.3.15':
- resolution: {integrity: sha512-JHe6vF6x/8Z85nCX4yFdDslN11d+1pr12E526X8WAfhadOeaOTx5AuIkvDKIBopfvlzpzkdMx4YyvSKCM9oqtw==}
-
- '@types/pdf-parse@1.1.4':
- resolution: {integrity: sha512-+gbBHbNCVGGYw1S9lAIIvrHW47UYOhMIFUsJcMkMrzy1Jf0vulBN3XQIjPgnoOXveMuHnF3b57fXROnY/Or7eg==}
-
- '@types/pg@8.11.6':
- resolution: {integrity: sha512-/2WmmBXHLsfRqzfHW7BNZ8SbYzE8OSk7i3WjFYvfgRHj7S1xj+16Je5fUKv3lVdVzk/zn9TXOqf+avFCFIE0yQ==}
-
- '@types/prop-types@15.7.14':
- resolution: {integrity: sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==}
-
- '@types/react-dom@18.3.5':
- resolution: {integrity: sha512-P4t6saawp+b/dFrUr2cvkVsfvPguwsxtH6dNIYRllMsefqFzkZk5UIjzyDOv5g1dXIPdG4Sp1yCR4Z6RCUsG/Q==}
- peerDependencies:
- '@types/react': ^18.0.0
-
- '@types/react-syntax-highlighter@15.5.13':
- resolution: {integrity: sha512-uLGJ87j6Sz8UaBAooU0T6lWJ0dBmjZgN1PZTrj05TNql2/XpC6+4HhMT5syIdFUUt+FASfCeLLv4kBygNU+8qA==}
-
- '@types/react@18.3.18':
- resolution: {integrity: sha512-t4yC+vtgnkYjNSKlFx1jkAhH8LgTo2N/7Qvi83kdEaUtMDiwpbLAktKDaAMlRcJ5eSxZkH74eEGt1ky31d7kfQ==}
-
- '@types/shimmer@1.2.0':
- resolution: {integrity: sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg==}
-
- '@types/trusted-types@2.0.7':
- resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==}
-
- '@types/unist@2.0.11':
- resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==}
-
- '@types/unist@3.0.3':
- resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==}
-
- '@ungap/structured-clone@1.3.0':
- resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==}
-
- '@vercel/analytics@1.5.0':
- resolution: {integrity: sha512-MYsBzfPki4gthY5HnYN7jgInhAZ7Ac1cYDoRWFomwGHWEX7odTEzbtg9kf/QSo7XEsEAqlQugA6gJ2WS2DEa3g==}
- peerDependencies:
- '@remix-run/react': ^2
- '@sveltejs/kit': ^1 || ^2
- next: '>= 13'
- react: ^18 || ^19 || ^19.0.0-rc
- svelte: '>= 4'
- vue: ^3
- vue-router: ^4
- peerDependenciesMeta:
- '@remix-run/react':
- optional: true
- '@sveltejs/kit':
- optional: true
- next:
- optional: true
- react:
- optional: true
- svelte:
- optional: true
- vue:
- optional: true
- vue-router:
- optional: true
-
- '@vercel/blob@0.24.1':
- resolution: {integrity: sha512-wHzgKzvAuF4tRDoXk3wGBYzQZ9z2fLr4oftiR1hOclPEdA1aj2/0mizvO2l5w91eZlTAaFth0S1DlqrrXqpntg==}
- engines: {node: '>=16.14'}
-
- '@vercel/functions@2.2.13':
- resolution: {integrity: sha512-14ArBSIIcOBx9nrEgaJb4Bw+en1gl6eSoJWh8qjifLl5G3E4dRXCFOT8HP+w66vb9Wqyd1lAQBrmRhRwOj9X9A==}
- engines: {node: '>= 18'}
- peerDependencies:
- '@aws-sdk/credential-provider-web-identity': '*'
- peerDependenciesMeta:
- '@aws-sdk/credential-provider-web-identity':
- optional: true
-
- '@vercel/oidc@2.0.2':
- resolution: {integrity: sha512-59PBFx3T+k5hLTEWa3ggiMpGRz1OVvl9eN8SUai+A43IsqiOuAe7qPBf+cray/Fj6mkgnxm/D7IAtjc8zSHi7g==}
- engines: {node: '>= 18'}
-
- '@vercel/oidc@3.0.5':
- resolution: {integrity: sha512-fnYhv671l+eTTp48gB4zEsTW/YtRgRPnkI2nT7x6qw5rkI1Lq2hTmQIpHPgyThI0znLK+vX2n9XxKdXZ7BUbbw==}
- engines: {node: '>= 20'}
-
- '@vercel/otel@1.14.0':
- resolution: {integrity: sha512-4FXrYvjmHh3ia2v/TN/iiz0oVIw1xSnkW/MzRtsUGpu4jlcfu1qXJIfugQ1iAZnRolyTKn8FxhoWA6EhiAIZBg==}
- engines: {node: '>=18'}
- peerDependencies:
- '@opentelemetry/api': '>=1.7.0 <2.0.0'
- '@opentelemetry/api-logs': '>=0.46.0 <0.200.0'
- '@opentelemetry/instrumentation': '>=0.46.0 <0.200.0'
- '@opentelemetry/resources': '>=1.19.0 <2.0.0'
- '@opentelemetry/sdk-logs': '>=0.46.0 <0.200.0'
- '@opentelemetry/sdk-metrics': '>=1.19.0 <2.0.0'
- '@opentelemetry/sdk-trace-base': '>=1.19.0 <2.0.0'
-
- '@vercel/postgres@0.10.0':
- resolution: {integrity: sha512-fSD23DxGND40IzSkXjcFcxr53t3Tiym59Is0jSYIFpG4/0f0KO9SGtcp1sXiebvPaGe7N/tU05cH4yt2S6/IPg==}
- engines: {node: '>=18.14'}
-
- '@vitest/expect@3.2.4':
- resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==}
-
- '@vitest/mocker@3.2.4':
- resolution: {integrity: sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==}
- peerDependencies:
- msw: ^2.4.9
- vite: ^5.0.0 || ^6.0.0 || ^7.0.0-0
- peerDependenciesMeta:
- msw:
- optional: true
- vite:
- optional: true
-
- '@vitest/pretty-format@3.2.4':
- resolution: {integrity: sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==}
-
- '@vitest/runner@3.2.4':
- resolution: {integrity: sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==}
-
- '@vitest/snapshot@3.2.4':
- resolution: {integrity: sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==}
-
- '@vitest/spy@3.2.4':
- resolution: {integrity: sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==}
-
- '@vitest/utils@3.2.4':
- resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==}
-
- '@xyflow/react@12.10.0':
- resolution: {integrity: sha512-eOtz3whDMWrB4KWVatIBrKuxECHqip6PfA8fTpaS2RUGVpiEAe+nqDKsLqkViVWxDGreq0lWX71Xth/SPAzXiw==}
- peerDependencies:
- react: '>=17'
- react-dom: '>=17'
-
- '@xyflow/system@0.0.74':
- resolution: {integrity: sha512-7v7B/PkiVrkdZzSbL+inGAo6tkR/WQHHG0/jhSvLQToCsfa8YubOGmBYd1s08tpKpihdHDZFwzQZeR69QSBb4Q==}
-
- acorn-import-attributes@1.9.5:
- resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==}
- peerDependencies:
- acorn: ^8
-
- acorn@8.15.0:
- resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==}
- engines: {node: '>=0.4.0'}
- hasBin: true
-
- ai@6.0.0-beta.159:
- resolution: {integrity: sha512-iwyz0iycu0Tu1of9GLGwiXvNgW6dB+hnFE0dzWubTQFKz0C8nB8gjMwRTiNhNXO6HuN9+uokg9DO7HYM2CRExw==}
- engines: {node: '>=18'}
- peerDependencies:
- zod: ^3.25.76 || ^4.1.8
-
- argparse@2.0.1:
- resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
-
- aria-hidden@1.2.4:
- resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==}
- engines: {node: '>=10'}
-
- assertion-error@2.0.1:
- resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==}
- engines: {node: '>=12'}
-
- async-retry@1.3.3:
- resolution: {integrity: sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==}
-
- bail@2.0.2:
- resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==}
-
- bcrypt-ts@5.0.3:
- resolution: {integrity: sha512-2FcgD12xPbwCoe5i9/HK0jJ1xA1m+QfC1e6htG9Bl/hNOnLyaFmQSlqLKcfe3QdnoMPKpKEGFCbESBTg+SJNOw==}
- engines: {node: '>=18'}
-
- buffer-from@1.1.2:
- resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
-
- bufferutil@4.0.9:
- resolution: {integrity: sha512-WDtdLmJvAuNNPzByAYpRo2rF1Mmradw6gvWsQKf63476DDXmomT9zUiGypLcG4ibIM67vhAj8jJRdbmEws2Aqw==}
- engines: {node: '>=6.14.2'}
-
- bytes@3.1.2:
- resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==}
- engines: {node: '>= 0.8'}
-
- cac@6.7.14:
- resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
- engines: {node: '>=8'}
-
- caniuse-lite@1.0.30001704:
- resolution: {integrity: sha512-+L2IgBbV6gXB4ETf0keSvLr7JUrRVbIaB/lrQ1+z8mRcQiisG5k+lG6O4n6Y5q6f5EuNfaYXKgymucphlEXQew==}
-
- ccount@2.0.1:
- resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
-
- chai@5.3.3:
- resolution: {integrity: sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==}
- engines: {node: '>=18'}
-
- character-entities-html4@2.1.0:
- resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==}
-
- character-entities-legacy@1.1.4:
- resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==}
-
- character-entities-legacy@3.0.0:
- resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==}
-
- character-entities@1.2.4:
- resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==}
-
- character-entities@2.0.2:
- resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==}
-
- character-reference-invalid@1.1.4:
- resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==}
-
- character-reference-invalid@2.0.1:
- resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==}
-
- check-error@2.1.1:
- resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==}
- engines: {node: '>= 16'}
-
- chevrotain-allstar@0.3.1:
- resolution: {integrity: sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==}
- peerDependencies:
- chevrotain: ^11.0.0
-
- chevrotain@11.0.3:
- resolution: {integrity: sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw==}
-
- citty@0.1.6:
- resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==}
-
- cjs-module-lexer@1.4.3:
- resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==}
-
- class-variance-authority@0.7.1:
- resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==}
-
- classcat@5.0.5:
- resolution: {integrity: sha512-JhZUT7JFcQy/EzW605k/ktHtncoo9vnyW/2GspNYwFlN1C/WmjuV/xtS04e9SOkL2sTdw0VAZ2UGCcQ9lR6p6w==}
-
- classnames@2.5.1:
- resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==}
-
- client-only@0.0.1:
- resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==}
-
- clsx@2.1.1:
- resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==}
- engines: {node: '>=6'}
-
- cluster-key-slot@1.1.2:
- resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==}
- engines: {node: '>=0.10.0'}
-
- cmdk@1.1.1:
- resolution: {integrity: sha512-Vsv7kFaXm+ptHDMZ7izaRsP70GgrW9NBNGswt9OZaVBLlE0SNpDq8eu/VGXyF9r7M0azK3Wy7OlYXsuyYLFzHg==}
- peerDependencies:
- react: ^18 || ^19 || ^19.0.0-rc
- react-dom: ^18 || ^19 || ^19.0.0-rc
-
- codemirror@6.0.1:
- resolution: {integrity: sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==}
-
- comma-separated-tokens@1.0.8:
- resolution: {integrity: sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==}
-
- comma-separated-tokens@2.0.3:
- resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==}
-
- commander@14.0.2:
- resolution: {integrity: sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==}
- engines: {node: '>=20'}
-
- commander@7.2.0:
- resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==}
- engines: {node: '>= 10'}
-
- commander@8.3.0:
- resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==}
- engines: {node: '>= 12'}
-
- confbox@0.1.8:
- resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==}
-
- confbox@0.2.2:
- resolution: {integrity: sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==}
-
- consola@3.4.2:
- resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==}
- engines: {node: ^14.18.0 || >=16.10.0}
-
- cookie@0.7.1:
- resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==}
- engines: {node: '>= 0.6'}
-
- cose-base@1.0.3:
- resolution: {integrity: sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==}
-
- cose-base@2.2.0:
- resolution: {integrity: sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==}
-
- crelt@1.0.6:
- resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==}
-
- cssesc@3.0.0:
- resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
- engines: {node: '>=4'}
- hasBin: true
-
- csstype@3.1.3:
- resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
-
- cytoscape-cose-bilkent@4.1.0:
- resolution: {integrity: sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==}
- peerDependencies:
- cytoscape: ^3.2.0
-
- cytoscape-fcose@2.2.0:
- resolution: {integrity: sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==}
- peerDependencies:
- cytoscape: ^3.2.0
-
- cytoscape@3.33.1:
- resolution: {integrity: sha512-iJc4TwyANnOGR1OmWhsS9ayRS3s+XQ185FmuHObThD+5AeJCakAAbWv8KimMTt08xCCLNgneQwFp+JRJOr9qGQ==}
- engines: {node: '>=0.10'}
-
- d3-array@2.12.1:
- resolution: {integrity: sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==}
-
- d3-array@3.2.4:
- resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==}
- engines: {node: '>=12'}
-
- d3-axis@3.0.0:
- resolution: {integrity: sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==}
- engines: {node: '>=12'}
-
- d3-brush@3.0.0:
- resolution: {integrity: sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==}
- engines: {node: '>=12'}
-
- d3-chord@3.0.1:
- resolution: {integrity: sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==}
- engines: {node: '>=12'}
-
- d3-color@3.1.0:
- resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==}
- engines: {node: '>=12'}
-
- d3-contour@4.0.2:
- resolution: {integrity: sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==}
- engines: {node: '>=12'}
-
- d3-delaunay@6.0.4:
- resolution: {integrity: sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==}
- engines: {node: '>=12'}
-
- d3-dispatch@3.0.1:
- resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==}
- engines: {node: '>=12'}
-
- d3-drag@3.0.0:
- resolution: {integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==}
- engines: {node: '>=12'}
-
- d3-dsv@3.0.1:
- resolution: {integrity: sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==}
- engines: {node: '>=12'}
- hasBin: true
-
- d3-ease@3.0.1:
- resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==}
- engines: {node: '>=12'}
-
- d3-fetch@3.0.1:
- resolution: {integrity: sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==}
- engines: {node: '>=12'}
-
- d3-force@3.0.0:
- resolution: {integrity: sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==}
- engines: {node: '>=12'}
-
- d3-format@3.1.0:
- resolution: {integrity: sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==}
- engines: {node: '>=12'}
-
- d3-geo@3.1.1:
- resolution: {integrity: sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==}
- engines: {node: '>=12'}
-
- d3-hierarchy@3.1.2:
- resolution: {integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==}
- engines: {node: '>=12'}
-
- d3-interpolate@3.0.1:
- resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==}
- engines: {node: '>=12'}
-
- d3-path@1.0.9:
- resolution: {integrity: sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==}
-
- d3-path@3.1.0:
- resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==}
- engines: {node: '>=12'}
-
- d3-polygon@3.0.1:
- resolution: {integrity: sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==}
- engines: {node: '>=12'}
-
- d3-quadtree@3.0.1:
- resolution: {integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==}
- engines: {node: '>=12'}
-
- d3-random@3.0.1:
- resolution: {integrity: sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==}
- engines: {node: '>=12'}
-
- d3-sankey@0.12.3:
- resolution: {integrity: sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==}
-
- d3-scale-chromatic@3.1.0:
- resolution: {integrity: sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==}
- engines: {node: '>=12'}
-
- d3-scale@4.0.2:
- resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==}
- engines: {node: '>=12'}
-
- d3-selection@3.0.0:
- resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==}
- engines: {node: '>=12'}
-
- d3-shape@1.3.7:
- resolution: {integrity: sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==}
-
- d3-shape@3.2.0:
- resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==}
- engines: {node: '>=12'}
-
- d3-time-format@4.1.0:
- resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==}
- engines: {node: '>=12'}
-
- d3-time@3.1.0:
- resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==}
- engines: {node: '>=12'}
-
- d3-timer@3.0.1:
- resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==}
- engines: {node: '>=12'}
-
- d3-transition@3.0.1:
- resolution: {integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==}
- engines: {node: '>=12'}
- peerDependencies:
- d3-selection: 2 - 3
-
- d3-zoom@3.0.0:
- resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==}
- engines: {node: '>=12'}
-
- d3@7.9.0:
- resolution: {integrity: sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==}
- engines: {node: '>=12'}
-
- dagre-d3-es@7.0.13:
- resolution: {integrity: sha512-efEhnxpSuwpYOKRm/L5KbqoZmNNukHa/Flty4Wp62JRvgH2ojwVgPgdYyr4twpieZnyRDdIH7PY2mopX26+j2Q==}
-
- date-fns@4.1.0:
- resolution: {integrity: sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==}
-
- dayjs@1.11.19:
- resolution: {integrity: sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==}
-
- debug@4.4.0:
- resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==}
- engines: {node: '>=6.0'}
- peerDependencies:
- supports-color: '*'
- peerDependenciesMeta:
- supports-color:
- optional: true
-
- debug@4.4.3:
- resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==}
- engines: {node: '>=6.0'}
- peerDependencies:
- supports-color: '*'
- peerDependenciesMeta:
- supports-color:
- optional: true
-
- decode-named-character-reference@1.1.0:
- resolution: {integrity: sha512-Wy+JTSbFThEOXQIR2L6mxJvEs+veIzpmqD7ynWxMXGpnk3smkHQOp6forLdHsKpAMW9iJpaBBIxz285t1n1C3w==}
-
- deep-eql@5.0.2:
- resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==}
- engines: {node: '>=6'}
-
- deepmerge@4.3.1:
- resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
- engines: {node: '>=0.10.0'}
-
- delaunator@5.0.1:
- resolution: {integrity: sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==}
-
- dequal@2.0.3:
- resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
- engines: {node: '>=6'}
-
- detect-libc@2.1.2:
- resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==}
- engines: {node: '>=8'}
-
- detect-node-es@1.1.0:
- resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==}
-
- devlop@1.1.0:
- resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==}
-
- diff-match-patch@1.0.5:
- resolution: {integrity: sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==}
-
- dompurify@3.3.0:
- resolution: {integrity: sha512-r+f6MYR1gGN1eJv0TVQbhA7if/U7P87cdPl3HN5rikqaBSBxLiCb/b9O+2eG0cxz0ghyU+mU1QkbsOwERMYlWQ==}
-
- dotenv@16.4.7:
- resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==}
- engines: {node: '>=12'}
-
- drizzle-kit@0.25.0:
- resolution: {integrity: sha512-Rcf0nYCAKizwjWQCY+d3zytyuTbDb81NcaPor+8NebESlUz1+9W3uGl0+r9FhU4Qal5Zv9j/7neXCSCe7DHzjA==}
- hasBin: true
-
- drizzle-orm@0.34.1:
- resolution: {integrity: sha512-t+zCwyWWt8xTqtYV4doE/xYmT7hpv1L8pQ66zddEz+3VWyedBBtctjMAp22mAJPfyWurRQXUJ1nrTtqLq+DqNA==}
- peerDependencies:
- '@aws-sdk/client-rds-data': '>=3'
- '@cloudflare/workers-types': '>=3'
- '@electric-sql/pglite': '>=0.1.1'
- '@libsql/client': '>=0.10.0'
- '@neondatabase/serverless': '>=0.1'
- '@op-engineering/op-sqlite': '>=2'
- '@opentelemetry/api': ^1.4.1
- '@planetscale/database': '>=1'
- '@prisma/client': '*'
- '@tidbcloud/serverless': '*'
- '@types/better-sqlite3': '*'
- '@types/pg': '*'
- '@types/react': '>=18'
- '@types/sql.js': '*'
- '@vercel/postgres': '>=0.8.0'
- '@xata.io/client': '*'
- better-sqlite3: '>=7'
- bun-types: '*'
- expo-sqlite: '>=13.2.0'
- knex: '*'
- kysely: '*'
- mysql2: '>=2'
- pg: '>=8'
- postgres: '>=3'
- prisma: '*'
- react: '>=18'
- sql.js: '>=1'
- sqlite3: '>=5'
- peerDependenciesMeta:
- '@aws-sdk/client-rds-data':
- optional: true
- '@cloudflare/workers-types':
- optional: true
- '@electric-sql/pglite':
- optional: true
- '@libsql/client':
- optional: true
- '@neondatabase/serverless':
- optional: true
- '@op-engineering/op-sqlite':
- optional: true
- '@opentelemetry/api':
- optional: true
- '@planetscale/database':
- optional: true
- '@prisma/client':
- optional: true
- '@tidbcloud/serverless':
- optional: true
- '@types/better-sqlite3':
- optional: true
- '@types/pg':
- optional: true
- '@types/react':
- optional: true
- '@types/sql.js':
- optional: true
- '@vercel/postgres':
- optional: true
- '@xata.io/client':
- optional: true
- better-sqlite3:
- optional: true
- bun-types:
- optional: true
- expo-sqlite:
- optional: true
- knex:
- optional: true
- kysely:
- optional: true
- mysql2:
- optional: true
- pg:
- optional: true
- postgres:
- optional: true
- prisma:
- optional: true
- react:
- optional: true
- sql.js:
- optional: true
- sqlite3:
- optional: true
-
- embla-carousel-react@8.6.0:
- resolution: {integrity: sha512-0/PjqU7geVmo6F734pmPqpyHqiM99olvyecY7zdweCw+6tKEXnrE90pBiBbMMU8s5tICemzpQ3hi5EpxzGW+JA==}
- peerDependencies:
- react: ^16.8.0 || ^17.0.1 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc
-
- embla-carousel-reactive-utils@8.6.0:
- resolution: {integrity: sha512-fMVUDUEx0/uIEDM0Mz3dHznDhfX+znCCDCeIophYb1QGVM7YThSWX+wz11zlYwWFOr74b4QLGg0hrGPJeG2s4A==}
- peerDependencies:
- embla-carousel: 8.6.0
-
- embla-carousel@8.6.0:
- resolution: {integrity: sha512-SjWyZBHJPbqxHOzckOfo8lHisEaJWmwd23XppYFYVh10bU66/Pn5tkVkbkCMZVdbUE5eTCI2nD8OyIP4Z+uwkA==}
-
- enhanced-resolve@5.18.3:
- resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==}
- engines: {node: '>=10.13.0'}
-
- entities@4.5.0:
- resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
- engines: {node: '>=0.12'}
-
- entities@6.0.1:
- resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==}
- engines: {node: '>=0.12'}
-
- es-module-lexer@1.7.0:
- resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==}
-
- esbuild-register@3.6.0:
- resolution: {integrity: sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==}
- peerDependencies:
- esbuild: '>=0.12 <1'
-
- esbuild@0.18.20:
- resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==}
- engines: {node: '>=12'}
- hasBin: true
-
- esbuild@0.19.12:
- resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==}
- engines: {node: '>=12'}
- hasBin: true
-
- esbuild@0.25.1:
- resolution: {integrity: sha512-BGO5LtrGC7vxnqucAe/rmvKdJllfGaYWdyABvyMoXQlfYMb2bbRuReWR5tEGE//4LcNJj9XrkovTqNYRFZHAMQ==}
- engines: {node: '>=18'}
- hasBin: true
-
- escape-string-regexp@5.0.0:
- resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==}
- engines: {node: '>=12'}
-
- estree-util-is-identifier-name@3.0.0:
- resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==}
-
- estree-walker@3.0.3:
- resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==}
-
- eventsource-parser@3.0.6:
- resolution: {integrity: sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==}
- engines: {node: '>=18.0.0'}
-
- expect-type@1.2.2:
- resolution: {integrity: sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==}
- engines: {node: '>=12.0.0'}
-
- exsolve@1.0.7:
- resolution: {integrity: sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==}
-
- extend@3.0.2:
- resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==}
-
- fast-deep-equal@3.1.3:
- resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
-
- fault@1.0.4:
- resolution: {integrity: sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==}
-
- fdir@6.5.0:
- resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==}
- engines: {node: '>=12.0.0'}
- peerDependencies:
- picomatch: ^3 || ^4
- peerDependenciesMeta:
- picomatch:
- optional: true
-
- format@0.2.2:
- resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==}
- engines: {node: '>=0.4.x'}
-
- framer-motion@11.18.2:
- resolution: {integrity: sha512-5F5Och7wrvtLVElIpclDT0CBzMVg3dL22B64aZwHtsIY8RB4mXICLrkajK4G9R+ieSAGcgrLeae2SeUTg2pr6w==}
- peerDependencies:
- '@emotion/is-prop-valid': '*'
- react: ^18.0.0 || ^19.0.0
- react-dom: ^18.0.0 || ^19.0.0
- peerDependenciesMeta:
- '@emotion/is-prop-valid':
- optional: true
- react:
- optional: true
- react-dom:
- optional: true
-
- framer-motion@12.23.26:
- resolution: {integrity: sha512-cPcIhgR42xBn1Uj+PzOyheMtZ73H927+uWPDVhUMqxy8UHt6Okavb6xIz9J/phFUHUj0OncR6UvMfJTXoc/LKA==}
- peerDependencies:
- '@emotion/is-prop-valid': '*'
- react: ^18.0.0 || ^19.0.0
- react-dom: ^18.0.0 || ^19.0.0
- peerDependenciesMeta:
- '@emotion/is-prop-valid':
- optional: true
- react:
- optional: true
- react-dom:
- optional: true
-
- fsevents@2.3.2:
- resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
- engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
- os: [darwin]
-
- fsevents@2.3.3:
- resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
- engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
- os: [darwin]
-
- function-bind@1.1.2:
- resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
-
- geist@1.3.1:
- resolution: {integrity: sha512-Q4gC1pBVPN+D579pBaz0TRRnGA4p9UK6elDY/xizXdFk/g4EKR5g0I+4p/Kj6gM0SajDBZ/0FvDV9ey9ud7BWw==}
- peerDependencies:
- next: '>=13.2.0'
-
- get-nonce@1.0.1:
- resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==}
- engines: {node: '>=6'}
-
- get-tsconfig@4.10.0:
- resolution: {integrity: sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==}
-
- globals@15.15.0:
- resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==}
- engines: {node: '>=18'}
-
- graceful-fs@4.2.11:
- resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
-
- hachure-fill@0.5.2:
- resolution: {integrity: sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==}
-
- hasown@2.0.2:
- resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
- engines: {node: '>= 0.4'}
-
- hast-util-from-dom@5.0.1:
- resolution: {integrity: sha512-N+LqofjR2zuzTjCPzyDUdSshy4Ma6li7p/c3pA78uTwzFgENbgbUrm2ugwsOdcjI1muO+o6Dgzp9p8WHtn/39Q==}
-
- hast-util-from-html-isomorphic@2.0.0:
- resolution: {integrity: sha512-zJfpXq44yff2hmE0XmwEOzdWin5xwH+QIhMLOScpX91e/NSGPsAzNCvLQDIEPyO2TXi+lBmU6hjLIhV8MwP2kw==}
-
- hast-util-from-html@2.0.3:
- resolution: {integrity: sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==}
-
- hast-util-from-parse5@8.0.3:
- resolution: {integrity: sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==}
-
- hast-util-is-element@3.0.0:
- resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==}
-
- hast-util-parse-selector@2.2.5:
- resolution: {integrity: sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==}
-
- hast-util-parse-selector@4.0.0:
- resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==}
-
- hast-util-raw@9.1.0:
- resolution: {integrity: sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==}
-
- hast-util-to-html@9.0.5:
- resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==}
-
- hast-util-to-jsx-runtime@2.3.6:
- resolution: {integrity: sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==}
-
- hast-util-to-parse5@8.0.0:
- resolution: {integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==}
-
- hast-util-to-text@4.0.2:
- resolution: {integrity: sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==}
-
- hast-util-whitespace@3.0.0:
- resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==}
-
- hastscript@6.0.0:
- resolution: {integrity: sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==}
-
- hastscript@9.0.1:
- resolution: {integrity: sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==}
-
- highlight.js@10.7.3:
- resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==}
-
- highlightjs-vue@1.0.0:
- resolution: {integrity: sha512-PDEfEF102G23vHmPhLyPboFCD+BkMGu+GuJe2d9/eH4FsCwvgBpnc9n0pGE+ffKdph38s6foEZiEjdgHdzp+IA==}
-
- html-url-attributes@3.0.1:
- resolution: {integrity: sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ==}
-
- html-void-elements@3.0.0:
- resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==}
-
- iconv-lite@0.6.3:
- resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
- engines: {node: '>=0.10.0'}
-
- import-in-the-middle@1.15.0:
- resolution: {integrity: sha512-bpQy+CrsRmYmoPMAE/0G33iwRqwW4ouqdRg8jgbH3aKuCtOc8lxgmYXg2dMM92CRiGP660EtBcymH/eVUpCSaA==}
-
- inline-style-parser@0.2.4:
- resolution: {integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==}
-
- internmap@1.0.1:
- resolution: {integrity: sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==}
-
- internmap@2.0.3:
- resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==}
- engines: {node: '>=12'}
-
- is-alphabetical@1.0.4:
- resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==}
-
- is-alphabetical@2.0.1:
- resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==}
-
- is-alphanumerical@1.0.4:
- resolution: {integrity: sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==}
-
- is-alphanumerical@2.0.1:
- resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==}
-
- is-buffer@2.0.5:
- resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==}
- engines: {node: '>=4'}
-
- is-core-module@2.16.1:
- resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==}
- engines: {node: '>= 0.4'}
-
- is-decimal@1.0.4:
- resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==}
-
- is-decimal@2.0.1:
- resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==}
-
- is-hexadecimal@1.0.4:
- resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==}
-
- is-hexadecimal@2.0.1:
- resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==}
-
- is-plain-obj@4.1.0:
- resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==}
- engines: {node: '>=12'}
-
- jiti@2.6.1:
- resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==}
- hasBin: true
-
- jose@5.10.0:
- resolution: {integrity: sha512-s+3Al/p9g32Iq+oqXxkW//7jk2Vig6FF1CFqzVXoTUXt2qz89YWbL+OwS17NFYEvxC35n0FKeGO2LGYSxeM2Gg==}
-
- js-tokens@9.0.1:
- resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==}
-
- json-schema@0.4.0:
- resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==}
-
- jsonc-parser@3.3.1:
- resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==}
-
- katex@0.16.25:
- resolution: {integrity: sha512-woHRUZ/iF23GBP1dkDQMh1QBad9dmr8/PAwNA54VrSOVYgI12MAcE14TqnDdQOdzyEonGzMepYnqBMYdsoAr8Q==}
- hasBin: true
-
- khroma@2.1.0:
- resolution: {integrity: sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==}
-
- kolorist@1.8.0:
- resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==}
-
- langium@3.3.1:
- resolution: {integrity: sha512-QJv/h939gDpvT+9SiLVlY7tZC3xB2qK57v0J04Sh9wpMb6MP1q8gB21L3WIo8T5P1MSMg3Ep14L7KkDCFG3y4w==}
- engines: {node: '>=16.0.0'}
-
- layout-base@1.0.2:
- resolution: {integrity: sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==}
-
- layout-base@2.0.1:
- resolution: {integrity: sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==}
-
- lightningcss-android-arm64@1.30.2:
- resolution: {integrity: sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==}
- engines: {node: '>= 12.0.0'}
- cpu: [arm64]
- os: [android]
-
- lightningcss-darwin-arm64@1.30.2:
- resolution: {integrity: sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==}
- engines: {node: '>= 12.0.0'}
- cpu: [arm64]
- os: [darwin]
-
- lightningcss-darwin-x64@1.30.2:
- resolution: {integrity: sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==}
- engines: {node: '>= 12.0.0'}
- cpu: [x64]
- os: [darwin]
-
- lightningcss-freebsd-x64@1.30.2:
- resolution: {integrity: sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==}
- engines: {node: '>= 12.0.0'}
- cpu: [x64]
- os: [freebsd]
-
- lightningcss-linux-arm-gnueabihf@1.30.2:
- resolution: {integrity: sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==}
- engines: {node: '>= 12.0.0'}
- cpu: [arm]
- os: [linux]
-
- lightningcss-linux-arm64-gnu@1.30.2:
- resolution: {integrity: sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==}
- engines: {node: '>= 12.0.0'}
- cpu: [arm64]
- os: [linux]
-
- lightningcss-linux-arm64-musl@1.30.2:
- resolution: {integrity: sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==}
- engines: {node: '>= 12.0.0'}
- cpu: [arm64]
- os: [linux]
-
- lightningcss-linux-x64-gnu@1.30.2:
- resolution: {integrity: sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==}
- engines: {node: '>= 12.0.0'}
- cpu: [x64]
- os: [linux]
-
- lightningcss-linux-x64-musl@1.30.2:
- resolution: {integrity: sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==}
- engines: {node: '>= 12.0.0'}
- cpu: [x64]
- os: [linux]
-
- lightningcss-win32-arm64-msvc@1.30.2:
- resolution: {integrity: sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==}
- engines: {node: '>= 12.0.0'}
- cpu: [arm64]
- os: [win32]
-
- lightningcss-win32-x64-msvc@1.30.2:
- resolution: {integrity: sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==}
- engines: {node: '>= 12.0.0'}
- cpu: [x64]
- os: [win32]
-
- lightningcss@1.30.2:
- resolution: {integrity: sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==}
- engines: {node: '>= 12.0.0'}
-
- linkify-it@5.0.0:
- resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==}
-
- local-pkg@1.1.2:
- resolution: {integrity: sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==}
- engines: {node: '>=14'}
-
- lodash-es@4.17.21:
- resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==}
-
- lodash.castarray@4.4.0:
- resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==}
-
- lodash.debounce@4.0.8:
- resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==}
-
- lodash.isplainobject@4.0.6:
- resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==}
-
- lodash.merge@4.6.2:
- resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
-
- longest-streak@3.1.0:
- resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==}
-
- loupe@3.2.1:
- resolution: {integrity: sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==}
-
- lowlight@1.20.0:
- resolution: {integrity: sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw==}
-
- lucide-react@0.446.0:
- resolution: {integrity: sha512-BU7gy8MfBMqvEdDPH79VhOXSEgyG8TSPOKWaExWGCQVqnGH7wGgDngPbofu+KdtVjPQBWbEmnfMTq90CTiiDRg==}
- peerDependencies:
- react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc
-
- lucide-react@0.542.0:
- resolution: {integrity: sha512-w3hD8/SQB7+lzU2r4VdFyzzOzKnUjTZIF/MQJGSSvni7Llewni4vuViRppfRAa2guOsY5k4jZyxw/i9DQHv+dw==}
- peerDependencies:
- react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0
-
- magic-string@0.30.21:
- resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==}
-
- markdown-it@14.1.0:
- resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==}
- hasBin: true
-
- markdown-table@3.0.4:
- resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==}
-
- marked@16.4.1:
- resolution: {integrity: sha512-ntROs7RaN3EvWfy3EZi14H4YxmT6A5YvywfhO+0pm+cH/dnSQRmdAmoFIc3B9aiwTehyk7pESH4ofyBY+V5hZg==}
- engines: {node: '>= 20'}
- hasBin: true
-
- mdast-util-find-and-replace@3.0.2:
- resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==}
-
- mdast-util-from-markdown@2.0.2:
- resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==}
-
- mdast-util-gfm-autolink-literal@2.0.1:
- resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==}
-
- mdast-util-gfm-footnote@2.1.0:
- resolution: {integrity: sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==}
-
- mdast-util-gfm-strikethrough@2.0.0:
- resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==}
-
- mdast-util-gfm-table@2.0.0:
- resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==}
-
- mdast-util-gfm-task-list-item@2.0.0:
- resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==}
-
- mdast-util-gfm@3.1.0:
- resolution: {integrity: sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==}
-
- mdast-util-math@3.0.0:
- resolution: {integrity: sha512-Tl9GBNeG/AhJnQM221bJR2HPvLOSnLE/T9cJI9tlc6zwQk2nPk/4f0cHkOdEixQPC/j8UtKDdITswvLAy1OZ1w==}
-
- mdast-util-mdx-expression@2.0.1:
- resolution: {integrity: sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==}
-
- mdast-util-mdx-jsx@3.2.0:
- resolution: {integrity: sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==}
-
- mdast-util-mdxjs-esm@2.0.1:
- resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==}
-
- mdast-util-phrasing@4.1.0:
- resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==}
-
- mdast-util-to-hast@13.2.0:
- resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==}
-
- mdast-util-to-markdown@2.1.2:
- resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==}
-
- mdast-util-to-string@4.0.0:
- resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==}
-
- mdurl@2.0.0:
- resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==}
-
- mermaid@11.12.1:
- resolution: {integrity: sha512-UlIZrRariB11TY1RtTgUWp65tphtBv4CSq7vyS2ZZ2TgoMjs2nloq+wFqxiwcxlhHUvs7DPGgMjs2aeQxz5h9g==}
-
- micromark-core-commonmark@2.0.3:
- resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==}
-
- micromark-extension-gfm-autolink-literal@2.1.0:
- resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==}
-
- micromark-extension-gfm-footnote@2.1.0:
- resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==}
-
- micromark-extension-gfm-strikethrough@2.1.0:
- resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==}
-
- micromark-extension-gfm-table@2.1.1:
- resolution: {integrity: sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==}
-
- micromark-extension-gfm-tagfilter@2.0.0:
- resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==}
-
- micromark-extension-gfm-task-list-item@2.1.0:
- resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==}
-
- micromark-extension-gfm@3.0.0:
- resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==}
-
- micromark-extension-math@3.1.0:
- resolution: {integrity: sha512-lvEqd+fHjATVs+2v/8kg9i5Q0AP2k85H0WUOwpIVvUML8BapsMvh1XAogmQjOCsLpoKRCVQqEkQBB3NhVBcsOg==}
-
- micromark-factory-destination@2.0.1:
- resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==}
-
- micromark-factory-label@2.0.1:
- resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==}
-
- micromark-factory-space@2.0.1:
- resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==}
-
- micromark-factory-title@2.0.1:
- resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==}
-
- micromark-factory-whitespace@2.0.1:
- resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==}
-
- micromark-util-character@2.1.1:
- resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==}
-
- micromark-util-chunked@2.0.1:
- resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==}
-
- micromark-util-classify-character@2.0.1:
- resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==}
-
- micromark-util-combine-extensions@2.0.1:
- resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==}
-
- micromark-util-decode-numeric-character-reference@2.0.2:
- resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==}
-
- micromark-util-decode-string@2.0.1:
- resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==}
-
- micromark-util-encode@2.0.1:
- resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==}
-
- micromark-util-html-tag-name@2.0.1:
- resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==}
-
- micromark-util-normalize-identifier@2.0.1:
- resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==}
-
- micromark-util-resolve-all@2.0.1:
- resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==}
-
- micromark-util-sanitize-uri@2.0.1:
- resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==}
-
- micromark-util-subtokenize@2.1.0:
- resolution: {integrity: sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==}
-
- micromark-util-symbol@2.0.1:
- resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==}
-
- micromark-util-types@2.0.2:
- resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==}
-
- micromark@4.0.2:
- resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==}
-
- mlly@1.8.0:
- resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==}
-
- module-details-from-path@1.0.4:
- resolution: {integrity: sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w==}
-
- motion-dom@11.18.1:
- resolution: {integrity: sha512-g76KvA001z+atjfxczdRtw/RXOM3OMSdd1f4DL77qCTF/+avrRJiawSG4yDibEQ215sr9kpinSlX2pCTJ9zbhw==}
-
- motion-dom@12.23.23:
- resolution: {integrity: sha512-n5yolOs0TQQBRUFImrRfs/+6X4p3Q4n1dUEqt/H58Vx7OW6RF+foWEgmTVDhIWJIMXOuNNL0apKH2S16en9eiA==}
-
- motion-utils@11.18.1:
- resolution: {integrity: sha512-49Kt+HKjtbJKLtgO/LKj9Ld+6vw9BjH5d9sc40R/kVyH8GLAXgT42M2NnuPcJNuA3s9ZfZBUcwIgpmZWGEE+hA==}
-
- motion-utils@12.23.6:
- resolution: {integrity: sha512-eAWoPgr4eFEOFfg2WjIsMoqJTW6Z8MTUCgn/GZ3VRpClWBdnbjryiA3ZSNLyxCTmCQx4RmYX6jX1iWHbenUPNQ==}
-
- motion@12.23.26:
- resolution: {integrity: sha512-Ll8XhVxY8LXMVYTCfme27WH2GjBrCIzY4+ndr5QKxsK+YwCtOi2B/oBi5jcIbik5doXuWT/4KKDOVAZJkeY5VQ==}
- peerDependencies:
- '@emotion/is-prop-valid': '*'
- react: ^18.0.0 || ^19.0.0
- react-dom: ^18.0.0 || ^19.0.0
- peerDependenciesMeta:
- '@emotion/is-prop-valid':
- optional: true
- react:
- optional: true
- react-dom:
- optional: true
-
- ms@2.1.3:
- resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
-
- nanoid@3.3.11:
- resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
- engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
- hasBin: true
-
- nanoid@3.3.9:
- resolution: {integrity: sha512-SppoicMGpZvbF1l3z4x7No3OlIjP7QJvC9XR7AhZr1kL133KHnKPztkKDc+Ir4aJ/1VhTySrtKhrsycmrMQfvg==}
- engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
- hasBin: true
-
- nanoid@5.1.3:
- resolution: {integrity: sha512-zAbEOEr7u2CbxwoMRlz/pNSpRP0FdAU4pRaYunCdEezWohXFs+a0Xw7RfkKaezMsmSM1vttcLthJtwRnVtOfHQ==}
- engines: {node: ^18 || >=20}
- hasBin: true
-
- next-auth@5.0.0-beta.25:
- resolution: {integrity: sha512-2dJJw1sHQl2qxCrRk+KTQbeH+izFbGFPuJj5eGgBZFYyiYYtvlrBeUw1E/OJJxTRjuxbSYGnCTkUIRsIIW0bog==}
- peerDependencies:
- '@simplewebauthn/browser': ^9.0.1
- '@simplewebauthn/server': ^9.0.2
- next: ^14.0.0-0 || ^15.0.0-0
- nodemailer: ^6.6.5
- react: ^18.2.0 || ^19.0.0-0
- peerDependenciesMeta:
- '@simplewebauthn/browser':
- optional: true
- '@simplewebauthn/server':
- optional: true
- nodemailer:
- optional: true
-
- next-themes@0.3.0:
- resolution: {integrity: sha512-/QHIrsYpd6Kfk7xakK4svpDI5mmXP0gfvCoJdGpZQ2TOrQZmsW0QxjaiLn8wbIKjtm4BTSqLoix4lxYYOnLJ/w==}
- peerDependencies:
- react: ^16.8 || ^17 || ^18
- react-dom: ^16.8 || ^17 || ^18
-
- next@16.0.10:
- resolution: {integrity: sha512-RtWh5PUgI+vxlV3HdR+IfWA1UUHu0+Ram/JBO4vWB54cVPentCD0e+lxyAYEsDTqGGMg7qpjhKh6dc6aW7W/sA==}
- engines: {node: '>=20.9.0'}
- hasBin: true
- peerDependencies:
- '@opentelemetry/api': ^1.1.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
-
- node-gyp-build@4.8.4:
- resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==}
- hasBin: true
-
- nypm@0.6.2:
- resolution: {integrity: sha512-7eM+hpOtrKrBDCh7Ypu2lJ9Z7PNZBdi/8AT3AX8xoCj43BBVHD0hPSTEvMtkMpfs8FCqBGhxB+uToIQimA111g==}
- engines: {node: ^14.16.0 || >=16.10.0}
- hasBin: true
-
- oauth4webapi@3.3.1:
- resolution: {integrity: sha512-ZwX7UqYrP3Lr+Glhca3a1/nF2jqf7VVyJfhGuW5JtrfDUxt0u+IoBPzFjZ2dd7PJGkdM6CFPVVYzuDYKHv101A==}
-
- obuf@1.1.2:
- resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==}
-
- oniguruma-parser@0.12.1:
- resolution: {integrity: sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==}
-
- oniguruma-to-es@4.3.3:
- resolution: {integrity: sha512-rPiZhzC3wXwE59YQMRDodUwwT9FZ9nNBwQQfsd1wfdtlKEyCdRV0avrTcSZ5xlIvGRVPd/cx6ZN45ECmS39xvg==}
-
- orderedmap@2.1.1:
- resolution: {integrity: sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==}
-
- package-manager-detector@1.5.0:
- resolution: {integrity: sha512-uBj69dVlYe/+wxj8JOpr97XfsxH/eumMt6HqjNTmJDf/6NO9s+0uxeOneIz3AsPt2m6y9PqzDzd3ATcU17MNfw==}
-
- papaparse@5.5.2:
- resolution: {integrity: sha512-PZXg8UuAc4PcVwLosEEDYjPyfWnTEhOrUfdv+3Bx+NuAb+5NhDmXzg5fHWmdCh1mP5p7JAZfFr3IMQfcntNAdA==}
-
- parse-entities@2.0.0:
- resolution: {integrity: sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==}
-
- parse-entities@4.0.2:
- resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==}
-
- parse5@7.3.0:
- resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==}
-
- path-data-parser@0.1.0:
- resolution: {integrity: sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==}
-
- path-parse@1.0.7:
- resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
-
- pathe@2.0.3:
- resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==}
-
- pathval@2.0.1:
- resolution: {integrity: sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==}
- engines: {node: '>= 14.16'}
-
- pg-int8@1.0.1:
- resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==}
- engines: {node: '>=4.0.0'}
-
- pg-numeric@1.0.2:
- resolution: {integrity: sha512-BM/Thnrw5jm2kKLE5uJkXqqExRUY/toLHda65XgFTBTFYZyopbKjBe29Ii3RbkvlsMoFwD+tHeGaCjjv0gHlyw==}
- engines: {node: '>=4'}
-
- pg-protocol@1.8.0:
- resolution: {integrity: sha512-jvuYlEkL03NRvOoyoRktBK7+qU5kOvlAwvmrH8sr3wbLrOdVWsRxQfz8mMy9sZFsqJ1hEWNfdWKI4SAmoL+j7g==}
-
- pg-types@4.0.2:
- resolution: {integrity: sha512-cRL3JpS3lKMGsKaWndugWQoLOCoP+Cic8oseVcbr0qhPzYD5DWXK+RZ9LY9wxRf7RQia4SCwQlXk0q6FCPrVng==}
- engines: {node: '>=10'}
-
- picocolors@1.1.1:
- resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
-
- picomatch@4.0.2:
- resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==}
- engines: {node: '>=12'}
-
- picomatch@4.0.3:
- resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==}
- engines: {node: '>=12'}
-
- pkg-types@1.3.1:
- resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==}
-
- pkg-types@2.3.0:
- resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==}
-
- playwright-core@1.51.0:
- resolution: {integrity: sha512-x47yPE3Zwhlil7wlNU/iktF7t2r/URR3VLbH6EknJd/04Qc/PSJ0EY3CMXipmglLG+zyRxW6HNo2EGbKLHPWMg==}
- engines: {node: '>=18'}
- hasBin: true
-
- playwright@1.51.0:
- resolution: {integrity: sha512-442pTfGM0xxfCYxuBa/Pu6B2OqxqqaYq39JS8QDMGThUvIOCd6s0ANDog3uwA0cHavVlnTQzGCN7Id2YekDSXA==}
- engines: {node: '>=18'}
- hasBin: true
-
- points-on-curve@0.2.0:
- resolution: {integrity: sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==}
-
- points-on-path@0.2.1:
- resolution: {integrity: sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==}
-
- postcss-selector-parser@6.0.10:
- resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==}
- engines: {node: '>=4'}
-
- postcss@8.4.31:
- resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==}
- engines: {node: ^10 || ^12 || >=14}
-
- postcss@8.5.3:
- resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==}
- engines: {node: ^10 || ^12 || >=14}
-
- postcss@8.5.6:
- resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==}
- engines: {node: ^10 || ^12 || >=14}
-
- postgres-array@3.0.4:
- resolution: {integrity: sha512-nAUSGfSDGOaOAEGwqsRY27GPOea7CNipJPOA7lPbdEpx5Kg3qzdP0AaWC5MlhTWV9s4hFX39nomVZ+C4tnGOJQ==}
- engines: {node: '>=12'}
-
- postgres-bytea@3.0.0:
- resolution: {integrity: sha512-CNd4jim9RFPkObHSjVHlVrxoVQXz7quwNFpz7RY1okNNme49+sVyiTvTRobiLV548Hx/hb1BG+iE7h9493WzFw==}
- engines: {node: '>= 6'}
-
- postgres-date@2.1.0:
- resolution: {integrity: sha512-K7Juri8gtgXVcDfZttFKVmhglp7epKb1K4pgrkLxehjqkrgPhfG6OO8LHLkfaqkbpjNRnra018XwAr1yQFWGcA==}
- engines: {node: '>=12'}
-
- postgres-interval@3.0.0:
- resolution: {integrity: sha512-BSNDnbyZCXSxgA+1f5UU2GmwhoI0aU5yMxRGO8CdFEcY2BQF9xm/7MqKnYoM1nJDk8nONNWDk9WeSmePFhQdlw==}
- engines: {node: '>=12'}
-
- postgres-range@1.1.4:
- resolution: {integrity: sha512-i/hbxIE9803Alj/6ytL7UHQxRvZkI9O4Sy+J3HGc4F4oo/2eQAjTSNJ0bfxyse3bH0nuVesCk+3IRLaMtG3H6w==}
-
- postgres@3.4.5:
- resolution: {integrity: sha512-cDWgoah1Gez9rN3H4165peY9qfpEo+SA61oQv65O3cRUE1pOEoJWwddwcqKE8XZYjbblOJlYDlLV4h67HrEVDg==}
- engines: {node: '>=12'}
-
- preact-render-to-string@5.2.3:
- resolution: {integrity: sha512-aPDxUn5o3GhWdtJtW0svRC2SS/l8D9MAgo2+AWml+BhDImb27ALf04Q2d+AHqUUOc6RdSXFIBVa2gxzgMKgtZA==}
- peerDependencies:
- preact: '>=10'
-
- preact@10.11.3:
- resolution: {integrity: sha512-eY93IVpod/zG3uMF22Unl8h9KkrcKIRs2EGar8hwLZZDU1lkjph303V9HZBwufh2s736U6VXuhD109LYqPoffg==}
-
- pretty-format@3.8.0:
- resolution: {integrity: sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew==}
-
- prismjs@1.27.0:
- resolution: {integrity: sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA==}
- engines: {node: '>=6'}
-
- prismjs@1.30.0:
- resolution: {integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==}
- engines: {node: '>=6'}
-
- property-information@5.6.0:
- resolution: {integrity: sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==}
-
- property-information@6.5.0:
- resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==}
-
- property-information@7.0.0:
- resolution: {integrity: sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==}
-
- prosemirror-commands@1.7.0:
- resolution: {integrity: sha512-6toodS4R/Aah5pdsrIwnTYPEjW70SlO5a66oo5Kk+CIrgJz3ukOoS+FYDGqvQlAX5PxoGWDX1oD++tn5X3pyRA==}
-
- prosemirror-dropcursor@1.8.1:
- resolution: {integrity: sha512-M30WJdJZLyXHi3N8vxN6Zh5O8ZBbQCz0gURTfPmTIBNQ5pxrdU7A58QkNqfa98YEjSAL1HUyyU34f6Pm5xBSGw==}
-
- prosemirror-example-setup@1.2.3:
- resolution: {integrity: sha512-+hXZi8+xbFvYM465zZH3rdZ9w7EguVKmUYwYLZjIJIjPK+I0nPTwn8j0ByW2avchVczRwZmOJGNvehblyIerSQ==}
-
- prosemirror-gapcursor@1.3.2:
- resolution: {integrity: sha512-wtjswVBd2vaQRrnYZaBCbyDqr232Ed4p2QPtRIUK5FuqHYKGWkEwl08oQM4Tw7DOR0FsasARV5uJFvMZWxdNxQ==}
-
- prosemirror-history@1.4.1:
- resolution: {integrity: sha512-2JZD8z2JviJrboD9cPuX/Sv/1ChFng+xh2tChQ2X4bB2HeK+rra/bmJ3xGntCcjhOqIzSDG6Id7e8RJ9QPXLEQ==}
-
- prosemirror-inputrules@1.4.0:
- resolution: {integrity: sha512-6ygpPRuTJ2lcOXs9JkefieMst63wVJBgHZGl5QOytN7oSZs3Co/BYbc3Yx9zm9H37Bxw8kVzCnDsihsVsL4yEg==}
-
- prosemirror-keymap@1.2.2:
- resolution: {integrity: sha512-EAlXoksqC6Vbocqc0GtzCruZEzYgrn+iiGnNjsJsH4mrnIGex4qbLdWWNza3AW5W36ZRrlBID0eM6bdKH4OStQ==}
-
- prosemirror-markdown@1.13.1:
- resolution: {integrity: sha512-Sl+oMfMtAjWtlcZoj/5L/Q39MpEnVZ840Xo330WJWUvgyhNmLBLN7MsHn07s53nG/KImevWHSE6fEj4q/GihHw==}
-
- prosemirror-menu@1.2.4:
- resolution: {integrity: sha512-S/bXlc0ODQup6aiBbWVsX/eM+xJgCTAfMq/nLqaO5ID/am4wS0tTCIkzwytmao7ypEtjj39i7YbJjAgO20mIqA==}
-
- prosemirror-model@1.24.1:
- resolution: {integrity: sha512-YM053N+vTThzlWJ/AtPtF1j0ebO36nvbmDy4U7qA2XQB8JVaQp1FmB9Jhrps8s+z+uxhhVTny4m20ptUvhk0Mg==}
-
- prosemirror-schema-basic@1.2.3:
- resolution: {integrity: sha512-h+H0OQwZVqMon1PNn0AG9cTfx513zgIG2DY00eJ00Yvgb3UD+GQ/VlWW5rcaxacpCGT1Yx8nuhwXk4+QbXUfJA==}
-
- prosemirror-schema-list@1.5.1:
- resolution: {integrity: sha512-927lFx/uwyQaGwJxLWCZRkjXG0p48KpMj6ueoYiu4JX05GGuGcgzAy62dfiV8eFZftgyBUvLx76RsMe20fJl+Q==}
-
- prosemirror-state@1.4.3:
- resolution: {integrity: sha512-goFKORVbvPuAQaXhpbemJFRKJ2aixr+AZMGiquiqKxaucC6hlpHNZHWgz5R7dS4roHiwq9vDctE//CZ++o0W1Q==}
-
- prosemirror-transform@1.10.3:
- resolution: {integrity: sha512-Nhh/+1kZGRINbEHmVu39oynhcap4hWTs/BlU7NnxWj3+l0qi8I1mu67v6mMdEe/ltD8hHvU4FV6PHiCw2VSpMw==}
-
- prosemirror-view@1.38.1:
- resolution: {integrity: sha512-4FH/uM1A4PNyrxXbD+RAbAsf0d/mM0D/wAKSVVWK7o0A9Q/oOXJBrw786mBf2Vnrs/Edly6dH6Z2gsb7zWwaUw==}
-
- punycode.js@2.3.1:
- resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==}
- engines: {node: '>=6'}
-
- quansync@0.2.11:
- resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==}
-
- radix-ui@1.4.3:
- resolution: {integrity: sha512-aWizCQiyeAenIdUbqEpXgRA1ya65P13NKn/W8rWkcN0OPkRDxdBVLWnIEDsS2RpwCK2nobI7oMUSmexzTDyAmA==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- react-data-grid@7.0.0-beta.47:
- resolution: {integrity: sha512-28kjsmwQGD/9RXYC50zn5Zv/SQMhBBoSvG5seq0fM8XXi9TZ0zr9Z5T3YJqLwcEtoNzTOq3y0njkmdujGkIwQQ==}
- peerDependencies:
- react: ^18.0 || ^19.0
- react-dom: ^18.0 || ^19.0
-
- react-dom@19.0.1:
- resolution: {integrity: sha512-3TJg51HSbJiLVYCS6vWwWsyqoS36aGEOCmtLLHxROlSZZ5Bk10xpxHFbrCu4DdqgR85DDc9Vucxqhai3g2xjtA==}
- peerDependencies:
- react: ^19.0.1
-
- react-markdown@10.1.0:
- resolution: {integrity: sha512-qKxVopLT/TyA6BX3Ue5NwabOsAzm0Q7kAPwq6L+wWDwisYs7R8vZ0nRXqq6rkueboxpkjvLGU9fWifiX/ZZFxQ==}
- peerDependencies:
- '@types/react': '>=18'
- react: '>=18'
-
- react-remove-scroll-bar@2.3.8:
- resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==}
- engines: {node: '>=10'}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- react-remove-scroll@2.6.3:
- resolution: {integrity: sha512-pnAi91oOk8g8ABQKGF5/M9qxmmOPxaAnopyTHYfqYEwJhyFrbbBtHuSgtKEoH0jpcxx5o3hXqH1mNd9/Oi+8iQ==}
- engines: {node: '>=10'}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- react-resizable-panels@2.1.7:
- resolution: {integrity: sha512-JtT6gI+nURzhMYQYsx8DKkx6bSoOGFp7A3CwMrOb8y5jFHFyqwo9m68UhmXRw57fRVJksFn1TSlm3ywEQ9vMgA==}
- peerDependencies:
- react: ^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc
- react-dom: ^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc
-
- react-style-singleton@2.2.3:
- resolution: {integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==}
- engines: {node: '>=10'}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- react-syntax-highlighter@15.6.6:
- resolution: {integrity: sha512-DgXrc+AZF47+HvAPEmn7Ua/1p10jNoVZVI/LoPiYdtY+OM+/nG5yefLHKJwdKqY1adMuHFbeyBaG9j64ML7vTw==}
- peerDependencies:
- react: '>= 0.14.0'
-
- react@19.0.1:
- resolution: {integrity: sha512-nVRaZCuEyvu69sWrkdwjP6QY57C+lY+uMNNMyWUFJb9Z/JlaBOQus7mSMfGYsblv7R691u6SSJA/dX9IRnyyLQ==}
- engines: {node: '>=0.10.0'}
-
- redis@5.9.0:
- resolution: {integrity: sha512-E8dQVLSyH6UE/C9darFuwq4usOPrqfZ1864kI4RFbr5Oj9ioB9qPF0oJMwX7s8mf6sPYrz84x/Dx1PGF3/0EaQ==}
- engines: {node: '>= 18'}
-
- refractor@3.6.0:
- resolution: {integrity: sha512-MY9W41IOWxxk31o+YvFCNyNzdkc9M20NoZK5vq6jkv4I/uh2zkWcfudj0Q1fovjUQJrNewS9NMzeTtqPf+n5EA==}
-
- regex-recursion@6.0.2:
- resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==}
-
- regex-utilities@2.3.0:
- resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==}
-
- regex@6.0.1:
- resolution: {integrity: sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==}
-
- rehype-harden@1.1.5:
- resolution: {integrity: sha512-JrtBj5BVd/5vf3H3/blyJatXJbzQfRT9pJBmjafbTaPouQCAKxHwRyCc7dle9BXQKxv4z1OzZylz/tNamoiG3A==}
-
- rehype-katex@7.0.1:
- resolution: {integrity: sha512-OiM2wrZ/wuhKkigASodFoo8wimG3H12LWQaH8qSPVJn9apWKFSH3YOCtbKpBorTVw/eI7cuT21XBbvwEswbIOA==}
-
- rehype-raw@7.0.0:
- resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==}
-
- remark-gfm@4.0.1:
- resolution: {integrity: sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==}
-
- remark-math@6.0.0:
- resolution: {integrity: sha512-MMqgnP74Igy+S3WwnhQ7kqGlEerTETXMvJhrUzDikVZ2/uogJCb+WHUg97hK9/jcfc0dkD73s3LN8zU49cTEtA==}
-
- remark-parse@11.0.0:
- resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==}
-
- remark-rehype@11.1.1:
- resolution: {integrity: sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ==}
-
- remark-stringify@11.0.0:
- resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==}
-
- require-in-the-middle@7.5.2:
- resolution: {integrity: sha512-gAZ+kLqBdHarXB64XpAe2VCjB7rIRv+mU8tfRWziHRJ5umKsIHN2tLLv6EtMw7WCdP19S0ERVMldNvxYCHnhSQ==}
- engines: {node: '>=8.6.0'}
-
- resolve-pkg-maps@1.0.0:
- resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
-
- resolve@1.22.10:
- resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==}
- engines: {node: '>= 0.4'}
- hasBin: true
-
- resumable-stream@2.2.8:
- resolution: {integrity: sha512-F9+SLKw/a/p7hRjy2CNwzT66UIlY7aY4D3Sg9xwuZMA7nxVQrVPXCWU27qIGcO4jlauL0T3XkCN2218qi6ugTw==}
-
- retry@0.13.1:
- resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==}
- engines: {node: '>= 4'}
-
- robust-predicates@3.0.2:
- resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==}
-
- rollup@4.52.5:
- resolution: {integrity: sha512-3GuObel8h7Kqdjt0gxkEzaifHTqLVW56Y/bjN7PSQtkKr0w3V/QYSdt6QWYtd7A1xUtYQigtdUfgj1RvWVtorw==}
- engines: {node: '>=18.0.0', npm: '>=8.0.0'}
- hasBin: true
-
- rope-sequence@1.3.4:
- resolution: {integrity: sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ==}
-
- roughjs@4.6.6:
- resolution: {integrity: sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==}
-
- rw@1.3.3:
- resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==}
-
- safer-buffer@2.1.2:
- resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
-
- scheduler@0.25.0:
- resolution: {integrity: sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==}
-
- semver@7.7.3:
- resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==}
- engines: {node: '>=10'}
- hasBin: true
-
- server-only@0.0.1:
- resolution: {integrity: sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA==}
-
- sharp@0.34.5:
- resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
-
- shiki@3.14.0:
- resolution: {integrity: sha512-J0yvpLI7LSig3Z3acIuDLouV5UCKQqu8qOArwMx+/yPVC3WRMgrP67beaG8F+j4xfEWE0eVC4GeBCIXeOPra1g==}
-
- shimmer@1.2.1:
- resolution: {integrity: sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==}
-
- siginfo@2.0.0:
- resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==}
-
- sisteransi@1.0.5:
- resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==}
-
- sonner@1.7.4:
- resolution: {integrity: sha512-DIS8z4PfJRbIyfVFDVnK9rO3eYDtse4Omcm6bt0oEr5/jtLgysmjuBl1frJ9E/EQZrFmKx2A8m/s5s9CRXIzhw==}
- peerDependencies:
- react: ^18.0.0 || ^19.0.0 || ^19.0.0-rc
- react-dom: ^18.0.0 || ^19.0.0 || ^19.0.0-rc
-
- source-map-js@1.2.1:
- resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
- engines: {node: '>=0.10.0'}
-
- source-map-support@0.5.21:
- resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}
-
- source-map@0.6.1:
- resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
- engines: {node: '>=0.10.0'}
-
- space-separated-tokens@1.1.5:
- resolution: {integrity: sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==}
-
- space-separated-tokens@2.0.2:
- resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==}
-
- stackback@0.0.2:
- resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==}
-
- std-env@3.10.0:
- resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==}
-
- streamdown@1.4.0:
- resolution: {integrity: sha512-ylhDSQ4HpK5/nAH9v7OgIIdGJxlJB2HoYrYkJNGrO8lMpnWuKUcrz/A8xAMwA6eILA27469vIavcOTjmxctrKg==}
- peerDependencies:
- react: ^18.0.0 || ^19.0.0
-
- stringify-entities@4.0.4:
- resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==}
-
- strip-literal@3.1.0:
- resolution: {integrity: sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==}
-
- style-mod@4.1.2:
- resolution: {integrity: sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==}
-
- style-to-js@1.1.16:
- resolution: {integrity: sha512-/Q6ld50hKYPH3d/r6nr117TZkHR0w0kGGIVfpG9N6D8NymRPM9RqCUv4pRpJ62E5DqOYx2AFpbZMyCPnjQCnOw==}
-
- style-to-object@1.0.8:
- resolution: {integrity: sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==}
-
- styled-jsx@5.1.6:
- resolution: {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 || ^19.0.0-0'
- peerDependenciesMeta:
- '@babel/core':
- optional: true
- babel-plugin-macros:
- optional: true
-
- stylis@4.3.6:
- resolution: {integrity: sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==}
-
- supports-preserve-symlinks-flag@1.0.0:
- resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
- engines: {node: '>= 0.4'}
-
- swr@2.3.3:
- resolution: {integrity: sha512-dshNvs3ExOqtZ6kJBaAsabhPdHyeY4P2cKwRCniDVifBMoG/SVI7tfLWqPXriVspf2Rg4tPzXJTnwaihIeFw2A==}
- peerDependencies:
- react: ^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
-
- tailwind-merge@2.6.0:
- resolution: {integrity: sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA==}
-
- tailwind-merge@3.3.1:
- resolution: {integrity: sha512-gBXpgUm/3rp1lMZZrM/w7D8GKqshif0zAymAhbCyIt8KMe+0v9DQ7cdYLR4FHH/cKpdTXb+A/tKKU3eolfsI+g==}
-
- tailwindcss-animate@1.0.7:
- resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==}
- peerDependencies:
- tailwindcss: '>=3.0.0 || insiders'
-
- tailwindcss@4.1.16:
- resolution: {integrity: sha512-pONL5awpaQX4LN5eiv7moSiSPd/DLDzKVRJz8Q9PgzmAdd1R4307GQS2ZpfiN7ZmekdQrfhZZiSE5jkLR4WNaA==}
-
- tapable@2.2.1:
- resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==}
- engines: {node: '>=6'}
-
- throttleit@2.1.0:
- resolution: {integrity: sha512-nt6AMGKW1p/70DF/hGBdJB57B8Tspmbp5gfJ8ilhLnt7kkr2ye7hzD6NVG8GGErk2HWF34igrL2CXmNIkzKqKw==}
- engines: {node: '>=18'}
-
- tinybench@2.9.0:
- resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==}
-
- tinyexec@0.3.2:
- resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==}
-
- tinyexec@1.0.1:
- resolution: {integrity: sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==}
-
- tinyglobby@0.2.15:
- resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==}
- engines: {node: '>=12.0.0'}
-
- tinypool@1.1.1:
- resolution: {integrity: sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==}
- engines: {node: ^18.0.0 || >=20.0.0}
-
- tinyrainbow@2.0.0:
- resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==}
- engines: {node: '>=14.0.0'}
-
- tinyspy@4.0.4:
- resolution: {integrity: sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==}
- engines: {node: '>=14.0.0'}
-
- trim-lines@3.0.1:
- resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==}
-
- trough@2.2.0:
- resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==}
-
- trpc-cli@0.10.2:
- resolution: {integrity: sha512-zBkL88AeX0vQLXwEAcX6WUoT4Sopr97nFDFeD1zmW33wHQwBKbszylplNVk6BO/cuhgm/iq8/cG27NokqKA1mw==}
- engines: {node: '>=18'}
- hasBin: true
- peerDependencies:
- '@inquirer/prompts': '*'
- omelette: '*'
- peerDependenciesMeta:
- '@inquirer/prompts':
- optional: true
- omelette:
- optional: true
-
- ts-dedent@2.2.0:
- resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==}
- engines: {node: '>=6.10'}
-
- tslib@2.8.1:
- resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
-
- tsx@4.19.3:
- resolution: {integrity: sha512-4H8vUNGNjQ4V2EOoGw005+c+dGuPSnhpPBPHBtsZdGZBk/iJb4kguGlPWaZTZ3q5nMtFOEsY0nRDlh9PJyd6SQ==}
- engines: {node: '>=18.0.0'}
- hasBin: true
-
- typescript@5.8.2:
- resolution: {integrity: sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==}
- engines: {node: '>=14.17'}
- hasBin: true
-
- uc.micro@2.1.0:
- resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==}
-
- ufo@1.6.1:
- resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==}
-
- ultracite@5.3.9:
- resolution: {integrity: sha512-85rzcGk+KKF3jhBGLYQj57JYAQ50Mun6PAifN4B6cCmCI8GNjgvUbp0f4DlpOfl92mq8CzouCzzcVxwcNNmTmw==}
- hasBin: true
-
- undici-types@6.20.0:
- resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==}
-
- undici@5.28.5:
- resolution: {integrity: sha512-zICwjrDrcrUE0pyyJc1I2QzBkLM8FINsgOrt6WjA+BgajVq9Nxu2PbFFXUrAggLfDXlZGZBVZYw7WNV5KiBiBA==}
- engines: {node: '>=14.0'}
-
- unified@11.0.5:
- resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==}
-
- unist-util-find-after@5.0.0:
- resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==}
-
- unist-util-is@6.0.0:
- resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==}
-
- unist-util-position@5.0.0:
- resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==}
-
- unist-util-remove-position@5.0.0:
- resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==}
-
- unist-util-stringify-position@4.0.0:
- resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==}
-
- unist-util-visit-parents@6.0.1:
- resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==}
-
- unist-util-visit@5.0.0:
- resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==}
-
- use-callback-ref@1.3.3:
- resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==}
- engines: {node: '>=10'}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- use-sidecar@1.1.3:
- resolution: {integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==}
- engines: {node: '>=10'}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- use-stick-to-bottom@1.1.1:
- resolution: {integrity: sha512-JkDp0b0tSmv7HQOOpL1hT7t7QaoUBXkq045WWWOFDTlLGRzgIIyW7vyzOIJzY7L2XVIG7j1yUxeDj2LHm9Vwng==}
- peerDependencies:
- react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
-
- use-sync-external-store@1.4.0:
- resolution: {integrity: sha512-9WXSPC5fMv61vaupRkCKCxsPxBocVnwakBEkMIHHpkTTg6icbJtg6jzgtLDm4bl3cSHAca52rYWih0k4K3PfHw==}
- peerDependencies:
- react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
-
- use-sync-external-store@1.6.0:
- resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==}
- peerDependencies:
- react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
-
- usehooks-ts@3.1.1:
- resolution: {integrity: sha512-I4diPp9Cq6ieSUH2wu+fDAVQO43xwtulo+fKEidHUwZPnYImbtkTjzIJYcDcJqxgmX31GVqNFURodvcgHcW0pA==}
- engines: {node: '>=16.15.0'}
- peerDependencies:
- react: ^16.8.0 || ^17 || ^18 || ^19 || ^19.0.0-rc
-
- util-deprecate@1.0.2:
- resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
-
- uuid@11.1.0:
- resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==}
- hasBin: true
-
- vfile-location@5.0.3:
- resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==}
-
- vfile-message@4.0.2:
- resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==}
-
- vfile@6.0.3:
- resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==}
-
- vite-node@3.2.4:
- resolution: {integrity: sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==}
- engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
- hasBin: true
-
- vite@7.1.12:
- resolution: {integrity: sha512-ZWyE8YXEXqJrrSLvYgrRP7p62OziLW7xI5HYGWFzOvupfAlrLvURSzv/FyGyy0eidogEM3ujU+kUG1zuHgb6Ug==}
- engines: {node: ^20.19.0 || >=22.12.0}
- hasBin: true
- peerDependencies:
- '@types/node': ^20.19.0 || >=22.12.0
- jiti: '>=1.21.0'
- less: ^4.0.0
- lightningcss: ^1.21.0
- sass: ^1.70.0
- sass-embedded: ^1.70.0
- stylus: '>=0.54.8'
- sugarss: ^5.0.0
- terser: ^5.16.0
- tsx: ^4.8.1
- yaml: ^2.4.2
- peerDependenciesMeta:
- '@types/node':
- optional: true
- jiti:
- optional: true
- less:
- optional: true
- lightningcss:
- optional: true
- sass:
- optional: true
- sass-embedded:
- optional: true
- stylus:
- optional: true
- sugarss:
- optional: true
- terser:
- optional: true
- tsx:
- optional: true
- yaml:
- optional: true
-
- vitest@3.2.4:
- resolution: {integrity: sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==}
- engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
- hasBin: true
- peerDependencies:
- '@edge-runtime/vm': '*'
- '@types/debug': ^4.1.12
- '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0
- '@vitest/browser': 3.2.4
- '@vitest/ui': 3.2.4
- happy-dom: '*'
- jsdom: '*'
- peerDependenciesMeta:
- '@edge-runtime/vm':
- optional: true
- '@types/debug':
- optional: true
- '@types/node':
- optional: true
- '@vitest/browser':
- optional: true
- '@vitest/ui':
- optional: true
- happy-dom:
- optional: true
- jsdom:
- optional: true
-
- vscode-jsonrpc@8.2.0:
- resolution: {integrity: sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==}
- engines: {node: '>=14.0.0'}
-
- vscode-languageserver-protocol@3.17.5:
- resolution: {integrity: sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==}
-
- vscode-languageserver-textdocument@1.0.12:
- resolution: {integrity: sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==}
-
- vscode-languageserver-types@3.17.5:
- resolution: {integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==}
-
- vscode-languageserver@9.0.1:
- resolution: {integrity: sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==}
- hasBin: true
-
- vscode-uri@3.0.8:
- resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==}
-
- w3c-keyname@2.2.8:
- resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==}
-
- web-namespaces@2.0.1:
- resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==}
-
- why-is-node-running@2.3.0:
- resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==}
- engines: {node: '>=8'}
- hasBin: true
-
- ws@8.18.1:
- resolution: {integrity: sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==}
- engines: {node: '>=10.0.0'}
- peerDependencies:
- bufferutil: ^4.0.1
- utf-8-validate: '>=5.0.2'
- peerDependenciesMeta:
- bufferutil:
- optional: true
- utf-8-validate:
- optional: true
-
- xtend@4.0.2:
- resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==}
- engines: {node: '>=0.4'}
-
- yaml@2.7.0:
- resolution: {integrity: sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==}
- engines: {node: '>= 14'}
- hasBin: true
-
- zod-to-json-schema@3.24.5:
- resolution: {integrity: sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g==}
- peerDependencies:
- zod: ^3.24.1
-
- zod@3.25.76:
- resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==}
-
- zod@4.1.12:
- resolution: {integrity: sha512-JInaHOamG8pt5+Ey8kGmdcAcg3OL9reK8ltczgHTAwNhMys/6ThXHityHxVV2p3fkw/c+MAvBHFVYHFZDmjMCQ==}
-
- zustand@4.5.7:
- resolution: {integrity: sha512-CHOUy7mu3lbD6o6LJLfllpjkzhHXSBlX8B9+qPddUsIfeF5S/UZ5q0kmCsnRqT1UHFQZchNFDDzMbQsuesHWlw==}
- engines: {node: '>=12.7.0'}
- peerDependencies:
- '@types/react': '>=16.8'
- immer: '>=9.0.6'
- react: '>=16.8'
- peerDependenciesMeta:
- '@types/react':
- optional: true
- immer:
- optional: true
- react:
- optional: true
-
- zwitch@2.0.4:
- resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}
-
-snapshots:
-
- '@ai-sdk/gateway@2.0.0-beta.85(zod@3.25.76)':
- dependencies:
- '@ai-sdk/provider': 3.0.0-beta.27
- '@ai-sdk/provider-utils': 4.0.0-beta.53(zod@3.25.76)
- '@vercel/oidc': 3.0.5
- zod: 3.25.76
-
- '@ai-sdk/provider-utils@4.0.0-beta.53(zod@3.25.76)':
- dependencies:
- '@ai-sdk/provider': 3.0.0-beta.27
- '@standard-schema/spec': 1.1.0
- eventsource-parser: 3.0.6
- zod: 3.25.76
-
- '@ai-sdk/provider@3.0.0-beta.27':
- dependencies:
- json-schema: 0.4.0
-
- '@ai-sdk/react@3.0.0-beta.162(react@19.0.1)(zod@3.25.76)':
- dependencies:
- '@ai-sdk/provider-utils': 4.0.0-beta.53(zod@3.25.76)
- ai: 6.0.0-beta.159(zod@3.25.76)
- react: 19.0.1
- swr: 2.3.3(react@19.0.1)
- throttleit: 2.1.0
- transitivePeerDependencies:
- - zod
-
- '@alloc/quick-lru@5.2.0': {}
-
- '@antfu/install-pkg@1.1.0':
- dependencies:
- package-manager-detector: 1.5.0
- tinyexec: 1.0.1
-
- '@antfu/utils@9.3.0': {}
-
- '@auth/core@0.37.2':
- dependencies:
- '@panva/hkdf': 1.2.1
- '@types/cookie': 0.6.0
- cookie: 0.7.1
- jose: 5.10.0
- oauth4webapi: 3.3.1
- preact: 10.11.3
- preact-render-to-string: 5.2.3(preact@10.11.3)
-
- '@babel/runtime@7.28.4': {}
-
- '@biomejs/biome@2.2.2':
- optionalDependencies:
- '@biomejs/cli-darwin-arm64': 2.2.2
- '@biomejs/cli-darwin-x64': 2.2.2
- '@biomejs/cli-linux-arm64': 2.2.2
- '@biomejs/cli-linux-arm64-musl': 2.2.2
- '@biomejs/cli-linux-x64': 2.2.2
- '@biomejs/cli-linux-x64-musl': 2.2.2
- '@biomejs/cli-win32-arm64': 2.2.2
- '@biomejs/cli-win32-x64': 2.2.2
-
- '@biomejs/cli-darwin-arm64@2.2.2':
- optional: true
-
- '@biomejs/cli-darwin-x64@2.2.2':
- optional: true
-
- '@biomejs/cli-linux-arm64-musl@2.2.2':
- optional: true
-
- '@biomejs/cli-linux-arm64@2.2.2':
- optional: true
-
- '@biomejs/cli-linux-x64-musl@2.2.2':
- optional: true
-
- '@biomejs/cli-linux-x64@2.2.2':
- optional: true
-
- '@biomejs/cli-win32-arm64@2.2.2':
- optional: true
-
- '@biomejs/cli-win32-x64@2.2.2':
- optional: true
-
- '@braintree/sanitize-url@7.1.1': {}
-
- '@chevrotain/cst-dts-gen@11.0.3':
- dependencies:
- '@chevrotain/gast': 11.0.3
- '@chevrotain/types': 11.0.3
- lodash-es: 4.17.21
-
- '@chevrotain/gast@11.0.3':
- dependencies:
- '@chevrotain/types': 11.0.3
- lodash-es: 4.17.21
-
- '@chevrotain/regexp-to-ast@11.0.3': {}
-
- '@chevrotain/types@11.0.3': {}
-
- '@chevrotain/utils@11.0.3': {}
-
- '@clack/core@0.5.0':
- dependencies:
- picocolors: 1.1.1
- sisteransi: 1.0.5
-
- '@clack/prompts@0.11.0':
- dependencies:
- '@clack/core': 0.5.0
- picocolors: 1.1.1
- sisteransi: 1.0.5
-
- '@codemirror/autocomplete@6.18.6':
- dependencies:
- '@codemirror/language': 6.11.0
- '@codemirror/state': 6.5.2
- '@codemirror/view': 6.36.4
- '@lezer/common': 1.2.3
-
- '@codemirror/commands@6.8.0':
- dependencies:
- '@codemirror/language': 6.11.0
- '@codemirror/state': 6.5.2
- '@codemirror/view': 6.36.4
- '@lezer/common': 1.2.3
-
- '@codemirror/lang-javascript@6.2.3':
- dependencies:
- '@codemirror/autocomplete': 6.18.6
- '@codemirror/language': 6.11.0
- '@codemirror/lint': 6.8.4
- '@codemirror/state': 6.5.2
- '@codemirror/view': 6.36.4
- '@lezer/common': 1.2.3
- '@lezer/javascript': 1.4.21
-
- '@codemirror/lang-python@6.1.7':
- dependencies:
- '@codemirror/autocomplete': 6.18.6
- '@codemirror/language': 6.11.0
- '@codemirror/state': 6.5.2
- '@lezer/common': 1.2.3
- '@lezer/python': 1.1.16
-
- '@codemirror/language@6.11.0':
- dependencies:
- '@codemirror/state': 6.5.2
- '@codemirror/view': 6.36.4
- '@lezer/common': 1.2.3
- '@lezer/highlight': 1.2.1
- '@lezer/lr': 1.4.2
- style-mod: 4.1.2
-
- '@codemirror/lint@6.8.4':
- dependencies:
- '@codemirror/state': 6.5.2
- '@codemirror/view': 6.36.4
- crelt: 1.0.6
-
- '@codemirror/search@6.5.10':
- dependencies:
- '@codemirror/state': 6.5.2
- '@codemirror/view': 6.36.4
- crelt: 1.0.6
-
- '@codemirror/state@6.5.2':
- dependencies:
- '@marijn/find-cluster-break': 1.0.2
-
- '@codemirror/theme-one-dark@6.1.2':
- dependencies:
- '@codemirror/language': 6.11.0
- '@codemirror/state': 6.5.2
- '@codemirror/view': 6.36.4
- '@lezer/highlight': 1.2.1
-
- '@codemirror/view@6.36.4':
- dependencies:
- '@codemirror/state': 6.5.2
- style-mod: 4.1.2
- w3c-keyname: 2.2.8
-
- '@drizzle-team/brocli@0.10.2': {}
-
- '@emnapi/runtime@1.7.1':
- dependencies:
- tslib: 2.8.1
- optional: true
-
- '@esbuild-kit/core-utils@3.3.2':
- dependencies:
- esbuild: 0.18.20
- source-map-support: 0.5.21
-
- '@esbuild-kit/esm-loader@2.6.5':
- dependencies:
- '@esbuild-kit/core-utils': 3.3.2
- get-tsconfig: 4.10.0
-
- '@esbuild/aix-ppc64@0.19.12':
- optional: true
-
- '@esbuild/aix-ppc64@0.25.1':
- optional: true
-
- '@esbuild/android-arm64@0.18.20':
- optional: true
-
- '@esbuild/android-arm64@0.19.12':
- optional: true
-
- '@esbuild/android-arm64@0.25.1':
- optional: true
-
- '@esbuild/android-arm@0.18.20':
- optional: true
-
- '@esbuild/android-arm@0.19.12':
- optional: true
-
- '@esbuild/android-arm@0.25.1':
- optional: true
-
- '@esbuild/android-x64@0.18.20':
- optional: true
-
- '@esbuild/android-x64@0.19.12':
- optional: true
-
- '@esbuild/android-x64@0.25.1':
- optional: true
-
- '@esbuild/darwin-arm64@0.18.20':
- optional: true
-
- '@esbuild/darwin-arm64@0.19.12':
- optional: true
-
- '@esbuild/darwin-arm64@0.25.1':
- optional: true
-
- '@esbuild/darwin-x64@0.18.20':
- optional: true
-
- '@esbuild/darwin-x64@0.19.12':
- optional: true
-
- '@esbuild/darwin-x64@0.25.1':
- optional: true
-
- '@esbuild/freebsd-arm64@0.18.20':
- optional: true
-
- '@esbuild/freebsd-arm64@0.19.12':
- optional: true
-
- '@esbuild/freebsd-arm64@0.25.1':
- optional: true
-
- '@esbuild/freebsd-x64@0.18.20':
- optional: true
-
- '@esbuild/freebsd-x64@0.19.12':
- optional: true
-
- '@esbuild/freebsd-x64@0.25.1':
- optional: true
-
- '@esbuild/linux-arm64@0.18.20':
- optional: true
-
- '@esbuild/linux-arm64@0.19.12':
- optional: true
-
- '@esbuild/linux-arm64@0.25.1':
- optional: true
-
- '@esbuild/linux-arm@0.18.20':
- optional: true
-
- '@esbuild/linux-arm@0.19.12':
- optional: true
-
- '@esbuild/linux-arm@0.25.1':
- optional: true
-
- '@esbuild/linux-ia32@0.18.20':
- optional: true
-
- '@esbuild/linux-ia32@0.19.12':
- optional: true
-
- '@esbuild/linux-ia32@0.25.1':
- optional: true
-
- '@esbuild/linux-loong64@0.18.20':
- optional: true
-
- '@esbuild/linux-loong64@0.19.12':
- optional: true
-
- '@esbuild/linux-loong64@0.25.1':
- optional: true
-
- '@esbuild/linux-mips64el@0.18.20':
- optional: true
-
- '@esbuild/linux-mips64el@0.19.12':
- optional: true
-
- '@esbuild/linux-mips64el@0.25.1':
- optional: true
-
- '@esbuild/linux-ppc64@0.18.20':
- optional: true
-
- '@esbuild/linux-ppc64@0.19.12':
- optional: true
-
- '@esbuild/linux-ppc64@0.25.1':
- optional: true
-
- '@esbuild/linux-riscv64@0.18.20':
- optional: true
-
- '@esbuild/linux-riscv64@0.19.12':
- optional: true
-
- '@esbuild/linux-riscv64@0.25.1':
- optional: true
-
- '@esbuild/linux-s390x@0.18.20':
- optional: true
-
- '@esbuild/linux-s390x@0.19.12':
- optional: true
-
- '@esbuild/linux-s390x@0.25.1':
- optional: true
-
- '@esbuild/linux-x64@0.18.20':
- optional: true
-
- '@esbuild/linux-x64@0.19.12':
- optional: true
-
- '@esbuild/linux-x64@0.25.1':
- optional: true
-
- '@esbuild/netbsd-arm64@0.25.1':
- optional: true
-
- '@esbuild/netbsd-x64@0.18.20':
- optional: true
-
- '@esbuild/netbsd-x64@0.19.12':
- optional: true
-
- '@esbuild/netbsd-x64@0.25.1':
- optional: true
-
- '@esbuild/openbsd-arm64@0.25.1':
- optional: true
-
- '@esbuild/openbsd-x64@0.18.20':
- optional: true
-
- '@esbuild/openbsd-x64@0.19.12':
- optional: true
-
- '@esbuild/openbsd-x64@0.25.1':
- optional: true
-
- '@esbuild/sunos-x64@0.18.20':
- optional: true
-
- '@esbuild/sunos-x64@0.19.12':
- optional: true
-
- '@esbuild/sunos-x64@0.25.1':
- optional: true
-
- '@esbuild/win32-arm64@0.18.20':
- optional: true
-
- '@esbuild/win32-arm64@0.19.12':
- optional: true
-
- '@esbuild/win32-arm64@0.25.1':
- optional: true
-
- '@esbuild/win32-ia32@0.18.20':
- optional: true
-
- '@esbuild/win32-ia32@0.19.12':
- optional: true
-
- '@esbuild/win32-ia32@0.25.1':
- optional: true
-
- '@esbuild/win32-x64@0.18.20':
- optional: true
-
- '@esbuild/win32-x64@0.19.12':
- optional: true
-
- '@esbuild/win32-x64@0.25.1':
- optional: true
-
- '@fastify/busboy@2.1.1': {}
-
- '@floating-ui/core@1.6.9':
- dependencies:
- '@floating-ui/utils': 0.2.9
-
- '@floating-ui/dom@1.6.13':
- dependencies:
- '@floating-ui/core': 1.6.9
- '@floating-ui/utils': 0.2.9
-
- '@floating-ui/react-dom@2.1.2(react-dom@19.0.1(react@19.0.1))(react@19.0.1)':
- dependencies:
- '@floating-ui/dom': 1.6.13
- react: 19.0.1
- react-dom: 19.0.1(react@19.0.1)
-
- '@floating-ui/utils@0.2.9': {}
-
- '@iconify/types@2.0.0': {}
-
- '@iconify/utils@3.0.2':
- dependencies:
- '@antfu/install-pkg': 1.1.0
- '@antfu/utils': 9.3.0
- '@iconify/types': 2.0.0
- debug: 4.4.3
- globals: 15.15.0
- kolorist: 1.8.0
- local-pkg: 1.1.2
- mlly: 1.8.0
- transitivePeerDependencies:
- - supports-color
-
- '@icons-pack/react-simple-icons@13.8.0(react@19.0.1)':
- dependencies:
- react: 19.0.1
-
- '@img/colour@1.0.0':
- optional: true
-
- '@img/sharp-darwin-arm64@0.34.5':
- optionalDependencies:
- '@img/sharp-libvips-darwin-arm64': 1.2.4
- optional: true
-
- '@img/sharp-darwin-x64@0.34.5':
- optionalDependencies:
- '@img/sharp-libvips-darwin-x64': 1.2.4
- optional: true
-
- '@img/sharp-libvips-darwin-arm64@1.2.4':
- optional: true
-
- '@img/sharp-libvips-darwin-x64@1.2.4':
- optional: true
-
- '@img/sharp-libvips-linux-arm64@1.2.4':
- optional: true
-
- '@img/sharp-libvips-linux-arm@1.2.4':
- optional: true
-
- '@img/sharp-libvips-linux-ppc64@1.2.4':
- optional: true
-
- '@img/sharp-libvips-linux-riscv64@1.2.4':
- optional: true
-
- '@img/sharp-libvips-linux-s390x@1.2.4':
- optional: true
-
- '@img/sharp-libvips-linux-x64@1.2.4':
- optional: true
-
- '@img/sharp-libvips-linuxmusl-arm64@1.2.4':
- optional: true
-
- '@img/sharp-libvips-linuxmusl-x64@1.2.4':
- optional: true
-
- '@img/sharp-linux-arm64@0.34.5':
- optionalDependencies:
- '@img/sharp-libvips-linux-arm64': 1.2.4
- optional: true
-
- '@img/sharp-linux-arm@0.34.5':
- optionalDependencies:
- '@img/sharp-libvips-linux-arm': 1.2.4
- optional: true
-
- '@img/sharp-linux-ppc64@0.34.5':
- optionalDependencies:
- '@img/sharp-libvips-linux-ppc64': 1.2.4
- optional: true
-
- '@img/sharp-linux-riscv64@0.34.5':
- optionalDependencies:
- '@img/sharp-libvips-linux-riscv64': 1.2.4
- optional: true
-
- '@img/sharp-linux-s390x@0.34.5':
- optionalDependencies:
- '@img/sharp-libvips-linux-s390x': 1.2.4
- optional: true
-
- '@img/sharp-linux-x64@0.34.5':
- optionalDependencies:
- '@img/sharp-libvips-linux-x64': 1.2.4
- optional: true
-
- '@img/sharp-linuxmusl-arm64@0.34.5':
- optionalDependencies:
- '@img/sharp-libvips-linuxmusl-arm64': 1.2.4
- optional: true
-
- '@img/sharp-linuxmusl-x64@0.34.5':
- optionalDependencies:
- '@img/sharp-libvips-linuxmusl-x64': 1.2.4
- optional: true
-
- '@img/sharp-wasm32@0.34.5':
- dependencies:
- '@emnapi/runtime': 1.7.1
- optional: true
-
- '@img/sharp-win32-arm64@0.34.5':
- optional: true
-
- '@img/sharp-win32-ia32@0.34.5':
- optional: true
-
- '@img/sharp-win32-x64@0.34.5':
- optional: true
-
- '@jridgewell/gen-mapping@0.3.8':
- dependencies:
- '@jridgewell/set-array': 1.2.1
- '@jridgewell/sourcemap-codec': 1.5.0
- '@jridgewell/trace-mapping': 0.3.25
-
- '@jridgewell/remapping@2.3.5':
- dependencies:
- '@jridgewell/gen-mapping': 0.3.8
- '@jridgewell/trace-mapping': 0.3.25
-
- '@jridgewell/resolve-uri@3.1.2': {}
-
- '@jridgewell/set-array@1.2.1': {}
-
- '@jridgewell/sourcemap-codec@1.5.0': {}
-
- '@jridgewell/sourcemap-codec@1.5.5': {}
-
- '@jridgewell/trace-mapping@0.3.25':
- dependencies:
- '@jridgewell/resolve-uri': 3.1.2
- '@jridgewell/sourcemap-codec': 1.5.0
-
- '@lezer/common@1.2.3': {}
-
- '@lezer/highlight@1.2.1':
- dependencies:
- '@lezer/common': 1.2.3
-
- '@lezer/javascript@1.4.21':
- dependencies:
- '@lezer/common': 1.2.3
- '@lezer/highlight': 1.2.1
- '@lezer/lr': 1.4.2
-
- '@lezer/lr@1.4.2':
- dependencies:
- '@lezer/common': 1.2.3
-
- '@lezer/python@1.1.16':
- dependencies:
- '@lezer/common': 1.2.3
- '@lezer/highlight': 1.2.1
- '@lezer/lr': 1.4.2
-
- '@marijn/find-cluster-break@1.0.2': {}
-
- '@mermaid-js/parser@0.6.3':
- dependencies:
- langium: 3.3.1
-
- '@neondatabase/serverless@0.9.5':
- dependencies:
- '@types/pg': 8.11.6
- optional: true
-
- '@next/env@16.0.10': {}
-
- '@next/swc-darwin-arm64@16.0.10':
- optional: true
-
- '@next/swc-darwin-x64@16.0.10':
- optional: true
-
- '@next/swc-linux-arm64-gnu@16.0.10':
- optional: true
-
- '@next/swc-linux-arm64-musl@16.0.10':
- optional: true
-
- '@next/swc-linux-x64-gnu@16.0.10':
- optional: true
-
- '@next/swc-linux-x64-musl@16.0.10':
- optional: true
-
- '@next/swc-win32-arm64-msvc@16.0.10':
- optional: true
-
- '@next/swc-win32-x64-msvc@16.0.10':
- optional: true
-
- '@opentelemetry/api-logs@0.200.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/core@1.30.1(@opentelemetry/api@1.9.0)':
- dependencies:
- '@opentelemetry/api': 1.9.0
- '@opentelemetry/semantic-conventions': 1.28.0
-
- '@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.15.0
- require-in-the-middle: 7.5.2
- semver: 7.7.3
- shimmer: 1.2.1
- transitivePeerDependencies:
- - supports-color
-
- '@opentelemetry/resources@1.30.1(@opentelemetry/api@1.9.0)':
- dependencies:
- '@opentelemetry/api': 1.9.0
- '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.28.0
-
- '@opentelemetry/sdk-logs@0.57.2(@opentelemetry/api@1.9.0)':
- dependencies:
- '@opentelemetry/api': 1.9.0
- '@opentelemetry/api-logs': 0.57.2
- '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0)
- '@opentelemetry/resources': 1.30.1(@opentelemetry/api@1.9.0)
-
- '@opentelemetry/sdk-metrics@1.30.1(@opentelemetry/api@1.9.0)':
- dependencies:
- '@opentelemetry/api': 1.9.0
- '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0)
- '@opentelemetry/resources': 1.30.1(@opentelemetry/api@1.9.0)
-
- '@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0)':
- dependencies:
- '@opentelemetry/api': 1.9.0
- '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0)
- '@opentelemetry/resources': 1.30.1(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.28.0
-
- '@opentelemetry/semantic-conventions@1.28.0': {}
-
- '@panva/hkdf@1.2.1': {}
-
- '@playwright/test@1.51.0':
- dependencies:
- playwright: 1.51.0
-
- '@radix-ui/number@1.1.1': {}
-
- '@radix-ui/primitive@1.1.3': {}
-
- '@radix-ui/react-accessible-icon@1.1.7(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)':
- dependencies:
- '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- react: 19.0.1
- react-dom: 19.0.1(react@19.0.1)
- optionalDependencies:
- '@types/react': 18.3.18
- '@types/react-dom': 18.3.5(@types/react@18.3.18)
-
- '@radix-ui/react-accordion@1.2.12(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)':
- dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-collapsible': 1.1.12(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-collection': 1.1.7(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-context': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-direction': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-id': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.18)(react@19.0.1)
- react: 19.0.1
- react-dom: 19.0.1(react@19.0.1)
- optionalDependencies:
- '@types/react': 18.3.18
- '@types/react-dom': 18.3.5(@types/react@18.3.18)
-
- '@radix-ui/react-alert-dialog@1.1.15(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)':
- dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-context': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-dialog': 1.1.15(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-slot': 1.2.3(@types/react@18.3.18)(react@19.0.1)
- react: 19.0.1
- react-dom: 19.0.1(react@19.0.1)
- optionalDependencies:
- '@types/react': 18.3.18
- '@types/react-dom': 18.3.5(@types/react@18.3.18)
-
- '@radix-ui/react-arrow@1.1.7(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)':
- dependencies:
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- react: 19.0.1
- react-dom: 19.0.1(react@19.0.1)
- optionalDependencies:
- '@types/react': 18.3.18
- '@types/react-dom': 18.3.5(@types/react@18.3.18)
-
- '@radix-ui/react-aspect-ratio@1.1.7(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)':
- dependencies:
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- react: 19.0.1
- react-dom: 19.0.1(react@19.0.1)
- optionalDependencies:
- '@types/react': 18.3.18
- '@types/react-dom': 18.3.5(@types/react@18.3.18)
-
- '@radix-ui/react-avatar@1.1.10(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)':
- dependencies:
- '@radix-ui/react-context': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- react: 19.0.1
- react-dom: 19.0.1(react@19.0.1)
- optionalDependencies:
- '@types/react': 18.3.18
- '@types/react-dom': 18.3.5(@types/react@18.3.18)
-
- '@radix-ui/react-checkbox@1.3.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)':
- dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-context': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-use-previous': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-use-size': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- react: 19.0.1
- react-dom: 19.0.1(react@19.0.1)
- optionalDependencies:
- '@types/react': 18.3.18
- '@types/react-dom': 18.3.5(@types/react@18.3.18)
-
- '@radix-ui/react-collapsible@1.1.12(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)':
- dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-context': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-id': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- react: 19.0.1
- react-dom: 19.0.1(react@19.0.1)
- optionalDependencies:
- '@types/react': 18.3.18
- '@types/react-dom': 18.3.5(@types/react@18.3.18)
-
- '@radix-ui/react-collection@1.1.7(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)':
- dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-context': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-slot': 1.2.3(@types/react@18.3.18)(react@19.0.1)
- react: 19.0.1
- react-dom: 19.0.1(react@19.0.1)
- optionalDependencies:
- '@types/react': 18.3.18
- '@types/react-dom': 18.3.5(@types/react@18.3.18)
-
- '@radix-ui/react-compose-refs@1.1.1(@types/react@18.3.18)(react@19.0.1)':
- dependencies:
- react: 19.0.1
- optionalDependencies:
- '@types/react': 18.3.18
-
- '@radix-ui/react-compose-refs@1.1.2(@types/react@18.3.18)(react@19.0.1)':
- dependencies:
- react: 19.0.1
- optionalDependencies:
- '@types/react': 18.3.18
-
- '@radix-ui/react-context-menu@2.2.16(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)':
- dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-context': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-menu': 2.1.16(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.18)(react@19.0.1)
- react: 19.0.1
- react-dom: 19.0.1(react@19.0.1)
- optionalDependencies:
- '@types/react': 18.3.18
- '@types/react-dom': 18.3.5(@types/react@18.3.18)
-
- '@radix-ui/react-context@1.1.2(@types/react@18.3.18)(react@19.0.1)':
- dependencies:
- react: 19.0.1
- optionalDependencies:
- '@types/react': 18.3.18
-
- '@radix-ui/react-context@1.1.3(@types/react@18.3.18)(react@19.0.1)':
- dependencies:
- react: 19.0.1
- optionalDependencies:
- '@types/react': 18.3.18
-
- '@radix-ui/react-dialog@1.1.15(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)':
- dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-context': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-focus-guards': 1.1.3(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-id': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-portal': 1.1.9(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-slot': 1.2.3(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.18)(react@19.0.1)
- aria-hidden: 1.2.4
- react: 19.0.1
- react-dom: 19.0.1(react@19.0.1)
- react-remove-scroll: 2.6.3(@types/react@18.3.18)(react@19.0.1)
- optionalDependencies:
- '@types/react': 18.3.18
- '@types/react-dom': 18.3.5(@types/react@18.3.18)
-
- '@radix-ui/react-direction@1.1.1(@types/react@18.3.18)(react@19.0.1)':
- dependencies:
- react: 19.0.1
- optionalDependencies:
- '@types/react': 18.3.18
-
- '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)':
- dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- react: 19.0.1
- react-dom: 19.0.1(react@19.0.1)
- optionalDependencies:
- '@types/react': 18.3.18
- '@types/react-dom': 18.3.5(@types/react@18.3.18)
-
- '@radix-ui/react-dropdown-menu@2.1.16(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)':
- dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-context': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-id': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-menu': 2.1.16(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.18)(react@19.0.1)
- react: 19.0.1
- react-dom: 19.0.1(react@19.0.1)
- optionalDependencies:
- '@types/react': 18.3.18
- '@types/react-dom': 18.3.5(@types/react@18.3.18)
-
- '@radix-ui/react-focus-guards@1.1.3(@types/react@18.3.18)(react@19.0.1)':
- dependencies:
- react: 19.0.1
- optionalDependencies:
- '@types/react': 18.3.18
-
- '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)':
- dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- react: 19.0.1
- react-dom: 19.0.1(react@19.0.1)
- optionalDependencies:
- '@types/react': 18.3.18
- '@types/react-dom': 18.3.5(@types/react@18.3.18)
-
- '@radix-ui/react-form@0.1.8(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)':
- dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-context': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-id': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-label': 2.1.7(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- react: 19.0.1
- react-dom: 19.0.1(react@19.0.1)
- optionalDependencies:
- '@types/react': 18.3.18
- '@types/react-dom': 18.3.5(@types/react@18.3.18)
-
- '@radix-ui/react-hover-card@1.1.15(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)':
- dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-context': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-popper': 1.2.8(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-portal': 1.1.9(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.18)(react@19.0.1)
- react: 19.0.1
- react-dom: 19.0.1(react@19.0.1)
- optionalDependencies:
- '@types/react': 18.3.18
- '@types/react-dom': 18.3.5(@types/react@18.3.18)
-
- '@radix-ui/react-icons@1.3.2(react@19.0.1)':
- dependencies:
- react: 19.0.1
-
- '@radix-ui/react-id@1.1.1(@types/react@18.3.18)(react@19.0.1)':
- dependencies:
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- react: 19.0.1
- optionalDependencies:
- '@types/react': 18.3.18
-
- '@radix-ui/react-label@2.1.7(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)':
- dependencies:
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- react: 19.0.1
- react-dom: 19.0.1(react@19.0.1)
- optionalDependencies:
- '@types/react': 18.3.18
- '@types/react-dom': 18.3.5(@types/react@18.3.18)
-
- '@radix-ui/react-menu@2.1.16(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)':
- dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-collection': 1.1.7(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-context': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-direction': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-focus-guards': 1.1.3(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-id': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-popper': 1.2.8(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-portal': 1.1.9(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-slot': 1.2.3(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- aria-hidden: 1.2.4
- react: 19.0.1
- react-dom: 19.0.1(react@19.0.1)
- react-remove-scroll: 2.6.3(@types/react@18.3.18)(react@19.0.1)
- optionalDependencies:
- '@types/react': 18.3.18
- '@types/react-dom': 18.3.5(@types/react@18.3.18)
-
- '@radix-ui/react-menubar@1.1.16(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)':
- dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-collection': 1.1.7(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-context': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-direction': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-id': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-menu': 2.1.16(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.18)(react@19.0.1)
- react: 19.0.1
- react-dom: 19.0.1(react@19.0.1)
- optionalDependencies:
- '@types/react': 18.3.18
- '@types/react-dom': 18.3.5(@types/react@18.3.18)
-
- '@radix-ui/react-navigation-menu@1.2.14(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)':
- dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-collection': 1.1.7(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-context': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-direction': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-id': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-use-previous': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- react: 19.0.1
- react-dom: 19.0.1(react@19.0.1)
- optionalDependencies:
- '@types/react': 18.3.18
- '@types/react-dom': 18.3.5(@types/react@18.3.18)
-
- '@radix-ui/react-one-time-password-field@0.1.8(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)':
- dependencies:
- '@radix-ui/number': 1.1.1
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-collection': 1.1.7(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-context': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-direction': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-use-effect-event': 0.0.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- react: 19.0.1
- react-dom: 19.0.1(react@19.0.1)
- optionalDependencies:
- '@types/react': 18.3.18
- '@types/react-dom': 18.3.5(@types/react@18.3.18)
-
- '@radix-ui/react-password-toggle-field@0.1.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)':
- dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-context': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-id': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-use-effect-event': 0.0.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@18.3.18)(react@19.0.1)
- react: 19.0.1
- react-dom: 19.0.1(react@19.0.1)
- optionalDependencies:
- '@types/react': 18.3.18
- '@types/react-dom': 18.3.5(@types/react@18.3.18)
-
- '@radix-ui/react-popover@1.1.15(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)':
- dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-context': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-focus-guards': 1.1.3(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-id': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-popper': 1.2.8(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-portal': 1.1.9(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-slot': 1.2.3(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.18)(react@19.0.1)
- aria-hidden: 1.2.4
- react: 19.0.1
- react-dom: 19.0.1(react@19.0.1)
- react-remove-scroll: 2.6.3(@types/react@18.3.18)(react@19.0.1)
- optionalDependencies:
- '@types/react': 18.3.18
- '@types/react-dom': 18.3.5(@types/react@18.3.18)
-
- '@radix-ui/react-popper@1.2.8(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)':
- dependencies:
- '@floating-ui/react-dom': 2.1.2(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-arrow': 1.1.7(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-context': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-use-rect': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-use-size': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/rect': 1.1.1
- react: 19.0.1
- react-dom: 19.0.1(react@19.0.1)
- optionalDependencies:
- '@types/react': 18.3.18
- '@types/react-dom': 18.3.5(@types/react@18.3.18)
-
- '@radix-ui/react-portal@1.1.9(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)':
- dependencies:
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- react: 19.0.1
- react-dom: 19.0.1(react@19.0.1)
- optionalDependencies:
- '@types/react': 18.3.18
- '@types/react-dom': 18.3.5(@types/react@18.3.18)
-
- '@radix-ui/react-presence@1.1.5(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)':
- dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- react: 19.0.1
- react-dom: 19.0.1(react@19.0.1)
- optionalDependencies:
- '@types/react': 18.3.18
- '@types/react-dom': 18.3.5(@types/react@18.3.18)
-
- '@radix-ui/react-primitive@2.0.2(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)':
- dependencies:
- '@radix-ui/react-slot': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- react: 19.0.1
- react-dom: 19.0.1(react@19.0.1)
- optionalDependencies:
- '@types/react': 18.3.18
- '@types/react-dom': 18.3.5(@types/react@18.3.18)
-
- '@radix-ui/react-primitive@2.1.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)':
- dependencies:
- '@radix-ui/react-slot': 1.2.3(@types/react@18.3.18)(react@19.0.1)
- react: 19.0.1
- react-dom: 19.0.1(react@19.0.1)
- optionalDependencies:
- '@types/react': 18.3.18
- '@types/react-dom': 18.3.5(@types/react@18.3.18)
-
- '@radix-ui/react-primitive@2.1.4(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)':
- dependencies:
- '@radix-ui/react-slot': 1.2.4(@types/react@18.3.18)(react@19.0.1)
- react: 19.0.1
- react-dom: 19.0.1(react@19.0.1)
- optionalDependencies:
- '@types/react': 18.3.18
- '@types/react-dom': 18.3.5(@types/react@18.3.18)
-
- '@radix-ui/react-progress@1.1.7(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)':
- dependencies:
- '@radix-ui/react-context': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- react: 19.0.1
- react-dom: 19.0.1(react@19.0.1)
- optionalDependencies:
- '@types/react': 18.3.18
- '@types/react-dom': 18.3.5(@types/react@18.3.18)
-
- '@radix-ui/react-progress@1.1.8(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)':
- dependencies:
- '@radix-ui/react-context': 1.1.3(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-primitive': 2.1.4(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- react: 19.0.1
- react-dom: 19.0.1(react@19.0.1)
- optionalDependencies:
- '@types/react': 18.3.18
- '@types/react-dom': 18.3.5(@types/react@18.3.18)
-
- '@radix-ui/react-radio-group@1.3.8(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)':
- dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-context': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-direction': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-use-previous': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-use-size': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- react: 19.0.1
- react-dom: 19.0.1(react@19.0.1)
- optionalDependencies:
- '@types/react': 18.3.18
- '@types/react-dom': 18.3.5(@types/react@18.3.18)
-
- '@radix-ui/react-roving-focus@1.1.11(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)':
- dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-collection': 1.1.7(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-context': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-direction': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-id': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.18)(react@19.0.1)
- react: 19.0.1
- react-dom: 19.0.1(react@19.0.1)
- optionalDependencies:
- '@types/react': 18.3.18
- '@types/react-dom': 18.3.5(@types/react@18.3.18)
-
- '@radix-ui/react-scroll-area@1.2.10(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)':
- dependencies:
- '@radix-ui/number': 1.1.1
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-context': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-direction': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- react: 19.0.1
- react-dom: 19.0.1(react@19.0.1)
- optionalDependencies:
- '@types/react': 18.3.18
- '@types/react-dom': 18.3.5(@types/react@18.3.18)
-
- '@radix-ui/react-select@2.2.6(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)':
- dependencies:
- '@radix-ui/number': 1.1.1
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-collection': 1.1.7(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-context': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-direction': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-focus-guards': 1.1.3(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-id': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-popper': 1.2.8(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-portal': 1.1.9(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-slot': 1.2.3(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-use-previous': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- aria-hidden: 1.2.4
- react: 19.0.1
- react-dom: 19.0.1(react@19.0.1)
- react-remove-scroll: 2.6.3(@types/react@18.3.18)(react@19.0.1)
- optionalDependencies:
- '@types/react': 18.3.18
- '@types/react-dom': 18.3.5(@types/react@18.3.18)
-
- '@radix-ui/react-separator@1.1.7(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)':
- dependencies:
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- react: 19.0.1
- react-dom: 19.0.1(react@19.0.1)
- optionalDependencies:
- '@types/react': 18.3.18
- '@types/react-dom': 18.3.5(@types/react@18.3.18)
-
- '@radix-ui/react-separator@1.1.8(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)':
- dependencies:
- '@radix-ui/react-primitive': 2.1.4(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- react: 19.0.1
- react-dom: 19.0.1(react@19.0.1)
- optionalDependencies:
- '@types/react': 18.3.18
- '@types/react-dom': 18.3.5(@types/react@18.3.18)
-
- '@radix-ui/react-slider@1.3.6(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)':
- dependencies:
- '@radix-ui/number': 1.1.1
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-collection': 1.1.7(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-context': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-direction': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-use-previous': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-use-size': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- react: 19.0.1
- react-dom: 19.0.1(react@19.0.1)
- optionalDependencies:
- '@types/react': 18.3.18
- '@types/react-dom': 18.3.5(@types/react@18.3.18)
-
- '@radix-ui/react-slot@1.1.2(@types/react@18.3.18)(react@19.0.1)':
- dependencies:
- '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- react: 19.0.1
- optionalDependencies:
- '@types/react': 18.3.18
-
- '@radix-ui/react-slot@1.2.3(@types/react@18.3.18)(react@19.0.1)':
- dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- react: 19.0.1
- optionalDependencies:
- '@types/react': 18.3.18
-
- '@radix-ui/react-slot@1.2.4(@types/react@18.3.18)(react@19.0.1)':
- dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- react: 19.0.1
- optionalDependencies:
- '@types/react': 18.3.18
-
- '@radix-ui/react-switch@1.2.6(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)':
- dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-context': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-use-previous': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-use-size': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- react: 19.0.1
- react-dom: 19.0.1(react@19.0.1)
- optionalDependencies:
- '@types/react': 18.3.18
- '@types/react-dom': 18.3.5(@types/react@18.3.18)
-
- '@radix-ui/react-tabs@1.1.13(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)':
- dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-context': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-direction': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-id': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.18)(react@19.0.1)
- react: 19.0.1
- react-dom: 19.0.1(react@19.0.1)
- optionalDependencies:
- '@types/react': 18.3.18
- '@types/react-dom': 18.3.5(@types/react@18.3.18)
-
- '@radix-ui/react-toast@1.2.15(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)':
- dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-collection': 1.1.7(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-context': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-portal': 1.1.9(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- react: 19.0.1
- react-dom: 19.0.1(react@19.0.1)
- optionalDependencies:
- '@types/react': 18.3.18
- '@types/react-dom': 18.3.5(@types/react@18.3.18)
-
- '@radix-ui/react-toggle-group@1.1.11(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)':
- dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-context': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-direction': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-toggle': 1.1.10(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.18)(react@19.0.1)
- react: 19.0.1
- react-dom: 19.0.1(react@19.0.1)
- optionalDependencies:
- '@types/react': 18.3.18
- '@types/react-dom': 18.3.5(@types/react@18.3.18)
-
- '@radix-ui/react-toggle@1.1.10(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)':
- dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.18)(react@19.0.1)
- react: 19.0.1
- react-dom: 19.0.1(react@19.0.1)
- optionalDependencies:
- '@types/react': 18.3.18
- '@types/react-dom': 18.3.5(@types/react@18.3.18)
-
- '@radix-ui/react-toolbar@1.1.11(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)':
- dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-context': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-direction': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-separator': 1.1.7(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-toggle-group': 1.1.11(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- react: 19.0.1
- react-dom: 19.0.1(react@19.0.1)
- optionalDependencies:
- '@types/react': 18.3.18
- '@types/react-dom': 18.3.5(@types/react@18.3.18)
-
- '@radix-ui/react-tooltip@1.2.8(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)':
- dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-context': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-id': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-popper': 1.2.8(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-portal': 1.1.9(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-slot': 1.2.3(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- react: 19.0.1
- react-dom: 19.0.1(react@19.0.1)
- optionalDependencies:
- '@types/react': 18.3.18
- '@types/react-dom': 18.3.5(@types/react@18.3.18)
-
- '@radix-ui/react-use-callback-ref@1.1.1(@types/react@18.3.18)(react@19.0.1)':
- dependencies:
- react: 19.0.1
- optionalDependencies:
- '@types/react': 18.3.18
-
- '@radix-ui/react-use-controllable-state@1.2.2(@types/react@18.3.18)(react@19.0.1)':
- dependencies:
- '@radix-ui/react-use-effect-event': 0.0.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- react: 19.0.1
- optionalDependencies:
- '@types/react': 18.3.18
-
- '@radix-ui/react-use-effect-event@0.0.2(@types/react@18.3.18)(react@19.0.1)':
- dependencies:
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- react: 19.0.1
- optionalDependencies:
- '@types/react': 18.3.18
-
- '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@18.3.18)(react@19.0.1)':
- dependencies:
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- react: 19.0.1
- optionalDependencies:
- '@types/react': 18.3.18
-
- '@radix-ui/react-use-is-hydrated@0.1.0(@types/react@18.3.18)(react@19.0.1)':
- dependencies:
- react: 19.0.1
- use-sync-external-store: 1.6.0(react@19.0.1)
- optionalDependencies:
- '@types/react': 18.3.18
-
- '@radix-ui/react-use-layout-effect@1.1.1(@types/react@18.3.18)(react@19.0.1)':
- dependencies:
- react: 19.0.1
- optionalDependencies:
- '@types/react': 18.3.18
-
- '@radix-ui/react-use-previous@1.1.1(@types/react@18.3.18)(react@19.0.1)':
- dependencies:
- react: 19.0.1
- optionalDependencies:
- '@types/react': 18.3.18
-
- '@radix-ui/react-use-rect@1.1.1(@types/react@18.3.18)(react@19.0.1)':
- dependencies:
- '@radix-ui/rect': 1.1.1
- react: 19.0.1
- optionalDependencies:
- '@types/react': 18.3.18
-
- '@radix-ui/react-use-size@1.1.1(@types/react@18.3.18)(react@19.0.1)':
- dependencies:
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- react: 19.0.1
- optionalDependencies:
- '@types/react': 18.3.18
-
- '@radix-ui/react-visually-hidden@1.1.2(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)':
- dependencies:
- '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- react: 19.0.1
- react-dom: 19.0.1(react@19.0.1)
- optionalDependencies:
- '@types/react': 18.3.18
- '@types/react-dom': 18.3.5(@types/react@18.3.18)
-
- '@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)':
- dependencies:
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- react: 19.0.1
- react-dom: 19.0.1(react@19.0.1)
- optionalDependencies:
- '@types/react': 18.3.18
- '@types/react-dom': 18.3.5(@types/react@18.3.18)
-
- '@radix-ui/rect@1.1.1': {}
-
- '@redis/bloom@5.9.0(@redis/client@5.9.0)':
- dependencies:
- '@redis/client': 5.9.0
-
- '@redis/client@5.9.0':
- dependencies:
- cluster-key-slot: 1.1.2
-
- '@redis/json@5.9.0(@redis/client@5.9.0)':
- dependencies:
- '@redis/client': 5.9.0
-
- '@redis/search@5.9.0(@redis/client@5.9.0)':
- dependencies:
- '@redis/client': 5.9.0
-
- '@redis/time-series@5.9.0(@redis/client@5.9.0)':
- dependencies:
- '@redis/client': 5.9.0
-
- '@rollup/rollup-android-arm-eabi@4.52.5':
- optional: true
-
- '@rollup/rollup-android-arm64@4.52.5':
- optional: true
-
- '@rollup/rollup-darwin-arm64@4.52.5':
- optional: true
-
- '@rollup/rollup-darwin-x64@4.52.5':
- optional: true
-
- '@rollup/rollup-freebsd-arm64@4.52.5':
- optional: true
-
- '@rollup/rollup-freebsd-x64@4.52.5':
- optional: true
-
- '@rollup/rollup-linux-arm-gnueabihf@4.52.5':
- optional: true
-
- '@rollup/rollup-linux-arm-musleabihf@4.52.5':
- optional: true
-
- '@rollup/rollup-linux-arm64-gnu@4.52.5':
- optional: true
-
- '@rollup/rollup-linux-arm64-musl@4.52.5':
- optional: true
-
- '@rollup/rollup-linux-loong64-gnu@4.52.5':
- optional: true
-
- '@rollup/rollup-linux-ppc64-gnu@4.52.5':
- optional: true
-
- '@rollup/rollup-linux-riscv64-gnu@4.52.5':
- optional: true
-
- '@rollup/rollup-linux-riscv64-musl@4.52.5':
- optional: true
-
- '@rollup/rollup-linux-s390x-gnu@4.52.5':
- optional: true
-
- '@rollup/rollup-linux-x64-gnu@4.52.5':
- optional: true
-
- '@rollup/rollup-linux-x64-musl@4.52.5':
- optional: true
-
- '@rollup/rollup-openharmony-arm64@4.52.5':
- optional: true
-
- '@rollup/rollup-win32-arm64-msvc@4.52.5':
- optional: true
-
- '@rollup/rollup-win32-ia32-msvc@4.52.5':
- optional: true
-
- '@rollup/rollup-win32-x64-gnu@4.52.5':
- optional: true
-
- '@rollup/rollup-win32-x64-msvc@4.52.5':
- optional: true
-
- '@shikijs/core@3.14.0':
- dependencies:
- '@shikijs/types': 3.14.0
- '@shikijs/vscode-textmate': 10.0.2
- '@types/hast': 3.0.4
- hast-util-to-html: 9.0.5
-
- '@shikijs/engine-javascript@3.14.0':
- dependencies:
- '@shikijs/types': 3.14.0
- '@shikijs/vscode-textmate': 10.0.2
- oniguruma-to-es: 4.3.3
-
- '@shikijs/engine-oniguruma@3.14.0':
- dependencies:
- '@shikijs/types': 3.14.0
- '@shikijs/vscode-textmate': 10.0.2
-
- '@shikijs/langs@3.14.0':
- dependencies:
- '@shikijs/types': 3.14.0
-
- '@shikijs/themes@3.14.0':
- dependencies:
- '@shikijs/types': 3.14.0
-
- '@shikijs/types@3.14.0':
- dependencies:
- '@shikijs/vscode-textmate': 10.0.2
- '@types/hast': 3.0.4
-
- '@shikijs/vscode-textmate@10.0.2': {}
-
- '@standard-schema/spec@1.1.0': {}
-
- '@swc/helpers@0.5.15':
- dependencies:
- tslib: 2.8.1
-
- '@tailwindcss/node@4.1.16':
- dependencies:
- '@jridgewell/remapping': 2.3.5
- enhanced-resolve: 5.18.3
- jiti: 2.6.1
- lightningcss: 1.30.2
- magic-string: 0.30.21
- source-map-js: 1.2.1
- tailwindcss: 4.1.16
-
- '@tailwindcss/oxide-android-arm64@4.1.16':
- optional: true
-
- '@tailwindcss/oxide-darwin-arm64@4.1.16':
- optional: true
-
- '@tailwindcss/oxide-darwin-x64@4.1.16':
- optional: true
-
- '@tailwindcss/oxide-freebsd-x64@4.1.16':
- optional: true
-
- '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.16':
- optional: true
-
- '@tailwindcss/oxide-linux-arm64-gnu@4.1.16':
- optional: true
-
- '@tailwindcss/oxide-linux-arm64-musl@4.1.16':
- optional: true
-
- '@tailwindcss/oxide-linux-x64-gnu@4.1.16':
- optional: true
-
- '@tailwindcss/oxide-linux-x64-musl@4.1.16':
- optional: true
-
- '@tailwindcss/oxide-wasm32-wasi@4.1.16':
- optional: true
-
- '@tailwindcss/oxide-win32-arm64-msvc@4.1.16':
- optional: true
-
- '@tailwindcss/oxide-win32-x64-msvc@4.1.16':
- optional: true
-
- '@tailwindcss/oxide@4.1.16':
- optionalDependencies:
- '@tailwindcss/oxide-android-arm64': 4.1.16
- '@tailwindcss/oxide-darwin-arm64': 4.1.16
- '@tailwindcss/oxide-darwin-x64': 4.1.16
- '@tailwindcss/oxide-freebsd-x64': 4.1.16
- '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.16
- '@tailwindcss/oxide-linux-arm64-gnu': 4.1.16
- '@tailwindcss/oxide-linux-arm64-musl': 4.1.16
- '@tailwindcss/oxide-linux-x64-gnu': 4.1.16
- '@tailwindcss/oxide-linux-x64-musl': 4.1.16
- '@tailwindcss/oxide-wasm32-wasi': 4.1.16
- '@tailwindcss/oxide-win32-arm64-msvc': 4.1.16
- '@tailwindcss/oxide-win32-x64-msvc': 4.1.16
-
- '@tailwindcss/postcss@4.1.16':
- dependencies:
- '@alloc/quick-lru': 5.2.0
- '@tailwindcss/node': 4.1.16
- '@tailwindcss/oxide': 4.1.16
- postcss: 8.5.3
- tailwindcss: 4.1.16
-
- '@tailwindcss/typography@0.5.16(tailwindcss@4.1.16)':
- dependencies:
- lodash.castarray: 4.4.0
- lodash.isplainobject: 4.0.6
- lodash.merge: 4.6.2
- postcss-selector-parser: 6.0.10
- tailwindcss: 4.1.16
-
- '@trpc/server@11.7.1(typescript@5.8.2)':
- dependencies:
- typescript: 5.8.2
-
- '@types/chai@5.2.3':
- dependencies:
- '@types/deep-eql': 4.0.2
- assertion-error: 2.0.1
-
- '@types/cookie@0.6.0': {}
-
- '@types/d3-array@3.2.2': {}
-
- '@types/d3-axis@3.0.6':
- dependencies:
- '@types/d3-selection': 3.0.11
-
- '@types/d3-brush@3.0.6':
- dependencies:
- '@types/d3-selection': 3.0.11
-
- '@types/d3-chord@3.0.6': {}
-
- '@types/d3-color@3.1.3': {}
-
- '@types/d3-contour@3.0.6':
- dependencies:
- '@types/d3-array': 3.2.2
- '@types/geojson': 7946.0.16
-
- '@types/d3-delaunay@6.0.4': {}
-
- '@types/d3-dispatch@3.0.7': {}
-
- '@types/d3-drag@3.0.7':
- dependencies:
- '@types/d3-selection': 3.0.11
-
- '@types/d3-dsv@3.0.7': {}
-
- '@types/d3-ease@3.0.2': {}
-
- '@types/d3-fetch@3.0.7':
- dependencies:
- '@types/d3-dsv': 3.0.7
-
- '@types/d3-force@3.0.10': {}
-
- '@types/d3-format@3.0.4': {}
-
- '@types/d3-geo@3.1.0':
- dependencies:
- '@types/geojson': 7946.0.16
-
- '@types/d3-hierarchy@3.1.7': {}
-
- '@types/d3-interpolate@3.0.4':
- dependencies:
- '@types/d3-color': 3.1.3
-
- '@types/d3-path@3.1.1': {}
-
- '@types/d3-polygon@3.0.2': {}
-
- '@types/d3-quadtree@3.0.6': {}
-
- '@types/d3-random@3.0.3': {}
-
- '@types/d3-scale-chromatic@3.1.0': {}
-
- '@types/d3-scale@4.0.9':
- dependencies:
- '@types/d3-time': 3.0.4
-
- '@types/d3-selection@3.0.11': {}
-
- '@types/d3-shape@3.1.7':
- dependencies:
- '@types/d3-path': 3.1.1
-
- '@types/d3-time-format@4.0.3': {}
-
- '@types/d3-time@3.0.4': {}
-
- '@types/d3-timer@3.0.2': {}
-
- '@types/d3-transition@3.0.9':
- dependencies:
- '@types/d3-selection': 3.0.11
-
- '@types/d3-zoom@3.0.8':
- dependencies:
- '@types/d3-interpolate': 3.0.4
- '@types/d3-selection': 3.0.11
-
- '@types/d3@7.4.3':
- dependencies:
- '@types/d3-array': 3.2.2
- '@types/d3-axis': 3.0.6
- '@types/d3-brush': 3.0.6
- '@types/d3-chord': 3.0.6
- '@types/d3-color': 3.1.3
- '@types/d3-contour': 3.0.6
- '@types/d3-delaunay': 6.0.4
- '@types/d3-dispatch': 3.0.7
- '@types/d3-drag': 3.0.7
- '@types/d3-dsv': 3.0.7
- '@types/d3-ease': 3.0.2
- '@types/d3-fetch': 3.0.7
- '@types/d3-force': 3.0.10
- '@types/d3-format': 3.0.4
- '@types/d3-geo': 3.1.0
- '@types/d3-hierarchy': 3.1.7
- '@types/d3-interpolate': 3.0.4
- '@types/d3-path': 3.1.1
- '@types/d3-polygon': 3.0.2
- '@types/d3-quadtree': 3.0.6
- '@types/d3-random': 3.0.3
- '@types/d3-scale': 4.0.9
- '@types/d3-scale-chromatic': 3.1.0
- '@types/d3-selection': 3.0.11
- '@types/d3-shape': 3.1.7
- '@types/d3-time': 3.0.4
- '@types/d3-time-format': 4.0.3
- '@types/d3-timer': 3.0.2
- '@types/d3-transition': 3.0.9
- '@types/d3-zoom': 3.0.8
-
- '@types/debug@4.1.12':
- dependencies:
- '@types/ms': 2.1.0
-
- '@types/deep-eql@4.0.2': {}
-
- '@types/estree-jsx@1.0.5':
- dependencies:
- '@types/estree': 1.0.6
-
- '@types/estree@1.0.6': {}
-
- '@types/estree@1.0.8': {}
-
- '@types/geojson@7946.0.16': {}
-
- '@types/hast@2.3.10':
- dependencies:
- '@types/unist': 2.0.11
-
- '@types/hast@3.0.4':
- dependencies:
- '@types/unist': 3.0.3
-
- '@types/katex@0.16.7': {}
-
- '@types/linkify-it@5.0.0': {}
-
- '@types/markdown-it@14.1.2':
- dependencies:
- '@types/linkify-it': 5.0.0
- '@types/mdurl': 2.0.0
-
- '@types/mdast@4.0.4':
- dependencies:
- '@types/unist': 3.0.3
-
- '@types/mdurl@2.0.0': {}
-
- '@types/ms@2.1.0': {}
-
- '@types/node@22.13.10':
- dependencies:
- undici-types: 6.20.0
-
- '@types/omelette@0.4.5': {}
-
- '@types/papaparse@5.3.15':
- dependencies:
- '@types/node': 22.13.10
-
- '@types/pdf-parse@1.1.4': {}
-
- '@types/pg@8.11.6':
- dependencies:
- '@types/node': 22.13.10
- pg-protocol: 1.8.0
- pg-types: 4.0.2
- optional: true
-
- '@types/prop-types@15.7.14': {}
-
- '@types/react-dom@18.3.5(@types/react@18.3.18)':
- dependencies:
- '@types/react': 18.3.18
-
- '@types/react-syntax-highlighter@15.5.13':
- dependencies:
- '@types/react': 18.3.18
-
- '@types/react@18.3.18':
- dependencies:
- '@types/prop-types': 15.7.14
- csstype: 3.1.3
-
- '@types/shimmer@1.2.0': {}
-
- '@types/trusted-types@2.0.7':
- optional: true
-
- '@types/unist@2.0.11': {}
-
- '@types/unist@3.0.3': {}
-
- '@ungap/structured-clone@1.3.0': {}
-
- '@vercel/analytics@1.5.0(next@16.0.10(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(react-dom@19.0.1(react@19.0.1))(react@19.0.1))(react@19.0.1)':
- optionalDependencies:
- next: 16.0.10(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- react: 19.0.1
-
- '@vercel/blob@0.24.1':
- dependencies:
- async-retry: 1.3.3
- bytes: 3.1.2
- is-buffer: 2.0.5
- undici: 5.28.5
-
- '@vercel/functions@2.2.13':
- dependencies:
- '@vercel/oidc': 2.0.2
-
- '@vercel/oidc@2.0.2':
- dependencies:
- '@types/ms': 2.1.0
- ms: 2.1.3
-
- '@vercel/oidc@3.0.5': {}
-
- '@vercel/otel@1.14.0(@opentelemetry/api-logs@0.200.0)(@opentelemetry/api@1.9.0)(@opentelemetry/instrumentation@0.57.2(@opentelemetry/api@1.9.0))(@opentelemetry/resources@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.57.2(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))':
- dependencies:
- '@opentelemetry/api': 1.9.0
- '@opentelemetry/api-logs': 0.200.0
- '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0)
- '@opentelemetry/resources': 1.30.1(@opentelemetry/api@1.9.0)
- '@opentelemetry/sdk-logs': 0.57.2(@opentelemetry/api@1.9.0)
- '@opentelemetry/sdk-metrics': 1.30.1(@opentelemetry/api@1.9.0)
- '@opentelemetry/sdk-trace-base': 1.30.1(@opentelemetry/api@1.9.0)
-
- '@vercel/postgres@0.10.0':
- dependencies:
- '@neondatabase/serverless': 0.9.5
- bufferutil: 4.0.9
- ws: 8.18.1(bufferutil@4.0.9)
- transitivePeerDependencies:
- - utf-8-validate
- optional: true
-
- '@vitest/expect@3.2.4':
- dependencies:
- '@types/chai': 5.2.3
- '@vitest/spy': 3.2.4
- '@vitest/utils': 3.2.4
- chai: 5.3.3
- tinyrainbow: 2.0.0
-
- '@vitest/mocker@3.2.4(vite@7.1.12(@types/node@22.13.10)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.19.3)(yaml@2.7.0))':
- dependencies:
- '@vitest/spy': 3.2.4
- estree-walker: 3.0.3
- magic-string: 0.30.21
- optionalDependencies:
- vite: 7.1.12(@types/node@22.13.10)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.19.3)(yaml@2.7.0)
-
- '@vitest/pretty-format@3.2.4':
- dependencies:
- tinyrainbow: 2.0.0
-
- '@vitest/runner@3.2.4':
- dependencies:
- '@vitest/utils': 3.2.4
- pathe: 2.0.3
- strip-literal: 3.1.0
-
- '@vitest/snapshot@3.2.4':
- dependencies:
- '@vitest/pretty-format': 3.2.4
- magic-string: 0.30.21
- pathe: 2.0.3
-
- '@vitest/spy@3.2.4':
- dependencies:
- tinyspy: 4.0.4
-
- '@vitest/utils@3.2.4':
- dependencies:
- '@vitest/pretty-format': 3.2.4
- loupe: 3.2.1
- tinyrainbow: 2.0.0
-
- '@xyflow/react@12.10.0(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)':
- dependencies:
- '@xyflow/system': 0.0.74
- classcat: 5.0.5
- react: 19.0.1
- react-dom: 19.0.1(react@19.0.1)
- zustand: 4.5.7(@types/react@18.3.18)(react@19.0.1)
- transitivePeerDependencies:
- - '@types/react'
- - immer
-
- '@xyflow/system@0.0.74':
- dependencies:
- '@types/d3-drag': 3.0.7
- '@types/d3-interpolate': 3.0.4
- '@types/d3-selection': 3.0.11
- '@types/d3-transition': 3.0.9
- '@types/d3-zoom': 3.0.8
- d3-drag: 3.0.0
- d3-interpolate: 3.0.1
- d3-selection: 3.0.0
- d3-zoom: 3.0.0
-
- acorn-import-attributes@1.9.5(acorn@8.15.0):
- dependencies:
- acorn: 8.15.0
-
- acorn@8.15.0: {}
-
- ai@6.0.0-beta.159(zod@3.25.76):
- dependencies:
- '@ai-sdk/gateway': 2.0.0-beta.85(zod@3.25.76)
- '@ai-sdk/provider': 3.0.0-beta.27
- '@ai-sdk/provider-utils': 4.0.0-beta.53(zod@3.25.76)
- '@opentelemetry/api': 1.9.0
- zod: 3.25.76
-
- argparse@2.0.1: {}
-
- aria-hidden@1.2.4:
- dependencies:
- tslib: 2.8.1
-
- assertion-error@2.0.1: {}
-
- async-retry@1.3.3:
- dependencies:
- retry: 0.13.1
-
- bail@2.0.2: {}
-
- bcrypt-ts@5.0.3: {}
-
- buffer-from@1.1.2: {}
-
- bufferutil@4.0.9:
- dependencies:
- node-gyp-build: 4.8.4
- optional: true
-
- bytes@3.1.2: {}
-
- cac@6.7.14: {}
-
- caniuse-lite@1.0.30001704: {}
-
- ccount@2.0.1: {}
-
- chai@5.3.3:
- dependencies:
- assertion-error: 2.0.1
- check-error: 2.1.1
- deep-eql: 5.0.2
- loupe: 3.2.1
- pathval: 2.0.1
-
- character-entities-html4@2.1.0: {}
-
- character-entities-legacy@1.1.4: {}
-
- character-entities-legacy@3.0.0: {}
-
- character-entities@1.2.4: {}
-
- character-entities@2.0.2: {}
-
- character-reference-invalid@1.1.4: {}
-
- character-reference-invalid@2.0.1: {}
-
- check-error@2.1.1: {}
-
- chevrotain-allstar@0.3.1(chevrotain@11.0.3):
- dependencies:
- chevrotain: 11.0.3
- lodash-es: 4.17.21
-
- chevrotain@11.0.3:
- dependencies:
- '@chevrotain/cst-dts-gen': 11.0.3
- '@chevrotain/gast': 11.0.3
- '@chevrotain/regexp-to-ast': 11.0.3
- '@chevrotain/types': 11.0.3
- '@chevrotain/utils': 11.0.3
- lodash-es: 4.17.21
-
- citty@0.1.6:
- dependencies:
- consola: 3.4.2
-
- cjs-module-lexer@1.4.3: {}
-
- class-variance-authority@0.7.1:
- dependencies:
- clsx: 2.1.1
-
- classcat@5.0.5: {}
-
- classnames@2.5.1: {}
-
- client-only@0.0.1: {}
-
- clsx@2.1.1: {}
-
- cluster-key-slot@1.1.2: {}
-
- cmdk@1.1.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1):
- dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-dialog': 1.1.15(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-id': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- react: 19.0.1
- react-dom: 19.0.1(react@19.0.1)
- transitivePeerDependencies:
- - '@types/react'
- - '@types/react-dom'
-
- codemirror@6.0.1:
- dependencies:
- '@codemirror/autocomplete': 6.18.6
- '@codemirror/commands': 6.8.0
- '@codemirror/language': 6.11.0
- '@codemirror/lint': 6.8.4
- '@codemirror/search': 6.5.10
- '@codemirror/state': 6.5.2
- '@codemirror/view': 6.36.4
-
- comma-separated-tokens@1.0.8: {}
-
- comma-separated-tokens@2.0.3: {}
-
- commander@14.0.2: {}
-
- commander@7.2.0: {}
-
- commander@8.3.0: {}
-
- confbox@0.1.8: {}
-
- confbox@0.2.2: {}
-
- consola@3.4.2: {}
-
- cookie@0.7.1: {}
-
- cose-base@1.0.3:
- dependencies:
- layout-base: 1.0.2
-
- cose-base@2.2.0:
- dependencies:
- layout-base: 2.0.1
-
- crelt@1.0.6: {}
-
- cssesc@3.0.0: {}
-
- csstype@3.1.3: {}
-
- cytoscape-cose-bilkent@4.1.0(cytoscape@3.33.1):
- dependencies:
- cose-base: 1.0.3
- cytoscape: 3.33.1
-
- cytoscape-fcose@2.2.0(cytoscape@3.33.1):
- dependencies:
- cose-base: 2.2.0
- cytoscape: 3.33.1
-
- cytoscape@3.33.1: {}
-
- d3-array@2.12.1:
- dependencies:
- internmap: 1.0.1
-
- d3-array@3.2.4:
- dependencies:
- internmap: 2.0.3
-
- d3-axis@3.0.0: {}
-
- d3-brush@3.0.0:
- dependencies:
- d3-dispatch: 3.0.1
- d3-drag: 3.0.0
- d3-interpolate: 3.0.1
- d3-selection: 3.0.0
- d3-transition: 3.0.1(d3-selection@3.0.0)
-
- d3-chord@3.0.1:
- dependencies:
- d3-path: 3.1.0
-
- d3-color@3.1.0: {}
-
- d3-contour@4.0.2:
- dependencies:
- d3-array: 3.2.4
-
- d3-delaunay@6.0.4:
- dependencies:
- delaunator: 5.0.1
-
- d3-dispatch@3.0.1: {}
-
- d3-drag@3.0.0:
- dependencies:
- d3-dispatch: 3.0.1
- d3-selection: 3.0.0
-
- d3-dsv@3.0.1:
- dependencies:
- commander: 7.2.0
- iconv-lite: 0.6.3
- rw: 1.3.3
-
- d3-ease@3.0.1: {}
-
- d3-fetch@3.0.1:
- dependencies:
- d3-dsv: 3.0.1
-
- d3-force@3.0.0:
- dependencies:
- d3-dispatch: 3.0.1
- d3-quadtree: 3.0.1
- d3-timer: 3.0.1
-
- d3-format@3.1.0: {}
-
- d3-geo@3.1.1:
- dependencies:
- d3-array: 3.2.4
-
- d3-hierarchy@3.1.2: {}
-
- d3-interpolate@3.0.1:
- dependencies:
- d3-color: 3.1.0
-
- d3-path@1.0.9: {}
-
- d3-path@3.1.0: {}
-
- d3-polygon@3.0.1: {}
-
- d3-quadtree@3.0.1: {}
-
- d3-random@3.0.1: {}
-
- d3-sankey@0.12.3:
- dependencies:
- d3-array: 2.12.1
- d3-shape: 1.3.7
-
- d3-scale-chromatic@3.1.0:
- dependencies:
- d3-color: 3.1.0
- d3-interpolate: 3.0.1
-
- d3-scale@4.0.2:
- dependencies:
- d3-array: 3.2.4
- d3-format: 3.1.0
- d3-interpolate: 3.0.1
- d3-time: 3.1.0
- d3-time-format: 4.1.0
-
- d3-selection@3.0.0: {}
-
- d3-shape@1.3.7:
- dependencies:
- d3-path: 1.0.9
-
- d3-shape@3.2.0:
- dependencies:
- d3-path: 3.1.0
-
- d3-time-format@4.1.0:
- dependencies:
- d3-time: 3.1.0
-
- d3-time@3.1.0:
- dependencies:
- d3-array: 3.2.4
-
- d3-timer@3.0.1: {}
-
- d3-transition@3.0.1(d3-selection@3.0.0):
- dependencies:
- d3-color: 3.1.0
- d3-dispatch: 3.0.1
- d3-ease: 3.0.1
- d3-interpolate: 3.0.1
- d3-selection: 3.0.0
- d3-timer: 3.0.1
-
- d3-zoom@3.0.0:
- dependencies:
- d3-dispatch: 3.0.1
- d3-drag: 3.0.0
- d3-interpolate: 3.0.1
- d3-selection: 3.0.0
- d3-transition: 3.0.1(d3-selection@3.0.0)
-
- d3@7.9.0:
- dependencies:
- d3-array: 3.2.4
- d3-axis: 3.0.0
- d3-brush: 3.0.0
- d3-chord: 3.0.1
- d3-color: 3.1.0
- d3-contour: 4.0.2
- d3-delaunay: 6.0.4
- d3-dispatch: 3.0.1
- d3-drag: 3.0.0
- d3-dsv: 3.0.1
- d3-ease: 3.0.1
- d3-fetch: 3.0.1
- d3-force: 3.0.0
- d3-format: 3.1.0
- d3-geo: 3.1.1
- d3-hierarchy: 3.1.2
- d3-interpolate: 3.0.1
- d3-path: 3.1.0
- d3-polygon: 3.0.1
- d3-quadtree: 3.0.1
- d3-random: 3.0.1
- d3-scale: 4.0.2
- d3-scale-chromatic: 3.1.0
- d3-selection: 3.0.0
- d3-shape: 3.2.0
- d3-time: 3.1.0
- d3-time-format: 4.1.0
- d3-timer: 3.0.1
- d3-transition: 3.0.1(d3-selection@3.0.0)
- d3-zoom: 3.0.0
-
- dagre-d3-es@7.0.13:
- dependencies:
- d3: 7.9.0
- lodash-es: 4.17.21
-
- date-fns@4.1.0: {}
-
- dayjs@1.11.19: {}
-
- debug@4.4.0:
- dependencies:
- ms: 2.1.3
-
- debug@4.4.3:
- dependencies:
- ms: 2.1.3
-
- decode-named-character-reference@1.1.0:
- dependencies:
- character-entities: 2.0.2
-
- deep-eql@5.0.2: {}
-
- deepmerge@4.3.1: {}
-
- delaunator@5.0.1:
- dependencies:
- robust-predicates: 3.0.2
-
- dequal@2.0.3: {}
-
- detect-libc@2.1.2: {}
-
- detect-node-es@1.1.0: {}
-
- devlop@1.1.0:
- dependencies:
- dequal: 2.0.3
-
- diff-match-patch@1.0.5: {}
-
- dompurify@3.3.0:
- optionalDependencies:
- '@types/trusted-types': 2.0.7
-
- dotenv@16.4.7: {}
-
- drizzle-kit@0.25.0:
- dependencies:
- '@drizzle-team/brocli': 0.10.2
- '@esbuild-kit/esm-loader': 2.6.5
- esbuild: 0.19.12
- esbuild-register: 3.6.0(esbuild@0.19.12)
- transitivePeerDependencies:
- - supports-color
-
- drizzle-orm@0.34.1(@neondatabase/serverless@0.9.5)(@opentelemetry/api@1.9.0)(@types/pg@8.11.6)(@types/react@18.3.18)(@vercel/postgres@0.10.0)(postgres@3.4.5)(react@19.0.1):
- optionalDependencies:
- '@neondatabase/serverless': 0.9.5
- '@opentelemetry/api': 1.9.0
- '@types/pg': 8.11.6
- '@types/react': 18.3.18
- '@vercel/postgres': 0.10.0
- postgres: 3.4.5
- react: 19.0.1
-
- embla-carousel-react@8.6.0(react@19.0.1):
- dependencies:
- embla-carousel: 8.6.0
- embla-carousel-reactive-utils: 8.6.0(embla-carousel@8.6.0)
- react: 19.0.1
-
- embla-carousel-reactive-utils@8.6.0(embla-carousel@8.6.0):
- dependencies:
- embla-carousel: 8.6.0
-
- embla-carousel@8.6.0: {}
-
- enhanced-resolve@5.18.3:
- dependencies:
- graceful-fs: 4.2.11
- tapable: 2.2.1
-
- entities@4.5.0: {}
-
- entities@6.0.1: {}
-
- es-module-lexer@1.7.0: {}
-
- esbuild-register@3.6.0(esbuild@0.19.12):
- dependencies:
- debug: 4.4.0
- esbuild: 0.19.12
- transitivePeerDependencies:
- - supports-color
-
- esbuild@0.18.20:
- optionalDependencies:
- '@esbuild/android-arm': 0.18.20
- '@esbuild/android-arm64': 0.18.20
- '@esbuild/android-x64': 0.18.20
- '@esbuild/darwin-arm64': 0.18.20
- '@esbuild/darwin-x64': 0.18.20
- '@esbuild/freebsd-arm64': 0.18.20
- '@esbuild/freebsd-x64': 0.18.20
- '@esbuild/linux-arm': 0.18.20
- '@esbuild/linux-arm64': 0.18.20
- '@esbuild/linux-ia32': 0.18.20
- '@esbuild/linux-loong64': 0.18.20
- '@esbuild/linux-mips64el': 0.18.20
- '@esbuild/linux-ppc64': 0.18.20
- '@esbuild/linux-riscv64': 0.18.20
- '@esbuild/linux-s390x': 0.18.20
- '@esbuild/linux-x64': 0.18.20
- '@esbuild/netbsd-x64': 0.18.20
- '@esbuild/openbsd-x64': 0.18.20
- '@esbuild/sunos-x64': 0.18.20
- '@esbuild/win32-arm64': 0.18.20
- '@esbuild/win32-ia32': 0.18.20
- '@esbuild/win32-x64': 0.18.20
-
- esbuild@0.19.12:
- optionalDependencies:
- '@esbuild/aix-ppc64': 0.19.12
- '@esbuild/android-arm': 0.19.12
- '@esbuild/android-arm64': 0.19.12
- '@esbuild/android-x64': 0.19.12
- '@esbuild/darwin-arm64': 0.19.12
- '@esbuild/darwin-x64': 0.19.12
- '@esbuild/freebsd-arm64': 0.19.12
- '@esbuild/freebsd-x64': 0.19.12
- '@esbuild/linux-arm': 0.19.12
- '@esbuild/linux-arm64': 0.19.12
- '@esbuild/linux-ia32': 0.19.12
- '@esbuild/linux-loong64': 0.19.12
- '@esbuild/linux-mips64el': 0.19.12
- '@esbuild/linux-ppc64': 0.19.12
- '@esbuild/linux-riscv64': 0.19.12
- '@esbuild/linux-s390x': 0.19.12
- '@esbuild/linux-x64': 0.19.12
- '@esbuild/netbsd-x64': 0.19.12
- '@esbuild/openbsd-x64': 0.19.12
- '@esbuild/sunos-x64': 0.19.12
- '@esbuild/win32-arm64': 0.19.12
- '@esbuild/win32-ia32': 0.19.12
- '@esbuild/win32-x64': 0.19.12
-
- esbuild@0.25.1:
- optionalDependencies:
- '@esbuild/aix-ppc64': 0.25.1
- '@esbuild/android-arm': 0.25.1
- '@esbuild/android-arm64': 0.25.1
- '@esbuild/android-x64': 0.25.1
- '@esbuild/darwin-arm64': 0.25.1
- '@esbuild/darwin-x64': 0.25.1
- '@esbuild/freebsd-arm64': 0.25.1
- '@esbuild/freebsd-x64': 0.25.1
- '@esbuild/linux-arm': 0.25.1
- '@esbuild/linux-arm64': 0.25.1
- '@esbuild/linux-ia32': 0.25.1
- '@esbuild/linux-loong64': 0.25.1
- '@esbuild/linux-mips64el': 0.25.1
- '@esbuild/linux-ppc64': 0.25.1
- '@esbuild/linux-riscv64': 0.25.1
- '@esbuild/linux-s390x': 0.25.1
- '@esbuild/linux-x64': 0.25.1
- '@esbuild/netbsd-arm64': 0.25.1
- '@esbuild/netbsd-x64': 0.25.1
- '@esbuild/openbsd-arm64': 0.25.1
- '@esbuild/openbsd-x64': 0.25.1
- '@esbuild/sunos-x64': 0.25.1
- '@esbuild/win32-arm64': 0.25.1
- '@esbuild/win32-ia32': 0.25.1
- '@esbuild/win32-x64': 0.25.1
-
- escape-string-regexp@5.0.0: {}
-
- estree-util-is-identifier-name@3.0.0: {}
-
- estree-walker@3.0.3:
- dependencies:
- '@types/estree': 1.0.6
-
- eventsource-parser@3.0.6: {}
-
- expect-type@1.2.2: {}
-
- exsolve@1.0.7: {}
-
- extend@3.0.2: {}
-
- fast-deep-equal@3.1.3: {}
-
- fault@1.0.4:
- dependencies:
- format: 0.2.2
-
- fdir@6.5.0(picomatch@4.0.3):
- optionalDependencies:
- picomatch: 4.0.3
-
- format@0.2.2: {}
-
- framer-motion@11.18.2(react-dom@19.0.1(react@19.0.1))(react@19.0.1):
- dependencies:
- motion-dom: 11.18.1
- motion-utils: 11.18.1
- tslib: 2.8.1
- optionalDependencies:
- react: 19.0.1
- react-dom: 19.0.1(react@19.0.1)
-
- framer-motion@12.23.26(react-dom@19.0.1(react@19.0.1))(react@19.0.1):
- dependencies:
- motion-dom: 12.23.23
- motion-utils: 12.23.6
- tslib: 2.8.1
- optionalDependencies:
- react: 19.0.1
- react-dom: 19.0.1(react@19.0.1)
-
- fsevents@2.3.2:
- optional: true
-
- fsevents@2.3.3:
- optional: true
-
- function-bind@1.1.2: {}
-
- geist@1.3.1(next@16.0.10(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)):
- dependencies:
- next: 16.0.10(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
-
- get-nonce@1.0.1: {}
-
- get-tsconfig@4.10.0:
- dependencies:
- resolve-pkg-maps: 1.0.0
-
- globals@15.15.0: {}
-
- graceful-fs@4.2.11: {}
-
- hachure-fill@0.5.2: {}
-
- hasown@2.0.2:
- dependencies:
- function-bind: 1.1.2
-
- hast-util-from-dom@5.0.1:
- dependencies:
- '@types/hast': 3.0.4
- hastscript: 9.0.1
- web-namespaces: 2.0.1
-
- hast-util-from-html-isomorphic@2.0.0:
- dependencies:
- '@types/hast': 3.0.4
- hast-util-from-dom: 5.0.1
- hast-util-from-html: 2.0.3
- unist-util-remove-position: 5.0.0
-
- hast-util-from-html@2.0.3:
- dependencies:
- '@types/hast': 3.0.4
- devlop: 1.1.0
- hast-util-from-parse5: 8.0.3
- parse5: 7.3.0
- vfile: 6.0.3
- vfile-message: 4.0.2
-
- hast-util-from-parse5@8.0.3:
- dependencies:
- '@types/hast': 3.0.4
- '@types/unist': 3.0.3
- devlop: 1.1.0
- hastscript: 9.0.1
- property-information: 7.0.0
- vfile: 6.0.3
- vfile-location: 5.0.3
- web-namespaces: 2.0.1
-
- hast-util-is-element@3.0.0:
- dependencies:
- '@types/hast': 3.0.4
-
- hast-util-parse-selector@2.2.5: {}
-
- hast-util-parse-selector@4.0.0:
- dependencies:
- '@types/hast': 3.0.4
-
- hast-util-raw@9.1.0:
- dependencies:
- '@types/hast': 3.0.4
- '@types/unist': 3.0.3
- '@ungap/structured-clone': 1.3.0
- hast-util-from-parse5: 8.0.3
- hast-util-to-parse5: 8.0.0
- html-void-elements: 3.0.0
- mdast-util-to-hast: 13.2.0
- parse5: 7.3.0
- unist-util-position: 5.0.0
- unist-util-visit: 5.0.0
- vfile: 6.0.3
- web-namespaces: 2.0.1
- zwitch: 2.0.4
-
- hast-util-to-html@9.0.5:
- dependencies:
- '@types/hast': 3.0.4
- '@types/unist': 3.0.3
- ccount: 2.0.1
- comma-separated-tokens: 2.0.3
- hast-util-whitespace: 3.0.0
- html-void-elements: 3.0.0
- mdast-util-to-hast: 13.2.0
- property-information: 7.0.0
- space-separated-tokens: 2.0.2
- stringify-entities: 4.0.4
- zwitch: 2.0.4
-
- hast-util-to-jsx-runtime@2.3.6:
- dependencies:
- '@types/estree': 1.0.6
- '@types/hast': 3.0.4
- '@types/unist': 3.0.3
- comma-separated-tokens: 2.0.3
- devlop: 1.1.0
- estree-util-is-identifier-name: 3.0.0
- hast-util-whitespace: 3.0.0
- mdast-util-mdx-expression: 2.0.1
- mdast-util-mdx-jsx: 3.2.0
- mdast-util-mdxjs-esm: 2.0.1
- property-information: 7.0.0
- space-separated-tokens: 2.0.2
- style-to-js: 1.1.16
- unist-util-position: 5.0.0
- vfile-message: 4.0.2
- transitivePeerDependencies:
- - supports-color
-
- hast-util-to-parse5@8.0.0:
- dependencies:
- '@types/hast': 3.0.4
- comma-separated-tokens: 2.0.3
- devlop: 1.1.0
- property-information: 6.5.0
- space-separated-tokens: 2.0.2
- web-namespaces: 2.0.1
- zwitch: 2.0.4
-
- hast-util-to-text@4.0.2:
- dependencies:
- '@types/hast': 3.0.4
- '@types/unist': 3.0.3
- hast-util-is-element: 3.0.0
- unist-util-find-after: 5.0.0
-
- hast-util-whitespace@3.0.0:
- dependencies:
- '@types/hast': 3.0.4
-
- hastscript@6.0.0:
- dependencies:
- '@types/hast': 2.3.10
- comma-separated-tokens: 1.0.8
- hast-util-parse-selector: 2.2.5
- property-information: 5.6.0
- space-separated-tokens: 1.1.5
-
- hastscript@9.0.1:
- dependencies:
- '@types/hast': 3.0.4
- comma-separated-tokens: 2.0.3
- hast-util-parse-selector: 4.0.0
- property-information: 7.0.0
- space-separated-tokens: 2.0.2
-
- highlight.js@10.7.3: {}
-
- highlightjs-vue@1.0.0: {}
-
- html-url-attributes@3.0.1: {}
-
- html-void-elements@3.0.0: {}
-
- iconv-lite@0.6.3:
- dependencies:
- safer-buffer: 2.1.2
-
- import-in-the-middle@1.15.0:
- 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
-
- inline-style-parser@0.2.4: {}
-
- internmap@1.0.1: {}
-
- internmap@2.0.3: {}
-
- is-alphabetical@1.0.4: {}
-
- is-alphabetical@2.0.1: {}
-
- is-alphanumerical@1.0.4:
- dependencies:
- is-alphabetical: 1.0.4
- is-decimal: 1.0.4
-
- is-alphanumerical@2.0.1:
- dependencies:
- is-alphabetical: 2.0.1
- is-decimal: 2.0.1
-
- is-buffer@2.0.5: {}
-
- is-core-module@2.16.1:
- dependencies:
- hasown: 2.0.2
-
- is-decimal@1.0.4: {}
-
- is-decimal@2.0.1: {}
-
- is-hexadecimal@1.0.4: {}
-
- is-hexadecimal@2.0.1: {}
-
- is-plain-obj@4.1.0: {}
-
- jiti@2.6.1: {}
-
- jose@5.10.0: {}
-
- js-tokens@9.0.1: {}
-
- json-schema@0.4.0: {}
-
- jsonc-parser@3.3.1: {}
-
- katex@0.16.25:
- dependencies:
- commander: 8.3.0
-
- khroma@2.1.0: {}
-
- kolorist@1.8.0: {}
-
- langium@3.3.1:
- dependencies:
- chevrotain: 11.0.3
- chevrotain-allstar: 0.3.1(chevrotain@11.0.3)
- vscode-languageserver: 9.0.1
- vscode-languageserver-textdocument: 1.0.12
- vscode-uri: 3.0.8
-
- layout-base@1.0.2: {}
-
- layout-base@2.0.1: {}
-
- lightningcss-android-arm64@1.30.2:
- optional: true
-
- lightningcss-darwin-arm64@1.30.2:
- optional: true
-
- lightningcss-darwin-x64@1.30.2:
- optional: true
-
- lightningcss-freebsd-x64@1.30.2:
- optional: true
-
- lightningcss-linux-arm-gnueabihf@1.30.2:
- optional: true
-
- lightningcss-linux-arm64-gnu@1.30.2:
- optional: true
-
- lightningcss-linux-arm64-musl@1.30.2:
- optional: true
-
- lightningcss-linux-x64-gnu@1.30.2:
- optional: true
-
- lightningcss-linux-x64-musl@1.30.2:
- optional: true
-
- lightningcss-win32-arm64-msvc@1.30.2:
- optional: true
-
- lightningcss-win32-x64-msvc@1.30.2:
- optional: true
-
- lightningcss@1.30.2:
- dependencies:
- detect-libc: 2.1.2
- optionalDependencies:
- lightningcss-android-arm64: 1.30.2
- lightningcss-darwin-arm64: 1.30.2
- lightningcss-darwin-x64: 1.30.2
- lightningcss-freebsd-x64: 1.30.2
- lightningcss-linux-arm-gnueabihf: 1.30.2
- lightningcss-linux-arm64-gnu: 1.30.2
- lightningcss-linux-arm64-musl: 1.30.2
- lightningcss-linux-x64-gnu: 1.30.2
- lightningcss-linux-x64-musl: 1.30.2
- lightningcss-win32-arm64-msvc: 1.30.2
- lightningcss-win32-x64-msvc: 1.30.2
-
- linkify-it@5.0.0:
- dependencies:
- uc.micro: 2.1.0
-
- local-pkg@1.1.2:
- dependencies:
- mlly: 1.8.0
- pkg-types: 2.3.0
- quansync: 0.2.11
-
- lodash-es@4.17.21: {}
-
- lodash.castarray@4.4.0: {}
-
- lodash.debounce@4.0.8: {}
-
- lodash.isplainobject@4.0.6: {}
-
- lodash.merge@4.6.2: {}
-
- longest-streak@3.1.0: {}
-
- loupe@3.2.1: {}
-
- lowlight@1.20.0:
- dependencies:
- fault: 1.0.4
- highlight.js: 10.7.3
-
- lucide-react@0.446.0(react@19.0.1):
- dependencies:
- react: 19.0.1
-
- lucide-react@0.542.0(react@19.0.1):
- dependencies:
- react: 19.0.1
-
- magic-string@0.30.21:
- dependencies:
- '@jridgewell/sourcemap-codec': 1.5.5
-
- markdown-it@14.1.0:
- dependencies:
- argparse: 2.0.1
- entities: 4.5.0
- linkify-it: 5.0.0
- mdurl: 2.0.0
- punycode.js: 2.3.1
- uc.micro: 2.1.0
-
- markdown-table@3.0.4: {}
-
- marked@16.4.1: {}
-
- mdast-util-find-and-replace@3.0.2:
- dependencies:
- '@types/mdast': 4.0.4
- escape-string-regexp: 5.0.0
- unist-util-is: 6.0.0
- unist-util-visit-parents: 6.0.1
-
- mdast-util-from-markdown@2.0.2:
- dependencies:
- '@types/mdast': 4.0.4
- '@types/unist': 3.0.3
- decode-named-character-reference: 1.1.0
- devlop: 1.1.0
- mdast-util-to-string: 4.0.0
- micromark: 4.0.2
- micromark-util-decode-numeric-character-reference: 2.0.2
- micromark-util-decode-string: 2.0.1
- micromark-util-normalize-identifier: 2.0.1
- micromark-util-symbol: 2.0.1
- micromark-util-types: 2.0.2
- unist-util-stringify-position: 4.0.0
- transitivePeerDependencies:
- - supports-color
-
- mdast-util-gfm-autolink-literal@2.0.1:
- dependencies:
- '@types/mdast': 4.0.4
- ccount: 2.0.1
- devlop: 1.1.0
- mdast-util-find-and-replace: 3.0.2
- micromark-util-character: 2.1.1
-
- mdast-util-gfm-footnote@2.1.0:
- dependencies:
- '@types/mdast': 4.0.4
- devlop: 1.1.0
- mdast-util-from-markdown: 2.0.2
- mdast-util-to-markdown: 2.1.2
- micromark-util-normalize-identifier: 2.0.1
- transitivePeerDependencies:
- - supports-color
-
- mdast-util-gfm-strikethrough@2.0.0:
- dependencies:
- '@types/mdast': 4.0.4
- mdast-util-from-markdown: 2.0.2
- mdast-util-to-markdown: 2.1.2
- transitivePeerDependencies:
- - supports-color
-
- mdast-util-gfm-table@2.0.0:
- dependencies:
- '@types/mdast': 4.0.4
- devlop: 1.1.0
- markdown-table: 3.0.4
- mdast-util-from-markdown: 2.0.2
- mdast-util-to-markdown: 2.1.2
- transitivePeerDependencies:
- - supports-color
-
- mdast-util-gfm-task-list-item@2.0.0:
- dependencies:
- '@types/mdast': 4.0.4
- devlop: 1.1.0
- mdast-util-from-markdown: 2.0.2
- mdast-util-to-markdown: 2.1.2
- transitivePeerDependencies:
- - supports-color
-
- mdast-util-gfm@3.1.0:
- dependencies:
- mdast-util-from-markdown: 2.0.2
- mdast-util-gfm-autolink-literal: 2.0.1
- mdast-util-gfm-footnote: 2.1.0
- mdast-util-gfm-strikethrough: 2.0.0
- mdast-util-gfm-table: 2.0.0
- mdast-util-gfm-task-list-item: 2.0.0
- mdast-util-to-markdown: 2.1.2
- transitivePeerDependencies:
- - supports-color
-
- mdast-util-math@3.0.0:
- dependencies:
- '@types/hast': 3.0.4
- '@types/mdast': 4.0.4
- devlop: 1.1.0
- longest-streak: 3.1.0
- mdast-util-from-markdown: 2.0.2
- mdast-util-to-markdown: 2.1.2
- unist-util-remove-position: 5.0.0
- transitivePeerDependencies:
- - supports-color
-
- mdast-util-mdx-expression@2.0.1:
- dependencies:
- '@types/estree-jsx': 1.0.5
- '@types/hast': 3.0.4
- '@types/mdast': 4.0.4
- devlop: 1.1.0
- mdast-util-from-markdown: 2.0.2
- mdast-util-to-markdown: 2.1.2
- transitivePeerDependencies:
- - supports-color
-
- mdast-util-mdx-jsx@3.2.0:
- dependencies:
- '@types/estree-jsx': 1.0.5
- '@types/hast': 3.0.4
- '@types/mdast': 4.0.4
- '@types/unist': 3.0.3
- ccount: 2.0.1
- devlop: 1.1.0
- mdast-util-from-markdown: 2.0.2
- mdast-util-to-markdown: 2.1.2
- parse-entities: 4.0.2
- stringify-entities: 4.0.4
- unist-util-stringify-position: 4.0.0
- vfile-message: 4.0.2
- transitivePeerDependencies:
- - supports-color
-
- mdast-util-mdxjs-esm@2.0.1:
- dependencies:
- '@types/estree-jsx': 1.0.5
- '@types/hast': 3.0.4
- '@types/mdast': 4.0.4
- devlop: 1.1.0
- mdast-util-from-markdown: 2.0.2
- mdast-util-to-markdown: 2.1.2
- transitivePeerDependencies:
- - supports-color
-
- mdast-util-phrasing@4.1.0:
- dependencies:
- '@types/mdast': 4.0.4
- unist-util-is: 6.0.0
-
- mdast-util-to-hast@13.2.0:
- dependencies:
- '@types/hast': 3.0.4
- '@types/mdast': 4.0.4
- '@ungap/structured-clone': 1.3.0
- devlop: 1.1.0
- micromark-util-sanitize-uri: 2.0.1
- trim-lines: 3.0.1
- unist-util-position: 5.0.0
- unist-util-visit: 5.0.0
- vfile: 6.0.3
-
- mdast-util-to-markdown@2.1.2:
- dependencies:
- '@types/mdast': 4.0.4
- '@types/unist': 3.0.3
- longest-streak: 3.1.0
- mdast-util-phrasing: 4.1.0
- mdast-util-to-string: 4.0.0
- micromark-util-classify-character: 2.0.1
- micromark-util-decode-string: 2.0.1
- unist-util-visit: 5.0.0
- zwitch: 2.0.4
-
- mdast-util-to-string@4.0.0:
- dependencies:
- '@types/mdast': 4.0.4
-
- mdurl@2.0.0: {}
-
- mermaid@11.12.1:
- dependencies:
- '@braintree/sanitize-url': 7.1.1
- '@iconify/utils': 3.0.2
- '@mermaid-js/parser': 0.6.3
- '@types/d3': 7.4.3
- cytoscape: 3.33.1
- cytoscape-cose-bilkent: 4.1.0(cytoscape@3.33.1)
- cytoscape-fcose: 2.2.0(cytoscape@3.33.1)
- d3: 7.9.0
- d3-sankey: 0.12.3
- dagre-d3-es: 7.0.13
- dayjs: 1.11.19
- dompurify: 3.3.0
- katex: 0.16.25
- khroma: 2.1.0
- lodash-es: 4.17.21
- marked: 16.4.1
- roughjs: 4.6.6
- stylis: 4.3.6
- ts-dedent: 2.2.0
- uuid: 11.1.0
- transitivePeerDependencies:
- - supports-color
-
- micromark-core-commonmark@2.0.3:
- dependencies:
- decode-named-character-reference: 1.1.0
- devlop: 1.1.0
- micromark-factory-destination: 2.0.1
- micromark-factory-label: 2.0.1
- micromark-factory-space: 2.0.1
- micromark-factory-title: 2.0.1
- micromark-factory-whitespace: 2.0.1
- micromark-util-character: 2.1.1
- micromark-util-chunked: 2.0.1
- micromark-util-classify-character: 2.0.1
- micromark-util-html-tag-name: 2.0.1
- micromark-util-normalize-identifier: 2.0.1
- micromark-util-resolve-all: 2.0.1
- micromark-util-subtokenize: 2.1.0
- micromark-util-symbol: 2.0.1
- micromark-util-types: 2.0.2
-
- micromark-extension-gfm-autolink-literal@2.1.0:
- dependencies:
- micromark-util-character: 2.1.1
- micromark-util-sanitize-uri: 2.0.1
- micromark-util-symbol: 2.0.1
- micromark-util-types: 2.0.2
-
- micromark-extension-gfm-footnote@2.1.0:
- dependencies:
- devlop: 1.1.0
- micromark-core-commonmark: 2.0.3
- micromark-factory-space: 2.0.1
- micromark-util-character: 2.1.1
- micromark-util-normalize-identifier: 2.0.1
- micromark-util-sanitize-uri: 2.0.1
- micromark-util-symbol: 2.0.1
- micromark-util-types: 2.0.2
-
- micromark-extension-gfm-strikethrough@2.1.0:
- dependencies:
- devlop: 1.1.0
- micromark-util-chunked: 2.0.1
- micromark-util-classify-character: 2.0.1
- micromark-util-resolve-all: 2.0.1
- micromark-util-symbol: 2.0.1
- micromark-util-types: 2.0.2
-
- micromark-extension-gfm-table@2.1.1:
- dependencies:
- devlop: 1.1.0
- micromark-factory-space: 2.0.1
- micromark-util-character: 2.1.1
- micromark-util-symbol: 2.0.1
- micromark-util-types: 2.0.2
-
- micromark-extension-gfm-tagfilter@2.0.0:
- dependencies:
- micromark-util-types: 2.0.2
-
- micromark-extension-gfm-task-list-item@2.1.0:
- dependencies:
- devlop: 1.1.0
- micromark-factory-space: 2.0.1
- micromark-util-character: 2.1.1
- micromark-util-symbol: 2.0.1
- micromark-util-types: 2.0.2
-
- micromark-extension-gfm@3.0.0:
- dependencies:
- micromark-extension-gfm-autolink-literal: 2.1.0
- micromark-extension-gfm-footnote: 2.1.0
- micromark-extension-gfm-strikethrough: 2.1.0
- micromark-extension-gfm-table: 2.1.1
- micromark-extension-gfm-tagfilter: 2.0.0
- micromark-extension-gfm-task-list-item: 2.1.0
- micromark-util-combine-extensions: 2.0.1
- micromark-util-types: 2.0.2
-
- micromark-extension-math@3.1.0:
- dependencies:
- '@types/katex': 0.16.7
- devlop: 1.1.0
- katex: 0.16.25
- micromark-factory-space: 2.0.1
- micromark-util-character: 2.1.1
- micromark-util-symbol: 2.0.1
- micromark-util-types: 2.0.2
-
- micromark-factory-destination@2.0.1:
- dependencies:
- micromark-util-character: 2.1.1
- micromark-util-symbol: 2.0.1
- micromark-util-types: 2.0.2
-
- micromark-factory-label@2.0.1:
- dependencies:
- devlop: 1.1.0
- micromark-util-character: 2.1.1
- micromark-util-symbol: 2.0.1
- micromark-util-types: 2.0.2
-
- micromark-factory-space@2.0.1:
- dependencies:
- micromark-util-character: 2.1.1
- micromark-util-types: 2.0.2
-
- micromark-factory-title@2.0.1:
- dependencies:
- micromark-factory-space: 2.0.1
- micromark-util-character: 2.1.1
- micromark-util-symbol: 2.0.1
- micromark-util-types: 2.0.2
-
- micromark-factory-whitespace@2.0.1:
- dependencies:
- micromark-factory-space: 2.0.1
- micromark-util-character: 2.1.1
- micromark-util-symbol: 2.0.1
- micromark-util-types: 2.0.2
-
- micromark-util-character@2.1.1:
- dependencies:
- micromark-util-symbol: 2.0.1
- micromark-util-types: 2.0.2
-
- micromark-util-chunked@2.0.1:
- dependencies:
- micromark-util-symbol: 2.0.1
-
- micromark-util-classify-character@2.0.1:
- dependencies:
- micromark-util-character: 2.1.1
- micromark-util-symbol: 2.0.1
- micromark-util-types: 2.0.2
-
- micromark-util-combine-extensions@2.0.1:
- dependencies:
- micromark-util-chunked: 2.0.1
- micromark-util-types: 2.0.2
-
- micromark-util-decode-numeric-character-reference@2.0.2:
- dependencies:
- micromark-util-symbol: 2.0.1
-
- micromark-util-decode-string@2.0.1:
- dependencies:
- decode-named-character-reference: 1.1.0
- micromark-util-character: 2.1.1
- micromark-util-decode-numeric-character-reference: 2.0.2
- micromark-util-symbol: 2.0.1
-
- micromark-util-encode@2.0.1: {}
-
- micromark-util-html-tag-name@2.0.1: {}
-
- micromark-util-normalize-identifier@2.0.1:
- dependencies:
- micromark-util-symbol: 2.0.1
-
- micromark-util-resolve-all@2.0.1:
- dependencies:
- micromark-util-types: 2.0.2
-
- micromark-util-sanitize-uri@2.0.1:
- dependencies:
- micromark-util-character: 2.1.1
- micromark-util-encode: 2.0.1
- micromark-util-symbol: 2.0.1
-
- micromark-util-subtokenize@2.1.0:
- dependencies:
- devlop: 1.1.0
- micromark-util-chunked: 2.0.1
- micromark-util-symbol: 2.0.1
- micromark-util-types: 2.0.2
-
- micromark-util-symbol@2.0.1: {}
-
- micromark-util-types@2.0.2: {}
-
- micromark@4.0.2:
- dependencies:
- '@types/debug': 4.1.12
- debug: 4.4.0
- decode-named-character-reference: 1.1.0
- devlop: 1.1.0
- micromark-core-commonmark: 2.0.3
- micromark-factory-space: 2.0.1
- micromark-util-character: 2.1.1
- micromark-util-chunked: 2.0.1
- micromark-util-combine-extensions: 2.0.1
- micromark-util-decode-numeric-character-reference: 2.0.2
- micromark-util-encode: 2.0.1
- micromark-util-normalize-identifier: 2.0.1
- micromark-util-resolve-all: 2.0.1
- micromark-util-sanitize-uri: 2.0.1
- micromark-util-subtokenize: 2.1.0
- micromark-util-symbol: 2.0.1
- micromark-util-types: 2.0.2
- transitivePeerDependencies:
- - supports-color
-
- mlly@1.8.0:
- dependencies:
- acorn: 8.15.0
- pathe: 2.0.3
- pkg-types: 1.3.1
- ufo: 1.6.1
-
- module-details-from-path@1.0.4: {}
-
- motion-dom@11.18.1:
- dependencies:
- motion-utils: 11.18.1
-
- motion-dom@12.23.23:
- dependencies:
- motion-utils: 12.23.6
-
- motion-utils@11.18.1: {}
-
- motion-utils@12.23.6: {}
-
- motion@12.23.26(react-dom@19.0.1(react@19.0.1))(react@19.0.1):
- dependencies:
- framer-motion: 12.23.26(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- tslib: 2.8.1
- optionalDependencies:
- react: 19.0.1
- react-dom: 19.0.1(react@19.0.1)
-
- ms@2.1.3: {}
-
- nanoid@3.3.11: {}
-
- nanoid@3.3.9: {}
-
- nanoid@5.1.3: {}
-
- next-auth@5.0.0-beta.25(next@16.0.10(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(react-dom@19.0.1(react@19.0.1))(react@19.0.1))(react@19.0.1):
- dependencies:
- '@auth/core': 0.37.2
- next: 16.0.10(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- react: 19.0.1
-
- next-themes@0.3.0(react-dom@19.0.1(react@19.0.1))(react@19.0.1):
- dependencies:
- react: 19.0.1
- react-dom: 19.0.1(react@19.0.1)
-
- next@16.0.10(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(react-dom@19.0.1(react@19.0.1))(react@19.0.1):
- dependencies:
- '@next/env': 16.0.10
- '@swc/helpers': 0.5.15
- caniuse-lite: 1.0.30001704
- postcss: 8.4.31
- react: 19.0.1
- react-dom: 19.0.1(react@19.0.1)
- styled-jsx: 5.1.6(react@19.0.1)
- optionalDependencies:
- '@next/swc-darwin-arm64': 16.0.10
- '@next/swc-darwin-x64': 16.0.10
- '@next/swc-linux-arm64-gnu': 16.0.10
- '@next/swc-linux-arm64-musl': 16.0.10
- '@next/swc-linux-x64-gnu': 16.0.10
- '@next/swc-linux-x64-musl': 16.0.10
- '@next/swc-win32-arm64-msvc': 16.0.10
- '@next/swc-win32-x64-msvc': 16.0.10
- '@opentelemetry/api': 1.9.0
- '@playwright/test': 1.51.0
- sharp: 0.34.5
- transitivePeerDependencies:
- - '@babel/core'
- - babel-plugin-macros
-
- node-gyp-build@4.8.4:
- optional: true
-
- nypm@0.6.2:
- dependencies:
- citty: 0.1.6
- consola: 3.4.2
- pathe: 2.0.3
- pkg-types: 2.3.0
- tinyexec: 1.0.1
-
- oauth4webapi@3.3.1: {}
-
- obuf@1.1.2:
- optional: true
-
- oniguruma-parser@0.12.1: {}
-
- oniguruma-to-es@4.3.3:
- dependencies:
- oniguruma-parser: 0.12.1
- regex: 6.0.1
- regex-recursion: 6.0.2
-
- orderedmap@2.1.1: {}
-
- package-manager-detector@1.5.0: {}
-
- papaparse@5.5.2: {}
-
- parse-entities@2.0.0:
- dependencies:
- character-entities: 1.2.4
- character-entities-legacy: 1.1.4
- character-reference-invalid: 1.1.4
- is-alphanumerical: 1.0.4
- is-decimal: 1.0.4
- is-hexadecimal: 1.0.4
-
- parse-entities@4.0.2:
- dependencies:
- '@types/unist': 2.0.11
- character-entities-legacy: 3.0.0
- character-reference-invalid: 2.0.1
- decode-named-character-reference: 1.1.0
- is-alphanumerical: 2.0.1
- is-decimal: 2.0.1
- is-hexadecimal: 2.0.1
-
- parse5@7.3.0:
- dependencies:
- entities: 6.0.1
-
- path-data-parser@0.1.0: {}
-
- path-parse@1.0.7: {}
-
- pathe@2.0.3: {}
-
- pathval@2.0.1: {}
-
- pg-int8@1.0.1:
- optional: true
-
- pg-numeric@1.0.2:
- optional: true
-
- pg-protocol@1.8.0:
- optional: true
-
- pg-types@4.0.2:
- dependencies:
- pg-int8: 1.0.1
- pg-numeric: 1.0.2
- postgres-array: 3.0.4
- postgres-bytea: 3.0.0
- postgres-date: 2.1.0
- postgres-interval: 3.0.0
- postgres-range: 1.1.4
- optional: true
-
- picocolors@1.1.1: {}
-
- picomatch@4.0.2: {}
-
- picomatch@4.0.3: {}
-
- pkg-types@1.3.1:
- dependencies:
- confbox: 0.1.8
- mlly: 1.8.0
- pathe: 2.0.3
-
- pkg-types@2.3.0:
- dependencies:
- confbox: 0.2.2
- exsolve: 1.0.7
- pathe: 2.0.3
-
- playwright-core@1.51.0: {}
-
- playwright@1.51.0:
- dependencies:
- playwright-core: 1.51.0
- optionalDependencies:
- fsevents: 2.3.2
-
- points-on-curve@0.2.0: {}
-
- points-on-path@0.2.1:
- dependencies:
- path-data-parser: 0.1.0
- points-on-curve: 0.2.0
-
- postcss-selector-parser@6.0.10:
- dependencies:
- cssesc: 3.0.0
- util-deprecate: 1.0.2
-
- postcss@8.4.31:
- dependencies:
- nanoid: 3.3.11
- picocolors: 1.1.1
- source-map-js: 1.2.1
-
- postcss@8.5.3:
- dependencies:
- nanoid: 3.3.9
- picocolors: 1.1.1
- source-map-js: 1.2.1
-
- postcss@8.5.6:
- dependencies:
- nanoid: 3.3.11
- picocolors: 1.1.1
- source-map-js: 1.2.1
-
- postgres-array@3.0.4:
- optional: true
-
- postgres-bytea@3.0.0:
- dependencies:
- obuf: 1.1.2
- optional: true
-
- postgres-date@2.1.0:
- optional: true
-
- postgres-interval@3.0.0:
- optional: true
-
- postgres-range@1.1.4:
- optional: true
-
- postgres@3.4.5: {}
-
- preact-render-to-string@5.2.3(preact@10.11.3):
- dependencies:
- preact: 10.11.3
- pretty-format: 3.8.0
-
- preact@10.11.3: {}
-
- pretty-format@3.8.0: {}
-
- prismjs@1.27.0: {}
-
- prismjs@1.30.0: {}
-
- property-information@5.6.0:
- dependencies:
- xtend: 4.0.2
-
- property-information@6.5.0: {}
-
- property-information@7.0.0: {}
-
- prosemirror-commands@1.7.0:
- dependencies:
- prosemirror-model: 1.24.1
- prosemirror-state: 1.4.3
- prosemirror-transform: 1.10.3
-
- prosemirror-dropcursor@1.8.1:
- dependencies:
- prosemirror-state: 1.4.3
- prosemirror-transform: 1.10.3
- prosemirror-view: 1.38.1
-
- prosemirror-example-setup@1.2.3:
- dependencies:
- prosemirror-commands: 1.7.0
- prosemirror-dropcursor: 1.8.1
- prosemirror-gapcursor: 1.3.2
- prosemirror-history: 1.4.1
- prosemirror-inputrules: 1.4.0
- prosemirror-keymap: 1.2.2
- prosemirror-menu: 1.2.4
- prosemirror-schema-list: 1.5.1
- prosemirror-state: 1.4.3
-
- prosemirror-gapcursor@1.3.2:
- dependencies:
- prosemirror-keymap: 1.2.2
- prosemirror-model: 1.24.1
- prosemirror-state: 1.4.3
- prosemirror-view: 1.38.1
-
- prosemirror-history@1.4.1:
- dependencies:
- prosemirror-state: 1.4.3
- prosemirror-transform: 1.10.3
- prosemirror-view: 1.38.1
- rope-sequence: 1.3.4
-
- prosemirror-inputrules@1.4.0:
- dependencies:
- prosemirror-state: 1.4.3
- prosemirror-transform: 1.10.3
-
- prosemirror-keymap@1.2.2:
- dependencies:
- prosemirror-state: 1.4.3
- w3c-keyname: 2.2.8
-
- prosemirror-markdown@1.13.1:
- dependencies:
- '@types/markdown-it': 14.1.2
- markdown-it: 14.1.0
- prosemirror-model: 1.24.1
-
- prosemirror-menu@1.2.4:
- dependencies:
- crelt: 1.0.6
- prosemirror-commands: 1.7.0
- prosemirror-history: 1.4.1
- prosemirror-state: 1.4.3
-
- prosemirror-model@1.24.1:
- dependencies:
- orderedmap: 2.1.1
-
- prosemirror-schema-basic@1.2.3:
- dependencies:
- prosemirror-model: 1.24.1
-
- prosemirror-schema-list@1.5.1:
- dependencies:
- prosemirror-model: 1.24.1
- prosemirror-state: 1.4.3
- prosemirror-transform: 1.10.3
-
- prosemirror-state@1.4.3:
- dependencies:
- prosemirror-model: 1.24.1
- prosemirror-transform: 1.10.3
- prosemirror-view: 1.38.1
-
- prosemirror-transform@1.10.3:
- dependencies:
- prosemirror-model: 1.24.1
-
- prosemirror-view@1.38.1:
- dependencies:
- prosemirror-model: 1.24.1
- prosemirror-state: 1.4.3
- prosemirror-transform: 1.10.3
-
- punycode.js@2.3.1: {}
-
- quansync@0.2.11: {}
-
- radix-ui@1.4.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1):
- dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-accessible-icon': 1.1.7(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-accordion': 1.2.12(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-alert-dialog': 1.1.15(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-arrow': 1.1.7(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-aspect-ratio': 1.1.7(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-avatar': 1.1.10(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-checkbox': 1.3.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-collapsible': 1.1.12(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-collection': 1.1.7(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-context': 1.1.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-context-menu': 2.2.16(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-dialog': 1.1.15(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-direction': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-dropdown-menu': 2.1.16(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-focus-guards': 1.1.3(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-form': 0.1.8(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-hover-card': 1.1.15(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-label': 2.1.7(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-menu': 2.1.16(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-menubar': 1.1.16(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-navigation-menu': 1.2.14(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-one-time-password-field': 0.1.8(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-password-toggle-field': 0.1.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-popover': 1.1.15(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-popper': 1.2.8(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-portal': 1.1.9(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-progress': 1.1.7(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-radio-group': 1.3.8(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-scroll-area': 1.2.10(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-select': 2.2.6(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-separator': 1.1.7(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-slider': 1.3.6(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-slot': 1.2.3(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-switch': 1.2.6(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-tabs': 1.1.13(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-toast': 1.2.15(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-toggle': 1.1.10(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-toggle-group': 1.1.11(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-toolbar': 1.1.11(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-tooltip': 1.2.8(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-use-effect-event': 0.0.2(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-use-size': 1.1.1(@types/react@18.3.18)(react@19.0.1)
- '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@19.0.1(react@19.0.1))(react@19.0.1)
- react: 19.0.1
- react-dom: 19.0.1(react@19.0.1)
- optionalDependencies:
- '@types/react': 18.3.18
- '@types/react-dom': 18.3.5(@types/react@18.3.18)
-
- react-data-grid@7.0.0-beta.47(react-dom@19.0.1(react@19.0.1))(react@19.0.1):
- dependencies:
- clsx: 2.1.1
- react: 19.0.1
- react-dom: 19.0.1(react@19.0.1)
-
- react-dom@19.0.1(react@19.0.1):
- dependencies:
- react: 19.0.1
- scheduler: 0.25.0
-
- react-markdown@10.1.0(@types/react@18.3.18)(react@19.0.1):
- dependencies:
- '@types/hast': 3.0.4
- '@types/mdast': 4.0.4
- '@types/react': 18.3.18
- devlop: 1.1.0
- hast-util-to-jsx-runtime: 2.3.6
- html-url-attributes: 3.0.1
- mdast-util-to-hast: 13.2.0
- react: 19.0.1
- remark-parse: 11.0.0
- remark-rehype: 11.1.1
- unified: 11.0.5
- unist-util-visit: 5.0.0
- vfile: 6.0.3
- transitivePeerDependencies:
- - supports-color
-
- react-remove-scroll-bar@2.3.8(@types/react@18.3.18)(react@19.0.1):
- dependencies:
- react: 19.0.1
- react-style-singleton: 2.2.3(@types/react@18.3.18)(react@19.0.1)
- tslib: 2.8.1
- optionalDependencies:
- '@types/react': 18.3.18
-
- react-remove-scroll@2.6.3(@types/react@18.3.18)(react@19.0.1):
- dependencies:
- react: 19.0.1
- react-remove-scroll-bar: 2.3.8(@types/react@18.3.18)(react@19.0.1)
- react-style-singleton: 2.2.3(@types/react@18.3.18)(react@19.0.1)
- tslib: 2.8.1
- use-callback-ref: 1.3.3(@types/react@18.3.18)(react@19.0.1)
- use-sidecar: 1.1.3(@types/react@18.3.18)(react@19.0.1)
- optionalDependencies:
- '@types/react': 18.3.18
-
- react-resizable-panels@2.1.7(react-dom@19.0.1(react@19.0.1))(react@19.0.1):
- dependencies:
- react: 19.0.1
- react-dom: 19.0.1(react@19.0.1)
-
- react-style-singleton@2.2.3(@types/react@18.3.18)(react@19.0.1):
- dependencies:
- get-nonce: 1.0.1
- react: 19.0.1
- tslib: 2.8.1
- optionalDependencies:
- '@types/react': 18.3.18
-
- react-syntax-highlighter@15.6.6(react@19.0.1):
- dependencies:
- '@babel/runtime': 7.28.4
- highlight.js: 10.7.3
- highlightjs-vue: 1.0.0
- lowlight: 1.20.0
- prismjs: 1.30.0
- react: 19.0.1
- refractor: 3.6.0
-
- react@19.0.1: {}
-
- redis@5.9.0:
- dependencies:
- '@redis/bloom': 5.9.0(@redis/client@5.9.0)
- '@redis/client': 5.9.0
- '@redis/json': 5.9.0(@redis/client@5.9.0)
- '@redis/search': 5.9.0(@redis/client@5.9.0)
- '@redis/time-series': 5.9.0(@redis/client@5.9.0)
-
- refractor@3.6.0:
- dependencies:
- hastscript: 6.0.0
- parse-entities: 2.0.0
- prismjs: 1.27.0
-
- regex-recursion@6.0.2:
- dependencies:
- regex-utilities: 2.3.0
-
- regex-utilities@2.3.0: {}
-
- regex@6.0.1:
- dependencies:
- regex-utilities: 2.3.0
-
- rehype-harden@1.1.5: {}
-
- rehype-katex@7.0.1:
- dependencies:
- '@types/hast': 3.0.4
- '@types/katex': 0.16.7
- hast-util-from-html-isomorphic: 2.0.0
- hast-util-to-text: 4.0.2
- katex: 0.16.25
- unist-util-visit-parents: 6.0.1
- vfile: 6.0.3
-
- rehype-raw@7.0.0:
- dependencies:
- '@types/hast': 3.0.4
- hast-util-raw: 9.1.0
- vfile: 6.0.3
-
- remark-gfm@4.0.1:
- dependencies:
- '@types/mdast': 4.0.4
- mdast-util-gfm: 3.1.0
- micromark-extension-gfm: 3.0.0
- remark-parse: 11.0.0
- remark-stringify: 11.0.0
- unified: 11.0.5
- transitivePeerDependencies:
- - supports-color
-
- remark-math@6.0.0:
- dependencies:
- '@types/mdast': 4.0.4
- mdast-util-math: 3.0.0
- micromark-extension-math: 3.1.0
- unified: 11.0.5
- transitivePeerDependencies:
- - supports-color
-
- remark-parse@11.0.0:
- dependencies:
- '@types/mdast': 4.0.4
- mdast-util-from-markdown: 2.0.2
- micromark-util-types: 2.0.2
- unified: 11.0.5
- transitivePeerDependencies:
- - supports-color
-
- remark-rehype@11.1.1:
- dependencies:
- '@types/hast': 3.0.4
- '@types/mdast': 4.0.4
- mdast-util-to-hast: 13.2.0
- unified: 11.0.5
- vfile: 6.0.3
-
- remark-stringify@11.0.0:
- dependencies:
- '@types/mdast': 4.0.4
- mdast-util-to-markdown: 2.1.2
- unified: 11.0.5
-
- require-in-the-middle@7.5.2:
- dependencies:
- debug: 4.4.3
- module-details-from-path: 1.0.4
- resolve: 1.22.10
- transitivePeerDependencies:
- - supports-color
-
- resolve-pkg-maps@1.0.0: {}
-
- resolve@1.22.10:
- dependencies:
- is-core-module: 2.16.1
- path-parse: 1.0.7
- supports-preserve-symlinks-flag: 1.0.0
-
- resumable-stream@2.2.8: {}
-
- retry@0.13.1: {}
-
- robust-predicates@3.0.2: {}
-
- rollup@4.52.5:
- dependencies:
- '@types/estree': 1.0.8
- optionalDependencies:
- '@rollup/rollup-android-arm-eabi': 4.52.5
- '@rollup/rollup-android-arm64': 4.52.5
- '@rollup/rollup-darwin-arm64': 4.52.5
- '@rollup/rollup-darwin-x64': 4.52.5
- '@rollup/rollup-freebsd-arm64': 4.52.5
- '@rollup/rollup-freebsd-x64': 4.52.5
- '@rollup/rollup-linux-arm-gnueabihf': 4.52.5
- '@rollup/rollup-linux-arm-musleabihf': 4.52.5
- '@rollup/rollup-linux-arm64-gnu': 4.52.5
- '@rollup/rollup-linux-arm64-musl': 4.52.5
- '@rollup/rollup-linux-loong64-gnu': 4.52.5
- '@rollup/rollup-linux-ppc64-gnu': 4.52.5
- '@rollup/rollup-linux-riscv64-gnu': 4.52.5
- '@rollup/rollup-linux-riscv64-musl': 4.52.5
- '@rollup/rollup-linux-s390x-gnu': 4.52.5
- '@rollup/rollup-linux-x64-gnu': 4.52.5
- '@rollup/rollup-linux-x64-musl': 4.52.5
- '@rollup/rollup-openharmony-arm64': 4.52.5
- '@rollup/rollup-win32-arm64-msvc': 4.52.5
- '@rollup/rollup-win32-ia32-msvc': 4.52.5
- '@rollup/rollup-win32-x64-gnu': 4.52.5
- '@rollup/rollup-win32-x64-msvc': 4.52.5
- fsevents: 2.3.3
-
- rope-sequence@1.3.4: {}
-
- roughjs@4.6.6:
- dependencies:
- hachure-fill: 0.5.2
- path-data-parser: 0.1.0
- points-on-curve: 0.2.0
- points-on-path: 0.2.1
-
- rw@1.3.3: {}
-
- safer-buffer@2.1.2: {}
-
- scheduler@0.25.0: {}
-
- semver@7.7.3: {}
-
- server-only@0.0.1: {}
-
- sharp@0.34.5:
- dependencies:
- '@img/colour': 1.0.0
- detect-libc: 2.1.2
- semver: 7.7.3
- optionalDependencies:
- '@img/sharp-darwin-arm64': 0.34.5
- '@img/sharp-darwin-x64': 0.34.5
- '@img/sharp-libvips-darwin-arm64': 1.2.4
- '@img/sharp-libvips-darwin-x64': 1.2.4
- '@img/sharp-libvips-linux-arm': 1.2.4
- '@img/sharp-libvips-linux-arm64': 1.2.4
- '@img/sharp-libvips-linux-ppc64': 1.2.4
- '@img/sharp-libvips-linux-riscv64': 1.2.4
- '@img/sharp-libvips-linux-s390x': 1.2.4
- '@img/sharp-libvips-linux-x64': 1.2.4
- '@img/sharp-libvips-linuxmusl-arm64': 1.2.4
- '@img/sharp-libvips-linuxmusl-x64': 1.2.4
- '@img/sharp-linux-arm': 0.34.5
- '@img/sharp-linux-arm64': 0.34.5
- '@img/sharp-linux-ppc64': 0.34.5
- '@img/sharp-linux-riscv64': 0.34.5
- '@img/sharp-linux-s390x': 0.34.5
- '@img/sharp-linux-x64': 0.34.5
- '@img/sharp-linuxmusl-arm64': 0.34.5
- '@img/sharp-linuxmusl-x64': 0.34.5
- '@img/sharp-wasm32': 0.34.5
- '@img/sharp-win32-arm64': 0.34.5
- '@img/sharp-win32-ia32': 0.34.5
- '@img/sharp-win32-x64': 0.34.5
- optional: true
-
- shiki@3.14.0:
- dependencies:
- '@shikijs/core': 3.14.0
- '@shikijs/engine-javascript': 3.14.0
- '@shikijs/engine-oniguruma': 3.14.0
- '@shikijs/langs': 3.14.0
- '@shikijs/themes': 3.14.0
- '@shikijs/types': 3.14.0
- '@shikijs/vscode-textmate': 10.0.2
- '@types/hast': 3.0.4
-
- shimmer@1.2.1: {}
-
- siginfo@2.0.0: {}
-
- sisteransi@1.0.5: {}
-
- sonner@1.7.4(react-dom@19.0.1(react@19.0.1))(react@19.0.1):
- dependencies:
- react: 19.0.1
- react-dom: 19.0.1(react@19.0.1)
-
- source-map-js@1.2.1: {}
-
- source-map-support@0.5.21:
- dependencies:
- buffer-from: 1.1.2
- source-map: 0.6.1
-
- source-map@0.6.1: {}
-
- space-separated-tokens@1.1.5: {}
-
- space-separated-tokens@2.0.2: {}
-
- stackback@0.0.2: {}
-
- std-env@3.10.0: {}
-
- streamdown@1.4.0(@types/react@18.3.18)(react@19.0.1):
- dependencies:
- clsx: 2.1.1
- katex: 0.16.25
- lucide-react: 0.542.0(react@19.0.1)
- marked: 16.4.1
- mermaid: 11.12.1
- react: 19.0.1
- react-markdown: 10.1.0(@types/react@18.3.18)(react@19.0.1)
- rehype-harden: 1.1.5
- rehype-katex: 7.0.1
- rehype-raw: 7.0.0
- remark-gfm: 4.0.1
- remark-math: 6.0.0
- shiki: 3.14.0
- tailwind-merge: 3.3.1
- transitivePeerDependencies:
- - '@types/react'
- - supports-color
-
- stringify-entities@4.0.4:
- dependencies:
- character-entities-html4: 2.1.0
- character-entities-legacy: 3.0.0
-
- strip-literal@3.1.0:
- dependencies:
- js-tokens: 9.0.1
-
- style-mod@4.1.2: {}
-
- style-to-js@1.1.16:
- dependencies:
- style-to-object: 1.0.8
-
- style-to-object@1.0.8:
- dependencies:
- inline-style-parser: 0.2.4
-
- styled-jsx@5.1.6(react@19.0.1):
- dependencies:
- client-only: 0.0.1
- react: 19.0.1
-
- stylis@4.3.6: {}
-
- supports-preserve-symlinks-flag@1.0.0: {}
-
- swr@2.3.3(react@19.0.1):
- dependencies:
- dequal: 2.0.3
- react: 19.0.1
- use-sync-external-store: 1.4.0(react@19.0.1)
-
- tailwind-merge@2.6.0: {}
-
- tailwind-merge@3.3.1: {}
-
- tailwindcss-animate@1.0.7(tailwindcss@4.1.16):
- dependencies:
- tailwindcss: 4.1.16
-
- tailwindcss@4.1.16: {}
-
- tapable@2.2.1: {}
-
- throttleit@2.1.0: {}
-
- tinybench@2.9.0: {}
-
- tinyexec@0.3.2: {}
-
- tinyexec@1.0.1: {}
-
- tinyglobby@0.2.15:
- dependencies:
- fdir: 6.5.0(picomatch@4.0.3)
- picomatch: 4.0.3
-
- tinypool@1.1.1: {}
-
- tinyrainbow@2.0.0: {}
-
- tinyspy@4.0.4: {}
-
- trim-lines@3.0.1: {}
-
- trough@2.2.0: {}
-
- trpc-cli@0.10.2(typescript@5.8.2):
- dependencies:
- '@trpc/server': 11.7.1(typescript@5.8.2)
- '@types/omelette': 0.4.5
- commander: 14.0.2
- picocolors: 1.1.1
- zod: 3.25.76
- zod-to-json-schema: 3.24.5(zod@3.25.76)
- transitivePeerDependencies:
- - typescript
-
- ts-dedent@2.2.0: {}
-
- tslib@2.8.1: {}
-
- tsx@4.19.3:
- dependencies:
- esbuild: 0.25.1
- get-tsconfig: 4.10.0
- optionalDependencies:
- fsevents: 2.3.3
-
- typescript@5.8.2: {}
-
- uc.micro@2.1.0: {}
-
- ufo@1.6.1: {}
-
- ultracite@5.3.9(@types/debug@4.1.12)(@types/node@22.13.10)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0):
- dependencies:
- '@clack/prompts': 0.11.0
- deepmerge: 4.3.1
- jsonc-parser: 3.3.1
- nypm: 0.6.2
- trpc-cli: 0.10.2(typescript@5.8.2)
- vitest: 3.2.4(@types/debug@4.1.12)(@types/node@22.13.10)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.19.3)(yaml@2.7.0)
- zod: 4.1.12
- transitivePeerDependencies:
- - '@edge-runtime/vm'
- - '@inquirer/prompts'
- - '@types/debug'
- - '@types/node'
- - '@vitest/browser'
- - '@vitest/ui'
- - happy-dom
- - jiti
- - jsdom
- - less
- - lightningcss
- - msw
- - omelette
- - sass
- - sass-embedded
- - stylus
- - sugarss
- - supports-color
- - terser
- - tsx
- - typescript
- - yaml
-
- undici-types@6.20.0: {}
-
- undici@5.28.5:
- dependencies:
- '@fastify/busboy': 2.1.1
-
- unified@11.0.5:
- dependencies:
- '@types/unist': 3.0.3
- bail: 2.0.2
- devlop: 1.1.0
- extend: 3.0.2
- is-plain-obj: 4.1.0
- trough: 2.2.0
- vfile: 6.0.3
-
- unist-util-find-after@5.0.0:
- dependencies:
- '@types/unist': 3.0.3
- unist-util-is: 6.0.0
-
- unist-util-is@6.0.0:
- dependencies:
- '@types/unist': 3.0.3
-
- unist-util-position@5.0.0:
- dependencies:
- '@types/unist': 3.0.3
-
- unist-util-remove-position@5.0.0:
- dependencies:
- '@types/unist': 3.0.3
- unist-util-visit: 5.0.0
-
- unist-util-stringify-position@4.0.0:
- dependencies:
- '@types/unist': 3.0.3
-
- unist-util-visit-parents@6.0.1:
- dependencies:
- '@types/unist': 3.0.3
- unist-util-is: 6.0.0
-
- unist-util-visit@5.0.0:
- dependencies:
- '@types/unist': 3.0.3
- unist-util-is: 6.0.0
- unist-util-visit-parents: 6.0.1
-
- use-callback-ref@1.3.3(@types/react@18.3.18)(react@19.0.1):
- dependencies:
- react: 19.0.1
- tslib: 2.8.1
- optionalDependencies:
- '@types/react': 18.3.18
-
- use-sidecar@1.1.3(@types/react@18.3.18)(react@19.0.1):
- dependencies:
- detect-node-es: 1.1.0
- react: 19.0.1
- tslib: 2.8.1
- optionalDependencies:
- '@types/react': 18.3.18
-
- use-stick-to-bottom@1.1.1(react@19.0.1):
- dependencies:
- react: 19.0.1
-
- use-sync-external-store@1.4.0(react@19.0.1):
- dependencies:
- react: 19.0.1
-
- use-sync-external-store@1.6.0(react@19.0.1):
- dependencies:
- react: 19.0.1
-
- usehooks-ts@3.1.1(react@19.0.1):
- dependencies:
- lodash.debounce: 4.0.8
- react: 19.0.1
-
- util-deprecate@1.0.2: {}
-
- uuid@11.1.0: {}
-
- vfile-location@5.0.3:
- dependencies:
- '@types/unist': 3.0.3
- vfile: 6.0.3
-
- vfile-message@4.0.2:
- dependencies:
- '@types/unist': 3.0.3
- unist-util-stringify-position: 4.0.0
-
- vfile@6.0.3:
- dependencies:
- '@types/unist': 3.0.3
- vfile-message: 4.0.2
-
- vite-node@3.2.4(@types/node@22.13.10)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.19.3)(yaml@2.7.0):
- dependencies:
- cac: 6.7.14
- debug: 4.4.3
- es-module-lexer: 1.7.0
- pathe: 2.0.3
- vite: 7.1.12(@types/node@22.13.10)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.19.3)(yaml@2.7.0)
- transitivePeerDependencies:
- - '@types/node'
- - jiti
- - less
- - lightningcss
- - sass
- - sass-embedded
- - stylus
- - sugarss
- - supports-color
- - terser
- - tsx
- - yaml
-
- vite@7.1.12(@types/node@22.13.10)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.19.3)(yaml@2.7.0):
- dependencies:
- esbuild: 0.25.1
- fdir: 6.5.0(picomatch@4.0.3)
- picomatch: 4.0.3
- postcss: 8.5.6
- rollup: 4.52.5
- tinyglobby: 0.2.15
- optionalDependencies:
- '@types/node': 22.13.10
- fsevents: 2.3.3
- jiti: 2.6.1
- lightningcss: 1.30.2
- tsx: 4.19.3
- yaml: 2.7.0
-
- vitest@3.2.4(@types/debug@4.1.12)(@types/node@22.13.10)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.19.3)(yaml@2.7.0):
- dependencies:
- '@types/chai': 5.2.3
- '@vitest/expect': 3.2.4
- '@vitest/mocker': 3.2.4(vite@7.1.12(@types/node@22.13.10)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.19.3)(yaml@2.7.0))
- '@vitest/pretty-format': 3.2.4
- '@vitest/runner': 3.2.4
- '@vitest/snapshot': 3.2.4
- '@vitest/spy': 3.2.4
- '@vitest/utils': 3.2.4
- chai: 5.3.3
- debug: 4.4.3
- expect-type: 1.2.2
- magic-string: 0.30.21
- pathe: 2.0.3
- picomatch: 4.0.2
- std-env: 3.10.0
- tinybench: 2.9.0
- tinyexec: 0.3.2
- tinyglobby: 0.2.15
- tinypool: 1.1.1
- tinyrainbow: 2.0.0
- vite: 7.1.12(@types/node@22.13.10)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.19.3)(yaml@2.7.0)
- vite-node: 3.2.4(@types/node@22.13.10)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.19.3)(yaml@2.7.0)
- why-is-node-running: 2.3.0
- optionalDependencies:
- '@types/debug': 4.1.12
- '@types/node': 22.13.10
- transitivePeerDependencies:
- - jiti
- - less
- - lightningcss
- - msw
- - sass
- - sass-embedded
- - stylus
- - sugarss
- - supports-color
- - terser
- - tsx
- - yaml
-
- vscode-jsonrpc@8.2.0: {}
-
- vscode-languageserver-protocol@3.17.5:
- dependencies:
- vscode-jsonrpc: 8.2.0
- vscode-languageserver-types: 3.17.5
-
- vscode-languageserver-textdocument@1.0.12: {}
-
- vscode-languageserver-types@3.17.5: {}
-
- vscode-languageserver@9.0.1:
- dependencies:
- vscode-languageserver-protocol: 3.17.5
-
- vscode-uri@3.0.8: {}
-
- w3c-keyname@2.2.8: {}
-
- web-namespaces@2.0.1: {}
-
- why-is-node-running@2.3.0:
- dependencies:
- siginfo: 2.0.0
- stackback: 0.0.2
-
- ws@8.18.1(bufferutil@4.0.9):
- optionalDependencies:
- bufferutil: 4.0.9
- optional: true
-
- xtend@4.0.2: {}
-
- yaml@2.7.0:
- optional: true
-
- zod-to-json-schema@3.24.5(zod@3.25.76):
- dependencies:
- zod: 3.25.76
-
- zod@3.25.76: {}
-
- zod@4.1.12: {}
-
- zustand@4.5.7(@types/react@18.3.18)(react@19.0.1):
- dependencies:
- use-sync-external-store: 1.6.0(react@19.0.1)
- optionalDependencies:
- '@types/react': 18.3.18
- react: 19.0.1
-
- zwitch@2.0.4: {}
diff --git a/demos/use_cases/vercel-ai-sdk/public/images/demo-thumbnail.png b/demos/use_cases/vercel-ai-sdk/public/images/demo-thumbnail.png
deleted file mode 100644
index 8c6f98ab..00000000
Binary files a/demos/use_cases/vercel-ai-sdk/public/images/demo-thumbnail.png and /dev/null differ
diff --git a/demos/use_cases/vercel-ai-sdk/public/images/mouth of the seine, monet.jpg b/demos/use_cases/vercel-ai-sdk/public/images/mouth of the seine, monet.jpg
deleted file mode 100644
index 62515e56..00000000
Binary files a/demos/use_cases/vercel-ai-sdk/public/images/mouth of the seine, monet.jpg and /dev/null differ
diff --git a/demos/use_cases/vercel-ai-sdk/tests/e2e/api.test.ts b/demos/use_cases/vercel-ai-sdk/tests/e2e/api.test.ts
deleted file mode 100644
index 9b787796..00000000
--- a/demos/use_cases/vercel-ai-sdk/tests/e2e/api.test.ts
+++ /dev/null
@@ -1,95 +0,0 @@
-import { expect, test } from "@playwright/test";
-
-const CHAT_URL_REGEX = /\/chat\/[\w-]+/;
-const ERROR_TEXT_REGEX = /error|failed|trouble/i;
-
-test.describe("Chat API Integration", () => {
- test("sends message and receives AI response", async ({ page }) => {
- await page.goto("/");
-
- const input = page.getByTestId("multimodal-input");
- await input.fill("Hello");
- await page.getByTestId("send-button").click();
-
- // Wait for assistant response to appear
- const assistantMessage = page.locator("[data-role='assistant']").first();
- await expect(assistantMessage).toBeVisible({ timeout: 30_000 });
-
- // Verify it has some text content
- const content = await assistantMessage.textContent();
- expect(content?.length).toBeGreaterThan(0);
- });
-
- test("redirects to /chat/:id after sending message", async ({ page }) => {
- await page.goto("/");
-
- const input = page.getByTestId("multimodal-input");
- await input.fill("Test redirect");
- await page.getByTestId("send-button").click();
-
- // URL should change to /chat/:id format
- await expect(page).toHaveURL(CHAT_URL_REGEX, { timeout: 10_000 });
- });
-
- test("clears input after sending", async ({ page }) => {
- await page.goto("/");
-
- const input = page.getByTestId("multimodal-input");
- await input.fill("Test message");
- await page.getByTestId("send-button").click();
-
- // Input should be cleared
- await expect(input).toHaveValue("");
- });
-
- test("shows stop button during generation", async ({ page }) => {
- await page.goto("/");
- const input = page.getByTestId("multimodal-input");
- await input.fill("Test");
- await page.getByTestId("send-button").click();
-
- // Stop button should appear during generation
- const stopButton = page.getByTestId("stop-button");
- await expect(stopButton).toBeVisible({ timeout: 5000 });
- });
-});
-
-test.describe("Chat Error Handling", () => {
- test("handles API error gracefully", async ({ page }) => {
- await page.route("**/api/chat", async (route) => {
- await route.fulfill({
- status: 500,
- contentType: "application/json",
- body: JSON.stringify({ error: "Internal server error" }),
- });
- });
-
- await page.goto("/");
- const input = page.getByTestId("multimodal-input");
- await input.fill("Test error");
- await page.getByTestId("send-button").click();
-
- // Should show error toast or message
- await expect(page.getByText(ERROR_TEXT_REGEX).first()).toBeVisible({
- timeout: 5000,
- });
- });
-});
-
-test.describe("Suggested Actions", () => {
- test("suggested actions are clickable", async ({ page }) => {
- await page.goto("/");
-
- const suggestions = page.locator(
- "[data-testid='suggested-actions'] button"
- );
- const count = await suggestions.count();
-
- if (count > 0) {
- await suggestions.first().click();
-
- // Should redirect after clicking suggestion
- await expect(page).toHaveURL(CHAT_URL_REGEX, { timeout: 10_000 });
- }
- });
-});
diff --git a/demos/use_cases/vercel-ai-sdk/tests/e2e/auth.test.ts b/demos/use_cases/vercel-ai-sdk/tests/e2e/auth.test.ts
deleted file mode 100644
index 5dfcbb0a..00000000
--- a/demos/use_cases/vercel-ai-sdk/tests/e2e/auth.test.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-import { expect, test } from "@playwright/test";
-
-test.describe("Authentication Pages", () => {
- test("login page renders correctly", async ({ page }) => {
- await page.goto("/login");
- await expect(page.getByPlaceholder("user@acme.com")).toBeVisible();
- await expect(page.getByLabel("Password")).toBeVisible();
- await expect(page.getByRole("button", { name: "Sign In" })).toBeVisible();
- await expect(page.getByText("Don't have an account?")).toBeVisible();
- });
-
- test("register page renders correctly", async ({ page }) => {
- await page.goto("/register");
- await expect(page.getByPlaceholder("user@acme.com")).toBeVisible();
- await expect(page.getByLabel("Password")).toBeVisible();
- await expect(page.getByRole("button", { name: "Sign Up" })).toBeVisible();
- await expect(page.getByText("Already have an account?")).toBeVisible();
- });
-
- test("can navigate from login to register", async ({ page }) => {
- await page.goto("/login");
- await page.getByRole("link", { name: "Sign up" }).click();
- await expect(page).toHaveURL("/register");
- });
-
- test("can navigate from register to login", async ({ page }) => {
- await page.goto("/register");
- await page.getByRole("link", { name: "Sign in" }).click();
- await expect(page).toHaveURL("/login");
- });
-});
diff --git a/demos/use_cases/vercel-ai-sdk/tests/e2e/chat.test.ts b/demos/use_cases/vercel-ai-sdk/tests/e2e/chat.test.ts
deleted file mode 100644
index 26cf7531..00000000
--- a/demos/use_cases/vercel-ai-sdk/tests/e2e/chat.test.ts
+++ /dev/null
@@ -1,61 +0,0 @@
-import { expect, test } from "@playwright/test";
-
-test.describe("Chat Page", () => {
- test("home page loads with input field", async ({ page }) => {
- await page.goto("/");
- await expect(page.getByTestId("multimodal-input")).toBeVisible();
- });
-
- test("can type in the input field", async ({ page }) => {
- await page.goto("/");
- const input = page.getByTestId("multimodal-input");
- await input.fill("Hello world");
- await expect(input).toHaveValue("Hello world");
- });
-
- test("submit button is visible", async ({ page }) => {
- await page.goto("/");
- await expect(page.getByTestId("send-button")).toBeVisible();
- });
-
- test("suggested actions are visible on empty chat", async ({ page }) => {
- await page.goto("/");
- const suggestions = page.locator("[data-testid='suggested-actions']");
- await expect(suggestions).toBeVisible();
- });
-
- test("can stop generation with stop button", async ({ page }) => {
- await page.goto("/");
-
- // Type and send a message
- await page.getByTestId("multimodal-input").fill("Hello");
- await page.getByTestId("send-button").click();
-
- // Stop button should appear during generation
- const stopButton = page.getByTestId("stop-button");
- // If generation starts, stop button appears
- // This is a best-effort check since timing depends on API
- await stopButton.click({ timeout: 5000 }).catch(() => {
- // Generation may have finished before we could click
- });
- });
-});
-
-test.describe("Chat Input Features", () => {
- test("input clears after sending", async ({ page }) => {
- await page.goto("/");
- const input = page.getByTestId("multimodal-input");
- await input.fill("Test message");
- await page.getByTestId("send-button").click();
-
- // Input should clear after sending
- await expect(input).toHaveValue("");
- });
-
- test("input supports multiline text", async ({ page }) => {
- await page.goto("/");
- const input = page.getByTestId("multimodal-input");
- await input.fill("Line 1\nLine 2\nLine 3");
- await expect(input).toContainText("Line 1");
- });
-});
diff --git a/demos/use_cases/vercel-ai-sdk/tests/e2e/model-selector.test.ts b/demos/use_cases/vercel-ai-sdk/tests/e2e/model-selector.test.ts
deleted file mode 100644
index 4943796b..00000000
--- a/demos/use_cases/vercel-ai-sdk/tests/e2e/model-selector.test.ts
+++ /dev/null
@@ -1,69 +0,0 @@
-import { expect, test } from "@playwright/test";
-
-const MODEL_BUTTON_REGEX = /Gemini|Claude|GPT|Grok/i;
-
-test.describe("Model Selector", () => {
- test.beforeEach(async ({ page }) => {
- await page.goto("/");
- });
-
- test("displays a model button", async ({ page }) => {
- // Look for any button with model-related content
- const modelButton = page.locator("button").filter({ hasText: MODEL_BUTTON_REGEX }).first();
- await expect(modelButton).toBeVisible();
- });
-
- test("opens model selector popover on click", async ({ page }) => {
- const modelButton = page.locator("button").filter({ hasText: MODEL_BUTTON_REGEX }).first();
- await modelButton.click();
-
- // Search input should be visible in the popover
- await expect(page.getByPlaceholder("Search models...")).toBeVisible();
- });
-
- test("can search for models", async ({ page }) => {
- const modelButton = page.locator("button").filter({ hasText: MODEL_BUTTON_REGEX }).first();
- await modelButton.click();
-
- const searchInput = page.getByPlaceholder("Search models...");
- await searchInput.fill("Claude");
-
- // Should show at least one Claude model
- await expect(page.getByText("Claude Haiku").first()).toBeVisible();
- });
-
- test("can close model selector by clicking outside", async ({ page }) => {
- const modelButton = page.locator("button").filter({ hasText: MODEL_BUTTON_REGEX }).first();
- await modelButton.click();
-
- await expect(page.getByPlaceholder("Search models...")).toBeVisible();
-
- // Click outside to close
- await page.keyboard.press("Escape");
-
- await expect(page.getByPlaceholder("Search models...")).not.toBeVisible();
- });
-
- test("shows model provider groups", async ({ page }) => {
- const modelButton = page.locator("button").filter({ hasText: MODEL_BUTTON_REGEX }).first();
- await modelButton.click();
-
- // Should show provider group headers
- await expect(page.getByText("Anthropic")).toBeVisible();
- await expect(page.getByText("Google")).toBeVisible();
- });
-
- test("can select a different model", async ({ page }) => {
- const modelButton = page.locator("button").filter({ hasText: MODEL_BUTTON_REGEX }).first();
- await modelButton.click();
-
- // Select a specific model
- await page.getByText("Claude Haiku").first().click();
-
- // Popover should close
- await expect(page.getByPlaceholder("Search models...")).not.toBeVisible();
-
- // Model button should now show the selected model
- await expect(page.locator("button").filter({ hasText: "Claude Haiku" }).first()).toBeVisible();
- });
-});
diff --git a/demos/use_cases/vercel-ai-sdk/tests/fixtures.ts b/demos/use_cases/vercel-ai-sdk/tests/fixtures.ts
deleted file mode 100644
index c782fc0a..00000000
--- a/demos/use_cases/vercel-ai-sdk/tests/fixtures.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-import { expect as baseExpect, test as baseTest } from "@playwright/test";
-import { ChatPage } from "./pages/chat";
-
-type Fixtures = {
- chatPage: ChatPage;
-};
-
-export const test = baseTest.extend({
- chatPage: async ({ page }, use) => {
- const chatPage = new ChatPage(page);
- await use(chatPage);
- },
-});
-
-export const expect = baseExpect;
diff --git a/demos/use_cases/vercel-ai-sdk/tests/helpers.ts b/demos/use_cases/vercel-ai-sdk/tests/helpers.ts
deleted file mode 100644
index 6d492fac..00000000
--- a/demos/use_cases/vercel-ai-sdk/tests/helpers.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-import { generateId } from "ai";
-import { getUnixTime } from "date-fns";
-
-export function generateRandomTestUser() {
- const email = `test-${getUnixTime(new Date())}@playwright.com`;
- const password = generateId();
-
- return {
- email,
- password,
- };
-}
-
-export function generateTestMessage() {
- return `Test message ${Date.now()}`;
-}
diff --git a/demos/use_cases/vercel-ai-sdk/tests/pages/chat.ts b/demos/use_cases/vercel-ai-sdk/tests/pages/chat.ts
deleted file mode 100644
index 22983fa2..00000000
--- a/demos/use_cases/vercel-ai-sdk/tests/pages/chat.ts
+++ /dev/null
@@ -1,71 +0,0 @@
-import type { Page } from "@playwright/test";
-
-const MODEL_BUTTON_REGEX = /Gemini|Claude|GPT|Grok/i;
-
-export class ChatPage {
- page: Page;
-
- constructor(page: Page) {
- this.page = page;
- }
-
- async goto() {
- await this.page.goto("/");
- }
-
- async createNewChat() {
- await this.page.goto("/");
- await this.page.waitForSelector("[data-testid='multimodal-input']");
- }
-
- getInput() {
- return this.page.getByTestId("multimodal-input");
- }
-
- async typeMessage(message: string) {
- const input = this.getInput();
- await input.fill(message);
- }
-
- async sendMessage() {
- await this.page.getByTestId("send-button").click();
- }
-
- async sendUserMessage(message: string) {
- await this.typeMessage(message);
- await this.sendMessage();
- }
-
- getSendButton() {
- return this.page.getByTestId("send-button");
- }
-
- getStopButton() {
- return this.page.getByTestId("stop-button");
- }
-
- async clickSuggestedAction(index = 0) {
- const suggestions = this.page.locator(
- "[data-testid='suggested-actions'] button"
- );
- await suggestions.nth(index).click();
- }
-
- async openModelSelector() {
- const modelButton = this.page
- .locator("button")
- .filter({ hasText: MODEL_BUTTON_REGEX })
- .first();
- await modelButton.click();
- }
-
- async selectModel(modelName: string) {
- await this.openModelSelector();
- await this.page.getByText(modelName).first().click();
- }
-
- async searchModels(query: string) {
- await this.openModelSelector();
- await this.page.getByPlaceholder("Search models...").fill(query);
- }
-}
diff --git a/demos/use_cases/vercel-ai-sdk/tests/prompts/utils.ts b/demos/use_cases/vercel-ai-sdk/tests/prompts/utils.ts
deleted file mode 100644
index 83ccf9da..00000000
--- a/demos/use_cases/vercel-ai-sdk/tests/prompts/utils.ts
+++ /dev/null
@@ -1,30 +0,0 @@
-import type { LanguageModelV3StreamPart } from "@ai-sdk/provider";
-
-const mockUsage = {
- inputTokens: { total: 10, noCache: 10, cacheRead: 0, cacheWrite: 0 },
- outputTokens: { total: 20, text: 20, reasoning: 0 },
-};
-
-export function getResponseChunksByPrompt(
- _prompt: unknown,
- includeReasoning = false
-): LanguageModelV3StreamPart[] {
- const chunks: LanguageModelV3StreamPart[] = [];
-
- if (includeReasoning) {
- chunks.push(
- { type: "reasoning-start", id: "r1" },
- { type: "reasoning-delta", id: "r1", delta: "Let me think about this." },
- { type: "reasoning-end", id: "r1" }
- );
- }
-
- chunks.push(
- { type: "text-start", id: "t1" },
- { type: "text-delta", id: "t1", delta: "Hello, world!" },
- { type: "text-end", id: "t1" },
- { type: "finish", finishReason: "stop", usage: mockUsage }
- );
-
- return chunks;
-}
diff --git a/demos/use_cases/vercel-ai-sdk/vercel.json b/demos/use_cases/vercel-ai-sdk/vercel.json
deleted file mode 100644
index f92a3f8a..00000000
--- a/demos/use_cases/vercel-ai-sdk/vercel.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "framework": "nextjs"
-}