diff --git a/.changeset/thirty-olives-confess.md b/.changeset/thirty-olives-confess.md new file mode 100644 index 0000000000..390a4d4110 --- /dev/null +++ b/.changeset/thirty-olives-confess.md @@ -0,0 +1,5 @@ +--- +"@trigger.dev/react-hooks": minor +--- + +Add useTriggerChat hook for AI SDK useChat integration with Trigger.dev tasks diff --git a/packages/react-hooks/package.json b/packages/react-hooks/package.json index a7eeb1b443..1199b1a244 100644 --- a/packages/react-hooks/package.json +++ b/packages/react-hooks/package.json @@ -50,7 +50,25 @@ }, "peerDependencies": { "react": "^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^18.0 || ^19.0 || ^19.0.0-rc" + "react-dom": "^18.0 || ^19.0 || ^19.0.0-rc", + "@ai-sdk/react": "^2.0.0", + "@electric-sql/client": "^1.0.0", + "ai": "^5.0.0", + "eventsource-parser": "^3.0.0" + }, + "peerDependenciesMeta": { + "@ai-sdk/react": { + "optional": true + }, + "@electric-sql/client": { + "optional": true + }, + "ai": { + "optional": true + }, + "eventsource-parser": { + "optional": true + } }, "engines": { "node": ">=18.20.0" diff --git a/packages/react-hooks/src/hooks/useTriggerChat.ts b/packages/react-hooks/src/hooks/useTriggerChat.ts new file mode 100644 index 0000000000..dc5289d04a --- /dev/null +++ b/packages/react-hooks/src/hooks/useTriggerChat.ts @@ -0,0 +1,586 @@ +"use client"; + +import { ShapeStream } from "@electric-sql/client"; +import { EventSourceParserStream } from "eventsource-parser/stream"; +import { useChat, type UseChatHelpers } from "@ai-sdk/react"; +import type { + UIMessage, + UIMessageChunk, + ChatRequestOptions, + ChatInit, +} from "ai"; +import type { + AnyTask, + TaskIdentifier, + AnyRealtimeRun, +} from "@trigger.dev/core/v3"; + +const DEFAULT_TASK = "chat"; +const DEFAULT_STREAM_KEY = "chat"; +const DEFAULT_BASE_URL = "https://api.trigger.dev"; + +export interface TriggerChatTaskPayload< + UI_MESSAGE extends UIMessage = UIMessage, +> { + chatId?: string; + messageId?: string; + messages: UI_MESSAGE[]; + headers?: Record | Headers; + body?: object; + metadata?: unknown; +} + +export interface TriggerChatTransportOptions< + TPayload extends TriggerChatTaskPayload = TriggerChatTaskPayload, +> { + /** + * The Trigger.dev task identifier to trigger + * @default "chat" + * + * @remarks + * **CRITICAL:** Your Trigger.dev task MUST call `metadata.stream()` with the AI SDK stream. + * The stream key used in `metadata.stream()` must match the `streamKey` option (default: "chat"). + * + * @example Trigger.dev task that streams AI responses: + * ```ts + * import { metadata, task } from "@trigger.dev/sdk/v3"; + * import { streamText, convertToModelMessages, type UIMessage } from "ai"; + * import { openai } from "@ai-sdk/openai"; + * + * export const chatTask = task({ + * id: "chat", + * run: async ({ messages: UIMessage[] }) => { + * const result = streamText({ + * model: openai("gpt-4"), + * messages: convertToModelMessages(messages), + * }); + * + * // CRITICAL: Stream to client using metadata.stream() + * await metadata.stream("chat", result.toUIMessageStream()); + * + * return { text: await result.text }; + * }, + * }); + * ``` + */ + task?: TaskIdentifier; + + /** + * Server action to trigger the task + * Must call tasks.trigger() server-side and return run info + * + * @example Server action implementation: + * ```ts + * "use server"; + * import { tasks } from "@trigger.dev/sdk/v3"; + * import { chatTask } from "./trigger/chat"; + * + * export async function triggerChatTask(task, payload) { + * const handle = await tasks.trigger(task, payload); + * return { + * success: true, + * runId: handle.id, + * publicAccessToken: handle.publicAccessToken, + * }; + * } + * ``` + * + * @remarks + * This must be a server action in a separate file with "use server" directive. + * Since this hook runs on the client, it cannot directly call tasks.trigger(). + */ + triggerTask: ( + task: TaskIdentifier, + payload: TriggerChatTaskPayload, + ) => Promise<{ + success: boolean; + runId?: string; + publicAccessToken?: string; + error?: string; + }>; + + /** + * Access token for Trigger.dev realtime subscriptions + * Provide as string or function for dynamic token generation + * + * @default Uses the publicAccessToken from tasks.trigger() response + */ + accessToken?: string | (() => string | Promise); + + /** + * The stream key used in metadata.stream() on the backend + * Must match the key used in your Trigger.dev task + * @default "chat" + * + * @example + * If your task uses `await metadata.stream("my-stream", ...)`, + * then set `streamKey: "my-stream"` in the hook options. + */ + streamKey?: string; + + /** + * Base URL for the Trigger.dev API + * @default "https://api.trigger.dev" + */ + baseURL?: string; + + /** + * Transform chat options into the task payload + * Use this to customize what gets sent to your Trigger.dev task + */ + preparePayload?: (params: TriggerChatTaskPayload) => TPayload; +} + +type ParsedMetadata = { + $$streams?: string[]; + $$streamsVersion?: string; + $$streamsBaseUrl?: string; +} & Record; + +/** + * Chat transport implementation for AI SDK that integrates with Trigger.dev + * + * This transport enables long-running AI conversations by: + * - Triggering Trigger.dev background tasks + * - Subscribing to realtime run updates via Electric SQL + * - Streaming AI responses via Server-Sent Events (SSE) + * + * @example Basic usage with defaults: + * ```ts + * import { triggerChatTask } from "./actions.ts"; // Your server action with "use server" directive + * + * const transport = new TriggerChatTransport({ + * triggerTask: triggerChatTask, + * }); + * + * const { messages } = useChat({ transport }); + * ``` + */ +export class TriggerChatTransport { + private readonly task: TaskIdentifier; + private readonly triggerTask: NonNullable< + TriggerChatTransportOptions["triggerTask"] + >; + private readonly accessToken?: string | (() => string | Promise); + private readonly streamKey: string; + private readonly baseURL: string; + private readonly preparePayload?: TriggerChatTransportOptions["preparePayload"]; + + private readonly activeRuns = new Map(); + private readonly runTokens = new Map(); + + constructor(options: TriggerChatTransportOptions) { + this.task = options.task ?? DEFAULT_TASK; + this.streamKey = options.streamKey ?? DEFAULT_STREAM_KEY; + this.baseURL = options.baseURL ?? DEFAULT_BASE_URL; + this.triggerTask = options.triggerTask; + this.accessToken = options.accessToken; + this.preparePayload = options.preparePayload; + } + + async sendMessages( + options: { + abortSignal: AbortSignal | undefined; + } & ChatRequestOptions & + TriggerChatTaskPayload, + ): Promise> { + const { abortSignal, ...payloadOptions } = options; + + const payload = this.buildPayload({ + ...payloadOptions, + }); + + const result = await this.triggerTask(this.task, payload); + + if (!result.success || !result.runId) { + throw new Error(result.error || "Failed to trigger task"); + } + + if (payloadOptions.chatId) { + this.activeRuns.set(payloadOptions.chatId, result.runId); + } + + if (result.publicAccessToken) { + this.runTokens.set(result.runId, result.publicAccessToken); + } + + return this.subscribeToRun(result.runId, abortSignal); + } + + async reconnectToStream( + options: { chatId: string } & ChatRequestOptions, + ): Promise | null> { + const runId = this.activeRuns.get(options.chatId); + + if (!runId) { + return null; + } + + try { + return this.subscribeToRun(runId, undefined); + } catch { + this.activeRuns.delete(options.chatId); + return null; + } + } + + private buildPayload(params: TriggerChatTaskPayload) { + if (this.preparePayload) { + return this.preparePayload(params); + } + + return params; + } + + private async subscribeToRun( + runId: string, + abortSignal: AbortSignal | undefined, + ): Promise> { + const accessToken = await this.resolveAccessToken(runId); + const streamKey = this.streamKey; + const baseURL = this.baseURL; + + return new ReadableStream({ + async start(controller) { + const runAbortController = new AbortController(); + let unsubscribeFromRun: (() => void) | undefined; + + function cleanup() { + runAbortController.abort(); + unsubscribeFromRun?.(); + } + + function handleAbort() { + cleanup(); + controller.close(); + } + + if (abortSignal) { + abortSignal.addEventListener("abort", handleAbort, { once: true }); + } + + try { + const runStreamUrl = `${baseURL}/realtime/v1/runs/${runId}`; + const runStream = new ShapeStream({ + url: runStreamUrl, + headers: { + Authorization: `Bearer ${accessToken}`, + "x-trigger-electric-version": "1.0.0-beta.1", + "x-trigger-api-version": "2024-11-28", + }, + signal: runAbortController.signal, + }); + + const subscribedStreams = new Set(); + + unsubscribeFromRun = runStream.subscribe( + (messages) => { + for (const message of messages) { + if (!("value" in message) || !message.value) continue; + + const run = message.value as unknown as AnyRealtimeRun; + const metadata = parseMetadata(run.metadata); + + subscribeToDataStreams({ + metadata, + subscribedStreams, + streamKey, + runId, + baseURL, + accessToken, + runAbortController, + controller, + }); + + if (run.finishedAt) { + cleanup(); + controller.close(); + if (abortSignal) { + abortSignal.removeEventListener("abort", handleAbort); + } + } + } + }, + (error) => { + controller.error(error); + if (abortSignal) { + abortSignal.removeEventListener("abort", handleAbort); + } + }, + ); + } catch (error) { + cleanup(); + controller.error(error); + } + }, + }); + } + + private async resolveAccessToken(runId: string): Promise { + const storedToken = this.runTokens.get(runId); + if (storedToken) { + return storedToken; + } + + if (!this.accessToken) { + throw new Error( + "No access token available. Provide accessToken option or ensure tasks.trigger() returns publicAccessToken", + ); + } + + if (typeof this.accessToken === "function") { + return await this.accessToken(); + } + + return this.accessToken; + } +} + +/** + * Parse metadata from Trigger.dev run + * Handles both string (JSON) and object formats + */ +function parseMetadata( + metadata: Record | string | undefined, +): ParsedMetadata | undefined { + if (!metadata) return undefined; + + if (typeof metadata === "string") { + try { + return JSON.parse(metadata) as ParsedMetadata; + } catch { + return undefined; + } + } + + if (typeof metadata === "object") { + return metadata as ParsedMetadata; + } + + return undefined; +} + +/** + * Subscribe to data streams when metadata indicates they're available + * Uses Server-Sent Events to stream AI responses in real-time + */ +function subscribeToDataStreams(params: { + metadata: ParsedMetadata | undefined; + subscribedStreams: Set; + streamKey: string; + runId: string; + baseURL: string; + accessToken: string; + runAbortController: AbortController; + controller: ReadableStreamDefaultController; +}) { + const { + metadata, + subscribedStreams, + streamKey, + runId, + baseURL, + accessToken, + runAbortController, + controller, + } = params; + + if (!metadata?.$$streams || !Array.isArray(metadata.$$streams)) { + console.warn( + "Unable to subscribe to streams: metadata.$$streams does not contain an array", + ); + return; + } + + for (const stream of metadata.$$streams) { + if (typeof stream !== "string") continue; + if (stream !== streamKey) continue; + if (subscribedStreams.has(stream)) continue; + + subscribedStreams.add(stream); + void streamDataFromTrigger({ + streamKey: stream, + runId, + baseURL, + accessToken, + runAbortController, + controller, + }).catch((error) => { + controller.error(error); + runAbortController.abort(); + }); + } +} + +/** + * Stream data from Trigger.dev using Server-Sent Events + * Reads stream chunks and enqueues them to the controller + */ +async function streamDataFromTrigger(params: { + streamKey: string; + runId: string; + baseURL: string; + accessToken: string; + runAbortController: AbortController; + controller: ReadableStreamDefaultController; +}) { + const { + streamKey, + runId, + baseURL, + accessToken, + runAbortController, + controller, + } = params; + + try { + const streamUrl = `${baseURL}/realtime/v1/streams/${runId}/${streamKey}`; + const response = await fetch(streamUrl, { + headers: { + Accept: "text/event-stream", + Authorization: `Bearer ${accessToken}`, + }, + signal: runAbortController.signal, + }); + + if (!response.ok) { + throw new Error(`Stream fetch failed: ${response.status}`); + } + + if (!response.body) { + throw new Error("No response body"); + } + + const reader = response.body + .pipeThrough(new TextDecoderStream()) + .pipeThrough(new EventSourceParserStream()) + .getReader(); + + try { + while (true) { + const { done, value } = await reader.read(); + + if (done) { + break; // Don't close controller - let run.finishedAt handle it + } + + // AI SDK streams typically send chunks as data events + if (value.event && value.event !== "data") { + continue; // Skip non-data events + } + + try { + const chunk = JSON.parse(value.data); + controller.enqueue(chunk as UIMessageChunk); + } catch (parseError) { + console.warn("Failed to parse SSE chunk:", value.data, parseError); + // Continue processing other chunks + } + } + } finally { + reader.releaseLock(); + } + } catch (error) { + const shouldIgnoreError = + error instanceof Error && error.name === "AbortError"; + + if (!shouldIgnoreError) { + throw error; + } + } +} + +type UseTriggerChatOptions = { + transportOptions: TriggerChatTransportOptions; +} & Omit, "transport">; + +/** + * Hook to use Trigger.dev chat transport with AI SDK's useChat + * + * Enables long-running AI conversations by triggering Trigger.dev background tasks, + * subscribing to realtime run updates, and streaming AI responses via SSE. + * + * @param options - Options for the chat hook including transport configuration + * @returns AI SDK chat helpers (messages, input, handleSubmit, etc.) + * + * @remarks + * **CRITICAL SETUP REQUIREMENTS:** + * + * 1. Your Trigger.dev task MUST call `metadata.stream()` to stream responses: + * ```ts + * await metadata.stream("chat", result.toUIMessageStream()); + * ``` + * + * 2. You must provide a server action that calls `tasks.trigger()`: + * ```ts + * "use server"; + * export async function triggerChat(task: string, payload: unknown) { + * const handle = await tasks.trigger(task, payload); + * return { success: true, runId: handle.id, publicAccessToken: handle.publicAccessToken }; + * } + * ``` + * + * @example Complete setup with three files: + * + * **1. Trigger.dev task (src/trigger/chat.ts):** + * ```ts + * import { metadata, task } from "@trigger.dev/sdk/v3"; + * import { streamText, convertToModelMessages, type UIMessage } from "ai"; + * import { openai } from "@ai-sdk/openai"; + * + * export const chatTask = task({ + * id: "chat", + * run: async ({ messages: UIMessage[] }) => { + * const result = streamText({ + * model: openai("gpt-4"), + * messages: convertToModelMessages(messages), + * }); + * // CRITICAL: Stream to client + * await metadata.stream("chat", result.toUIMessageStream()); + * return { text: await result.text }; + * }, + * }); + * ``` + * + * **2. Server action (src/actions.ts):** + * ```ts + * "use server"; + * import { tasks } from "@trigger.dev/sdk/v3"; + * + * export async function triggerChat(task: string, payload: unknown) { + * const handle = await tasks.trigger(task, payload); + * return { success: true, runId: handle.id, publicAccessToken: handle.publicAccessToken }; + * } + * ``` + * + * **3. Client component (src/components/Chat.tsx):** + * ```ts + * "use client"; + * import { useTriggerChat } from "@trigger.dev/react-hooks"; + * import { triggerChat } from "../actions"; + * + * export function Chat() { + * const { messages, input, handleInputChange, handleSubmit } = useTriggerChat({ + * transportOptions: { triggerTask: triggerChat } + * }); + * + * return ( + *
+ * {messages.map(m =>
{m.role}: {m.content}
)} + * + * + *
+ * ); + * } + * ``` + */ +export function useTriggerChat( + options: UseTriggerChatOptions, +): UseChatHelpers { + const { transportOptions, ...chatOptions } = options; + + return useChat({ + transport: new TriggerChatTransport(transportOptions), + ...chatOptions, + }); +} diff --git a/packages/react-hooks/src/index.ts b/packages/react-hooks/src/index.ts index bc20cf837d..6f50880b50 100644 --- a/packages/react-hooks/src/index.ts +++ b/packages/react-hooks/src/index.ts @@ -4,3 +4,4 @@ export * from "./hooks/useRun.js"; export * from "./hooks/useRealtime.js"; export * from "./hooks/useTaskTrigger.js"; export * from "./hooks/useWaitToken.js"; +export * from "./hooks/useTriggerChat.js"; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 02601f6945..10ea4f1f28 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -64,7 +64,7 @@ importers: version: 3.1.4(vitest@3.1.4) autoprefixer: specifier: ^10.4.12 - version: 10.4.13(postcss@8.5.4) + version: 10.4.13(postcss@8.5.6) eslint-plugin-turbo: specifier: ^2.0.4 version: 2.0.5(eslint@8.31.0) @@ -221,7 +221,7 @@ importers: version: 0.2.6 '@codemirror/autocomplete': specifier: ^6.3.1 - version: 6.4.0(@codemirror/language@6.3.2)(@codemirror/state@6.2.0)(@codemirror/view@6.7.2)(@lezer/common@1.2.3) + version: 6.4.0(@codemirror/language@6.3.2)(@codemirror/state@6.2.0)(@codemirror/view@6.7.2)(@lezer/common@1.3.0) '@codemirror/commands': specifier: ^6.1.2 version: 6.1.3 @@ -434,7 +434,7 @@ importers: version: 8.3.0(socket.io-adapter@2.5.4) '@splinetool/react-spline': specifier: ^2.2.6 - version: 2.2.6(@splinetool/runtime@1.9.98)(react-dom@18.2.0)(react@18.2.0) + version: 2.2.6(@splinetool/runtime@1.10.90)(react-dom@18.2.0)(react@18.2.0) '@tabler/icons-react': specifier: ^2.39.0 version: 2.47.0(react@18.2.0) @@ -473,7 +473,7 @@ importers: version: 8.6.6 '@uiw/react-codemirror': specifier: ^4.19.5 - version: 4.19.5(@babel/runtime@7.27.4)(@codemirror/autocomplete@6.4.0)(@codemirror/language@6.3.2)(@codemirror/lint@6.4.2)(@codemirror/search@6.2.3)(@codemirror/state@6.2.0)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.7.2)(codemirror@6.0.1)(react-dom@18.2.0)(react@18.2.0) + version: 4.19.5(@babel/runtime@7.28.4)(@codemirror/autocomplete@6.4.0)(@codemirror/language@6.3.2)(@codemirror/lint@6.4.2)(@codemirror/search@6.2.3)(@codemirror/state@6.2.0)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.7.2)(codemirror@6.0.2)(react-dom@18.2.0)(react@18.2.0) '@unkey/cache': specifier: ^1.5.0 version: 1.5.0 @@ -876,10 +876,10 @@ importers: version: 0.0.130(ws@8.12.0) autoprefixer: specifier: ^10.4.13 - version: 10.4.13(postcss@8.5.4) + version: 10.4.13(postcss@8.5.6) css-loader: specifier: ^6.10.0 - version: 6.10.0(webpack@5.99.9) + version: 6.10.0(webpack@5.102.1) datepicker: specifier: link:@types/@react-aria/datepicker version: link:@types/@react-aria/datepicker @@ -912,10 +912,10 @@ importers: version: 4.1.5 postcss-import: specifier: ^16.0.1 - version: 16.0.1(postcss@8.5.4) + version: 16.0.1(postcss@8.5.6) postcss-loader: specifier: ^8.1.1 - version: 8.1.1(postcss@8.5.4)(typescript@5.5.4)(webpack@5.99.9) + version: 8.1.1(postcss@8.5.6)(typescript@5.5.4)(webpack@5.102.1) prettier: specifier: ^2.8.8 version: 2.8.8 @@ -930,7 +930,7 @@ importers: version: 3.0.2 style-loader: specifier: ^3.3.4 - version: 3.3.4(webpack@5.99.9) + version: 3.3.4(webpack@5.102.1) supertest: specifier: ^7.0.0 version: 7.0.0 @@ -1667,7 +1667,7 @@ importers: version: 4.0.14 ai: specifier: ^3.4.33 - version: 3.4.33(react@18.3.1)(svelte@5.33.14)(vue@3.5.16)(zod@3.25.76) + version: 3.4.33(react@18.3.1)(svelte@5.43.0)(vue@3.5.22)(zod@3.25.76) defu: specifier: ^6.1.4 version: 6.1.4 @@ -1726,9 +1726,21 @@ importers: packages/react-hooks: dependencies: + '@ai-sdk/react': + specifier: ^2.0.0 + version: 2.0.14(react@18.3.1)(zod@3.25.76) + '@electric-sql/client': + specifier: ^1.0.0 + version: 1.0.14 '@trigger.dev/core': specifier: workspace:^4.0.5 version: link:../core + ai: + specifier: ^5.0.0 + version: 5.0.14(zod@3.25.76) + eventsource-parser: + specifier: ^3.0.0 + version: 3.0.0 react: specifier: ^18.0 || ^19.0 || ^19.0.0-rc version: 18.3.1 @@ -1796,7 +1808,7 @@ importers: version: 6.0.1 tsup: specifier: ^8.4.0 - version: 8.4.0(postcss@8.5.4)(tsx@4.17.0)(typescript@5.5.4) + version: 8.4.0(postcss@8.5.6)(tsx@4.17.0)(typescript@5.5.4) tsx: specifier: 4.17.0 version: 4.17.0 @@ -2028,7 +2040,7 @@ importers: version: link:../../packages/trigger-sdk '@vercel/otel': specifier: ^1.13.0 - version: 1.13.0(@opentelemetry/api-logs@0.203.0)(@opentelemetry/api@1.9.0)(@opentelemetry/instrumentation@0.203.0)(@opentelemetry/resources@1.30.1)(@opentelemetry/sdk-logs@0.203.0)(@opentelemetry/sdk-metrics@1.30.0)(@opentelemetry/sdk-trace-base@1.30.1) + version: 1.13.0(@opentelemetry/api-logs@0.203.0)(@opentelemetry/api@1.9.0)(@opentelemetry/instrumentation@0.203.0)(@opentelemetry/resources@1.30.1)(@opentelemetry/sdk-logs@0.203.0)(@opentelemetry/sdk-metrics@1.30.1)(@opentelemetry/sdk-trace-base@1.30.1) '@vercel/postgres': specifier: ^0.10.0 version: 0.10.0 @@ -2535,7 +2547,7 @@ packages: dependencies: '@ai-sdk/provider': 2.0.0 '@standard-schema/spec': 1.0.0 - eventsource-parser: 3.0.3 + eventsource-parser: 3.0.6 zod: 3.25.76 zod-to-json-schema: 3.24.6(zod@3.25.76) @@ -2649,6 +2661,24 @@ packages: zod: 3.25.76 dev: false + /@ai-sdk/react@2.0.14(react@18.3.1)(zod@3.25.76): + resolution: {integrity: sha512-CDiQ8/nnl8pOuqZzMpvZ1LNeLfDwjCYeyIniv4RiLH2419cv9f+FO0wctHAsxAvHBp/WnlsYudzxmFv09lcmGA==} + engines: {node: '>=18'} + peerDependencies: + react: ^18 || ^19 || ^19.0.0-rc + zod: ^3.25.76 || ^4 + peerDependenciesMeta: + zod: + optional: true + dependencies: + '@ai-sdk/provider-utils': 3.0.3(zod@3.25.76) + ai: 5.0.14(zod@3.25.76) + react: 18.3.1 + swr: 2.2.5(react@18.3.1) + throttleit: 2.1.0 + zod: 3.25.76 + dev: false + /@ai-sdk/solid@0.0.54(zod@3.25.76): resolution: {integrity: sha512-96KWTVK+opdFeRubqrgaJXoNiDP89gNxFRWUp0PJOotZW816AbhUf4EnDjBjXTLjXL1n0h8tGSE9sZsRkj9wQQ==} engines: {node: '>=18'} @@ -2664,7 +2694,7 @@ packages: - zod dev: true - /@ai-sdk/svelte@0.0.57(svelte@5.33.14)(zod@3.25.76): + /@ai-sdk/svelte@0.0.57(svelte@5.43.0)(zod@3.25.76): resolution: {integrity: sha512-SyF9ItIR9ALP9yDNAD+2/5Vl1IT6kchgyDH8xkmhysfJI6WrvJbtO1wdQ0nylvPLcsPoYu+cAlz1krU4lFHcYw==} engines: {node: '>=18'} peerDependencies: @@ -2675,8 +2705,8 @@ packages: dependencies: '@ai-sdk/provider-utils': 1.0.22(zod@3.25.76) '@ai-sdk/ui-utils': 0.0.50(zod@3.25.76) - sswr: 2.1.0(svelte@5.33.14) - svelte: 5.33.14 + sswr: 2.1.0(svelte@5.43.0) + svelte: 5.43.0 transitivePeerDependencies: - zod dev: true @@ -2737,7 +2767,7 @@ packages: zod-to-json-schema: 3.24.6(zod@3.25.76) dev: false - /@ai-sdk/vue@0.0.59(vue@3.5.16)(zod@3.25.76): + /@ai-sdk/vue@0.0.59(vue@3.5.22)(zod@3.25.76): resolution: {integrity: sha512-+ofYlnqdc8c4F6tM0IKF0+7NagZRAiqBJpGDJ+6EYhDW8FHLUP/JFBgu32SjxSxC6IKFZxEnl68ZoP/Z38EMlw==} engines: {node: '>=18'} peerDependencies: @@ -2748,8 +2778,8 @@ packages: dependencies: '@ai-sdk/provider-utils': 1.0.22(zod@3.25.76) '@ai-sdk/ui-utils': 0.0.50(zod@3.25.76) - swrv: 1.0.4(vue@3.5.16) - vue: 3.5.16(typescript@5.5.4) + swrv: 1.0.4(vue@3.5.22) + vue: 3.5.22(typescript@5.5.4) transitivePeerDependencies: - zod dev: true @@ -4822,8 +4852,8 @@ packages: resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-identifier@7.27.1: - resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} + /@babel/helper-validator-identifier@7.28.5: + resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} engines: {node: '>=6.9.0'} dev: true @@ -4892,12 +4922,12 @@ packages: '@babel/types': 7.27.0 dev: true - /@babel/parser@7.27.5: - resolution: {integrity: sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==} + /@babel/parser@7.28.5: + resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.27.3 + '@babel/types': 7.28.5 dev: true /@babel/plugin-syntax-decorators@7.22.10(@babel/core@7.22.17): @@ -5065,6 +5095,11 @@ packages: resolution: {integrity: sha512-t3yaEOuGu9NlIZ+hIeGbBjFtZT7j2cb2tg0fuaJKeGotchRjjLfrBA9Kwf8quhpP1EUuxModQg04q/mBwyg8uA==} engines: {node: '>=6.9.0'} + /@babel/runtime@7.28.4: + resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} + engines: {node: '>=6.9.0'} + dev: false + /@babel/template@7.22.15: resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} engines: {node: '>=6.9.0'} @@ -5143,12 +5178,12 @@ packages: '@babel/helper-string-parser': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 - /@babel/types@7.27.3: - resolution: {integrity: sha512-Y1GkI4ktrtvmawoSq+4FCVHNryea6uR+qUQy0AGxLSsjCX0nVmkYQMBLHDkXZuo5hGx7eYdnIaslsdBFm7zbUw==} + /@babel/types@7.28.5: + resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-string-parser': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 dev: true /@balena/dockerignore@1.0.2: @@ -5407,13 +5442,13 @@ packages: '@clickhouse/client-common': 1.12.1 dev: false - /@codemirror/autocomplete@6.18.6: - resolution: {integrity: sha512-PHHBXFomUs5DF+9tCOM/UoW6XQ4R44lLNNhRaW9PKPTU0D7lIjRg3ElxaJnTwsl/oHiR93WSXDBrekhoUGCPtg==} + /@codemirror/autocomplete@6.19.1: + resolution: {integrity: sha512-q6NenYkEy2fn9+JyjIxMWcNjzTL/IhwqfzOut1/G3PrIFkrbl4AL7Wkse5tLrQUUyqGoAKU5+Pi5jnnXxH5HGw==} dependencies: - '@codemirror/language': 6.11.1 + '@codemirror/language': 6.11.3 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.37.1 - '@lezer/common': 1.2.3 + '@codemirror/view': 6.38.6 + '@lezer/common': 1.3.0 dev: false /@codemirror/autocomplete@6.4.0(@codemirror/language@6.3.2)(@codemirror/state@6.2.0)(@codemirror/view@6.7.2)(@lezer/common@1.0.2): @@ -5430,7 +5465,7 @@ packages: '@lezer/common': 1.0.2 dev: false - /@codemirror/autocomplete@6.4.0(@codemirror/language@6.3.2)(@codemirror/state@6.2.0)(@codemirror/view@6.7.2)(@lezer/common@1.2.3): + /@codemirror/autocomplete@6.4.0(@codemirror/language@6.3.2)(@codemirror/state@6.2.0)(@codemirror/view@6.7.2)(@lezer/common@1.3.0): resolution: {integrity: sha512-HLF2PnZAm1s4kGs30EiqKMgD7XsYaQ0XJnMR0rofEWQ5t5D60SfqpDIkIh1ze5tiEbyUWm8+VJ6W1/erVvBMIA==} peerDependencies: '@codemirror/language': ^6.0.0 @@ -5441,7 +5476,7 @@ packages: '@codemirror/language': 6.3.2 '@codemirror/state': 6.2.0 '@codemirror/view': 6.7.2 - '@lezer/common': 1.2.3 + '@lezer/common': 1.3.0 dev: false /@codemirror/commands@6.1.3: @@ -5453,13 +5488,13 @@ packages: '@lezer/common': 1.0.2 dev: false - /@codemirror/commands@6.8.1: - resolution: {integrity: sha512-KlGVYufHMQzxbdQONiLyGQDUW0itrLZwq3CcY7xpv9ZLRHqzkBSoteocBHtMCoY7/Ci4xhzSrToIeLg7FxHuaw==} + /@codemirror/commands@6.10.0: + resolution: {integrity: sha512-2xUIc5mHXQzT16JnyOFkh8PvfeXuIut3pslWGfsGOhxP/lpgRm9HOl/mpzLErgt5mXDovqA0d11P21gofRLb9w==} dependencies: - '@codemirror/language': 6.11.1 + '@codemirror/language': 6.11.3 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.37.1 - '@lezer/common': 1.2.3 + '@codemirror/view': 6.38.6 + '@lezer/common': 1.3.0 dev: false /@codemirror/lang-javascript@6.1.2: @@ -5481,15 +5516,15 @@ packages: '@lezer/json': 1.0.0 dev: false - /@codemirror/language@6.11.1: - resolution: {integrity: sha512-5kS1U7emOGV84vxC+ruBty5sUgcD0te6dyupyRVG2zaSjhTDM73LhVKUtVwiqSe6QwmEoA4SCiU8AKPFyumAWQ==} + /@codemirror/language@6.11.3: + resolution: {integrity: sha512-9HBM2XnwDj7fnu0551HkGdrUrrqmYq/WC5iv6nbY2WdicXdGbhR/gfbZOH73Aqj4351alY1+aoG9rCNfiwS1RA==} dependencies: '@codemirror/state': 6.5.2 - '@codemirror/view': 6.37.1 - '@lezer/common': 1.2.3 - '@lezer/highlight': 1.2.1 + '@codemirror/view': 6.38.6 + '@lezer/common': 1.3.0 + '@lezer/highlight': 1.2.3 '@lezer/lr': 1.4.2 - style-mod: 4.1.2 + style-mod: 4.1.3 dev: false /@codemirror/language@6.3.2: @@ -5511,11 +5546,11 @@ packages: crelt: 1.0.5 dev: false - /@codemirror/lint@6.8.5: - resolution: {integrity: sha512-s3n3KisH7dx3vsoeGMxsbRAgKe4O1vbrnKBClm99PU0fWxmxsx5rR2PfqQgIt+2MMJBHbiJ5rfIdLYfB9NNvsA==} + /@codemirror/lint@6.9.1: + resolution: {integrity: sha512-te7To1EQHePBQQzasDKWmK2xKINIXpk+xAiSYr9ZN+VB4KaT+/Hi2PEkeErTk5BV3PTz1TLyQL4MtJfPkKZ9sw==} dependencies: '@codemirror/state': 6.5.2 - '@codemirror/view': 6.37.1 + '@codemirror/view': 6.38.6 crelt: 1.0.6 dev: false @@ -5531,7 +5566,7 @@ packages: resolution: {integrity: sha512-KmWepDE6jUdL6n8cAAqIpRmLPBZ5ZKnicE8oGU/s3QrAVID+0VhLFrzUucVKHG5035/BSykhExDL/Xm7dHthiA==} dependencies: '@codemirror/state': 6.5.2 - '@codemirror/view': 6.37.1 + '@codemirror/view': 6.38.6 crelt: 1.0.6 dev: false @@ -5545,21 +5580,21 @@ packages: '@marijn/find-cluster-break': 1.0.2 dev: false - /@codemirror/theme-one-dark@6.1.2: - resolution: {integrity: sha512-F+sH0X16j/qFLMAfbciKTxVOwkdAS336b7AXTKOZhy8BR3eH/RelsnLgLFINrpST63mmN2OuwUt0W2ndUgYwUA==} + /@codemirror/theme-one-dark@6.1.3: + resolution: {integrity: sha512-NzBdIvEJmx6fjeremiGp3t/okrLPYT0d9orIc7AFun8oZcRk58aejkqhv6spnz4MLAevrKNPMQYXEWMg4s+sKA==} dependencies: - '@codemirror/language': 6.11.1 + '@codemirror/language': 6.11.3 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.37.1 - '@lezer/highlight': 1.2.1 + '@codemirror/view': 6.38.6 + '@lezer/highlight': 1.2.3 dev: false - /@codemirror/view@6.37.1: - resolution: {integrity: sha512-Qy4CAUwngy/VQkEz0XzMKVRcckQuqLYWKqVpDDDghBe5FSXSqfVrJn49nw3ePZHxRUz4nRmb05Lgi+9csWo4eg==} + /@codemirror/view@6.38.6: + resolution: {integrity: sha512-qiS0z1bKs5WOvHIAC0Cybmv4AJSkAXgX5aD6Mqd2epSLlVJsQl8NG23jCVouIgkh4All/mrbdsf2UOLFnJw0tw==} dependencies: '@codemirror/state': 6.5.2 crelt: 1.0.6 - style-mod: 4.1.2 + style-mod: 4.1.3 w3c-keyname: 2.2.8 dev: false @@ -5787,7 +5822,7 @@ packages: /@electric-sql/client@0.4.0: resolution: {integrity: sha512-YVYSqHitqVIDC1RBTfmHMfAfqDNAKMK9/AFVTDFQQxN3Q85dIQS49zThAuJVecYiuYRJvTiqf40c4n39jZSNrQ==} optionalDependencies: - '@rollup/rollup-darwin-arm64': 4.41.1 + '@rollup/rollup-darwin-arm64': 4.52.5 dev: false /@electric-sql/client@1.0.14: @@ -5795,7 +5830,7 @@ packages: dependencies: '@microsoft/fetch-event-source': 2.0.1 optionalDependencies: - '@rollup/rollup-darwin-arm64': 4.41.1 + '@rollup/rollup-darwin-arm64': 4.52.5 dev: false /@electric-sql/react@0.3.5(react@18.2.0): @@ -5811,8 +5846,8 @@ packages: use-sync-external-store: 1.2.2(react@18.2.0) dev: false - /@emnapi/runtime@1.4.3: - resolution: {integrity: sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==} + /@emnapi/runtime@1.6.0: + resolution: {integrity: sha512-obtUmAHTMjll499P+D9A3axeJFlhdjOWdKUNs/U6QIGT7V5RjcUW1xToAzjvmgTSQhDbYn/NwfTRoJcQ2rNBxA==} requiresBuild: true dependencies: tslib: 2.8.1 @@ -7836,7 +7871,7 @@ packages: cpu: [wasm32] requiresBuild: true dependencies: - '@emnapi/runtime': 1.4.3 + '@emnapi/runtime': 1.6.0 dev: false optional: true @@ -7935,6 +7970,13 @@ packages: engines: {node: '>=8'} dev: true + /@jridgewell/gen-mapping@0.3.13: + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 + dev: true + /@jridgewell/gen-mapping@0.3.2: resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} engines: {node: '>=6.0.0'} @@ -7960,14 +8002,33 @@ packages: '@jridgewell/sourcemap-codec': 1.5.0 '@jridgewell/trace-mapping': 0.3.25 + /@jridgewell/remapping@2.3.5: + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + dev: true + /@jridgewell/resolve-uri@3.1.0: resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} engines: {node: '>=6.0.0'} + /@jridgewell/resolve-uri@3.1.2: + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + dev: true + /@jridgewell/set-array@1.2.1: resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} engines: {node: '>=6.0.0'} + /@jridgewell/source-map@0.3.11: + resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==} + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + dev: true + /@jridgewell/source-map@0.3.3: resolution: {integrity: sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==} dependencies: @@ -7975,16 +8036,13 @@ packages: '@jridgewell/trace-mapping': 0.3.25 dev: false - /@jridgewell/source-map@0.3.6: - resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} - dependencies: - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 - dev: true - /@jridgewell/sourcemap-codec@1.5.0: resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + /@jridgewell/sourcemap-codec@1.5.5: + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + dev: true + /@jridgewell/trace-mapping@0.3.19: resolution: {integrity: sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==} dependencies: @@ -7998,6 +8056,13 @@ packages: '@jridgewell/resolve-uri': 3.1.0 '@jridgewell/sourcemap-codec': 1.5.0 + /@jridgewell/trace-mapping@0.3.31: + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 + dev: true + /@jridgewell/trace-mapping@0.3.9: resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} dependencies: @@ -8104,8 +8169,8 @@ packages: resolution: {integrity: sha512-SVgiGtMnMnW3ActR8SXgsDhw7a0w0ChHSYAyAUxxrOiJ1OqYWEKk/xJd84tTSPo1mo6DXLObAJALNnd0Hrv7Ng==} dev: false - /@lezer/common@1.2.3: - resolution: {integrity: sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA==} + /@lezer/common@1.3.0: + resolution: {integrity: sha512-L9X8uHCYU310o99L3/MpJKYxPzXPOS7S0NmBaM7UO/x2Kb2WbmMLSkfvdr1KxRIFYOpbY0Jhn7CfLSUDzL8arQ==} dev: false /@lezer/highlight@1.1.6: @@ -8114,10 +8179,10 @@ packages: '@lezer/common': 1.0.2 dev: false - /@lezer/highlight@1.2.1: - resolution: {integrity: sha512-Z5duk4RN/3zuVO7Jq0pGLJ3qynpxUVsh7IbUbGj88+uV2ApSAn6kWg2au3iJb+0Zi7kKtqffIESgNcRXWZWmSA==} + /@lezer/highlight@1.2.3: + resolution: {integrity: sha512-qXdH7UqTvGfdVBINrgKhDsVTJTxactNNxLk7+UMwZhU13lMHaOBlJe9Vqp907ya56Y3+ed2tlqzys7jDkTmW0g==} dependencies: - '@lezer/common': 1.2.3 + '@lezer/common': 1.3.0 dev: false /@lezer/javascript@1.4.1: @@ -8143,7 +8208,7 @@ packages: /@lezer/lr@1.4.2: resolution: {integrity: sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA==} dependencies: - '@lezer/common': 1.2.3 + '@lezer/common': 1.3.0 dev: false /@lukeed/ms@2.0.2: @@ -8230,7 +8295,7 @@ packages: cors: 2.8.5 cross-spawn: 7.0.6 eventsource: 3.0.5 - eventsource-parser: 3.0.0 + eventsource-parser: 3.0.3 express: 5.0.1(supports-color@10.0.0) express-rate-limit: 7.5.0(express@5.0.1) pkce-challenge: 5.0.0 @@ -9711,6 +9776,17 @@ packages: '@opentelemetry/resources': 1.30.0(@opentelemetry/api@1.9.0) dev: false + /@opentelemetry/sdk-metrics@1.30.1(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-q9zcZ0Okl8jRgmy7eNW3Ku1XSgg3sDLa5evHZpCwjspw7E8Is4K/haRPDJrBcX3YSn/Y7gUvFnByNYEKQNbNog==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.3.0 <1.10.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) + dev: false + /@opentelemetry/sdk-metrics@2.0.1(@opentelemetry/api@1.9.0): resolution: {integrity: sha512-wf8OaJoSnujMAHWR3g+/hGvNcsC16rf9s1So4JlMiFaFHiE4HpIA3oUh+uWZQ7CNuK8gVW/pQSkgoa5HkkOl0g==} engines: {node: ^18.19.0 || >=20.6.0} @@ -9996,6 +10072,7 @@ packages: tar-fs: 3.1.0 yargs: 17.7.2 transitivePeerDependencies: + - bare-abort-controller - bare-buffer - supports-color dev: false @@ -15582,8 +15659,8 @@ packages: dev: true optional: true - /@rollup/rollup-darwin-arm64@4.41.1: - resolution: {integrity: sha512-5afxvwszzdulsU2w8JKWwY8/sJOLPzf0e1bFuvcW5h9zsEg+RQAojdW0ux2zyYAz7R8HvvzKCjLNJhVq965U7w==} + /@rollup/rollup-darwin-arm64@4.52.5: + resolution: {integrity: sha512-takF3CR71mCAGA+v794QUZ0b6ZSrgJkArC+gUiG6LB6TQty9T0Mqh3m2ImRBOxS2IeYBo4lKWIieSvnEk2OQWA==} cpu: [arm64] os: [darwin] requiresBuild: true @@ -15683,6 +15760,15 @@ packages: cpu: [x64] os: [linux] requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-gnu@4.52.5: + resolution: {integrity: sha512-hXGLYpdhiNElzN770+H2nlx+jRog8TyynpTVzdlc6bndktjKWyZyiCsuDAlpd+j+W+WNqfcyAWz9HxxIGfZm1Q==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false optional: true /@rollup/rollup-linux-x64-musl@4.36.0: @@ -17192,22 +17278,22 @@ packages: resolution: {integrity: sha512-lWb0Wiz8KZ9ip/dY1eUqt7fhTPmL24p6Hmv5Fd9pzlzAdw/YNcWZr+tiCT4oZ4Zyxzi9+1X4zv82o7jYvcFxYA==} dev: false - /@splinetool/react-spline@2.2.6(@splinetool/runtime@1.9.98)(react-dom@18.2.0)(react@18.2.0): + /@splinetool/react-spline@2.2.6(@splinetool/runtime@1.10.90)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-y9L2VEbnC6FNZZu8XMmWM9YTTTWal6kJVfP05Amf0QqDNzCSumKsJxZyGUODvuCmiAvy0PfIfEsiVKnSxvhsDw==} peerDependencies: '@splinetool/runtime': '*' react: '>=17.0.0' react-dom: '>=17.0.0' dependencies: - '@splinetool/runtime': 1.9.98 + '@splinetool/runtime': 1.10.90 lodash.debounce: 4.0.8 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) react-merge-refs: 2.1.1 dev: false - /@splinetool/runtime@1.9.98: - resolution: {integrity: sha512-mfueR1yWJokZUUJzvXv5Qf/FVYHkRQb3yW4/fspIC/zkLlDKpVDLArm3/D/4dK0SG0vgEsFhlOZG55ZtnBB86g==} + /@splinetool/runtime@1.10.90: + resolution: {integrity: sha512-FypHPgui4JPexACuTG+uBLCpwp0FqfIsDwIHtJ7fS5jgzcBiw/k2hEAGQxCR0vUkCJ2M0Pw9Sd8ACwnAtg6SPA==} dependencies: on-change: 4.0.2 semver-compare: 1.0.0 @@ -17227,12 +17313,12 @@ packages: resolution: {integrity: sha512-5b+npntDY0TAB7wAw0daGlh3/R2sf0TDLyrB1By2jCNH+C+lmcSqMtJXOMLVtEGSkIOvqAgIWpLMSs1PXqzt3w==} dev: true - /@sveltejs/acorn-typescript@1.0.5(acorn@8.14.1): - resolution: {integrity: sha512-IwQk4yfwLdibDlrXVE04jTZYlLnwsTT2PIOQQGNLWfjavGifnk1JD1LcZjZaBTRcxZu2FfPfNLOE04DSu9lqtQ==} + /@sveltejs/acorn-typescript@1.0.6(acorn@8.15.0): + resolution: {integrity: sha512-4awhxtMh4cx9blePWl10HRHj8Iivtqj+2QdDCSMDzxG+XKa9+VCNupQuCuvzEhYPzZSrX+0gC+0lHA/0fFKKQQ==} peerDependencies: acorn: ^8.9.0 dependencies: - acorn: 8.14.1 + acorn: 8.15.0 dev: true /@swc/core-darwin-arm64@1.3.101: @@ -17718,6 +17804,7 @@ packages: dependencies: testcontainers: 10.28.0 transitivePeerDependencies: + - bare-abort-controller - bare-buffer - supports-color dev: true @@ -17727,6 +17814,7 @@ packages: dependencies: testcontainers: 10.28.0 transitivePeerDependencies: + - bare-abort-controller - bare-buffer - supports-color dev: true @@ -17966,7 +18054,7 @@ packages: resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} dependencies: '@types/eslint': 8.56.12 - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 dev: true /@types/eslint@8.4.10: @@ -17978,7 +18066,7 @@ packages: /@types/eslint@8.56.12: resolution: {integrity: sha512-03ruubjWyOHlmljCVoxSuNDdmfZDzsrrz0P2LeJsOXr+ZwFQ+0yQIwNCwt/GYhV7Z31fgtXJTAEs+FYlEL851g==} dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 '@types/json-schema': 7.0.15 dev: true @@ -17997,6 +18085,10 @@ packages: /@types/estree@1.0.7: resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} + /@types/estree@1.0.8: + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + dev: true + /@types/eventsource@1.1.15: resolution: {integrity: sha512-XQmGcbnxUNa06HR3VBVkc9+A2Vpi9ZyLJcdS5dwaQQ/4ZMWFO+5c90FnMUpbtMZwB/FChoYHwuVg8TvkECacTA==} dev: true @@ -18675,7 +18767,7 @@ packages: '@codemirror/state': '>=6.0.0' '@codemirror/view': '>=6.0.0' dependencies: - '@codemirror/autocomplete': 6.4.0(@codemirror/language@6.3.2)(@codemirror/state@6.2.0)(@codemirror/view@6.7.2)(@lezer/common@1.2.3) + '@codemirror/autocomplete': 6.4.0(@codemirror/language@6.3.2)(@codemirror/state@6.2.0)(@codemirror/view@6.7.2)(@lezer/common@1.3.0) '@codemirror/commands': 6.1.3 '@codemirror/language': 6.3.2 '@codemirror/lint': 6.4.2 @@ -18684,7 +18776,7 @@ packages: '@codemirror/view': 6.7.2 dev: false - /@uiw/react-codemirror@4.19.5(@babel/runtime@7.27.4)(@codemirror/autocomplete@6.4.0)(@codemirror/language@6.3.2)(@codemirror/lint@6.4.2)(@codemirror/search@6.2.3)(@codemirror/state@6.2.0)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.7.2)(codemirror@6.0.1)(react-dom@18.2.0)(react@18.2.0): + /@uiw/react-codemirror@4.19.5(@babel/runtime@7.28.4)(@codemirror/autocomplete@6.4.0)(@codemirror/language@6.3.2)(@codemirror/lint@6.4.2)(@codemirror/search@6.2.3)(@codemirror/state@6.2.0)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.7.2)(codemirror@6.0.2)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-ZCHh8d7beXbF8/t7F1+yHht6A9Y6CdKeOkZq4A09lxJEnyTQrj1FMf2zvfaqc7K23KNjkTCtSlbqKKbVDgrWaw==} peerDependencies: '@babel/runtime': '>=7.11.0' @@ -18695,13 +18787,13 @@ packages: react: '>=16.8.0' react-dom: '>=16.8.0' dependencies: - '@babel/runtime': 7.27.4 + '@babel/runtime': 7.28.4 '@codemirror/commands': 6.1.3 '@codemirror/state': 6.2.0 - '@codemirror/theme-one-dark': 6.1.2 + '@codemirror/theme-one-dark': 6.1.3 '@codemirror/view': 6.7.2 '@uiw/codemirror-extensions-basic-setup': 4.19.5(@codemirror/autocomplete@6.4.0)(@codemirror/commands@6.1.3)(@codemirror/language@6.3.2)(@codemirror/lint@6.4.2)(@codemirror/search@6.2.3)(@codemirror/state@6.2.0)(@codemirror/view@6.7.2) - codemirror: 6.0.1 + codemirror: 6.0.2 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) transitivePeerDependencies: @@ -18832,7 +18924,7 @@ packages: resolution: {integrity: sha512-17kVyLq3ePTKOkveHxXuIJZtGYs+cSoev7BlP+Lf4916qfDhk/HBjvlYDe8egrea7LNPHKwSZJK/bzZC+Q6AwQ==} dev: true - /@vercel/otel@1.13.0(@opentelemetry/api-logs@0.203.0)(@opentelemetry/api@1.9.0)(@opentelemetry/instrumentation@0.203.0)(@opentelemetry/resources@1.30.1)(@opentelemetry/sdk-logs@0.203.0)(@opentelemetry/sdk-metrics@1.30.0)(@opentelemetry/sdk-trace-base@1.30.1): + /@vercel/otel@1.13.0(@opentelemetry/api-logs@0.203.0)(@opentelemetry/api@1.9.0)(@opentelemetry/instrumentation@0.203.0)(@opentelemetry/resources@1.30.1)(@opentelemetry/sdk-logs@0.203.0)(@opentelemetry/sdk-metrics@1.30.1)(@opentelemetry/sdk-trace-base@1.30.1): resolution: {integrity: sha512-esRkt470Y2jRK1B1g7S1vkt4Csu44gp83Zpu8rIyPoqy2BKgk4z7ik1uSMswzi45UogLHFl6yR5TauDurBQi4Q==} engines: {node: '>=18'} peerDependencies: @@ -18849,7 +18941,7 @@ packages: '@opentelemetry/instrumentation': 0.203.0(@opentelemetry/api@1.9.0)(supports-color@10.0.0) '@opentelemetry/resources': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/sdk-logs': 0.203.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-metrics': 1.30.0(@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) dev: false @@ -18972,78 +19064,78 @@ packages: tinyrainbow: 2.0.0 dev: true - /@vue/compiler-core@3.5.16: - resolution: {integrity: sha512-AOQS2eaQOaaZQoL1u+2rCJIKDruNXVBZSiUD3chnUrsoX5ZTQMaCvXlWNIfxBJuU15r1o7+mpo5223KVtIhAgQ==} + /@vue/compiler-core@3.5.22: + resolution: {integrity: sha512-jQ0pFPmZwTEiRNSb+i9Ow/I/cHv2tXYqsnHKKyCQ08irI2kdF5qmYedmF8si8mA7zepUFmJ2hqzS8CQmNOWOkQ==} dependencies: - '@babel/parser': 7.27.5 - '@vue/shared': 3.5.16 + '@babel/parser': 7.28.5 + '@vue/shared': 3.5.22 entities: 4.5.0 estree-walker: 2.0.2 source-map-js: 1.2.1 dev: true - /@vue/compiler-dom@3.5.16: - resolution: {integrity: sha512-SSJIhBr/teipXiXjmWOVWLnxjNGo65Oj/8wTEQz0nqwQeP75jWZ0n4sF24Zxoht1cuJoWopwj0J0exYwCJ0dCQ==} + /@vue/compiler-dom@3.5.22: + resolution: {integrity: sha512-W8RknzUM1BLkypvdz10OVsGxnMAuSIZs9Wdx1vzA3mL5fNMN15rhrSCLiTm6blWeACwUwizzPVqGJgOGBEN/hA==} dependencies: - '@vue/compiler-core': 3.5.16 - '@vue/shared': 3.5.16 + '@vue/compiler-core': 3.5.22 + '@vue/shared': 3.5.22 dev: true - /@vue/compiler-sfc@3.5.16: - resolution: {integrity: sha512-rQR6VSFNpiinDy/DVUE0vHoIDUF++6p910cgcZoaAUm3POxgNOOdS/xgoll3rNdKYTYPnnbARDCZOyZ+QSe6Pw==} + /@vue/compiler-sfc@3.5.22: + resolution: {integrity: sha512-tbTR1zKGce4Lj+JLzFXDq36K4vcSZbJ1RBu8FxcDv1IGRz//Dh2EBqksyGVypz3kXpshIfWKGOCcqpSbyGWRJQ==} dependencies: - '@babel/parser': 7.27.5 - '@vue/compiler-core': 3.5.16 - '@vue/compiler-dom': 3.5.16 - '@vue/compiler-ssr': 3.5.16 - '@vue/shared': 3.5.16 + '@babel/parser': 7.28.5 + '@vue/compiler-core': 3.5.22 + '@vue/compiler-dom': 3.5.22 + '@vue/compiler-ssr': 3.5.22 + '@vue/shared': 3.5.22 estree-walker: 2.0.2 - magic-string: 0.30.17 - postcss: 8.5.4 + magic-string: 0.30.21 + postcss: 8.5.6 source-map-js: 1.2.1 dev: true - /@vue/compiler-ssr@3.5.16: - resolution: {integrity: sha512-d2V7kfxbdsjrDSGlJE7my1ZzCXViEcqN6w14DOsDrUCHEA6vbnVCpRFfrc4ryCP/lCKzX2eS1YtnLE/BuC9f/A==} + /@vue/compiler-ssr@3.5.22: + resolution: {integrity: sha512-GdgyLvg4R+7T8Nk2Mlighx7XGxq/fJf9jaVofc3IL0EPesTE86cP/8DD1lT3h1JeZr2ySBvyqKQJgbS54IX1Ww==} dependencies: - '@vue/compiler-dom': 3.5.16 - '@vue/shared': 3.5.16 + '@vue/compiler-dom': 3.5.22 + '@vue/shared': 3.5.22 dev: true - /@vue/reactivity@3.5.16: - resolution: {integrity: sha512-FG5Q5ee/kxhIm1p2bykPpPwqiUBV3kFySsHEQha5BJvjXdZTUfmya7wP7zC39dFuZAcf/PD5S4Lni55vGLMhvA==} + /@vue/reactivity@3.5.22: + resolution: {integrity: sha512-f2Wux4v/Z2pqc9+4SmgZC1p73Z53fyD90NFWXiX9AKVnVBEvLFOWCEgJD3GdGnlxPZt01PSlfmLqbLYzY/Fw4A==} dependencies: - '@vue/shared': 3.5.16 + '@vue/shared': 3.5.22 dev: true - /@vue/runtime-core@3.5.16: - resolution: {integrity: sha512-bw5Ykq6+JFHYxrQa7Tjr+VSzw7Dj4ldR/udyBZbq73fCdJmyy5MPIFR9IX/M5Qs+TtTjuyUTCnmK3lWWwpAcFQ==} + /@vue/runtime-core@3.5.22: + resolution: {integrity: sha512-EHo4W/eiYeAzRTN5PCextDUZ0dMs9I8mQ2Fy+OkzvRPUYQEyK9yAjbasrMCXbLNhF7P0OUyivLjIy0yc6VrLJQ==} dependencies: - '@vue/reactivity': 3.5.16 - '@vue/shared': 3.5.16 + '@vue/reactivity': 3.5.22 + '@vue/shared': 3.5.22 dev: true - /@vue/runtime-dom@3.5.16: - resolution: {integrity: sha512-T1qqYJsG2xMGhImRUV9y/RseB9d0eCYZQ4CWca9ztCuiPj/XWNNN+lkNBuzVbia5z4/cgxdL28NoQCvC0Xcfww==} + /@vue/runtime-dom@3.5.22: + resolution: {integrity: sha512-Av60jsryAkI023PlN7LsqrfPvwfxOd2yAwtReCjeuugTJTkgrksYJJstg1e12qle0NarkfhfFu1ox2D+cQotww==} dependencies: - '@vue/reactivity': 3.5.16 - '@vue/runtime-core': 3.5.16 - '@vue/shared': 3.5.16 + '@vue/reactivity': 3.5.22 + '@vue/runtime-core': 3.5.22 + '@vue/shared': 3.5.22 csstype: 3.1.3 dev: true - /@vue/server-renderer@3.5.16(vue@3.5.16): - resolution: {integrity: sha512-BrX0qLiv/WugguGsnQUJiYOE0Fe5mZTwi6b7X/ybGB0vfrPH9z0gD/Y6WOR1sGCgX4gc25L1RYS5eYQKDMoNIg==} + /@vue/server-renderer@3.5.22(vue@3.5.22): + resolution: {integrity: sha512-gXjo+ao0oHYTSswF+a3KRHZ1WszxIqO7u6XwNHqcqb9JfyIL/pbWrrh/xLv7jeDqla9u+LK7yfZKHih1e1RKAQ==} peerDependencies: - vue: 3.5.16 + vue: 3.5.22 dependencies: - '@vue/compiler-ssr': 3.5.16 - '@vue/shared': 3.5.16 - vue: 3.5.16(typescript@5.5.4) + '@vue/compiler-ssr': 3.5.22 + '@vue/shared': 3.5.22 + vue: 3.5.22(typescript@5.5.4) dev: true - /@vue/shared@3.5.16: - resolution: {integrity: sha512-c/0fWy3Jw6Z8L9FmTyYfkpM5zklnqqa9+a6dz3DvONRKW2NEbh46BP0FHuLFSWi2TnQEtp91Z6zOWNrU6QiyPg==} + /@vue/shared@3.5.22: + resolution: {integrity: sha512-F4yc6palwq3TT0u+FYf0Ns4Tfl9GRFURDN2gWG7L1ecIaS/4fCIuFOjMTnCyjsu/OK6vaDKLCrGAa+KvvH+h4w==} dev: true /@web3-storage/multipart-parser@1.0.0: @@ -19388,6 +19480,15 @@ packages: acorn: 8.14.1 dev: false + /acorn-import-phases@1.0.4(acorn@8.15.0): + resolution: {integrity: sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==} + engines: {node: '>=10.13.0'} + peerDependencies: + acorn: ^8.14.0 + dependencies: + acorn: 8.15.0 + dev: true + /acorn-jsx@5.3.2(acorn@8.12.1): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -19445,6 +19546,12 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + /acorn@8.15.0: + resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + /agent-base@6.0.2: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} @@ -19484,7 +19591,7 @@ packages: resolution: {integrity: sha512-hCOfMzbFx5IDutmWLAt6MZwOUjIfSM9G9FyVxytmE4Rs/5YDPWQrD/+IR1w+FweD9H2oOZEnv36TmkjhNURBVA==} dev: true - /ai@3.4.33(react@18.3.1)(svelte@5.33.14)(vue@3.5.16)(zod@3.25.76): + /ai@3.4.33(react@18.3.1)(svelte@5.43.0)(vue@3.5.22)(zod@3.25.76): resolution: {integrity: sha512-plBlrVZKwPoRTmM8+D1sJac9Bq8eaa2jiZlHLZIWekKWI1yMWYZvCCEezY9ASPwRhULYDJB2VhKOBUUeg3S5JQ==} engines: {node: '>=18'} peerDependencies: @@ -19509,16 +19616,16 @@ packages: '@ai-sdk/provider-utils': 1.0.22(zod@3.25.76) '@ai-sdk/react': 0.0.70(react@18.3.1)(zod@3.25.76) '@ai-sdk/solid': 0.0.54(zod@3.25.76) - '@ai-sdk/svelte': 0.0.57(svelte@5.33.14)(zod@3.25.76) + '@ai-sdk/svelte': 0.0.57(svelte@5.43.0)(zod@3.25.76) '@ai-sdk/ui-utils': 0.0.50(zod@3.25.76) - '@ai-sdk/vue': 0.0.59(vue@3.5.16)(zod@3.25.76) + '@ai-sdk/vue': 0.0.59(vue@3.5.22)(zod@3.25.76) '@opentelemetry/api': 1.9.0 eventsource-parser: 1.1.2 json-schema: 0.4.0 jsondiffpatch: 0.6.0 react: 18.3.1 secure-json-parse: 2.7.0 - svelte: 5.33.14 + svelte: 5.43.0 zod: 3.25.76 zod-to-json-schema: 3.24.3(zod@3.25.76) transitivePeerDependencies: @@ -19731,6 +19838,8 @@ packages: readdir-glob: 1.1.3 tar-stream: 3.1.7 zip-stream: 6.0.1 + transitivePeerDependencies: + - bare-abort-controller dev: true /arg@4.1.3: @@ -19978,7 +20087,7 @@ packages: - ws dev: true - /autoprefixer@10.4.13(postcss@8.5.4): + /autoprefixer@10.4.13(postcss@8.5.6): resolution: {integrity: sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==} engines: {node: ^10 || ^12 || >=14} hasBin: true @@ -19990,7 +20099,7 @@ packages: fraction.js: 4.2.0 normalize-range: 0.1.2 picocolors: 1.0.0 - postcss: 8.5.4 + postcss: 8.5.6 postcss-value-parser: 4.2.0 dev: true @@ -20100,8 +20209,18 @@ packages: requiresBuild: true optional: true - /bare-fs@4.1.5: - resolution: {integrity: sha512-1zccWBMypln0jEE05LzZt+V/8y8AQsQQqxtklqaIyg5nu6OAYFhZxPXinJTSG+kU5qyNmeLgcn9AW7eHiCHVLA==} + /bare-events@2.8.1: + resolution: {integrity: sha512-oxSAxTS1hRfnyit2CL5QpAOS5ixfBjj6ex3yTNvXyY/kE719jQ/IjuESJBK2w5v4wwQRAHGseVJXx9QBYOtFGQ==} + requiresBuild: true + peerDependencies: + bare-abort-controller: '*' + peerDependenciesMeta: + bare-abort-controller: + optional: true + optional: true + + /bare-fs@4.5.0: + resolution: {integrity: sha512-GljgCjeupKZJNetTqxKaQArLK10vpmK28or0+RwWjEl5Rk+/xG3wkpmkv+WrcBm3q1BwHKlnhXzR8O37kcvkXQ==} engines: {bare: '>=1.16.0'} requiresBuild: true peerDependencies: @@ -20113,6 +20232,10 @@ packages: bare-events: 2.5.4 bare-path: 3.0.0 bare-stream: 2.6.5(bare-events@2.5.4) + bare-url: 2.3.1 + fast-fifo: 1.3.2 + transitivePeerDependencies: + - bare-abort-controller optional: true /bare-os@3.6.1: @@ -20142,6 +20265,15 @@ packages: dependencies: bare-events: 2.5.4 streamx: 2.22.0 + transitivePeerDependencies: + - bare-abort-controller + optional: true + + /bare-url@2.3.1: + resolution: {integrity: sha512-v2yl0TnaZTdEnelkKtXZGnotiV6qATBlnNuUMrHl6v9Lmmrh9mw9RYyImPU7/4RahumSwQS1k2oKXcRfXcbjJw==} + requiresBuild: true + dependencies: + bare-path: 3.0.0 optional: true /base64-js@1.5.1: @@ -20151,6 +20283,11 @@ packages: resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==} engines: {node: ^4.5.0 || >= 5.9} + /baseline-browser-mapping@2.8.21: + resolution: {integrity: sha512-JU0h5APyQNsHOlAM7HnQnPToSDQoEBZqzu/YBlqDnEeymPnZDREeXJA3KBMQee+dKteAxZ2AtvQEvVYdZf241Q==} + hasBin: true + dev: true + /basic-auth@2.0.1: resolution: {integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==} engines: {node: '>= 0.8'} @@ -20309,15 +20446,16 @@ packages: node-releases: 2.0.19 update-browserslist-db: 1.1.2(browserslist@4.24.4) - /browserslist@4.25.0: - resolution: {integrity: sha512-PJ8gYKeS5e/whHBh8xrwYK+dAvEj7JXtz6uTucnMRB8OiGTsKccFekoRrjajPBHV8oOY+2tI4uxeceSimKwMFA==} + /browserslist@4.27.0: + resolution: {integrity: sha512-AXVQwdhot1eqLihwasPElhX2tAZiBjWdJ9i/Zcj2S6QYIjkx62OKSfnobkriB81C3l4w0rVy3Nt4jaTBltYEpw==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001720 - electron-to-chromium: 1.5.162 - node-releases: 2.0.19 - update-browserslist-db: 1.1.3(browserslist@4.25.0) + baseline-browser-mapping: 2.8.21 + caniuse-lite: 1.0.30001751 + electron-to-chromium: 1.5.243 + node-releases: 2.0.27 + update-browserslist-db: 1.1.4(browserslist@4.27.0) dev: true /btoa-lite@1.0.0: @@ -20563,8 +20701,8 @@ packages: /caniuse-lite@1.0.30001707: resolution: {integrity: sha512-3qtRjw/HQSMlDWf+X79N206fepf4SOOU6SQLMaq/0KkZLmSjPxAkBOQQ+FxbHKfHmYLZFfdWsO3KA90ceHPSnw==} - /caniuse-lite@1.0.30001720: - resolution: {integrity: sha512-Ec/2yV2nNPwb4DnTANEV99ZWwm3ZWfdlfkQbWSDDt+PsXEVYwlhPH8tdMaPunYTKKmz7AnHi2oNEi1GcmKCD8g==} + /caniuse-lite@1.0.30001751: + resolution: {integrity: sha512-A0QJhug0Ly64Ii3eIqHu5X51ebln3k4yTUkY1j8drqpWHVreg/VLijN48cZ1bYPiqOQuqpkIKnzr/Ul8V+p6Cw==} dev: true /case-anything@2.1.13: @@ -20869,16 +21007,16 @@ packages: engines: {node: '>=0.10.0'} dev: false - /codemirror@6.0.1: - resolution: {integrity: sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==} + /codemirror@6.0.2: + resolution: {integrity: sha512-VhydHotNW5w1UGK0Qj96BwSk/Zqbp9WbnyK2W/eVMv4QyF41INRGpjUhFJY7/uDNuudSc33a/PKr4iDqRduvHw==} dependencies: - '@codemirror/autocomplete': 6.18.6 - '@codemirror/commands': 6.8.1 - '@codemirror/language': 6.11.1 - '@codemirror/lint': 6.8.5 + '@codemirror/autocomplete': 6.19.1 + '@codemirror/commands': 6.10.0 + '@codemirror/language': 6.11.3 + '@codemirror/lint': 6.9.1 '@codemirror/search': 6.5.11 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.37.1 + '@codemirror/view': 6.38.6 dev: false /color-convert@1.9.3: @@ -21175,7 +21313,7 @@ packages: requiresBuild: true dependencies: buildcheck: 0.0.6 - nan: 2.22.2 + nan: 2.23.0 optional: true /cpy-cli@5.0.0: @@ -21299,7 +21437,7 @@ packages: hyphenate-style-name: 1.0.4 dev: false - /css-loader@6.10.0(webpack@5.99.9): + /css-loader@6.10.0(webpack@5.102.1): resolution: {integrity: sha512-LTSA/jWbwdMlk+rhmElbDR2vbtQoTBPr7fkJE+mxrHj+7ru0hUmHafDRzWIjIHTwpitWVaqY2/UWGRca3yUgRw==} engines: {node: '>= 12.13.0'} peerDependencies: @@ -21319,7 +21457,7 @@ packages: postcss-modules-values: 4.0.0(postcss@8.4.35) postcss-value-parser: 4.2.0 semver: 7.6.3 - webpack: 5.99.9(@swc/core@1.3.26)(esbuild@0.15.18) + webpack: 5.102.1(@swc/core@1.3.26)(esbuild@0.15.18) dev: true /css-tree@1.1.3: @@ -22058,8 +22196,8 @@ packages: resolution: {integrity: sha512-MGO1k0w1RgrfdbLVwmXcDhHHuxCn2qRgR7dYsJvWFKDttvYPx6FNzCGG0c/fBBvzK2LDh3UV7Tt9awnHnvAAUQ==} dev: true - /electron-to-chromium@1.5.162: - resolution: {integrity: sha512-hQA+Zb5QQwoSaXJWEAGEw1zhk//O7qDzib05Z4qTqZfNju/FAkrm5ZInp0JbTp4Z18A6bilopdZWEYrFSsfllA==} + /electron-to-chromium@1.5.243: + resolution: {integrity: sha512-ZCphxFW3Q1TVhcgS9blfut1PX8lusVi2SvXQgmEEnK4TCmE1JhH2JkjJN+DNt0pJJwfBri5AROBnz2b/C+YU9g==} dev: true /electron-to-chromium@1.5.98: @@ -22152,6 +22290,14 @@ packages: graceful-fs: 4.2.11 tapable: 2.2.2 + /enhanced-resolve@5.18.3: + resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==} + engines: {node: '>=10.13.0'} + dependencies: + graceful-fs: 4.2.11 + tapable: 2.3.0 + dev: true + /enquirer@2.3.6: resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} engines: {node: '>=8.6'} @@ -23254,10 +23400,10 @@ packages: dependencies: estraverse: 5.3.0 - /esrap@1.4.6: - resolution: {integrity: sha512-F/D2mADJ9SHY3IwksD4DAXjTt7qt7GWUf3/8RhCNWmC/67tyb55dpimHmy7EplakFaflV0R/PC+fdSPqrRHAQw==} + /esrap@2.1.1: + resolution: {integrity: sha512-ebTT9B6lOtZGMgJ3o5r12wBacHctG7oEWazIda8UlPfA3HD/Wrv8FdXoVo73vzdpwCxNyXjPauyN2bbJzMkB9A==} dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.5.5 dev: true /esrecurse@4.3.0: @@ -23399,12 +23545,17 @@ packages: /eventsource-parser@3.0.3: resolution: {integrity: sha512-nVpZkTMM9rF6AQ9gPJpFsNAMt48wIzB5TQgiTLdHiuO8XEDhUgZEhqKlZWXbIzo9VmJ/HvysHqEaVeD5v9TPvA==} engines: {node: '>=20.0.0'} + dev: false + + /eventsource-parser@3.0.6: + resolution: {integrity: sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==} + engines: {node: '>=18.0.0'} /eventsource@3.0.5: resolution: {integrity: sha512-LT/5J605bx5SNyE+ITBDiM3FxffBiq9un7Vx0EwMDM3vg8sWKx/tO2zC+LMqZ+smAM0F2hblaDZUVZF0te2pSw==} engines: {node: '>=18.0.0'} dependencies: - eventsource-parser: 3.0.0 + eventsource-parser: 3.0.3 dev: false /eventsource@4.0.0: @@ -25232,7 +25383,7 @@ packages: /is-reference@3.0.3: resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==} dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 dev: true /is-regex@1.1.4: @@ -26034,6 +26185,12 @@ packages: /loader-runner@4.3.0: resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} engines: {node: '>=6.11.5'} + dev: false + + /loader-runner@4.3.1: + resolution: {integrity: sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==} + engines: {node: '>=6.11.5'} + dev: true /loader-utils@3.2.1: resolution: {integrity: sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==} @@ -26273,6 +26430,12 @@ packages: '@jridgewell/sourcemap-codec': 1.5.0 dev: true + /magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + dev: true + /magicast@0.3.4: resolution: {integrity: sha512-TyDF/Pn36bBji9rWKHlZe+PZb6Mx5V8IHCSxk7X4aljM4e/vyDvZZYwHewdVaqiA0nb3ghfHU/6AUpDxWoER2Q==} dependencies: @@ -27445,8 +27608,8 @@ packages: object-assign: 4.1.1 thenify-all: 1.6.0 - /nan@2.22.2: - resolution: {integrity: sha512-DANghxFkS1plDdRsX0X9pm0Z6SJNN6gBdtXfanwoZ8hooC5gosGFSBGRYHUVPz1asKA/kMRqDRdHrluZ61SpBQ==} + /nan@2.23.0: + resolution: {integrity: sha512-1UxuyYGdoQHcGg87Lkqm3FzefucTa0NAiOcuRsDmysep3c1LVCRK2krrUDafMWtjSG04htvAmvg96+SDknOmgQ==} requiresBuild: true optional: true @@ -27533,7 +27696,7 @@ packages: resolution: {integrity: sha512-kOCT/1MCPAxY5iUV3wytNFUMUolzuwd/VF/1KCx7kf6CutrOsTie+84zTGTpgQycjvfLdBBdvBvFLqFD2c0wkQ==} engines: {node: '>=18'} optionalDependencies: - '@rollup/rollup-linux-x64-gnu': 4.36.0 + '@rollup/rollup-linux-x64-gnu': 4.52.5 dev: false /next@14.1.0(react-dom@18.2.0)(react@18.3.1): @@ -27738,6 +27901,10 @@ packages: /node-releases@2.0.19: resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + /node-releases@2.0.27: + resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} + dev: true + /nodemailer@6.9.16: resolution: {integrity: sha512-psAuZdTIRN08HKVd/E8ObdV6NO7NTBY3KsC30F7M4H1OnmLCUNaS56FpYxyb26zWLSyYF9Ozch9KYHhHegsiOQ==} engines: {node: '>=6.0.0'} @@ -28630,8 +28797,8 @@ packages: is-reference: 3.0.1 dev: true - /pg-cloudflare@1.2.5: - resolution: {integrity: sha512-OOX22Vt0vOSRrdoUPKJ8Wi2OpE/o/h9T8X1s4qSkCedbNah9ei2W2765be8iMVxQUsvgT7zIAT2eIa9fs5+vtg==} + /pg-cloudflare@1.2.7: + resolution: {integrity: sha512-YgCtzMH0ptvZJslLM1ffsY4EuGaU0cx4XSdXLRFae8bPP4dS5xL1tNB3k2o/N64cHJpwU7dxKli/nZ2lUa5fLg==} requiresBuild: true dev: false optional: true @@ -28711,7 +28878,7 @@ packages: pg-types: 2.2.0 pgpass: 1.0.5 optionalDependencies: - pg-cloudflare: 1.2.5 + pg-cloudflare: 1.2.7 dev: false /pg@8.15.6: @@ -28729,7 +28896,7 @@ packages: pg-types: 2.2.0 pgpass: 1.0.5 optionalDependencies: - pg-cloudflare: 1.2.5 + pg-cloudflare: 1.2.7 dev: false /pgpass@1.0.5: @@ -28902,13 +29069,13 @@ packages: read-cache: 1.0.0 resolve: 1.22.8 - /postcss-import@16.0.1(postcss@8.5.4): + /postcss-import@16.0.1(postcss@8.5.6): resolution: {integrity: sha512-i2Pci0310NaLHr/5JUFSw1j/8hf1CzwMY13g6ZDxgOavmRHQi2ba3PmUHoihO+sjaum+KmCNzskNsw7JDrg03g==} engines: {node: '>=18.0.0'} peerDependencies: postcss: ^8.0.0 dependencies: - postcss: 8.5.4 + postcss: 8.5.6 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.4 @@ -28965,7 +29132,7 @@ packages: ts-node: 10.9.1(@swc/core@1.3.26)(@types/node@20.14.14)(typescript@5.5.4) yaml: 2.7.1 - /postcss-load-config@6.0.1(postcss@8.5.4)(tsx@4.17.0): + /postcss-load-config@6.0.1(postcss@8.5.6)(tsx@4.17.0): resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==} engines: {node: '>= 18'} peerDependencies: @@ -28984,11 +29151,11 @@ packages: optional: true dependencies: lilconfig: 3.1.3 - postcss: 8.5.4 + postcss: 8.5.6 tsx: 4.17.0 dev: true - /postcss-loader@8.1.1(postcss@8.5.4)(typescript@5.5.4)(webpack@5.99.9): + /postcss-loader@8.1.1(postcss@8.5.6)(typescript@5.5.4)(webpack@5.102.1): resolution: {integrity: sha512-0IeqyAsG6tYiDRCYKQJLAmgQr47DX6N7sFSWvQxt6AcupX8DIdmykuk/o/tx0Lze3ErGHJEp5OSRxrelC6+NdQ==} engines: {node: '>= 18.12.0'} peerDependencies: @@ -29003,9 +29170,9 @@ packages: dependencies: cosmiconfig: 9.0.0(typescript@5.5.4) jiti: 1.21.0 - postcss: 8.5.4 + postcss: 8.5.6 semver: 7.6.3 - webpack: 5.99.9(@swc/core@1.3.26)(esbuild@0.15.18) + webpack: 5.102.1(@swc/core@1.3.26)(esbuild@0.15.18) transitivePeerDependencies: - typescript dev: true @@ -29224,6 +29391,15 @@ packages: source-map-js: 1.2.1 dev: true + /postcss@8.5.6: + resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + dev: true + /postgres-array@2.0.0: resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} engines: {node: '>=4'} @@ -29636,6 +29812,7 @@ packages: typed-query-selector: 2.12.0 ws: 8.18.3 transitivePeerDependencies: + - bare-abort-controller - bare-buffer - bufferutil - supports-color @@ -31062,8 +31239,8 @@ packages: ajv-keywords: 3.5.2(ajv@6.12.6) dev: false - /schema-utils@4.3.2: - resolution: {integrity: sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==} + /schema-utils@4.3.3: + resolution: {integrity: sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==} engines: {node: '>= 10.13.0'} dependencies: '@types/json-schema': 7.0.15 @@ -31707,7 +31884,7 @@ packages: bcrypt-pbkdf: 1.0.2 optionalDependencies: cpu-features: 0.0.10 - nan: 2.22.2 + nan: 2.23.0 /sshpk@1.18.0: resolution: {integrity: sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==} @@ -31732,12 +31909,12 @@ packages: minipass: 7.1.2 dev: true - /sswr@2.1.0(svelte@5.33.14): + /sswr@2.1.0(svelte@5.43.0): resolution: {integrity: sha512-Cqc355SYlTAaUt8iDPaC/4DPPXK925PePLMxyBKuWd5kKc5mwsG3nT9+Mq2tyguL5s7b4Jg+IRMpTRsNTAfpSQ==} peerDependencies: svelte: ^4.0.0 || ^5.0.0-next.0 dependencies: - svelte: 5.33.14 + svelte: 5.43.0 swrev: 4.0.0 dev: true @@ -31831,7 +32008,9 @@ packages: fast-fifo: 1.3.2 text-decoder: 1.2.0 optionalDependencies: - bare-events: 2.5.4 + bare-events: 2.8.1 + transitivePeerDependencies: + - bare-abort-controller /string-hash@1.1.3: resolution: {integrity: sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==} @@ -31986,21 +32165,21 @@ packages: peek-readable: 5.4.2 dev: true - /style-loader@3.3.4(webpack@5.99.9): + /style-loader@3.3.4(webpack@5.102.1): resolution: {integrity: sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w==} engines: {node: '>= 12.13.0'} peerDependencies: webpack: ^5.0.0 dependencies: - webpack: 5.99.9(@swc/core@1.3.26)(esbuild@0.15.18) + webpack: 5.102.1(@swc/core@1.3.26)(esbuild@0.15.18) dev: true /style-mod@4.0.0: resolution: {integrity: sha512-OPhtyEjyyN9x3nhPsu76f52yUGXiZcgvsrFVtvTkyGRQJ0XK+GPc6ov1z+lRpbeabka+MYEQxOYRnt5nF30aMw==} dev: false - /style-mod@4.1.2: - resolution: {integrity: sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==} + /style-mod@4.1.3: + resolution: {integrity: sha512-i/n8VsZydrugj3Iuzll8+x/00GH2vnYsk1eomD8QiRrSAeW6ItbCQDtfXCeJHd0iwiNagqjQkvpvREEPtW3IoQ==} dev: false /style-to-js@1.1.16: @@ -32152,24 +32331,24 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - /svelte@5.33.14: - resolution: {integrity: sha512-kRlbhIlMTijbFmVDQFDeKXPLlX1/ovXwV0I162wRqQhRcygaqDIcu1d/Ese3H2uI+yt3uT8E7ndgDthQv5v5BA==} + /svelte@5.43.0: + resolution: {integrity: sha512-1sRxVbgJAB+UGzwkc3GUoiBSzEOf0jqzccMaVoI2+pI+kASUe9qubslxace8+Mzhqw19k4syTA5niCIJwfXpOA==} engines: {node: '>=18'} dependencies: - '@ampproject/remapping': 2.3.0 - '@jridgewell/sourcemap-codec': 1.5.0 - '@sveltejs/acorn-typescript': 1.0.5(acorn@8.14.1) - '@types/estree': 1.0.7 - acorn: 8.14.1 + '@jridgewell/remapping': 2.3.5 + '@jridgewell/sourcemap-codec': 1.5.5 + '@sveltejs/acorn-typescript': 1.0.6(acorn@8.15.0) + '@types/estree': 1.0.8 + acorn: 8.15.0 aria-query: 5.3.2 axobject-query: 4.1.0 clsx: 2.1.1 esm-env: 1.2.2 - esrap: 1.4.6 + esrap: 2.1.1 is-reference: 3.0.3 locate-character: 3.0.0 - magic-string: 0.30.17 - zimmerframe: 1.1.2 + magic-string: 0.30.21 + zimmerframe: 1.1.4 dev: true /swr@2.2.5(react@18.2.0): @@ -32205,12 +32384,12 @@ packages: resolution: {integrity: sha512-LqVcOHSB4cPGgitD1riJ1Hh4vdmITOp+BkmfmXRh4hSF/t7EnS4iD+SOTmq7w5pPm/SiPeto4ADbKS6dHUDWFA==} dev: true - /swrv@1.0.4(vue@3.5.16): + /swrv@1.0.4(vue@3.5.22): resolution: {integrity: sha512-zjEkcP8Ywmj+xOJW3lIT65ciY/4AL4e/Or7Gj0MzU3zBJNMdJiT8geVZhINavnlHRMMCcJLHhraLTAiDOTmQ9g==} peerDependencies: vue: '>=3.2.26 < 4' dependencies: - vue: 3.5.16(typescript@5.5.4) + vue: 3.5.22(typescript@5.5.4) dev: true /sync-content@2.0.1: @@ -32410,6 +32589,11 @@ packages: resolution: {integrity: sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==} engines: {node: '>=6'} + /tapable@2.3.0: + resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} + engines: {node: '>=6'} + dev: true + /tar-fs@2.1.3: resolution: {integrity: sha512-090nwYJDmlhwFwEW3QQl+vaNnxsO2yVsd45eTKRBzSzu+hlb1w2K9inVq5b0ngXuLVqQ4ApvsUHHnu/zQNkWAg==} dependencies: @@ -32424,9 +32608,10 @@ packages: pump: 3.0.2 tar-stream: 3.1.7 optionalDependencies: - bare-fs: 4.1.5 + bare-fs: 4.5.0 bare-path: 3.0.0 transitivePeerDependencies: + - bare-abort-controller - bare-buffer dev: true @@ -32436,9 +32621,10 @@ packages: pump: 3.0.2 tar-stream: 3.1.7 optionalDependencies: - bare-fs: 4.1.5 + bare-fs: 4.5.0 bare-path: 3.0.0 transitivePeerDependencies: + - bare-abort-controller - bare-buffer dev: false @@ -32458,6 +32644,8 @@ packages: b4a: 1.6.6 fast-fifo: 1.3.2 streamx: 2.22.0 + transitivePeerDependencies: + - bare-abort-controller /tar@6.1.13: resolution: {integrity: sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==} @@ -32505,7 +32693,7 @@ packages: engines: {node: '>=8'} dev: false - /terser-webpack-plugin@5.3.14(@swc/core@1.3.26)(esbuild@0.15.18)(webpack@5.99.9): + /terser-webpack-plugin@5.3.14(@swc/core@1.3.26)(esbuild@0.15.18)(webpack@5.102.1): resolution: {integrity: sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -32521,14 +32709,14 @@ packages: uglify-js: optional: true dependencies: - '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/trace-mapping': 0.3.31 '@swc/core': 1.3.26 esbuild: 0.15.18 jest-worker: 27.5.1 - schema-utils: 4.3.2 + schema-utils: 4.3.3 serialize-javascript: 6.0.2 - terser: 5.40.0 - webpack: 5.99.9(@swc/core@1.3.26)(esbuild@0.15.18) + terser: 5.44.0 + webpack: 5.102.1(@swc/core@1.3.26)(esbuild@0.15.18) dev: true /terser-webpack-plugin@5.3.7(@swc/core@1.3.101)(esbuild@0.19.11)(webpack@5.88.2): @@ -32568,13 +32756,13 @@ packages: source-map-support: 0.5.21 dev: false - /terser@5.40.0: - resolution: {integrity: sha512-cfeKl/jjwSR5ar7d0FGmave9hFGJT8obyo0z+CrQOylLDbk7X81nPU6vq9VORa5jU30SkDnT2FXjLbR8HLP+xA==} + /terser@5.44.0: + resolution: {integrity: sha512-nIVck8DK+GM/0Frwd+nIhZ84pR/BX7rmXMfYwyg+Sri5oGVE99/E3KvXqpC2xHFxyqXyGHTKBSioxxplrO4I4w==} engines: {node: '>=10'} hasBin: true dependencies: - '@jridgewell/source-map': 0.3.6 - acorn: 8.14.1 + '@jridgewell/source-map': 0.3.11 + acorn: 8.15.0 commander: 2.20.3 source-map-support: 0.5.21 dev: true @@ -32607,6 +32795,7 @@ packages: tmp: 0.2.3 undici: 5.29.0 transitivePeerDependencies: + - bare-abort-controller - bare-buffer - supports-color dev: true @@ -33030,7 +33219,7 @@ packages: /tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - /tsup@8.4.0(postcss@8.5.4)(tsx@4.17.0)(typescript@5.5.4): + /tsup@8.4.0(postcss@8.5.6)(tsx@4.17.0)(typescript@5.5.4): resolution: {integrity: sha512-b+eZbPCjz10fRryaAA7C8xlIHnf8VnsaRqydheLIqwG/Mcpfk8Z5zp3HayX7GaTygkigHl5cBUs+IhcySiIexQ==} engines: {node: '>=18'} hasBin: true @@ -33057,8 +33246,8 @@ packages: esbuild: 0.25.1 joycon: 3.1.1 picocolors: 1.1.1 - postcss: 8.5.4 - postcss-load-config: 6.0.1(postcss@8.5.4)(tsx@4.17.0) + postcss: 8.5.6 + postcss-load-config: 6.0.1(postcss@8.5.6)(tsx@4.17.0) resolve-from: 5.0.0 rollup: 4.36.0 source-map: 0.8.0-beta.0 @@ -33591,13 +33780,13 @@ packages: escalade: 3.2.0 picocolors: 1.1.1 - /update-browserslist-db@1.1.3(browserslist@4.25.0): - resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} + /update-browserslist-db@1.1.4(browserslist@4.27.0): + resolution: {integrity: sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' dependencies: - browserslist: 4.25.0 + browserslist: 4.27.0 escalade: 3.2.0 picocolors: 1.1.1 dev: true @@ -34131,19 +34320,19 @@ packages: - terser dev: true - /vue@3.5.16(typescript@5.5.4): - resolution: {integrity: sha512-rjOV2ecxMd5SiAmof2xzh2WxntRcigkX/He4YFJ6WdRvVUrbt6DxC1Iujh10XLl8xCDRDtGKMeO3D+pRQ1PP9w==} + /vue@3.5.22(typescript@5.5.4): + resolution: {integrity: sha512-toaZjQ3a/G/mYaLSbV+QsQhIdMo9x5rrqIpYRObsJ6T/J+RyCSFwN2LHNVH9v8uIcljDNa3QzPVdv3Y6b9hAJQ==} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@vue/compiler-dom': 3.5.16 - '@vue/compiler-sfc': 3.5.16 - '@vue/runtime-dom': 3.5.16 - '@vue/server-renderer': 3.5.16(vue@3.5.16) - '@vue/shared': 3.5.16 + '@vue/compiler-dom': 3.5.22 + '@vue/compiler-sfc': 3.5.22 + '@vue/runtime-dom': 3.5.22 + '@vue/server-renderer': 3.5.22(vue@3.5.22) + '@vue/shared': 3.5.22 typescript: 5.5.4 dev: true @@ -34237,13 +34426,13 @@ packages: engines: {node: '>=10.13.0'} dev: false - /webpack-sources@3.3.2: - resolution: {integrity: sha512-ykKKus8lqlgXX/1WjudpIEjqsafjOTcOJqxnAbMLAu/KCsDCJ6GBtvscewvTkrn24HsnvFwrSCbenFrhtcCsAA==} + /webpack-sources@3.3.3: + resolution: {integrity: sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==} engines: {node: '>=10.13.0'} dev: true - /webpack@5.88.2(@swc/core@1.3.101)(esbuild@0.19.11): - resolution: {integrity: sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==} + /webpack@5.102.1(@swc/core@1.3.26)(esbuild@0.15.18): + resolution: {integrity: sha512-7h/weGm9d/ywQ6qzJ+Xy+r9n/3qgp/thalBbpOi5i223dPXKi04IBtqPN9nTd+jBc7QKfvDbaBnFipYp4sJAUQ==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -34252,38 +34441,39 @@ packages: webpack-cli: optional: true dependencies: - '@types/eslint-scope': 3.7.4 - '@types/estree': 1.0.7 - '@webassemblyjs/ast': 1.11.5 - '@webassemblyjs/wasm-edit': 1.11.5 - '@webassemblyjs/wasm-parser': 1.11.5 - acorn: 8.14.1 - acorn-import-assertions: 1.9.0(acorn@8.14.1) - browserslist: 4.24.4 - chrome-trace-event: 1.0.3 - enhanced-resolve: 5.18.1 + '@types/eslint-scope': 3.7.7 + '@types/estree': 1.0.8 + '@types/json-schema': 7.0.15 + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/wasm-edit': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + acorn: 8.15.0 + acorn-import-phases: 1.0.4(acorn@8.15.0) + browserslist: 4.27.0 + chrome-trace-event: 1.0.4 + enhanced-resolve: 5.18.3 es-module-lexer: 1.7.0 eslint-scope: 5.1.1 events: 3.3.0 glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.0 + loader-runner: 4.3.1 mime-types: 2.1.35 neo-async: 2.6.2 - schema-utils: 3.3.0 - tapable: 2.2.1 - terser-webpack-plugin: 5.3.7(@swc/core@1.3.101)(esbuild@0.19.11)(webpack@5.88.2) - watchpack: 2.4.0 - webpack-sources: 3.2.3 + schema-utils: 4.3.3 + tapable: 2.3.0 + terser-webpack-plugin: 5.3.14(@swc/core@1.3.26)(esbuild@0.15.18)(webpack@5.102.1) + watchpack: 2.4.4 + webpack-sources: 3.3.3 transitivePeerDependencies: - '@swc/core' - esbuild - uglify-js - dev: false + dev: true - /webpack@5.99.9(@swc/core@1.3.26)(esbuild@0.15.18): - resolution: {integrity: sha512-brOPwM3JnmOa+7kd3NsmOUOwbDAj8FT9xDsG3IW0MgbN9yZV7Oi/s/+MNQ/EcSMqw7qfoRyXPoeEWT8zLVdVGg==} + /webpack@5.88.2(@swc/core@1.3.101)(esbuild@0.19.11): + resolution: {integrity: sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -34292,15 +34482,15 @@ packages: webpack-cli: optional: true dependencies: - '@types/eslint-scope': 3.7.7 + '@types/eslint-scope': 3.7.4 '@types/estree': 1.0.7 - '@types/json-schema': 7.0.15 - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/wasm-edit': 1.14.1 - '@webassemblyjs/wasm-parser': 1.14.1 + '@webassemblyjs/ast': 1.11.5 + '@webassemblyjs/wasm-edit': 1.11.5 + '@webassemblyjs/wasm-parser': 1.11.5 acorn: 8.14.1 - browserslist: 4.25.0 - chrome-trace-event: 1.0.4 + acorn-import-assertions: 1.9.0(acorn@8.14.1) + browserslist: 4.24.4 + chrome-trace-event: 1.0.3 enhanced-resolve: 5.18.1 es-module-lexer: 1.7.0 eslint-scope: 5.1.1 @@ -34311,16 +34501,16 @@ packages: loader-runner: 4.3.0 mime-types: 2.1.35 neo-async: 2.6.2 - schema-utils: 4.3.2 - tapable: 2.2.2 - terser-webpack-plugin: 5.3.14(@swc/core@1.3.26)(esbuild@0.15.18)(webpack@5.99.9) - watchpack: 2.4.4 - webpack-sources: 3.3.2 + schema-utils: 3.3.0 + tapable: 2.2.1 + terser-webpack-plugin: 5.3.7(@swc/core@1.3.101)(esbuild@0.19.11)(webpack@5.88.2) + watchpack: 2.4.0 + webpack-sources: 3.2.3 transitivePeerDependencies: - '@swc/core' - esbuild - uglify-js - dev: true + dev: false /whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} @@ -34678,8 +34868,8 @@ packages: type-fest: 2.19.0 dev: true - /zimmerframe@1.1.2: - resolution: {integrity: sha512-rAbqEGa8ovJy4pyBxZM70hg4pE6gDgaQ0Sl9M3enG3I0d6H4XSAM3GeNGLKnsBpuijUow064sf7ww1nutC5/3w==} + /zimmerframe@1.1.4: + resolution: {integrity: sha512-B58NGBEoc8Y9MWWCQGl/gq9xBCe4IiKM0a2x7GZdQKOW5Exr8S1W24J6OgM1njK8xCRGvAJIL/MxXHf6SkmQKQ==} dev: true /zip-stream@6.0.1: