diff --git a/apps/studio/components/ui/AIAssistantPanel/AIAssistant.tsx b/apps/studio/components/ui/AIAssistantPanel/AIAssistant.tsx index d0122068614..79ecce23a77 100644 --- a/apps/studio/components/ui/AIAssistantPanel/AIAssistant.tsx +++ b/apps/studio/components/ui/AIAssistantPanel/AIAssistant.tsx @@ -69,8 +69,7 @@ const MemoizedMessage = memo( { const { mutate: sendEvent } = useSendEventMutation() const handleError = useCallback((error: Error) => { - console.log('error', error) const errorMessage = JSON.parse(error.message).message toast.error(errorMessage) }, []) diff --git a/apps/studio/components/ui/AIAssistantPanel/DisplayBlockRenderer.tsx b/apps/studio/components/ui/AIAssistantPanel/DisplayBlockRenderer.tsx new file mode 100644 index 00000000000..30a6a270500 --- /dev/null +++ b/apps/studio/components/ui/AIAssistantPanel/DisplayBlockRenderer.tsx @@ -0,0 +1,129 @@ +import React, { useState, useMemo, DragEvent } from 'react' +import { useRouter } from 'next/router' +import { MessagePart } from '@ai-sdk/react' // Assuming this type is needed + +import { QueryBlock, DEFAULT_CHART_CONFIG } from '../QueryBlock/QueryBlock' +import { ChartConfig } from 'components/interfaces/SQLEditor/UtilityPanel/ChartConfig' +import { useAiAssistantStateSnapshot } from 'state/ai-assistant-state' +import { findResultForManualId } from './Message.utils' // We'll move the helper here or import +import { useCheckPermissions } from 'hooks/misc/useCheckPermissions' +import { useFlag } from 'hooks/ui/useFlag' +import { useProfile } from 'lib/profile' +import { useSendEventMutation } from 'data/telemetry/send-event-mutation' +import { PermissionAction } from '@supabase/shared-types/out/constants' +import { identifyQueryType } from './AIAssistant.utils' + +// Define the internal config type again, or import if defined globally +type InternalChartConfig = ChartConfig & { view?: 'table' | 'chart'; type?: string } + +interface DisplayBlockRendererProps { + messageId: string + manualId: string + initialArgs: { + // Args specific to this displayBlock invocation + sql: string + label?: string + view?: 'table' | 'chart' + xAxis?: string + yAxis?: string + } + messageParts: Readonly | undefined + isLoading: boolean + onResults: (args: { messageId: string; resultId?: string; results: any[] }) => void +} + +export const DisplayBlockRenderer: React.FC = ({ + messageId, + manualId, + initialArgs, + messageParts, + isLoading, + onResults, +}) => { + // --- Hooks --- + const snap = useAiAssistantStateSnapshot() + const router = useRouter() + const { profile } = useProfile() + const { mutate: sendEvent } = useSendEventMutation() + const supportSQLBlocks = useFlag('reportsV2') + const canCreateSQLSnippet = useCheckPermissions(PermissionAction.CREATE, 'user_content', { + resource: { type: 'sql', owner_id: profile?.id }, + subject: { id: profile?.id }, + }) + + // --- State for this block's config --- + const [chartConfig, setChartConfig] = useState(() => ({ + ...DEFAULT_CHART_CONFIG, // Includes type: 'bar' now + view: initialArgs.view === 'chart' ? 'chart' : 'table', + xKey: initialArgs.xAxis ?? '', + yKey: initialArgs.yAxis ?? '', + })) + + // --- Derived State & Data --- + const isChart = initialArgs.view === 'chart' + // Use useMemo for potentially expensive lookups if messageParts is large/changes often + const liveResultData = useMemo( + () => findResultForManualId(messageParts, manualId), + [messageParts, manualId] + ) + const cachedResults = useMemo( + () => snap.getCachedSQLResults({ messageId, snippetId: manualId }), + [snap, messageId, manualId] + ) + const displayData = liveResultData ?? cachedResults + const isDraggableToReports = + supportSQLBlocks && canCreateSQLSnippet && router.pathname.endsWith('/reports/[id]') + const label = initialArgs.label || 'SQL Results' + const sqlQuery = initialArgs.sql + + // --- Handlers --- + const handleRunQuery = (queryType: 'select' | 'mutation') => { + sendEvent({ + action: 'assistant_suggestion_run_query_clicked', + properties: { + queryType, + ...(queryType === 'mutation' ? { category: identifyQueryType(sqlQuery) ?? 'unknown' } : {}), + }, + }) + } + + const handleUpdateChartConfig = ({ + chartConfig: updatedValues, + }: { + chartConfig: Partial + }) => { + // Use functional update to avoid stale state issues if updates happen rapidly + setChartConfig((prev) => ({ ...prev, ...updatedValues })) + } + + const handleDragStart = (e: DragEvent) => { + e.dataTransfer.setData( + 'application/json', + JSON.stringify({ label, sql: sqlQuery, config: chartConfig }) // Use state config + ) + } + + return ( + // Apply negative margin if needed, or handle layout in Message.tsx +
+ onResults({ messageId, resultId: manualId, results })} + onRunQuery={handleRunQuery} + onUpdateChartConfig={handleUpdateChartConfig} + onDragStart={handleDragStart} + /> +
+ ) +} diff --git a/apps/studio/components/ui/AIAssistantPanel/Message.tsx b/apps/studio/components/ui/AIAssistantPanel/Message.tsx index 8398c86c170..f9e2236882d 100644 --- a/apps/studio/components/ui/AIAssistantPanel/Message.tsx +++ b/apps/studio/components/ui/AIAssistantPanel/Message.tsx @@ -1,3 +1,4 @@ +import { Message as VercelMessage, MessagePart } from '@ai-sdk/react' import { User } from 'lucide-react' import { createContext, PropsWithChildren, useMemo } from 'react' import ReactMarkdown from 'react-markdown' @@ -6,6 +7,9 @@ import remarkGfm from 'remark-gfm' import { AiIconAnimation, cn, markdownComponents, WarningIcon } from 'ui' import { Heading3, InlineCode, Link, ListItem, MarkdownPre, OrderedList } from './MessageMarkdown' +import { QueryBlock } from '../QueryBlock/QueryBlock' +import { EdgeFunctionBlock } from '../EdgeFunctionBlock/EdgeFunctionBlock' +import { DisplayBlockRenderer } from './DisplayBlockRenderer' interface MessageContextType { isLoading: boolean @@ -21,10 +25,9 @@ const baseMarkdownComponents: Partial = { a: Link, } -interface MessageProps { +interface MessageProps extends Omit { id: string - role: 'function' | 'system' | 'user' | 'assistant' | 'data' | 'tool' - content?: string + message: VercelMessage isLoading: boolean readOnly?: boolean action?: React.ReactNode @@ -42,15 +45,13 @@ interface MessageProps { export const Message = function Message({ id, - role, - content, + message, isLoading, readOnly, action = null, variant = 'default', onResults, }: PropsWithChildren) { - const isUser = role === 'user' const allMarkdownComponents: Partial = useMemo( () => ({ ...markdownComponents, @@ -61,10 +62,20 @@ export const Message = function Message({ ), }), - [] + [id, onResults] ) - if (!content) return null + if (!message) { + console.error(`Message component received undefined message prop for id: ${id}`) + return null + } + + const { role, content, parts } = message + const isUser = role === 'user' + + const shouldUsePartsRendering = parts && parts.length > 0 + + const hasTextContent = content && content.trim().length > 0 return ( @@ -87,13 +98,99 @@ export const Message = function Message({ ) : ( )} - - {content} - + +
+ {shouldUsePartsRendering ? ( + parts.map((part: MessagePart, index: number) => { + switch (part.type) { + case 'text': + return ( + + {part.text} + + ) + + case 'tool-invocation': { + const { toolCallId, toolName, args } = part.toolInvocation + switch (toolName) { + case 'displayBlock': { + return ( + + ) + } + case 'renderWriteQuery': + return ( +
+ +
+ ) + case 'renderEdgeFunction': { + return ( +
+ +
+ ) + } + default: + return null + } + } + case 'tool-result': + case 'reasoning': + case 'source': + case 'file': + return null + default: + return null + } + }) + ) : hasTextContent ? ( + + {content} + + ) : ( + Assistant is thinking... + )} +
diff --git a/apps/studio/components/ui/AIAssistantPanel/Message.utils.ts b/apps/studio/components/ui/AIAssistantPanel/Message.utils.ts new file mode 100644 index 00000000000..73451d36b9e --- /dev/null +++ b/apps/studio/components/ui/AIAssistantPanel/Message.utils.ts @@ -0,0 +1,30 @@ +import { MessagePart } from '@ai-sdk/react' // Keep type if needed + +// Helper function to find result data directly from parts array +export const findResultForManualId = ( + parts: Readonly | undefined, + manualId: string +): any[] | undefined => { + if (!parts) return undefined + + const invocationPart = parts.find( + (part: MessagePart) => + part.type === 'tool-invocation' && + part.toolInvocation.state === 'result' && + part.toolInvocation.result?.manualToolCallId === manualId + ) + + if ( + invocationPart?.type === 'tool-invocation' && + invocationPart.toolInvocation.result?.content?.[0]?.text + ) { + try { + const parsedData = JSON.parse(invocationPart.toolInvocation.result.content[0].text) + return Array.isArray(parsedData) ? parsedData : undefined + } catch (error) { + console.error('Failed to parse tool invocation result data for manualId:', manualId, error) + return undefined + } + } + return undefined +} diff --git a/apps/studio/package.json b/apps/studio/package.json index 46e77771e52..30612bc6f09 100644 --- a/apps/studio/package.json +++ b/apps/studio/package.json @@ -22,7 +22,7 @@ "build:deno-types": "tsx scripts/deno-types.ts" }, "dependencies": { - "@ai-sdk/openai": "latest", + "@ai-sdk/openai": "^1.3.18", "@dagrejs/dagre": "^1.0.4", "@deno/eszip": "0.83.0", "@dnd-kit/core": "^6.1.0", @@ -44,6 +44,8 @@ "@stripe/react-stripe-js": "^3.1.1", "@stripe/stripe-js": "^5.5.0", "@supabase/auth-js": "catalog:", + "@supabase/mcp-server-supabase": "^0.3.6", + "@supabase/mcp-utils": "^0.1.3", "@supabase/pg-meta": "workspace:*", "@supabase/realtime-js": "catalog:", "@supabase/shared-types": "0.1.80", @@ -55,7 +57,7 @@ "@vercel/flags": "^2.6.0", "@vitejs/plugin-react": "^4.3.4", "@zip.js/zip.js": "^2.7.29", - "ai": "latest", + "ai": "^4.3.9", "ai-commands": "workspace:*", "awesome-debounce-promise": "^2.1.0", "common": "workspace:*", @@ -75,9 +77,11 @@ "immutability-helper": "^3.1.1", "ip-num": "^1.5.1", "json-logic-js": "^2.0.2", + "latest": "^0.2.0", "lodash": "^4.17.21", "lucide-react": "^0.436.0", "markdown-table": "^3.0.3", + "markdown-to-jsx": "^7.7.6", "memoize-one": "^5.0.1", "mime-db": "^1.53.0", "mobx": "^6.10.2", diff --git a/apps/studio/pages/api/ai/sql/generate-v3.ts b/apps/studio/pages/api/ai/sql/generate-v3.ts index 49dffef7edf..33f0e81334d 100644 --- a/apps/studio/pages/api/ai/sql/generate-v3.ts +++ b/apps/studio/pages/api/ai/sql/generate-v3.ts @@ -1,12 +1,12 @@ import { openai } from '@ai-sdk/openai' import pgMeta from '@supabase/pg-meta' -import { generateText, streamText } from 'ai' +import { generateText, streamText, tool, type Tool, type ToolExecutionOptions } from 'ai' import { NextApiRequest, NextApiResponse } from 'next' -import { experimental_createMCPClient as createMCPClient } from 'ai' -import { Experimental_StdioMCPTransport as StdioMCPTransport } from 'ai/mcp-stdio' +import { z } from 'zod' +import { createSupabaseMCPClient } from './supabase-mcp' +import crypto from 'crypto' import { executeSql } from 'data/sql/execute-sql-query' -import { getTools } from './tools' export const maxDuration = 30 const openAiKey = process.env.OPENAI_API_KEY @@ -49,27 +49,108 @@ async function handlePost(req: NextApiRequest, res: NextApiResponse) { let mcpClient try { - // Initialize MCP Client - mcpClient = await createMCPClient({ - transport: new StdioMCPTransport({ - command: 'npx', - // Ensure the MCP server package version is appropriate or use latest - args: [ - '-y', - '@supabase/mcp-server-supabase@latest', // Or specify a fixed version - '--access-token', - accessToken, - '--read-only', // Enforce read-only mode for database tools - // Potentially add --project-ref if needed by server, depends on MCP server implementation - ], - // Optional: Add environment variables if needed - // env: { ...process.env, OTHER_VAR: 'value' }, - }), - }) - + mcpClient = await createSupabaseMCPClient(accessToken) const mcpTools = await mcpClient.tools() - console.log('mcpTools', mcpTools, accessToken) + // --- Wrap execute_sql to add manual ID to top-level result --- START + const originalExecuteSqlTool = mcpTools.execute_sql as Tool | undefined + let wrappedExecuteSqlTool: Tool | undefined = undefined + + if (originalExecuteSqlTool) { + wrappedExecuteSqlTool = tool({ + description: originalExecuteSqlTool.description, + parameters: originalExecuteSqlTool.parameters, + execute: async (args, context) => { + if (!originalExecuteSqlTool.execute) { + throw new Error('Original execute_sql tool has no execute function.') + } + const originalResult = await originalExecuteSqlTool.execute(args, context) + const manualToolCallId = `manual_${crypto.randomUUID()}` + + if (originalResult && typeof originalResult === 'object') { + ;(originalResult as any).manualToolCallId = manualToolCallId + } else { + console.warn('execute_sql result is not an object, cannot add manualToolCallId') + return { + error: 'Internal error: Unexpected tool result format', + manualToolCallId: manualToolCallId, + } + } + + console.log(`execute_sql wrapper: Added manualToolCallId ${manualToolCallId} to result.`) + return originalResult + }, + }) + } else { + console.warn('execute_sql tool not found in mcpTools.') + } + // --- Wrap execute_sql --- END + + // --- Define Client-Side Tools --- START + const displayBlock = tool({ + description: + 'Displays results (table or chart) in the UI by referencing a previous execute_sql call using its manual ID.', + parameters: z.object({ + manualToolCallId: z + .string() + .describe('The manual ID from the corresponding execute_sql result.'), + sql: z.string().describe('The original SQL query that was executed.'), + label: z + .string() + .describe( + 'The title or label for this query block (e.g., "Users Over Time", "Create Users Table").' + ), + view: z.enum(['table', 'chart']).describe('Display mode: table or chart.'), + xAxis: z.string().optional().describe('Key for the x-axis (required if type is chart).'), + yAxis: z.string().optional().describe('Key for the y-axis (required if type is chart).'), + }), + execute: async (args) => { + console.log('Dummy execute for displayBlock called with args:', args) + return { status: 'Tool call sent to client for rendering.' } + }, + }) + + const renderWriteQuery = tool({ + description: + 'Renders SQL for write operations (INSERT, UPDATE, DELETE) or DDL (CREATE, ALTER, DROP) for the user to run manually. Use this for all non-SELECT queries.', + parameters: z.object({ + sql: z.string().describe('The SQL query to render.'), + label: z + .string() + .describe( + 'The title or label for this query block (e.g., "Insert New User", "Alter Orders Table").' + ), + }), + execute: async (args) => { + console.log('Dummy execute for displayBlock called with args:', args) + return { status: 'Tool call sent to client for rendering.' } + }, + }) + + const renderEdgeFunction = tool({ + description: 'Renders the code for a Supabase Edge Function for the user to deploy manually.', + parameters: z.object({ + name: z + .string() + .describe('The URL-friendly name of the Edge Function (e.g., "my-function").'), + code: z.string().describe('The TypeScript code for the Edge Function.'), + }), + execute: async (args) => { + console.log('Dummy execute for displayBlock called with args:', args) + return { status: 'Tool call sent to client for rendering.' } + }, + }) + // --- Define Client-Side Tools --- END + + console.log('MCP Tools available: ', Object.keys(mcpTools).join(', ')) + + const allTools = { + ...mcpTools, + ...(wrappedExecuteSqlTool && { execute_sql: wrappedExecuteSqlTool }), + displayBlock, + renderWriteQuery, + renderEdgeFunction, + } const { result: schemas } = includeSchemaMetadata ? await executeSql( @@ -87,110 +168,53 @@ async function handlePost(req: NextApiRequest, res: NextApiResponse) { ) : { result: [] } - const result = await generateText({ - model: openai('gpt-4o-mini'), - maxSteps: 5, - system: ` - You are a Supabase Postgres expert who can do the following things. + const systemPrompt = ` + The current project is ${projectRef}. + You are a Supabase Postgres expert connected via the Supabase Management Control Plane (MCP). Your goal is to generate SQL or Edge Function code based on user requests, using specific tools for rendering. - # You generate and debug SQL - The generated SQL (must be valid SQL), and must adhere to the following: - - Always use double apostrophe in SQL strings (eg. 'Night''s watch') - - Always use semicolons - - Output as markdown - - Always include code snippets if available - - If a code snippet is SQL, the first line of the snippet should always be -- props: {"id": "id", "title": "Query title", "runQuery": "false", "isChart": "true", "xAxis": "columnOrAlias", "yAxis": "columnOrAlias"} - - Only include one line of comment props per markdown snippet, even if the snippet has multiple queries - - Only set chart to true if the query makes sense as a chart. xAxis and yAxis need to be columns or aliases returned by the query. - - Set the id to a random uuidv4 value - - Only set runQuery to true if the query has no risk of writing data and is not a debugging request. Set it to false if there are any values that need to be replaced with real data. - - Explain what the snippet does in a sentence or two before showing it - - Use vector(384) data type for any embedding/vector related query - - When debugging, retrieve sql schema details to ensure sql is correct - - In Supabase, the auth schema already has a users table which is used to store users. It is common practice to create a profiles table in the public schema that links to auth.users to store user information instead. You don't need to create a new users table. - - Never suggest creating a view to retrieve information from the users table of the auth schema. This is against our best practices. + # Core Principles: + - Use MCP tools like \`list_tables\` and \`list_extensions\` to gather information. + - **Tool Usage Strategy**: + - For **SELECT** queries: Explain your plan, call \`execute_sql\` with the query. After receiving the results, explain the findings briefly in text. Then, call \`displayBlock\` using the \`manualToolCallId\`, \`sql\`, and a descriptive \`label\` to display the full results. **Choose 'chart'** if the data is suitable for visualization (e.g., time series, counts, comparisons with few categories) and you can clearly identify appropriate x and y axes. **Otherwise, default to 'table'** for detailed data, complex results, or if a clear chart type isn't obvious. Ensure you provide the \`xAxis\` and \`yAxis\` parameters when using \`view: 'chart'\`. + - For **ALL WRITE/DDL** queries (INSERT, UPDATE, DELETE, CREATE, ALTER, DROP, etc.): Explain your plan and the purpose of the SQL. If multiple, separate queries are needed (e.g., creating a table and then related RLS policies), explain the first query, call \`renderWriteQuery\` for it with the \`sql\` and a descriptive \`label\`, then explain the second query, call \`renderWriteQuery\` for it with its \`sql\` and \`label\`, and so on. Use one tool call per distinct query. (These always use a table view implicitly). + - For **Edge Functions**: Explain your plan and the function's purpose, then use the \`renderEdgeFunction\` tool with the name and Typescript code to propose it to the user. + - **DO NOT** use \`apply_migration\` or \`deploy_edge_function\` directly. + - **UI Rendering & Explanation**: The frontend uses the \`displayBlock\`, \`renderWriteQuery\`, and \`renderEdgeFunction\` tools to show generated content or data to the user. Your text responses should clearly explain *what* you are doing, *why*, and briefly summarize the outcome (e.g., "I found 5 matching users", "I've generated the SQL to create the table"). **Do not** include the full SQL results, complete SQL code blocks, or entire Edge Function code in your text response; use the appropriate rendering tools for that purpose. - When generating tables, do the following: - - Ensure that all tables always have a primary key - - Ensure that all tables have RLS enabled. Inform the user that they will need to create RLS policies before being able to read or write to the table over Supabase APIs. - - For primary keys, always use "id bigint primary key generated always as identity" (not serial) - - Prefer creating foreign key references in the create statement - - Prefer 'text' over 'varchar' - - Prefer 'timestamp with time zone' over 'date' - - If a foreign key is created, include a statement to create a database index on the columns involved in the foreign key. This is a best practice as it is common to use foreign key columns in join conditions when querying the database, hence the index will improve the performance of those joins and reduce database resource consumption. - - If the table is a foreign table, create it in a new schema called private. If the private schema doesnt exist, create it. - - Explain to the user that we create it outside of the public schema as it can present a security risk as foreign tables views cannot be configured to respect RLS policies. Provide this link for users to view more details about the security risk: https://supabase.com/docs/guides/database/database-advisors?queryGroups=lint&lint=0017_foreign_table_in_api + # Debugging SQL: + - Use MCP information tools (\`list_tables\`, etc.) to understand the schema. + - If debugging a SELECT query: Explain the issue, provide the corrected SQL to \`execute_sql\`, and then call \`displayBlock\` with the new results. + - If debugging a WRITE/DDL query: Explain the issue and provide the corrected SQL using \`renderWriteQuery\`. - When generating views, do the following: - - All views should include 'with (security_invoker=on)' clause in the SQL statement for creating views (only views though - do not do this for tables) - - Place the 'with (security_invoker=on)' immediately after the CREATE VIEW statement, before AS - - If the view is a materialized view, create it in a new schema called private. If the private schema doesnt exist, create it. - - Explain to the user that we create it outside of the public schema as it can present a security risk as materialized views cannot be configured to respect RLS policies of the underlying tables they are built upon, nor can they be secured with RLS directly. Provide this link for users to view more details about the security risk: https://supabase.com/docs/guides/database/database-advisors?queryGroups=lint&lint=0016_materialized_view_in_api + # SQL Style: + - Generated SQL must be valid Postgres SQL. + - Always use double apostrophes for escaped single quotes (e.g., 'Night''s watch'). + - Always use semicolons at the end of SQL statements. + - Use \`vector(384)\` for embedding/vector related queries. + - Prefer \`text\` over \`varchar\`. + - Prefer \`timestamp with time zone\` over \`date\`. - When installing database extensions, do the following: - - Never install extensions in the public schema - - Extensions should be installed in the extensions schema, or a dedicated schema + # Best Practices & Object Generation: + - Follow previous best practices for Auth schema, indexes, etc. + - Use \`renderWriteQuery\` for generating Tables, Views, Extensions, RLS Policies, Functions, following the guidelines mentioned previously (RLS, security invoker, private schema for foreign tables/materialized views, etc.). Explain the generated SQL's purpose in your text response. - Feel free to suggest corrections for suspected typos. - - # You write row level security policies. - - Your purpose is to generate a policy with the constraints given by the user. - - First, use getSchemaTables to retrieve more information about a schema or schemas that will contain policies, usually the public schema. - - Then retrieve existing RLS policies and guidelines on how to write policies using the getRlsKnowledge tool . - - Then write new policies or update existing policies based on the prompt - - When asked to suggest policies, either alter existing policies or add new ones to the public schema. - - When writing policies that use a function from the auth schema, ensure that the calls are wrapped with parentheses e.g select auth.uid() should be written as (select auth.uid()) instead - - # You write database functions - Your purpose is to generate a database function with the constraints given by the user. The output may also include a database trigger - if the function returns a type of trigger. When generating functions, do the following: - - If the function returns a trigger type, ensure that it uses security definer, otherwise default to security invoker. Include this in the create functions SQL statement. - - Ensure to set the search_path configuration parameter as '', include this in the create functions SQL statement. - - Default to create or replace whenever possible for updating an existing function, otherwise use the alter function statement - Please make sure that all queries are valid Postgres SQL queries - - # You write edge functions - Your purpose is to generate entire edge functions with the constraints given by the user. - - First, always use the getEdgeFunctionKnowledge tool to get knowledge about how to write edge functions for Supabase - - When writing edge functions, always ensure that they are written in TypeScript and Deno JavaScript runtime. - - When writing edge functions, write complete code so the user doesn't need to replace any placeholders. - - When writing edge functions, always ensure that they are written in a way that is compatible with the database schema. - - When suggesting edge functions, follow the guidelines in getEdgeFunctionKnowledge tool. Always create personalised edge functions based on the database schema - - When outputting edge functions, always include a props comment in the first line of the code block: - -- props: {"name": "function-name", "title": "Human readable title"} - - The function name in the props must be URL-friendly (use hyphens instead of spaces or underscores) - - Always wrap the edge function code in a markdown code block with the language set to 'edge' - - The props comment must be the first line inside the code block, followed by the actual function code - - # You convert sql to supabase-js client code - Use the convertSqlToSupabaseJs tool to convert select sql to supabase-js client code. Only provide js code snippets if explicitly asked. If conversion isn't supported, build a postgres function instead and suggest using supabase-js to call it via "const { data, error } = await supabase.rpc('echo', { say: '👋'})" - - # For all your abilities, follow these instructions: - - First look at the list of provided schemas and if needed, get more information about a schema. You will almost always need to retrieve information about the public schema before answering a question. - - If the question is about users or involves creating a users table, also retrieve the auth schema. - - If it a query is a destructive query e.g. table drop, ask for confirmation before writing the query. The user will still have to run the query once you create it - - - Here are the existing database schema names you can retrieve: ${schemas} - - ${schema !== undefined && includeSchemaMetadata ? `The user is currently looking at the ${schema} schema.` : ''} - ${table !== undefined && includeSchemaMetadata ? `The user is currently looking at the ${table} table.` : ''} - `, + # General Instructions: + - **Understand Context**: Use \`list_tables\`, \`list_extensions\` first. + - **Available Schemas**: ${schemas} + - **Current Focus**: ${schema !== undefined && includeSchemaMetadata ? `User is looking at schema: ${schema}.` : ''} ${table !== undefined && includeSchemaMetadata ? `User is looking at table: ${table}.` : ''} + ` + + const result = await streamText({ + model: openai('gpt-4.1-mini'), + maxSteps: 10, + system: systemPrompt, messages, - tools: mcpTools, + tools: allTools, }) - console.log('result', result) - - // write the data stream to the response - // Note: this is sent as a single response, not a stream - // result.pipeDataStreamToResponse(res) + result.pipeDataStreamToResponse(res) } catch (error: any) { console.log('error', error) return res.status(500).json({ message: error.message }) - } finally { - // Ensure the MCP client is closed - await mcpClient?.close() } } diff --git a/apps/studio/pages/api/ai/sql/supabase-mcp.ts b/apps/studio/pages/api/ai/sql/supabase-mcp.ts new file mode 100644 index 00000000000..c47977e1c37 --- /dev/null +++ b/apps/studio/pages/api/ai/sql/supabase-mcp.ts @@ -0,0 +1,31 @@ +import { StreamTransport } from '@supabase/mcp-utils' +import { experimental_createMCPClient as createMCPClient } from 'ai' +import { createSupabaseMcpServer } from '@supabase/mcp-server-supabase' +import { API_URL } from 'lib/constants' + +export async function createSupabaseMCPClient(accessToken: string) { + // Create an in-memory transport pair + const clientTransport = new StreamTransport() + const serverTransport = new StreamTransport() + clientTransport.readable.pipeTo(serverTransport.writable) + serverTransport.readable.pipeTo(clientTransport.writable) + + // Instantiate the MCP server and connect to its transport + const apiUrl = API_URL?.replace('/platform', '') + const server = createSupabaseMcpServer({ + platform: { + accessToken, + apiUrl, + }, + readOnly: true, + }) + await server.connect(serverTransport) + + // Create the MCP client and connect to its transport + const client = await createMCPClient({ + name: 'Studio AI Assistant', // Give a more specific name + transport: clientTransport, + }) + + return client +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2e6082dfc01..123056e52dc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -197,7 +197,7 @@ importers: version: 1.6.0 tailwindcss: specifier: ^3.3.0 - version: 3.4.1(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.5.2)) + version: 3.4.1(ts-node@10.9.2(@types/node@22.14.1)(typescript@5.5.2)) tsconfig: specifier: workspace:* version: link:../../packages/tsconfig @@ -542,8 +542,8 @@ importers: apps/studio: dependencies: '@ai-sdk/openai': - specifier: latest - version: 1.3.16(zod@3.23.8) + specifier: ^1.3.18 + version: 1.3.18(zod@3.23.8) '@dagrejs/dagre': specifier: ^1.0.4 version: 1.0.4 @@ -607,6 +607,12 @@ importers: '@supabase/auth-js': specifier: 'catalog:' version: 2.69.0-rc.3 + '@supabase/mcp-server-supabase': + specifier: ^0.3.6 + version: 0.3.6(supports-color@8.1.1) + '@supabase/mcp-utils': + specifier: ^0.1.3 + version: 0.1.3(supports-color@8.1.1) '@supabase/pg-meta': specifier: workspace:* version: link:../../packages/pg-meta @@ -633,7 +639,7 @@ importers: version: 2.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@vercel/flags': specifier: ^2.6.0 - version: 2.6.0(next@14.2.26(@babel/core@7.26.10(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.49.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.72.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 2.6.0(next@14.2.26(@opentelemetry/api@1.9.0)(@playwright/test@1.49.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.72.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@vitejs/plugin-react': specifier: ^4.3.4 version: 4.3.4(supports-color@8.1.1)(vite@6.2.6(@types/node@20.12.11)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5)) @@ -641,7 +647,7 @@ importers: specifier: ^2.7.29 version: 2.7.30 ai: - specifier: latest + specifier: ^4.3.9 version: 4.3.9(react@18.3.1)(zod@3.23.8) ai-commands: specifier: workspace:* @@ -700,6 +706,9 @@ importers: json-logic-js: specifier: ^2.0.2 version: 2.0.2 + latest: + specifier: ^0.2.0 + version: 0.2.0 lodash: specifier: ^4.17.21 version: 4.17.21 @@ -709,6 +718,9 @@ importers: markdown-table: specifier: ^3.0.3 version: 3.0.3 + markdown-to-jsx: + specifier: ^7.7.6 + version: 7.7.6(react@18.3.1) memoize-one: specifier: ^5.0.1 version: 5.2.1 @@ -982,7 +994,7 @@ importers: version: 2.4.11(typescript@5.5.2) next-router-mock: specifier: ^0.9.13 - version: 0.9.13(next@14.2.26(@babel/core@7.26.10(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.49.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.72.0))(react@18.3.1) + version: 0.9.13(next@14.2.26(@opentelemetry/api@1.9.0)(@playwright/test@1.49.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.72.0))(react@18.3.1) postcss: specifier: ^8.4.31 version: 8.4.38 @@ -1030,7 +1042,7 @@ importers: version: 1.1.8(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@react-router/fs-routes': specifier: ^7.4.0 - version: 7.4.0(@react-router/dev@7.4.0(@types/node@22.13.14)(jiti@2.4.2)(react-router@7.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.5.2)(vite@6.2.6(@types/node@22.13.14)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5))(yaml@2.4.5))(typescript@5.5.2) + version: 7.4.0(@react-router/dev@7.4.0(@types/node@22.14.1)(jiti@2.4.2)(react-router@7.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.5.2)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5))(yaml@2.4.5))(typescript@5.5.2) '@supabase/postgrest-js': specifier: '*' version: 1.19.2 @@ -1121,7 +1133,7 @@ importers: devDependencies: '@react-router/dev': specifier: ^7.1.5 - version: 7.4.0(@types/node@22.13.14)(jiti@2.4.2)(react-router@7.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.5.2)(vite@6.2.6(@types/node@22.13.14)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5))(yaml@2.4.5) + version: 7.4.0(@types/node@22.14.1)(jiti@2.4.2)(react-router@7.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.5.2)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5))(yaml@2.4.5) '@shikijs/compat': specifier: ^1.1.7 version: 1.6.0 @@ -1136,7 +1148,7 @@ importers: version: 1.114.27(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tanstack/react-start': specifier: ^1.114.25 - version: 1.114.27(@electric-sql/pglite@0.2.15)(@tanstack/react-router@1.114.27(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/node@22.13.14)(db0@0.3.1(@electric-sql/pglite@0.2.15))(encoding@0.1.13)(ioredis@5.6.0(supports-color@8.1.1))(jiti@2.4.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.5.2)(vite@6.2.6(@types/node@22.13.14)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5))(webpack@5.94.0(esbuild@0.25.2))(yaml@2.4.5) + version: 1.114.27(@electric-sql/pglite@0.2.15)(@tanstack/react-router@1.114.27(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/node@22.14.1)(db0@0.3.1(@electric-sql/pglite@0.2.15))(encoding@0.1.13)(ioredis@5.6.0(supports-color@8.1.1))(jiti@2.4.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.5.2)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5))(webpack@5.94.0(esbuild@0.25.2))(yaml@2.4.5) '@types/lodash': specifier: ^4.17.16 version: 4.17.16 @@ -1172,13 +1184,13 @@ importers: version: 4.4.1 shadcn: specifier: 2.4.0-canary.16 - version: 2.4.0-canary.16(@types/node@22.13.14)(supports-color@8.1.1)(typescript@5.5.2) + version: 2.4.0-canary.16(@types/node@22.14.1)(supports-color@8.1.1)(typescript@5.5.2) shiki: specifier: ^1.1.7 version: 1.6.0 tailwindcss: specifier: ^3.3.0 - version: 3.4.1(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.5.2)) + version: 3.4.1(ts-node@10.9.2(@types/node@22.14.1)(typescript@5.5.2)) tsconfig: specifier: workspace:* version: link:../../packages/tsconfig @@ -1193,7 +1205,7 @@ importers: version: 3.0.0 vite: specifier: ^6.2.6 - version: 6.2.6(@types/node@22.13.14)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5) + version: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5) apps/www: dependencies: @@ -1555,7 +1567,7 @@ importers: version: 0.7.12 '@vercel/flags': specifier: ^2.6.0 - version: 2.6.0(next@14.2.26(@babel/core@7.26.10(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.49.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.72.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 2.6.0(next@14.2.26(@opentelemetry/api@1.9.0)(@playwright/test@1.49.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.72.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) api-types: specifier: workspace:* version: link:../api-types @@ -1610,10 +1622,10 @@ importers: version: 0.1.9 '@tailwindcss/forms': specifier: ^0.5.0 - version: 0.5.6(tailwindcss@3.4.1(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.5.2))) + version: 0.5.6(tailwindcss@3.4.1(ts-node@10.9.2(@types/node@22.14.1)(typescript@5.5.2))) '@tailwindcss/typography': specifier: ^0.5.9 - version: 0.5.10(tailwindcss@3.4.1(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.5.2))) + version: 0.5.10(tailwindcss@3.4.1(ts-node@10.9.2(@types/node@22.14.1)(typescript@5.5.2))) deepmerge: specifier: ^4.2.2 version: 4.3.1 @@ -1626,10 +1638,10 @@ importers: devDependencies: tailwindcss: specifier: ^3.4.1 - version: 3.4.1(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.5.2)) + version: 3.4.1(ts-node@10.9.2(@types/node@22.14.1)(typescript@5.5.2)) tailwindcss-animate: specifier: ^1.0.6 - version: 1.0.7(tailwindcss@3.4.1(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.5.2))) + version: 1.0.7(tailwindcss@3.4.1(ts-node@10.9.2(@types/node@22.14.1)(typescript@5.5.2))) packages/eslint-config-supabase: dependencies: @@ -1694,7 +1706,7 @@ importers: version: 8.11.11 '@vitest/coverage-v8': specifier: ^3.0.9 - version: 3.0.9(supports-color@8.1.1)(vitest@3.0.9(@types/node@22.13.14)(jiti@2.4.2)(jsdom@20.0.3(supports-color@8.1.1))(msw@2.7.3(@types/node@22.13.14)(typescript@5.5.2))(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5)) + version: 3.0.9(supports-color@8.1.1)(vitest@3.0.9(@types/node@22.14.1)(jiti@2.4.2)(jsdom@20.0.3(supports-color@8.1.1))(msw@2.7.3(@types/node@22.14.1)(typescript@5.5.2))(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5)) npm-run-all: specifier: ^4.1.5 version: 4.1.5 @@ -1709,10 +1721,10 @@ importers: version: 5.5.2 vite: specifier: ^6.2.6 - version: 6.2.6(@types/node@22.13.14)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5) + version: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5) vitest: specifier: ^3.0.5 - version: 3.0.9(@types/node@22.13.14)(jiti@2.4.2)(jsdom@20.0.3(supports-color@8.1.1))(msw@2.7.3(@types/node@22.13.14)(typescript@5.5.2))(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5) + version: 3.0.9(@types/node@22.14.1)(jiti@2.4.2)(jsdom@20.0.3(supports-color@8.1.1))(msw@2.7.3(@types/node@22.14.1)(typescript@5.5.2))(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5) packages/shared-data: {} @@ -2114,7 +2126,7 @@ importers: version: link:../api-types next-router-mock: specifier: ^0.9.13 - version: 0.9.13(next@14.2.26(@babel/core@7.26.10(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.49.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.72.0))(react@18.3.1) + version: 0.9.13(next@14.2.26(@opentelemetry/api@1.9.0)(@playwright/test@1.49.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.72.0))(react@18.3.1) typescript: specifier: ~5.5.0 version: 5.5.2 @@ -2158,8 +2170,8 @@ packages: peerDependencies: zod: ^3.0.0 - '@ai-sdk/openai@1.3.16': - resolution: {integrity: sha512-pjtiBKt1GgaSKZryTbM3tqgoegJwgAUlp1+X5uN6T+VPnI4FLSymV65tyloWzDlyqZmi9HXnnSRPu76VoL5D5g==} + '@ai-sdk/openai@1.3.18': + resolution: {integrity: sha512-gqOHTOu62Tm2r4yDQx/Z5tWAgUrcTK8wXnC4A8zF/VOCzIjJDxxPsqJRTtQTMgIdGXhwmsv2sZ2PzvvuLeZeEg==} engines: {node: '>=18'} peerDependencies: zod: ^3.0.0 @@ -2721,6 +2733,9 @@ packages: '@deno/eszip@0.83.0': resolution: {integrity: sha512-gTKYMQ+uv20IUJuEBYkjovMPflFjX7caJ8cwA/sZVqic0L/PFP2gZMFt/GiCHc8eVejhlJLGxg0J4qehDq/f2A==} + '@deno/eszip@0.84.0': + resolution: {integrity: sha512-kfTiJ3jYWy57gV/jjd2McRZdfn2dXHxR3UKL6HQksLAMEmRILHo+pZmN1PAjj8UxQiTBQbybsNHGLaqgHeVntQ==} + '@deno/shim-deno-test@0.5.0': resolution: {integrity: sha512-4nMhecpGlPi0cSzT67L+Tm+GOJqvuk8gqHBziqcUQOarnuIax1z96/gJHCSIz2Z0zhxE6Rzwb3IZXPtFh51j+w==} @@ -3462,6 +3477,10 @@ packages: '@mjackson/node-fetch-server@0.2.0': resolution: {integrity: sha512-EMlH1e30yzmTpGLQjlFmaDAjyOeZhng1/XCd7DExR8PNAnG/G1tyruZxEoUe11ClnwGhGrtsdnyyUx1frSzjng==} + '@modelcontextprotocol/sdk@1.10.2': + resolution: {integrity: sha512-rb6AMp2DR4SN+kc6L1ta2NCpApyA9WYNx3CrTSZvGxq9wH71bRur+zRqPfg0vQ9mjywR7qZdX2RGHOPq3ss+tA==} + engines: {node: '>=18'} + '@monaco-editor/loader@1.4.0': resolution: {integrity: sha512-00ioBig0x642hytVspPl7DbQyaSWRaolYie/UFNjoTdvoKPzo6xrXLhTk9ixgIKcLH5b5vDOjVNiGyY+uDCUlg==} peerDependencies: @@ -5835,6 +5854,13 @@ packages: '@supabase/functions-js@2.4.4': resolution: {integrity: sha512-WL2p6r4AXNGwop7iwvul2BvOtuJ1YQy8EbOd0dhG1oN1q8el/BIRSFCFnWAMM/vJJlHWLi4ad22sKbKr9mvjoA==} + '@supabase/mcp-server-supabase@0.3.6': + resolution: {integrity: sha512-/0VtU315rB4K7d66I6/4v6fGWcV0T7TM60t4lXg5Ov8EBIlnOxdY/iQjv0966/Ckh/+EGeJcdZMPDIxIpGFUbQ==} + hasBin: true + + '@supabase/mcp-utils@0.1.3': + resolution: {integrity: sha512-WydcShLsJ9xG2nbLqf2q2k1KN+L2Yq30ay7/UNEh1kLY1lvjqZbnIb9Q7z25icTZuSYscRDxn8Jljj+F3bXdhw==} + '@supabase/node-fetch@2.6.15': resolution: {integrity: sha512-1ibVeYUacxWYi9i0cf5efil6adJ9WRyZBLivgjs+AUpewx1F3xPi7gLgaASI2SmIQxPoCEjAsLAzKPgMJVgOUQ==} engines: {node: 4.x || >=6.0.0} @@ -6448,6 +6474,9 @@ packages: '@types/node@22.13.14': resolution: {integrity: sha512-Zs/Ollc1SJ8nKUAgc7ivOEdIBM8JAKgrqqUYi2J997JuKO7/tpQC+WCetQ1sypiKCQWHdvdg9wBNpUPEWZae7w==} + '@types/node@22.14.1': + resolution: {integrity: sha512-u0HuPQwe/dHrItgHHpmw3N2fYCR6x4ivMNbPHRkBVP4CvN+kiRrKHWk3i8tXiO/joPwXLMYvF9TTF0eqgHIuOw==} + '@types/papaparse@5.3.9': resolution: {integrity: sha512-sZcrKD63qA4/6GyBcVvX6AIp0AkpfyYk00CUQHMBvb4+OVXTZWyXUvidUZaai1wyKUVyJoxO7mgREam/pMRrDw==} @@ -6818,6 +6847,10 @@ packages: abstract-logging@2.0.1: resolution: {integrity: sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==} + accepts@2.0.0: + resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} + engines: {node: '>= 0.6'} + acorn-globals@7.0.1: resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} @@ -7226,6 +7259,10 @@ packages: bl@5.1.0: resolution: {integrity: sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==} + body-parser@2.2.0: + resolution: {integrity: sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==} + engines: {node: '>=18'} + boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} @@ -7278,6 +7315,10 @@ packages: resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} engines: {node: '>=10.16.0'} + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + c12@3.0.2: resolution: {integrity: sha512-6Tzk1/TNeI3WBPpK0j/Ss4+gPj3PUJYbWl/MWDJBThFvwNGNkXtd7Cz8BJtD4aRwoGHtzQD0SnxamgUiBH0/Nw==} peerDependencies: @@ -7306,6 +7347,10 @@ packages: resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} engines: {node: '>= 0.4'} + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} + call-me-maybe@1.0.2: resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==} @@ -7669,6 +7714,14 @@ packages: constant-case@3.0.4: resolution: {integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==} + content-disposition@1.0.0: + resolution: {integrity: sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==} + engines: {node: '>= 0.6'} + + content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + contentlayer2@0.4.6: resolution: {integrity: sha512-EhdabpVsn8u3EkoovGrLB/sIxWUlVJGNiYal9rZn0XJRjIyncGrhz9EJ9gn+z3cRHYUdHCuCMLW/ev6isgKXYw==} engines: {node: '>=14.18'} @@ -7688,6 +7741,10 @@ packages: cookie-es@2.0.0: resolution: {integrity: sha512-RAj4E421UYRgqokKUmotqAwuplYw15qtdXfY+hGzgCJ/MBjCVZcSoHK/kH9kocfjRjcDME7IiDWR/1WX1TM2Pg==} + cookie-signature@1.2.2: + resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==} + engines: {node: '>=6.6.0'} + cookie@0.7.2: resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} engines: {node: '>= 0.6'} @@ -7712,6 +7769,10 @@ packages: core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + cors@2.8.5: + resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} + engines: {node: '>= 0.10'} + cosmiconfig@8.3.6: resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} engines: {node: '>=14'} @@ -8287,6 +8348,10 @@ packages: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} + entities@6.0.0: + resolution: {integrity: sha512-aKstq2TDOndCn4diEyp9Uq/Flu2i1GlLkc6XIDQSDMuaFE3OPW5OphLCyQ5SpSJZTb4reN+kTcYru5yIfXoRPw==} + engines: {node: '>=0.12'} + env-paths@2.2.1: resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} engines: {node: '>=6'} @@ -8326,6 +8391,9 @@ packages: es-module-lexer@1.6.0: resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==} + es-module-lexer@1.7.0: + resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} + es-object-atoms@1.0.0: resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} engines: {node: '>= 0.4'} @@ -8541,7 +8609,6 @@ packages: resolution: {integrity: sha512-t0q23FIpvHDTtnORW+bDJziGsal5uh9RJTJ1fyH8drd4lICOoXhJ5pLMUZ5C0VQei6dNmwTzzoTRgMkO9JgHEQ==} peerDependencies: eslint: '>= 5' - bundledDependencies: [] eslint-plugin-import@2.29.1: resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} @@ -8694,6 +8761,14 @@ packages: resolution: {integrity: sha512-v0eOBUbiaFojBu2s2NPBfYUoRR9GjcDNvCXVaqEf5vVfpIAh9f8RCo4vXTP8c63QRKCFwoLpMpTdPwwhEKVgzA==} engines: {node: '>=14.18'} + eventsource-parser@3.0.1: + resolution: {integrity: sha512-VARTJ9CYeuQYb0pZEPbzi740OWFgpHe7AYJ2WFZVnUDUQp5Dk2yJUgF36YsZ81cOyxT0QxmXD2EQpapAouzWVA==} + engines: {node: '>=18.0.0'} + + eventsource@3.0.6: + resolution: {integrity: sha512-l19WpE2m9hSuyP06+FbuUUf1G+R0SFLrtQfbRb9PRr+oimOfxQhgGCbVaXg5IvZyyTThJsxh6L/srkMiCeBPDA==} + engines: {node: '>=18.0.0'} + execa@7.2.0: resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} @@ -8717,6 +8792,16 @@ packages: exponential-backoff@3.1.1: resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} + express-rate-limit@7.5.0: + resolution: {integrity: sha512-eB5zbQh5h+VenMPM3fh+nw1YExi5nMr6HUCR62ELSP11huvxm/Uir1H1QEyTkk5QX6A58pX6NmaTMceKZ0Eodg==} + engines: {node: '>= 16'} + peerDependencies: + express: ^4.11 || 5 || ^5.0.0-beta.1 + + express@5.1.0: + resolution: {integrity: sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==} + engines: {node: '>= 18'} + exsolve@1.0.4: resolution: {integrity: sha512-xsZH6PXaER4XoV+NiT7JHp1bJodJVT+cxeSH1G0f0tlT0lJqYuHUP3bUx2HtfTDvOagMINYp8rsqusxud3RXhw==} @@ -8869,6 +8954,10 @@ packages: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} + finalhandler@2.1.0: + resolution: {integrity: sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==} + engines: {node: '>= 0.8'} + find-my-way@8.2.2: resolution: {integrity: sha512-Dobi7gcTEq8yszimcfp/R7+owiT4WncAJ7VTTgFH1jYJ5GaG1FbhjwDG820hptN0QDFvzVY3RfCzdInvGPGzjA==} engines: {node: '>=14'} @@ -8972,6 +9061,10 @@ packages: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} + fresh@2.0.0: + resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==} + engines: {node: '>= 0.8'} + fs-extra@10.1.0: resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} engines: {node: '>=12'} @@ -9040,6 +9133,10 @@ packages: resolution: {integrity: sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==} engines: {node: '>= 0.4'} + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + get-nonce@1.0.1: resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} engines: {node: '>=6'} @@ -9748,6 +9845,9 @@ packages: resolution: {integrity: sha512-GljRxhWvlCNRfZyORiH77FwdFwGcMO620o37EOYC0ORWdq+WYNVqW0w2Juzew4M+L81l6/QS3t5gkkihyRqv9w==} engines: {node: '>=0.10.0'} + is-promise@4.0.0: + resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} + is-reference@1.2.1: resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} @@ -10106,6 +10206,10 @@ packages: resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} engines: {node: '>=0.10'} + latest@0.2.0: + resolution: {integrity: sha512-nsIM/FjwLcsKZ1KDAw5CivnM26zzMs3zGBL4SdjYXHI5tMcOWjGhFDMBKIum4WNAkZmeVw7zU1jR2H2UiKoQVA==} + hasBin: true + lazy-cache@2.0.2: resolution: {integrity: sha512-7vp2Acd2+Kz4XkzxGxaB1FWOi8KjWIWsgdfD5MCb86DWvlLqhRPM+d6Pro3iNEL5VT9mstz5hKAlcd+QR6H3aA==} engines: {node: '>=0.10.0'} @@ -10344,6 +10448,12 @@ packages: markdown-table@3.0.3: resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} + markdown-to-jsx@7.7.6: + resolution: {integrity: sha512-/PWFFoKKMidk4Ut06F5hs5sluq1aJ0CGvUJWsnCK6hx/LPM8vlhvKAxtGHJ+U+V2Il2wmnfO6r81ICD3xZRVaw==} + engines: {node: '>= 10'} + peerDependencies: + react: '>= 0.14.0' + markdown-toc@1.2.0: resolution: {integrity: sha512-eOsq7EGd3asV0oBfmyqngeEIhrbkc7XVP63OwcJBIhH2EpG2PzFcbZdhy1jutXSlRBBVMNXHvMtSr5LAxSUvUg==} engines: {node: '>=0.10.0'} @@ -10491,6 +10601,10 @@ packages: peerDependencies: esbuild: 0.* + media-typer@1.1.0: + resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} + engines: {node: '>= 0.8'} + memfs@4.14.1: resolution: {integrity: sha512-Fq5CMEth+2iprLJ5mNizRcWuiwRZYjNkUD0zKk224jZunE9CRacTRDK8QLALbMBlNX2y3nY6lKZbesCwDwacig==} engines: {node: '>= 4.0.0'} @@ -10502,6 +10616,10 @@ packages: resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} engines: {node: '>= 0.10.0'} + merge-descriptors@2.0.0: + resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==} + engines: {node: '>=18'} + merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} @@ -10749,10 +10867,18 @@ packages: resolution: {integrity: sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==} engines: {node: '>= 0.6'} + mime-db@1.54.0: + resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} + engines: {node: '>= 0.6'} + mime-types@2.1.35: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} + mime-types@3.0.1: + resolution: {integrity: sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==} + engines: {node: '>= 0.6'} + mime@1.6.0: resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} engines: {node: '>=4'} @@ -10999,6 +11125,11 @@ packages: react: '*' react-dom: '*' + 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.8: resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -11015,6 +11146,10 @@ packages: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} + negotiator@1.0.0: + resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} + engines: {node: '>= 0.6'} + neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} @@ -11227,6 +11362,82 @@ packages: resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + npm@2.15.12: + resolution: {integrity: sha512-WMoAJ518W0vHjWy1abYnTeyG9YQpSoYGPxAx7d0C0L7U7Jo44bZsrvTjccmDohCJGxpasdKfqsKsl6o/RUPx6A==} + hasBin: true + bundledDependencies: + - abbrev + - ansi + - ansi-regex + - ansicolors + - ansistyles + - archy + - async-some + - block-stream + - char-spinner + - chmodr + - chownr + - cmd-shim + - columnify + - config-chain + - dezalgo + - editor + - fs-vacuum + - fs-write-stream-atomic + - fstream + - fstream-npm + - github-url-from-git + - github-url-from-username-repo + - glob + - graceful-fs + - hosted-git-info + - imurmurhash + - inflight + - inherits + - ini + - init-package-json + - lockfile + - lru-cache + - minimatch + - mkdirp + - node-gyp + - nopt + - normalize-git-url + - normalize-package-data + - npm-cache-filename + - npm-install-checks + - npm-package-arg + - npm-registry-client + - npm-user-validate + - npmlog + - once + - opener + - osenv + - path-is-inside + - read + - read-installed + - read-package-json + - readable-stream + - realize-package-specifier + - request + - retry + - rimraf + - semver + - sha + - slide + - sorted-object + - spdx-license-ids + - strip-ansi + - tar + - text-table + - uid-number + - umask + - validate-npm-package-license + - validate-npm-package-name + - which + - wrappy + - write-file-atomic + npmlog@5.0.1: resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} deprecated: This package is no longer supported. @@ -11303,6 +11514,10 @@ packages: object-inspect@1.13.1: resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} + object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} @@ -11399,6 +11614,9 @@ packages: openapi-fetch@0.12.4: resolution: {integrity: sha512-Hb7WNjZNir5P4RjacbYU4tXAiVay1Hj83BHkBE5Psn3A58Xfkp+vx0Ky76O4ZTw2VzaH3cTk1qbf4vQ6H/zmPw==} + openapi-fetch@0.13.5: + resolution: {integrity: sha512-AQK8T9GSKFREFlN1DBXTYsLjs7YV2tZcJ7zUWxbjMoQmj8dDSFRrzhLCbHPZWA1TMV3vACqfCxLEZcwf2wxV6Q==} + openapi-sampler@1.6.1: resolution: {integrity: sha512-s1cIatOqrrhSj2tmJ4abFYZQK6l5v+V4toO5q1Pa0DyN8mtyqy2I+Qrj5W9vOELEtybIMQs/TBZGVO/DtTFK8w==} @@ -11411,6 +11629,9 @@ packages: openapi-typescript-helpers@0.0.14: resolution: {integrity: sha512-B8Z2hr5zvC8Z+28kLL+NyjdU7nF/fYqhOse2V1mNrBqciQKtHq7CBSiJDVI0XPgIPJ2kThAiS38gNZyzH9JGeQ==} + openapi-typescript-helpers@0.0.15: + resolution: {integrity: sha512-opyTPaunsklCBpTK8JGef6mfPhLSnyy5a0IN9vKtx3+4aExf+KxEqYwIy3hqkedXIB97u357uLMJsOnm3GVjsw==} + openapi-typescript@7.5.2: resolution: {integrity: sha512-W/QXuQz0Fa3bGY6LKoqTCgrSX+xI/ST+E5RXo2WBmp3WwgXCWKDJPHv5GZmElF4yLCccnqYsakBDOJikHZYGRw==} hasBin: true @@ -11505,8 +11726,8 @@ packages: parse5@7.1.2: resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} - parse5@7.2.1: - resolution: {integrity: sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==} + parse5@7.3.0: + resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} parseurl@1.3.3: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} @@ -11722,6 +11943,10 @@ packages: resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} engines: {node: '>= 6'} + pkce-challenge@5.0.0: + resolution: {integrity: sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ==} + engines: {node: '>=16.20.0'} + pkg-types@1.3.1: resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} @@ -11993,6 +12218,10 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} + qs@6.14.0: + resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==} + engines: {node: '>=0.6'} + quansync@0.2.10: resolution: {integrity: sha512-t41VRkMYbkHyCYmOvx/6URnN80H7k4X0lLdBMGsz+maAwrJQYB1djpV6vHrQIBE0WBSGqhtEHrK9U3DWWH8v7A==} @@ -12033,6 +12262,10 @@ packages: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} + raw-body@3.0.0: + resolution: {integrity: sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==} + engines: {node: '>= 0.8'} + rc9@2.1.2: resolution: {integrity: sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==} @@ -12685,6 +12918,10 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + router@2.2.0: + resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==} + engines: {node: '>= 18'} + rtl-css-js@1.16.1: resolution: {integrity: sha512-lRQgou1mu19e+Ya0LsTvKrVJ5TYUbqCVPAiImX3UfLTenarvPUl1QFdvu5Z3PYmHT9RCcwIfbjRQBntExyj3Zg==} @@ -12746,8 +12983,8 @@ packages: resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} engines: {node: '>= 10.13.0'} - schema-utils@4.3.0: - resolution: {integrity: sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==} + schema-utils@4.3.2: + resolution: {integrity: sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==} engines: {node: '>= 10.13.0'} screenfull@5.2.0: @@ -12789,6 +13026,10 @@ packages: resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} engines: {node: '>= 0.8.0'} + send@1.2.0: + resolution: {integrity: sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==} + engines: {node: '>= 18'} + sentence-case@3.0.4: resolution: {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==} @@ -12802,6 +13043,10 @@ packages: resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} engines: {node: '>= 0.8.0'} + serve-static@2.2.0: + resolution: {integrity: sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==} + engines: {node: '>= 18'} + server-only@0.0.1: resolution: {integrity: sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA==} @@ -12887,10 +13132,26 @@ packages: should@13.2.3: resolution: {integrity: sha512-ggLesLtu2xp+ZxI+ysJTmNjh2U0TsC+rQ/pfED9bUZZ4DKefP27D+7YJVVTvKsmjLpIi9jAa7itwDGkDDmt1GQ==} + side-channel-list@1.0.0: + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + side-channel@1.0.6: resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} engines: {node: '>= 0.4'} + side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + engines: {node: '>= 0.4'} + siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} @@ -13319,6 +13580,11 @@ packages: peerDependencies: react: ^16.11.0 || ^17.0.0 || ^18.0.0 + swr@2.3.3: + resolution: {integrity: sha512-dshNvs3ExOqtZ6kJBaAsabhPdHyeY4P2cKwRCniDVifBMoG/SVI7tfLWqPXriVspf2Rg4tPzXJTnwaihIeFw2A==} + peerDependencies: + react: ^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + swrev@4.0.0: resolution: {integrity: sha512-LqVcOHSB4cPGgitD1riJ1Hh4vdmITOp+BkmfmXRh4hSF/t7EnS4iD+SOTmq7w5pPm/SiPeto4ADbKS6dHUDWFA==} @@ -13695,6 +13961,10 @@ packages: resolution: {integrity: sha512-G6zXWS1dLj6eagy6sVhOMQiLtJdxQBHIA9Z6HFUNLOlr6MFOgzV8wvmidtPONfPtEUv0uZsy77XJNzTAfwPDaA==} engines: {node: '>=16'} + type-is@2.0.1: + resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==} + engines: {node: '>= 0.6'} + type@2.7.3: resolution: {integrity: sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==} @@ -13757,6 +14027,9 @@ packages: undici-types@6.20.0: resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} + undici-types@6.21.0: + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + undici@6.21.2: resolution: {integrity: sha512-uROZWze0R0itiAKVPsYhFov9LxrPMHLMEQFszeI2gCN6bnIIZ8twzBCJcN2LJrBBLfrP0t1FW0g+JmKVl8Vk1g==} engines: {node: '>=18.17'} @@ -13872,6 +14145,10 @@ packages: resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} engines: {node: '>= 10.0.0'} + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + unplugin-utils@0.2.4: resolution: {integrity: sha512-8U/MtpkPkkk3Atewj1+RcKIjb5WBimZ/WSLhhR3w6SsIj8XJuKTacSP8g+2JhfSGw0Cb125Y+2zA/IzJZDVbhA==} engines: {node: '>=18.12.0'} @@ -14031,6 +14308,11 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + use-sync-external-store@1.5.0: + resolution: {integrity: sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} @@ -14084,6 +14366,10 @@ packages: vanilla-tilt@1.7.0: resolution: {integrity: sha512-u9yUhpSasFeqQCuiTon+RSb0aHzcj9stvWVXQIswzKL5oG491lkYk7U1GmhOAEZt7yPT6EiYZRJhIh2MFBncOA==} + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + vaul@0.9.1: resolution: {integrity: sha512-fAhd7i4RNMinx+WEm6pF3nOl78DFkAazcN04ElLPFF9BMCNGbY/kou8UMhIcicm0rJCNePJP0Yyza60gGOD0Jw==} peerDependencies: @@ -14529,7 +14815,7 @@ snapshots: '@ai-sdk/provider-utils': 1.0.22(zod@3.23.8) zod: 3.23.8 - '@ai-sdk/openai@1.3.16(zod@3.23.8)': + '@ai-sdk/openai@1.3.18(zod@3.23.8)': dependencies: '@ai-sdk/provider': 1.1.3 '@ai-sdk/provider-utils': 2.2.7(zod@3.23.8) @@ -14547,7 +14833,7 @@ snapshots: '@ai-sdk/provider-utils@2.2.7(zod@3.23.8)': dependencies: '@ai-sdk/provider': 1.1.3 - nanoid: 3.3.8 + nanoid: 3.3.11 secure-json-parse: 2.7.0 zod: 3.23.8 @@ -14574,7 +14860,7 @@ snapshots: '@ai-sdk/provider-utils': 2.2.7(zod@3.23.8) '@ai-sdk/ui-utils': 1.2.8(zod@3.23.8) react: 18.3.1 - swr: 2.2.5(react@18.3.1) + swr: 2.3.3(react@18.3.1) throttleit: 2.1.0 optionalDependencies: zod: 3.23.8 @@ -15603,6 +15889,11 @@ snapshots: '@deno/shim-deno': 0.18.2 undici: 6.21.2 + '@deno/eszip@0.84.0': + dependencies: + '@deno/shim-deno': 0.18.2 + undici: 6.21.2 + '@deno/shim-deno-test@0.5.0': {} '@deno/shim-deno@0.18.2': @@ -16070,12 +16361,12 @@ snapshots: '@types/node': 20.12.11 optional: true - '@inquirer/confirm@5.1.8(@types/node@22.13.14)': + '@inquirer/confirm@5.1.8(@types/node@22.14.1)': dependencies: - '@inquirer/core': 10.1.9(@types/node@22.13.14) - '@inquirer/type': 3.0.5(@types/node@22.13.14) + '@inquirer/core': 10.1.9(@types/node@22.14.1) + '@inquirer/type': 3.0.5(@types/node@22.14.1) optionalDependencies: - '@types/node': 22.13.14 + '@types/node': 22.14.1 '@inquirer/core@10.1.9(@types/node@20.12.11)': dependencies: @@ -16091,10 +16382,10 @@ snapshots: '@types/node': 20.12.11 optional: true - '@inquirer/core@10.1.9(@types/node@22.13.14)': + '@inquirer/core@10.1.9(@types/node@22.14.1)': dependencies: '@inquirer/figures': 1.0.11 - '@inquirer/type': 3.0.5(@types/node@22.13.14) + '@inquirer/type': 3.0.5(@types/node@22.14.1) ansi-escapes: 4.3.2 cli-width: 4.1.0 mute-stream: 2.0.0 @@ -16102,7 +16393,7 @@ snapshots: wrap-ansi: 6.2.0 yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 22.13.14 + '@types/node': 22.14.1 '@inquirer/core@9.2.1': dependencies: @@ -16136,9 +16427,9 @@ snapshots: '@types/node': 20.12.11 optional: true - '@inquirer/type@3.0.5(@types/node@22.13.14)': + '@inquirer/type@3.0.5(@types/node@22.14.1)': optionalDependencies: - '@types/node': 22.13.14 + '@types/node': 22.14.1 '@ioredis/commands@1.2.0': {} @@ -16385,6 +16676,21 @@ snapshots: '@mjackson/node-fetch-server@0.2.0': {} + '@modelcontextprotocol/sdk@1.10.2(supports-color@8.1.1)': + dependencies: + content-type: 1.0.5 + cors: 2.8.5 + cross-spawn: 7.0.6 + eventsource: 3.0.6 + express: 5.1.0(supports-color@8.1.1) + express-rate-limit: 7.5.0(express@5.1.0(supports-color@8.1.1)) + pkce-challenge: 5.0.0 + raw-body: 3.0.0 + zod: 3.23.8 + zod-to-json-schema: 3.24.5(zod@3.23.8) + transitivePeerDependencies: + - supports-color + '@monaco-editor/loader@1.4.0(monaco-editor@0.33.0)': dependencies: monaco-editor: 0.33.0 @@ -18265,7 +18571,7 @@ snapshots: dependencies: react: 18.3.1 - '@react-router/dev@7.4.0(@types/node@22.13.14)(jiti@2.4.2)(react-router@7.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.5.2)(vite@6.2.6(@types/node@22.13.14)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5))(yaml@2.4.5)': + '@react-router/dev@7.4.0(@types/node@22.14.1)(jiti@2.4.2)(react-router@7.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.5.2)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5))(yaml@2.4.5)': dependencies: '@babel/core': 7.26.10(supports-color@8.1.1) '@babel/generator': 7.27.0 @@ -18294,8 +18600,8 @@ snapshots: semver: 7.7.1 set-cookie-parser: 2.7.1 valibot: 0.41.0(typescript@5.5.2) - vite: 6.2.6(@types/node@22.13.14)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5) - vite-node: 3.0.0-beta.2(@types/node@22.13.14)(jiti@2.4.2)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5) + vite: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5) + vite-node: 3.0.0-beta.2(@types/node@22.14.1)(jiti@2.4.2)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5) optionalDependencies: typescript: 5.5.2 transitivePeerDependencies: @@ -18314,9 +18620,9 @@ snapshots: - tsx - yaml - '@react-router/fs-routes@7.4.0(@react-router/dev@7.4.0(@types/node@22.13.14)(jiti@2.4.2)(react-router@7.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.5.2)(vite@6.2.6(@types/node@22.13.14)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5))(yaml@2.4.5))(typescript@5.5.2)': + '@react-router/fs-routes@7.4.0(@react-router/dev@7.4.0(@types/node@22.14.1)(jiti@2.4.2)(react-router@7.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.5.2)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5))(yaml@2.4.5))(typescript@5.5.2)': dependencies: - '@react-router/dev': 7.4.0(@types/node@22.13.14)(jiti@2.4.2)(react-router@7.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.5.2)(vite@6.2.6(@types/node@22.13.14)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5))(yaml@2.4.5) + '@react-router/dev': 7.4.0(@types/node@22.14.1)(jiti@2.4.2)(react-router@7.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.5.2)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5))(yaml@2.4.5) minimatch: 9.0.5 optionalDependencies: typescript: 5.5.2 @@ -19185,6 +19491,25 @@ snapshots: dependencies: '@supabase/node-fetch': 2.6.15 + '@supabase/mcp-server-supabase@0.3.6(supports-color@8.1.1)': + dependencies: + '@deno/eszip': 0.84.0 + '@modelcontextprotocol/sdk': 1.10.2(supports-color@8.1.1) + '@supabase/mcp-utils': 0.1.3(supports-color@8.1.1) + common-tags: 1.8.2 + openapi-fetch: 0.13.5 + zod: 3.24.2 + transitivePeerDependencies: + - supports-color + + '@supabase/mcp-utils@0.1.3(supports-color@8.1.1)': + dependencies: + '@modelcontextprotocol/sdk': 1.10.2(supports-color@8.1.1) + zod: 3.24.2 + zod-to-json-schema: 3.24.5(zod@3.24.2) + transitivePeerDependencies: + - supports-color + '@supabase/node-fetch@2.6.15': dependencies: whatwg-url: 5.0.0 @@ -19308,10 +19633,10 @@ snapshots: mini-svg-data-uri: 1.4.4 tailwindcss: 3.4.1(ts-node@10.9.2(@types/node@20.12.11)(typescript@5.5.2)) - '@tailwindcss/forms@0.5.6(tailwindcss@3.4.1(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.5.2)))': + '@tailwindcss/forms@0.5.6(tailwindcss@3.4.1(ts-node@10.9.2(@types/node@22.14.1)(typescript@5.5.2)))': dependencies: mini-svg-data-uri: 1.4.4 - tailwindcss: 3.4.1(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.5.2)) + tailwindcss: 3.4.1(ts-node@10.9.2(@types/node@22.14.1)(typescript@5.5.2)) '@tailwindcss/typography@0.5.10(tailwindcss@3.4.1(ts-node@10.9.2(@types/node@20.12.11)(typescript@5.5.2)))': dependencies: @@ -19321,15 +19646,15 @@ snapshots: postcss-selector-parser: 6.0.10 tailwindcss: 3.4.1(ts-node@10.9.2(@types/node@20.12.11)(typescript@5.5.2)) - '@tailwindcss/typography@0.5.10(tailwindcss@3.4.1(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.5.2)))': + '@tailwindcss/typography@0.5.10(tailwindcss@3.4.1(ts-node@10.9.2(@types/node@22.14.1)(typescript@5.5.2)))': dependencies: lodash.castarray: 4.4.0 lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 postcss-selector-parser: 6.0.10 - tailwindcss: 3.4.1(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.5.2)) + tailwindcss: 3.4.1(ts-node@10.9.2(@types/node@22.14.1)(typescript@5.5.2)) - '@tanstack/directive-functions-plugin@1.114.12(@types/node@22.13.14)(jiti@2.4.2)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5)': + '@tanstack/directive-functions-plugin@1.114.12(@types/node@22.14.1)(jiti@2.4.2)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5)': dependencies: '@babel/code-frame': 7.26.2 '@babel/core': 7.26.10(supports-color@8.1.1) @@ -19342,7 +19667,7 @@ snapshots: babel-dead-code-elimination: 1.0.9(supports-color@8.1.1) dedent: 1.5.3 tiny-invariant: 1.3.3 - vite: 6.2.6(@types/node@22.13.14)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5) + vite: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -19401,7 +19726,7 @@ snapshots: tiny-invariant: 1.3.3 tiny-warning: 1.0.3 - '@tanstack/react-start-client@1.114.27(@electric-sql/pglite@0.2.15)(@types/node@22.13.14)(db0@0.3.1(@electric-sql/pglite@0.2.15))(encoding@0.1.13)(ioredis@5.6.0(supports-color@8.1.1))(jiti@2.4.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.5.2)(yaml@2.4.5)': + '@tanstack/react-start-client@1.114.27(@electric-sql/pglite@0.2.15)(@types/node@22.14.1)(db0@0.3.1(@electric-sql/pglite@0.2.15))(encoding@0.1.13)(ioredis@5.6.0(supports-color@8.1.1))(jiti@2.4.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.5.2)(yaml@2.4.5)': dependencies: '@tanstack/react-router': 1.114.27(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tanstack/router-core': 1.114.25 @@ -19412,7 +19737,7 @@ snapshots: react-dom: 18.3.1(react@18.3.1) tiny-invariant: 1.3.3 tiny-warning: 1.0.3 - vinxi: 0.5.3(@electric-sql/pglite@0.2.15)(@types/node@22.13.14)(db0@0.3.1(@electric-sql/pglite@0.2.15))(encoding@0.1.13)(ioredis@5.6.0(supports-color@8.1.1))(jiti@2.4.2)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.5.2)(yaml@2.4.5) + vinxi: 0.5.3(@electric-sql/pglite@0.2.15)(@types/node@22.14.1)(db0@0.3.1(@electric-sql/pglite@0.2.15))(encoding@0.1.13)(ioredis@5.6.0(supports-color@8.1.1))(jiti@2.4.2)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.5.2)(yaml@2.4.5) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -19456,22 +19781,22 @@ snapshots: - xml2js - yaml - '@tanstack/react-start-config@1.114.27(@electric-sql/pglite@0.2.15)(@tanstack/react-router@1.114.27(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/node@22.13.14)(db0@0.3.1(@electric-sql/pglite@0.2.15))(encoding@0.1.13)(ioredis@5.6.0(supports-color@8.1.1))(jiti@2.4.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.5.2)(vite@6.2.6(@types/node@22.13.14)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5))(webpack@5.94.0(esbuild@0.25.2))(yaml@2.4.5)': + '@tanstack/react-start-config@1.114.27(@electric-sql/pglite@0.2.15)(@tanstack/react-router@1.114.27(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/node@22.14.1)(db0@0.3.1(@electric-sql/pglite@0.2.15))(encoding@0.1.13)(ioredis@5.6.0(supports-color@8.1.1))(jiti@2.4.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.5.2)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5))(webpack@5.94.0(esbuild@0.25.2))(yaml@2.4.5)': dependencies: - '@tanstack/react-start-plugin': 1.114.12(@types/node@22.13.14)(jiti@2.4.2)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5) + '@tanstack/react-start-plugin': 1.114.12(@types/node@22.14.1)(jiti@2.4.2)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5) '@tanstack/router-core': 1.114.25 '@tanstack/router-generator': 1.114.27(@tanstack/react-router@1.114.27(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@tanstack/router-plugin': 1.114.27(@tanstack/react-router@1.114.27(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(supports-color@8.1.1)(vite@6.2.6(@types/node@22.13.14)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5))(webpack@5.94.0(esbuild@0.25.2)) - '@tanstack/server-functions-plugin': 1.114.12(@types/node@22.13.14)(jiti@2.4.2)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5) + '@tanstack/router-plugin': 1.114.27(@tanstack/react-router@1.114.27(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(supports-color@8.1.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5))(webpack@5.94.0(esbuild@0.25.2)) + '@tanstack/server-functions-plugin': 1.114.12(@types/node@22.14.1)(jiti@2.4.2)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5) '@tanstack/start-server-functions-handler': 1.114.25 - '@vitejs/plugin-react': 4.3.4(supports-color@8.1.1)(vite@6.2.6(@types/node@22.13.14)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5)) + '@vitejs/plugin-react': 4.3.4(supports-color@8.1.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5)) import-meta-resolve: 4.1.0 nitropack: 2.11.7(@electric-sql/pglite@0.2.15)(encoding@0.1.13)(supports-color@8.1.1)(typescript@5.5.2) ofetch: 1.4.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - vinxi: 0.5.3(@electric-sql/pglite@0.2.15)(@types/node@22.13.14)(db0@0.3.1(@electric-sql/pglite@0.2.15))(encoding@0.1.13)(ioredis@5.6.0(supports-color@8.1.1))(jiti@2.4.2)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.5.2)(yaml@2.4.5) - vite: 6.2.6(@types/node@22.13.14)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5) + vinxi: 0.5.3(@electric-sql/pglite@0.2.15)(@types/node@22.14.1)(db0@0.3.1(@electric-sql/pglite@0.2.15))(encoding@0.1.13)(ioredis@5.6.0(supports-color@8.1.1))(jiti@2.4.2)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.5.2)(yaml@2.4.5) + vite: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5) zod: 3.24.2 transitivePeerDependencies: - '@azure/app-configuration' @@ -19521,7 +19846,7 @@ snapshots: - xml2js - yaml - '@tanstack/react-start-plugin@1.114.12(@types/node@22.13.14)(jiti@2.4.2)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5)': + '@tanstack/react-start-plugin@1.114.12(@types/node@22.14.1)(jiti@2.4.2)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5)': dependencies: '@babel/code-frame': 7.26.2 '@babel/core': 7.26.10(supports-color@8.1.1) @@ -19533,7 +19858,7 @@ snapshots: '@tanstack/router-utils': 1.114.12 babel-dead-code-elimination: 1.0.9(supports-color@8.1.1) tiny-invariant: 1.3.3 - vite: 6.2.6(@types/node@22.13.14)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5) + vite: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5) transitivePeerDependencies: - '@types/node' - jiti @@ -19548,11 +19873,11 @@ snapshots: - tsx - yaml - '@tanstack/react-start-router-manifest@1.114.25(@electric-sql/pglite@0.2.15)(@types/node@22.13.14)(db0@0.3.1(@electric-sql/pglite@0.2.15))(encoding@0.1.13)(ioredis@5.6.0(supports-color@8.1.1))(jiti@2.4.2)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.5.2)(yaml@2.4.5)': + '@tanstack/react-start-router-manifest@1.114.25(@electric-sql/pglite@0.2.15)(@types/node@22.14.1)(db0@0.3.1(@electric-sql/pglite@0.2.15))(encoding@0.1.13)(ioredis@5.6.0(supports-color@8.1.1))(jiti@2.4.2)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.5.2)(yaml@2.4.5)': dependencies: '@tanstack/router-core': 1.114.25 tiny-invariant: 1.3.3 - vinxi: 0.5.3(@electric-sql/pglite@0.2.15)(@types/node@22.13.14)(db0@0.3.1(@electric-sql/pglite@0.2.15))(encoding@0.1.13)(ioredis@5.6.0(supports-color@8.1.1))(jiti@2.4.2)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.5.2)(yaml@2.4.5) + vinxi: 0.5.3(@electric-sql/pglite@0.2.15)(@types/node@22.14.1)(db0@0.3.1(@electric-sql/pglite@0.2.15))(encoding@0.1.13)(ioredis@5.6.0(supports-color@8.1.1))(jiti@2.4.2)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.5.2)(yaml@2.4.5) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -19611,20 +19936,20 @@ snapshots: tiny-warning: 1.0.3 unctx: 2.4.1 - '@tanstack/react-start@1.114.27(@electric-sql/pglite@0.2.15)(@tanstack/react-router@1.114.27(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/node@22.13.14)(db0@0.3.1(@electric-sql/pglite@0.2.15))(encoding@0.1.13)(ioredis@5.6.0(supports-color@8.1.1))(jiti@2.4.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.5.2)(vite@6.2.6(@types/node@22.13.14)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5))(webpack@5.94.0(esbuild@0.25.2))(yaml@2.4.5)': + '@tanstack/react-start@1.114.27(@electric-sql/pglite@0.2.15)(@tanstack/react-router@1.114.27(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/node@22.14.1)(db0@0.3.1(@electric-sql/pglite@0.2.15))(encoding@0.1.13)(ioredis@5.6.0(supports-color@8.1.1))(jiti@2.4.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.5.2)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5))(webpack@5.94.0(esbuild@0.25.2))(yaml@2.4.5)': dependencies: - '@tanstack/react-start-client': 1.114.27(@electric-sql/pglite@0.2.15)(@types/node@22.13.14)(db0@0.3.1(@electric-sql/pglite@0.2.15))(encoding@0.1.13)(ioredis@5.6.0(supports-color@8.1.1))(jiti@2.4.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.5.2)(yaml@2.4.5) - '@tanstack/react-start-config': 1.114.27(@electric-sql/pglite@0.2.15)(@tanstack/react-router@1.114.27(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/node@22.13.14)(db0@0.3.1(@electric-sql/pglite@0.2.15))(encoding@0.1.13)(ioredis@5.6.0(supports-color@8.1.1))(jiti@2.4.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.5.2)(vite@6.2.6(@types/node@22.13.14)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5))(webpack@5.94.0(esbuild@0.25.2))(yaml@2.4.5) - '@tanstack/react-start-router-manifest': 1.114.25(@electric-sql/pglite@0.2.15)(@types/node@22.13.14)(db0@0.3.1(@electric-sql/pglite@0.2.15))(encoding@0.1.13)(ioredis@5.6.0(supports-color@8.1.1))(jiti@2.4.2)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.5.2)(yaml@2.4.5) + '@tanstack/react-start-client': 1.114.27(@electric-sql/pglite@0.2.15)(@types/node@22.14.1)(db0@0.3.1(@electric-sql/pglite@0.2.15))(encoding@0.1.13)(ioredis@5.6.0(supports-color@8.1.1))(jiti@2.4.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.5.2)(yaml@2.4.5) + '@tanstack/react-start-config': 1.114.27(@electric-sql/pglite@0.2.15)(@tanstack/react-router@1.114.27(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/node@22.14.1)(db0@0.3.1(@electric-sql/pglite@0.2.15))(encoding@0.1.13)(ioredis@5.6.0(supports-color@8.1.1))(jiti@2.4.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.5.2)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5))(webpack@5.94.0(esbuild@0.25.2))(yaml@2.4.5) + '@tanstack/react-start-router-manifest': 1.114.25(@electric-sql/pglite@0.2.15)(@types/node@22.14.1)(db0@0.3.1(@electric-sql/pglite@0.2.15))(encoding@0.1.13)(ioredis@5.6.0(supports-color@8.1.1))(jiti@2.4.2)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.5.2)(yaml@2.4.5) '@tanstack/react-start-server': 1.114.27(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@tanstack/start-api-routes': 1.114.25(@electric-sql/pglite@0.2.15)(@types/node@22.13.14)(db0@0.3.1(@electric-sql/pglite@0.2.15))(encoding@0.1.13)(ioredis@5.6.0(supports-color@8.1.1))(jiti@2.4.2)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.5.2)(yaml@2.4.5) - '@tanstack/start-server-functions-client': 1.114.25(@types/node@22.13.14)(jiti@2.4.2)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5) + '@tanstack/start-api-routes': 1.114.25(@electric-sql/pglite@0.2.15)(@types/node@22.14.1)(db0@0.3.1(@electric-sql/pglite@0.2.15))(encoding@0.1.13)(ioredis@5.6.0(supports-color@8.1.1))(jiti@2.4.2)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.5.2)(yaml@2.4.5) + '@tanstack/start-server-functions-client': 1.114.25(@types/node@22.14.1)(jiti@2.4.2)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5) '@tanstack/start-server-functions-handler': 1.114.25 - '@tanstack/start-server-functions-server': 1.114.12(@types/node@22.13.14)(jiti@2.4.2)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5) - '@tanstack/start-server-functions-ssr': 1.114.25(@types/node@22.13.14)(jiti@2.4.2)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5) + '@tanstack/start-server-functions-server': 1.114.12(@types/node@22.14.1)(jiti@2.4.2)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5) + '@tanstack/start-server-functions-ssr': 1.114.25(@types/node@22.14.1)(jiti@2.4.2)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - vite: 6.2.6(@types/node@22.13.14)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5) + vite: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -19695,7 +20020,7 @@ snapshots: optionalDependencies: '@tanstack/react-router': 1.114.27(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@tanstack/router-plugin@1.114.27(@tanstack/react-router@1.114.27(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(supports-color@8.1.1)(vite@6.2.6(@types/node@22.13.14)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5))(webpack@5.94.0(esbuild@0.25.2))': + '@tanstack/router-plugin@1.114.27(@tanstack/react-router@1.114.27(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(supports-color@8.1.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5))(webpack@5.94.0(esbuild@0.25.2))': dependencies: '@babel/core': 7.26.10(supports-color@8.1.1) '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.10(supports-color@8.1.1)) @@ -19716,7 +20041,7 @@ snapshots: zod: 3.24.2 optionalDependencies: '@tanstack/react-router': 1.114.27(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - vite: 6.2.6(@types/node@22.13.14)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5) + vite: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5) webpack: 5.94.0(esbuild@0.25.2) transitivePeerDependencies: - supports-color @@ -19728,7 +20053,7 @@ snapshots: ansis: 3.17.0 diff: 7.0.0 - '@tanstack/server-functions-plugin@1.114.12(@types/node@22.13.14)(jiti@2.4.2)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5)': + '@tanstack/server-functions-plugin@1.114.12(@types/node@22.14.1)(jiti@2.4.2)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5)': dependencies: '@babel/code-frame': 7.26.2 '@babel/core': 7.26.10(supports-color@8.1.1) @@ -19737,7 +20062,7 @@ snapshots: '@babel/template': 7.27.0 '@babel/traverse': 7.27.0(supports-color@8.1.1) '@babel/types': 7.27.0 - '@tanstack/directive-functions-plugin': 1.114.12(@types/node@22.13.14)(jiti@2.4.2)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5) + '@tanstack/directive-functions-plugin': 1.114.12(@types/node@22.14.1)(jiti@2.4.2)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5) babel-dead-code-elimination: 1.0.9(supports-color@8.1.1) dedent: 1.5.3 tiny-invariant: 1.3.3 @@ -19756,11 +20081,11 @@ snapshots: - tsx - yaml - '@tanstack/start-api-routes@1.114.25(@electric-sql/pglite@0.2.15)(@types/node@22.13.14)(db0@0.3.1(@electric-sql/pglite@0.2.15))(encoding@0.1.13)(ioredis@5.6.0(supports-color@8.1.1))(jiti@2.4.2)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.5.2)(yaml@2.4.5)': + '@tanstack/start-api-routes@1.114.25(@electric-sql/pglite@0.2.15)(@types/node@22.14.1)(db0@0.3.1(@electric-sql/pglite@0.2.15))(encoding@0.1.13)(ioredis@5.6.0(supports-color@8.1.1))(jiti@2.4.2)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.5.2)(yaml@2.4.5)': dependencies: '@tanstack/router-core': 1.114.25 '@tanstack/start-server-core': 1.114.25 - vinxi: 0.5.3(@electric-sql/pglite@0.2.15)(@types/node@22.13.14)(db0@0.3.1(@electric-sql/pglite@0.2.15))(encoding@0.1.13)(ioredis@5.6.0(supports-color@8.1.1))(jiti@2.4.2)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.5.2)(yaml@2.4.5) + vinxi: 0.5.3(@electric-sql/pglite@0.2.15)(@types/node@22.14.1)(db0@0.3.1(@electric-sql/pglite@0.2.15))(encoding@0.1.13)(ioredis@5.6.0(supports-color@8.1.1))(jiti@2.4.2)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.5.2)(yaml@2.4.5) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -19822,9 +20147,9 @@ snapshots: tiny-warning: 1.0.3 unctx: 2.4.1 - '@tanstack/start-server-functions-client@1.114.25(@types/node@22.13.14)(jiti@2.4.2)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5)': + '@tanstack/start-server-functions-client@1.114.25(@types/node@22.14.1)(jiti@2.4.2)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5)': dependencies: - '@tanstack/server-functions-plugin': 1.114.12(@types/node@22.13.14)(jiti@2.4.2)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5) + '@tanstack/server-functions-plugin': 1.114.12(@types/node@22.14.1)(jiti@2.4.2)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5) '@tanstack/start-server-functions-fetcher': 1.114.25 transitivePeerDependencies: - '@types/node' @@ -19853,9 +20178,9 @@ snapshots: '@tanstack/start-server-core': 1.114.25 tiny-invariant: 1.3.3 - '@tanstack/start-server-functions-server@1.114.12(@types/node@22.13.14)(jiti@2.4.2)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5)': + '@tanstack/start-server-functions-server@1.114.12(@types/node@22.14.1)(jiti@2.4.2)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5)': dependencies: - '@tanstack/server-functions-plugin': 1.114.12(@types/node@22.13.14)(jiti@2.4.2)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5) + '@tanstack/server-functions-plugin': 1.114.12(@types/node@22.14.1)(jiti@2.4.2)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5) tiny-invariant: 1.3.3 transitivePeerDependencies: - '@types/node' @@ -19872,9 +20197,9 @@ snapshots: - tsx - yaml - '@tanstack/start-server-functions-ssr@1.114.25(@types/node@22.13.14)(jiti@2.4.2)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5)': + '@tanstack/start-server-functions-ssr@1.114.25(@types/node@22.14.1)(jiti@2.4.2)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5)': dependencies: - '@tanstack/server-functions-plugin': 1.114.12(@types/node@22.13.14)(jiti@2.4.2)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5) + '@tanstack/server-functions-plugin': 1.114.12(@types/node@22.14.1)(jiti@2.4.2)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5) '@tanstack/start-client-core': 1.114.25 '@tanstack/start-server-core': 1.114.25 '@tanstack/start-server-functions-fetcher': 1.114.25 @@ -20286,6 +20611,10 @@ snapshots: dependencies: undici-types: 6.20.0 + '@types/node@22.14.1': + dependencies: + undici-types: 6.21.0 + '@types/papaparse@5.3.9': dependencies: '@types/node': 22.13.14 @@ -20493,7 +20822,7 @@ snapshots: '@ungap/structured-clone@1.2.0': {} - '@vercel/flags@2.6.0(next@14.2.26(@babel/core@7.26.10(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.49.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.72.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@vercel/flags@2.6.0(next@14.2.26(@opentelemetry/api@1.9.0)(@playwright/test@1.49.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.72.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: jose: 5.2.1 optionalDependencies: @@ -20557,18 +20886,18 @@ snapshots: transitivePeerDependencies: - supports-color - '@vitejs/plugin-react@4.3.4(supports-color@8.1.1)(vite@6.2.6(@types/node@22.13.14)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5))': + '@vitejs/plugin-react@4.3.4(supports-color@8.1.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5))': dependencies: '@babel/core': 7.26.10(supports-color@8.1.1) '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.10(supports-color@8.1.1)) '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.10(supports-color@8.1.1)) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 6.2.6(@types/node@22.13.14)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5) + vite: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5) transitivePeerDependencies: - supports-color - '@vitest/coverage-v8@3.0.9(supports-color@8.1.1)(vitest@3.0.9(@types/node@22.13.14)(jiti@2.4.2)(jsdom@20.0.3(supports-color@8.1.1))(msw@2.7.3(@types/node@22.13.14)(typescript@5.5.2))(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5))': + '@vitest/coverage-v8@3.0.9(supports-color@8.1.1)(vitest@3.0.9(@types/node@22.14.1)(jiti@2.4.2)(jsdom@20.0.3(supports-color@8.1.1))(msw@2.7.3(@types/node@22.14.1)(typescript@5.5.2))(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 1.0.2 @@ -20582,7 +20911,7 @@ snapshots: std-env: 3.8.1 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.0.9(@types/node@22.13.14)(jiti@2.4.2)(jsdom@20.0.3(supports-color@8.1.1))(msw@2.7.3(@types/node@22.13.14)(typescript@5.5.2))(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5) + vitest: 3.0.9(@types/node@22.14.1)(jiti@2.4.2)(jsdom@20.0.3(supports-color@8.1.1))(msw@2.7.3(@types/node@22.14.1)(typescript@5.5.2))(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5) transitivePeerDependencies: - supports-color @@ -20611,14 +20940,14 @@ snapshots: msw: 2.7.3(@types/node@20.12.11)(typescript@5.5.2) vite: 6.2.6(@types/node@20.12.11)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5) - '@vitest/mocker@3.0.9(msw@2.7.3(@types/node@22.13.14)(typescript@5.5.2))(vite@6.2.6(@types/node@22.13.14)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5))': + '@vitest/mocker@3.0.9(msw@2.7.3(@types/node@22.14.1)(typescript@5.5.2))(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5))': dependencies: '@vitest/spy': 3.0.9 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - msw: 2.7.3(@types/node@22.13.14)(typescript@5.5.2) - vite: 6.2.6(@types/node@22.13.14)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5) + msw: 2.7.3(@types/node@22.14.1)(typescript@5.5.2) + vite: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5) '@vitest/pretty-format@3.0.4': dependencies: @@ -20821,6 +21150,11 @@ snapshots: abstract-logging@2.0.1: {} + accepts@2.0.0: + dependencies: + mime-types: 3.0.1 + negotiator: 1.0.0 + acorn-globals@7.0.1: dependencies: acorn: 8.14.1 @@ -21284,6 +21618,20 @@ snapshots: inherits: 2.0.4 readable-stream: 3.6.2 + body-parser@2.2.0(supports-color@8.1.1): + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 4.4.0(supports-color@8.1.1) + http-errors: 2.0.0 + iconv-lite: 0.6.3 + on-finished: 2.4.1 + qs: 6.14.0 + raw-body: 3.0.0 + type-is: 2.0.1 + transitivePeerDependencies: + - supports-color + boolbase@1.0.0: {} bowser@2.11.0: {} @@ -21345,6 +21693,8 @@ snapshots: dependencies: streamsearch: 1.1.0 + bytes@3.1.2: {} + c12@3.0.2(magicast@0.3.5): dependencies: chokidar: 4.0.3 @@ -21415,6 +21765,11 @@ snapshots: get-intrinsic: 1.2.4 set-function-length: 1.2.2 + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + call-me-maybe@1.0.2: {} callsites@3.1.0: {} @@ -21645,7 +22000,7 @@ snapshots: code-red@1.0.4: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 - '@types/estree': 1.0.5 + '@types/estree': 1.0.7 acorn: 8.14.1 estree-walker: 3.0.3 periscopic: 3.1.0 @@ -21792,6 +22147,12 @@ snapshots: tslib: 2.8.1 upper-case: 2.0.2 + content-disposition@1.0.0: + dependencies: + safe-buffer: 5.2.1 + + content-type@1.0.5: {} + contentlayer2@0.4.6(esbuild@0.25.2)(markdown-wasm@1.2.0)(supports-color@8.1.1): dependencies: '@contentlayer2/cli': 0.4.3(esbuild@0.25.2)(markdown-wasm@1.2.0)(supports-color@8.1.1) @@ -21826,6 +22187,8 @@ snapshots: cookie-es@2.0.0: {} + cookie-signature@1.2.2: {} + cookie@0.7.2: {} cookie@1.0.2: {} @@ -21844,6 +22207,11 @@ snapshots: core-util-is@1.0.3: {} + cors@2.8.5: + dependencies: + object-assign: 4.1.1 + vary: 1.1.2 + cosmiconfig@8.3.6(typescript@5.5.2): dependencies: import-fresh: 3.3.0 @@ -22339,6 +22707,9 @@ snapshots: entities@4.5.0: {} + entities@6.0.0: + optional: true + env-paths@2.2.1: {} err-code@2.0.3: {} @@ -22429,6 +22800,8 @@ snapshots: es-module-lexer@1.6.0: {} + es-module-lexer@1.7.0: {} + es-object-atoms@1.0.0: dependencies: es-errors: 1.3.0 @@ -22921,6 +23294,12 @@ snapshots: eventsource-parser@1.1.2: {} + eventsource-parser@3.0.1: {} + + eventsource@3.0.6: + dependencies: + eventsource-parser: 3.0.1 + execa@7.2.0: dependencies: cross-spawn: 7.0.6 @@ -22955,6 +23334,42 @@ snapshots: exponential-backoff@3.1.1: {} + express-rate-limit@7.5.0(express@5.1.0(supports-color@8.1.1)): + dependencies: + express: 5.1.0(supports-color@8.1.1) + + express@5.1.0(supports-color@8.1.1): + dependencies: + accepts: 2.0.0 + body-parser: 2.2.0(supports-color@8.1.1) + content-disposition: 1.0.0 + content-type: 1.0.5 + cookie: 0.7.2 + cookie-signature: 1.2.2 + debug: 4.4.0(supports-color@8.1.1) + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 2.1.0(supports-color@8.1.1) + fresh: 2.0.0 + http-errors: 2.0.0 + merge-descriptors: 2.0.0 + mime-types: 3.0.1 + on-finished: 2.4.1 + once: 1.4.0 + parseurl: 1.3.3 + proxy-addr: 2.0.7 + qs: 6.14.0 + range-parser: 1.2.1 + router: 2.2.0(supports-color@8.1.1) + send: 1.2.0(supports-color@8.1.1) + serve-static: 2.2.0(supports-color@8.1.1) + statuses: 2.0.1 + type-is: 2.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + exsolve@1.0.4: {} ext@1.7.0: @@ -23119,6 +23534,17 @@ snapshots: dependencies: to-regex-range: 5.0.1 + finalhandler@2.1.0(supports-color@8.1.1): + dependencies: + debug: 4.4.0(supports-color@8.1.1) + encodeurl: 2.0.0 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + find-my-way@8.2.2: dependencies: fast-deep-equal: 3.1.3 @@ -23224,6 +23650,8 @@ snapshots: fresh@0.5.2: {} + fresh@2.0.0: {} + fs-extra@10.1.0: dependencies: graceful-fs: 4.2.11 @@ -23316,6 +23744,19 @@ snapshots: hasown: 2.0.2 math-intrinsics: 1.1.0 + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + get-nonce@1.0.1: {} get-own-enumerable-keys@1.0.0: {} @@ -23970,7 +24411,6 @@ snapshots: iconv-lite@0.6.3: dependencies: safer-buffer: 2.1.2 - optional: true idb@8.0.2: {} @@ -24209,6 +24649,8 @@ snapshots: is-primitive@3.0.1: {} + is-promise@4.0.0: {} + is-reference@1.2.1: dependencies: '@types/estree': 1.0.5 @@ -24361,7 +24803,7 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 22.13.14 + '@types/node': 22.14.1 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -24428,7 +24870,7 @@ snapshots: https-proxy-agent: 5.0.1(supports-color@8.1.1) is-potential-custom-element-name: 1.0.1 nwsapi: 2.2.20 - parse5: 7.2.1 + parse5: 7.3.0 saxes: 6.0.0 symbol-tree: 3.2.4 tough-cookie: 4.1.4 @@ -24556,6 +24998,10 @@ snapshots: dependencies: language-subtag-registry: 0.3.23 + latest@0.2.0: + dependencies: + npm: 2.15.12 + lazy-cache@2.0.2: dependencies: set-getter: 0.1.1 @@ -24851,6 +25297,10 @@ snapshots: markdown-table@3.0.3: {} + markdown-to-jsx@7.7.6(react@18.3.1): + dependencies: + react: 18.3.1 + markdown-toc@1.2.0: dependencies: concat-stream: 1.6.2 @@ -25245,6 +25695,8 @@ snapshots: transitivePeerDependencies: - supports-color + media-typer@1.1.0: {} + memfs@4.14.1: dependencies: '@jsonjoy.com/json-pack': 1.0.4(tslib@2.8.1) @@ -25256,6 +25708,8 @@ snapshots: memorystream@0.3.1: {} + merge-descriptors@2.0.0: {} + merge-stream@2.0.0: {} merge2@1.4.1: {} @@ -25820,10 +26274,16 @@ snapshots: mime-db@1.53.0: {} + mime-db@1.54.0: {} + mime-types@2.1.35: dependencies: mime-db: 1.52.0 + mime-types@3.0.1: + dependencies: + mime-db: 1.54.0 + mime@1.6.0: {} mime@3.0.0: {} @@ -26036,12 +26496,12 @@ snapshots: - '@types/node' optional: true - msw@2.7.3(@types/node@22.13.14)(typescript@5.5.2): + msw@2.7.3(@types/node@22.14.1)(typescript@5.5.2): dependencies: '@bundled-es-modules/cookie': 2.0.1 '@bundled-es-modules/statuses': 1.0.1 '@bundled-es-modules/tough-cookie': 0.1.6 - '@inquirer/confirm': 5.1.8(@types/node@22.13.14) + '@inquirer/confirm': 5.1.8(@types/node@22.14.1) '@mswjs/interceptors': 0.37.6 '@open-draft/deferred-promise': 2.2.0 '@open-draft/until': 2.1.0 @@ -26087,6 +26547,8 @@ snapshots: stacktrace-js: 2.0.2 stylis: 4.3.1 + nanoid@3.3.11: {} + nanoid@3.3.8: {} natural-compare@1.4.0: {} @@ -26100,6 +26562,8 @@ snapshots: negotiator@0.6.3: {} + negotiator@1.0.0: {} + neo-async@2.6.2: {} next-contentlayer2@0.4.6(contentlayer2@0.4.6(esbuild@0.25.2)(markdown-wasm@1.2.0)(supports-color@8.1.1))(esbuild@0.25.2)(markdown-wasm@1.2.0)(next@14.2.26(@babel/core@7.26.10(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.49.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.72.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(supports-color@8.1.1): @@ -26145,7 +26609,7 @@ snapshots: dependencies: js-yaml-loader: 1.2.2 - next-router-mock@0.9.13(next@14.2.26(@babel/core@7.26.10(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.49.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.72.0))(react@18.3.1): + next-router-mock@0.9.13(next@14.2.26(@opentelemetry/api@1.9.0)(@playwright/test@1.49.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.72.0))(react@18.3.1): dependencies: next: 14.2.26(@babel/core@7.26.10(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.49.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.72.0) react: 18.3.1 @@ -26448,6 +26912,8 @@ snapshots: dependencies: path-key: 4.0.0 + npm@2.15.12: {} + npmlog@5.0.1: dependencies: are-we-there-yet: 2.0.0 @@ -26531,6 +26997,8 @@ snapshots: object-inspect@1.13.1: {} + object-inspect@1.13.4: {} + object-keys@1.1.1: {} object.assign@4.1.5: @@ -26649,6 +27117,10 @@ snapshots: dependencies: openapi-typescript-helpers: 0.0.14 + openapi-fetch@0.13.5: + dependencies: + openapi-typescript-helpers: 0.0.15 + openapi-sampler@1.6.1: dependencies: '@types/json-schema': 7.0.15 @@ -26661,6 +27133,8 @@ snapshots: openapi-typescript-helpers@0.0.14: {} + openapi-typescript-helpers@0.0.15: {} + openapi-typescript@7.5.2(encoding@0.1.13)(typescript@5.5.2): dependencies: '@redocly/openapi-core': 1.27.2(encoding@0.1.13)(supports-color@9.4.0) @@ -26795,9 +27269,9 @@ snapshots: dependencies: entities: 4.5.0 - parse5@7.2.1: + parse5@7.3.0: dependencies: - entities: 4.5.0 + entities: 6.0.0 optional: true parseurl@1.3.3: {} @@ -27018,6 +27492,8 @@ snapshots: pirates@4.0.6: {} + pkce-challenge@5.0.0: {} + pkg-types@1.3.1: dependencies: confbox: 0.1.8 @@ -27073,13 +27549,13 @@ snapshots: postcss: 8.4.38 ts-node: 10.9.2(@types/node@20.12.11)(typescript@5.5.2) - postcss-load-config@4.0.1(postcss@8.4.38)(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.5.2)): + postcss-load-config@4.0.1(postcss@8.4.38)(ts-node@10.9.2(@types/node@22.14.1)(typescript@5.5.2)): dependencies: lilconfig: 2.1.0 yaml: 2.4.5 optionalDependencies: postcss: 8.4.38 - ts-node: 10.9.2(@types/node@22.13.14)(typescript@5.5.2) + ts-node: 10.9.2(@types/node@22.14.1)(typescript@5.5.2) postcss-nested@6.0.1(postcss@8.4.38): dependencies: @@ -27275,6 +27751,10 @@ snapshots: punycode@2.3.1: optional: true + qs@6.14.0: + dependencies: + side-channel: 1.1.0 + quansync@0.2.10: {} querystringify@2.2.0: {} @@ -27311,6 +27791,13 @@ snapshots: range-parser@1.2.1: {} + raw-body@3.0.0: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.6.3 + unpipe: 1.0.0 + rc9@2.1.2: dependencies: defu: 6.1.4 @@ -28201,6 +28688,16 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.38.0 fsevents: 2.3.3 + router@2.2.0(supports-color@8.1.1): + dependencies: + debug: 4.4.0(supports-color@8.1.1) + depd: 2.0.0 + is-promise: 4.0.0 + parseurl: 1.3.3 + path-to-regexp: 8.1.0 + transitivePeerDependencies: + - supports-color + rtl-css-js@1.16.1: dependencies: '@babel/runtime': 7.26.10 @@ -28242,8 +28739,7 @@ snapshots: safe-stable-stringify@2.5.0: {} - safer-buffer@2.1.2: - optional: true + safer-buffer@2.1.2: {} sass@1.72.0: dependencies: @@ -28279,7 +28775,7 @@ snapshots: ajv: 6.12.6 ajv-keywords: 3.5.2(ajv@6.12.6) - schema-utils@4.3.0: + schema-utils@4.3.2: dependencies: '@types/json-schema': 7.0.15 ajv: 8.17.1 @@ -28327,6 +28823,22 @@ snapshots: transitivePeerDependencies: - supports-color + send@1.2.0(supports-color@8.1.1): + dependencies: + debug: 4.4.0(supports-color@8.1.1) + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 2.0.0 + http-errors: 2.0.0 + mime-types: 3.0.1 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + sentence-case@3.0.4: dependencies: no-case: 3.0.4 @@ -28350,6 +28862,15 @@ snapshots: transitivePeerDependencies: - supports-color + serve-static@2.2.0(supports-color@8.1.1): + dependencies: + encodeurl: 2.0.0 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 1.2.0(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + server-only@0.0.1: {} set-blocking@2.0.0: {} @@ -28385,7 +28906,7 @@ snapshots: setprototypeof@1.2.0: {} - shadcn@2.4.0-canary.16(@types/node@22.13.14)(supports-color@8.1.1)(typescript@5.5.2): + shadcn@2.4.0-canary.16(@types/node@22.14.1)(supports-color@8.1.1)(typescript@5.5.2): dependencies: '@antfu/ni': 23.3.1 '@babel/core': 7.26.10(supports-color@8.1.1) @@ -28400,7 +28921,7 @@ snapshots: fs-extra: 11.3.0 https-proxy-agent: 6.2.1(supports-color@8.1.1) kleur: 4.1.5 - msw: 2.7.3(@types/node@22.13.14)(typescript@5.5.2) + msw: 2.7.3(@types/node@22.14.1)(typescript@5.5.2) node-fetch: 3.3.2 ora: 6.3.1 postcss: 8.5.3 @@ -28474,6 +28995,26 @@ snapshots: should-type-adaptors: 1.1.0 should-util: 1.0.1 + side-channel-list@1.0.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.2.7 + object-inspect: 1.13.4 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.2.7 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 + side-channel@1.0.6: dependencies: call-bind: 1.0.7 @@ -28481,6 +29022,14 @@ snapshots: get-intrinsic: 1.2.4 object-inspect: 1.13.1 + side-channel@1.1.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.0 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + siginfo@2.0.0: {} signal-exit@3.0.7: {} @@ -28929,7 +29478,7 @@ snapshots: '@ampproject/remapping': 2.3.0 '@jridgewell/sourcemap-codec': 1.5.0 '@jridgewell/trace-mapping': 0.3.25 - '@types/estree': 1.0.5 + '@types/estree': 1.0.7 acorn: 8.14.1 aria-query: 5.3.2 axobject-query: 4.1.0 @@ -28970,6 +29519,12 @@ snapshots: react: 18.3.1 use-sync-external-store: 1.4.0(react@18.3.1) + swr@2.3.3(react@18.3.1): + dependencies: + dequal: 2.0.3 + react: 18.3.1 + use-sync-external-store: 1.5.0(react@18.3.1) + swrev@4.0.0: {} swrv@1.0.4(vue@3.5.13(typescript@5.5.2)): @@ -28983,9 +29538,9 @@ snapshots: tailwind-merge@1.14.0: {} - tailwindcss-animate@1.0.7(tailwindcss@3.4.1(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.5.2))): + tailwindcss-animate@1.0.7(tailwindcss@3.4.1(ts-node@10.9.2(@types/node@22.14.1)(typescript@5.5.2))): dependencies: - tailwindcss: 3.4.1(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.5.2)) + tailwindcss: 3.4.1(ts-node@10.9.2(@types/node@22.14.1)(typescript@5.5.2)) tailwindcss-radix@2.8.0: {} @@ -29016,7 +29571,7 @@ snapshots: transitivePeerDependencies: - ts-node - tailwindcss@3.4.1(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.5.2)): + tailwindcss@3.4.1(ts-node@10.9.2(@types/node@22.14.1)(typescript@5.5.2)): dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -29035,7 +29590,7 @@ snapshots: postcss: 8.4.38 postcss-import: 15.1.0(postcss@8.4.38) postcss-js: 4.0.1(postcss@8.4.38) - postcss-load-config: 4.0.1(postcss@8.4.38)(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.5.2)) + postcss-load-config: 4.0.1(postcss@8.4.38)(ts-node@10.9.2(@types/node@22.14.1)(typescript@5.5.2)) postcss-nested: 6.0.1(postcss@8.4.38) postcss-selector-parser: 6.0.13 resolve: 1.22.8 @@ -29077,7 +29632,7 @@ snapshots: dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 - schema-utils: 4.3.0 + schema-utils: 4.3.2 serialize-javascript: 6.0.2 terser: 5.39.0 webpack: 5.94.0(esbuild@0.25.2) @@ -29089,7 +29644,7 @@ snapshots: dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 - schema-utils: 4.3.0 + schema-utils: 4.3.2 serialize-javascript: 6.0.2 terser: 5.39.0 webpack: 5.94.0 @@ -29272,14 +29827,14 @@ snapshots: yn: 3.1.1 optional: true - ts-node@10.9.2(@types/node@22.13.14)(typescript@5.5.2): + ts-node@10.9.2(@types/node@22.14.1)(typescript@5.5.2): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 22.13.14 + '@types/node': 22.14.1 acorn: 8.14.1 acorn-walk: 8.3.4 arg: 4.1.3 @@ -29392,6 +29947,12 @@ snapshots: type-fest@4.30.0: {} + type-is@2.0.1: + dependencies: + content-type: 1.0.5 + media-typer: 1.1.0 + mime-types: 3.0.1 + type@2.7.3: {} typed-array-buffer@1.0.2: @@ -29463,6 +30024,8 @@ snapshots: undici-types@6.20.0: {} + undici-types@6.21.0: {} + undici@6.21.2: {} unenv@1.10.0: @@ -29638,6 +30201,8 @@ snapshots: universalify@2.0.0: {} + unpipe@1.0.0: {} + unplugin-utils@0.2.4: dependencies: pathe: 2.0.3 @@ -29763,6 +30328,10 @@ snapshots: dependencies: react: 18.3.1 + use-sync-external-store@1.5.0(react@18.3.1): + dependencies: + react: 18.3.1 + util-deprecate@1.0.2: {} uuid@7.0.3: {} @@ -29803,6 +30372,8 @@ snapshots: vanilla-tilt@1.7.0: {} + vary@1.1.2: {} + vaul@0.9.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: '@radix-ui/react-dialog': 1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -29880,7 +30451,7 @@ snapshots: d3-time: 3.1.0 d3-timer: 3.0.1 - vinxi@0.5.3(@electric-sql/pglite@0.2.15)(@types/node@22.13.14)(db0@0.3.1(@electric-sql/pglite@0.2.15))(encoding@0.1.13)(ioredis@5.6.0(supports-color@8.1.1))(jiti@2.4.2)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.5.2)(yaml@2.4.5): + vinxi@0.5.3(@electric-sql/pglite@0.2.15)(@types/node@22.14.1)(db0@0.3.1(@electric-sql/pglite@0.2.15))(encoding@0.1.13)(ioredis@5.6.0(supports-color@8.1.1))(jiti@2.4.2)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.5.2)(yaml@2.4.5): dependencies: '@babel/core': 7.26.10(supports-color@8.1.1) '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.10(supports-color@8.1.1)) @@ -29914,7 +30485,7 @@ snapshots: unctx: 2.4.1 unenv: 1.10.0 unstorage: 1.15.0(db0@0.3.1(@electric-sql/pglite@0.2.15))(ioredis@5.6.0(supports-color@8.1.1)) - vite: 6.2.6(@types/node@22.13.14)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5) + vite: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5) zod: 3.23.8 transitivePeerDependencies: - '@azure/app-configuration' @@ -29959,13 +30530,13 @@ snapshots: - xml2js - yaml - vite-node@3.0.0-beta.2(@types/node@22.13.14)(jiti@2.4.2)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5): + vite-node@3.0.0-beta.2(@types/node@22.14.1)(jiti@2.4.2)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5): dependencies: cac: 6.7.14 debug: 4.4.0(supports-color@8.1.1) es-module-lexer: 1.6.0 pathe: 1.1.2 - vite: 6.2.6(@types/node@22.13.14)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5) + vite: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5) transitivePeerDependencies: - '@types/node' - jiti @@ -30001,13 +30572,13 @@ snapshots: - tsx - yaml - vite-node@3.0.9(@types/node@22.13.14)(jiti@2.4.2)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5): + vite-node@3.0.9(@types/node@22.14.1)(jiti@2.4.2)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5): dependencies: cac: 6.7.14 debug: 4.4.0(supports-color@8.1.1) es-module-lexer: 1.6.0 pathe: 2.0.3 - vite: 6.2.6(@types/node@22.13.14)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5) + vite: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5) transitivePeerDependencies: - '@types/node' - jiti @@ -30047,13 +30618,13 @@ snapshots: tsx: 4.19.3 yaml: 2.4.5 - vite@6.2.6(@types/node@22.13.14)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5): + vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5): dependencies: esbuild: 0.25.2 postcss: 8.5.3 rollup: 4.38.0 optionalDependencies: - '@types/node': 22.13.14 + '@types/node': 22.14.1 fsevents: 2.3.3 jiti: 2.4.2 sass: 1.72.0 @@ -30140,10 +30711,10 @@ snapshots: - tsx - yaml - vitest@3.0.9(@types/node@22.13.14)(jiti@2.4.2)(jsdom@20.0.3(supports-color@8.1.1))(msw@2.7.3(@types/node@22.13.14)(typescript@5.5.2))(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5): + vitest@3.0.9(@types/node@22.14.1)(jiti@2.4.2)(jsdom@20.0.3(supports-color@8.1.1))(msw@2.7.3(@types/node@22.14.1)(typescript@5.5.2))(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5): dependencies: '@vitest/expect': 3.0.9 - '@vitest/mocker': 3.0.9(msw@2.7.3(@types/node@22.13.14)(typescript@5.5.2))(vite@6.2.6(@types/node@22.13.14)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5)) + '@vitest/mocker': 3.0.9(msw@2.7.3(@types/node@22.14.1)(typescript@5.5.2))(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5)) '@vitest/pretty-format': 3.0.9 '@vitest/runner': 3.0.9 '@vitest/snapshot': 3.0.9 @@ -30159,11 +30730,11 @@ snapshots: tinyexec: 0.3.2 tinypool: 1.0.2 tinyrainbow: 2.0.0 - vite: 6.2.6(@types/node@22.13.14)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5) - vite-node: 3.0.9(@types/node@22.13.14)(jiti@2.4.2)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5) + vite: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(sass@1.72.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5) + vite-node: 3.0.9(@types/node@22.14.1)(jiti@2.4.2)(sass@1.72.0)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 22.13.14 + '@types/node': 22.14.1 jsdom: 20.0.3(supports-color@8.1.1) transitivePeerDependencies: - jiti @@ -30249,7 +30820,7 @@ snapshots: webpack@5.94.0: dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.7 '@webassemblyjs/ast': 1.14.1 '@webassemblyjs/wasm-edit': 1.14.1 '@webassemblyjs/wasm-parser': 1.14.1 @@ -30258,7 +30829,7 @@ snapshots: browserslist: 4.24.4 chrome-trace-event: 1.0.4 enhanced-resolve: 5.18.1 - es-module-lexer: 1.6.0 + es-module-lexer: 1.7.0 eslint-scope: 5.1.1 events: 3.3.0 glob-to-regexp: 0.4.1 @@ -30279,7 +30850,7 @@ snapshots: webpack@5.94.0(esbuild@0.25.2): dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.7 '@webassemblyjs/ast': 1.14.1 '@webassemblyjs/wasm-edit': 1.14.1 '@webassemblyjs/wasm-parser': 1.14.1 @@ -30288,7 +30859,7 @@ snapshots: browserslist: 4.24.4 chrome-trace-event: 1.0.4 enhanced-resolve: 5.18.1 - es-module-lexer: 1.6.0 + es-module-lexer: 1.7.0 eslint-scope: 5.1.1 events: 3.3.0 glob-to-regexp: 0.4.1 @@ -30524,6 +31095,10 @@ snapshots: dependencies: zod: 3.23.8 + zod-to-json-schema@3.24.5(zod@3.24.2): + dependencies: + zod: 3.24.2 + zod@3.23.8: {} zod@3.24.2: {}