diff --git a/packages/server/nitro.config.ts b/packages/server/nitro.config.ts index 3418ce0..4056823 100644 --- a/packages/server/nitro.config.ts +++ b/packages/server/nitro.config.ts @@ -1,5 +1,13 @@ // https://nitro.unjs.io/config export default defineNitroConfig({ srcDir: 'server', - compatibilityDate: '2025-07-24', + compatibilityDate: '2025-07-25', + storage: { + redis: { + driver: 'memory', + }, + }, + experimental: { + wasm: true, + }, }) diff --git a/packages/server/package.json b/packages/server/package.json index 00376b9..b7a550c 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -6,6 +6,9 @@ "prepare": "nitro prepare", "preview": "node .output/server/index.mjs" }, + "dependencies": { + "@llamakit/core": "workspace:*" + }, "devDependencies": { "nitropack": "latest" } diff --git a/packages/server/server/api/client/[client]/completions/index.post.ts b/packages/server/server/api/client/[client]/completions/index.post.ts new file mode 100644 index 0000000..757396b --- /dev/null +++ b/packages/server/server/api/client/[client]/completions/index.post.ts @@ -0,0 +1,141 @@ +import type { ChatCompletionResponse, ChatRequestBody } from '@llamakit/core' +import type { ClientData } from '../../../../types/api' +import { createChatTransformer } from '@llamakit/core' + +export default defineEventHandler(async (event): Promise => { + const clientId = getRouterParam(event, 'client') + const body = await readBody(event) + + if (!clientId) { + throw createError({ + statusCode: 400, + statusMessage: 'Client ID is required', + }) + } + + const storage = useStorage('redis') + + try { + // 获取client配置 + const clientData = await storage.getItem(`client:${clientId}`) + if (!clientData) { + throw createError({ + statusCode: 404, + statusMessage: 'Client not found', + }) + } + + // 创建ChatTransformer + const transformer = createChatTransformer({ + apiKey: clientData.apiKey, + baseUrl: clientData.baseUrl, + }) + + const startTimestamp = new Date() + const [result, resolve] = transformer(body, { timestamp: startTimestamp }) + + // 生成唯一的日志ID + const logId = `${Date.now()}-${Math.random().toString(36).slice(2, 11)}` + + // 将初始结果写入本地KV Storage + const logs = await storage.getItem(`client:${clientId}:logs`) || [] + const logEntry = { + id: logId, + ...result, + requestInfo: { + url: `${clientData.baseUrl}/v1/chat/completions`, + method: 'POST', + headers: { + 'Authorization': `Bearer ${clientData.apiKey}`, + 'Content-Type': 'application/json', + }, + body: JSON.stringify(body), + timestamp: startTimestamp.toISOString(), + }, + } + + logs.unshift(logEntry) // 最新的放在前面 + await storage.setItem(`client:${clientId}:logs`, logs) + + try { + // 转发用户请求到AI服务器 + const response = await $fetch(`${clientData.baseUrl}/v1/chat/completions`, { + method: 'POST', + headers: { + 'Authorization': `Bearer ${clientData.apiKey}`, + 'Content-Type': 'application/json', + }, + body, + }) + + // 处理返回结果(异步写入) + const endTimestamp = new Date() + const finalResult = resolve(response, { timestamp: endTimestamp }) + + // 更新日志条目 + const updatedLogs = await storage.getItem(`client:${clientId}:logs`) || [] + const logIndex = updatedLogs.findIndex(log => log.id === logId) + if (logIndex !== -1) { + updatedLogs[logIndex] = { + ...updatedLogs[logIndex], + ...finalResult, + responseInfo: { + status: 200, + headers: {}, + body: JSON.stringify(response), + timestamp: endTimestamp.toISOString(), + duration: endTimestamp.getTime() - startTimestamp.getTime(), + }, + } + + // 异步更新存储,不阻塞响应 + storage.setItem(`client:${clientId}:logs`, updatedLogs).catch(console.error) + } + + return response + } + catch (error: any) { + // 处理错误情况 + const endTimestamp = new Date() + const errorResult = { + ...result, + status: 'error' as const, + error: error.message || 'Unknown error', + lastAt: endTimestamp, + timeUsage: endTimestamp.getTime() - startTimestamp.getTime(), + } + + // 更新错误日志 + const updatedLogs = await storage.getItem(`client:${clientId}:logs`) || [] + const logIndex = updatedLogs.findIndex(log => log.id === logId) + if (logIndex !== -1) { + updatedLogs[logIndex] = { + ...updatedLogs[logIndex], + ...errorResult, + responseInfo: { + status: error.status || 500, + error: error.message, + timestamp: endTimestamp.toISOString(), + duration: endTimestamp.getTime() - startTimestamp.getTime(), + }, + } + + // 异步更新存储 + storage.setItem(`client:${clientId}:logs`, updatedLogs).catch(console.error) + } + + throw error + } + } + catch (error: any) { + // 处理外层错误(如客户端不存在等) + if (error.statusCode) { + throw error + } + + throw createError({ + statusCode: 500, + statusMessage: 'Internal server error', + }) + } +}) diff --git a/packages/server/server/api/client/[id].delete.ts b/packages/server/server/api/client/[id].delete.ts new file mode 100644 index 0000000..08130f1 --- /dev/null +++ b/packages/server/server/api/client/[id].delete.ts @@ -0,0 +1,54 @@ +import type { RemoveClientResponse } from '../../types/api' + +export default defineEventHandler(async (event): Promise => { + const clientId = getRouterParam(event, 'id') + + if (!clientId) { + throw createError({ + statusCode: 400, + statusMessage: 'Client ID is required', + }) + } + + const storage = useStorage('redis') + + try { + // 检查client是否存在 + const clientData = await storage.getItem(`client:${clientId}`) + if (!clientData) { + throw createError({ + statusCode: 404, + statusMessage: 'Client not found', + }) + } + + // 事务性删除:先删除相关数据,再删除客户端 + // 清理相关的日志数据 + await storage.removeItem(`client:${clientId}:logs`) + + // 从client列表中移除 + const clientList = await storage.getItem('client:list') || [] + const updatedList = clientList.filter(id => id !== clientId) + await storage.setItem('client:list', updatedList) + + // 最后删除client数据 + await storage.removeItem(`client:${clientId}`) + + return { + success: true, + message: 'Client removed successfully', + } + } + catch (error: any) { + // 如果是已知错误,直接抛出 + if (error.statusCode) { + throw error + } + + // 处理未知错误 + throw createError({ + statusCode: 500, + statusMessage: 'Failed to remove client', + }) + } +}) diff --git a/packages/server/server/api/client/[id].put.ts b/packages/server/server/api/client/[id].put.ts new file mode 100644 index 0000000..7ea3212 --- /dev/null +++ b/packages/server/server/api/client/[id].put.ts @@ -0,0 +1,55 @@ +import type { ClientData, UpdateClientBody, UpdateClientResponse } from '../../types/api' + +export default defineEventHandler(async (event): Promise => { + const clientId = getRouterParam(event, 'id') + const body = await readBody(event) + + if (!clientId) { + throw createError({ + statusCode: 400, + statusMessage: 'Client ID is required', + }) + } + + const storage = useStorage('redis') + + try { + // 获取现有client数据 + const existingClient = await storage.getItem(`client:${clientId}`) + if (!existingClient) { + throw createError({ + statusCode: 404, + statusMessage: 'Client not found', + }) + } + + // 更新client数据 + const updatedClient: ClientData = { + ...existingClient, + ...(body.name && { name: body.name }), + ...(body.baseUrl && { baseUrl: body.baseUrl }), + ...(body.apiKey && { apiKey: body.apiKey }), + updatedAt: new Date().toISOString(), + } + + await storage.setItem(`client:${clientId}`, updatedClient) + + return { + success: true, + message: 'Client updated successfully', + client: updatedClient, + } + } + catch (error: any) { + // 如果是已知错误,直接抛出 + if (error.statusCode) { + throw error + } + + // 处理未知错误 + throw createError({ + statusCode: 500, + statusMessage: 'Failed to update client', + }) + } +}) diff --git a/packages/server/server/api/client/create.post.ts b/packages/server/server/api/client/create.post.ts new file mode 100644 index 0000000..2cfad59 --- /dev/null +++ b/packages/server/server/api/client/create.post.ts @@ -0,0 +1,62 @@ +import type { ClientData, CreateClientBody, CreateClientResponse } from '../../types/api' +import { randomUUID } from 'node:crypto' + +export default defineEventHandler(async (event): Promise => { + const body = await readBody(event) + + // 验证请求体 + if (!body.apiKey || !body.baseUrl || !body.name) { + throw createError({ + statusCode: 400, + statusMessage: 'Missing required fields: apiKey, baseUrl, or name', + }) + } + + // 验证URL格式 + try { + // eslint-disable-next-line no-new + new URL(body.baseUrl) + } + catch { + throw createError({ + statusCode: 400, + statusMessage: 'Invalid baseUrl format', + }) + } + + const clientId = randomUUID() + const storage = useStorage('redis') + + try { + // 存储client信息到KV storage + const clientData: ClientData = { + id: clientId, + apiKey: body.apiKey, + baseUrl: body.baseUrl, + name: body.name, + createdAt: new Date().toISOString(), + } + + await storage.setItem(`client:${clientId}`, clientData) + + // 同时维护一个client列表用于分页查询 + const clientList = await storage.getItem('client:list') || [] + clientList.push(clientId) + await storage.setItem('client:list', clientList) + + return { + id: clientId, + } + } + catch { + // 清理可能已创建的数据 + await storage.removeItem(`client:${clientId}`).catch((error) => { + console.error(`Failed to clean up client data for ID ${clientId}:`, error) + }) + + throw createError({ + statusCode: 500, + statusMessage: 'Failed to create client', + }) + } +}) diff --git a/packages/server/server/api/client/index.get.ts b/packages/server/server/api/client/index.get.ts new file mode 100644 index 0000000..ee4310e --- /dev/null +++ b/packages/server/server/api/client/index.get.ts @@ -0,0 +1,40 @@ +import type { ClientData, GetClientsQuery, GetClientsResponse } from '../../types/api' + +export default defineEventHandler(async (event): Promise => { + const query = getQuery(event) + + const limit = Math.min(Number(query.limit) || 10, 100) // 最大100个 + const offset = Number(query.offset) || 0 + + const storage = useStorage('redis') + + try { + // 获取所有client ID列表 + const clientList = await storage.getItem('client:list') || [] + const total = clientList.length + + // 分页获取client数据 + const paginatedIds = clientList.slice(offset, offset + limit) + const clients: ClientData[] = [] + + for (const clientId of paginatedIds) { + const clientData = await storage.getItem(`client:${clientId}`) + if (clientData) { + clients.push(clientData) + } + } + + return { + clients, + total, + limit, + offset, + } + } + catch { + throw createError({ + statusCode: 500, + statusMessage: 'Failed to fetch clients', + }) + } +}) diff --git a/packages/server/server/api/log/[client]/index.delete.ts b/packages/server/server/api/log/[client]/index.delete.ts new file mode 100644 index 0000000..e41216e --- /dev/null +++ b/packages/server/server/api/log/[client]/index.delete.ts @@ -0,0 +1,49 @@ +import type { ClearLogsResponse } from '../../../types/api' + +export default defineEventHandler(async (event): Promise => { + const clientId = getRouterParam(event, 'client') + + if (!clientId) { + throw createError({ + statusCode: 400, + statusMessage: 'Client ID is required', + }) + } + + const storage = useStorage('redis') + + try { + // 检查client是否存在 + const clientData = await storage.getItem(`client:${clientId}`) + if (!clientData) { + throw createError({ + statusCode: 404, + statusMessage: 'Client not found', + }) + } + + // 获取当前日志数量 + const currentLogs = await storage.getItem(`client:${clientId}:logs`) || [] + const clearedCount = currentLogs.length + + // 清空日志 + await storage.setItem(`client:${clientId}:logs`, []) + + return { + success: true, + message: 'Logs cleared successfully', + clearedCount, + } + } + catch (error: any) { + // 如果是已知错误,直接抛出 + if (error.statusCode) { + throw error + } + + throw createError({ + statusCode: 500, + statusMessage: 'Failed to clear logs', + }) + } +}) diff --git a/packages/server/server/api/log/[client]/index.get.ts b/packages/server/server/api/log/[client]/index.get.ts new file mode 100644 index 0000000..aa88ab2 --- /dev/null +++ b/packages/server/server/api/log/[client]/index.get.ts @@ -0,0 +1,60 @@ +import type { GetLogsQuery, GetLogsResponse, LogEntry } from '../../../types/api' + +export default defineEventHandler(async (event): Promise => { + const clientId = getRouterParam(event, 'client') + const query = getQuery(event) + + if (!clientId) { + throw createError({ + statusCode: 400, + statusMessage: 'Client ID is required', + }) + } + + const limit = Math.min(Number(query.limit) || 20, 100) + const offset = Number(query.offset) || 0 + const statusFilter = query.status + + const storage = useStorage('redis') + + try { + // 检查client是否存在 + const clientData = await storage.getItem(`client:${clientId}`) + if (!clientData) { + throw createError({ + statusCode: 404, + statusMessage: 'Client not found', + }) + } + + // 获取所有日志 + const allLogs = await storage.getItem(`client:${clientId}:logs`) || [] + + // 按状态过滤 + let filteredLogs = allLogs + if (statusFilter) { + filteredLogs = allLogs.filter(log => log.status === statusFilter) + } + + const total = filteredLogs.length + const paginatedLogs = filteredLogs.slice(offset, offset + limit) + + return { + logs: paginatedLogs, + total, + limit, + offset, + } + } + catch (error: any) { + // 如果是已知错误,直接抛出 + if (error.statusCode) { + throw error + } + + throw createError({ + statusCode: 500, + statusMessage: 'Failed to fetch logs', + }) + } +}) diff --git a/packages/server/server/api/test.get.ts b/packages/server/server/api/test.get.ts new file mode 100644 index 0000000..cd3f020 --- /dev/null +++ b/packages/server/server/api/test.get.ts @@ -0,0 +1,3 @@ +export default defineEventHandler(async () => { + return { message: 'Test route works!' } +}) diff --git a/packages/server/server/client/[client]/completions/index.post.ts b/packages/server/server/client/[client]/completions/index.post.ts deleted file mode 100644 index e69de29..0000000 diff --git a/packages/server/server/client/create.post.ts b/packages/server/server/client/create.post.ts deleted file mode 100644 index e69de29..0000000 diff --git a/packages/server/server/client/index.get.ts b/packages/server/server/client/index.get.ts deleted file mode 100644 index e69de29..0000000 diff --git a/packages/server/server/client/remove.delete.ts b/packages/server/server/client/remove.delete.ts deleted file mode 100644 index e69de29..0000000 diff --git a/packages/server/server/client/update.put.ts b/packages/server/server/client/update.put.ts deleted file mode 100644 index e69de29..0000000 diff --git a/packages/server/server/log/[client]/index.delete.ts b/packages/server/server/log/[client]/index.delete.ts deleted file mode 100644 index e69de29..0000000 diff --git a/packages/server/server/log/[client]/index.get.ts b/packages/server/server/log/[client]/index.get.ts deleted file mode 100644 index e69de29..0000000 diff --git a/packages/server/server/types/api.ts b/packages/server/server/types/api.ts new file mode 100644 index 0000000..9d6e3c3 --- /dev/null +++ b/packages/server/server/types/api.ts @@ -0,0 +1,95 @@ +// 客户端相关类型 +export interface ClientData { + id: string + apiKey: string + baseUrl: string + name: string + createdAt: string + updatedAt?: string +} + +export interface CreateClientBody { + apiKey: string + baseUrl: string + name: string +} + +export interface CreateClientResponse { + id: string +} + +export interface UpdateClientBody { + name?: string + baseUrl?: string + apiKey?: string +} + +export interface UpdateClientResponse { + success: boolean + message: string + client: ClientData +} + +export interface RemoveClientResponse { + success: boolean + message: string +} + +export interface GetClientsQuery { + limit?: number + offset?: number +} + +export interface GetClientsResponse { + clients: ClientData[] + total: number + limit: number + offset: number +} + +// 日志相关类型 +export interface LogEntry { + id: string + status: 'pending' | 'running' | 'success' | 'error' + startAt: string + lastAt?: string + timeUsage?: number + inputs: any[] + outputs?: any[] + usage?: any + error?: string + requestInfo: { + url: string + method: string + headers: Record + body: string + timestamp: string + } + responseInfo?: { + status: number + headers?: Record + body?: string + timestamp: string + duration: number + error?: string + } +} + +export interface GetLogsQuery { + limit?: number + offset?: number + status?: string +} + +export interface GetLogsResponse { + logs: LogEntry[] + total: number + limit: number + offset: number +} + +export interface ClearLogsResponse { + success: boolean + message: string + clearedCount: number +} diff --git a/packages/server/test-api-fixed.js b/packages/server/test-api-fixed.js new file mode 100644 index 0000000..21f4e18 --- /dev/null +++ b/packages/server/test-api-fixed.js @@ -0,0 +1,146 @@ +// 测试API路由的脚本 +// 运行: node test-api-fixed.js + +const POSSIBLE_PORTS = [3000, 3001, 3002, 3003] +let BASE_URL = null + +async function findServerPort() { + for (const port of POSSIBLE_PORTS) { + try { + const testUrl = `http://localhost:${port}/api/test` + const response = await fetch(testUrl) + if (response.ok) { + BASE_URL = `http://localhost:${port}` + console.log(`✅ 发现服务器运行在端口 ${port}`) + return true + } + } + catch (error) { + // 继续尝试下一个端口 + } + } + return false +} + +async function testAPI() { + let clientId = null + + try { + // 1. 测试创建客户端 + console.log('1️⃣ 测试创建客户端 (POST /api/client/create)') + const createResponse = await fetch(`${BASE_URL}/api/client/create`, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + name: 'Test Client', + apiKey: 'sk-test-key', + baseUrl: 'https://api.openai.com', + }), + }) + + if (!createResponse.ok) { + throw new Error(`创建客户端失败: ${createResponse.status}`) + } + + const createResult = await createResponse.json() + clientId = createResult.id + console.log('✅ 创建成功, Client ID:', clientId) + + // 2. 测试获取客户端列表 + console.log('\n2️⃣ 测试获取客户端列表 (GET /api/client)') + const listResponse = await fetch(`${BASE_URL}/api/client?limit=10&offset=0`) + + if (!listResponse.ok) { + throw new Error(`获取列表失败: ${listResponse.status}`) + } + + const listResult = await listResponse.json() + console.log('✅ 获取列表成功, 客户端数量:', listResult.total) + + // 3. 测试更新客户端 (新的路径参数方式) + console.log('\n3️⃣ 测试更新客户端 (PUT /api/client/:id)') + const updateResponse = await fetch(`${BASE_URL}/api/client/${clientId}`, { + method: 'PUT', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + name: 'Updated Test Client', + }), + }) + + if (!updateResponse.ok) { + throw new Error(`更新客户端失败: ${updateResponse.status}`) + } + + const updateResult = await updateResponse.json() + console.log('✅ 更新成功:', updateResult.message) + + // 4. 测试获取日志 (即使为空) + console.log('\n4️⃣ 测试获取日志 (GET /api/log/:clientId)') + const logsResponse = await fetch(`${BASE_URL}/api/log/${clientId}`) + + if (!logsResponse.ok) { + throw new Error(`获取日志失败: ${logsResponse.status}`) + } + + const logsResult = await logsResponse.json() + console.log('✅ 获取日志成功, 日志数量:', logsResult.total) + + // 5. 测试清空日志 + console.log('\n5️⃣ 测试清空日志 (DELETE /api/log/:clientId)') + const clearLogsResponse = await fetch(`${BASE_URL}/api/log/${clientId}`, { + method: 'DELETE', + }) + + if (!clearLogsResponse.ok) { + throw new Error(`清空日志失败: ${clearLogsResponse.status}`) + } + + const clearResult = await clearLogsResponse.json() + console.log('✅ 清空日志成功:', clearResult.message) + + // 6. 测试删除客户端 (新的路径参数方式) + console.log('\n6️⃣ 测试删除客户端 (DELETE /api/client/:id)') + const deleteResponse = await fetch(`${BASE_URL}/api/client/${clientId}`, { + method: 'DELETE', + }) + + if (!deleteResponse.ok) { + throw new Error(`删除客户端失败: ${deleteResponse.status}`) + } + + const deleteResult = await deleteResponse.json() + console.log('✅ 删除成功:', deleteResult.message) + + console.log('\n🎉 所有API路由测试通过!') + } + catch (error) { + console.error('\n❌ 测试失败:', error.message) + + // 清理:如果有创建的客户端,尝试删除 + if (clientId) { + try { + await fetch(`${BASE_URL}/api/client/${clientId}`, { method: 'DELETE' }) + console.log('🧹 已清理测试数据') + } + catch (cleanupError) { + console.log('⚠️ 清理测试数据失败,请手动清理') + } + } + } +} + +// 检查服务器是否运行 +async function checkServer() { + return await findServerPort() +} + +async function main() { + if (await checkServer()) { + await testAPI() + } + else { + console.log('❌ 服务器未运行在任何端口,请先启动服务器: pnpm dev') + } +} + +main() diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5e4706c..a3983de 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -83,7 +83,7 @@ importers: version: 10.4.0 tsup: specifier: ^8.5.0 - version: 8.5.0(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.5.0(jiti@2.4.2)(postcss@8.5.6)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) tsx: specifier: 'catalog:' version: 4.19.2 @@ -100,34 +100,6 @@ importers: specifier: 'catalog:' version: 3.0.5(@types/debug@4.1.12)(@types/node@22.13.4)(jiti@2.4.2)(terser@5.43.1)(tsx@4.19.2)(yaml@2.7.0) - client: - dependencies: - '@llamakit/app': - specifier: workspace:^ - version: link:../packages/app - '@llamakit/server': - specifier: workspace:^ - version: link:../packages/server - '@vitejs/plugin-vue': - specifier: ^6.0.0 - version: 6.0.0(vite@6.1.0(@types/node@20.19.9)(jiti@2.4.2)(terser@5.43.1)(tsx@4.19.2)(yaml@2.7.0))(vue@3.5.18(typescript@5.8.3)) - clerc: - specifier: ^0.44.0 - version: 0.44.0 - vite: - specifier: 'catalog:' - version: 6.1.0(@types/node@20.19.9)(jiti@2.4.2)(terser@5.43.1)(tsx@4.19.2)(yaml@2.7.0) - devDependencies: - '@types/node': - specifier: ^20.11.0 - version: 20.19.9 - tsx: - specifier: ^4.7.0 - version: 4.19.2 - unbuild: - specifier: ^2.0.0 - version: 2.0.0(typescript@5.8.3)(vue-tsc@2.2.12(typescript@5.8.3)) - packages/app: dependencies: vue: @@ -157,6 +129,10 @@ importers: version: 5.10.2(zod@3.25.76) packages/server: + dependencies: + '@llamakit/core': + specifier: workspace:* + version: link:../core devDependencies: nitropack: specifier: latest @@ -385,12 +361,6 @@ packages: resolution: {integrity: sha512-+zZymuVLH6zVwXPtCAtC+bDymxmEwEqDftdAK+f407IF1bnX49anIxvBhCA1AqUIfD6egj1jM1vUnSuijjNyYg==} engines: {node: '>=18'} - '@esbuild/aix-ppc64@0.19.12': - resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [aix] - '@esbuild/aix-ppc64@0.23.1': resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==} engines: {node: '>=18'} @@ -415,12 +385,6 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.19.12': - resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - '@esbuild/android-arm64@0.23.1': resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==} engines: {node: '>=18'} @@ -445,12 +409,6 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm@0.19.12': - resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - '@esbuild/android-arm@0.23.1': resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==} engines: {node: '>=18'} @@ -475,12 +433,6 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-x64@0.19.12': - resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - '@esbuild/android-x64@0.23.1': resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==} engines: {node: '>=18'} @@ -505,12 +457,6 @@ packages: cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.19.12': - resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - '@esbuild/darwin-arm64@0.23.1': resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==} engines: {node: '>=18'} @@ -535,12 +481,6 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.19.12': - resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - '@esbuild/darwin-x64@0.23.1': resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==} engines: {node: '>=18'} @@ -565,12 +505,6 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.19.12': - resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - '@esbuild/freebsd-arm64@0.23.1': resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==} engines: {node: '>=18'} @@ -595,12 +529,6 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.19.12': - resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - '@esbuild/freebsd-x64@0.23.1': resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==} engines: {node: '>=18'} @@ -625,12 +553,6 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.19.12': - resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - '@esbuild/linux-arm64@0.23.1': resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==} engines: {node: '>=18'} @@ -655,12 +577,6 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.19.12': - resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - '@esbuild/linux-arm@0.23.1': resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==} engines: {node: '>=18'} @@ -685,12 +601,6 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.19.12': - resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - '@esbuild/linux-ia32@0.23.1': resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==} engines: {node: '>=18'} @@ -715,12 +625,6 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.19.12': - resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - '@esbuild/linux-loong64@0.23.1': resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==} engines: {node: '>=18'} @@ -745,12 +649,6 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.19.12': - resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - '@esbuild/linux-mips64el@0.23.1': resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==} engines: {node: '>=18'} @@ -775,12 +673,6 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.19.12': - resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - '@esbuild/linux-ppc64@0.23.1': resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==} engines: {node: '>=18'} @@ -805,12 +697,6 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.19.12': - resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - '@esbuild/linux-riscv64@0.23.1': resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==} engines: {node: '>=18'} @@ -835,12 +721,6 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.19.12': - resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - '@esbuild/linux-s390x@0.23.1': resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==} engines: {node: '>=18'} @@ -865,12 +745,6 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.19.12': - resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - '@esbuild/linux-x64@0.23.1': resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==} engines: {node: '>=18'} @@ -913,12 +787,6 @@ packages: cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.19.12': - resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - '@esbuild/netbsd-x64@0.23.1': resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==} engines: {node: '>=18'} @@ -967,12 +835,6 @@ packages: cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.19.12': - resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - '@esbuild/openbsd-x64@0.23.1': resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==} engines: {node: '>=18'} @@ -1003,12 +865,6 @@ packages: cpu: [arm64] os: [openharmony] - '@esbuild/sunos-x64@0.19.12': - resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - '@esbuild/sunos-x64@0.23.1': resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==} engines: {node: '>=18'} @@ -1033,12 +889,6 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.19.12': - resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - '@esbuild/win32-arm64@0.23.1': resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==} engines: {node: '>=18'} @@ -1063,12 +913,6 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.19.12': - resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - '@esbuild/win32-ia32@0.23.1': resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==} engines: {node: '>=18'} @@ -1093,12 +937,6 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.19.12': - resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - '@esbuild/win32-x64@0.23.1': resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==} engines: {node: '>=18'} @@ -1405,15 +1243,6 @@ packages: rollup: optional: true - '@rollup/plugin-commonjs@25.0.8': - resolution: {integrity: sha512-ZEZWTK5n6Qde0to4vS9Mr5x/0UZoqCxPVR9KRUjU4kA2sO7GEUn1fop0DAwpO6z0Nw/kJON9bDmSxdWxO/TT1A==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^2.68.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - '@rollup/plugin-commonjs@28.0.2': resolution: {integrity: sha512-BEFI2EDqzl+vA1rl97IDRZ61AIwGH093d9nz8+dThxJNH8oSoB7MjWvPCX3dkaK1/RCJ/1v/R1XB15FuSs0fQw==} engines: {node: '>=16.0.0 || 14 >= 14.17'} @@ -1450,15 +1279,6 @@ packages: rollup: optional: true - '@rollup/plugin-node-resolve@15.3.1': - resolution: {integrity: sha512-tgg6b91pAybXHJQMAAwW9VuWBO6Thi+q7BCNARLwSqlmsHz0XYURtGvh/AuwSADXSI4h/2uHbs7s4FzlZDGSGA==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^2.78.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - '@rollup/plugin-node-resolve@16.0.0': resolution: {integrity: sha512-0FPvAeVUT/zdWoO0jnb/V5BlBsUSNfkIOtFHzMO4H9MOklrmQFY6FduVHKucNb/aTFxvnGhj4MNj/T1oNdDfNg==} engines: {node: '>=14.0.0'} @@ -1477,15 +1297,6 @@ packages: rollup: optional: true - '@rollup/plugin-replace@5.0.7': - resolution: {integrity: sha512-PqxSfuorkHz/SPpyngLyg5GCEkOcee9M1bkxiVDr41Pd61mqP1PLOoDPbpl44SB2mQGKwV/In74gqQmGITOhEQ==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - '@rollup/plugin-replace@6.0.2': resolution: {integrity: sha512-7QaYCf8bqF04dOy7w/eHmJeNExxTYwvKAmlSAH/EaWWUzbT0h5sbF6bktFoX/0F/0qwng5/dWFMyf3gzaM8DsQ==} engines: {node: '>=14.0.0'} @@ -2184,10 +1995,6 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} - chalk@5.4.1: - resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - character-entities@2.0.2: resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} @@ -2557,10 +2364,6 @@ packages: resolution: {integrity: sha512-PSy0zQwMg5O+LjT5Mz7vnKC8I7DfWLPF6M7oepqW7WP5mn2CY3hz46xZOa1GJY+KVfyXhdmz6+tdgXwrHlZc5g==} engines: {node: ^16.14.0 || >=18.12.0} - dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} - doctrine@3.0.0: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} @@ -2658,11 +2461,6 @@ packages: resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} engines: {node: '>= 0.4'} - esbuild@0.19.12: - resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} - engines: {node: '>=12'} - hasBin: true - esbuild@0.23.1: resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==} engines: {node: '>=18'} @@ -3050,9 +2848,6 @@ packages: resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} engines: {node: '>= 8'} - fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -3115,11 +2910,6 @@ packages: resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} hasBin: true - glob@8.1.0: - resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} - engines: {node: '>=12'} - deprecated: Glob versions prior to v9 are no longer supported - globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} @@ -3136,10 +2926,6 @@ packages: resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} engines: {node: '>=18'} - globby@13.2.2: - resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - globby@14.1.0: resolution: {integrity: sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==} engines: {node: '>=18'} @@ -3238,10 +3024,6 @@ packages: resolution: {integrity: sha512-XPdx9Dq4t9Qk1mTMbWONJqU7boCoumEH7fRET37HX5+khDUl3J2W6PdALxhILYlIYx2amlwYcRPp28p0tSiojg==} engines: {node: '>=18'} - inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} @@ -3773,21 +3555,6 @@ packages: engines: {node: '>=10'} hasBin: true - mkdist@1.6.0: - resolution: {integrity: sha512-nD7J/mx33Lwm4Q4qoPgRBVA9JQNKgyE7fLo5vdPWVDdjz96pXglGERp/fRnGPCTB37Kykfxs5bDdXa9BWOT9nw==} - hasBin: true - peerDependencies: - sass: ^1.78.0 - typescript: '>=5.5.4' - vue-tsc: ^1.8.27 || ^2.0.21 - peerDependenciesMeta: - sass: - optional: true - typescript: - optional: true - vue-tsc: - optional: true - mkdist@2.2.0: resolution: {integrity: sha512-GfKwu4A2grXfhj2TZm4ydfzP515NaALqKaPq4WqaZ6NhEnD47BiIQPySoCTTvVqHxYcuqVkNdCXjYf9Bz1Y04Q==} hasBin: true @@ -4091,10 +3858,6 @@ packages: resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} engines: {node: '>=16 || 14 >=14.18'} - path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - path-type@6.0.0: resolution: {integrity: sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==} engines: {node: '>=18'} @@ -4245,12 +4008,6 @@ packages: peerDependencies: postcss: ^8.4.31 - postcss-nested@6.2.0: - resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.2.14 - postcss-nested@7.0.2: resolution: {integrity: sha512-5osppouFc0VR9/VYzYxO03VaDa3e8F23Kfd6/9qcZTUI8P58GIYlArOET2Wq0ywSl2o2PjELhYOFI4W7l5QHKw==} engines: {node: '>=18.0'} @@ -4534,11 +4291,6 @@ packages: rollup: optional: true - rollup@3.29.5: - resolution: {integrity: sha512-GVsDdsbJzzy4S/v3dqWPJ7EfvZJfCHiDqe80IyrF59LYuP+e6U1LJoUqeuqRbwAWoMNoXivMNeNAOf5E22VA1w==} - engines: {node: '>=14.18.0', npm: '>=8.0.0'} - hasBin: true - rollup@4.30.1: resolution: {integrity: sha512-mlJ4glW020fPuLi7DkM/lN97mYEZGWeqBnrljzN0gs7GLctqX3lNWxKQ7Gl712UAX+6fog/L3jh4gb7R6aVi3w==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -4641,10 +4393,6 @@ packages: sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - slash@4.0.0: - resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} - engines: {node: '>=12'} - slash@5.1.0: resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} engines: {node: '>=14.16'} @@ -4975,15 +4723,6 @@ packages: ultrahtml@1.6.0: resolution: {integrity: sha512-R9fBn90VTJrqqLDwyMph+HGne8eqY1iPfYhPzZrvKpIfwkWZbcYlfpsb8B9dTvBfpy1/hqAD7Wi8EKfP9e8zdw==} - unbuild@2.0.0: - resolution: {integrity: sha512-JWCUYx3Oxdzvw2J9kTAp+DKE8df/BnH/JTSj6JyA4SH40ECdFu7FoJJcrm8G92B7TjofQ6GZGjJs50TRxoH6Wg==} - hasBin: true - peerDependencies: - typescript: ^5.1.6 - peerDependenciesMeta: - typescript: - optional: true - unbuild@3.3.1: resolution: {integrity: sha512-/5OeeHmW1JlWEyQw3SPkB9BV16lzr6C5i8D+O17NLx6ETgvCZ3ZlyXfWkVVfG2YCsv8xAVQCqJNJtbEAGwHg7A==} hasBin: true @@ -5682,9 +5421,6 @@ snapshots: esquery: 1.6.0 jsdoc-type-pratt-parser: 4.1.0 - '@esbuild/aix-ppc64@0.19.12': - optional: true - '@esbuild/aix-ppc64@0.23.1': optional: true @@ -5697,9 +5433,6 @@ snapshots: '@esbuild/aix-ppc64@0.25.8': optional: true - '@esbuild/android-arm64@0.19.12': - optional: true - '@esbuild/android-arm64@0.23.1': optional: true @@ -5712,9 +5445,6 @@ snapshots: '@esbuild/android-arm64@0.25.8': optional: true - '@esbuild/android-arm@0.19.12': - optional: true - '@esbuild/android-arm@0.23.1': optional: true @@ -5727,9 +5457,6 @@ snapshots: '@esbuild/android-arm@0.25.8': optional: true - '@esbuild/android-x64@0.19.12': - optional: true - '@esbuild/android-x64@0.23.1': optional: true @@ -5742,9 +5469,6 @@ snapshots: '@esbuild/android-x64@0.25.8': optional: true - '@esbuild/darwin-arm64@0.19.12': - optional: true - '@esbuild/darwin-arm64@0.23.1': optional: true @@ -5757,9 +5481,6 @@ snapshots: '@esbuild/darwin-arm64@0.25.8': optional: true - '@esbuild/darwin-x64@0.19.12': - optional: true - '@esbuild/darwin-x64@0.23.1': optional: true @@ -5772,9 +5493,6 @@ snapshots: '@esbuild/darwin-x64@0.25.8': optional: true - '@esbuild/freebsd-arm64@0.19.12': - optional: true - '@esbuild/freebsd-arm64@0.23.1': optional: true @@ -5787,9 +5505,6 @@ snapshots: '@esbuild/freebsd-arm64@0.25.8': optional: true - '@esbuild/freebsd-x64@0.19.12': - optional: true - '@esbuild/freebsd-x64@0.23.1': optional: true @@ -5802,9 +5517,6 @@ snapshots: '@esbuild/freebsd-x64@0.25.8': optional: true - '@esbuild/linux-arm64@0.19.12': - optional: true - '@esbuild/linux-arm64@0.23.1': optional: true @@ -5817,9 +5529,6 @@ snapshots: '@esbuild/linux-arm64@0.25.8': optional: true - '@esbuild/linux-arm@0.19.12': - optional: true - '@esbuild/linux-arm@0.23.1': optional: true @@ -5832,9 +5541,6 @@ snapshots: '@esbuild/linux-arm@0.25.8': optional: true - '@esbuild/linux-ia32@0.19.12': - optional: true - '@esbuild/linux-ia32@0.23.1': optional: true @@ -5847,9 +5553,6 @@ snapshots: '@esbuild/linux-ia32@0.25.8': optional: true - '@esbuild/linux-loong64@0.19.12': - optional: true - '@esbuild/linux-loong64@0.23.1': optional: true @@ -5862,9 +5565,6 @@ snapshots: '@esbuild/linux-loong64@0.25.8': optional: true - '@esbuild/linux-mips64el@0.19.12': - optional: true - '@esbuild/linux-mips64el@0.23.1': optional: true @@ -5877,9 +5577,6 @@ snapshots: '@esbuild/linux-mips64el@0.25.8': optional: true - '@esbuild/linux-ppc64@0.19.12': - optional: true - '@esbuild/linux-ppc64@0.23.1': optional: true @@ -5892,9 +5589,6 @@ snapshots: '@esbuild/linux-ppc64@0.25.8': optional: true - '@esbuild/linux-riscv64@0.19.12': - optional: true - '@esbuild/linux-riscv64@0.23.1': optional: true @@ -5907,9 +5601,6 @@ snapshots: '@esbuild/linux-riscv64@0.25.8': optional: true - '@esbuild/linux-s390x@0.19.12': - optional: true - '@esbuild/linux-s390x@0.23.1': optional: true @@ -5922,9 +5613,6 @@ snapshots: '@esbuild/linux-s390x@0.25.8': optional: true - '@esbuild/linux-x64@0.19.12': - optional: true - '@esbuild/linux-x64@0.23.1': optional: true @@ -5946,9 +5634,6 @@ snapshots: '@esbuild/netbsd-arm64@0.25.8': optional: true - '@esbuild/netbsd-x64@0.19.12': - optional: true - '@esbuild/netbsd-x64@0.23.1': optional: true @@ -5973,9 +5658,6 @@ snapshots: '@esbuild/openbsd-arm64@0.25.8': optional: true - '@esbuild/openbsd-x64@0.19.12': - optional: true - '@esbuild/openbsd-x64@0.23.1': optional: true @@ -5991,9 +5673,6 @@ snapshots: '@esbuild/openharmony-arm64@0.25.8': optional: true - '@esbuild/sunos-x64@0.19.12': - optional: true - '@esbuild/sunos-x64@0.23.1': optional: true @@ -6006,9 +5685,6 @@ snapshots: '@esbuild/sunos-x64@0.25.8': optional: true - '@esbuild/win32-arm64@0.19.12': - optional: true - '@esbuild/win32-arm64@0.23.1': optional: true @@ -6021,9 +5697,6 @@ snapshots: '@esbuild/win32-arm64@0.25.8': optional: true - '@esbuild/win32-ia32@0.19.12': - optional: true - '@esbuild/win32-ia32@0.23.1': optional: true @@ -6036,9 +5709,6 @@ snapshots: '@esbuild/win32-ia32@0.25.8': optional: true - '@esbuild/win32-x64@0.19.12': - optional: true - '@esbuild/win32-x64@0.23.1': optional: true @@ -6366,10 +6036,6 @@ snapshots: '@rolldown/pluginutils@1.0.0-beta.19': {} - '@rollup/plugin-alias@5.1.1(rollup@3.29.5)': - optionalDependencies: - rollup: 3.29.5 - '@rollup/plugin-alias@5.1.1(rollup@4.30.1)': optionalDependencies: rollup: 4.30.1 @@ -6378,17 +6044,6 @@ snapshots: optionalDependencies: rollup: 4.45.1 - '@rollup/plugin-commonjs@25.0.8(rollup@3.29.5)': - dependencies: - '@rollup/pluginutils': 5.1.4(rollup@3.29.5) - commondir: 1.0.1 - estree-walker: 2.0.2 - glob: 8.1.0 - is-reference: 1.2.1 - magic-string: 0.30.17 - optionalDependencies: - rollup: 3.29.5 - '@rollup/plugin-commonjs@28.0.2(rollup@4.30.1)': dependencies: '@rollup/pluginutils': 5.1.4(rollup@4.30.1) @@ -6421,12 +6076,6 @@ snapshots: optionalDependencies: rollup: 4.45.1 - '@rollup/plugin-json@6.1.0(rollup@3.29.5)': - dependencies: - '@rollup/pluginutils': 5.1.4(rollup@3.29.5) - optionalDependencies: - rollup: 3.29.5 - '@rollup/plugin-json@6.1.0(rollup@4.30.1)': dependencies: '@rollup/pluginutils': 5.1.4(rollup@4.30.1) @@ -6439,16 +6088,6 @@ snapshots: optionalDependencies: rollup: 4.45.1 - '@rollup/plugin-node-resolve@15.3.1(rollup@3.29.5)': - dependencies: - '@rollup/pluginutils': 5.1.4(rollup@3.29.5) - '@types/resolve': 1.20.2 - deepmerge: 4.3.1 - is-module: 1.0.0 - resolve: 1.22.8 - optionalDependencies: - rollup: 3.29.5 - '@rollup/plugin-node-resolve@16.0.0(rollup@4.30.1)': dependencies: '@rollup/pluginutils': 5.1.4(rollup@4.30.1) @@ -6469,13 +6108,6 @@ snapshots: optionalDependencies: rollup: 4.45.1 - '@rollup/plugin-replace@5.0.7(rollup@3.29.5)': - dependencies: - '@rollup/pluginutils': 5.1.4(rollup@3.29.5) - magic-string: 0.30.17 - optionalDependencies: - rollup: 3.29.5 - '@rollup/plugin-replace@6.0.2(rollup@4.30.1)': dependencies: '@rollup/pluginutils': 5.1.4(rollup@4.30.1) @@ -6498,14 +6130,6 @@ snapshots: optionalDependencies: rollup: 4.45.1 - '@rollup/pluginutils@5.1.4(rollup@3.29.5)': - dependencies: - '@types/estree': 1.0.6 - estree-walker: 2.0.2 - picomatch: 4.0.2 - optionalDependencies: - rollup: 3.29.5 - '@rollup/pluginutils@5.1.4(rollup@4.30.1)': dependencies: '@types/estree': 1.0.6 @@ -6685,6 +6309,7 @@ snapshots: '@types/node@20.19.9': dependencies: undici-types: 6.21.0 + optional: true '@types/node@22.13.4': dependencies: @@ -6815,12 +6440,6 @@ snapshots: - rollup - supports-color - '@vitejs/plugin-vue@6.0.0(vite@6.1.0(@types/node@20.19.9)(jiti@2.4.2)(terser@5.43.1)(tsx@4.19.2)(yaml@2.7.0))(vue@3.5.18(typescript@5.8.3))': - dependencies: - '@rolldown/pluginutils': 1.0.0-beta.19 - vite: 6.1.0(@types/node@20.19.9)(jiti@2.4.2)(terser@5.43.1)(tsx@4.19.2)(yaml@2.7.0) - vue: 3.5.18(typescript@5.8.3) - '@vitejs/plugin-vue@6.0.0(vite@6.1.0(@types/node@22.13.4)(jiti@2.4.2)(terser@5.43.1)(tsx@4.19.2)(yaml@2.7.0))(vue@3.5.18(typescript@5.7.3))': dependencies: '@rolldown/pluginutils': 1.0.0-beta.19 @@ -7125,16 +6744,6 @@ snapshots: postcss: 8.5.1 postcss-value-parser: 4.2.0 - autoprefixer@10.4.20(postcss@8.5.6): - dependencies: - browserslist: 4.24.2 - caniuse-lite: 1.0.30001680 - fraction.js: 4.3.7 - normalize-range: 0.1.2 - picocolors: 1.1.1 - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - b4a@1.6.7: {} balanced-match@1.0.2: {} @@ -7278,8 +6887,6 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 - chalk@5.4.1: {} - character-entities@2.0.2: {} check-error@2.1.1: {} @@ -7437,10 +7044,6 @@ snapshots: dependencies: postcss: 8.5.1 - css-declaration-sorter@7.2.0(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - css-select@5.1.0: dependencies: boolbase: 1.0.0 @@ -7497,60 +7100,16 @@ snapshots: postcss-svgo: 7.0.1(postcss@8.5.1) postcss-unique-selectors: 7.0.3(postcss@8.5.1) - cssnano-preset-default@7.0.6(postcss@8.5.6): - dependencies: - browserslist: 4.24.2 - css-declaration-sorter: 7.2.0(postcss@8.5.6) - cssnano-utils: 5.0.0(postcss@8.5.6) - postcss: 8.5.6 - postcss-calc: 10.0.2(postcss@8.5.6) - postcss-colormin: 7.0.2(postcss@8.5.6) - postcss-convert-values: 7.0.4(postcss@8.5.6) - postcss-discard-comments: 7.0.3(postcss@8.5.6) - postcss-discard-duplicates: 7.0.1(postcss@8.5.6) - postcss-discard-empty: 7.0.0(postcss@8.5.6) - postcss-discard-overridden: 7.0.0(postcss@8.5.6) - postcss-merge-longhand: 7.0.4(postcss@8.5.6) - postcss-merge-rules: 7.0.4(postcss@8.5.6) - postcss-minify-font-values: 7.0.0(postcss@8.5.6) - postcss-minify-gradients: 7.0.0(postcss@8.5.6) - postcss-minify-params: 7.0.2(postcss@8.5.6) - postcss-minify-selectors: 7.0.4(postcss@8.5.6) - postcss-normalize-charset: 7.0.0(postcss@8.5.6) - postcss-normalize-display-values: 7.0.0(postcss@8.5.6) - postcss-normalize-positions: 7.0.0(postcss@8.5.6) - postcss-normalize-repeat-style: 7.0.0(postcss@8.5.6) - postcss-normalize-string: 7.0.0(postcss@8.5.6) - postcss-normalize-timing-functions: 7.0.0(postcss@8.5.6) - postcss-normalize-unicode: 7.0.2(postcss@8.5.6) - postcss-normalize-url: 7.0.0(postcss@8.5.6) - postcss-normalize-whitespace: 7.0.0(postcss@8.5.6) - postcss-ordered-values: 7.0.1(postcss@8.5.6) - postcss-reduce-initial: 7.0.2(postcss@8.5.6) - postcss-reduce-transforms: 7.0.0(postcss@8.5.6) - postcss-svgo: 7.0.1(postcss@8.5.6) - postcss-unique-selectors: 7.0.3(postcss@8.5.6) - cssnano-utils@5.0.0(postcss@8.5.1): dependencies: postcss: 8.5.1 - cssnano-utils@5.0.0(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - cssnano@7.0.6(postcss@8.5.1): dependencies: cssnano-preset-default: 7.0.6(postcss@8.5.1) lilconfig: 3.1.3 postcss: 8.5.1 - cssnano@7.0.6(postcss@8.5.6): - dependencies: - cssnano-preset-default: 7.0.6(postcss@8.5.6) - lilconfig: 3.1.3 - postcss: 8.5.6 - csso@5.0.5: dependencies: css-tree: 2.2.1 @@ -7669,10 +7228,6 @@ snapshots: fastest-levenshtein: 1.0.16 lodash.deburr: 4.1.0 - dir-glob@3.0.1: - dependencies: - path-type: 4.0.0 - doctrine@3.0.0: dependencies: esutils: 2.0.3 @@ -7756,32 +7311,6 @@ snapshots: dependencies: es-errors: 1.3.0 - esbuild@0.19.12: - optionalDependencies: - '@esbuild/aix-ppc64': 0.19.12 - '@esbuild/android-arm': 0.19.12 - '@esbuild/android-arm64': 0.19.12 - '@esbuild/android-x64': 0.19.12 - '@esbuild/darwin-arm64': 0.19.12 - '@esbuild/darwin-x64': 0.19.12 - '@esbuild/freebsd-arm64': 0.19.12 - '@esbuild/freebsd-x64': 0.19.12 - '@esbuild/linux-arm': 0.19.12 - '@esbuild/linux-arm64': 0.19.12 - '@esbuild/linux-ia32': 0.19.12 - '@esbuild/linux-loong64': 0.19.12 - '@esbuild/linux-mips64el': 0.19.12 - '@esbuild/linux-ppc64': 0.19.12 - '@esbuild/linux-riscv64': 0.19.12 - '@esbuild/linux-s390x': 0.19.12 - '@esbuild/linux-x64': 0.19.12 - '@esbuild/netbsd-x64': 0.19.12 - '@esbuild/openbsd-x64': 0.19.12 - '@esbuild/sunos-x64': 0.19.12 - '@esbuild/win32-arm64': 0.19.12 - '@esbuild/win32-ia32': 0.19.12 - '@esbuild/win32-x64': 0.19.12 - esbuild@0.23.1: optionalDependencies: '@esbuild/aix-ppc64': 0.23.1 @@ -8356,8 +7885,6 @@ snapshots: dependencies: minipass: 3.3.6 - fs.realpath@1.0.0: {} - fsevents@2.3.3: optional: true @@ -8439,14 +7966,6 @@ snapshots: package-json-from-dist: 1.0.1 path-scurry: 1.11.1 - glob@8.1.0: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 5.1.6 - once: 1.4.0 - globals@11.12.0: {} globals@13.24.0: @@ -8457,14 +7976,6 @@ snapshots: globals@15.15.0: {} - globby@13.2.2: - dependencies: - dir-glob: 3.0.1 - fast-glob: 3.3.3 - ignore: 5.3.2 - merge2: 1.4.1 - slash: 4.0.0 - globby@14.1.0: dependencies: '@sindresorhus/merge-streams': 2.3.0 @@ -8556,11 +8067,6 @@ snapshots: index-to-position@1.1.0: {} - inflight@1.0.6: - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - inherits@2.0.4: {} ioredis@5.6.1: @@ -9200,25 +8706,6 @@ snapshots: mkdirp@3.0.1: {} - mkdist@1.6.0(typescript@5.8.3)(vue-tsc@2.2.12(typescript@5.8.3)): - dependencies: - autoprefixer: 10.4.20(postcss@8.5.6) - citty: 0.1.6 - cssnano: 7.0.6(postcss@8.5.6) - defu: 6.1.4 - esbuild: 0.24.2 - jiti: 1.21.7 - mlly: 1.7.4 - pathe: 1.1.2 - pkg-types: 1.3.0 - postcss: 8.5.6 - postcss-nested: 6.2.0(postcss@8.5.6) - semver: 7.7.2 - tinyglobby: 0.2.14 - optionalDependencies: - typescript: 5.8.3 - vue-tsc: 2.2.12(typescript@5.8.3) - mkdist@2.2.0(typescript@5.7.3)(vue-tsc@2.2.12(typescript@5.7.3))(vue@3.5.18(typescript@5.7.3)): dependencies: autoprefixer: 10.4.20(postcss@8.5.1) @@ -9591,8 +9078,6 @@ snapshots: lru-cache: 10.4.3 minipass: 7.1.2 - path-type@4.0.0: {} - path-type@6.0.0: {} pathe@1.1.2: {} @@ -9637,12 +9122,6 @@ snapshots: postcss-selector-parser: 6.1.2 postcss-value-parser: 4.2.0 - postcss-calc@10.0.2(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-selector-parser: 6.1.2 - postcss-value-parser: 4.2.0 - postcss-colormin@7.0.2(postcss@8.5.1): dependencies: browserslist: 4.24.2 @@ -9651,66 +9130,35 @@ snapshots: postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-colormin@7.0.2(postcss@8.5.6): - dependencies: - browserslist: 4.24.2 - caniuse-api: 3.0.0 - colord: 2.9.3 - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - postcss-convert-values@7.0.4(postcss@8.5.1): dependencies: browserslist: 4.24.2 postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-convert-values@7.0.4(postcss@8.5.6): - dependencies: - browserslist: 4.24.2 - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - postcss-discard-comments@7.0.3(postcss@8.5.1): dependencies: postcss: 8.5.1 postcss-selector-parser: 6.1.2 - postcss-discard-comments@7.0.3(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-selector-parser: 6.1.2 - postcss-discard-duplicates@7.0.1(postcss@8.5.1): dependencies: postcss: 8.5.1 - postcss-discard-duplicates@7.0.1(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-discard-empty@7.0.0(postcss@8.5.1): dependencies: postcss: 8.5.1 - postcss-discard-empty@7.0.0(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-discard-overridden@7.0.0(postcss@8.5.1): dependencies: postcss: 8.5.1 - postcss-discard-overridden@7.0.0(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - - postcss-load-config@6.0.1(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(yaml@2.7.0): + postcss-load-config@6.0.1(jiti@2.4.2)(postcss@8.5.6)(tsx@4.19.2)(yaml@2.7.0): dependencies: lilconfig: 3.1.3 optionalDependencies: jiti: 2.4.2 - postcss: 8.5.1 + postcss: 8.5.6 tsx: 4.19.2 yaml: 2.7.0 @@ -9720,12 +9168,6 @@ snapshots: postcss-value-parser: 4.2.0 stylehacks: 7.0.4(postcss@8.5.1) - postcss-merge-longhand@7.0.4(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - stylehacks: 7.0.4(postcss@8.5.6) - postcss-merge-rules@7.0.4(postcss@8.5.1): dependencies: browserslist: 4.24.2 @@ -9734,24 +9176,11 @@ snapshots: postcss: 8.5.1 postcss-selector-parser: 6.1.2 - postcss-merge-rules@7.0.4(postcss@8.5.6): - dependencies: - browserslist: 4.24.2 - caniuse-api: 3.0.0 - cssnano-utils: 5.0.0(postcss@8.5.6) - postcss: 8.5.6 - postcss-selector-parser: 6.1.2 - postcss-minify-font-values@7.0.0(postcss@8.5.1): dependencies: postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-minify-font-values@7.0.0(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - postcss-minify-gradients@7.0.0(postcss@8.5.1): dependencies: colord: 2.9.3 @@ -9759,13 +9188,6 @@ snapshots: postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-minify-gradients@7.0.0(postcss@8.5.6): - dependencies: - colord: 2.9.3 - cssnano-utils: 5.0.0(postcss@8.5.6) - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - postcss-minify-params@7.0.2(postcss@8.5.1): dependencies: browserslist: 4.24.2 @@ -9773,30 +9195,12 @@ snapshots: postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-minify-params@7.0.2(postcss@8.5.6): - dependencies: - browserslist: 4.24.2 - cssnano-utils: 5.0.0(postcss@8.5.6) - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - postcss-minify-selectors@7.0.4(postcss@8.5.1): dependencies: cssesc: 3.0.0 postcss: 8.5.1 postcss-selector-parser: 6.1.2 - postcss-minify-selectors@7.0.4(postcss@8.5.6): - dependencies: - cssesc: 3.0.0 - postcss: 8.5.6 - postcss-selector-parser: 6.1.2 - - postcss-nested@6.2.0(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-selector-parser: 6.1.2 - postcss-nested@7.0.2(postcss@8.5.1): dependencies: postcss: 8.5.1 @@ -9806,126 +9210,64 @@ snapshots: dependencies: postcss: 8.5.1 - postcss-normalize-charset@7.0.0(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-normalize-display-values@7.0.0(postcss@8.5.1): dependencies: postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-normalize-display-values@7.0.0(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - postcss-normalize-positions@7.0.0(postcss@8.5.1): dependencies: postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-normalize-positions@7.0.0(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - postcss-normalize-repeat-style@7.0.0(postcss@8.5.1): dependencies: postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-normalize-repeat-style@7.0.0(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - postcss-normalize-string@7.0.0(postcss@8.5.1): dependencies: postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-normalize-string@7.0.0(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - postcss-normalize-timing-functions@7.0.0(postcss@8.5.1): dependencies: postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-normalize-timing-functions@7.0.0(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - postcss-normalize-unicode@7.0.2(postcss@8.5.1): dependencies: browserslist: 4.24.2 postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-normalize-unicode@7.0.2(postcss@8.5.6): - dependencies: - browserslist: 4.24.2 - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - postcss-normalize-url@7.0.0(postcss@8.5.1): dependencies: postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-normalize-url@7.0.0(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - postcss-normalize-whitespace@7.0.0(postcss@8.5.1): dependencies: postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-normalize-whitespace@7.0.0(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - postcss-ordered-values@7.0.1(postcss@8.5.1): dependencies: cssnano-utils: 5.0.0(postcss@8.5.1) postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-ordered-values@7.0.1(postcss@8.5.6): - dependencies: - cssnano-utils: 5.0.0(postcss@8.5.6) - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - postcss-reduce-initial@7.0.2(postcss@8.5.1): dependencies: browserslist: 4.24.2 caniuse-api: 3.0.0 postcss: 8.5.1 - postcss-reduce-initial@7.0.2(postcss@8.5.6): - dependencies: - browserslist: 4.24.2 - caniuse-api: 3.0.0 - postcss: 8.5.6 - postcss-reduce-transforms@7.0.0(postcss@8.5.1): dependencies: postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-reduce-transforms@7.0.0(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - postcss-selector-parser@6.1.2: dependencies: cssesc: 3.0.0 @@ -9942,22 +9284,11 @@ snapshots: postcss-value-parser: 4.2.0 svgo: 3.3.2 - postcss-svgo@7.0.1(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - svgo: 3.3.2 - postcss-unique-selectors@7.0.3(postcss@8.5.1): dependencies: postcss: 8.5.1 postcss-selector-parser: 6.1.2 - postcss-unique-selectors@7.0.3(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-selector-parser: 6.1.2 - postcss-value-parser@4.2.0: {} postcss-values-parser@6.0.2(postcss@8.5.6): @@ -10146,14 +9477,6 @@ snapshots: reusify@1.0.4: {} - rollup-plugin-dts@6.1.1(rollup@3.29.5)(typescript@5.8.3): - dependencies: - magic-string: 0.30.17 - rollup: 3.29.5 - typescript: 5.8.3 - optionalDependencies: - '@babel/code-frame': 7.26.2 - rollup-plugin-dts@6.1.1(rollup@4.30.1)(typescript@5.7.3): dependencies: magic-string: 0.30.17 @@ -10171,10 +9494,6 @@ snapshots: optionalDependencies: rollup: 4.45.1 - rollup@3.29.5: - optionalDependencies: - fsevents: 2.3.3 - rollup@4.30.1: dependencies: '@types/estree': 1.0.6 @@ -10331,8 +9650,6 @@ snapshots: sisteransi@1.0.5: {} - slash@4.0.0: {} - slash@5.1.0: {} slashes@3.0.12: {} @@ -10448,12 +9765,6 @@ snapshots: postcss: 8.5.1 postcss-selector-parser: 6.1.2 - stylehacks@7.0.4(postcss@8.5.6): - dependencies: - browserslist: 4.24.2 - postcss: 8.5.6 - postcss-selector-parser: 6.1.2 - sucrase@3.35.0: dependencies: '@jridgewell/gen-mapping': 0.3.5 @@ -10602,7 +9913,7 @@ snapshots: tslib@2.7.0: {} - tsup@8.5.0(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0): + tsup@8.5.0(jiti@2.4.2)(postcss@8.5.6)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0): dependencies: bundle-require: 5.1.0(esbuild@0.25.8) cac: 6.7.14 @@ -10613,7 +9924,7 @@ snapshots: fix-dts-default-cjs-exports: 1.0.1 joycon: 3.1.1 picocolors: 1.1.1 - postcss-load-config: 6.0.1(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(yaml@2.7.0) + postcss-load-config: 6.0.1(jiti@2.4.2)(postcss@8.5.6)(tsx@4.19.2)(yaml@2.7.0) resolve-from: 5.0.0 rollup: 4.45.1 source-map: 0.8.0-beta.0 @@ -10622,7 +9933,7 @@ snapshots: tinyglobby: 0.2.14 tree-kill: 1.2.2 optionalDependencies: - postcss: 8.5.1 + postcss: 8.5.6 typescript: 5.7.3 transitivePeerDependencies: - jiti @@ -10661,39 +9972,6 @@ snapshots: ultrahtml@1.6.0: {} - unbuild@2.0.0(typescript@5.8.3)(vue-tsc@2.2.12(typescript@5.8.3)): - dependencies: - '@rollup/plugin-alias': 5.1.1(rollup@3.29.5) - '@rollup/plugin-commonjs': 25.0.8(rollup@3.29.5) - '@rollup/plugin-json': 6.1.0(rollup@3.29.5) - '@rollup/plugin-node-resolve': 15.3.1(rollup@3.29.5) - '@rollup/plugin-replace': 5.0.7(rollup@3.29.5) - '@rollup/pluginutils': 5.1.4(rollup@3.29.5) - chalk: 5.4.1 - citty: 0.1.6 - consola: 3.4.2 - defu: 6.1.4 - esbuild: 0.19.12 - globby: 13.2.2 - hookable: 5.5.3 - jiti: 1.21.7 - magic-string: 0.30.17 - mkdist: 1.6.0(typescript@5.8.3)(vue-tsc@2.2.12(typescript@5.8.3)) - mlly: 1.7.4 - pathe: 1.1.2 - pkg-types: 1.3.0 - pretty-bytes: 6.1.1 - rollup: 3.29.5 - rollup-plugin-dts: 6.1.1(rollup@3.29.5)(typescript@5.8.3) - scule: 1.3.0 - untyped: 1.5.2 - optionalDependencies: - typescript: 5.8.3 - transitivePeerDependencies: - - sass - - supports-color - - vue-tsc - unbuild@3.3.1(typescript@5.7.3)(vue-tsc@2.2.12(typescript@5.7.3))(vue@3.5.18(typescript@5.7.3)): dependencies: '@rollup/plugin-alias': 5.1.1(rollup@4.30.1) @@ -10738,7 +10016,8 @@ snapshots: undici-types@6.20.0: {} - undici-types@6.21.0: {} + undici-types@6.21.0: + optional: true unenv@2.0.0-rc.18: dependencies: @@ -10905,19 +10184,6 @@ snapshots: - tsx - yaml - vite@6.1.0(@types/node@20.19.9)(jiti@2.4.2)(terser@5.43.1)(tsx@4.19.2)(yaml@2.7.0): - dependencies: - esbuild: 0.24.2 - postcss: 8.5.6 - rollup: 4.45.1 - optionalDependencies: - '@types/node': 20.19.9 - fsevents: 2.3.3 - jiti: 2.4.2 - terser: 5.43.1 - tsx: 4.19.2 - yaml: 2.7.0 - vite@6.1.0(@types/node@22.13.4)(jiti@2.4.2)(terser@5.43.1)(tsx@4.19.2)(yaml@2.7.0): dependencies: esbuild: 0.24.2