From 9acd2f86655042eede832ef7a643070b87180478 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 2 Feb 2026 12:34:23 +0000 Subject: [PATCH 01/10] Scaffold API routes with OpenAPI documentation Related to #4 - Install Zod for validation and @scalar/nuxt for OpenAPI docs - Create shared utilities for API routes: * Response formatter with standardized success/error format * Auth middleware (requireAuth, optionalAuth, role checking) * Input validation helpers with Zod schemas * Rate limiting stubs (placeholder for production implementation) * OpenAPI documentation helpers and common schemas - Configure Scalar module for API documentation at /api-docs - Scaffold authentication routes: * POST /api/auth/github/login - GitHub OAuth initiation (501) * GET /api/auth/github/callback - OAuth callback handler (501) * GET /api/auth/session - Current session info - Scaffold organization routes: * POST /api/orgs - Create organization (501) * GET /api/orgs/[slug] - Get organization (501) - Scaffold project routes: * POST /api/orgs/[slug]/projects - Create project (501) * GET /api/projects/[slug] - Get project (501) - Scaffold feedback routes: * POST /api/feedback - Create feedback (501) * GET /api/feedback - List with filters/pagination (501) * GET /api/feedback/[id] - Get single feedback (501) * POST /api/feedback/[id]/vote - Toggle vote (501) - Scaffold GitHub integration routes: * POST /api/github/webhook - Receive webhook events (501) * GET /api/github/issues - Search issues (501) * POST /api/github/issues - Create issue from feedback (501) - Create OpenAPI 3.0 specification endpoint at /api/openapi.json - All routes include comprehensive OpenAPI documentation - Protected routes return 401 when unauthenticated - Unimplemented routes return 501 with consistent error format https://claude.ai/code/session_01VHP8WHUaGX3Wvqz7dRpUM3 --- nuxt.config.ts | 12 +- package.json | 4 +- server/api/auth/github/callback.get.ts | 81 + server/api/auth/github/login.post.ts | 51 + server/api/auth/session.get.ts | 60 + server/api/feedback/[id].get.ts | 96 + server/api/feedback/[id]/vote.post.ts | 102 + server/api/feedback/index.get.ts | 135 + server/api/feedback/index.post.ts | 122 + server/api/github/issues.get.ts | 141 + server/api/github/issues.post.ts | 149 ++ server/api/github/webhook.post.ts | 120 + server/api/openapi.json.get.ts | 135 + server/api/orgs/[slug].get.ts | 112 + server/api/orgs/[slug]/projects.post.ts | 157 ++ server/api/orgs/index.post.ts | 117 + server/api/projects/[slug].get.ts | 95 + server/utils/auth-middleware.ts | 123 + server/utils/openapi.ts | 238 ++ server/utils/rate-limit.ts | 132 + server/utils/response.ts | 72 + server/utils/validation.ts | 116 + yarn.lock | 3236 ++++++++++++++++++++++- 23 files changed, 5471 insertions(+), 135 deletions(-) create mode 100644 server/api/auth/github/callback.get.ts create mode 100644 server/api/auth/github/login.post.ts create mode 100644 server/api/auth/session.get.ts create mode 100644 server/api/feedback/[id].get.ts create mode 100644 server/api/feedback/[id]/vote.post.ts create mode 100644 server/api/feedback/index.get.ts create mode 100644 server/api/feedback/index.post.ts create mode 100644 server/api/github/issues.get.ts create mode 100644 server/api/github/issues.post.ts create mode 100644 server/api/github/webhook.post.ts create mode 100644 server/api/openapi.json.get.ts create mode 100644 server/api/orgs/[slug].get.ts create mode 100644 server/api/orgs/[slug]/projects.post.ts create mode 100644 server/api/orgs/index.post.ts create mode 100644 server/api/projects/[slug].get.ts create mode 100644 server/utils/auth-middleware.ts create mode 100644 server/utils/openapi.ts create mode 100644 server/utils/rate-limit.ts create mode 100644 server/utils/response.ts create mode 100644 server/utils/validation.ts diff --git a/nuxt.config.ts b/nuxt.config.ts index faa541f..4f14cca 100644 --- a/nuxt.config.ts +++ b/nuxt.config.ts @@ -7,7 +7,7 @@ export default defineNuxtConfig({ vite: { plugins: [tailwindcss()], }, - modules: ['@nuxt/fonts', '@nuxt/icon', '@nuxt/test-utils', 'shadcn-nuxt', '@nuxtjs/color-mode', 'nuxt-nodemailer'], + modules: ['@nuxt/fonts', '@nuxt/icon', '@nuxt/test-utils', 'shadcn-nuxt', '@nuxtjs/color-mode', 'nuxt-nodemailer', '@scalar/nuxt'], runtimeConfig: { nodemailer: { from: process.env.MAIL_FROM, @@ -53,5 +53,13 @@ export default defineNuxtConfig({ prefix: 'ScaffoldDesigner', pathPrefix: false, }, - ] + ], + scalar: { + spec: { + url: '/api/openapi.json' + }, + proxy: { + path: '/api-docs' + } + } }) \ No newline at end of file diff --git a/package.json b/package.json index 58b94c4..b0605b8 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ "@nuxt/icon": "1.13.0", "@nuxt/test-utils": "3.19.1", "@nuxtjs/color-mode": "^3.5.2", + "@scalar/nuxt": "^0.5.66", "@tailwindcss/vite": "^4.1.8", "@types/pg": "^8.15.4", "@vueuse/core": "^13.4.0", @@ -37,7 +38,8 @@ "tw-animate-css": "^1.3.4", "vue": "^3.5.16", "vue-router": "^4.5.1", - "vue-sonner": "^2.0.1" + "vue-sonner": "^2.0.1", + "zod": "^4.3.6" }, "packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e", "devDependencies": { diff --git a/server/api/auth/github/callback.get.ts b/server/api/auth/github/callback.get.ts new file mode 100644 index 0000000..8d616aa --- /dev/null +++ b/server/api/auth/github/callback.get.ts @@ -0,0 +1,81 @@ +/** + * GitHub OAuth Callback Endpoint + * Handles OAuth callback from GitHub and creates user session + * + * @openapi + * /api/auth/github/callback: + * get: + * tags: [Authentication] + * summary: GitHub OAuth callback + * description: Handles the OAuth callback from GitHub, exchanges code for token, and creates a user session + * operationId: githubCallback + * parameters: + * - name: code + * in: query + * description: OAuth authorization code from GitHub + * required: true + * schema: + * type: string + * - name: state + * in: query + * description: OAuth state parameter for CSRF protection + * required: true + * schema: + * type: string + * responses: + * 302: + * description: Redirect to dashboard after successful authentication + * 400: + * description: Invalid or missing parameters + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Error' + * 501: + * description: Not implemented + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Error' + */ + +import { createErrorResponse, ErrorCode } from '~/server/utils/response' +import { requireRateLimit, rateLimits } from '~/server/utils/rate-limit' +import { validateQuery, commonSchemas } from '~/server/utils/validation' +import { z } from 'zod' + +const callbackQuerySchema = z.object({ + code: z.string().min(1, 'Authorization code is required'), + state: z.string().min(1, 'State parameter is required') +}) + +export default defineEventHandler(async (event) => { + // Rate limiting + await requireRateLimit(event, { + ...rateLimits.strict, + identifier: 'github-callback' + }) + + // Validate query parameters + const query = validateQuery(event, callbackQuerySchema) + + // TODO: Implement GitHub OAuth callback + // 1. Verify state parameter matches stored state + // 2. Exchange authorization code for access token with GitHub + // 3. Fetch user profile from GitHub API + // 4. Check if user exists in database + // 5. If not, create new user account + // 6. If yes, update last login timestamp + // 7. Create Better-Auth session + // 8. Set session cookie + // 9. Redirect to /dashboard + + throw createError({ + statusCode: 501, + statusMessage: 'Not Implemented', + data: createErrorResponse( + ErrorCode.NOT_IMPLEMENTED, + 'GitHub OAuth callback is not yet implemented' + ) + }) +}) diff --git a/server/api/auth/github/login.post.ts b/server/api/auth/github/login.post.ts new file mode 100644 index 0000000..691d7f5 --- /dev/null +++ b/server/api/auth/github/login.post.ts @@ -0,0 +1,51 @@ +/** + * GitHub OAuth Login Endpoint + * Redirects to GitHub for OAuth authentication + * + * @openapi + * /api/auth/github/login: + * post: + * tags: [Authentication] + * summary: Initiate GitHub OAuth login + * description: Redirects the user to GitHub for OAuth authentication + * operationId: githubLogin + * responses: + * 302: + * description: Redirect to GitHub OAuth authorization page + * 501: + * description: Not implemented + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Error' + */ + +import { createErrorResponse, createSuccessResponse, ErrorCode } from '~/server/utils/response' +import { requireRateLimit, rateLimits } from '~/server/utils/rate-limit' + +export default defineEventHandler(async (event) => { + // Rate limiting for login attempts + await requireRateLimit(event, { + ...rateLimits.strict, + identifier: 'github-login' + }) + + // TODO: Implement GitHub OAuth redirect + // 1. Generate OAuth state parameter and PKCE challenge + // 2. Store state in session/cookie + // 3. Construct GitHub authorization URL with: + // - client_id from env + // - redirect_uri to /api/auth/github/callback + // - scope (user:email, read:org) + // - state and code_challenge + // 4. Return redirect response + + throw createError({ + statusCode: 501, + statusMessage: 'Not Implemented', + data: createErrorResponse( + ErrorCode.NOT_IMPLEMENTED, + 'GitHub OAuth login is not yet implemented' + ) + }) +}) diff --git a/server/api/auth/session.get.ts b/server/api/auth/session.get.ts new file mode 100644 index 0000000..f876a4d --- /dev/null +++ b/server/api/auth/session.get.ts @@ -0,0 +1,60 @@ +/** + * Current Session Endpoint + * Returns information about the current authenticated user and session + * + * @openapi + * /api/auth/session: + * get: + * tags: [Authentication] + * summary: Get current session + * description: Returns the current user and session information if authenticated + * operationId: getCurrentSession + * security: + * - cookieAuth: [] + * responses: + * 200: + * description: Current session information + * content: + * application/json: + * schema: + * type: object + * properties: + * success: + * type: boolean + * example: true + * data: + * $ref: '#/components/schemas/Session' + * 401: + * description: Not authenticated + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Error' + */ + +import { createErrorResponse, createSuccessResponse, ErrorCode } from '~/server/utils/response' +import { requireAuth } from '~/server/utils/auth-middleware' + +export default defineEventHandler(async (event) => { + // Require authentication + const session = await requireAuth(event) + + // Return session information + return createSuccessResponse({ + user: { + id: session.user.id, + email: session.user.email, + name: session.user.name, + emailVerified: session.user.emailVerified, + image: session.user.image, + createdAt: session.user.createdAt, + updatedAt: session.user.updatedAt + }, + session: { + id: session.session.id, + userId: session.session.userId, + expiresAt: session.session.expiresAt, + activeOrganizationId: session.session.activeOrganizationId + } + }) +}) diff --git a/server/api/feedback/[id].get.ts b/server/api/feedback/[id].get.ts new file mode 100644 index 0000000..112bc80 --- /dev/null +++ b/server/api/feedback/[id].get.ts @@ -0,0 +1,96 @@ +/** + * Get Feedback Endpoint + * Retrieves a single feedback item by ID + * + * @openapi + * /api/feedback/{id}: + * get: + * tags: [Feedback] + * summary: Get feedback by ID + * description: Retrieves detailed information about a specific feedback item + * operationId: getFeedback + * parameters: + * - name: id + * in: path + * description: Feedback ID + * required: true + * schema: + * type: string + * responses: + * 200: + * description: Feedback details + * content: + * application/json: + * schema: + * type: object + * properties: + * success: + * type: boolean + * example: true + * data: + * allOf: + * - $ref: '#/components/schemas/Feedback' + * - type: object + * properties: + * author: + * $ref: '#/components/schemas/User' + * project: + * $ref: '#/components/schemas/Project' + * hasVoted: + * type: boolean + * description: Whether the current user has voted (if authenticated) + * 404: + * description: Feedback not found + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Error' + * 501: + * description: Not implemented + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Error' + */ + +import { createErrorResponse, createSuccessResponse, ErrorCode } from '~/server/utils/response' +import { optionalAuth } from '~/server/utils/auth-middleware' +import { requireRateLimit, rateLimits } from '~/server/utils/rate-limit' + +export default defineEventHandler(async (event) => { + // Optional authentication - public endpoint + const session = await optionalAuth(event) + + // Rate limiting (relaxed for public read endpoint) + await requireRateLimit(event, rateLimits.relaxed) + + // Get ID from route params + const id = getRouterParam(event, 'id') + + if (!id) { + throw createError({ + statusCode: 400, + statusMessage: 'Bad Request', + data: createErrorResponse( + ErrorCode.VALIDATION_ERROR, + 'Feedback ID is required' + ) + }) + } + + // TODO: Implement feedback retrieval + // 1. Query feedback by ID + // 2. Include author information + // 3. Include project information + // 4. If authenticated, check if user has voted + // 5. Return feedback with additional metadata + + throw createError({ + statusCode: 501, + statusMessage: 'Not Implemented', + data: createErrorResponse( + ErrorCode.NOT_IMPLEMENTED, + 'Feedback retrieval is not yet implemented' + ) + }) +}) diff --git a/server/api/feedback/[id]/vote.post.ts b/server/api/feedback/[id]/vote.post.ts new file mode 100644 index 0000000..61fa0a1 --- /dev/null +++ b/server/api/feedback/[id]/vote.post.ts @@ -0,0 +1,102 @@ +/** + * Vote on Feedback Endpoint + * Upvotes or removes vote from a feedback item + * + * @openapi + * /api/feedback/{id}/vote: + * post: + * tags: [Feedback] + * summary: Vote on feedback + * description: Toggles vote on a feedback item - upvotes if not voted, removes vote if already voted + * operationId: voteFeedback + * security: + * - cookieAuth: [] + * parameters: + * - name: id + * in: path + * description: Feedback ID + * required: true + * schema: + * type: string + * responses: + * 200: + * description: Vote toggled successfully + * content: + * application/json: + * schema: + * type: object + * properties: + * success: + * type: boolean + * example: true + * data: + * type: object + * properties: + * voted: + * type: boolean + * description: Whether the user has now voted (true) or unvoted (false) + * voteCount: + * type: integer + * description: Updated vote count + * 401: + * description: Unauthorized + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Error' + * 404: + * description: Feedback not found + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Error' + * 501: + * description: Not implemented + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Error' + */ + +import { createErrorResponse, createSuccessResponse, ErrorCode } from '~/server/utils/response' +import { requireAuth } from '~/server/utils/auth-middleware' +import { requireRateLimit, rateLimits } from '~/server/utils/rate-limit' + +export default defineEventHandler(async (event) => { + // Require authentication + const session = await requireAuth(event) + + // Rate limiting + await requireRateLimit(event, rateLimits.standard) + + // Get ID from route params + const id = getRouterParam(event, 'id') + + if (!id) { + throw createError({ + statusCode: 400, + statusMessage: 'Bad Request', + data: createErrorResponse( + ErrorCode.VALIDATION_ERROR, + 'Feedback ID is required' + ) + }) + } + + // TODO: Implement voting + // 1. Check if feedback exists + // 2. Check if user has already voted + // 3. If voted, remove vote and decrement count + // 4. If not voted, add vote and increment count + // 5. Update feedback voteCount + // 6. Return voted status and new vote count + + throw createError({ + statusCode: 501, + statusMessage: 'Not Implemented', + data: createErrorResponse( + ErrorCode.NOT_IMPLEMENTED, + 'Feedback voting is not yet implemented' + ) + }) +}) diff --git a/server/api/feedback/index.get.ts b/server/api/feedback/index.get.ts new file mode 100644 index 0000000..b976a76 --- /dev/null +++ b/server/api/feedback/index.get.ts @@ -0,0 +1,135 @@ +/** + * List Feedback Endpoint + * Retrieves a paginated list of feedback items with filtering and sorting + * + * @openapi + * /api/feedback: + * get: + * tags: [Feedback] + * summary: List feedback + * description: Retrieves a paginated list of feedback items with optional filtering and sorting + * operationId: listFeedback + * parameters: + * - name: projectId + * in: query + * description: Filter by project ID + * schema: + * type: string + * - name: status + * in: query + * description: Filter by status + * schema: + * type: string + * enum: [open, in_progress, completed, closed] + * - name: priority + * in: query + * description: Filter by priority + * schema: + * type: string + * enum: [low, medium, high] + * - name: page + * in: query + * description: Page number (starts at 1) + * schema: + * type: integer + * minimum: 1 + * default: 1 + * - name: limit + * in: query + * description: Items per page (max 100) + * schema: + * type: integer + * minimum: 1 + * maximum: 100 + * default: 20 + * - name: sortBy + * in: query + * description: Sort field + * schema: + * type: string + * enum: [createdAt, updatedAt, voteCount, title] + * default: voteCount + * - name: sortOrder + * in: query + * description: Sort direction + * schema: + * type: string + * enum: [asc, desc] + * default: desc + * responses: + * 200: + * description: List of feedback items + * content: + * application/json: + * schema: + * type: object + * properties: + * success: + * type: boolean + * example: true + * data: + * type: object + * properties: + * items: + * type: array + * items: + * $ref: '#/components/schemas/Feedback' + * pagination: + * $ref: '#/components/schemas/Pagination' + * 400: + * description: Invalid query parameters + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Error' + * 501: + * description: Not implemented + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Error' + */ + +import { z } from 'zod' +import { createErrorResponse, createSuccessResponse, ErrorCode } from '~/server/utils/response' +import { optionalAuth } from '~/server/utils/auth-middleware' +import { validateQuery, commonSchemas } from '~/server/utils/validation' +import { requireRateLimit, rateLimits } from '~/server/utils/rate-limit' + +const listFeedbackQuerySchema = z.object({ + projectId: z.string().optional(), + status: z.enum(['open', 'in_progress', 'completed', 'closed']).optional(), + priority: z.enum(['low', 'medium', 'high']).optional(), + page: z.coerce.number().int().positive().default(1), + limit: z.coerce.number().int().positive().max(100).default(20), + sortBy: z.enum(['createdAt', 'updatedAt', 'voteCount', 'title']).default('voteCount'), + sortOrder: z.enum(['asc', 'desc']).default('desc') +}) + +export default defineEventHandler(async (event) => { + // Optional authentication - public endpoint + const session = await optionalAuth(event) + + // Rate limiting (relaxed for public read endpoint) + await requireRateLimit(event, rateLimits.relaxed) + + // Validate query parameters + const query = validateQuery(event, listFeedbackQuerySchema) + + // TODO: Implement feedback listing + // 1. Build query with filters (projectId, status, priority) + // 2. Apply sorting (sortBy, sortOrder) + // 3. Apply pagination (page, limit) + // 4. Count total items for pagination + // 5. If authenticated, include user vote status for each item + // 6. Return paginated results + + throw createError({ + statusCode: 501, + statusMessage: 'Not Implemented', + data: createErrorResponse( + ErrorCode.NOT_IMPLEMENTED, + 'Feedback listing is not yet implemented' + ) + }) +}) diff --git a/server/api/feedback/index.post.ts b/server/api/feedback/index.post.ts new file mode 100644 index 0000000..94f425d --- /dev/null +++ b/server/api/feedback/index.post.ts @@ -0,0 +1,122 @@ +/** + * Create Feedback Endpoint + * Creates a new feedback item for a project + * + * @openapi + * /api/feedback: + * post: + * tags: [Feedback] + * summary: Create feedback + * description: Creates a new feedback item (feature request or bug report) for a project + * operationId: createFeedback + * security: + * - cookieAuth: [] + * requestBody: + * required: true + * content: + * application/json: + * schema: + * type: object + * required: + * - title + * - description + * - projectId + * properties: + * title: + * type: string + * description: Feedback title + * example: Add dark mode support + * description: + * type: string + * description: Detailed description of the feedback + * example: Would love to have a dark mode option for the dashboard + * projectId: + * type: string + * description: ID of the project this feedback is for + * priority: + * type: string + * enum: [low, medium, high] + * default: medium + * description: Priority level + * responses: + * 201: + * description: Feedback created successfully + * content: + * application/json: + * schema: + * type: object + * properties: + * success: + * type: boolean + * example: true + * data: + * $ref: '#/components/schemas/Feedback' + * 400: + * description: Validation error + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Error' + * 401: + * description: Unauthorized + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Error' + * 404: + * description: Project not found + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Error' + * 501: + * description: Not implemented + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Error' + */ + +import { z } from 'zod' +import { createErrorResponse, createSuccessResponse, ErrorCode } from '~/server/utils/response' +import { requireAuth } from '~/server/utils/auth-middleware' +import { validateBody } from '~/server/utils/validation' +import { requireRateLimit, rateLimits } from '~/server/utils/rate-limit' + +const createFeedbackSchema = z.object({ + title: z.string() + .min(1, 'Title is required') + .max(200, 'Title too long'), + description: z.string() + .min(1, 'Description is required') + .max(5000, 'Description too long'), + projectId: z.string().min(1, 'Project ID is required'), + priority: z.enum(['low', 'medium', 'high']).default('medium') +}) + +export default defineEventHandler(async (event) => { + // Require authentication + const session = await requireAuth(event) + + // Rate limiting + await requireRateLimit(event, rateLimits.standard) + + // Validate request body + const body = await validateBody(event, createFeedbackSchema) + + // TODO: Implement feedback creation + // 1. Verify project exists + // 2. Create feedback record with status 'open' + // 3. Initialize vote count to 0 + // 4. Optionally auto-vote from creator + // 5. Return created feedback + + throw createError({ + statusCode: 501, + statusMessage: 'Not Implemented', + data: createErrorResponse( + ErrorCode.NOT_IMPLEMENTED, + 'Feedback creation is not yet implemented' + ) + }) +}) diff --git a/server/api/github/issues.get.ts b/server/api/github/issues.get.ts new file mode 100644 index 0000000..cf778da --- /dev/null +++ b/server/api/github/issues.get.ts @@ -0,0 +1,141 @@ +/** + * Search GitHub Issues Endpoint + * Searches GitHub issues in a repository + * + * @openapi + * /api/github/issues: + * get: + * tags: [GitHub] + * summary: Search GitHub issues + * description: Searches for issues in a GitHub repository + * operationId: searchGitHubIssues + * security: + * - cookieAuth: [] + * parameters: + * - name: repo + * in: query + * description: GitHub repository in format "owner/repo" + * required: true + * schema: + * type: string + * example: facebook/react + * - name: query + * in: query + * description: Search query + * schema: + * type: string + * - name: state + * in: query + * description: Issue state filter + * schema: + * type: string + * enum: [open, closed, all] + * default: open + * - name: page + * in: query + * description: Page number + * schema: + * type: integer + * minimum: 1 + * default: 1 + * - name: per_page + * in: query + * description: Results per page + * schema: + * type: integer + * minimum: 1 + * maximum: 100 + * default: 30 + * responses: + * 200: + * description: List of GitHub issues + * content: + * application/json: + * schema: + * type: object + * properties: + * success: + * type: boolean + * example: true + * data: + * type: object + * properties: + * issues: + * type: array + * items: + * type: object + * properties: + * number: + * type: integer + * title: + * type: string + * state: + * type: string + * html_url: + * type: string + * created_at: + * type: string + * format: date-time + * total_count: + * type: integer + * 400: + * description: Invalid parameters + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Error' + * 401: + * description: Unauthorized + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Error' + * 501: + * description: Not implemented + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Error' + */ + +import { z } from 'zod' +import { createErrorResponse, createSuccessResponse, ErrorCode } from '~/server/utils/response' +import { requireAuth } from '~/server/utils/auth-middleware' +import { validateQuery } from '~/server/utils/validation' +import { requireRateLimit, rateLimits } from '~/server/utils/rate-limit' + +const searchIssuesQuerySchema = z.object({ + repo: z.string() + .regex(/^[\w-]+\/[\w-]+$/, 'Repository must be in format "owner/repo"'), + query: z.string().optional(), + state: z.enum(['open', 'closed', 'all']).default('open'), + page: z.coerce.number().int().positive().default(1), + per_page: z.coerce.number().int().positive().max(100).default(30) +}) + +export default defineEventHandler(async (event) => { + // Require authentication + const session = await requireAuth(event) + + // Rate limiting + await requireRateLimit(event, rateLimits.standard) + + // Validate query parameters + const query = validateQuery(event, searchIssuesQuerySchema) + + // TODO: Implement GitHub issues search + // 1. Get GitHub access token from user account or organization settings + // 2. Make authenticated request to GitHub API + // 3. Search issues with filters (state, query) + // 4. Apply pagination + // 5. Return formatted results + + throw createError({ + statusCode: 501, + statusMessage: 'Not Implemented', + data: createErrorResponse( + ErrorCode.NOT_IMPLEMENTED, + 'GitHub issues search is not yet implemented' + ) + }) +}) diff --git a/server/api/github/issues.post.ts b/server/api/github/issues.post.ts new file mode 100644 index 0000000..0410e2a --- /dev/null +++ b/server/api/github/issues.post.ts @@ -0,0 +1,149 @@ +/** + * Create GitHub Issue Endpoint + * Creates a GitHub issue from a feedback item + * + * @openapi + * /api/github/issues: + * post: + * tags: [GitHub] + * summary: Create GitHub issue from feedback + * description: Creates a new GitHub issue and links it to a feedback item + * operationId: createGitHubIssue + * security: + * - cookieAuth: [] + * requestBody: + * required: true + * content: + * application/json: + * schema: + * type: object + * required: + * - feedbackId + * - repo + * properties: + * feedbackId: + * type: string + * description: ID of the feedback item to create issue from + * repo: + * type: string + * description: GitHub repository in format "owner/repo" + * example: facebook/react + * title: + * type: string + * description: Issue title (defaults to feedback title) + * nullable: true + * body: + * type: string + * description: Issue body (defaults to feedback description with link) + * nullable: true + * labels: + * type: array + * description: Issue labels + * items: + * type: string + * example: [feature, user-feedback] + * responses: + * 201: + * description: GitHub issue created successfully + * content: + * application/json: + * schema: + * type: object + * properties: + * success: + * type: boolean + * example: true + * data: + * type: object + * properties: + * issue: + * type: object + * properties: + * number: + * type: integer + * title: + * type: string + * html_url: + * type: string + * format: uri + * feedback: + * $ref: '#/components/schemas/Feedback' + * 400: + * description: Validation error + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Error' + * 401: + * description: Unauthorized + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Error' + * 403: + * description: Insufficient permissions + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Error' + * 404: + * description: Feedback not found + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Error' + * 501: + * description: Not implemented + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Error' + */ + +import { z } from 'zod' +import { createErrorResponse, createSuccessResponse, ErrorCode } from '~/server/utils/response' +import { requireAuth } from '~/server/utils/auth-middleware' +import { validateBody } from '~/server/utils/validation' +import { requireRateLimit, rateLimits } from '~/server/utils/rate-limit' + +const createGitHubIssueSchema = z.object({ + feedbackId: z.string().min(1, 'Feedback ID is required'), + repo: z.string() + .regex(/^[\w-]+\/[\w-]+$/, 'Repository must be in format "owner/repo"'), + title: z.string().optional().nullable(), + body: z.string().optional().nullable(), + labels: z.array(z.string()).optional().default([]) +}) + +export default defineEventHandler(async (event) => { + // Require authentication + const session = await requireAuth(event) + + // Rate limiting + await requireRateLimit(event, rateLimits.standard) + + // Validate request body + const body = await validateBody(event, createGitHubIssueSchema) + + // TODO: Implement GitHub issue creation + // 1. Verify feedback exists + // 2. Check user has permission (owner/admin of project's org) + // 3. Verify repo matches project's githubRepoUrl + // 4. Get GitHub access token + // 5. Create issue on GitHub with: + // - Title: body.title or feedback.title + // - Body: body.body or feedback.description + link to Veerify + // - Labels: body.labels + feedback.priority + // 6. Update feedback with githubIssueNumber + // 7. Update feedback status to 'in_progress' + // 8. Return created issue and updated feedback + + throw createError({ + statusCode: 501, + statusMessage: 'Not Implemented', + data: createErrorResponse( + ErrorCode.NOT_IMPLEMENTED, + 'GitHub issue creation is not yet implemented' + ) + }) +}) diff --git a/server/api/github/webhook.post.ts b/server/api/github/webhook.post.ts new file mode 100644 index 0000000..9f40b1e --- /dev/null +++ b/server/api/github/webhook.post.ts @@ -0,0 +1,120 @@ +/** + * GitHub Webhook Endpoint + * Receives and processes GitHub webhook events (issues, pull requests, etc.) + * + * @openapi + * /api/github/webhook: + * post: + * tags: [GitHub] + * summary: GitHub webhook receiver + * description: Receives GitHub webhook events and syncs issue status with feedback items + * operationId: githubWebhook + * parameters: + * - name: X-GitHub-Event + * in: header + * description: GitHub event type + * required: true + * schema: + * type: string + * example: issues + * - name: X-Hub-Signature-256 + * in: header + * description: HMAC signature for payload verification + * required: true + * schema: + * type: string + * - name: X-GitHub-Delivery + * in: header + * description: Unique delivery ID + * schema: + * type: string + * requestBody: + * required: true + * content: + * application/json: + * schema: + * type: object + * description: GitHub webhook payload (varies by event type) + * responses: + * 200: + * description: Webhook processed successfully + * content: + * application/json: + * schema: + * type: object + * properties: + * success: + * type: boolean + * example: true + * data: + * type: object + * properties: + * processed: + * type: boolean + * description: Whether the event was processed + * event: + * type: string + * description: Event type that was processed + * 400: + * description: Invalid payload or signature + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Error' + * 501: + * description: Not implemented + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Error' + */ + +import { createErrorResponse, createSuccessResponse, ErrorCode } from '~/server/utils/response' +import { requireRateLimit, rateLimits } from '~/server/utils/rate-limit' + +export default defineEventHandler(async (event) => { + // Rate limiting (high limit for webhooks) + await requireRateLimit(event, { + ...rateLimits.webhook, + identifier: 'github-webhook' + }) + + // Get GitHub webhook headers + const githubEvent = getHeader(event, 'X-GitHub-Event') + const signature = getHeader(event, 'X-Hub-Signature-256') + const deliveryId = getHeader(event, 'X-GitHub-Delivery') + + if (!githubEvent || !signature) { + throw createError({ + statusCode: 400, + statusMessage: 'Bad Request', + data: createErrorResponse( + ErrorCode.VALIDATION_ERROR, + 'Missing required GitHub webhook headers' + ) + }) + } + + // Read webhook payload + const payload = await readBody(event) + + // TODO: Implement GitHub webhook processing + // 1. Verify webhook signature using GITHUB_WEBHOOK_SECRET + // 2. Parse event type (issues, pull_request, etc.) + // 3. Handle different event actions: + // - issues.opened: Link to feedback if reference exists + // - issues.closed: Update feedback status to 'completed' + // - issues.reopened: Update feedback status to 'open' + // - pull_request.merged: Update related feedback status + // 4. Log webhook delivery for debugging + // 5. Return processing result + + throw createError({ + statusCode: 501, + statusMessage: 'Not Implemented', + data: createErrorResponse( + ErrorCode.NOT_IMPLEMENTED, + 'GitHub webhook processing is not yet implemented' + ) + }) +}) diff --git a/server/api/openapi.json.get.ts b/server/api/openapi.json.get.ts new file mode 100644 index 0000000..7553c55 --- /dev/null +++ b/server/api/openapi.json.get.ts @@ -0,0 +1,135 @@ +/** + * OpenAPI Specification Endpoint + * Serves the OpenAPI 3.0 specification for all API endpoints + */ + +export default defineEventHandler((event) => { + const spec = { + openapi: '3.0.0', + info: { + title: 'Veerify API', + version: '1.0.0', + description: 'API documentation for Veerify - Feedback management and verification platform', + contact: { + name: 'Veerify Support', + email: 'support@veerify.com' + } + }, + servers: [ + { + url: import.meta.dev ? 'http://localhost:3000' : 'https://api.veerify.com', + description: import.meta.dev ? 'Development server' : 'Production server' + } + ], + tags: [ + { name: 'Authentication', description: 'Authentication and session management' }, + { name: 'Organizations', description: 'Organization management' }, + { name: 'Projects', description: 'Project management' }, + { name: 'Feedback', description: 'Feedback and feature request management' }, + { name: 'GitHub', description: 'GitHub integration endpoints' } + ], + components: { + securitySchemes: { + cookieAuth: { + type: 'apiKey', + in: 'cookie', + name: 'better-auth.session_token', + description: 'Session cookie set by Better-Auth' + } + }, + schemas: { + Error: { + type: 'object', + properties: { + success: { type: 'boolean', example: false }, + error: { + type: 'object', + properties: { + code: { type: 'string', example: 'VALIDATION_ERROR' }, + message: { type: 'string', example: 'Request validation failed' }, + details: { type: 'object' } + } + } + } + }, + Success: { + type: 'object', + properties: { + success: { type: 'boolean', example: true }, + data: { type: 'object' }, + message: { type: 'string' } + } + }, + User: { + type: 'object', + properties: { + id: { type: 'string', example: 'usr_123' }, + email: { type: 'string', format: 'email' }, + name: { type: 'string' }, + emailVerified: { type: 'boolean' }, + image: { type: 'string', format: 'uri', nullable: true }, + createdAt: { type: 'string', format: 'date-time' }, + updatedAt: { type: 'string', format: 'date-time' } + } + }, + Session: { + type: 'object', + properties: { + user: { $ref: '#/components/schemas/User' }, + session: { + type: 'object', + properties: { + id: { type: 'string' }, + userId: { type: 'string' }, + expiresAt: { type: 'string', format: 'date-time' }, + activeOrganizationId: { type: 'string', nullable: true } + } + } + } + }, + Organization: { + type: 'object', + properties: { + id: { type: 'string', example: 'org_123' }, + name: { type: 'string', example: 'Acme Inc.' }, + slug: { type: 'string', example: 'acme-inc' }, + logo: { type: 'string', format: 'uri', nullable: true }, + createdAt: { type: 'string', format: 'date-time' } + } + }, + Project: { + type: 'object', + properties: { + id: { type: 'string', example: 'prj_123' }, + name: { type: 'string', example: 'My Project' }, + slug: { type: 'string', example: 'my-project' }, + description: { type: 'string', nullable: true }, + organizationId: { type: 'string' }, + githubRepoUrl: { type: 'string', format: 'uri', nullable: true }, + createdAt: { type: 'string', format: 'date-time' }, + updatedAt: { type: 'string', format: 'date-time' } + } + }, + Feedback: { + type: 'object', + properties: { + id: { type: 'string', example: 'fb_123' }, + title: { type: 'string' }, + description: { type: 'string' }, + status: { type: 'string', enum: ['open', 'in_progress', 'completed', 'closed'] }, + priority: { type: 'string', enum: ['low', 'medium', 'high'] }, + voteCount: { type: 'integer' }, + projectId: { type: 'string' }, + authorId: { type: 'string' }, + githubIssueNumber: { type: 'integer', nullable: true }, + createdAt: { type: 'string', format: 'date-time' }, + updatedAt: { type: 'string', format: 'date-time' } + } + } + } + }, + paths: {} // Paths will be added as routes are implemented + } + + return spec +}) diff --git a/server/api/orgs/[slug].get.ts b/server/api/orgs/[slug].get.ts new file mode 100644 index 0000000..68b745d --- /dev/null +++ b/server/api/orgs/[slug].get.ts @@ -0,0 +1,112 @@ +/** + * Get Organization Endpoint + * Retrieves organization details by slug + * + * @openapi + * /api/orgs/{slug}: + * get: + * tags: [Organizations] + * summary: Get organization by slug + * description: Retrieves organization information including member count and metadata + * operationId: getOrganization + * security: + * - cookieAuth: [] + * parameters: + * - name: slug + * in: path + * description: Organization slug + * required: true + * schema: + * type: string + * pattern: ^[a-z0-9-]+$ + * responses: + * 200: + * description: Organization details + * content: + * application/json: + * schema: + * type: object + * properties: + * success: + * type: boolean + * example: true + * data: + * allOf: + * - $ref: '#/components/schemas/Organization' + * - type: object + * properties: + * memberCount: + * type: integer + * description: Number of members in the organization + * currentUserRole: + * type: string + * enum: [owner, admin, member] + * description: Current user's role in the organization + * 401: + * description: Unauthorized + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Error' + * 403: + * description: Not a member of this organization + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Error' + * 404: + * description: Organization not found + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Error' + * 501: + * description: Not implemented + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Error' + */ + +import { createErrorResponse, createSuccessResponse, ErrorCode } from '~/server/utils/response' +import { requireAuth } from '~/server/utils/auth-middleware' +import { requireRateLimit, rateLimits } from '~/server/utils/rate-limit' + +export default defineEventHandler(async (event) => { + // Require authentication + const session = await requireAuth(event) + + // Rate limiting + await requireRateLimit(event, rateLimits.standard) + + // Get slug from route params + const slug = getRouterParam(event, 'slug') + + if (!slug) { + throw createError({ + statusCode: 400, + statusMessage: 'Bad Request', + data: createErrorResponse( + ErrorCode.VALIDATION_ERROR, + 'Organization slug is required' + ) + }) + } + + // TODO: Implement organization retrieval + // 1. Query organization by slug + // 2. Check if user is a member of the organization + // 3. If not a member, throw 403 Forbidden + // 4. Get member count + // 5. Get current user's role + // 6. Return organization with additional metadata + + throw createError({ + statusCode: 501, + statusMessage: 'Not Implemented', + data: createErrorResponse( + ErrorCode.NOT_IMPLEMENTED, + 'Organization retrieval is not yet implemented' + ) + }) +}) diff --git a/server/api/orgs/[slug]/projects.post.ts b/server/api/orgs/[slug]/projects.post.ts new file mode 100644 index 0000000..22ca7eb --- /dev/null +++ b/server/api/orgs/[slug]/projects.post.ts @@ -0,0 +1,157 @@ +/** + * Create Project Endpoint + * Creates a new project within an organization + * + * @openapi + * /api/orgs/{slug}/projects: + * post: + * tags: [Projects] + * summary: Create project + * description: Creates a new project within the specified organization + * operationId: createProject + * security: + * - cookieAuth: [] + * parameters: + * - name: slug + * in: path + * description: Organization slug + * required: true + * schema: + * type: string + * pattern: ^[a-z0-9-]+$ + * requestBody: + * required: true + * content: + * application/json: + * schema: + * type: object + * required: + * - name + * - slug + * properties: + * name: + * type: string + * description: Project name + * example: My Awesome App + * slug: + * type: string + * description: URL-friendly unique identifier + * pattern: ^[a-z0-9-]+$ + * example: my-awesome-app + * description: + * type: string + * description: Project description + * nullable: true + * githubRepoUrl: + * type: string + * format: uri + * description: GitHub repository URL + * example: https://github.com/org/repo + * nullable: true + * responses: + * 201: + * description: Project created successfully + * content: + * application/json: + * schema: + * type: object + * properties: + * success: + * type: boolean + * example: true + * data: + * $ref: '#/components/schemas/Project' + * 400: + * description: Validation error + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Error' + * 401: + * description: Unauthorized + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Error' + * 403: + * description: Insufficient permissions (requires admin or owner role) + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Error' + * 404: + * description: Organization not found + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Error' + * 409: + * description: Project slug already exists in this organization + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Error' + * 501: + * description: Not implemented + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Error' + */ + +import { z } from 'zod' +import { createErrorResponse, createSuccessResponse, ErrorCode } from '~/server/utils/response' +import { requireAuth } from '~/server/utils/auth-middleware' +import { validateBody, commonSchemas } from '~/server/utils/validation' +import { requireRateLimit, rateLimits } from '~/server/utils/rate-limit' + +const createProjectSchema = z.object({ + name: z.string() + .min(1, 'Project name is required') + .max(100, 'Project name too long'), + slug: commonSchemas.slug, + description: z.string().max(1000, 'Description too long').optional().nullable(), + githubRepoUrl: z.string().url('Invalid GitHub repository URL').optional().nullable() +}) + +export default defineEventHandler(async (event) => { + // Require authentication + const session = await requireAuth(event) + + // Rate limiting + await requireRateLimit(event, rateLimits.standard) + + // Get org slug from route params + const orgSlug = getRouterParam(event, 'slug') + + if (!orgSlug) { + throw createError({ + statusCode: 400, + statusMessage: 'Bad Request', + data: createErrorResponse( + ErrorCode.VALIDATION_ERROR, + 'Organization slug is required' + ) + }) + } + + // Validate request body + const body = await validateBody(event, createProjectSchema) + + // TODO: Implement project creation + // 1. Verify organization exists + // 2. Check user has admin/owner role in organization + // 3. Check if project slug is unique within organization + // 4. If githubRepoUrl provided, validate it's a valid GitHub URL + // 5. Create project record + // 6. Return created project + + throw createError({ + statusCode: 501, + statusMessage: 'Not Implemented', + data: createErrorResponse( + ErrorCode.NOT_IMPLEMENTED, + 'Project creation is not yet implemented' + ) + }) +}) diff --git a/server/api/orgs/index.post.ts b/server/api/orgs/index.post.ts new file mode 100644 index 0000000..a11db8f --- /dev/null +++ b/server/api/orgs/index.post.ts @@ -0,0 +1,117 @@ +/** + * Create Organization Endpoint + * Creates a new organization + * + * @openapi + * /api/orgs: + * post: + * tags: [Organizations] + * summary: Create organization + * description: Creates a new organization and makes the current user an owner + * operationId: createOrganization + * security: + * - cookieAuth: [] + * requestBody: + * required: true + * content: + * application/json: + * schema: + * type: object + * required: + * - name + * - slug + * properties: + * name: + * type: string + * description: Organization name + * example: Acme Inc. + * slug: + * type: string + * description: URL-friendly unique identifier + * pattern: ^[a-z0-9-]+$ + * example: acme-inc + * logo: + * type: string + * format: uri + * description: Organization logo URL + * nullable: true + * responses: + * 201: + * description: Organization created successfully + * content: + * application/json: + * schema: + * type: object + * properties: + * success: + * type: boolean + * example: true + * data: + * $ref: '#/components/schemas/Organization' + * 400: + * description: Validation error + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Error' + * 401: + * description: Unauthorized + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Error' + * 409: + * description: Organization slug already exists + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Error' + * 501: + * description: Not implemented + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Error' + */ + +import { z } from 'zod' +import { createErrorResponse, createSuccessResponse, ErrorCode } from '~/server/utils/response' +import { requireAuth } from '~/server/utils/auth-middleware' +import { validateBody, commonSchemas } from '~/server/utils/validation' +import { requireRateLimit, rateLimits } from '~/server/utils/rate-limit' + +const createOrganizationSchema = z.object({ + name: z.string() + .min(1, 'Organization name is required') + .max(100, 'Organization name too long'), + slug: commonSchemas.slug, + logo: commonSchemas.url.optional().nullable() +}) + +export default defineEventHandler(async (event) => { + // Require authentication + const session = await requireAuth(event) + + // Rate limiting + await requireRateLimit(event, rateLimits.standard) + + // Validate request body + const body = await validateBody(event, createOrganizationSchema) + + // TODO: Implement organization creation + // 1. Check if slug is already taken + // 2. Check if user has reached max organizations limit (5) + // 3. Create organization record in database + // 4. Create member record with role 'owner' for current user + // 5. Set activeOrganizationId in session + // 6. Return created organization + + throw createError({ + statusCode: 501, + statusMessage: 'Not Implemented', + data: createErrorResponse( + ErrorCode.NOT_IMPLEMENTED, + 'Organization creation is not yet implemented' + ) + }) +}) diff --git a/server/api/projects/[slug].get.ts b/server/api/projects/[slug].get.ts new file mode 100644 index 0000000..f02271f --- /dev/null +++ b/server/api/projects/[slug].get.ts @@ -0,0 +1,95 @@ +/** + * Get Project Endpoint + * Retrieves project details by slug + * + * @openapi + * /api/projects/{slug}: + * get: + * tags: [Projects] + * summary: Get project by slug + * description: Retrieves project information including feedback count and organization details + * operationId: getProject + * parameters: + * - name: slug + * in: path + * description: Project slug + * required: true + * schema: + * type: string + * pattern: ^[a-z0-9-]+$ + * responses: + * 200: + * description: Project details + * content: + * application/json: + * schema: + * type: object + * properties: + * success: + * type: boolean + * example: true + * data: + * allOf: + * - $ref: '#/components/schemas/Project' + * - type: object + * properties: + * feedbackCount: + * type: integer + * description: Number of feedback items for this project + * organization: + * $ref: '#/components/schemas/Organization' + * 404: + * description: Project not found + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Error' + * 501: + * description: Not implemented + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Error' + */ + +import { createErrorResponse, createSuccessResponse, ErrorCode } from '~/server/utils/response' +import { optionalAuth } from '~/server/utils/auth-middleware' +import { requireRateLimit, rateLimits } from '~/server/utils/rate-limit' + +export default defineEventHandler(async (event) => { + // Optional authentication - public endpoint but may show additional info if authenticated + const session = await optionalAuth(event) + + // Rate limiting (relaxed for public read endpoint) + await requireRateLimit(event, rateLimits.relaxed) + + // Get slug from route params + const slug = getRouterParam(event, 'slug') + + if (!slug) { + throw createError({ + statusCode: 400, + statusMessage: 'Bad Request', + data: createErrorResponse( + ErrorCode.VALIDATION_ERROR, + 'Project slug is required' + ) + }) + } + + // TODO: Implement project retrieval + // 1. Query project by slug + // 2. Include organization information + // 3. Count feedback items + // 4. If authenticated, include user-specific data (e.g., has voted) + // 5. Return project with additional metadata + + throw createError({ + statusCode: 501, + statusMessage: 'Not Implemented', + data: createErrorResponse( + ErrorCode.NOT_IMPLEMENTED, + 'Project retrieval is not yet implemented' + ) + }) +}) diff --git a/server/utils/auth-middleware.ts b/server/utils/auth-middleware.ts new file mode 100644 index 0000000..5de8b52 --- /dev/null +++ b/server/utils/auth-middleware.ts @@ -0,0 +1,123 @@ +/** + * Authentication middleware utilities + * Provides session validation and anonymous session handling + */ + +import type { H3Event } from 'h3' +import { auth } from '~/lib/auth' +import { ErrorCode, createErrorResponse } from './response' + +export interface AuthSession { + user: { + id: string + email: string + name: string + emailVerified: boolean + image?: string + createdAt: Date + updatedAt: Date + } + session: { + id: string + userId: string + expiresAt: Date + token: string + ipAddress?: string + userAgent?: string + activeOrganizationId?: string + } +} + +/** + * Requires authentication - throws 401 if not authenticated + * @param event - H3 event + * @returns Authenticated session + * @throws 401 Unauthorized if no valid session + */ +export async function requireAuth(event: H3Event): Promise { + const session = await auth.api.getSession({ + headers: event.node.req.headers as any, + }) + + if (!session?.user) { + throw createError({ + statusCode: 401, + statusMessage: 'Unauthorized', + data: createErrorResponse( + ErrorCode.UNAUTHORIZED, + 'Authentication required' + ) + }) + } + + return session as AuthSession +} + +/** + * Optional authentication - returns session if available, null otherwise + * Does not throw, suitable for endpoints that work with or without auth + * @param event - H3 event + * @returns Authenticated session or null + */ +export async function optionalAuth(event: H3Event): Promise { + try { + const session = await auth.api.getSession({ + headers: event.node.req.headers as any, + }) + + if (!session?.user) { + return null + } + + return session as AuthSession + } catch (error) { + return null + } +} + +/** + * Checks if user has a specific role in an organization + * @param session - Auth session + * @param organizationId - Organization ID to check + * @param allowedRoles - Array of allowed roles (defaults to ['admin', 'owner']) + * @returns True if user has required role + */ +export async function hasOrganizationRole( + session: AuthSession, + organizationId: string, + allowedRoles: string[] = ['admin', 'owner'] +): Promise { + // This will be implemented once we have the member table queries + // For now, return false as a placeholder + return false +} + +/** + * Requires specific organization role - throws 403 if insufficient permissions + * @param event - H3 event + * @param organizationId - Organization ID + * @param allowedRoles - Array of allowed roles + * @throws 401 if not authenticated, 403 if insufficient permissions + */ +export async function requireOrganizationRole( + event: H3Event, + organizationId: string, + allowedRoles: string[] = ['admin', 'owner'] +): Promise { + const session = await requireAuth(event) + + const hasRole = await hasOrganizationRole(session, organizationId, allowedRoles) + + if (!hasRole) { + throw createError({ + statusCode: 403, + statusMessage: 'Forbidden', + data: createErrorResponse( + ErrorCode.FORBIDDEN, + 'Insufficient permissions' + ) + }) + } + + return session +} diff --git a/server/utils/openapi.ts b/server/utils/openapi.ts new file mode 100644 index 0000000..931d914 --- /dev/null +++ b/server/utils/openapi.ts @@ -0,0 +1,238 @@ +/** + * OpenAPI documentation utilities + * Provides helpers for documenting API endpoints + */ + +export interface OpenAPIOperation { + summary: string + description?: string + tags?: string[] + operationId?: string + security?: Array<{ [key: string]: string[] }> + parameters?: OpenAPIParameter[] + requestBody?: OpenAPIRequestBody + responses: { + [statusCode: string]: OpenAPIResponse + } +} + +export interface OpenAPIParameter { + name: string + in: 'path' | 'query' | 'header' | 'cookie' + description?: string + required?: boolean + schema: OpenAPISchema +} + +export interface OpenAPIRequestBody { + description?: string + required?: boolean + content: { + [mediaType: string]: { + schema: OpenAPISchema + } + } +} + +export interface OpenAPIResponse { + description: string + content?: { + [mediaType: string]: { + schema: OpenAPISchema + } + } +} + +export interface OpenAPISchema { + type?: string + properties?: { [key: string]: OpenAPISchema } + items?: OpenAPISchema + required?: string[] + example?: any + enum?: any[] + format?: string + description?: string + $ref?: string +} + +/** + * Helper to create OpenAPI metadata for route handlers + * This metadata can be extracted and compiled into the OpenAPI spec + */ +export function defineOpenAPIRoute(operation: OpenAPIOperation) { + return { + __openapi: operation + } +} + +/** + * Common OpenAPI schemas for reuse + */ +export const commonSchemas = { + Error: { + type: 'object', + properties: { + success: { type: 'boolean', example: false }, + error: { + type: 'object', + properties: { + code: { type: 'string', example: 'VALIDATION_ERROR' }, + message: { type: 'string', example: 'Request validation failed' }, + details: { type: 'object' } + } + } + } + } as OpenAPISchema, + + Success: { + type: 'object', + properties: { + success: { type: 'boolean', example: true }, + data: { type: 'object' }, + message: { type: 'string' } + } + } as OpenAPISchema, + + Pagination: { + type: 'object', + properties: { + page: { type: 'integer', example: 1 }, + limit: { type: 'integer', example: 20 }, + total: { type: 'integer', example: 100 }, + totalPages: { type: 'integer', example: 5 } + } + } as OpenAPISchema, + + User: { + type: 'object', + properties: { + id: { type: 'string', example: 'usr_123' }, + email: { type: 'string', format: 'email', example: 'user@example.com' }, + name: { type: 'string', example: 'John Doe' }, + emailVerified: { type: 'boolean', example: true }, + image: { type: 'string', format: 'uri', example: 'https://example.com/avatar.jpg' }, + createdAt: { type: 'string', format: 'date-time' }, + updatedAt: { type: 'string', format: 'date-time' } + } + } as OpenAPISchema, + + Session: { + type: 'object', + properties: { + id: { type: 'string', example: 'ses_123' }, + userId: { type: 'string', example: 'usr_123' }, + expiresAt: { type: 'string', format: 'date-time' }, + activeOrganizationId: { type: 'string', example: 'org_123' } + } + } as OpenAPISchema, + + Organization: { + type: 'object', + properties: { + id: { type: 'string', example: 'org_123' }, + name: { type: 'string', example: 'Acme Inc.' }, + slug: { type: 'string', example: 'acme-inc' }, + logo: { type: 'string', format: 'uri' }, + createdAt: { type: 'string', format: 'date-time' } + } + } as OpenAPISchema, + + Project: { + type: 'object', + properties: { + id: { type: 'string', example: 'prj_123' }, + name: { type: 'string', example: 'My Project' }, + slug: { type: 'string', example: 'my-project' }, + description: { type: 'string', example: 'A great project' }, + organizationId: { type: 'string', example: 'org_123' }, + githubRepoUrl: { type: 'string', format: 'uri', example: 'https://github.com/org/repo' }, + createdAt: { type: 'string', format: 'date-time' }, + updatedAt: { type: 'string', format: 'date-time' } + } + } as OpenAPISchema, + + Feedback: { + type: 'object', + properties: { + id: { type: 'string', example: 'fb_123' }, + title: { type: 'string', example: 'Feature request' }, + description: { type: 'string', example: 'Please add dark mode' }, + status: { type: 'string', enum: ['open', 'in_progress', 'completed', 'closed'] }, + priority: { type: 'string', enum: ['low', 'medium', 'high'] }, + voteCount: { type: 'integer', example: 42 }, + projectId: { type: 'string', example: 'prj_123' }, + authorId: { type: 'string', example: 'usr_123' }, + githubIssueNumber: { type: 'integer', example: 123 }, + createdAt: { type: 'string', format: 'date-time' }, + updatedAt: { type: 'string', format: 'date-time' } + } + } as OpenAPISchema +} + +/** + * Common OpenAPI responses + */ +export const commonResponses = { + unauthorized: { + description: 'Unauthorized - Authentication required', + content: { + 'application/json': { + schema: commonSchemas.Error + } + } + } as OpenAPIResponse, + + forbidden: { + description: 'Forbidden - Insufficient permissions', + content: { + 'application/json': { + schema: commonSchemas.Error + } + } + } as OpenAPIResponse, + + notFound: { + description: 'Not found', + content: { + 'application/json': { + schema: commonSchemas.Error + } + } + } as OpenAPIResponse, + + validationError: { + description: 'Validation error', + content: { + 'application/json': { + schema: commonSchemas.Error + } + } + } as OpenAPIResponse, + + rateLimited: { + description: 'Rate limit exceeded', + content: { + 'application/json': { + schema: commonSchemas.Error + } + } + } as OpenAPIResponse, + + notImplemented: { + description: 'Not implemented - Endpoint is scaffolded but not yet implemented', + content: { + 'application/json': { + schema: commonSchemas.Error + } + } + } as OpenAPIResponse, + + internalError: { + description: 'Internal server error', + content: { + 'application/json': { + schema: commonSchemas.Error + } + } + } as OpenAPIResponse +} diff --git a/server/utils/rate-limit.ts b/server/utils/rate-limit.ts new file mode 100644 index 0000000..8bdff05 --- /dev/null +++ b/server/utils/rate-limit.ts @@ -0,0 +1,132 @@ +/** + * Rate limiting utilities (stub implementation) + * + * TODO: Implement actual rate limiting using Redis or in-memory store + * For production, consider using: + * - @upstash/ratelimit with Upstash Redis + * - nuxt-rate-limit module + * - Custom implementation with node-rate-limiter-flexible + */ + +import type { H3Event } from 'h3' +import { ErrorCode, createErrorResponse } from './response' + +export interface RateLimitConfig { + /** + * Maximum number of requests allowed in the time window + */ + maxRequests: number + + /** + * Time window in seconds + */ + windowSeconds: number + + /** + * Optional identifier for different rate limit buckets + */ + identifier?: string +} + +/** + * Stub rate limiter - logs but doesn't enforce limits + * + * @param event - H3 event + * @param config - Rate limit configuration + * @returns True if within limits (always true in stub) + */ +export async function checkRateLimit( + event: H3Event, + config: RateLimitConfig +): Promise { + // Get client identifier (IP address or user ID) + const clientId = getClientId(event) + + // TODO: Implement actual rate limiting logic + // For now, just log and allow all requests + if (import.meta.dev) { + console.log(`[Rate Limit Stub] ${clientId} - ${config.identifier || 'default'}`) + } + + // In production, this should: + // 1. Check Redis/store for request count in current window + // 2. Increment counter + // 3. Return false and throw error if limit exceeded + + return true +} + +/** + * Rate limit middleware - throws 429 if limit exceeded + * + * @param event - H3 event + * @param config - Rate limit configuration + * @throws 429 Too Many Requests if rate limit exceeded + */ +export async function requireRateLimit( + event: H3Event, + config: RateLimitConfig +): Promise { + const allowed = await checkRateLimit(event, config) + + if (!allowed) { + throw createError({ + statusCode: 429, + statusMessage: 'Too Many Requests', + data: createErrorResponse( + ErrorCode.RATE_LIMITED, + 'Rate limit exceeded. Please try again later.', + { + maxRequests: config.maxRequests, + windowSeconds: config.windowSeconds, + } + ) + }) + } +} + +/** + * Gets a unique client identifier for rate limiting + * Prefers user ID if authenticated, falls back to IP address + * + * @param event - H3 event + * @returns Client identifier string + */ +function getClientId(event: H3Event): string { + // Try to get IP address + const forwarded = event.node.req.headers['x-forwarded-for'] + const ip = forwarded + ? (Array.isArray(forwarded) ? forwarded[0] : forwarded.split(',')[0]) + : event.node.req.socket.remoteAddress + + return ip || 'unknown' +} + +/** + * Common rate limit configurations + */ +export const rateLimits = { + // Strict - for sensitive operations (login, signup) + strict: { + maxRequests: 5, + windowSeconds: 60, // 5 requests per minute + }, + + // Standard - for most authenticated endpoints + standard: { + maxRequests: 60, + windowSeconds: 60, // 60 requests per minute + }, + + // Relaxed - for read-only public endpoints + relaxed: { + maxRequests: 100, + windowSeconds: 60, // 100 requests per minute + }, + + // Webhooks - for external webhooks + webhook: { + maxRequests: 1000, + windowSeconds: 60, // 1000 requests per minute + }, +} as const diff --git a/server/utils/response.ts b/server/utils/response.ts new file mode 100644 index 0000000..c39cd81 --- /dev/null +++ b/server/utils/response.ts @@ -0,0 +1,72 @@ +/** + * Standard API response utilities + * Provides consistent response formats across all endpoints + */ + +export interface ApiSuccessResponse { + success: true + data: T + message?: string +} + +export interface ApiErrorResponse { + success: false + error: { + code: string + message: string + details?: any + } +} + +export type ApiResponse = ApiSuccessResponse | ApiErrorResponse + +/** + * Creates a standardized success response + * @param data - The response data + * @param message - Optional success message + */ +export function createSuccessResponse( + data: T, + message?: string +): ApiSuccessResponse { + return { + success: true, + data, + ...(message && { message }) + } +} + +/** + * Creates a standardized error response + * @param code - Error code (e.g., VALIDATION_ERROR, UNAUTHORIZED) + * @param message - Human-readable error message + * @param details - Optional additional error details + */ +export function createErrorResponse( + code: string, + message: string, + details?: any +): ApiErrorResponse { + return { + success: false, + error: { + code, + message, + ...(details && { details }) + } + } +} + +/** + * Common error codes + */ +export const ErrorCode = { + VALIDATION_ERROR: 'VALIDATION_ERROR', + UNAUTHORIZED: 'UNAUTHORIZED', + FORBIDDEN: 'FORBIDDEN', + NOT_FOUND: 'NOT_FOUND', + CONFLICT: 'CONFLICT', + RATE_LIMITED: 'RATE_LIMITED', + INTERNAL_ERROR: 'INTERNAL_ERROR', + NOT_IMPLEMENTED: 'NOT_IMPLEMENTED' +} as const diff --git a/server/utils/validation.ts b/server/utils/validation.ts new file mode 100644 index 0000000..14fb76a --- /dev/null +++ b/server/utils/validation.ts @@ -0,0 +1,116 @@ +/** + * Input validation utilities using Zod + * Provides schema validation and standardized error handling + */ + +import { z } from 'zod' +import type { H3Event } from 'h3' +import { ErrorCode, createErrorResponse } from './response' + +/** + * Validates request body against a Zod schema + * @param event - H3 event + * @param schema - Zod schema to validate against + * @returns Validated and typed data + * @throws 400 Validation error if schema validation fails + */ +export async function validateBody( + event: H3Event, + schema: T +): Promise> { + try { + const body = await readBody(event) + const result = schema.safeParse(body) + + if (!result.success) { + throw createError({ + statusCode: 400, + statusMessage: 'Validation failed', + data: createErrorResponse( + ErrorCode.VALIDATION_ERROR, + 'Request validation failed', + result.error.errors + ) + }) + } + + return result.data + } catch (error) { + // If it's already a validation error, re-throw + if (error && typeof error === 'object' && 'statusCode' in error && error.statusCode === 400) { + throw error + } + + // Otherwise, it's a parsing error + throw createError({ + statusCode: 400, + statusMessage: 'Invalid request body', + data: createErrorResponse( + ErrorCode.VALIDATION_ERROR, + 'Failed to parse request body' + ) + }) + } +} + +/** + * Validates query parameters against a Zod schema + * @param event - H3 event + * @param schema - Zod schema to validate against + * @returns Validated and typed query parameters + * @throws 400 Validation error if schema validation fails + */ +export function validateQuery( + event: H3Event, + schema: T +): z.infer { + const query = getQuery(event) + const result = schema.safeParse(query) + + if (!result.success) { + throw createError({ + statusCode: 400, + statusMessage: 'Invalid query parameters', + data: createErrorResponse( + ErrorCode.VALIDATION_ERROR, + 'Query parameter validation failed', + result.error.errors + ) + }) + } + + return result.data +} + +/** + * Common validation schemas + */ +export const commonSchemas = { + // Pagination + pagination: z.object({ + page: z.coerce.number().int().positive().default(1), + limit: z.coerce.number().int().positive().max(100).default(20), + }), + + // Sorting + sort: z.object({ + sortBy: z.string().optional(), + sortOrder: z.enum(['asc', 'desc']).default('desc'), + }), + + // ID validation + id: z.string().min(1, 'ID is required'), + uuid: z.string().uuid('Invalid UUID format'), + + // Text fields + slug: z.string() + .min(1, 'Slug is required') + .max(100, 'Slug too long') + .regex(/^[a-z0-9-]+$/, 'Slug must contain only lowercase letters, numbers, and hyphens'), + + // Email + email: z.string().email('Invalid email format'), + + // URLs + url: z.string().url('Invalid URL format'), +} diff --git a/yarn.lock b/yarn.lock index ec92cff..804c765 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,40 @@ # yarn lockfile v1 +"@ai-sdk/gateway@3.0.13": + version "3.0.13" + resolved "https://registry.yarnpkg.com/@ai-sdk/gateway/-/gateway-3.0.13.tgz#3726b60ff411729a3bac8e5b0eeae17a34526d7c" + integrity sha512-g7nE4PFtngOZNZSy1lOPpkC+FAiHxqBJXqyRMEG7NUrEVZlz5goBdtHg1YgWRJIX776JTXAmbOI5JreAKVAsVA== + dependencies: + "@ai-sdk/provider" "3.0.2" + "@ai-sdk/provider-utils" "4.0.5" + "@vercel/oidc" "3.1.0" + +"@ai-sdk/provider-utils@4.0.5": + version "4.0.5" + resolved "https://registry.yarnpkg.com/@ai-sdk/provider-utils/-/provider-utils-4.0.5.tgz#ab531c9f78ac30e33ba1f66ca6e901f6cf68fec9" + integrity sha512-Ow/X/SEkeExTTc1x+nYLB9ZHK2WUId8+9TlkamAx7Tl9vxU+cKzWx2dwjgMHeCN6twrgwkLrrtqckQeO4mxgVA== + dependencies: + "@ai-sdk/provider" "3.0.2" + "@standard-schema/spec" "^1.1.0" + eventsource-parser "^3.0.6" + +"@ai-sdk/provider@3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@ai-sdk/provider/-/provider-3.0.2.tgz#d4ee0b53e2c0b2a1b3e36f7356844fda53e63487" + integrity sha512-HrEmNt/BH/hkQ7zpi2o6N3k1ZR1QTb7z85WYhYygiTxOQuaml4CMtHCWRbric5WPU+RNsYI7r1EpyVQMKO1pYw== + dependencies: + json-schema "^0.4.0" + +"@ai-sdk/vue@3.0.33": + version "3.0.33" + resolved "https://registry.yarnpkg.com/@ai-sdk/vue/-/vue-3.0.33.tgz#b42d513d5909f9acd933426c8194bec2e4dc2a6a" + integrity sha512-czM9Js3a7f+Eo35gjEYEeJYUoPvMg5Dfi4bOLyDBghLqn0gaVg8yTmTaSuHCg+3K/+1xPjyXd4+2XcQIohWWiQ== + dependencies: + "@ai-sdk/provider-utils" "4.0.5" + ai "6.0.33" + swrv "^1.0.4" + "@ampproject/remapping@^2.2.0", "@ampproject/remapping@^2.3.0": version "2.3.0" resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz" @@ -164,6 +198,11 @@ resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz" integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow== +"@babel/helper-validator-identifier@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz#010b6938fab7cb7df74aa2bbc06aa503b8fe5fb4" + integrity sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q== + "@babel/helper-validator-option@^7.27.1": version "7.27.1" resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz" @@ -184,6 +223,13 @@ dependencies: "@babel/types" "^7.27.3" +"@babel/parser@^7.28.5": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.29.0.tgz#669ef345add7d057e92b7ed15f0bac07611831b6" + integrity sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww== + dependencies: + "@babel/types" "^7.29.0" + "@babel/plugin-syntax-jsx@^7.25.9": version "7.27.1" resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz" @@ -231,7 +277,7 @@ debug "^4.3.1" globals "^11.1.0" -"@babel/types@^7.25.4", "@babel/types@^7.26.8", "@babel/types@^7.26.9", "@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.27.6", "@babel/types@7.27.6": +"@babel/types@7.27.6", "@babel/types@^7.25.4", "@babel/types@^7.26.8", "@babel/types@^7.26.9", "@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.27.6": version "7.27.6" resolved "https://registry.npmjs.org/@babel/types/-/types-7.27.6.tgz" integrity sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q== @@ -239,6 +285,14 @@ "@babel/helper-string-parser" "^7.27.1" "@babel/helper-validator-identifier" "^7.27.1" +"@babel/types@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.29.0.tgz#9f5b1e838c446e72cf3cd4b918152b8c605e37c7" + integrity sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A== + dependencies: + "@babel/helper-string-parser" "^7.27.1" + "@babel/helper-validator-identifier" "^7.28.5" + "@better-auth/utils@0.2.5": version "0.2.5" resolved "https://registry.npmjs.org/@better-auth/utils/-/utils-0.2.5.tgz" @@ -273,7 +327,137 @@ dependencies: mime "^3.0.0" -"@colors/colors@^1.6.0", "@colors/colors@1.6.0": +"@codemirror/autocomplete@^6.0.0", "@codemirror/autocomplete@^6.18.3": + version "6.20.0" + resolved "https://registry.yarnpkg.com/@codemirror/autocomplete/-/autocomplete-6.20.0.tgz#db818c12dce892a93fb8abadc2426febb002f8c1" + integrity sha512-bOwvTOIJcG5FVo5gUUupiwYh8MioPLQ4UcqbcRf7UQ98X90tCa9E1kZ3Z7tqwpZxYyOvh1YTYbmZE9RTfTp5hg== + dependencies: + "@codemirror/language" "^6.0.0" + "@codemirror/state" "^6.0.0" + "@codemirror/view" "^6.17.0" + "@lezer/common" "^1.0.0" + +"@codemirror/commands@^6.7.1": + version "6.10.1" + resolved "https://registry.yarnpkg.com/@codemirror/commands/-/commands-6.10.1.tgz#a17a48f846947f48150b9670a3de8c4352b69256" + integrity sha512-uWDWFypNdQmz2y1LaNJzK7fL7TYKLeUAU0npEC685OKTF3KcQ2Vu3klIM78D7I6wGhktme0lh3CuQLv0ZCrD9Q== + dependencies: + "@codemirror/language" "^6.0.0" + "@codemirror/state" "^6.4.0" + "@codemirror/view" "^6.27.0" + "@lezer/common" "^1.1.0" + +"@codemirror/lang-css@^6.0.0", "@codemirror/lang-css@^6.3.1": + version "6.3.1" + resolved "https://registry.yarnpkg.com/@codemirror/lang-css/-/lang-css-6.3.1.tgz#763ca41aee81bb2431be55e3cfcc7cc8e91421a3" + integrity sha512-kr5fwBGiGtmz6l0LSJIbno9QrifNMUusivHbnA1H6Dmqy4HZFte3UAICix1VuKo0lMPKQr2rqB+0BkKi/S3Ejg== + dependencies: + "@codemirror/autocomplete" "^6.0.0" + "@codemirror/language" "^6.0.0" + "@codemirror/state" "^6.0.0" + "@lezer/common" "^1.0.2" + "@lezer/css" "^1.1.7" + +"@codemirror/lang-html@^6.4.8": + version "6.4.11" + resolved "https://registry.yarnpkg.com/@codemirror/lang-html/-/lang-html-6.4.11.tgz#c46ba46ae642fd567cf05c4129005d2913ac248d" + integrity sha512-9NsXp7Nwp891pQchI7gPdTwBuSuT3K65NGTHWHNJ55HjYcHLllr0rbIZNdOzas9ztc1EUVBlHou85FFZS4BNnw== + dependencies: + "@codemirror/autocomplete" "^6.0.0" + "@codemirror/lang-css" "^6.0.0" + "@codemirror/lang-javascript" "^6.0.0" + "@codemirror/language" "^6.4.0" + "@codemirror/state" "^6.0.0" + "@codemirror/view" "^6.17.0" + "@lezer/common" "^1.0.0" + "@lezer/css" "^1.1.0" + "@lezer/html" "^1.3.12" + +"@codemirror/lang-javascript@^6.0.0": + version "6.2.4" + resolved "https://registry.yarnpkg.com/@codemirror/lang-javascript/-/lang-javascript-6.2.4.tgz#eef2227d1892aae762f3a0f212f72bec868a02c5" + integrity sha512-0WVmhp1QOqZ4Rt6GlVGwKJN3KW7Xh4H2q8ZZNGZaP6lRdxXJzmjm4FqvmOojVj6khWJHIb9sp7U/72W7xQgqAA== + dependencies: + "@codemirror/autocomplete" "^6.0.0" + "@codemirror/language" "^6.6.0" + "@codemirror/lint" "^6.0.0" + "@codemirror/state" "^6.0.0" + "@codemirror/view" "^6.17.0" + "@lezer/common" "^1.0.0" + "@lezer/javascript" "^1.0.0" + +"@codemirror/lang-json@^6.0.0": + version "6.0.2" + resolved "https://registry.yarnpkg.com/@codemirror/lang-json/-/lang-json-6.0.2.tgz#054b160671306667e25d80385286049841836179" + integrity sha512-x2OtO+AvwEHrEwR0FyyPtfDUiloG3rnVTSZV1W8UteaLL8/MajQd8DpvUb2YVzC+/T18aSDv0H9mu+xw0EStoQ== + dependencies: + "@codemirror/language" "^6.0.0" + "@lezer/json" "^1.0.0" + +"@codemirror/lang-xml@^6.0.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@codemirror/lang-xml/-/lang-xml-6.1.0.tgz#e3e786e1a89fdc9520efe75c1d6d3de1c40eb91c" + integrity sha512-3z0blhicHLfwi2UgkZYRPioSgVTo9PV5GP5ducFH6FaHy0IAJRg+ixj5gTR1gnT/glAIC8xv4w2VL1LoZfs+Jg== + dependencies: + "@codemirror/autocomplete" "^6.0.0" + "@codemirror/language" "^6.4.0" + "@codemirror/state" "^6.0.0" + "@codemirror/view" "^6.0.0" + "@lezer/common" "^1.0.0" + "@lezer/xml" "^1.0.0" + +"@codemirror/lang-yaml@^6.1.2": + version "6.1.2" + resolved "https://registry.yarnpkg.com/@codemirror/lang-yaml/-/lang-yaml-6.1.2.tgz#c84280c68fa7af456a355d91183b5e537e9b7038" + integrity sha512-dxrfG8w5Ce/QbT7YID7mWZFKhdhsaTNOYjOkSIMt1qmC4VQnXSDSYVHHHn8k6kJUfIhtLo8t1JJgltlxWdsITw== + dependencies: + "@codemirror/autocomplete" "^6.0.0" + "@codemirror/language" "^6.0.0" + "@codemirror/state" "^6.0.0" + "@lezer/common" "^1.2.0" + "@lezer/highlight" "^1.2.0" + "@lezer/lr" "^1.0.0" + "@lezer/yaml" "^1.0.0" + +"@codemirror/language@^6.0.0", "@codemirror/language@^6.10.7", "@codemirror/language@^6.4.0", "@codemirror/language@^6.6.0": + version "6.12.1" + resolved "https://registry.yarnpkg.com/@codemirror/language/-/language-6.12.1.tgz#d615f7b099a39248312feaaf0bfafce4418aac1b" + integrity sha512-Fa6xkSiuGKc8XC8Cn96T+TQHYj4ZZ7RdFmXA3i9xe/3hLHfwPZdM+dqfX0Cp0zQklBKhVD8Yzc8LS45rkqcwpQ== + dependencies: + "@codemirror/state" "^6.0.0" + "@codemirror/view" "^6.23.0" + "@lezer/common" "^1.5.0" + "@lezer/highlight" "^1.0.0" + "@lezer/lr" "^1.0.0" + style-mod "^4.0.0" + +"@codemirror/lint@^6.0.0", "@codemirror/lint@^6.8.4": + version "6.9.3" + resolved "https://registry.yarnpkg.com/@codemirror/lint/-/lint-6.9.3.tgz#eee48c9d60ea63582eee1ebd6b4ae65102eb8782" + integrity sha512-y3YkYhdnhjDBAe0VIA0c4wVoFOvnp8CnAvfLqi0TqotIv92wIlAAP7HELOpLBsKwjAX6W92rSflA6an/2zBvXw== + dependencies: + "@codemirror/state" "^6.0.0" + "@codemirror/view" "^6.35.0" + crelt "^1.0.5" + +"@codemirror/state@^6.0.0", "@codemirror/state@^6.4.0", "@codemirror/state@^6.5.0": + version "6.5.4" + resolved "https://registry.yarnpkg.com/@codemirror/state/-/state-6.5.4.tgz#f5be4b8c0d2310180d5f15a9f641c21ca69faf19" + integrity sha512-8y7xqG/hpB53l25CIoit9/ngxdfoG+fx+V3SHBrinnhOtLvKHRyAJJuHzkWrR4YXXLX8eXBsejgAAxHUOdW1yw== + dependencies: + "@marijn/find-cluster-break" "^1.0.0" + +"@codemirror/view@^6.0.0", "@codemirror/view@^6.17.0", "@codemirror/view@^6.23.0", "@codemirror/view@^6.27.0", "@codemirror/view@^6.35.0", "@codemirror/view@^6.35.3": + version "6.39.12" + resolved "https://registry.yarnpkg.com/@codemirror/view/-/view-6.39.12.tgz#c61961d7107b44bd233647fc9e33d96309d627c9" + integrity sha512-f+/VsHVn/kOA9lltk/GFzuYwVVAKmOnNjxbrhkk3tPHntFqjWeI2TbIXx006YkBkqC10wZ4NsnWXCQiFPeAISQ== + dependencies: + "@codemirror/state" "^6.5.0" + crelt "^1.0.6" + style-mod "^4.1.0" + w3c-keyname "^2.2.4" + +"@colors/colors@1.6.0", "@colors/colors@^1.6.0": version "1.6.0" resolved "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz" integrity sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA== @@ -300,6 +484,28 @@ resolved "https://registry.npmjs.org/@drizzle-team/brocli/-/brocli-0.10.2.tgz" integrity sha512-z33Il7l5dKjUgGULTqBsQBQwckHh5AbIuxhdsIxDDiZAzBOrZO6q9ogcWC65kU382AfynTfgNumVcNIjuIua6w== +"@emnapi/core@^1.4.3": + version "1.8.1" + resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.8.1.tgz#fd9efe721a616288345ffee17a1f26ac5dd01349" + integrity sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg== + dependencies: + "@emnapi/wasi-threads" "1.1.0" + tslib "^2.4.0" + +"@emnapi/runtime@^1.4.3": + version "1.8.1" + resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.8.1.tgz#550fa7e3c0d49c5fb175a116e8cd70614f9a22a5" + integrity sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg== + dependencies: + tslib "^2.4.0" + +"@emnapi/wasi-threads@1.1.0", "@emnapi/wasi-threads@^1.0.2": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz#60b2102fddc9ccb78607e4a3cf8403ea69be41bf" + integrity sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ== + dependencies: + tslib "^2.4.0" + "@esbuild-kit/core-utils@^3.3.2": version "3.3.2" resolved "https://registry.npmjs.org/@esbuild-kit/core-utils/-/core-utils-3.3.2.tgz" @@ -316,6 +522,231 @@ "@esbuild-kit/core-utils" "^3.3.2" get-tsconfig "^4.7.0" +"@esbuild/aix-ppc64@0.25.5": + version "0.25.5" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.5.tgz#4e0f91776c2b340e75558f60552195f6fad09f18" + integrity sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA== + +"@esbuild/android-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz#984b4f9c8d0377443cc2dfcef266d02244593622" + integrity sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ== + +"@esbuild/android-arm64@0.25.5": + version "0.25.5" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.25.5.tgz#bc766407f1718923f6b8079c8c61bf86ac3a6a4f" + integrity sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg== + +"@esbuild/android-arm@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.18.20.tgz#fedb265bc3a589c84cc11f810804f234947c3682" + integrity sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw== + +"@esbuild/android-arm@0.25.5": + version "0.25.5" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.25.5.tgz#4290d6d3407bae3883ad2cded1081a234473ce26" + integrity sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA== + +"@esbuild/android-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.18.20.tgz#35cf419c4cfc8babe8893d296cd990e9e9f756f2" + integrity sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg== + +"@esbuild/android-x64@0.25.5": + version "0.25.5" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.25.5.tgz#40c11d9cbca4f2406548c8a9895d321bc3b35eff" + integrity sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw== + +"@esbuild/darwin-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz#08172cbeccf95fbc383399a7f39cfbddaeb0d7c1" + integrity sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA== + +"@esbuild/darwin-arm64@0.25.5": + version "0.25.5" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.25.5.tgz#49d8bf8b1df95f759ac81eb1d0736018006d7e34" + integrity sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ== + +"@esbuild/darwin-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz#d70d5790d8bf475556b67d0f8b7c5bdff053d85d" + integrity sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ== + +"@esbuild/darwin-x64@0.25.5": + version "0.25.5" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.25.5.tgz#e27a5d92a14886ef1d492fd50fc61a2d4d87e418" + integrity sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ== + +"@esbuild/freebsd-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz#98755cd12707f93f210e2494d6a4b51b96977f54" + integrity sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw== + +"@esbuild/freebsd-arm64@0.25.5": + version "0.25.5" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.5.tgz#97cede59d638840ca104e605cdb9f1b118ba0b1c" + integrity sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw== + +"@esbuild/freebsd-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz#c1eb2bff03915f87c29cece4c1a7fa1f423b066e" + integrity sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ== + +"@esbuild/freebsd-x64@0.25.5": + version "0.25.5" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.25.5.tgz#71c77812042a1a8190c3d581e140d15b876b9c6f" + integrity sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw== + +"@esbuild/linux-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz#bad4238bd8f4fc25b5a021280c770ab5fc3a02a0" + integrity sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA== + +"@esbuild/linux-arm64@0.25.5": + version "0.25.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.25.5.tgz#f7b7c8f97eff8ffd2e47f6c67eb5c9765f2181b8" + integrity sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg== + +"@esbuild/linux-arm@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz#3e617c61f33508a27150ee417543c8ab5acc73b0" + integrity sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg== + +"@esbuild/linux-arm@0.25.5": + version "0.25.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.25.5.tgz#2a0be71b6cd8201fa559aea45598dffabc05d911" + integrity sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw== + +"@esbuild/linux-ia32@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz#699391cccba9aee6019b7f9892eb99219f1570a7" + integrity sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA== + +"@esbuild/linux-ia32@0.25.5": + version "0.25.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.25.5.tgz#763414463cd9ea6fa1f96555d2762f9f84c61783" + integrity sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA== + +"@esbuild/linux-loong64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz#e6fccb7aac178dd2ffb9860465ac89d7f23b977d" + integrity sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg== + +"@esbuild/linux-loong64@0.25.5": + version "0.25.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.25.5.tgz#428cf2213ff786a502a52c96cf29d1fcf1eb8506" + integrity sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg== + +"@esbuild/linux-mips64el@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz#eeff3a937de9c2310de30622a957ad1bd9183231" + integrity sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ== + +"@esbuild/linux-mips64el@0.25.5": + version "0.25.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.25.5.tgz#5cbcc7fd841b4cd53358afd33527cd394e325d96" + integrity sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg== + +"@esbuild/linux-ppc64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz#2f7156bde20b01527993e6881435ad79ba9599fb" + integrity sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA== + +"@esbuild/linux-ppc64@0.25.5": + version "0.25.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.25.5.tgz#0d954ab39ce4f5e50f00c4f8c4fd38f976c13ad9" + integrity sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ== + +"@esbuild/linux-riscv64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz#6628389f210123d8b4743045af8caa7d4ddfc7a6" + integrity sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A== + +"@esbuild/linux-riscv64@0.25.5": + version "0.25.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.25.5.tgz#0e7dd30730505abd8088321e8497e94b547bfb1e" + integrity sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA== + +"@esbuild/linux-s390x@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz#255e81fb289b101026131858ab99fba63dcf0071" + integrity sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ== + +"@esbuild/linux-s390x@0.25.5": + version "0.25.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.25.5.tgz#5669af81327a398a336d7e40e320b5bbd6e6e72d" + integrity sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ== + +"@esbuild/linux-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz#c7690b3417af318a9b6f96df3031a8865176d338" + integrity sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w== + +"@esbuild/linux-x64@0.25.5": + version "0.25.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.25.5.tgz#b2357dd153aa49038967ddc1ffd90c68a9d2a0d4" + integrity sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw== + +"@esbuild/netbsd-arm64@0.25.5": + version "0.25.5" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.5.tgz#53b4dfb8fe1cee93777c9e366893bd3daa6ba63d" + integrity sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw== + +"@esbuild/netbsd-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz#30e8cd8a3dded63975e2df2438ca109601ebe0d1" + integrity sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A== + +"@esbuild/netbsd-x64@0.25.5": + version "0.25.5" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.25.5.tgz#a0206f6314ce7dc8713b7732703d0f58de1d1e79" + integrity sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ== + +"@esbuild/openbsd-arm64@0.25.5": + version "0.25.5" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.5.tgz#2a796c87c44e8de78001d808c77d948a21ec22fd" + integrity sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw== + +"@esbuild/openbsd-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz#7812af31b205055874c8082ea9cf9ab0da6217ae" + integrity sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg== + +"@esbuild/openbsd-x64@0.25.5": + version "0.25.5" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.25.5.tgz#28d0cd8909b7fa3953af998f2b2ed34f576728f0" + integrity sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg== + +"@esbuild/sunos-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz#d5c275c3b4e73c9b0ecd38d1ca62c020f887ab9d" + integrity sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ== + +"@esbuild/sunos-x64@0.25.5": + version "0.25.5" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.25.5.tgz#a28164f5b997e8247d407e36c90d3fd5ddbe0dc5" + integrity sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA== + +"@esbuild/win32-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz#73bc7f5a9f8a77805f357fab97f290d0e4820ac9" + integrity sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg== + +"@esbuild/win32-arm64@0.25.5": + version "0.25.5" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.25.5.tgz#6eadbead38e8bd12f633a5190e45eff80e24007e" + integrity sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw== + +"@esbuild/win32-ia32@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz#ec93cbf0ef1085cc12e71e0d661d20569ff42102" + integrity sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g== + +"@esbuild/win32-ia32@0.25.5": + version "0.25.5" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.25.5.tgz#bab6288005482f9ed2adb9ded7e88eba9a62cc0d" + integrity sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ== + "@esbuild/win32-x64@0.18.20": version "0.18.20" resolved "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz" @@ -338,6 +769,13 @@ dependencies: "@floating-ui/utils" "^0.2.9" +"@floating-ui/core@^1.7.4": + version "1.7.4" + resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.7.4.tgz#4a006a6e01565c0f87ba222c317b056a2cffd2f4" + integrity sha512-C3HlIdsBxszvm5McXlB8PeOEWfBhcGBTZGkGlWc2U0KFY5IwG5OQEuQ8rq52DZmcHDlPLd+YFBK+cZcytwIFWg== + dependencies: + "@floating-ui/utils" "^0.2.10" + "@floating-ui/dom@^1.0.0", "@floating-ui/dom@^1.6.13": version "1.7.1" resolved "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.1.tgz" @@ -346,11 +784,42 @@ "@floating-ui/core" "^1.7.1" "@floating-ui/utils" "^0.2.9" +"@floating-ui/dom@^1.6.7", "@floating-ui/dom@^1.7.4", "@floating-ui/dom@^1.7.5": + version "1.7.5" + resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.7.5.tgz#60bfc83a4d1275b2a90db76bf42ca2a5f2c231c2" + integrity sha512-N0bD2kIPInNHUHehXhMke1rBGs1dwqvC9O9KYMyyjK7iXt7GAhnro7UlcuYcGdS/yYOlq0MAVgrow8IbWJwyqg== + dependencies: + "@floating-ui/core" "^1.7.4" + "@floating-ui/utils" "^0.2.10" + +"@floating-ui/utils@0.2.10", "@floating-ui/utils@^0.2.10": + version "0.2.10" + resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.10.tgz#a2a1e3812d14525f725d011a73eceb41fef5bc1c" + integrity sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ== + "@floating-ui/utils@^0.2.9": version "0.2.9" resolved "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.9.tgz" integrity sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg== +"@floating-ui/vue@1.1.9": + version "1.1.9" + resolved "https://registry.yarnpkg.com/@floating-ui/vue/-/vue-1.1.9.tgz#508c386bd3d595247f1dda8dbca00b76fe8fcaf9" + integrity sha512-BfNqNW6KA83Nexspgb9DZuz578R7HT8MZw1CfK9I6Ah4QReNWEJsXWHN+SdmOVLNGmTPDi+fDT535Df5PzMLbQ== + dependencies: + "@floating-ui/dom" "^1.7.4" + "@floating-ui/utils" "^0.2.10" + vue-demi ">=0.13.0" + +"@floating-ui/vue@^1.1.0": + version "1.1.10" + resolved "https://registry.yarnpkg.com/@floating-ui/vue/-/vue-1.1.10.tgz#cae3ff9a1410219fc3da6dd6475cc92dd5281488" + integrity sha512-vdf8f6rHnFPPLRsmL4p12wYl+Ux4mOJOkjzKEMYVnwdf7UFdvBtHlLvQyx8iKG5vhPRbDRgZxdtpmyigDPjzYg== + dependencies: + "@floating-ui/dom" "^1.7.5" + "@floating-ui/utils" "^0.2.10" + vue-demi ">=0.13.0" + "@floating-ui/vue@^1.1.6": version "1.1.6" resolved "https://registry.npmjs.org/@floating-ui/vue/-/vue-1.1.6.tgz" @@ -360,6 +829,18 @@ "@floating-ui/utils" "^0.2.9" vue-demi ">=0.13.0" +"@headlessui/tailwindcss@^0.2.2": + version "0.2.2" + resolved "https://registry.yarnpkg.com/@headlessui/tailwindcss/-/tailwindcss-0.2.2.tgz#8ebde73fabca72d48636ea56ae790209dc5f0d49" + integrity sha512-xNe42KjdyA4kfUKLLPGzME9zkH7Q3rOZ5huFihWNWOQFxnItxPB3/67yBI8/qBfY8nwBRx5GHn4VprsoluVMGw== + +"@headlessui/vue@1.7.23": + version "1.7.23" + resolved "https://registry.yarnpkg.com/@headlessui/vue/-/vue-1.7.23.tgz#7fe19dbeca35de9e6270c82c78c4864e6a6f7391" + integrity sha512-JzdCNqurrtuu0YW6QaDtR2PIYCKPUWq28csDyMvN4zmGccmE7lz40Is6hc3LA4HFeCI7sekZ/PQMTNmn9I/4Wg== + dependencies: + "@tanstack/vue-virtual" "^3.0.0-beta.60" + "@hexagon/base64@^1.1.27": version "1.1.28" resolved "https://registry.npmjs.org/@hexagon/base64/-/base64-1.1.28.tgz" @@ -412,6 +893,13 @@ dependencies: "@swc/helpers" "^0.5.0" +"@internationalized/date@^3.5.4": + version "3.10.1" + resolved "https://registry.yarnpkg.com/@internationalized/date/-/date-3.10.1.tgz#ca63817feadeffe97f710289b00af229cd8af15c" + integrity sha512-oJrXtQiAXLvT9clCf1K4kxp3eKsQhIaZqxEyowkBcsvZDdZkbWrVmnGknxs5flTD0VGsxrxKgBCZty1EzoiMzA== + dependencies: + "@swc/helpers" "^0.5.0" + "@internationalized/number@^3.5.0": version "3.6.3" resolved "https://registry.npmjs.org/@internationalized/number/-/number-3.6.3.tgz" @@ -419,6 +907,13 @@ dependencies: "@swc/helpers" "^0.5.0" +"@internationalized/number@^3.5.3": + version "3.6.5" + resolved "https://registry.yarnpkg.com/@internationalized/number/-/number-3.6.5.tgz#1103f2832ca8d9dd3e4eecf95733d497791dbbbe" + integrity sha512-6hY4Kl4HPBvtfS62asS/R22JzNNy8vi/Ssev7x6EobfCp+9QIB2hKvI2EtbdJ0VSQacxVNtqhE/NmF/NZ0gm6g== + dependencies: + "@swc/helpers" "^0.5.0" + "@ioredis/commands@^1.1.1": version "1.2.0" resolved "https://registry.npmjs.org/@ioredis/commands/-/commands-1.2.0.tgz" @@ -452,6 +947,14 @@ "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.24" +"@jridgewell/remapping@^2.3.5": + version "2.3.5" + resolved "https://registry.yarnpkg.com/@jridgewell/remapping/-/remapping-2.3.5.tgz#375c476d1972947851ba1e15ae8f123047445aa1" + integrity sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ== + dependencies: + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.24" + "@jridgewell/resolve-uri@^3.1.0": version "3.1.2" resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz" @@ -475,6 +978,11 @@ resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz" integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== +"@jridgewell/sourcemap-codec@^1.5.5": + version "1.5.5" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz#6912b00d2c631c0d15ce1a7ab57cd657f2a8f8ba" + integrity sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og== + "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": version "0.3.25" resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz" @@ -500,6 +1008,79 @@ resolved "https://registry.npmjs.org/@levischuck/tiny-cbor/-/tiny-cbor-0.2.11.tgz" integrity sha512-llBRm4dT4Z89aRsm6u2oEZ8tfwL/2l6BwpZ7JcyieouniDECM5AqNgr/y08zalEIvW3RSK4upYyybDcmjXqAow== +"@lezer/common@^1.0.0", "@lezer/common@^1.0.2", "@lezer/common@^1.1.0", "@lezer/common@^1.2.0", "@lezer/common@^1.2.3", "@lezer/common@^1.3.0", "@lezer/common@^1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@lezer/common/-/common-1.5.0.tgz#db227b596260189b67ba286387d9dc81fb07c70b" + integrity sha512-PNGcolp9hr4PJdXR4ix7XtixDrClScvtSCYW3rQG106oVMOOI+jFb+0+J3mbeL/53g1Zd6s0kJzaw6Ri68GmAA== + +"@lezer/css@^1.1.0", "@lezer/css@^1.1.7": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@lezer/css/-/css-1.3.0.tgz#296f298814782c2fad42a936f3510042cdcd2034" + integrity sha512-pBL7hup88KbI7hXnZV3PQsn43DHy6TWyzuyk2AO9UyoXcDltvIdqWKE1dLL/45JVZ+YZkHe1WVHqO6wugZZWcw== + dependencies: + "@lezer/common" "^1.2.0" + "@lezer/highlight" "^1.0.0" + "@lezer/lr" "^1.3.0" + +"@lezer/highlight@^1.0.0", "@lezer/highlight@^1.1.3", "@lezer/highlight@^1.2.0", "@lezer/highlight@^1.2.1": + version "1.2.3" + resolved "https://registry.yarnpkg.com/@lezer/highlight/-/highlight-1.2.3.tgz#a20f324b71148a2ea9ba6ff42e58bbfaec702857" + integrity sha512-qXdH7UqTvGfdVBINrgKhDsVTJTxactNNxLk7+UMwZhU13lMHaOBlJe9Vqp907ya56Y3+ed2tlqzys7jDkTmW0g== + dependencies: + "@lezer/common" "^1.3.0" + +"@lezer/html@^1.3.12": + version "1.3.13" + resolved "https://registry.yarnpkg.com/@lezer/html/-/html-1.3.13.tgz#6a1305ae3bd2c9c01f877f8a8dc1e15ec652d01c" + integrity sha512-oI7n6NJml729m7pjm9lvLvmXbdoMoi2f+1pwSDJkl9d68zGr7a9Btz8NdHTGQZtW2DA25ybeuv/SyDb9D5tseg== + dependencies: + "@lezer/common" "^1.2.0" + "@lezer/highlight" "^1.0.0" + "@lezer/lr" "^1.0.0" + +"@lezer/javascript@^1.0.0": + version "1.5.4" + resolved "https://registry.yarnpkg.com/@lezer/javascript/-/javascript-1.5.4.tgz#11746955f957d33c0933f17d7594db54a8b4beea" + integrity sha512-vvYx3MhWqeZtGPwDStM2dwgljd5smolYD2lR2UyFcHfxbBQebqx8yjmFmxtJ/E6nN6u1D9srOiVWm3Rb4tmcUA== + dependencies: + "@lezer/common" "^1.2.0" + "@lezer/highlight" "^1.1.3" + "@lezer/lr" "^1.3.0" + +"@lezer/json@^1.0.0": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@lezer/json/-/json-1.0.3.tgz#e773a012ad0088fbf07ce49cfba875cc9e5bc05f" + integrity sha512-BP9KzdF9Y35PDpv04r0VeSTKDeox5vVr3efE7eBbx3r4s3oNLfunchejZhjArmeieBH+nVOpgIiBJpEAv8ilqQ== + dependencies: + "@lezer/common" "^1.2.0" + "@lezer/highlight" "^1.0.0" + "@lezer/lr" "^1.0.0" + +"@lezer/lr@^1.0.0", "@lezer/lr@^1.3.0", "@lezer/lr@^1.4.0": + version "1.4.8" + resolved "https://registry.yarnpkg.com/@lezer/lr/-/lr-1.4.8.tgz#333de9bc9346057323ff09beb4cda47ccc38a498" + integrity sha512-bPWa0Pgx69ylNlMlPvBPryqeLYQjyJjqPx+Aupm5zydLIF3NE+6MMLT8Yi23Bd9cif9VS00aUebn+6fDIGBcDA== + dependencies: + "@lezer/common" "^1.0.0" + +"@lezer/xml@^1.0.0": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@lezer/xml/-/xml-1.0.6.tgz#908c203923288f854eb8e2f4d9b06c437e8610b9" + integrity sha512-CdDwirL0OEaStFue/66ZmFSeppuL6Dwjlk8qk153mSQwiSH/Dlri4GNymrNWnUmPl2Um7QfV1FO9KFUyX3Twww== + dependencies: + "@lezer/common" "^1.2.0" + "@lezer/highlight" "^1.0.0" + "@lezer/lr" "^1.0.0" + +"@lezer/yaml@^1.0.0": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@lezer/yaml/-/yaml-1.0.4.tgz#66a622188f1984a71d34506759b5807699043589" + integrity sha512-2lrrHqxalACEbxIbsjhqGpSW8kWpUKuY6RHgnSAFZa6qK62wvnPxA8hGOwOoDbwHcOFs5M4o27mjGu+P7TvBmw== + dependencies: + "@lezer/common" "^1.2.0" + "@lezer/highlight" "^1.0.0" + "@lezer/lr" "^1.4.0" + "@mapbox/node-pre-gyp@^2.0.0": version "2.0.0" resolved "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-2.0.0.tgz" @@ -513,6 +1094,20 @@ semver "^7.5.3" tar "^7.4.0" +"@marijn/find-cluster-break@^1.0.0": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@marijn/find-cluster-break/-/find-cluster-break-1.0.2.tgz#775374306116d51c0c500b8c4face0f9a04752d8" + integrity sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g== + +"@napi-rs/wasm-runtime@^0.2.10": + version "0.2.12" + resolved "https://registry.yarnpkg.com/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz#3e78a8b96e6c33a6c517e1894efbd5385a7cb6f2" + integrity sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ== + dependencies: + "@emnapi/core" "^1.4.3" + "@emnapi/runtime" "^1.4.3" + "@tybys/wasm-util" "^0.10.0" + "@netlify/binary-info@^1.0.0": version "1.0.0" resolved "https://registry.npmjs.org/@netlify/binary-info/-/binary-info-1.0.0.tgz" @@ -571,16 +1166,16 @@ resolved "https://registry.npmjs.org/@netlify/runtime-utils/-/runtime-utils-1.3.1.tgz" integrity sha512-7/vIJlMYrPJPlEW84V2yeRuG3QBu66dmlv9neTmZ5nXzwylhBEOhy11ai+34A8mHCSZI4mKns25w3HM9kaDdJg== -"@netlify/serverless-functions-api@^2.1.1": - version "2.1.1" - resolved "https://registry.npmjs.org/@netlify/serverless-functions-api/-/serverless-functions-api-2.1.1.tgz" - integrity sha512-MNYfEmZC6F7ZExOrB/Hrfkif7JW2Cbid9y5poTFEJ6rcAhCLQB8lo0SGlQrFXgKvXowXB14IjpOubaQu2zsyfg== - "@netlify/serverless-functions-api@1.41.2": version "1.41.2" resolved "https://registry.npmjs.org/@netlify/serverless-functions-api/-/serverless-functions-api-1.41.2.tgz" integrity sha512-pfCkH50JV06SGMNsNPjn8t17hOcId4fA881HeYQgMBOrewjsw4csaYgHEnCxCEu24Y5x75E2ULbFpqm9CvRCqw== +"@netlify/serverless-functions-api@^2.1.1": + version "2.1.1" + resolved "https://registry.npmjs.org/@netlify/serverless-functions-api/-/serverless-functions-api-2.1.1.tgz" + integrity sha512-MNYfEmZC6F7ZExOrB/Hrfkif7JW2Cbid9y5poTFEJ6rcAhCLQB8lo0SGlQrFXgKvXowXB14IjpOubaQu2zsyfg== + "@netlify/zip-it-and-ship-it@^12.1.0": version "12.1.4" resolved "https://registry.npmjs.org/@netlify/zip-it-and-ship-it/-/zip-it-and-ship-it-12.1.4.tgz" @@ -638,7 +1233,7 @@ "@nodelib/fs.stat" "2.0.5" run-parallel "^1.1.9" -"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": version "2.0.5" resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== @@ -686,7 +1281,7 @@ resolved "https://registry.npmjs.org/@nuxt/devalue/-/devalue-2.0.2.tgz" integrity sha512-GBzP8zOc7CGWyFQS6dv1lQz8VVpz5C2yRszbXufwG/9zhStTIH50EtD87NmWbTMwXDvZLNg8GIpb1UFdH93JCA== -"@nuxt/devtools-kit@^2.4.0", "@nuxt/devtools-kit@^2.4.1", "@nuxt/devtools-kit@2.5.0": +"@nuxt/devtools-kit@2.5.0", "@nuxt/devtools-kit@^2.4.0", "@nuxt/devtools-kit@^2.4.1": version "2.5.0" resolved "https://registry.npmjs.org/@nuxt/devtools-kit/-/devtools-kit-2.5.0.tgz" integrity sha512-0EJ984cSSxrXxeVVUK+2NW+u2fbor/waxq/J/MJBc/q2oF/4KW2MQ18luxfmZ4A5PKSzLimCoMIOLlZkXcW9aA== @@ -793,7 +1388,7 @@ std-env "^3.9.0" tinyglobby "^0.2.13" -"@nuxt/kit@^3.11.2", "@nuxt/kit@^3.13.2", "@nuxt/kit@^3.15.4", "@nuxt/kit@^3.17.3", "@nuxt/kit@^3.17.4", "@nuxt/kit@3.17.5": +"@nuxt/kit@3.17.5", "@nuxt/kit@^3.11.2", "@nuxt/kit@^3.13.2", "@nuxt/kit@^3.15.4", "@nuxt/kit@^3.17.3", "@nuxt/kit@^3.17.4": version "3.17.5" resolved "https://registry.npmjs.org/@nuxt/kit/-/kit-3.17.5.tgz" integrity sha512-NdCepmA+S/SzgcaL3oYUeSlXGYO6BXGr9K/m1D0t0O9rApF8CSq/QQ+ja5KYaYMO1kZAEWH4s2XVcE3uPrrAVg== @@ -821,7 +1416,33 @@ unimport "^5.0.1" untyped "^2.0.0" -"@nuxt/schema@^3.17.4", "@nuxt/schema@3.17.5": +"@nuxt/kit@^4.0.0": + version "4.3.0" + resolved "https://registry.yarnpkg.com/@nuxt/kit/-/kit-4.3.0.tgz#2ea76259a2ba5b27d6ae6998202957123616665e" + integrity sha512-cD/0UU9RQmlnTbmyJTDyzN8f6CzpziDLv3tFQCnwl0Aoxt3KmFu4k/XA4Sogxqj7jJ/3cdX1kL+Lnsh34sxcQQ== + dependencies: + c12 "^3.3.3" + consola "^3.4.2" + defu "^6.1.4" + destr "^2.0.5" + errx "^0.1.0" + exsolve "^1.0.8" + ignore "^7.0.5" + jiti "^2.6.1" + klona "^2.0.6" + mlly "^1.8.0" + ohash "^2.0.11" + pathe "^2.0.3" + pkg-types "^2.3.0" + rc9 "^2.1.2" + scule "^1.3.0" + semver "^7.7.3" + tinyglobby "^0.2.15" + ufo "^1.6.3" + unctx "^2.5.0" + untyped "^2.0.0" + +"@nuxt/schema@3.17.5", "@nuxt/schema@^3.17.4": version "3.17.5" resolved "https://registry.npmjs.org/@nuxt/schema/-/schema-3.17.5.tgz" integrity sha512-A1DSQk2uXqRHXlgLWDeFCyZk/yPo9oMBMb9OsbVko9NLv9du2DO2cs9RQ68Amvdk8O2nG7/FxAMNnkMdQ8OexA== @@ -850,7 +1471,7 @@ rc9 "^2.1.2" std-env "^3.8.1" -"@nuxt/test-utils@>=3.13.1", "@nuxt/test-utils@3.19.1": +"@nuxt/test-utils@3.19.1", "@nuxt/test-utils@>=3.13.1": version "3.19.1" resolved "https://registry.npmjs.org/@nuxt/test-utils/-/test-utils-3.19.1.tgz" integrity sha512-qq2ioRgPCM7JwPIeJO2OzzqCWr8NR5eQINoskX2NEXTHzucvb8N9mt2UB2+NUe8OL9yNjGDZA+oA51GUKNhqhg== @@ -931,6 +1552,78 @@ pkg-types "^1.2.1" semver "^7.6.3" +"@opentelemetry/api@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.9.0.tgz#d03eba68273dc0f7509e2a3d5cba21eae10379fe" + integrity sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg== + +"@oxc-parser/binding-darwin-arm64@0.72.3": + version "0.72.3" + resolved "https://registry.yarnpkg.com/@oxc-parser/binding-darwin-arm64/-/binding-darwin-arm64-0.72.3.tgz#6a8307895c24f3e7a21147ff34e42914a11e8085" + integrity sha512-g6wgcfL7At4wHNHutl0NmPZTAju+cUSmSX5WGUMyTJmozRzhx8E9a2KL4rTqNJPwEpbCFrgC29qX9f4fpDnUpA== + +"@oxc-parser/binding-darwin-x64@0.72.3": + version "0.72.3" + resolved "https://registry.yarnpkg.com/@oxc-parser/binding-darwin-x64/-/binding-darwin-x64-0.72.3.tgz#1ebbd45391b06a64f88ecbb0992de6aad18fe59b" + integrity sha512-pc+tplB2fd0AqdnXY90FguqSF2OwbxXwrMOLAMmsUiK4/ytr8Z/ftd49+d27GgvQJKeg2LfnIbskaQtY/j2tAA== + +"@oxc-parser/binding-freebsd-x64@0.72.3": + version "0.72.3" + resolved "https://registry.yarnpkg.com/@oxc-parser/binding-freebsd-x64/-/binding-freebsd-x64-0.72.3.tgz#e7879246eda0945f4169070c256aea619d14d8f6" + integrity sha512-igBR6rOvL8t5SBm1f1rjtWNsjB53HNrM3au582JpYzWxOqCjeA5Jlm9KZbjQJC+J8SPB9xyljM7G+6yGZ2UAkQ== + +"@oxc-parser/binding-linux-arm-gnueabihf@0.72.3": + version "0.72.3" + resolved "https://registry.yarnpkg.com/@oxc-parser/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-0.72.3.tgz#68e83ccec9f9b892efefbf37c9dd1d7f106bfe3d" + integrity sha512-/izdr3wg7bK+2RmNhZXC2fQwxbaTH3ELeqdR+Wg4FiEJ/C7ZBIjfB0E734bZGgbDu+rbEJTBlbG77XzY0wRX/Q== + +"@oxc-parser/binding-linux-arm-musleabihf@0.72.3": + version "0.72.3" + resolved "https://registry.yarnpkg.com/@oxc-parser/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-0.72.3.tgz#cf0612f12bc5f448661beca24f603652e0caed17" + integrity sha512-Vz7C+qJb22HIFl3zXMlwvlTOR+MaIp5ps78060zsdeZh2PUGlYuUYkYXtGEjJV3kc8aKFj79XKqAY1EPG2NWQA== + +"@oxc-parser/binding-linux-arm64-gnu@0.72.3": + version "0.72.3" + resolved "https://registry.yarnpkg.com/@oxc-parser/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-0.72.3.tgz#b8a274fc243629a874ab4199eda38749ca49390f" + integrity sha512-nomoMe2VpVxW767jhF+G3mDGmE0U6nvvi5nw9Edqd/5DIylQfq/lEGUWL7qITk+E72YXBsnwHtpRRlIAJOMyZg== + +"@oxc-parser/binding-linux-arm64-musl@0.72.3": + version "0.72.3" + resolved "https://registry.yarnpkg.com/@oxc-parser/binding-linux-arm64-musl/-/binding-linux-arm64-musl-0.72.3.tgz#c7620f153f46b77ef31b40db55b4bd6fd18ad918" + integrity sha512-4DswiIK5dI7hFqcMKWtZ7IZnWkRuskh6poI1ad4gkY2p678NOGtl6uOGCCRlDmLOOhp3R27u4VCTzQ6zra977w== + +"@oxc-parser/binding-linux-riscv64-gnu@0.72.3": + version "0.72.3" + resolved "https://registry.yarnpkg.com/@oxc-parser/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-0.72.3.tgz#e570e70b452f8b70f6d5ca2e572a3db5dc65be7f" + integrity sha512-R9GEiA4WFPGU/3RxAhEd6SaMdpqongGTvGEyTvYCS/MAQyXKxX/LFvc2xwjdvESpjIemmc/12aTTq6if28vHkQ== + +"@oxc-parser/binding-linux-s390x-gnu@0.72.3": + version "0.72.3" + resolved "https://registry.yarnpkg.com/@oxc-parser/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-0.72.3.tgz#63bb742e3da2273704be66e52252763cc7e79ba9" + integrity sha512-/sEYJQMVqikZO8gK9VDPT4zXo9du3gvvu8jp6erMmW5ev+14PErWRypJjktp0qoTj+uq4MzXro0tg7U+t5hP1w== + +"@oxc-parser/binding-linux-x64-gnu@0.72.3": + version "0.72.3" + resolved "https://registry.yarnpkg.com/@oxc-parser/binding-linux-x64-gnu/-/binding-linux-x64-gnu-0.72.3.tgz#0410543585600a8f8e249bb3d7cff40645025ec1" + integrity sha512-hlyljEZ0sMPKJQCd5pxnRh2sAf/w+Ot2iJecgV9Hl3brrYrYCK2kofC0DFaJM3NRmG/8ZB3PlxnSRSKZTocwCw== + +"@oxc-parser/binding-linux-x64-musl@0.72.3": + version "0.72.3" + resolved "https://registry.yarnpkg.com/@oxc-parser/binding-linux-x64-musl/-/binding-linux-x64-musl-0.72.3.tgz#8179cb858122ca4c1c85f5caf0885e563a996cfe" + integrity sha512-T17S8ORqAIq+YDFMvLfbNdAiYHYDM1+sLMNhesR5eWBtyTHX510/NbgEvcNemO9N6BNR7m4A9o+q468UG+dmbg== + +"@oxc-parser/binding-wasm32-wasi@0.72.3": + version "0.72.3" + resolved "https://registry.yarnpkg.com/@oxc-parser/binding-wasm32-wasi/-/binding-wasm32-wasi-0.72.3.tgz#67105462c53713d1150a5af8ec6aff20e3b9344e" + integrity sha512-x0Ojn/jyRUk6MllvVB/puSvI2tczZBIYweKVYHNv1nBatjPRiqo+6/uXiKrZwSfGLkGARrKkTuHSa5RdZBMOdA== + dependencies: + "@napi-rs/wasm-runtime" "^0.2.10" + +"@oxc-parser/binding-win32-arm64-msvc@0.72.3": + version "0.72.3" + resolved "https://registry.yarnpkg.com/@oxc-parser/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-0.72.3.tgz#16e17e3bd77ccbdb6129eed61c864dbb197b2311" + integrity sha512-kRVAl87ugRjLZTm9vGUyiXU50mqxLPHY81rgnZUP1HtNcqcmTQtM/wUKQL2UdqvhA6xm6zciqzqCgJfU+RW8uA== + "@oxc-parser/binding-win32-x64-msvc@0.72.3": version "0.72.3" resolved "https://registry.npmjs.org/@oxc-parser/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.72.3.tgz" @@ -941,6 +1634,56 @@ resolved "https://registry.npmjs.org/@oxc-project/types/-/types-0.72.3.tgz" integrity sha512-CfAC4wrmMkUoISpQkFAIfMVvlPfQV3xg7ZlcqPXPOIMQhdKIId44G8W0mCPgtpWdFFAyJ+SFtiM+9vbyCkoVng== +"@parcel/watcher-android-arm64@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz#507f836d7e2042f798c7d07ad19c3546f9848ac1" + integrity sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA== + +"@parcel/watcher-darwin-arm64@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz#3d26dce38de6590ef79c47ec2c55793c06ad4f67" + integrity sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw== + +"@parcel/watcher-darwin-x64@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz#99f3af3869069ccf774e4ddfccf7e64fd2311ef8" + integrity sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg== + +"@parcel/watcher-freebsd-x64@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz#14d6857741a9f51dfe51d5b08b7c8afdbc73ad9b" + integrity sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ== + +"@parcel/watcher-linux-arm-glibc@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz#43c3246d6892381db473bb4f663229ad20b609a1" + integrity sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA== + +"@parcel/watcher-linux-arm-musl@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz#663750f7090bb6278d2210de643eb8a3f780d08e" + integrity sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q== + +"@parcel/watcher-linux-arm64-glibc@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz#ba60e1f56977f7e47cd7e31ad65d15fdcbd07e30" + integrity sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w== + +"@parcel/watcher-linux-arm64-musl@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz#f7fbcdff2f04c526f96eac01f97419a6a99855d2" + integrity sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg== + +"@parcel/watcher-linux-x64-glibc@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz#4d2ea0f633eb1917d83d483392ce6181b6a92e4e" + integrity sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A== + +"@parcel/watcher-linux-x64-musl@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz#277b346b05db54f55657301dd77bdf99d63606ee" + integrity sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg== + "@parcel/watcher-wasm@^2.4.1": version "2.5.1" resolved "https://registry.npmjs.org/@parcel/watcher-wasm/-/watcher-wasm-2.5.1.tgz" @@ -950,6 +1693,16 @@ micromatch "^4.0.5" napi-wasm "^1.1.0" +"@parcel/watcher-win32-arm64@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz#7e9e02a26784d47503de1d10e8eab6cceb524243" + integrity sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw== + +"@parcel/watcher-win32-ia32@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz#2d0f94fa59a873cdc584bf7f6b1dc628ddf976e6" + integrity sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ== + "@parcel/watcher-win32-x64@2.5.1": version "2.5.1" resolved "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz" @@ -1027,6 +1780,11 @@ pvtsutils "^1.3.6" tslib "^2.8.1" +"@phosphor-icons/core@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@phosphor-icons/core/-/core-2.1.1.tgz#62a4cfbec9772f1a613a647da214fbb96f3ad39d" + integrity sha512-v4ARvrip4qBCImOE5rmPUylOEK4iiED9ZyKjcvzuezqMaiRASCHKcRIuvvxL/twvLpkfnEODCOJp5dM4eZilxQ== + "@pkgjs/parseargs@^0.11.0": version "0.11.0" resolved "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz" @@ -1058,6 +1816,11 @@ resolved "https://registry.npmjs.org/@poppinss/exception/-/exception-1.2.1.tgz" integrity sha512-aQypoot0HPSJa6gDPEPTntc1GT6QINrSbgRlRhadGW2WaYqUK3tK4Bw9SBMZXhmxd3GeAlZjVcODHgiu+THY7A== +"@replit/codemirror-css-color-picker@^6.3.0": + version "6.3.0" + resolved "https://registry.yarnpkg.com/@replit/codemirror-css-color-picker/-/codemirror-css-color-picker-6.3.0.tgz#069835261d2b7b7ff5cb5f3ce354253d6e7e1100" + integrity sha512-19biDANghUm7Fz7L1SNMIhK48tagaWuCOHj4oPPxc7hxPGkTVY2lU/jVZ8tsbTKQPVG7BO2CBDzs7CBwb20t4A== + "@rolldown/pluginutils@^1.0.0-beta.9": version "1.0.0-beta.13" resolved "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.13.tgz" @@ -1134,11 +1897,474 @@ estree-walker "^2.0.2" picomatch "^4.0.2" +"@rollup/rollup-android-arm-eabi@4.42.0": + version "4.42.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.42.0.tgz#8baae15a6a27f18b7c5be420e00ab08c7d3dd6f4" + integrity sha512-gldmAyS9hpj+H6LpRNlcjQWbuKUtb94lodB9uCz71Jm+7BxK1VIOo7y62tZZwxhA7j1ylv/yQz080L5WkS+LoQ== + +"@rollup/rollup-android-arm64@4.42.0": + version "4.42.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.42.0.tgz#6798394241d1b26f8b44d2bbd8de9c12eb9dd6e6" + integrity sha512-bpRipfTgmGFdCZDFLRvIkSNO1/3RGS74aWkJJTFJBH7h3MRV4UijkaEUeOMbi9wxtxYmtAbVcnMtHTPBhLEkaw== + +"@rollup/rollup-darwin-arm64@4.42.0": + version "4.42.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.42.0.tgz#8642482ac2d21e7747a79b1cc3293d5711fefea3" + integrity sha512-JxHtA081izPBVCHLKnl6GEA0w3920mlJPLh89NojpU2GsBSB6ypu4erFg/Wx1qbpUbepn0jY4dVWMGZM8gplgA== + +"@rollup/rollup-darwin-x64@4.42.0": + version "4.42.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.42.0.tgz#e15568b2fea4fdc526e86424150df9ec511fbaaf" + integrity sha512-rv5UZaWVIJTDMyQ3dCEK+m0SAn6G7H3PRc2AZmExvbDvtaDc+qXkei0knQWcI3+c9tEs7iL/4I4pTQoPbNL2SA== + +"@rollup/rollup-freebsd-arm64@4.42.0": + version "4.42.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.42.0.tgz#0ebdb3b470ccf6acf0eacae8177f34e27477559f" + integrity sha512-fJcN4uSGPWdpVmvLuMtALUFwCHgb2XiQjuECkHT3lWLZhSQ3MBQ9pq+WoWeJq2PrNxr9rPM1Qx+IjyGj8/c6zQ== + +"@rollup/rollup-freebsd-x64@4.42.0": + version "4.42.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.42.0.tgz#675808bf4fe7c7fc454326510ab3be0857626d41" + integrity sha512-CziHfyzpp8hJpCVE/ZdTizw58gr+m7Y2Xq5VOuCSrZR++th2xWAz4Nqk52MoIIrV3JHtVBhbBsJcAxs6NammOQ== + +"@rollup/rollup-linux-arm-gnueabihf@4.42.0": + version "4.42.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.42.0.tgz#05e881cc69f59415fe8c1af13554c60c7c49d114" + integrity sha512-UsQD5fyLWm2Fe5CDM7VPYAo+UC7+2Px4Y+N3AcPh/LdZu23YcuGPegQly++XEVaC8XUTFVPscl5y5Cl1twEI4A== + +"@rollup/rollup-linux-arm-musleabihf@4.42.0": + version "4.42.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.42.0.tgz#eb990bf7c3c37749c3d5afed34e6adec1c927963" + integrity sha512-/i8NIrlgc/+4n1lnoWl1zgH7Uo0XK5xK3EDqVTf38KvyYgCU/Rm04+o1VvvzJZnVS5/cWSd07owkzcVasgfIkQ== + +"@rollup/rollup-linux-arm64-gnu@4.42.0": + version "4.42.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.42.0.tgz#3deeacff589e7f370aca5cef29d68d4c8fa0033c" + integrity sha512-eoujJFOvoIBjZEi9hJnXAbWg+Vo1Ov8n/0IKZZcPZ7JhBzxh2A+2NFyeMZIRkY9iwBvSjloKgcvnjTbGKHE44Q== + +"@rollup/rollup-linux-arm64-musl@4.42.0": + version "4.42.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.42.0.tgz#6db81ab065ef278faf83d875c77ff9cdd51abcfd" + integrity sha512-/3NrcOWFSR7RQUQIuZQChLND36aTU9IYE4j+TB40VU78S+RA0IiqHR30oSh6P1S9f9/wVOenHQnacs/Byb824g== + +"@rollup/rollup-linux-loongarch64-gnu@4.42.0": + version "4.42.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.42.0.tgz#90d35336ad4cbf318648e41b0e7ce3920c28ebc9" + integrity sha512-O8AplvIeavK5ABmZlKBq9/STdZlnQo7Sle0LLhVA7QT+CiGpNVe197/t8Aph9bhJqbDVGCHpY2i7QyfEDDStDg== + +"@rollup/rollup-linux-powerpc64le-gnu@4.42.0": + version "4.42.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.42.0.tgz#6d21a0f18262648ec181fc9326b8f0ac02aa744d" + integrity sha512-6Qb66tbKVN7VyQrekhEzbHRxXXFFD8QKiFAwX5v9Xt6FiJ3BnCVBuyBxa2fkFGqxOCSGGYNejxd8ht+q5SnmtA== + +"@rollup/rollup-linux-riscv64-gnu@4.42.0": + version "4.42.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.42.0.tgz#e46e2d1125957694bfb5222ecd63dd6c9bd69682" + integrity sha512-KQETDSEBamQFvg/d8jajtRwLNBlGc3aKpaGiP/LvEbnmVUKlFta1vqJqTrvPtsYsfbE/DLg5CC9zyXRX3fnBiA== + +"@rollup/rollup-linux-riscv64-musl@4.42.0": + version "4.42.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.42.0.tgz#478a23f0fa0d832a0a6fa858a9f3d2eb201d44de" + integrity sha512-qMvnyjcU37sCo/tuC+JqeDKSuukGAd+pVlRl/oyDbkvPJ3awk6G6ua7tyum02O3lI+fio+eM5wsVd66X0jQtxw== + +"@rollup/rollup-linux-s390x-gnu@4.42.0": + version "4.42.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.42.0.tgz#4261c714cd750e3fb685a330dfca7bb8f5711469" + integrity sha512-I2Y1ZUgTgU2RLddUHXTIgyrdOwljjkmcZ/VilvaEumtS3Fkuhbw4p4hgHc39Ypwvo2o7sBFNl2MquNvGCa55Iw== + +"@rollup/rollup-linux-x64-gnu@4.42.0": + version "4.42.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.42.0.tgz#45aa751bdf05ac696da417a37fdfd13f607e1fab" + integrity sha512-Gfm6cV6mj3hCUY8TqWa63DB8Mx3NADoFwiJrMpoZ1uESbK8FQV3LXkhfry+8bOniq9pqY1OdsjFWNsSbfjPugw== + +"@rollup/rollup-linux-x64-musl@4.42.0": + version "4.42.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.42.0.tgz#9a0f8691dede53d1720ebb2aeef72e483cf69220" + integrity sha512-g86PF8YZ9GRqkdi0VoGlcDUb4rYtQKyTD1IVtxxN4Hpe7YqLBShA7oHMKU6oKTCi3uxwW4VkIGnOaH/El8de3w== + +"@rollup/rollup-win32-arm64-msvc@4.42.0": + version "4.42.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.42.0.tgz#395ad8b6b6372a3888d2e96bf6c45392be815f4d" + integrity sha512-+axkdyDGSp6hjyzQ5m1pgcvQScfHnMCcsXkx8pTgy/6qBmWVhtRVlgxjWwDp67wEXXUr0x+vD6tp5W4x6V7u1A== + +"@rollup/rollup-win32-ia32-msvc@4.42.0": + version "4.42.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.42.0.tgz#0d80305a14fff372ea5e90cd35c63c6b8efbd143" + integrity sha512-F+5J9pelstXKwRSDq92J0TEBXn2nfUrQGg+HK1+Tk7VOL09e0gBqUHugZv7SW4MGrYj41oNCUe3IKCDGVlis2g== + "@rollup/rollup-win32-x64-msvc@4.42.0": version "4.42.0" resolved "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.42.0.tgz" integrity sha512-LpHiJRwkaVz/LqjHjK8LCi8osq7elmpwujwbXKNW88bM8eeGxavJIKKjkjpMHAh/2xfnrt1ZSnhTv41WYUHYmA== +"@scalar/agent-chat@0.4.8": + version "0.4.8" + resolved "https://registry.yarnpkg.com/@scalar/agent-chat/-/agent-chat-0.4.8.tgz#fd5425e2ca329ca4e9219ef0bcadb21f8fb3600b" + integrity sha512-cDOmLDZiF7Sa9qIKxzVo5KAv/3swvIHTVwUX4HMAnZ4DNWbkDGcK9kjGMYTguTFSIPfk4HX/CeYEyKImk97+eA== + dependencies: + "@ai-sdk/vue" "3.0.33" + "@scalar/api-client" "2.23.0" + "@scalar/components" "0.17.2" + "@scalar/helpers" "0.2.10" + "@scalar/icons" "0.5.2" + "@scalar/json-magic" "0.9.5" + "@scalar/openapi-types" "0.5.3" + "@scalar/themes" "0.14.0" + "@scalar/types" "0.6.1" + "@scalar/workspace-store" "0.28.1" + "@vueuse/core" "13.9.0" + ai "6.0.33" + neverpanic "0.0.5" + vue "^3.5.26" + whatwg-mimetype "4.0.0" + zod "^4.3.5" + +"@scalar/analytics-client@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@scalar/analytics-client/-/analytics-client-1.0.1.tgz#37d0003d4945b66460d1eb42fa8a3f4306ea027e" + integrity sha512-ai4DJuxsNLUEgJIlYDE3n8/oF47M31Rgjz3LxbefzejxE8LiidUud/fcEzMYtdxqJYi3ketzhSbTWK0o6gg4mQ== + dependencies: + zod "^4.1.11" + +"@scalar/api-client@2.23.0": + version "2.23.0" + resolved "https://registry.yarnpkg.com/@scalar/api-client/-/api-client-2.23.0.tgz#6d49b2e485d9ae5f41142ac8c3a3f089a9ef2605" + integrity sha512-U1Y/g1dQrcKgTKR/jjcfvWosagCbXTn+PX6tD+XQjsrubsoPyX4JwgdD0dRikdjrMi8SBRM3Yhpr4tiEIrH4vw== + dependencies: + "@headlessui/tailwindcss" "^0.2.2" + "@headlessui/vue" "1.7.23" + "@scalar/analytics-client" "1.0.1" + "@scalar/components" "0.17.2" + "@scalar/draggable" "0.3.0" + "@scalar/helpers" "0.2.10" + "@scalar/icons" "0.5.2" + "@scalar/import" "0.4.47" + "@scalar/json-magic" "0.9.5" + "@scalar/oas-utils" "0.6.32" + "@scalar/object-utils" "1.2.24" + "@scalar/openapi-parser" "0.24.6" + "@scalar/openapi-types" "0.5.3" + "@scalar/postman-to-openapi" "0.4.2" + "@scalar/sidebar" "0.7.25" + "@scalar/snippetz" "0.6.10" + "@scalar/themes" "0.14.0" + "@scalar/types" "0.6.1" + "@scalar/use-codemirror" "0.13.29" + "@scalar/use-hooks" "0.3.7" + "@scalar/use-toasts" "0.9.1" + "@scalar/workspace-store" "0.28.1" + "@types/har-format" "^1.2.15" + "@vueuse/core" "13.9.0" + "@vueuse/integrations" "13.9.0" + focus-trap "^7" + fuse.js "^7.1.0" + js-base64 "^3.7.8" + microdiff "^1.5.0" + nanoid "^5.1.6" + pretty-bytes "^7.1.0" + pretty-ms "^9.3.0" + shell-quote "^1.8.1" + type-fest "^5.3.1" + vue "^3.5.26" + vue-router "4.6.2" + whatwg-mimetype "4.0.0" + yaml "^2.8.0" + zod "^4.3.5" + +"@scalar/api-reference@1.44.9": + version "1.44.9" + resolved "https://registry.yarnpkg.com/@scalar/api-reference/-/api-reference-1.44.9.tgz#5431115baeaa7f85d9ecf0c77ca132064dfebc15" + integrity sha512-ogWA2U1HgDn5Suhfy43qwHxcGHP7kx9CN1XRbnK8CnkrCDTUsRUeVgJX3pZedRIa+XR6D12jc00dmwxrm4nA1w== + dependencies: + "@headlessui/vue" "1.7.23" + "@scalar/agent-chat" "0.4.8" + "@scalar/api-client" "2.23.0" + "@scalar/code-highlight" "0.2.2" + "@scalar/components" "0.17.2" + "@scalar/helpers" "0.2.10" + "@scalar/icons" "0.5.2" + "@scalar/oas-utils" "0.6.32" + "@scalar/openapi-parser" "0.24.6" + "@scalar/openapi-types" "0.5.3" + "@scalar/sidebar" "0.7.25" + "@scalar/snippetz" "0.6.10" + "@scalar/themes" "0.14.0" + "@scalar/types" "0.6.1" + "@scalar/use-hooks" "0.3.7" + "@scalar/use-toasts" "0.9.1" + "@scalar/workspace-store" "0.28.1" + "@unhead/vue" "^1.11.20" + "@vueuse/core" "13.9.0" + fuse.js "^7.1.0" + github-slugger "^2.0.0" + microdiff "^1.5.0" + nanoid "^5.1.6" + vue "^3.5.26" + +"@scalar/code-highlight@0.2.2": + version "0.2.2" + resolved "https://registry.yarnpkg.com/@scalar/code-highlight/-/code-highlight-0.2.2.tgz#7868d45035397b2c5b2595167b70d5dcd65e13f2" + integrity sha512-sr2nV0ngVEw3hUPWISj6t0VRztUIbFqNxZNY8ZwpvYj6YoU99c1cng9+4njxi3d7F7YgbNMPL2PQ2bWQLQEknQ== + dependencies: + hast-util-to-text "^4.0.2" + highlight.js "^11.9.0" + highlightjs-curl "^1.3.0" + lowlight "^3.1.0" + rehype-external-links "^3.0.0" + rehype-format "^5.0.0" + rehype-parse "^9.0.0" + rehype-raw "^7.0.0" + rehype-sanitize "^6.0.0" + rehype-stringify "^10.0.0" + remark-gfm "^4.0.0" + remark-parse "^11.0.0" + remark-rehype "^11.1.0" + remark-stringify "^11.0.0" + unified "^11.0.4" + unist-util-visit "^5.0.0" + +"@scalar/components@0.17.2": + version "0.17.2" + resolved "https://registry.yarnpkg.com/@scalar/components/-/components-0.17.2.tgz#0e74b19c59fc60cc3aa8b0cfb2f9cefaa5d831a2" + integrity sha512-efc6SJX41w4kyVpO0JnvNvvCsiQePKGLGx4bQ5yPp/8xifLrwvgZM1O3AglQq+pxrb0olR928+PINEkBBF+MLg== + dependencies: + "@floating-ui/utils" "0.2.10" + "@floating-ui/vue" "1.1.9" + "@headlessui/vue" "1.7.23" + "@scalar/code-highlight" "0.2.2" + "@scalar/helpers" "0.2.10" + "@scalar/icons" "0.5.2" + "@scalar/oas-utils" "0.6.32" + "@scalar/themes" "0.14.0" + "@scalar/use-hooks" "0.3.7" + "@vueuse/core" "13.9.0" + cva "1.0.0-beta.4" + nanoid "^5.1.6" + pretty-bytes "^7.1.0" + radix-vue "^1.9.17" + vue "^3.5.26" + vue-component-type-helpers "^3.2.2" + +"@scalar/draggable@0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@scalar/draggable/-/draggable-0.3.0.tgz#40cee8b9709bc3f8344cc59b2e5399016ff6fe21" + integrity sha512-T/79XY5HGNo9Lte7wlnrH393zjiulom4HuwW4u8RtaafWxIdtXykD2+TgiO0KTreyzCrWyWrESqiqKKJMe2nKg== + dependencies: + vue "^3.5.21" + +"@scalar/helpers@0.2.10": + version "0.2.10" + resolved "https://registry.yarnpkg.com/@scalar/helpers/-/helpers-0.2.10.tgz#7d39d82f933e032fc5bed6a782935050a84f058a" + integrity sha512-VS32setBEAGY9JifuDZKHIq8SUCUWLEfL1V+h3s5V4wcmE8OZVkzaJemsMq/YAM9e7gb9ZbkvJLL4zzEvPSrVg== + +"@scalar/icons@0.5.2": + version "0.5.2" + resolved "https://registry.yarnpkg.com/@scalar/icons/-/icons-0.5.2.tgz#51e83e24ed808936dfc6ccd2460a98f63e6ee2a2" + integrity sha512-jN0qXmaR1zGW9vZ5HUkhD1StM+52t+GONYstbo199h7tDYSsY+oWxtkuYqdWESiNg1VtNyJ9PruMmTi/PVyq/A== + dependencies: + "@phosphor-icons/core" "^2.1.1" + "@types/node" "^22.9.0" + chalk "^5.4.1" + vue "^3.5.21" + +"@scalar/import@0.4.47": + version "0.4.47" + resolved "https://registry.yarnpkg.com/@scalar/import/-/import-0.4.47.tgz#9a27b5763ca098315dbaf43468631f1ec66e16d9" + integrity sha512-ux3UYazFHItLcPBUp5Y+QkqsKXmS3CH5bIfc5NL1GC6rrTPNil4yBFS9EvWmDDqbJ0Yrgoh5JIiWDhARgAEo5w== + dependencies: + "@scalar/helpers" "0.2.10" + yaml "^2.8.0" + +"@scalar/json-magic@0.9.5": + version "0.9.5" + resolved "https://registry.yarnpkg.com/@scalar/json-magic/-/json-magic-0.9.5.tgz#44cdfb181f850eb038acec491c57b3ae64820368" + integrity sha512-+IZngReH0P+ima7y9u/f5QJD60AdISG81ezhwEVrYhsp46PiJp7YyOd0z1YLiOgwV0jkPlPo74T/FVBcM2ejuw== + dependencies: + "@scalar/helpers" "0.2.10" + yaml "^2.8.0" + +"@scalar/nuxt@^0.5.66": + version "0.5.66" + resolved "https://registry.yarnpkg.com/@scalar/nuxt/-/nuxt-0.5.66.tgz#163bca736a6191907d455db68e85d3dbcdfa2d61" + integrity sha512-VAhhpzKHpjOXnfFFov++GDHHpZO4eLnsCxi9Xw0Dav5+kartR1rzROYIM1if0Ozb/3LtsW/INH4rLqsaJvrq3g== + dependencies: + "@nuxt/kit" "^4.0.0" + "@scalar/api-client" "2.23.0" + "@scalar/api-reference" "1.44.9" + "@scalar/types" "0.6.1" + "@scalar/use-hooks" "0.3.7" + vue "^3.5.26" + +"@scalar/oas-utils@0.6.32": + version "0.6.32" + resolved "https://registry.yarnpkg.com/@scalar/oas-utils/-/oas-utils-0.6.32.tgz#0bf07fc1750e403e2d4ac4ceedf20df92b2b08aa" + integrity sha512-YODrtQJkfm2XHd6sSa51viydJKWlRAN7ydDh452iZGMIPsdvZF7T1gpBH0VsVPCcp/q8uMx3zMov6v8p13Ponw== + dependencies: + "@scalar/helpers" "0.2.10" + "@scalar/json-magic" "0.9.5" + "@scalar/object-utils" "1.2.24" + "@scalar/openapi-types" "0.5.3" + "@scalar/themes" "0.14.0" + "@scalar/types" "0.6.1" + "@scalar/workspace-store" "0.28.1" + flatted "^3.3.3" + type-fest "^5.3.1" + yaml "^2.8.0" + zod "^4.3.5" + +"@scalar/object-utils@1.2.24": + version "1.2.24" + resolved "https://registry.yarnpkg.com/@scalar/object-utils/-/object-utils-1.2.24.tgz#0dd8ee2ae412ae3099c885df243343b0e2d36113" + integrity sha512-P4JTiwoKynlAXeMk5LWFD/ngl1XANWvb+jPV0lSmPZvL6wxuxRn4PeOLUtRijAmfEDmIBzZRA4fmb+V/4cTVug== + dependencies: + "@scalar/helpers" "0.2.10" + flatted "^3.3.3" + just-clone "^6.2.0" + ts-deepmerge "^7.0.3" + +"@scalar/openapi-parser@0.24.6": + version "0.24.6" + resolved "https://registry.yarnpkg.com/@scalar/openapi-parser/-/openapi-parser-0.24.6.tgz#b5bf0718ca45f7cb4ebccca3b32086e98e736e26" + integrity sha512-5QJhxm7pfUc1bxq45LdqeU23pgNP/J0aBKc+XlNd6n5eUsnW2ZynVldd0D2G8E/8NSjwb6T8xyO5JAbkZXkYog== + dependencies: + "@scalar/helpers" "0.2.10" + "@scalar/json-magic" "0.9.5" + "@scalar/openapi-types" "0.5.3" + "@scalar/openapi-upgrader" "0.1.8" + ajv "^8.17.1" + ajv-draft-04 "^1.0.0" + ajv-formats "^3.0.1" + jsonpointer "^5.0.1" + leven "^4.0.0" + yaml "^2.8.0" + +"@scalar/openapi-types@0.5.3": + version "0.5.3" + resolved "https://registry.yarnpkg.com/@scalar/openapi-types/-/openapi-types-0.5.3.tgz#7f43a03a1e453418ecc568ca6464c2e396fa9e07" + integrity sha512-m4n/Su3K01d15dmdWO1LlqecdSPKuNjuokrJLdiQ485kW/hRHbXW1QP6tJL75myhw/XhX5YhYAR+jrwnGjXiMw== + dependencies: + zod "^4.1.11" + +"@scalar/openapi-upgrader@0.1.8": + version "0.1.8" + resolved "https://registry.yarnpkg.com/@scalar/openapi-upgrader/-/openapi-upgrader-0.1.8.tgz#1c5d85cc95271b928e420850ae4c2287c1db4d31" + integrity sha512-2xuYLLs0fBadLIk4I1ObjMiCnOyLPEMPf24A1HtHQvhKGDnGlvT63F2rU2Xw8lxCjgHnzveMPnOJEbwIy64RCg== + dependencies: + "@scalar/openapi-types" "0.5.3" + +"@scalar/postman-to-openapi@0.4.2": + version "0.4.2" + resolved "https://registry.yarnpkg.com/@scalar/postman-to-openapi/-/postman-to-openapi-0.4.2.tgz#318d2933d479e36e2f7108a8765a24f5aa18295d" + integrity sha512-EPuGnpCmcEwSXUD00ljF0pi+1yOxxa5lFiwGBqHeQgpVgIEipLIkCzJWVblSOOdPoVeCd4InTFaGo7QnLBu6RA== + dependencies: + "@scalar/helpers" "0.2.10" + "@scalar/openapi-types" "0.5.3" + +"@scalar/sidebar@0.7.25": + version "0.7.25" + resolved "https://registry.yarnpkg.com/@scalar/sidebar/-/sidebar-0.7.25.tgz#3544c9a724be70336c1bbd330bec3f180c6e4d24" + integrity sha512-hCW+JmvgiObiIob514z/pFF+oLJ6Dkd7+4E7KoOGRad0W4ck5P1103xuQ+bJtpvZnhfai+ZK/XpogB0v6maNWQ== + dependencies: + "@scalar/components" "0.17.2" + "@scalar/helpers" "0.2.10" + "@scalar/icons" "0.5.2" + "@scalar/themes" "0.14.0" + "@scalar/use-hooks" "0.3.7" + "@scalar/workspace-store" "0.28.1" + vue "^3.5.26" + +"@scalar/snippetz@0.6.10": + version "0.6.10" + resolved "https://registry.yarnpkg.com/@scalar/snippetz/-/snippetz-0.6.10.tgz#db3b63bc198654c814115ebeee27cb18b75dfb29" + integrity sha512-NWt5gXQ5I7JmYuFnOLjXOa8VVHsRbNSs9NWfVA5Dh8pJMa4kRZ9vYnjuK0XT0CTu3OJBwM7YaYu4k8lvfefdfg== + dependencies: + "@scalar/types" "0.6.1" + js-base64 "^3.7.8" + stringify-object "^6.0.0" + +"@scalar/themes@0.14.0": + version "0.14.0" + resolved "https://registry.yarnpkg.com/@scalar/themes/-/themes-0.14.0.tgz#8539cb600068eaa0be18c0a08f01dc3f39e72784" + integrity sha512-VCEBYRnXqQdek+MGVNP+aNepdofDm6sMn5Yr+AUd3eKbakGsLbNjuK1RNvZ+7RiGPVF1xLltNazkExWHBwLCIw== + dependencies: + nanoid "^5.1.6" + +"@scalar/typebox@0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@scalar/typebox/-/typebox-0.1.3.tgz#0959377d9ddbf73c97a3ac8ba8af672061863945" + integrity sha512-lU055AUccECZMIfGA0z/C1StYmboAYIPJLDFBzOO81yXBi35Pxdq+I4fWX6iUZ8qcoHneiLGk9jAUM1rA93iEg== + +"@scalar/types@0.6.1": + version "0.6.1" + resolved "https://registry.yarnpkg.com/@scalar/types/-/types-0.6.1.tgz#afbcf3273cd31ba0fb19540b0b5308a9704f85ac" + integrity sha512-2u/pZTauRLoUDD2PpJF8XDflZX3PgaYSD72cFDBL1WVM/jb0IxoWggxWKm34OR03LnNYbTvXlwfyr2QZ0hm3Xg== + dependencies: + "@scalar/helpers" "0.2.10" + nanoid "^5.1.6" + type-fest "^5.3.1" + zod "^4.3.5" + +"@scalar/use-codemirror@0.13.29": + version "0.13.29" + resolved "https://registry.yarnpkg.com/@scalar/use-codemirror/-/use-codemirror-0.13.29.tgz#45a4e554765560f9cb5a72a119b5c5424ba8ab4a" + integrity sha512-7WuoPl/u3X7mTHTEkxMCyvFirsevVnvldTykavYvHWSdbjL4ZX1HuFz7jRqtA4rjCEF6aMxyhmR/2k/bgMdVGQ== + dependencies: + "@codemirror/autocomplete" "^6.18.3" + "@codemirror/commands" "^6.7.1" + "@codemirror/lang-css" "^6.3.1" + "@codemirror/lang-html" "^6.4.8" + "@codemirror/lang-json" "^6.0.0" + "@codemirror/lang-xml" "^6.0.0" + "@codemirror/lang-yaml" "^6.1.2" + "@codemirror/language" "^6.10.7" + "@codemirror/lint" "^6.8.4" + "@codemirror/state" "^6.5.0" + "@codemirror/view" "^6.35.3" + "@lezer/common" "^1.2.3" + "@lezer/highlight" "^1.2.1" + "@replit/codemirror-css-color-picker" "^6.3.0" + "@scalar/components" "0.17.2" + vue "^3.5.26" + +"@scalar/use-hooks@0.3.7": + version "0.3.7" + resolved "https://registry.yarnpkg.com/@scalar/use-hooks/-/use-hooks-0.3.7.tgz#4bdd0197c34814cdc7cc1521afc43b2ed8d4c573" + integrity sha512-fhFRYKtGyCOPaLwDRHGaw5XZ3LY+ptCpcPON51r1sGXCl3O1joB2rBTkcXuh2E04uMB5vsko/71hxhWJZxSnGg== + dependencies: + "@scalar/use-toasts" "0.9.1" + "@vueuse/core" "13.9.0" + cva "1.0.0-beta.2" + tailwind-merge "3.4.0" + vue "^3.5.26" + zod "^4.3.5" + +"@scalar/use-toasts@0.9.1": + version "0.9.1" + resolved "https://registry.yarnpkg.com/@scalar/use-toasts/-/use-toasts-0.9.1.tgz#e15e8f30658851943ba1ff3234a3486208077c36" + integrity sha512-t8QoQO4ZWekiSdJ2O7C+PbXfv7x2fmhv3C7t/iITdNpOyLv4jAhlELGpxQHkWsU0ZwRrLU8e+rV0jJcKWE6vYA== + dependencies: + vue "^3.5.21" + vue-sonner "^1.0.3" + +"@scalar/workspace-store@0.28.1": + version "0.28.1" + resolved "https://registry.yarnpkg.com/@scalar/workspace-store/-/workspace-store-0.28.1.tgz#7b88580b99011df6afa73c6218c6f16ff1aff27e" + integrity sha512-0siWAIjo6/wphvNLBsJb+HqPD5arH9HkOZn//zvpU2222razTqVlocrHIVh20GS3iKFIIADEroZcD49hKnIphA== + dependencies: + "@scalar/code-highlight" "0.2.2" + "@scalar/helpers" "0.2.10" + "@scalar/json-magic" "0.9.5" + "@scalar/object-utils" "1.2.24" + "@scalar/openapi-upgrader" "0.1.8" + "@scalar/snippetz" "0.6.10" + "@scalar/themes" "0.14.0" + "@scalar/typebox" "0.1.3" + "@scalar/types" "0.6.1" + github-slugger "^2.0.0" + type-fest "^5.3.1" + vue "^3.5.26" + yaml "^2.8.0" + "@simplewebauthn/browser@^13.0.0": version "13.1.0" resolved "https://registry.npmjs.org/@simplewebauthn/browser/-/browser-13.1.0.tgz" @@ -1172,6 +2398,11 @@ resolved "https://registry.npmjs.org/@speed-highlight/core/-/core-1.2.7.tgz" integrity sha512-0dxmVj4gxg3Jg879kvFS/msl4s9F3T9UXC1InxgOf7t5NvcPD97u/WTA5vL/IxWHMn7qSxBozqrnnE2wvl1m8g== +"@standard-schema/spec@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@standard-schema/spec/-/spec-1.1.0.tgz#a79b55dbaf8604812f52d140b2c9ab41bc150bb8" + integrity sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w== + "@swc/helpers@^0.5.0", "@swc/helpers@^0.5.12": version "0.5.17" resolved "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.17.tgz" @@ -1192,6 +2423,68 @@ source-map-js "^1.2.1" tailwindcss "4.1.8" +"@tailwindcss/oxide-android-arm64@4.1.8": + version "4.1.8" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.8.tgz#4cb4b464636fc7e3154a1bb7df38a828291b3e9a" + integrity sha512-Fbz7qni62uKYceWYvUjRqhGfZKwhZDQhlrJKGtnZfuNtHFqa8wmr+Wn74CTWERiW2hn3mN5gTpOoxWKk0jRxjg== + +"@tailwindcss/oxide-darwin-arm64@4.1.8": + version "4.1.8" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.8.tgz#b0b8c02745f76aea683c30818e249d62821864b8" + integrity sha512-RdRvedGsT0vwVVDztvyXhKpsU2ark/BjgG0huo4+2BluxdXo8NDgzl77qh0T1nUxmM11eXwR8jA39ibvSTbi7A== + +"@tailwindcss/oxide-darwin-x64@4.1.8": + version "4.1.8" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.8.tgz#d0f3fa4c3bde21a772e29e31c9739d91db79de12" + integrity sha512-t6PgxjEMLp5Ovf7uMb2OFmb3kqzVTPPakWpBIFzppk4JE4ix0yEtbtSjPbU8+PZETpaYMtXvss2Sdkx8Vs4XRw== + +"@tailwindcss/oxide-freebsd-x64@4.1.8": + version "4.1.8" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.8.tgz#545c94c941007ed1aa2e449465501b70d59cb3da" + integrity sha512-g8C8eGEyhHTqwPStSwZNSrOlyx0bhK/V/+zX0Y+n7DoRUzyS8eMbVshVOLJTDDC+Qn9IJnilYbIKzpB9n4aBsg== + +"@tailwindcss/oxide-linux-arm-gnueabihf@4.1.8": + version "4.1.8" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.8.tgz#e1bdbf63a179081669b8cd1c9523889774760eb9" + integrity sha512-Jmzr3FA4S2tHhaC6yCjac3rGf7hG9R6Gf2z9i9JFcuyy0u79HfQsh/thifbYTF2ic82KJovKKkIB6Z9TdNhCXQ== + +"@tailwindcss/oxide-linux-arm64-gnu@4.1.8": + version "4.1.8" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.8.tgz#8d28093bbd43bdae771a2dcca720e926baa57093" + integrity sha512-qq7jXtO1+UEtCmCeBBIRDrPFIVI4ilEQ97qgBGdwXAARrUqSn/L9fUrkb1XP/mvVtoVeR2bt/0L77xx53bPZ/Q== + +"@tailwindcss/oxide-linux-arm64-musl@4.1.8": + version "4.1.8" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.8.tgz#cc6cece814d813885ead9cd8b9d55aeb3db56c97" + integrity sha512-O6b8QesPbJCRshsNApsOIpzKt3ztG35gfX9tEf4arD7mwNinsoCKxkj8TgEE0YRjmjtO3r9FlJnT/ENd9EVefQ== + +"@tailwindcss/oxide-linux-x64-gnu@4.1.8": + version "4.1.8" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.8.tgz#4cac14fa71382574773fb7986d9f0681ad89e3de" + integrity sha512-32iEXX/pXwikshNOGnERAFwFSfiltmijMIAbUhnNyjFr3tmWmMJWQKU2vNcFX0DACSXJ3ZWcSkzNbaKTdngH6g== + +"@tailwindcss/oxide-linux-x64-musl@4.1.8": + version "4.1.8" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.8.tgz#e085f1ccbc8f97625773a6a3afc2a6f88edf59da" + integrity sha512-s+VSSD+TfZeMEsCaFaHTaY5YNj3Dri8rST09gMvYQKwPphacRG7wbuQ5ZJMIJXN/puxPcg/nU+ucvWguPpvBDg== + +"@tailwindcss/oxide-wasm32-wasi@4.1.8": + version "4.1.8" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.8.tgz#c5e19fffe67f25cabf12a357bba4e87128151ea0" + integrity sha512-CXBPVFkpDjM67sS1psWohZ6g/2/cd+cq56vPxK4JeawelxwK4YECgl9Y9TjkE2qfF+9/s1tHHJqrC4SS6cVvSg== + dependencies: + "@emnapi/core" "^1.4.3" + "@emnapi/runtime" "^1.4.3" + "@emnapi/wasi-threads" "^1.0.2" + "@napi-rs/wasm-runtime" "^0.2.10" + "@tybys/wasm-util" "^0.9.0" + tslib "^2.8.0" + +"@tailwindcss/oxide-win32-arm64-msvc@4.1.8": + version "4.1.8" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.8.tgz#77521f23f91604c587736927fd2cb526667b7344" + integrity sha512-7GmYk1n28teDHUjPlIx4Z6Z4hHEgvP5ZW2QS9ygnDAdI/myh3HTHjDqtSqgu1BpRoI4OiLx+fThAyA1JePoENA== + "@tailwindcss/oxide-win32-x64-msvc@4.1.8": version "4.1.8" resolved "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.8.tgz" @@ -1232,6 +2525,18 @@ resolved "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.13.10.tgz" integrity sha512-sPEDhXREou5HyZYqSWIqdU580rsF6FGeN7vpzijmP3KTiOGjOMZASz4Y6+QKjiFQwhWrR58OP8izYaNGVxvViA== +"@tanstack/virtual-core@3.13.18": + version "3.13.18" + resolved "https://registry.yarnpkg.com/@tanstack/virtual-core/-/virtual-core-3.13.18.tgz#586e3c1fe08547ee6abf87e8fb7c99087b9c47ff" + integrity sha512-Mx86Hqu1k39icq2Zusq+Ey2J6dDWTjDvEv43PJtRCoEYTLyfaPnxIQ6iy7YAOK0NV/qOEmZQ/uCufrppZxTgcg== + +"@tanstack/vue-virtual@^3.0.0-beta.60", "@tanstack/vue-virtual@^3.8.1": + version "3.13.18" + resolved "https://registry.yarnpkg.com/@tanstack/vue-virtual/-/vue-virtual-3.13.18.tgz#fc00156da3152f380e7ec9abc38be0afd3c8e98a" + integrity sha512-6pT8HdHtTU5Z+t906cGdCroUNA5wHjFXsNss9gwk7QAr1VNZtz9IQCs2Nhx0gABK48c+OocHl2As+TMg8+Hy4A== + dependencies: + "@tanstack/virtual-core" "3.13.18" + "@tanstack/vue-virtual@^3.12.0": version "3.13.10" resolved "https://registry.npmjs.org/@tanstack/vue-virtual/-/vue-virtual-3.13.10.tgz" @@ -1244,6 +2549,27 @@ resolved "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz" integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== +"@tybys/wasm-util@^0.10.0": + version "0.10.1" + resolved "https://registry.yarnpkg.com/@tybys/wasm-util/-/wasm-util-0.10.1.tgz#ecddd3205cf1e2d5274649ff0eedd2991ed7f414" + integrity sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg== + dependencies: + tslib "^2.4.0" + +"@tybys/wasm-util@^0.9.0": + version "0.9.0" + resolved "https://registry.yarnpkg.com/@tybys/wasm-util/-/wasm-util-0.9.0.tgz#3e75eb00604c8d6db470bf18c37b7d984a0e3355" + integrity sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw== + dependencies: + tslib "^2.4.0" + +"@types/debug@^4.0.0": + version "4.1.12" + resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.12.tgz#a155f21690871953410df4b6b6f53187f0500917" + integrity sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ== + dependencies: + "@types/ms" "*" + "@types/estree@*", "@types/estree@^1.0.0": version "1.0.8" resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz" @@ -1254,6 +2580,30 @@ resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz" integrity sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ== +"@types/har-format@^1.2.15": + version "1.2.16" + resolved "https://registry.yarnpkg.com/@types/har-format/-/har-format-1.2.16.tgz#b71ede8681400cc08b3685f061c31e416cf94944" + integrity sha512-fluxdy7ryD3MV6h8pTfTYpy/xQzCFC7m89nOH9y94cNqJ1mDIDPut7MnRHI3F6qRmh/cT2fUjG1MLdCNb4hE9A== + +"@types/hast@^3.0.0": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/hast/-/hast-3.0.4.tgz#1d6b39993b82cea6ad783945b0508c25903e15aa" + integrity sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ== + dependencies: + "@types/unist" "*" + +"@types/mdast@^4.0.0": + version "4.0.4" + resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-4.0.4.tgz#7ccf72edd2f1aa7dd3437e180c64373585804dd6" + integrity sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA== + dependencies: + "@types/unist" "*" + +"@types/ms@*": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@types/ms/-/ms-2.1.0.tgz#052aa67a48eccc4309d7f0191b7e41434b90bb78" + integrity sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA== + "@types/node@*": version "22.15.30" resolved "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz" @@ -1261,6 +2611,13 @@ dependencies: undici-types "~6.21.0" +"@types/node@^22.9.0": + version "22.19.7" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.19.7.tgz#434094ee1731ae76c16083008590a5835a8c39c1" + integrity sha512-MciR4AKGHWl7xwxkBa6xUGxQJ4VBOmPTF7sL+iGzuahOFaO0jHCsuEfS80pan1ef4gWId1oWOweIhrDEYLuaOw== + dependencies: + undici-types "~6.21.0" + "@types/nodemailer@^6.4.17": version "6.4.17" resolved "https://registry.npmjs.org/@types/nodemailer/-/nodemailer-6.4.17.tgz" @@ -1306,6 +2663,16 @@ resolved "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.5.tgz" integrity sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw== +"@types/unist@*", "@types/unist@^3.0.0": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/unist/-/unist-3.0.3.tgz#acaab0f919ce69cce629c2d4ed2eb4adc1b6c20c" + integrity sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q== + +"@types/web-bluetooth@^0.0.20": + version "0.0.20" + resolved "https://registry.yarnpkg.com/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz#f066abfcd1cbe66267cdbbf0de010d8a41b41597" + integrity sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow== + "@types/web-bluetooth@^0.0.21": version "0.0.21" resolved "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.21.tgz" @@ -1327,12 +2694,12 @@ "@typescript-eslint/types" "^8.34.0" debug "^4.3.4" -"@typescript-eslint/tsconfig-utils@^8.34.0", "@typescript-eslint/tsconfig-utils@8.34.0": +"@typescript-eslint/tsconfig-utils@8.34.0", "@typescript-eslint/tsconfig-utils@^8.34.0": version "8.34.0" resolved "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.34.0.tgz" integrity sha512-+W9VYHKFIzA5cBeooqQxqNriAP0QeQ7xTiDuIOr71hzgffm3EL2hxwWBIIj4GuofIbKxGNarpKqIq6Q6YrShOA== -"@typescript-eslint/types@^8.34.0", "@typescript-eslint/types@8.34.0": +"@typescript-eslint/types@8.34.0", "@typescript-eslint/types@^8.34.0": version "8.34.0" resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.34.0.tgz" integrity sha512-9V24k/paICYPniajHfJ4cuAWETnt7Ssy+R0Rbcqo5sSFr3QEZ/8TSoUi9XeXVBGXCaLtwTOKSLGcInCAvyZeMA== @@ -1361,6 +2728,45 @@ "@typescript-eslint/types" "8.34.0" eslint-visitor-keys "^4.2.0" +"@ungap/structured-clone@^1.0.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.3.0.tgz#d06bbb384ebcf6c505fde1c3d0ed4ddffe0aaff8" + integrity sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g== + +"@unhead/dom@1.11.20": + version "1.11.20" + resolved "https://registry.yarnpkg.com/@unhead/dom/-/dom-1.11.20.tgz#b777f439e1c5f80ebcceb89aa45c45e877013c62" + integrity sha512-jgfGYdOH+xHJF/j8gudjsYu3oIjFyXhCWcgKaw3vQnT616gSqyqnGQGOItL+BQtQZACKNISwIfx5PuOtztMKLA== + dependencies: + "@unhead/schema" "1.11.20" + "@unhead/shared" "1.11.20" + +"@unhead/schema@1.11.20": + version "1.11.20" + resolved "https://registry.yarnpkg.com/@unhead/schema/-/schema-1.11.20.tgz#e4341832a203b990380df906391e9039501257fa" + integrity sha512-0zWykKAaJdm+/Y7yi/Yds20PrUK7XabLe9c3IRcjnwYmSWY6z0Cr19VIs3ozCj8P+GhR+/TI2mwtGlueCEYouA== + dependencies: + hookable "^5.5.3" + zhead "^2.2.4" + +"@unhead/shared@1.11.20": + version "1.11.20" + resolved "https://registry.yarnpkg.com/@unhead/shared/-/shared-1.11.20.tgz#593926bff62d88cda9a19b9d41d2bcdb3ed08da4" + integrity sha512-1MOrBkGgkUXS+sOKz/DBh4U20DNoITlJwpmvSInxEUNhghSNb56S0RnaHRq0iHkhrO/cDgz2zvfdlRpoPLGI3w== + dependencies: + "@unhead/schema" "1.11.20" + packrup "^0.1.2" + +"@unhead/vue@^1.11.20": + version "1.11.20" + resolved "https://registry.yarnpkg.com/@unhead/vue/-/vue-1.11.20.tgz#609513751abfd2d20426d2e97337f3a76fbb8b12" + integrity sha512-sqQaLbwqY9TvLEGeq8Fd7+F2TIuV3nZ5ihVISHjWpAM3y7DwNWRU7NmT9+yYT+2/jw1Vjwdkv5/HvDnvCLrgmg== + dependencies: + "@unhead/schema" "1.11.20" + "@unhead/shared" "1.11.20" + hookable "^5.5.3" + unhead "1.11.20" + "@unhead/vue@^2.0.10": version "2.0.10" resolved "https://registry.npmjs.org/@unhead/vue/-/vue-2.0.10.tgz" @@ -1369,7 +2775,7 @@ hookable "^5.5.3" unhead "2.0.10" -"@vercel/nft@^0.29.2", "@vercel/nft@0.29.4": +"@vercel/nft@0.29.4", "@vercel/nft@^0.29.2": version "0.29.4" resolved "https://registry.npmjs.org/@vercel/nft/-/nft-0.29.4.tgz" integrity sha512-6lLqMNX3TuycBPABycx7A9F1bHQR7kiQln6abjFbPrf5C/05qHM9M5E4PeTE59c7z8g6vHnx1Ioihb2AQl7BTA== @@ -1387,6 +2793,11 @@ picomatch "^4.0.2" resolve-from "^5.0.0" +"@vercel/oidc@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@vercel/oidc/-/oidc-3.1.0.tgz#066caee449b84079f33c7445fc862464fe10ec32" + integrity sha512-Fw28YZpRnA3cAHHDlkt7xQHiJ0fcL+NRcIqsocZQUSmbzeIKRpwttJjik5ZGanXP+vlA4SbTg+AbA3bP363l+w== + "@vitejs/plugin-vue-jsx@^4.2.0": version "4.2.0" resolved "https://registry.npmjs.org/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-4.2.0.tgz" @@ -1456,6 +2867,17 @@ estree-walker "^2.0.2" source-map-js "^1.2.1" +"@vue/compiler-core@3.5.27": + version "3.5.27" + resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.5.27.tgz#ce4402428e26095586eb889c41f6e172eb3960bd" + integrity sha512-gnSBQjZA+//qDZen+6a2EdHqJ68Z7uybrMf3SPjEGgG4dicklwDVmMC1AeIHxtLVPT7sn6sH1KOO+tS6gwOUeQ== + dependencies: + "@babel/parser" "^7.28.5" + "@vue/shared" "3.5.27" + entities "^7.0.0" + estree-walker "^2.0.2" + source-map-js "^1.2.1" + "@vue/compiler-dom@3.5.16": version "3.5.16" resolved "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.16.tgz" @@ -1464,7 +2886,15 @@ "@vue/compiler-core" "3.5.16" "@vue/shared" "3.5.16" -"@vue/compiler-sfc@^3.5.13", "@vue/compiler-sfc@3.5.16": +"@vue/compiler-dom@3.5.27": + version "3.5.27" + resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.5.27.tgz#32b2bc87f0a652c253986796ace0ed6213093af8" + integrity sha512-oAFea8dZgCtVVVTEC7fv3T5CbZW9BxpFzGGxC79xakTr6ooeEqmRuvQydIiDAkglZEAd09LgVf1RoDnL54fu5w== + dependencies: + "@vue/compiler-core" "3.5.27" + "@vue/shared" "3.5.27" + +"@vue/compiler-sfc@3.5.16", "@vue/compiler-sfc@^3.5.13": version "3.5.16" resolved "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.16.tgz" integrity sha512-rQR6VSFNpiinDy/DVUE0vHoIDUF++6p910cgcZoaAUm3POxgNOOdS/xgoll3rNdKYTYPnnbARDCZOyZ+QSe6Pw== @@ -1479,6 +2909,21 @@ postcss "^8.5.3" source-map-js "^1.2.1" +"@vue/compiler-sfc@3.5.27": + version "3.5.27" + resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.5.27.tgz#84651b8816bf8e7d6e62fddd14db86efd6d6f1b6" + integrity sha512-sHZu9QyDPeDmN/MRoshhggVOWE5WlGFStKFwu8G52swATgSny27hJRWteKDSUUzUH+wp+bmeNbhJnEAel/auUQ== + dependencies: + "@babel/parser" "^7.28.5" + "@vue/compiler-core" "3.5.27" + "@vue/compiler-dom" "3.5.27" + "@vue/compiler-ssr" "3.5.27" + "@vue/shared" "3.5.27" + estree-walker "^2.0.2" + magic-string "^0.30.21" + postcss "^8.5.6" + source-map-js "^1.2.1" + "@vue/compiler-ssr@3.5.16": version "3.5.16" resolved "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.16.tgz" @@ -1487,6 +2932,14 @@ "@vue/compiler-dom" "3.5.16" "@vue/shared" "3.5.16" +"@vue/compiler-ssr@3.5.27": + version "3.5.27" + resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.5.27.tgz#b480cad09dacf8f3d9c82b9843402f1a803baee7" + integrity sha512-Sj7h+JHt512fV1cTxKlYhg7qxBvack+BGncSpH+8vnN+KN95iPIcqB5rsbblX40XorP+ilO7VIKlkuu3Xq2vjw== + dependencies: + "@vue/compiler-dom" "3.5.27" + "@vue/shared" "3.5.27" + "@vue/devtools-api@^6.6.4": version "6.6.4" resolved "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz" @@ -1531,6 +2984,13 @@ dependencies: "@vue/shared" "3.5.16" +"@vue/reactivity@3.5.27": + version "3.5.27" + resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.5.27.tgz#d870557de1389a27b8abcb7cbfa30978dc69a000" + integrity sha512-vvorxn2KXfJ0nBEnj4GYshSgsyMNFnIQah/wczXlsNXt+ijhugmW+PpJ2cNPe4V6jpnBcs0MhCODKllWG+nvoQ== + dependencies: + "@vue/shared" "3.5.27" + "@vue/runtime-core@3.5.16": version "3.5.16" resolved "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.16.tgz" @@ -1539,6 +2999,14 @@ "@vue/reactivity" "3.5.16" "@vue/shared" "3.5.16" +"@vue/runtime-core@3.5.27": + version "3.5.27" + resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.5.27.tgz#bb43744ed070166c7d581b849ac22b71a9ccf127" + integrity sha512-fxVuX/fzgzeMPn/CLQecWeDIFNt3gQVhxM0rW02Tvp/YmZfXQgcTXlakq7IMutuZ/+Ogbn+K0oct9J3JZfyk3A== + dependencies: + "@vue/reactivity" "3.5.27" + "@vue/shared" "3.5.27" + "@vue/runtime-dom@3.5.16": version "3.5.16" resolved "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.16.tgz" @@ -1549,6 +3017,16 @@ "@vue/shared" "3.5.16" csstype "^3.1.3" +"@vue/runtime-dom@3.5.27": + version "3.5.27" + resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.5.27.tgz#392513252c7ca7e5277240fdc70b8093449127f5" + integrity sha512-/QnLslQgYqSJ5aUmb5F0z0caZPGHRB8LEAQ1s81vHFM5CBfnun63rxhvE/scVb/j3TbBuoZwkJyiLCkBluMpeg== + dependencies: + "@vue/reactivity" "3.5.27" + "@vue/runtime-core" "3.5.27" + "@vue/shared" "3.5.27" + csstype "^3.2.3" + "@vue/server-renderer@3.5.16": version "3.5.16" resolved "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.16.tgz" @@ -1557,11 +3035,43 @@ "@vue/compiler-ssr" "3.5.16" "@vue/shared" "3.5.16" -"@vue/shared@^3.5.13", "@vue/shared@^3.5.16", "@vue/shared@3.5.16": +"@vue/server-renderer@3.5.27": + version "3.5.27" + resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.5.27.tgz#8137d0d7ec3b59d5992bb04c553775d209dddba7" + integrity sha512-qOz/5thjeP1vAFc4+BY3Nr6wxyLhpeQgAE/8dDtKo6a6xdk+L4W46HDZgNmLOBUDEkFXV3G7pRiUqxjX0/2zWA== + dependencies: + "@vue/compiler-ssr" "3.5.27" + "@vue/shared" "3.5.27" + +"@vue/shared@3.5.16", "@vue/shared@^3.5.13", "@vue/shared@^3.5.16": version "3.5.16" resolved "https://registry.npmjs.org/@vue/shared/-/shared-3.5.16.tgz" integrity sha512-c/0fWy3Jw6Z8L9FmTyYfkpM5zklnqqa9+a6dz3DvONRKW2NEbh46BP0FHuLFSWi2TnQEtp91Z6zOWNrU6QiyPg== +"@vue/shared@3.5.27": + version "3.5.27" + resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.5.27.tgz#33a63143d8fb9ca1b3efbc7ecf9bd0ab05f7e06e" + integrity sha512-dXr/3CgqXsJkZ0n9F3I4elY8wM9jMJpP3pvRG52r6m0tu/MsAFIe6JpXVGeNMd/D9F4hQynWT8Rfuj0bdm9kFQ== + +"@vueuse/core@13.9.0": + version "13.9.0" + resolved "https://registry.yarnpkg.com/@vueuse/core/-/core-13.9.0.tgz#051aeff47a259e9e4d7d0cc3e54879817b0cbcad" + integrity sha512-ts3regBQyURfCE2BcytLqzm8+MmLlo5Ln/KLoxDVcsZ2gzIwVNnQpQOL/UKV8alUqjSZOlpFZcRNsLRqj+OzyA== + dependencies: + "@types/web-bluetooth" "^0.0.21" + "@vueuse/metadata" "13.9.0" + "@vueuse/shared" "13.9.0" + +"@vueuse/core@^10.11.0": + version "10.11.1" + resolved "https://registry.yarnpkg.com/@vueuse/core/-/core-10.11.1.tgz#15d2c0b6448d2212235b23a7ba29c27173e0c2c6" + integrity sha512-guoy26JQktXPcz+0n3GukWIy/JDNKti9v6VEMu6kV2sYBsWuGiTU8OWdg+ADfUbHg3/3DlqySDe7JmdHrktiww== + dependencies: + "@types/web-bluetooth" "^0.0.20" + "@vueuse/metadata" "10.11.1" + "@vueuse/shared" "10.11.1" + vue-demi ">=0.14.8" + "@vueuse/core@^12.5.0": version "12.8.2" resolved "https://registry.npmjs.org/@vueuse/core/-/core-12.8.2.tgz" @@ -1581,6 +3091,19 @@ "@vueuse/metadata" "13.4.0" "@vueuse/shared" "13.4.0" +"@vueuse/integrations@13.9.0": + version "13.9.0" + resolved "https://registry.yarnpkg.com/@vueuse/integrations/-/integrations-13.9.0.tgz#1bd1d77093a327321cca00e2bbf5da7b18aa6b43" + integrity sha512-SDobKBbPIOe0cVL7QxMzGkuUGHvWTdihi9zOrrWaWUgFKe15cwEcwfWmgrcNzjT6kHnNmWuTajPHoIzUjYNYYQ== + dependencies: + "@vueuse/core" "13.9.0" + "@vueuse/shared" "13.9.0" + +"@vueuse/metadata@10.11.1": + version "10.11.1" + resolved "https://registry.yarnpkg.com/@vueuse/metadata/-/metadata-10.11.1.tgz#209db7bb5915aa172a87510b6de2ca01cadbd2a7" + integrity sha512-IGa5FXd003Ug1qAZmyE8wF3sJ81xGLSqTqtQ6jaVfkeZ4i5kS2mwQF61yhVqojRnenVew5PldLyRgvdl4YYuSw== + "@vueuse/metadata@12.8.2": version "12.8.2" resolved "https://registry.npmjs.org/@vueuse/metadata/-/metadata-12.8.2.tgz" @@ -1591,7 +3114,19 @@ resolved "https://registry.npmjs.org/@vueuse/metadata/-/metadata-13.4.0.tgz" integrity sha512-CPDQ/IgOeWbqItg1c/pS+Ulum63MNbpJ4eecjFJqgD/JUCJ822zLfpw6M9HzSvL6wbzMieOtIAW/H8deQASKHg== -"@vueuse/shared@^12.5.0", "@vueuse/shared@12.8.2": +"@vueuse/metadata@13.9.0": + version "13.9.0" + resolved "https://registry.yarnpkg.com/@vueuse/metadata/-/metadata-13.9.0.tgz#57c738d99661c33347080c0bc4cd11160e0d0881" + integrity sha512-1AFRvuiGphfF7yWixZa0KwjYH8ulyjDCC0aFgrGRz8+P4kvDFSdXLVfTk5xAN9wEuD1J6z4/myMoYbnHoX07zg== + +"@vueuse/shared@10.11.1", "@vueuse/shared@^10.11.0": + version "10.11.1" + resolved "https://registry.yarnpkg.com/@vueuse/shared/-/shared-10.11.1.tgz#62b84e3118ae6e1f3ff38f4fbe71b0c5d0f10938" + integrity sha512-LHpC8711VFZlDaYUXEBbFBCQ7GS3dVU9mjOhhMhXP6txTV4EhYQg/KGnQuvt/sPAtoUKq7VVUnL6mVtFoL42sA== + dependencies: + vue-demi ">=0.14.8" + +"@vueuse/shared@12.8.2", "@vueuse/shared@^12.5.0": version "12.8.2" resolved "https://registry.npmjs.org/@vueuse/shared/-/shared-12.8.2.tgz" integrity sha512-dznP38YzxZoNloI0qpEfpkms8knDtaoQ6Y/sfS0L7Yki4zh40LFHEhur0odJC6xTHG5dxWVPiUWBXn+wCG2s5w== @@ -1603,6 +3138,11 @@ resolved "https://registry.npmjs.org/@vueuse/shared/-/shared-13.4.0.tgz" integrity sha512-+AxuKbw8R1gYy5T21V5yhadeNM7rJqb4cPaRI9DdGnnNl3uqXh+unvQ3uCaA2DjYLbNr1+l7ht/B4qEsRegX6A== +"@vueuse/shared@13.9.0": + version "13.9.0" + resolved "https://registry.yarnpkg.com/@vueuse/shared/-/shared-13.9.0.tgz#7168b4ed647e625b05eb4e7e80fe8aabd00e3923" + integrity sha512-e89uuTLMh0U5cZ9iDpEI2senqPGfbPRTHM/0AaQkcxnpqjkZqDYP8rpfm7edOz8s+pOCOROEy1PIveSW8+fL5g== + "@whatwg-node/disposablestack@^0.0.6": version "0.0.6" resolved "https://registry.npmjs.org/@whatwg-node/disposablestack/-/disposablestack-0.0.6.tgz" @@ -1663,7 +3203,7 @@ acorn-import-attributes@^1.9.5: resolved "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz" integrity sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ== -acorn@^8.14.0, acorn@^8.14.1, acorn@^8.6.0: +acorn@^8.14.0, acorn@^8.14.1, acorn@^8.15.0, acorn@^8.6.0: version "8.15.0" resolved "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz" integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg== @@ -1673,6 +3213,38 @@ agent-base@^7.1.2: resolved "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz" integrity sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw== +ai@6.0.33: + version "6.0.33" + resolved "https://registry.yarnpkg.com/ai/-/ai-6.0.33.tgz#15b0f48ecfc5f9f9c5cfdfac28ee1b3c4d1efeb3" + integrity sha512-bVokbmy2E2QF6Efl+5hOJx5MRWoacZ/CZY/y1E+VcewknvGlgaiCzMu8Xgddz6ArFJjiMFNUPHKxAhIePE4rmg== + dependencies: + "@ai-sdk/gateway" "3.0.13" + "@ai-sdk/provider" "3.0.2" + "@ai-sdk/provider-utils" "4.0.5" + "@opentelemetry/api" "1.9.0" + +ajv-draft-04@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/ajv-draft-04/-/ajv-draft-04-1.0.0.tgz#3b64761b268ba0b9e668f0b41ba53fce0ad77fc8" + integrity sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw== + +ajv-formats@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-3.0.1.tgz#3d5dc762bca17679c3c2ea7e90ad6b7532309578" + integrity sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ== + dependencies: + ajv "^8.0.0" + +ajv@^8.0.0, ajv@^8.17.1: + version "8.17.1" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.17.1.tgz#37d9a5c776af6bc92d7f4f9510eba4c0a60d11a6" + integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g== + dependencies: + fast-deep-equal "^3.1.3" + fast-uri "^3.0.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + ansi-regex@^5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" @@ -1798,6 +3370,11 @@ b4a@^1.6.4: resolved "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz" integrity sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg== +bail@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/bail/-/bail-2.0.2.tgz#d26f5cd8fe5d6f832a31517b9f7c356040ba6d5d" + integrity sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw== + balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" @@ -1947,6 +3524,24 @@ c12@^3.0.3, c12@^3.0.4: pkg-types "^2.1.0" rc9 "^2.1.2" +c12@^3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/c12/-/c12-3.3.3.tgz#cab6604e6e6117fc9e62439a8e8144bbbe5edcd6" + integrity sha512-750hTRvgBy5kcMNPdh95Qo+XUBeGo8C7nsKSmedDmaQI+E0r82DwHeM6vBewDe4rGFbnxoa4V9pw+sPh5+Iz8Q== + dependencies: + chokidar "^5.0.0" + confbox "^0.2.2" + defu "^6.1.4" + dotenv "^17.2.3" + exsolve "^1.0.8" + giget "^2.0.0" + jiti "^2.6.1" + ohash "^2.0.11" + pathe "^2.0.3" + perfect-debounce "^2.0.0" + pkg-types "^2.3.0" + rc9 "^2.1.2" + cac@^6.7.14: version "6.7.14" resolved "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz" @@ -1993,6 +3588,31 @@ caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001702, caniuse-lite@^1.0.30001718: resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001721.tgz" integrity sha512-cOuvmUVtKrtEaoKiO0rSc29jcjwMwX5tOHDy4MgVFEWiUXj4uBMJkwI8MDySkgXidpMiHUcviogAvFi4pA2hDQ== +ccount@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/ccount/-/ccount-2.0.1.tgz#17a3bf82302e0870d6da43a01311a8bc02a3ecf5" + integrity sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg== + +chalk@^5.4.1: + version "5.6.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.6.2.tgz#b1238b6e23ea337af71c7f8a295db5af0c158aea" + integrity sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA== + +character-entities-html4@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-2.1.0.tgz#1f1adb940c971a4b22ba39ddca6b618dc6e56b2b" + integrity sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA== + +character-entities-legacy@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz#76bc83a90738901d7bc223a9e93759fdd560125b" + integrity sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ== + +character-entities@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-2.0.2.tgz#2d09c2e72cd9523076ccb21157dff66ad43fcc22" + integrity sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ== + chokidar@^4.0.1, chokidar@^4.0.3: version "4.0.3" resolved "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz" @@ -2000,6 +3620,13 @@ chokidar@^4.0.1, chokidar@^4.0.3: dependencies: readdirp "^4.0.1" +chokidar@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-5.0.0.tgz#949c126a9238a80792be9a0265934f098af369a5" + integrity sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw== + dependencies: + readdirp "^5.0.0" + chownr@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz" @@ -2075,16 +3702,16 @@ color-convert@^2.0.1: dependencies: color-name "~1.1.4" -color-name@^1.0.0, color-name@^1.1.4, color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - color-name@1.1.3: version "1.1.3" resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== +color-name@^1.0.0, color-name@^1.1.4, color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + color-string@^1.6.0: version "1.9.1" resolved "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz" @@ -2114,6 +3741,11 @@ colorspace@1.1.x: color "^3.1.3" text-hex "1.0.x" +comma-separated-tokens@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz#4e89c9458acb61bc8fef19f4529973b2392839ee" + integrity sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg== + commander@^10.0.1: version "10.0.1" resolved "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz" @@ -2175,6 +3807,11 @@ consola@^3.2.3, consola@^3.4.0, consola@^3.4.2: resolved "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz" integrity sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA== +convert-hrtime@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/convert-hrtime/-/convert-hrtime-5.0.0.tgz#f2131236d4598b95de856926a67100a0a97e9fa3" + integrity sha512-lOETlkIeYSJWcbbcvjRKGxVMXJR+8+OQb/mTPbA4ObPMytYIsUbuOE0Jzy60hjARYszq1id0j8KgVhC+WGZVTg== + convert-source-map@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz" @@ -2228,6 +3865,11 @@ crc32-stream@^6.0.0: crc-32 "^1.2.0" readable-stream "^4.0.0" +crelt@^1.0.5, crelt@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/crelt/-/crelt-1.0.6.tgz#7cc898ea74e190fb6ef9dae57f8f81cf7302df72" + integrity sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g== + cron-parser@^4.9.0: version "4.9.0" resolved "https://registry.npmjs.org/cron-parser/-/cron-parser-4.9.0.tgz" @@ -2256,7 +3898,7 @@ cross-spawn@^7.0.3, cross-spawn@^7.0.6: shebang-command "^2.0.0" which "^2.0.1" -crossws@^0.3.4, crossws@^0.3.5, "crossws@>=0.2.0 <0.4.0": +"crossws@>=0.2.0 <0.4.0", crossws@^0.3.4, crossws@^0.3.5: version "0.3.5" resolved "https://registry.npmjs.org/crossws/-/crossws-0.3.5.tgz" integrity sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA== @@ -2367,12 +4009,31 @@ csso@^5.0.5: resolved "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz" integrity sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ== dependencies: - css-tree "~2.2.0" + css-tree "~2.2.0" + +csstype@^3.1.3: + version "3.1.3" + resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz" + integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== + +csstype@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.2.3.tgz#ec48c0f3e993e50648c86da559e2610995cf989a" + integrity sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ== + +cva@1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/cva/-/cva-1.0.0-beta.2.tgz#9d8b43e0f9ad92904bb4065b6b40b2c06da96c92" + integrity sha512-dqcOFe247I5pKxfuzqfq3seLL5iMYsTgo40Uw7+pKZAntPgFtR7Tmy59P5IVIq/XgB0NQWoIvYDt9TwHkuK8Cg== + dependencies: + clsx "^2.1.1" -csstype@^3.1.3: - version "3.1.3" - resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz" - integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== +cva@1.0.0-beta.4: + version "1.0.0-beta.4" + resolved "https://registry.yarnpkg.com/cva/-/cva-1.0.0-beta.4.tgz#3feb8b403a1774110eb34e2c409cb0b7c7fbe243" + integrity sha512-F/JS9hScapq4DBVQXcK85l9U91M6ePeXoBMSp7vypzShoefUBxjQTo3g3935PUHgQd+IW77DjbPRIxugy4/GCQ== + dependencies: + clsx "^2.1.1" data-uri-to-buffer@^4.0.0: version "4.0.1" @@ -2384,13 +4045,20 @@ db0@^0.3.2: resolved "https://registry.npmjs.org/db0/-/db0-0.3.2.tgz" integrity sha512-xzWNQ6jk/+NtdfLyXEipbX55dmDSeteLFt/ayF+wZUU5bzKgmrDOxmInUTbyVRp46YwnJdkDA1KhB7WIXFofJw== -debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.4, debug@^4.3.5, debug@^4.4.0, debug@^4.4.1, debug@4: +debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.4, debug@^4.3.5, debug@^4.4.0, debug@^4.4.1: version "4.4.1" resolved "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz" integrity sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ== dependencies: ms "^2.1.3" +debug@^4.0.0: + version "4.4.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.3.tgz#c6ae432d9bd9662582fce08709b038c58e9e3d6a" + integrity sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA== + dependencies: + ms "^2.1.3" + decache@^4.6.2: version "4.6.2" resolved "https://registry.npmjs.org/decache/-/decache-4.6.2.tgz" @@ -2403,6 +4071,13 @@ decamelize@^1.2.0: resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== +decode-named-character-reference@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.3.0.tgz#3e40603760874c2e5867691b599d73a7da25b53f" + integrity sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q== + dependencies: + character-entities "^2.0.0" + deepmerge@^4.2.2: version "4.3.1" resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz" @@ -2446,6 +4121,11 @@ depd@2.0.0: resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== +dequal@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" + integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== + destr@^2.0.3, destr@^2.0.5: version "2.0.5" resolved "https://registry.npmjs.org/destr/-/destr-2.0.5.tgz" @@ -2542,6 +4222,13 @@ devalue@^5.1.1: resolved "https://registry.npmjs.org/devalue/-/devalue-5.1.1.tgz" integrity sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw== +devlop@^1.0.0, devlop@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/devlop/-/devlop-1.1.0.tgz#4db7c2ca4dc6e0e834c30be70c94bbc976dc7018" + integrity sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA== + dependencies: + dequal "^2.0.0" + dfa@^1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/dfa/-/dfa-1.2.0.tgz" @@ -2587,7 +4274,7 @@ domutils@^3.0.1: domelementtype "^2.3.0" domhandler "^5.0.3" -dot-prop@^9.0.0, dot-prop@9.0.0: +dot-prop@9.0.0, dot-prop@^9.0.0: version "9.0.0" resolved "https://registry.npmjs.org/dot-prop/-/dot-prop-9.0.0.tgz" integrity sha512-1gxPBJpI/pcjQhKgIU91II6Wkay+dLcN3M6rf2uwP8hRur3HtQXjVrdAK3sjC0piaEuxzMwjXChcETiJl47lAQ== @@ -2599,6 +4286,11 @@ dotenv@^16.3.1, dotenv@^16.4.7, dotenv@^16.5.0: resolved "https://registry.npmjs.org/dotenv/-/dotenv-16.5.0.tgz" integrity sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg== +dotenv@^17.2.3: + version "17.2.3" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-17.2.3.tgz#ad995d6997f639b11065f419a22fabf567cdb9a2" + integrity sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w== + drizzle-kit@^0.31.4: version "0.31.4" resolved "https://registry.npmjs.org/drizzle-kit/-/drizzle-kit-0.31.4.tgz" @@ -2683,6 +4375,16 @@ entities@^4.2.0, entities@^4.5.0: resolved "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz" integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== +entities@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/entities/-/entities-6.0.1.tgz#c28c34a43379ca7f61d074130b2f5f7020a30694" + integrity sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g== + +entities@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/entities/-/entities-7.0.1.tgz#26e8a88889db63417dcb9a1e79a3f1bc92b5976b" + integrity sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA== + env-paths@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/env-paths/-/env-paths-3.0.0.tgz" @@ -2727,7 +4429,7 @@ esbuild-register@^3.5.0: dependencies: debug "^4.3.4" -esbuild@^0.25.0, esbuild@^0.25.4, esbuild@^0.25.5, esbuild@~0.25.0, esbuild@0.25.5: +esbuild@0.25.5, esbuild@^0.25.0, esbuild@^0.25.4, esbuild@^0.25.5, esbuild@~0.25.0: version "0.25.5" resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.25.5.tgz" integrity sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ== @@ -2827,7 +4529,7 @@ estraverse@^5.2.0: resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== -estree-walker@^2.0.2, estree-walker@2.0.2: +estree-walker@2.0.2, estree-walker@^2.0.2: version "2.0.2" resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz" integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== @@ -2859,6 +4561,11 @@ events@^3.3.0: resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== +eventsource-parser@^3.0.6: + version "3.0.6" + resolved "https://registry.yarnpkg.com/eventsource-parser/-/eventsource-parser-3.0.6.tgz#292e165e34cacbc936c3c92719ef326d4aeb4e90" + integrity sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg== + execa@^8.0.0, execa@^8.0.1: version "8.0.1" resolved "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz" @@ -2879,6 +4586,16 @@ exsolve@^1.0.1, exsolve@^1.0.4, exsolve@^1.0.5: resolved "https://registry.npmjs.org/exsolve/-/exsolve-1.0.5.tgz" integrity sha512-pz5dvkYYKQ1AHVrgOzBKWeP4u4FRb3a6DNK2ucr0OoNwYIU4QWsJ+NM36LLzORT+z845MzKHHhpXiUF5nvQoJg== +exsolve@^1.0.7, exsolve@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/exsolve/-/exsolve-1.0.8.tgz#7f5e34da61cd1116deda5136e62292c096f50613" + integrity sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA== + +extend@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + externality@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/externality/-/externality-1.0.2.tgz" @@ -2931,6 +4648,11 @@ fast-npm-meta@^0.4.3: resolved "https://registry.npmjs.org/fast-npm-meta/-/fast-npm-meta-0.4.3.tgz" integrity sha512-eUzR/uVx61fqlHBjG/eQx5mQs7SQObehMTTdq8FAkdCB4KuZSQ6DiZMIrAq4kcibB3WFLQ9c4dT26Vwkix1RKg== +fast-uri@^3.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.1.0.tgz#66eecff6c764c0df9b762e62ca7edcfb53b4edfa" + integrity sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA== + fastq@^1.6.0: version "1.19.1" resolved "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz" @@ -2950,6 +4672,11 @@ fdir@^6.2.0, fdir@^6.4.4: resolved "https://registry.npmjs.org/fdir/-/fdir-6.4.5.tgz" integrity sha512-4BG7puHpVsIYxZUbiUE3RqGloLaSSwzYie5jvasC4LWuBWzZawynvYouhjbQKw2JuIGYdm0DzIxl8iVidKlUEw== +fdir@^6.5.0: + version "6.5.0" + resolved "https://registry.yarnpkg.com/fdir/-/fdir-6.5.0.tgz#ed2ab967a331ade62f18d077dae192684d50d350" + integrity sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg== + fecha@^4.2.0: version "4.2.3" resolved "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz" @@ -2985,6 +4712,15 @@ find-up-simple@^1.0.0: resolved "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.1.tgz" integrity sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ== +find-up@7.0.0, find-up@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-7.0.0.tgz" + integrity sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g== + dependencies: + locate-path "^7.2.0" + path-exists "^5.0.0" + unicorn-magic "^0.1.0" + find-up@^4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" @@ -2993,20 +4729,23 @@ find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" -find-up@^7.0.0, find-up@7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-7.0.0.tgz" - integrity sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g== - dependencies: - locate-path "^7.2.0" - path-exists "^5.0.0" - unicorn-magic "^0.1.0" +flatted@^3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.3.tgz#67c8fad95454a7c7abebf74bb78ee74a44023358" + integrity sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg== fn.name@1.x.x: version "1.1.0" resolved "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz" integrity sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw== +focus-trap@^7: + version "7.8.0" + resolved "https://registry.yarnpkg.com/focus-trap/-/focus-trap-7.8.0.tgz#b1d9463fa42b93ad7a5223d750493a6c09b672a8" + integrity sha512-/yNdlIkpWbM0ptxno3ONTuf+2g318kh2ez3KSeZN5dZ8YC6AAmgeWz+GasYYiBJPFaYcSAPeu4GfhUaChzIJXA== + dependencies: + tabbable "^6.4.0" + fontaine@^0.6.0: version "0.6.0" resolved "https://registry.npmjs.org/fontaine/-/fontaine-0.6.0.tgz" @@ -3061,11 +4800,21 @@ fresh@^2.0.0: resolved "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz" integrity sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A== +fsevents@~2.3.2, fsevents@~2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + function-bind@^1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== +function-timeout@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/function-timeout/-/function-timeout-1.0.2.tgz#e5a7b6ffa523756ff20e1231bbe37b5f373aadd5" + integrity sha512-939eZS4gJ3htTHAldmyyuzlrD58P03fHG49v2JfFXbV6OhvZKRC9j2yAtdHw/zrp2zXHuv05zMIy40F0ge7spA== + fuse.js@^7.1.0: version "7.1.0" resolved "https://registry.npmjs.org/fuse.js/-/fuse.js-7.1.0.tgz" @@ -3105,6 +4854,11 @@ get-intrinsic@^1.2.5, get-intrinsic@^1.3.0: hasown "^2.0.2" math-intrinsics "^1.1.0" +get-own-enumerable-keys@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/get-own-enumerable-keys/-/get-own-enumerable-keys-1.0.0.tgz#59bbda0f7e7469c8c74086e08f79f1381b203899" + integrity sha512-PKsK2FSrQCyxcGHsGrLDcK0lx+0Ke+6e8KFFozA9/fIQLhQzPaRvJFdcz7+Axg3jUH/Mq+NI4xa5u/UT2tQskA== + get-port-please@^3.1.2: version "3.1.2" resolved "https://registry.npmjs.org/get-port-please/-/get-port-please-3.1.2.tgz" @@ -3164,6 +4918,11 @@ git-url-parse@^16.0.1: dependencies: git-up "^8.1.0" +github-slugger@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/github-slugger/-/github-slugger-2.0.0.tgz#52cf2f9279a21eb6c59dd385b410f0c0adda8f1a" + integrity sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw== + glob-parent@^5.1.2: version "5.1.2" resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" @@ -3263,6 +5022,199 @@ hasown@^2.0.2: dependencies: function-bind "^1.1.2" +hast-util-embedded@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/hast-util-embedded/-/hast-util-embedded-3.0.0.tgz#be4477780fbbe079cdba22982e357a0de4ba853e" + integrity sha512-naH8sld4Pe2ep03qqULEtvYr7EjrLK2QHY8KJR6RJkTUjPGObe1vnx585uzem2hGra+s1q08DZZpfgDVYRbaXA== + dependencies: + "@types/hast" "^3.0.0" + hast-util-is-element "^3.0.0" + +hast-util-format@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/hast-util-format/-/hast-util-format-1.1.0.tgz#373e77382e07deb04f6676f1b4437e7d8549d985" + integrity sha512-yY1UDz6bC9rDvCWHpx12aIBGRG7krurX0p0Fm6pT547LwDIZZiNr8a+IHDogorAdreULSEzP82Nlv5SZkHZcjA== + dependencies: + "@types/hast" "^3.0.0" + hast-util-embedded "^3.0.0" + hast-util-minify-whitespace "^1.0.0" + hast-util-phrasing "^3.0.0" + hast-util-whitespace "^3.0.0" + html-whitespace-sensitive-tag-names "^3.0.0" + unist-util-visit-parents "^6.0.0" + +hast-util-from-html@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/hast-util-from-html/-/hast-util-from-html-2.0.3.tgz#485c74785358beb80c4ba6346299311ac4c49c82" + integrity sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw== + dependencies: + "@types/hast" "^3.0.0" + devlop "^1.1.0" + hast-util-from-parse5 "^8.0.0" + parse5 "^7.0.0" + vfile "^6.0.0" + vfile-message "^4.0.0" + +hast-util-from-parse5@^8.0.0: + version "8.0.3" + resolved "https://registry.yarnpkg.com/hast-util-from-parse5/-/hast-util-from-parse5-8.0.3.tgz#830a35022fff28c3fea3697a98c2f4cc6b835a2e" + integrity sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg== + dependencies: + "@types/hast" "^3.0.0" + "@types/unist" "^3.0.0" + devlop "^1.0.0" + hastscript "^9.0.0" + property-information "^7.0.0" + vfile "^6.0.0" + vfile-location "^5.0.0" + web-namespaces "^2.0.0" + +hast-util-has-property@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/hast-util-has-property/-/hast-util-has-property-3.0.0.tgz#4e595e3cddb8ce530ea92f6fc4111a818d8e7f93" + integrity sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA== + dependencies: + "@types/hast" "^3.0.0" + +hast-util-is-body-ok-link@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/hast-util-is-body-ok-link/-/hast-util-is-body-ok-link-3.0.1.tgz#ef63cb2f14f04ecf775139cd92bda5026380d8b4" + integrity sha512-0qpnzOBLztXHbHQenVB8uNuxTnm/QBFUOmdOSsEn7GnBtyY07+ENTWVFBAnXd/zEgd9/SUG3lRY7hSIBWRgGpQ== + dependencies: + "@types/hast" "^3.0.0" + +hast-util-is-element@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz#6e31a6532c217e5b533848c7e52c9d9369ca0932" + integrity sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g== + dependencies: + "@types/hast" "^3.0.0" + +hast-util-minify-whitespace@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hast-util-minify-whitespace/-/hast-util-minify-whitespace-1.0.1.tgz#7588fd1a53f48f1d30406b81959dffc3650daf55" + integrity sha512-L96fPOVpnclQE0xzdWb/D12VT5FabA7SnZOUMtL1DbXmYiHJMXZvFkIZfiMmTCNJHUeO2K9UYNXoVyfz+QHuOw== + dependencies: + "@types/hast" "^3.0.0" + hast-util-embedded "^3.0.0" + hast-util-is-element "^3.0.0" + hast-util-whitespace "^3.0.0" + unist-util-is "^6.0.0" + +hast-util-parse-selector@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz#352879fa86e25616036037dd8931fb5f34cb4a27" + integrity sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A== + dependencies: + "@types/hast" "^3.0.0" + +hast-util-phrasing@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/hast-util-phrasing/-/hast-util-phrasing-3.0.1.tgz#fa284c0cd4a82a0dd6020de8300a7b1ebffa1690" + integrity sha512-6h60VfI3uBQUxHqTyMymMZnEbNl1XmEGtOxxKYL7stY2o601COo62AWAYBQR9lZbYXYSBoxag8UpPRXK+9fqSQ== + dependencies: + "@types/hast" "^3.0.0" + hast-util-embedded "^3.0.0" + hast-util-has-property "^3.0.0" + hast-util-is-body-ok-link "^3.0.0" + hast-util-is-element "^3.0.0" + +hast-util-raw@^9.0.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/hast-util-raw/-/hast-util-raw-9.1.0.tgz#79b66b26f6f68fb50dfb4716b2cdca90d92adf2e" + integrity sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw== + dependencies: + "@types/hast" "^3.0.0" + "@types/unist" "^3.0.0" + "@ungap/structured-clone" "^1.0.0" + hast-util-from-parse5 "^8.0.0" + hast-util-to-parse5 "^8.0.0" + html-void-elements "^3.0.0" + mdast-util-to-hast "^13.0.0" + parse5 "^7.0.0" + unist-util-position "^5.0.0" + unist-util-visit "^5.0.0" + vfile "^6.0.0" + web-namespaces "^2.0.0" + zwitch "^2.0.0" + +hast-util-sanitize@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/hast-util-sanitize/-/hast-util-sanitize-5.0.2.tgz#edb260d94e5bba2030eb9375790a8753e5bf391f" + integrity sha512-3yTWghByc50aGS7JlGhk61SPenfE/p1oaFeNwkOOyrscaOkMGrcW9+Cy/QAIOBpZxP1yqDIzFMR0+Np0i0+usg== + dependencies: + "@types/hast" "^3.0.0" + "@ungap/structured-clone" "^1.0.0" + unist-util-position "^5.0.0" + +hast-util-to-html@^9.0.0: + version "9.0.5" + resolved "https://registry.yarnpkg.com/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz#ccc673a55bb8e85775b08ac28380f72d47167005" + integrity sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw== + dependencies: + "@types/hast" "^3.0.0" + "@types/unist" "^3.0.0" + ccount "^2.0.0" + comma-separated-tokens "^2.0.0" + hast-util-whitespace "^3.0.0" + html-void-elements "^3.0.0" + mdast-util-to-hast "^13.0.0" + property-information "^7.0.0" + space-separated-tokens "^2.0.0" + stringify-entities "^4.0.0" + zwitch "^2.0.4" + +hast-util-to-parse5@^8.0.0: + version "8.0.1" + resolved "https://registry.yarnpkg.com/hast-util-to-parse5/-/hast-util-to-parse5-8.0.1.tgz#95aa391cc0514b4951418d01c883d1038af42f5d" + integrity sha512-MlWT6Pjt4CG9lFCjiz4BH7l9wmrMkfkJYCxFwKQic8+RTZgWPuWxwAfjJElsXkex7DJjfSJsQIt931ilUgmwdA== + dependencies: + "@types/hast" "^3.0.0" + comma-separated-tokens "^2.0.0" + devlop "^1.0.0" + property-information "^7.0.0" + space-separated-tokens "^2.0.0" + web-namespaces "^2.0.0" + zwitch "^2.0.0" + +hast-util-to-text@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/hast-util-to-text/-/hast-util-to-text-4.0.2.tgz#57b676931e71bf9cb852453678495b3080bfae3e" + integrity sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A== + dependencies: + "@types/hast" "^3.0.0" + "@types/unist" "^3.0.0" + hast-util-is-element "^3.0.0" + unist-util-find-after "^5.0.0" + +hast-util-whitespace@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz#7778ed9d3c92dd9e8c5c8f648a49c21fc51cb621" + integrity sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw== + dependencies: + "@types/hast" "^3.0.0" + +hastscript@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-9.0.1.tgz#dbc84bef6051d40084342c229c451cd9dc567dff" + integrity sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w== + dependencies: + "@types/hast" "^3.0.0" + comma-separated-tokens "^2.0.0" + hast-util-parse-selector "^4.0.0" + property-information "^7.0.0" + space-separated-tokens "^2.0.0" + +highlight.js@^11.9.0, highlight.js@~11.11.0: + version "11.11.1" + resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-11.11.1.tgz#fca06fa0e5aeecf6c4d437239135fabc15213585" + integrity sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w== + +highlightjs-curl@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/highlightjs-curl/-/highlightjs-curl-1.3.0.tgz#e61e303b4102aaa1b3a3302221257d5c2dd023a2" + integrity sha512-50UEfZq1KR0Lfk2Tr6xb/MUIZH3h10oNC0OTy9g7WELcs5Fgy/mKN1vEhuKTkKbdo8vr5F9GXstu2eLhApfQ3A== + hookable@^5.5.3: version "5.5.3" resolved "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz" @@ -3275,6 +5227,16 @@ hosted-git-info@^7.0.0: dependencies: lru-cache "^10.0.1" +html-void-elements@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-3.0.0.tgz#fc9dbd84af9e747249034d4d62602def6517f1d7" + integrity sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg== + +html-whitespace-sensitive-tag-names@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/html-whitespace-sensitive-tag-names/-/html-whitespace-sensitive-tag-names-3.0.1.tgz#c35edd28205f3bf8c1fd03274608d60b923de5b2" + integrity sha512-q+310vW8zmymYHALr1da4HyXUQ0zgiIwIicEfotYPWGN0OJVEN/58IJ3A4GBYcEq3LGAZqKb+ugvP0GNB9CEAA== + http-errors@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" @@ -3309,6 +5271,13 @@ human-signals@^5.0.0: resolved "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz" integrity sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ== +identifier-regex@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/identifier-regex/-/identifier-regex-1.0.1.tgz#65fc1c16eebad54adcbec7eb9c99e8a926adfd29" + integrity sha512-ZrYyM0sozNPZlvBvE7Oq9Bn44n0qKGrYu5sQ0JzMUnjIhpgWYE2JB6aBoFwEYdPjqj7jPyxXTMJiHDOxDfd8yw== + dependencies: + reserved-identifiers "^1.0.0" + ieee754@^1.2.1: version "1.2.1" resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" @@ -3345,7 +5314,7 @@ index-to-position@^1.1.0: resolved "https://registry.npmjs.org/index-to-position/-/index-to-position-1.1.0.tgz" integrity sha512-XPdx9Dq4t9Qk1mTMbWONJqU7boCoumEH7fRET37HX5+khDUl3J2W6PdALxhILYlIYx2amlwYcRPp28p0tSiojg== -inherits@^2.0.3, inherits@~2.0.3, inherits@2.0.4: +inherits@2.0.4, inherits@^2.0.3, inherits@~2.0.3: version "2.0.4" resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -3375,6 +5344,11 @@ iron-webcrypto@^1.2.1: resolved "https://registry.npmjs.org/iron-webcrypto/-/iron-webcrypto-1.2.1.tgz" integrity sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg== +is-absolute-url@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-4.0.1.tgz#16e4d487d4fded05cfe0685e53ec86804a5e94dc" + integrity sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A== + is-arrayish@^0.3.1: version "0.3.2" resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz" @@ -3421,6 +5395,14 @@ is-glob@^4.0.1, is-glob@^4.0.3: dependencies: is-extglob "^2.1.1" +is-identifier@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-identifier/-/is-identifier-1.0.1.tgz#76d66e7813e37cc85cc8263f04eaa558d1a5d2dc" + integrity sha512-HQ5v4rEJ7REUV54bCd2l5FaD299SGDEn2UPoVXaTHAyGviLq2menVUD2udi3trQ32uvB6LdAh/0ck2EuizrtpA== + dependencies: + identifier-regex "^1.0.0" + super-regex "^1.0.0" + is-inside-container@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz" @@ -3446,6 +5428,11 @@ is-number@^7.0.0: resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== +is-obj@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-3.0.0.tgz#b0889f1f9f8cb87e87df53a8d1230a2250f8b9be" + integrity sha512-IlsXEHOjtKhpN8r/tRFj2nDyTmHvcfNeu/nrRIcXE17ROeatXchkojffa1SpdqW4cr/Fj6QkEf/Gn4zf6KKvEQ== + is-path-inside@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-4.0.0.tgz" @@ -3456,6 +5443,11 @@ is-plain-obj@^2.1.0: resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz" integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== +is-plain-obj@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-4.1.0.tgz#d65025edec3657ce032fd7db63c97883eaed71f0" + integrity sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg== + is-reference@1.2.1: version "1.2.1" resolved "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz" @@ -3463,6 +5455,11 @@ is-reference@1.2.1: dependencies: "@types/estree" "*" +is-regexp@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-3.1.0.tgz#0235eab9cda5b83f96ac4a263d8c32c9d5ad7422" + integrity sha512-rbku49cWloU5bSMI+zaRaXdQHXnthP6DZ/vLnfdSKyL4zUzuWnomtOEiZZOd+ioQ+avFo/qau3KPTc7Fjy1uPA== + is-ssh@^1.4.0: version "1.4.1" resolved "https://registry.npmjs.org/is-ssh/-/is-ssh-1.4.1.tgz" @@ -3550,11 +5547,21 @@ jiti@^2.1.2, jiti@^2.4.2: resolved "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz" integrity sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A== +jiti@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/jiti/-/jiti-2.6.1.tgz#178ef2fc9a1a594248c20627cd820187a4d78d92" + integrity sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ== + jose@^5.9.6: version "5.10.0" resolved "https://registry.npmjs.org/jose/-/jose-5.10.0.tgz" integrity sha512-s+3Al/p9g32Iq+oqXxkW//7jk2Vig6FF1CFqzVXoTUXt2qz89YWbL+OwS17NFYEvxC35n0FKeGO2LGYSxeM2Gg== +js-base64@^3.7.8: + version "3.7.8" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-3.7.8.tgz#af44496bc09fa178ed9c4adf67eb2b46f5c6d2a4" + integrity sha512-hNngCeKxIUQiEUN3GPJOkz4wF/YvdUdbNL9hsBcMQTkKzboD7T/q3OYOuuPZLUE6dBxSGpwhk5mwuDud7JVAow== + js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" @@ -3570,16 +5577,36 @@ jsesc@^3.0.2: resolved "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz" integrity sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA== +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +json-schema@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" + integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== + json5@^2.2.3: version "2.2.3" resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== +jsonpointer@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-5.0.1.tgz#2110e0af0900fd37467b5907ecd13a7884a1b559" + integrity sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ== + junk@^4.0.0: version "4.0.1" resolved "https://registry.npmjs.org/junk/-/junk-4.0.1.tgz" integrity sha512-Qush0uP+G8ZScpGMZvHUiRfI0YBWuB3gVBYlI0v0vvOJt5FLicco+IkP0a50LqTTQhmts/m6tP5SWE+USyIvcQ== +just-clone@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/just-clone/-/just-clone-6.2.0.tgz#a4614d9bf7e4bbdcae7f9ba904aea5ea9cae8ae5" + integrity sha512-1IynUYEc/HAwxhi3WDpIpxJbZpMCvvrrmZVqvj9EhpvbH8lls7HhdhiByjL7DkAaWlLIzpC0Xc/VPvy/UxLNjA== + jwt-decode@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/jwt-decode/-/jwt-decode-4.0.0.tgz" @@ -3644,6 +5671,56 @@ lazystream@^1.0.0: dependencies: readable-stream "^2.0.5" +leven@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-4.1.0.tgz#1e37150e1711d18bb14e380a5c779995235a710e" + integrity sha512-KZ9W9nWDT7rF7Dazg8xyLHGLrmpgq2nVNFUckhqdW3szVP6YhCpp/RAnpmVExA9JvrMynjwSLVrEj3AepHR6ew== + +lightningcss-darwin-arm64@1.30.1: + version "1.30.1" + resolved "https://registry.yarnpkg.com/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.1.tgz#3d47ce5e221b9567c703950edf2529ca4a3700ae" + integrity sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ== + +lightningcss-darwin-x64@1.30.1: + version "1.30.1" + resolved "https://registry.yarnpkg.com/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.1.tgz#e81105d3fd6330860c15fe860f64d39cff5fbd22" + integrity sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA== + +lightningcss-freebsd-x64@1.30.1: + version "1.30.1" + resolved "https://registry.yarnpkg.com/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.1.tgz#a0e732031083ff9d625c5db021d09eb085af8be4" + integrity sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig== + +lightningcss-linux-arm-gnueabihf@1.30.1: + version "1.30.1" + resolved "https://registry.yarnpkg.com/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.1.tgz#1f5ecca6095528ddb649f9304ba2560c72474908" + integrity sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q== + +lightningcss-linux-arm64-gnu@1.30.1: + version "1.30.1" + resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.1.tgz#eee7799726103bffff1e88993df726f6911ec009" + integrity sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw== + +lightningcss-linux-arm64-musl@1.30.1: + version "1.30.1" + resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.1.tgz#f2e4b53f42892feeef8f620cbb889f7c064a7dfe" + integrity sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ== + +lightningcss-linux-x64-gnu@1.30.1: + version "1.30.1" + resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.1.tgz#2fc7096224bc000ebb97eea94aea248c5b0eb157" + integrity sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw== + +lightningcss-linux-x64-musl@1.30.1: + version "1.30.1" + resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.1.tgz#66dca2b159fd819ea832c44895d07e5b31d75f26" + integrity sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ== + +lightningcss-win32-arm64-msvc@1.30.1: + version "1.30.1" + resolved "https://registry.yarnpkg.com/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.1.tgz#7d8110a19d7c2d22bfdf2f2bb8be68e7d1b69039" + integrity sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA== + lightningcss-win32-x64-msvc@1.30.1: version "1.30.1" resolved "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.1.tgz" @@ -3766,6 +5843,20 @@ logform@^2.7.0: safe-stable-stringify "^2.3.1" triple-beam "^1.3.0" +longest-streak@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-3.1.0.tgz#62fa67cd958742a1574af9f39866364102d90cd4" + integrity sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g== + +lowlight@^3.1.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/lowlight/-/lowlight-3.3.0.tgz#007b8a5bfcfd27cc65b96246d2de3e9dd4e23c6c" + integrity sha512-0JNhgFoPvP6U6lE/UdVsSq99tn6DhjjpAj5MxG49ewd2mOBVtwWYIT8ClyABhq198aXXODMU6Ox8DrGy/CpTZQ== + dependencies: + "@types/hast" "^3.0.0" + devlop "^1.0.0" + highlight.js "~11.11.0" + lru-cache@^10.0.1, lru-cache@^10.2.0, lru-cache@^10.4.3: version "10.4.3" resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz" @@ -3815,6 +5906,13 @@ magic-string@^0.30.12, magic-string@^0.30.17, magic-string@^0.30.3, magic-string dependencies: "@jridgewell/sourcemap-codec" "^1.5.0" +magic-string@^0.30.21: + version "0.30.21" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.21.tgz#56763ec09a0fa8091df27879fd94d19078c00d91" + integrity sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ== + dependencies: + "@jridgewell/sourcemap-codec" "^1.5.5" + magicast@^0.3.5: version "0.3.5" resolved "https://registry.npmjs.org/magicast/-/magicast-0.3.5.tgz" @@ -3824,11 +5922,163 @@ magicast@^0.3.5: "@babel/types" "^7.25.4" source-map-js "^1.2.0" +make-asynchronous@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/make-asynchronous/-/make-asynchronous-1.0.1.tgz#5ff174bae4e4371746debff112103545037373ee" + integrity sha512-T9BPOmEOhp6SmV25SwLVcHK4E6JyG/coH3C6F1NjNXSziv/fd4GmsqMk8YR6qpPOswfaOCApSNkZv6fxoaYFcQ== + dependencies: + p-event "^6.0.0" + type-fest "^4.6.0" + web-worker "1.2.0" + +markdown-table@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-3.0.4.tgz#fe44d6d410ff9d6f2ea1797a3f60aa4d2b631c2a" + integrity sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw== + math-intrinsics@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz" integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== +mdast-util-find-and-replace@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz#70a3174c894e14df722abf43bc250cbae44b11df" + integrity sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg== + dependencies: + "@types/mdast" "^4.0.0" + escape-string-regexp "^5.0.0" + unist-util-is "^6.0.0" + unist-util-visit-parents "^6.0.0" + +mdast-util-from-markdown@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz#4850390ca7cf17413a9b9a0fbefcd1bc0eb4160a" + integrity sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA== + dependencies: + "@types/mdast" "^4.0.0" + "@types/unist" "^3.0.0" + decode-named-character-reference "^1.0.0" + devlop "^1.0.0" + mdast-util-to-string "^4.0.0" + micromark "^4.0.0" + micromark-util-decode-numeric-character-reference "^2.0.0" + micromark-util-decode-string "^2.0.0" + micromark-util-normalize-identifier "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + unist-util-stringify-position "^4.0.0" + +mdast-util-gfm-autolink-literal@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz#abd557630337bd30a6d5a4bd8252e1c2dc0875d5" + integrity sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ== + dependencies: + "@types/mdast" "^4.0.0" + ccount "^2.0.0" + devlop "^1.0.0" + mdast-util-find-and-replace "^3.0.0" + micromark-util-character "^2.0.0" + +mdast-util-gfm-footnote@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.1.0.tgz#7778e9d9ca3df7238cc2bd3fa2b1bf6a65b19403" + integrity sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ== + dependencies: + "@types/mdast" "^4.0.0" + devlop "^1.1.0" + mdast-util-from-markdown "^2.0.0" + mdast-util-to-markdown "^2.0.0" + micromark-util-normalize-identifier "^2.0.0" + +mdast-util-gfm-strikethrough@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz#d44ef9e8ed283ac8c1165ab0d0dfd058c2764c16" + integrity sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg== + dependencies: + "@types/mdast" "^4.0.0" + mdast-util-from-markdown "^2.0.0" + mdast-util-to-markdown "^2.0.0" + +mdast-util-gfm-table@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz#7a435fb6223a72b0862b33afbd712b6dae878d38" + integrity sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg== + dependencies: + "@types/mdast" "^4.0.0" + devlop "^1.0.0" + markdown-table "^3.0.0" + mdast-util-from-markdown "^2.0.0" + mdast-util-to-markdown "^2.0.0" + +mdast-util-gfm-task-list-item@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz#e68095d2f8a4303ef24094ab642e1047b991a936" + integrity sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ== + dependencies: + "@types/mdast" "^4.0.0" + devlop "^1.0.0" + mdast-util-from-markdown "^2.0.0" + mdast-util-to-markdown "^2.0.0" + +mdast-util-gfm@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz#2cdf63b92c2a331406b0fb0db4c077c1b0331751" + integrity sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ== + dependencies: + mdast-util-from-markdown "^2.0.0" + mdast-util-gfm-autolink-literal "^2.0.0" + mdast-util-gfm-footnote "^2.0.0" + mdast-util-gfm-strikethrough "^2.0.0" + mdast-util-gfm-table "^2.0.0" + mdast-util-gfm-task-list-item "^2.0.0" + mdast-util-to-markdown "^2.0.0" + +mdast-util-phrasing@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz#7cc0a8dec30eaf04b7b1a9661a92adb3382aa6e3" + integrity sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w== + dependencies: + "@types/mdast" "^4.0.0" + unist-util-is "^6.0.0" + +mdast-util-to-hast@^13.0.0: + version "13.2.1" + resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz#d7ff84ca499a57e2c060ae67548ad950e689a053" + integrity sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA== + dependencies: + "@types/hast" "^3.0.0" + "@types/mdast" "^4.0.0" + "@ungap/structured-clone" "^1.0.0" + devlop "^1.0.0" + micromark-util-sanitize-uri "^2.0.0" + trim-lines "^3.0.0" + unist-util-position "^5.0.0" + unist-util-visit "^5.0.0" + vfile "^6.0.0" + +mdast-util-to-markdown@^2.0.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz#f910ffe60897f04bb4b7e7ee434486f76288361b" + integrity sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA== + dependencies: + "@types/mdast" "^4.0.0" + "@types/unist" "^3.0.0" + longest-streak "^3.0.0" + mdast-util-phrasing "^4.0.0" + mdast-util-to-string "^4.0.0" + micromark-util-classify-character "^2.0.0" + micromark-util-decode-string "^2.0.0" + unist-util-visit "^5.0.0" + zwitch "^2.0.0" + +mdast-util-to-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz#7a5121475556a04e7eddeb67b264aae79d312814" + integrity sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg== + dependencies: + "@types/mdast" "^4.0.0" + mdn-data@2.0.28: version "2.0.28" resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz" @@ -3866,6 +6116,284 @@ micro-api-client@^3.3.0: resolved "https://registry.npmjs.org/micro-api-client/-/micro-api-client-3.3.0.tgz" integrity sha512-y0y6CUB9RLVsy3kfgayU28746QrNMpSm9O/AYGNsBgOkJr/X/Jk0VLGoO8Ude7Bpa8adywzF+MzXNZRFRsNPhg== +microdiff@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/microdiff/-/microdiff-1.5.0.tgz#d16219b223396f11ffcf441da26a43d3e6bd06f8" + integrity sha512-Drq+/THMvDdzRYrK0oxJmOKiC24ayUV8ahrt8l3oRK51PWt6gdtrIGrlIH3pT/lFh1z93FbAcidtsHcWbnRz8Q== + +micromark-core-commonmark@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz#c691630e485021a68cf28dbc2b2ca27ebf678cd4" + integrity sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg== + dependencies: + decode-named-character-reference "^1.0.0" + devlop "^1.0.0" + micromark-factory-destination "^2.0.0" + micromark-factory-label "^2.0.0" + micromark-factory-space "^2.0.0" + micromark-factory-title "^2.0.0" + micromark-factory-whitespace "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-chunked "^2.0.0" + micromark-util-classify-character "^2.0.0" + micromark-util-html-tag-name "^2.0.0" + micromark-util-normalize-identifier "^2.0.0" + micromark-util-resolve-all "^2.0.0" + micromark-util-subtokenize "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-extension-gfm-autolink-literal@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz#6286aee9686c4462c1e3552a9d505feddceeb935" + integrity sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw== + dependencies: + micromark-util-character "^2.0.0" + micromark-util-sanitize-uri "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-extension-gfm-footnote@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz#4dab56d4e398b9853f6fe4efac4fc9361f3e0750" + integrity sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw== + dependencies: + devlop "^1.0.0" + micromark-core-commonmark "^2.0.0" + micromark-factory-space "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-normalize-identifier "^2.0.0" + micromark-util-sanitize-uri "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-extension-gfm-strikethrough@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz#86106df8b3a692b5f6a92280d3879be6be46d923" + integrity sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw== + dependencies: + devlop "^1.0.0" + micromark-util-chunked "^2.0.0" + micromark-util-classify-character "^2.0.0" + micromark-util-resolve-all "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-extension-gfm-table@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz#fac70bcbf51fe65f5f44033118d39be8a9b5940b" + integrity sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg== + dependencies: + devlop "^1.0.0" + micromark-factory-space "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-extension-gfm-tagfilter@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz#f26d8a7807b5985fba13cf61465b58ca5ff7dc57" + integrity sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg== + dependencies: + micromark-util-types "^2.0.0" + +micromark-extension-gfm-task-list-item@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz#bcc34d805639829990ec175c3eea12bb5b781f2c" + integrity sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw== + dependencies: + devlop "^1.0.0" + micromark-factory-space "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-extension-gfm@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz#3e13376ab95dd7a5cfd0e29560dfe999657b3c5b" + integrity sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w== + dependencies: + micromark-extension-gfm-autolink-literal "^2.0.0" + micromark-extension-gfm-footnote "^2.0.0" + micromark-extension-gfm-strikethrough "^2.0.0" + micromark-extension-gfm-table "^2.0.0" + micromark-extension-gfm-tagfilter "^2.0.0" + micromark-extension-gfm-task-list-item "^2.0.0" + micromark-util-combine-extensions "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-factory-destination@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz#8fef8e0f7081f0474fbdd92deb50c990a0264639" + integrity sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA== + dependencies: + micromark-util-character "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-factory-label@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz#5267efa97f1e5254efc7f20b459a38cb21058ba1" + integrity sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg== + dependencies: + devlop "^1.0.0" + micromark-util-character "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-factory-space@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz#36d0212e962b2b3121f8525fc7a3c7c029f334fc" + integrity sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg== + dependencies: + micromark-util-character "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-factory-title@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz#237e4aa5d58a95863f01032d9ee9b090f1de6e94" + integrity sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw== + dependencies: + micromark-factory-space "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-factory-whitespace@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz#06b26b2983c4d27bfcc657b33e25134d4868b0b1" + integrity sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ== + dependencies: + micromark-factory-space "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-util-character@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/micromark-util-character/-/micromark-util-character-2.1.1.tgz#2f987831a40d4c510ac261e89852c4e9703ccda6" + integrity sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q== + dependencies: + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-util-chunked@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz#47fbcd93471a3fccab86cff03847fc3552db1051" + integrity sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA== + dependencies: + micromark-util-symbol "^2.0.0" + +micromark-util-classify-character@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz#d399faf9c45ca14c8b4be98b1ea481bced87b629" + integrity sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q== + dependencies: + micromark-util-character "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-util-combine-extensions@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz#2a0f490ab08bff5cc2fd5eec6dd0ca04f89b30a9" + integrity sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg== + dependencies: + micromark-util-chunked "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-util-decode-numeric-character-reference@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz#fcf15b660979388e6f118cdb6bf7d79d73d26fe5" + integrity sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw== + dependencies: + micromark-util-symbol "^2.0.0" + +micromark-util-decode-string@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz#6cb99582e5d271e84efca8e61a807994d7161eb2" + integrity sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ== + dependencies: + decode-named-character-reference "^1.0.0" + micromark-util-character "^2.0.0" + micromark-util-decode-numeric-character-reference "^2.0.0" + micromark-util-symbol "^2.0.0" + +micromark-util-encode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz#0d51d1c095551cfaac368326963cf55f15f540b8" + integrity sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw== + +micromark-util-html-tag-name@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz#e40403096481986b41c106627f98f72d4d10b825" + integrity sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA== + +micromark-util-normalize-identifier@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz#c30d77b2e832acf6526f8bf1aa47bc9c9438c16d" + integrity sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q== + dependencies: + micromark-util-symbol "^2.0.0" + +micromark-util-resolve-all@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz#e1a2d62cdd237230a2ae11839027b19381e31e8b" + integrity sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg== + dependencies: + micromark-util-types "^2.0.0" + +micromark-util-sanitize-uri@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz#ab89789b818a58752b73d6b55238621b7faa8fd7" + integrity sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ== + dependencies: + micromark-util-character "^2.0.0" + micromark-util-encode "^2.0.0" + micromark-util-symbol "^2.0.0" + +micromark-util-subtokenize@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz#d8ade5ba0f3197a1cf6a2999fbbfe6357a1a19ee" + integrity sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA== + dependencies: + devlop "^1.0.0" + micromark-util-chunked "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-util-symbol@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz#e5da494e8eb2b071a0d08fb34f6cefec6c0a19b8" + integrity sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q== + +micromark-util-types@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/micromark-util-types/-/micromark-util-types-2.0.2.tgz#f00225f5f5a0ebc3254f96c36b6605c4b393908e" + integrity sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA== + +micromark@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/micromark/-/micromark-4.0.2.tgz#91395a3e1884a198e62116e33c9c568e39936fdb" + integrity sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA== + dependencies: + "@types/debug" "^4.0.0" + debug "^4.0.0" + decode-named-character-reference "^1.0.0" + devlop "^1.0.0" + micromark-core-commonmark "^2.0.0" + micromark-factory-space "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-chunked "^2.0.0" + micromark-util-combine-extensions "^2.0.0" + micromark-util-decode-numeric-character-reference "^2.0.0" + micromark-util-encode "^2.0.0" + micromark-util-normalize-identifier "^2.0.0" + micromark-util-resolve-all "^2.0.0" + micromark-util-sanitize-uri "^2.0.0" + micromark-util-subtokenize "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + micromatch@^4.0.5, micromatch@^4.0.8: version "4.0.8" resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz" @@ -3952,6 +6480,16 @@ mlly@^1.3.0, mlly@^1.6.1, mlly@^1.7.1, mlly@^1.7.2, mlly@^1.7.4: pkg-types "^1.3.0" ufo "^1.5.4" +mlly@^1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/mlly/-/mlly-1.8.0.tgz#e074612b938af8eba1eaf43299cbc89cb72d824e" + integrity sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g== + dependencies: + acorn "^8.15.0" + pathe "^2.0.3" + pkg-types "^1.3.1" + ufo "^1.6.1" + mocked-exports@^0.1.1: version "0.1.1" resolved "https://registry.npmjs.org/mocked-exports/-/mocked-exports-0.1.1.tgz" @@ -3980,6 +6518,11 @@ nanoid@^3.3.11: resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz" integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w== +nanoid@^5.0.7, nanoid@^5.1.6: + version "5.1.6" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-5.1.6.tgz#30363f664797e7d40429f6c16946d6bd7a3f26c9" + integrity sha512-c7+7RQ+dMB5dPwwCp4ee1/iV/q2P6aK1mTZcfr1BTuVlyW9hJYiMPybJCcnBlQtuSmTIWNeazm/zqNoZSSElBg== + nanoid@^5.1.0: version "5.1.5" resolved "https://registry.npmjs.org/nanoid/-/nanoid-5.1.5.tgz" @@ -3996,7 +6539,9 @@ nanotar@^0.2.0: integrity sha512-9ca1h0Xjvo9bEkE4UOxgAzLV0jHKe6LMaxo37ND2DAhhAtd0j8pR1Wxz+/goMrZO8AEZTWCmyaOsFI/W5AdpCQ== napi-wasm@^1.1.0: - version "1.1.0" + version "1.1.3" + resolved "https://registry.yarnpkg.com/napi-wasm/-/napi-wasm-1.1.3.tgz#7bb95c88e6561f84880bb67195437b1cfbe99224" + integrity sha512-h/4nMGsHjZDCYmQVNODIrYACVJ+I9KItbG+0si6W/jSjdA9JbWDoU4LLeMXVcEQGHjttI2tuXqDrbGF7qkUHHg== netlify@^13.3.5: version "13.3.5" @@ -4010,6 +6555,11 @@ netlify@^13.3.5: p-wait-for "^5.0.0" qs "^6.9.6" +neverpanic@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/neverpanic/-/neverpanic-0.0.5.tgz#5b4e4191100541aa37c41d1d865fab1bd08de7a8" + integrity sha512-daO+ijOQG8g2BXaAwpETa0GUvlIAfqC+1/CUdLp2Ga8qwDaUyHIieX/SM0yZoPBf7k92deq4DO7tZOWWeL063Q== + nitropack@^2.11.12: version "2.11.12" resolved "https://registry.npmjs.org/nitropack/-/nitropack-2.11.12.tgz" @@ -4450,6 +7000,11 @@ package-manager-detector@^1.1.0, package-manager-detector@^1.3.0: resolved "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-1.3.0.tgz" integrity sha512-ZsEbbZORsyHuO00lY1kV3/t72yp6Ysay6Pd17ZAlNGuGwmWDLCJxFpRs0IzfXfj1o4icJOkUEioexFHzyPurSQ== +packrup@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/packrup/-/packrup-0.1.2.tgz#7e6c50e5b79a1e68cd717e79fd06d40abb8f1583" + integrity sha512-ZcKU7zrr5GlonoS9cxxrb5HVswGnyj6jQvwFBa6p5VFw7G71VAHcUKL5wyZSU/ECtPM/9gacWxy2KFQKt1gMNA== + pako@^0.2.5: version "0.2.9" resolved "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz" @@ -4469,6 +7024,11 @@ parse-json@^8.0.0: index-to-position "^1.1.0" type-fest "^4.39.1" +parse-ms@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-4.0.0.tgz#c0c058edd47c2a590151a718990533fd62803df4" + integrity sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw== + parse-path@*, parse-path@^7.0.0: version "7.1.0" resolved "https://registry.npmjs.org/parse-path/-/parse-path-7.1.0.tgz" @@ -4484,6 +7044,13 @@ parse-url@^9.2.0: "@types/parse-path" "^7.0.0" parse-path "^7.0.0" +parse5@^7.0.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.3.0.tgz#d7e224fa72399c7a175099f45fc2ad024b05ec05" + integrity sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw== + dependencies: + entities "^6.0.0" + parseurl@^1.3.3: version "1.3.3" resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" @@ -4527,12 +7094,7 @@ path-type@^6.0.0: resolved "https://registry.npmjs.org/path-type/-/path-type-6.0.0.tgz" integrity sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ== -pathe@^1.1.1: - version "1.1.2" - resolved "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz" - integrity sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ== - -pathe@^1.1.2: +pathe@^1.1.1, pathe@^1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz" integrity sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ== @@ -4552,6 +7114,11 @@ perfect-debounce@^1.0.0: resolved "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz" integrity sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA== +perfect-debounce@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/perfect-debounce/-/perfect-debounce-2.1.0.tgz#e7078e38f231cb191855c3136a4423aef725d261" + integrity sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g== + pg-cloudflare@^1.2.6: version "1.2.6" resolved "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.2.6.tgz" @@ -4577,7 +7144,7 @@ pg-protocol@*, pg-protocol@^1.10.2: resolved "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.10.2.tgz" integrity sha512-Ci7jy8PbaWxfsck2dwZdERcDG2A0MG8JoQILs+uZNjABFuBuItAZCWUNz8sXRDMoui24rJw7WlXqgpMdBSN/vQ== -pg-types@^2.2.0, pg-types@2.2.0: +pg-types@2.2.0, pg-types@^2.2.0: version "2.2.0" resolved "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz" integrity sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA== @@ -4613,12 +7180,7 @@ picocolors@^1.0.0, picocolors@^1.1.1: resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz" integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== -picomatch@^2.0.4: - version "2.3.1" - resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -picomatch@^2.3.1: +picomatch@^2.0.4, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== @@ -4628,25 +7190,12 @@ picomatch@^4.0.2: resolved "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz" integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg== -pkg-types@^1.0.3: - version "1.3.1" - resolved "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz" - integrity sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ== - dependencies: - confbox "^0.1.8" - mlly "^1.7.4" - pathe "^2.0.1" - -pkg-types@^1.2.1: - version "1.3.1" - resolved "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz" - integrity sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ== - dependencies: - confbox "^0.1.8" - mlly "^1.7.4" - pathe "^2.0.1" +picomatch@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.3.tgz#796c76136d1eead715db1e7bad785dedd695a042" + integrity sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q== -pkg-types@^1.3.0: +pkg-types@^1.0.3, pkg-types@^1.2.1, pkg-types@^1.3.0, pkg-types@^1.3.1: version "1.3.1" resolved "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz" integrity sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ== @@ -4664,6 +7213,15 @@ pkg-types@^2.0.0, pkg-types@^2.0.1, pkg-types@^2.1.0: exsolve "^1.0.1" pathe "^2.0.3" +pkg-types@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pkg-types/-/pkg-types-2.3.0.tgz#037f2c19bd5402966ff6810e32706558cb5b5726" + integrity sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig== + dependencies: + confbox "^0.2.2" + exsolve "^1.0.7" + pathe "^2.0.3" + pngjs@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz" @@ -4899,6 +7457,15 @@ postcss@^8.5.1, postcss@^8.5.3, postcss@^8.5.4: picocolors "^1.1.1" source-map-js "^1.2.1" +postcss@^8.5.6: + version "8.5.6" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.6.tgz#2825006615a619b4f62a9e7426cc120b349a8f3c" + integrity sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg== + dependencies: + nanoid "^3.3.11" + picocolors "^1.1.1" + source-map-js "^1.2.1" + postgres-array@~2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz" @@ -4947,6 +7514,18 @@ pretty-bytes@^6.1.1: resolved "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-6.1.1.tgz" integrity sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ== +pretty-bytes@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-7.1.0.tgz#d788c9906241dbdcd4defab51b6d7470243db9bd" + integrity sha512-nODzvTiYVRGRqAOvE84Vk5JDPyyxsVk0/fbA/bq7RqlnhksGpset09XTxbpvLTIjoaF7K8Z8DG8yHtKGTPSYRw== + +pretty-ms@^9.3.0: + version "9.3.0" + resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-9.3.0.tgz#dd2524fcb3c326b4931b2272dfd1e1a8ed9a9f5a" + integrity sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ== + dependencies: + parse-ms "^4.0.0" + process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" @@ -4965,6 +7544,11 @@ prompts@^2.4.2: kleur "^3.0.3" sisteransi "^1.0.5" +property-information@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/property-information/-/property-information-7.1.0.tgz#b622e8646e02b580205415586b40804d3e8bfd5d" + integrity sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ== + protocols@^2.0.0, protocols@^2.0.1: version "2.0.2" resolved "https://registry.npmjs.org/protocols/-/protocols-2.0.2.tgz" @@ -5021,6 +7605,23 @@ quote-unquote@^1.0.0: resolved "https://registry.npmjs.org/quote-unquote/-/quote-unquote-1.0.0.tgz" integrity sha512-twwRO/ilhlG/FIgYeKGFqyHhoEhqgnKVkcmqMKi2r524gz3ZbDTcyFt38E9xjJI2vT+KbRNHVbnJ/e0I25Azwg== +radix-vue@^1.9.17: + version "1.9.17" + resolved "https://registry.yarnpkg.com/radix-vue/-/radix-vue-1.9.17.tgz#d6aec1727148e21cfb105c46a4c20bf100c8eee7" + integrity sha512-mVCu7I2vXt1L2IUYHTt0sZMz7s1K2ZtqKeTIxG3yC5mMFfLBG4FtE1FDeRMpDd+Hhg/ybi9+iXmAP1ISREndoQ== + dependencies: + "@floating-ui/dom" "^1.6.7" + "@floating-ui/vue" "^1.1.0" + "@internationalized/date" "^3.5.4" + "@internationalized/number" "^3.5.3" + "@tanstack/vue-virtual" "^3.8.1" + "@vueuse/core" "^10.11.0" + "@vueuse/shared" "^10.11.0" + aria-hidden "^1.2.4" + defu "^6.1.4" + fast-deep-equal "^3.1.3" + nanoid "^5.0.7" + radix3@^1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/radix3/-/radix3-1.1.2.tgz" @@ -5079,16 +7680,7 @@ readable-stream@^2.0.5: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^3.4.0: - version "3.6.2" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" - integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readable-stream@^3.6.2: +readable-stream@^3.4.0, readable-stream@^3.6.2: version "3.6.2" resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== @@ -5120,6 +7712,11 @@ readdirp@^4.0.1: resolved "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz" integrity sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg== +readdirp@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-5.0.0.tgz#fbf1f71a727891d685bb1786f9ba74084f6e2f91" + integrity sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ== + redis-errors@^1.0.0, redis-errors@^1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz" @@ -5137,6 +7734,61 @@ regexp-tree@^0.1.27: resolved "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.27.tgz" integrity sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA== +rehype-external-links@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/rehype-external-links/-/rehype-external-links-3.0.0.tgz#2b28b5cda1932f83f045b6f80a3e1b15f168c6f6" + integrity sha512-yp+e5N9V3C6bwBeAC4n796kc86M4gJCdlVhiMTxIrJG5UHDMh+PJANf9heqORJbt1nrCbDwIlAZKjANIaVBbvw== + dependencies: + "@types/hast" "^3.0.0" + "@ungap/structured-clone" "^1.0.0" + hast-util-is-element "^3.0.0" + is-absolute-url "^4.0.0" + space-separated-tokens "^2.0.0" + unist-util-visit "^5.0.0" + +rehype-format@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/rehype-format/-/rehype-format-5.0.1.tgz#e255e59bed0c062156aaf51c16fad5a521a1f5c8" + integrity sha512-zvmVru9uB0josBVpr946OR8ui7nJEdzZobwLOOqHb/OOD88W0Vk2SqLwoVOj0fM6IPCCO6TaV9CvQvJMWwukFQ== + dependencies: + "@types/hast" "^3.0.0" + hast-util-format "^1.0.0" + +rehype-parse@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/rehype-parse/-/rehype-parse-9.0.1.tgz#9993bda129acc64c417a9d3654a7be38b2a94c20" + integrity sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag== + dependencies: + "@types/hast" "^3.0.0" + hast-util-from-html "^2.0.0" + unified "^11.0.0" + +rehype-raw@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/rehype-raw/-/rehype-raw-7.0.0.tgz#59d7348fd5dbef3807bbaa1d443efd2dd85ecee4" + integrity sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww== + dependencies: + "@types/hast" "^3.0.0" + hast-util-raw "^9.0.0" + vfile "^6.0.0" + +rehype-sanitize@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/rehype-sanitize/-/rehype-sanitize-6.0.0.tgz#16e95f4a67a69cbf0f79e113c8e0df48203db73c" + integrity sha512-CsnhKNsyI8Tub6L4sm5ZFsme4puGfc6pYylvXo1AeqaGbjOYyzNv3qZPwvs0oMJ39eryyeOdmxwUIo94IpEhqg== + dependencies: + "@types/hast" "^3.0.0" + hast-util-sanitize "^5.0.0" + +rehype-stringify@^10.0.0: + version "10.0.1" + resolved "https://registry.yarnpkg.com/rehype-stringify/-/rehype-stringify-10.0.1.tgz#2ec1ebc56c6aba07905d3b4470bdf0f684f30b75" + integrity sha512-k9ecfXHmIPuFVI61B9DeLPN0qFHfawM6RsuX48hoqlaKSF61RskNjSm1lI8PhBEM0MRdLxVVm4WmTqJQccH9mA== + dependencies: + "@types/hast" "^3.0.0" + hast-util-to-html "^9.0.0" + unified "^11.0.0" + reka-ui@^2.3.1: version "2.3.1" resolved "https://registry.npmjs.org/reka-ui/-/reka-ui-2.3.1.tgz" @@ -5153,6 +7805,48 @@ reka-ui@^2.3.1: defu "^6.1.4" ohash "^2.0.11" +remark-gfm@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/remark-gfm/-/remark-gfm-4.0.1.tgz#33227b2a74397670d357bf05c098eaf8513f0d6b" + integrity sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg== + dependencies: + "@types/mdast" "^4.0.0" + mdast-util-gfm "^3.0.0" + micromark-extension-gfm "^3.0.0" + remark-parse "^11.0.0" + remark-stringify "^11.0.0" + unified "^11.0.0" + +remark-parse@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-11.0.0.tgz#aa60743fcb37ebf6b069204eb4da304e40db45a1" + integrity sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA== + dependencies: + "@types/mdast" "^4.0.0" + mdast-util-from-markdown "^2.0.0" + micromark-util-types "^2.0.0" + unified "^11.0.0" + +remark-rehype@^11.1.0: + version "11.1.2" + resolved "https://registry.yarnpkg.com/remark-rehype/-/remark-rehype-11.1.2.tgz#2addaadda80ca9bd9aa0da763e74d16327683b37" + integrity sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw== + dependencies: + "@types/hast" "^3.0.0" + "@types/mdast" "^4.0.0" + mdast-util-to-hast "^13.0.0" + unified "^11.0.0" + vfile "^6.0.0" + +remark-stringify@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-11.0.0.tgz#4c5b01dd711c269df1aaae11743eb7e2e7636fd3" + integrity sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw== + dependencies: + "@types/mdast" "^4.0.0" + mdast-util-to-markdown "^2.0.0" + unified "^11.0.0" + remove-trailing-separator@^1.0.1: version "1.1.0" resolved "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz" @@ -5163,6 +7857,11 @@ require-directory@^2.1.1: resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + require-main-filename@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz" @@ -5173,6 +7872,11 @@ require-package-name@^2.0.1: resolved "https://registry.npmjs.org/require-package-name/-/require-package-name-2.0.1.tgz" integrity sha512-uuoJ1hU/k6M0779t3VMVIYpb2VMJk05cehCaABFhXaibcbvfgR8wKiozLjVFSzJPmQMRqIcO0HMyTFqfV09V6Q== +reserved-identifiers@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/reserved-identifiers/-/reserved-identifiers-1.2.0.tgz#d2982cd698e317dd3dced1ee1c52412dbd64fc64" + integrity sha512-yE7KUfFvaBFzGPs5H3Ops1RevfUEsDc5Iz65rOwWg4lE8HJSYtle77uul3+573457oHvBKuHYDl/xqUkKpEEdw== + resolve-from@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" @@ -5282,7 +7986,7 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -safe-buffer@^5.1.0: +safe-buffer@^5.1.0, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -5292,11 +7996,6 @@ safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - safe-stable-stringify@^2.3.1: version "2.5.0" resolved "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz" @@ -5317,6 +8016,11 @@ semver@^7.3.5, semver@^7.3.8, semver@^7.5.3, semver@^7.6.0, semver@^7.6.3, semve resolved "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz" integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA== +semver@^7.7.3: + version "7.7.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.3.tgz#4b5f4143d007633a8dc671cd0a6ef9147b8bb946" + integrity sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q== + send@^1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/send/-/send-1.2.0.tgz" @@ -5496,7 +8200,7 @@ source-map-support@^0.5.21, source-map-support@~0.5.20: buffer-from "^1.0.0" source-map "^0.6.0" -source-map@^0.6.0: +source-map@^0.6.0, source-map@~0.6.1: version "0.6.1" resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== @@ -5506,10 +8210,10 @@ source-map@^0.7.4: resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz" integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== -source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== +space-separated-tokens@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz#1ecd9d2350a3844572c3f4a312bceb018348859f" + integrity sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q== spdx-correct@^3.0.0: version "3.2.0" @@ -5557,16 +8261,16 @@ standard-as-callback@^2.1.0: resolved "https://registry.npmjs.org/standard-as-callback/-/standard-as-callback-2.1.0.tgz" integrity sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A== -statuses@^2.0.1: - version "2.0.2" - resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz" - integrity sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw== - statuses@2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== +statuses@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz" + integrity sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw== + std-env@^3.7.0, std-env@^3.8.1, std-env@^3.9.0: version "3.9.0" resolved "https://registry.npmjs.org/std-env/-/std-env-3.9.0.tgz" @@ -5582,20 +8286,6 @@ streamx@^2.15.0: optionalDependencies: bare-events "^2.2.0" -string_decoder@^1.1.1, string_decoder@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - "string-width-cjs@npm:string-width@^4.2.0": version "4.2.3" resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" @@ -5623,6 +8313,38 @@ string-width@^5.0.1, string-width@^5.1.2: emoji-regex "^9.2.2" strip-ansi "^7.0.1" +string_decoder@^1.1.1, string_decoder@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +stringify-entities@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-4.0.4.tgz#b3b79ef5f277cc4ac73caeb0236c5ba939b3a4f3" + integrity sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg== + dependencies: + character-entities-html4 "^2.0.0" + character-entities-legacy "^3.0.0" + +stringify-object@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-6.0.0.tgz#1f6a11ada4b8619657c1780816f278a186b5bcac" + integrity sha512-6f94vIED6vmJJfh3lyVsVWxCYSfI5uM+16ntED/Ql37XIyV6kj0mRAAiTeMMc/QLYIaizC3bUprQ8pQnDDrKfA== + dependencies: + get-own-enumerable-keys "^1.0.0" + is-identifier "^1.0.1" + is-obj "^3.0.0" + is-regexp "^3.1.0" + "strip-ansi-cjs@npm:strip-ansi@^6.0.1": version "6.0.1" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" @@ -5637,14 +8359,7 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1: dependencies: ansi-regex "^5.0.1" -strip-ansi@^7.0.1: - version "7.1.0" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz" - integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== - dependencies: - ansi-regex "^6.0.1" - -strip-ansi@^7.1.0: +strip-ansi@^7.0.1, strip-ansi@^7.1.0: version "7.1.0" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz" integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== @@ -5668,6 +8383,11 @@ structured-clone-es@^1.0.0: resolved "https://registry.npmjs.org/structured-clone-es/-/structured-clone-es-1.0.0.tgz" integrity sha512-FL8EeKFFyNQv5cMnXI31CIMCsFarSVI2bF0U0ImeNE3g/F1IvJQyqzOXxPBRXiwQfyBTlbNe88jh1jFW0O/jiQ== +style-mod@^4.0.0, style-mod@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/style-mod/-/style-mod-4.1.3.tgz#6e9012255bb799bdac37e288f7671b5d71bf9f73" + integrity sha512-i/n8VsZydrugj3Iuzll8+x/00GH2vnYsk1eomD8QiRrSAeW6ItbCQDtfXCeJHd0iwiNagqjQkvpvREEPtW3IoQ== + stylehacks@^7.0.5: version "7.0.5" resolved "https://registry.npmjs.org/stylehacks/-/stylehacks-7.0.5.tgz" @@ -5676,6 +8396,15 @@ stylehacks@^7.0.5: browserslist "^4.24.5" postcss-selector-parser "^7.1.0" +super-regex@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/super-regex/-/super-regex-1.1.0.tgz#14b69b6374f7b3338db52ecd511dae97c27acf75" + integrity sha512-WHkws2ZflZe41zj6AolvvmaTrWds/VuyeYr9iPVv/oQeaIoVxMKaushfFWpOGDT+GuBrM/sVqF8KUCYQlSSTdQ== + dependencies: + function-timeout "^1.0.1" + make-asynchronous "^1.0.1" + time-span "^5.1.0" + superjson@^2.2.2: version "2.2.2" resolved "https://registry.npmjs.org/superjson/-/superjson-2.2.2.tgz" @@ -5706,17 +8435,37 @@ svgo@^3.3.2: csso "^5.0.5" picocolors "^1.0.0" +swrv@^1.0.4: + version "1.1.0" + resolved "https://registry.yarnpkg.com/swrv/-/swrv-1.1.0.tgz#e3825e1e825893391e34fd5b924ba8e6122c14ce" + integrity sha512-pjllRDr2s0iTwiE5Isvip51dZGR7GjLH1gCSVyE8bQnbAx6xackXsFdojau+1O5u98yHF5V73HQGOFxKUXO9gQ== + system-architecture@^0.1.0: version "0.1.0" resolved "https://registry.npmjs.org/system-architecture/-/system-architecture-0.1.0.tgz" integrity sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA== +tabbable@^6.4.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-6.4.0.tgz#36eb7a06d80b3924a22095daf45740dea3bf5581" + integrity sha512-05PUHKSNE8ou2dwIxTngl4EzcnsCDZGJ/iCLtDflR/SHB/ny14rXc+qU5P4mG9JkusiV7EivzY9Mhm55AzAvCg== + +tagged-tag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/tagged-tag/-/tagged-tag-1.0.0.tgz#a0b5917c2864cba54841495abfa3f6b13edcf4d6" + integrity sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng== + +tailwind-merge@3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/tailwind-merge/-/tailwind-merge-3.4.0.tgz#5a264e131a096879965f1175d11f8c36e6b64eca" + integrity sha512-uSaO4gnW+b3Y2aWoWfFpX62vn2sR3skfhbjsEnaBI81WD1wBLlHZe5sWf0AqjksNdYTbGBEd0UasQMT3SNV15g== + tailwind-merge@^3.3.0: version "3.3.0" resolved "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.3.0.tgz" integrity sha512-fyW/pEfcQSiigd5SNn0nApUOxx0zB/dm6UDU/rEwc2c3sX2smWUNbapHv+QRqLGVp9GWX3THIa7MUGPo+YkDzQ== -tailwindcss@^4.1.8, tailwindcss@4.1.8: +tailwindcss@4.1.8, tailwindcss@^4.1.8: version "4.1.8" resolved "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.8.tgz" integrity sha512-kjeW8gjdxasbmFKpVGrGd5T4i40mV5J2Rasw48QARfYeQ8YS9x02ON9SFWax3Qf616rt4Cp3nVNIj6Hd1mP3og== @@ -5769,6 +8518,13 @@ text-hex@1.0.x: resolved "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz" integrity sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg== +time-span@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/time-span/-/time-span-5.1.0.tgz#80c76cf5a0ca28e0842d3f10a4e99034ce94b90d" + integrity sha512-75voc/9G4rDIJleOo4jPvN4/YC4GRZrY8yy1uU4lwrB3XEQbWve8zXoO5No4eFrGcTAMYyoY67p8jRQdtA1HbA== + dependencies: + convert-hrtime "^5.0.0" + tiny-inflate@^1.0.0, tiny-inflate@^1.0.3: version "1.0.3" resolved "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz" @@ -5789,7 +8545,7 @@ tinyexec@^1.0.1: resolved "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.1.tgz" integrity sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw== -tinyglobby@^0.2.13, tinyglobby@^0.2.14, tinyglobby@0.2.14: +tinyglobby@0.2.14, tinyglobby@^0.2.13, tinyglobby@^0.2.14: version "0.2.14" resolved "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz" integrity sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ== @@ -5797,6 +8553,14 @@ tinyglobby@^0.2.13, tinyglobby@^0.2.14, tinyglobby@0.2.14: fdir "^6.4.4" picomatch "^4.0.2" +tinyglobby@^0.2.15: + version "0.2.15" + resolved "https://registry.yarnpkg.com/tinyglobby/-/tinyglobby-0.2.15.tgz#e228dd1e638cea993d2fdb4fcd2d4602a79951c2" + integrity sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ== + dependencies: + fdir "^6.5.0" + picomatch "^4.0.3" + tmp-promise@^3.0.2: version "3.0.3" resolved "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.3.tgz" @@ -5836,17 +8600,32 @@ tr46@~0.0.3: resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== +trim-lines@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/trim-lines/-/trim-lines-3.0.1.tgz#d802e332a07df861c48802c04321017b1bd87338" + integrity sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg== + triple-beam@^1.3.0: version "1.4.1" resolved "https://registry.npmjs.org/triple-beam/-/triple-beam-1.4.1.tgz" integrity sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg== +trough@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/trough/-/trough-2.2.0.tgz#94a60bd6bd375c152c1df911a4b11d5b0256f50f" + integrity sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw== + ts-api-utils@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz" integrity sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ== -tslib@^2.0.0, tslib@^2.6.3, tslib@^2.8.0, tslib@^2.8.1: +ts-deepmerge@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/ts-deepmerge/-/ts-deepmerge-7.0.3.tgz#e7053ddb45be093b71d7f9a5a05935ae119f1d31" + integrity sha512-Du/ZW2RfwV/D4cmA5rXafYjBQVuvu4qGiEEla4EmEHVHgRdx68Gftx7i66jn2bzHPwSVZY36Ae6OuDn9el4ZKA== + +tslib@^2.0.0, tslib@^2.4.0, tslib@^2.6.3, tslib@^2.8.0, tslib@^2.8.1: version "2.8.1" resolved "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz" integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== @@ -5871,6 +8650,13 @@ type-fest@^4.18.2, type-fest@^4.39.1, type-fest@^4.6.0: resolved "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz" integrity sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA== +type-fest@^5.3.1: + version "5.4.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-5.4.3.tgz#b4c7e028da129098911ee2162a0c30df8a1be904" + integrity sha512-AXSAQJu79WGc79/3e9/CR77I/KQgeY1AhNvcShIH4PTcGYyC4xv6H4R4AUOwkPS5799KlVDAu8zExeCrkGquiA== + dependencies: + tagged-tag "^1.0.0" + type-level-regexp@~0.1.17: version "0.1.17" resolved "https://registry.npmjs.org/type-level-regexp/-/type-level-regexp-0.1.17.tgz" @@ -5886,6 +8672,11 @@ ufo@^1.1.2, ufo@^1.5.4, ufo@^1.6.1: resolved "https://registry.npmjs.org/ufo/-/ufo-1.6.1.tgz" integrity sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA== +ufo@^1.6.3: + version "1.6.3" + resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.6.3.tgz#799666e4e88c122a9659805e30b9dc071c3aed4f" + integrity sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q== + ultrahtml@^1.6.0: version "1.6.0" resolved "https://registry.npmjs.org/ultrahtml/-/ultrahtml-1.6.0.tgz" @@ -5906,6 +8697,16 @@ unctx@^2.4.1: magic-string "^0.30.17" unplugin "^2.1.0" +unctx@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/unctx/-/unctx-2.5.0.tgz#a0c3ba03838856d336e815a71403ce1a848e4108" + integrity sha512-p+Rz9x0R7X+CYDkT+Xg8/GhpcShTlU8n+cf9OtOEf7zEQsNcCZO1dPKNRDqvUTaq+P32PMMkxWHwfrxkqfqAYg== + dependencies: + acorn "^8.15.0" + estree-walker "^3.0.3" + magic-string "^0.30.21" + unplugin "^2.3.11" + undici-types@~6.21.0: version "6.21.0" resolved "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz" @@ -5922,6 +8723,16 @@ unenv@^2.0.0-rc.17: pathe "^2.0.3" ufo "^1.6.1" +unhead@1.11.20: + version "1.11.20" + resolved "https://registry.yarnpkg.com/unhead/-/unhead-1.11.20.tgz#910af0ddaac0bca24d32b4dbe0d6291cd813b9bc" + integrity sha512-3AsNQC0pjwlLqEYHLjtichGWankK8yqmocReITecmpB1H0aOabeESueyy+8X1gyJx4ftZVwo9hqQ4O3fPWffCA== + dependencies: + "@unhead/dom" "1.11.20" + "@unhead/schema" "1.11.20" + "@unhead/shared" "1.11.20" + hookable "^5.5.3" + unhead@2.0.10: version "2.0.10" resolved "https://registry.npmjs.org/unhead/-/unhead-2.0.10.tgz" @@ -5955,6 +8766,19 @@ unicorn-magic@^0.3.0: resolved "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz" integrity sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA== +unified@^11.0.0, unified@^11.0.4: + version "11.0.5" + resolved "https://registry.yarnpkg.com/unified/-/unified-11.0.5.tgz#f66677610a5c0a9ee90cab2b8d4d66037026d9e1" + integrity sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA== + dependencies: + "@types/unist" "^3.0.0" + bail "^2.0.0" + devlop "^1.0.0" + extend "^3.0.0" + is-plain-obj "^4.0.0" + trough "^2.0.0" + vfile "^6.0.0" + unifont@^0.4.1: version "0.4.1" resolved "https://registry.npmjs.org/unifont/-/unifont-0.4.1.tgz" @@ -5983,6 +8807,52 @@ unimport@^5.0.1: unplugin "^2.3.2" unplugin-utils "^0.2.4" +unist-util-find-after@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/unist-util-find-after/-/unist-util-find-after-5.0.0.tgz#3fccc1b086b56f34c8b798e1ff90b5c54468e896" + integrity sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ== + dependencies: + "@types/unist" "^3.0.0" + unist-util-is "^6.0.0" + +unist-util-is@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-6.0.1.tgz#d0a3f86f2dd0db7acd7d8c2478080b5c67f9c6a9" + integrity sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g== + dependencies: + "@types/unist" "^3.0.0" + +unist-util-position@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-5.0.0.tgz#678f20ab5ca1207a97d7ea8a388373c9cf896be4" + integrity sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA== + dependencies: + "@types/unist" "^3.0.0" + +unist-util-stringify-position@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz#449c6e21a880e0855bf5aabadeb3a740314abac2" + integrity sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ== + dependencies: + "@types/unist" "^3.0.0" + +unist-util-visit-parents@^6.0.0: + version "6.0.2" + resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-6.0.2.tgz#777df7fb98652ce16b4b7cd999d0a1a40efa3a02" + integrity sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ== + dependencies: + "@types/unist" "^3.0.0" + unist-util-is "^6.0.0" + +unist-util-visit@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-5.1.0.tgz#9a2a28b0aa76a15e0da70a08a5863a2f060e2468" + integrity sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg== + dependencies: + "@types/unist" "^3.0.0" + unist-util-is "^6.0.0" + unist-util-visit-parents "^6.0.0" + unixify@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/unixify/-/unixify-1.0.0.tgz" @@ -6036,6 +8906,16 @@ unplugin@^2.0.0, unplugin@^2.1.0, unplugin@^2.2.0, unplugin@^2.3.2, unplugin@^2. picomatch "^4.0.2" webpack-virtual-modules "^0.6.2" +unplugin@^2.3.11: + version "2.3.11" + resolved "https://registry.yarnpkg.com/unplugin/-/unplugin-2.3.11.tgz#411e020dd2ba90e2fbe1e7bd63a5a399e6ee3b54" + integrity sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww== + dependencies: + "@jridgewell/remapping" "^2.3.5" + acorn "^8.15.0" + picomatch "^4.0.3" + webpack-virtual-modules "^0.6.2" + unstorage@^1.16.0: version "1.16.0" resolved "https://registry.npmjs.org/unstorage/-/unstorage-1.16.0.tgz" @@ -6095,16 +8975,16 @@ uqr@^0.1.2: resolved "https://registry.npmjs.org/uqr/-/uqr-0.1.2.tgz" integrity sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA== -urlpattern-polyfill@^10.0.0: - version "10.1.0" - resolved "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.1.0.tgz" - integrity sha512-IGjKp/o0NL3Bso1PymYURCJxMPNAf/ILOpendP9f5B6e1rTJgdgiOvgfoT8VxCAdY+Wisb9uhGaJJf3yZ2V9nw== - urlpattern-polyfill@8.0.2: version "8.0.2" resolved "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-8.0.2.tgz" integrity sha512-Qp95D4TPJl1kC9SKigDcqgyM2VDVO4RiJc2d4qe5GrYm+zbIQCWWKAFaJNQ4BhdFeDGwBmAxqJBwWSJDb9T3BQ== +urlpattern-polyfill@^10.0.0: + version "10.1.0" + resolved "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.1.0.tgz" + integrity sha512-IGjKp/o0NL3Bso1PymYURCJxMPNAf/ILOpendP9f5B6e1rTJgdgiOvgfoT8VxCAdY+Wisb9uhGaJJf3yZ2V9nw== + util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" @@ -6123,6 +9003,30 @@ validate-npm-package-license@^3.0.4: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" +vfile-location@^5.0.0: + version "5.0.3" + resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-5.0.3.tgz#cb9eacd20f2b6426d19451e0eafa3d0a846225c3" + integrity sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg== + dependencies: + "@types/unist" "^3.0.0" + vfile "^6.0.0" + +vfile-message@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-4.0.3.tgz#87b44dddd7b70f0641c2e3ed0864ba73e2ea8df4" + integrity sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw== + dependencies: + "@types/unist" "^3.0.0" + unist-util-stringify-position "^4.0.0" + +vfile@^6.0.0: + version "6.0.3" + resolved "https://registry.yarnpkg.com/vfile/-/vfile-6.0.3.tgz#3652ab1c496531852bf55a6bac57af981ebc38ab" + integrity sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q== + dependencies: + "@types/unist" "^3.0.0" + vfile-message "^4.0.0" + vite-dev-rpc@^1.0.7: version "1.0.7" resolved "https://registry.npmjs.org/vite-dev-rpc/-/vite-dev-rpc-1.0.7.tgz" @@ -6221,7 +9125,12 @@ vue-bundle-renderer@^2.1.1: dependencies: ufo "^1.5.4" -vue-demi@>=0.13.0: +vue-component-type-helpers@^3.2.2: + version "3.2.4" + resolved "https://registry.yarnpkg.com/vue-component-type-helpers/-/vue-component-type-helpers-3.2.4.tgz#1af7b6771060bde37942a864f144ae9afca086b9" + integrity sha512-05lR16HeZDcDpB23ku5b5f1fBOoHqFnMiKRr2CiEvbG5Ux4Yi0McmQBOET0dR0nxDXosxyVqv67q6CzS3AK8rw== + +vue-demi@>=0.13.0, vue-demi@>=0.14.8: version "0.14.10" resolved "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz" integrity sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg== @@ -6231,6 +9140,13 @@ vue-devtools-stub@^0.1.0: resolved "https://registry.npmjs.org/vue-devtools-stub/-/vue-devtools-stub-0.1.0.tgz" integrity sha512-RutnB7X8c5hjq39NceArgXg28WZtZpGc3+J16ljMiYnFhKvd8hITxSWQSQ5bvldxMDU6gG5mkxl1MTQLXckVSQ== +vue-router@4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-4.6.2.tgz#88dc6f9f5b4cd4264ea34a6733298cd00fef38a5" + integrity sha512-my83mxQKXyCms9EegBXZldehOihxBjgSjZqrZwgg4vBacNGl0oBCO+xT//wgOYpLV1RW93ZfqxrjTozd+82nbA== + dependencies: + "@vue/devtools-api" "^6.6.4" + vue-router@^4.5.1: version "4.5.1" resolved "https://registry.npmjs.org/vue-router/-/vue-router-4.5.1.tgz" @@ -6238,6 +9154,11 @@ vue-router@^4.5.1: dependencies: "@vue/devtools-api" "^6.6.4" +vue-sonner@^1.0.3: + version "1.3.2" + resolved "https://registry.yarnpkg.com/vue-sonner/-/vue-sonner-1.3.2.tgz#3349d548218e074499fc6d1ba394603ba477156a" + integrity sha512-UbZ48E9VIya3ToiRHAZUbodKute/z/M1iT8/3fU8zEbwBRE11AKuHikssv18LMk2gTTr6eMQT4qf6JoLHWuj/A== + vue-sonner@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/vue-sonner/-/vue-sonner-2.0.1.tgz" @@ -6254,11 +9175,37 @@ vue@^3.5.13, vue@^3.5.14, vue@^3.5.16: "@vue/server-renderer" "3.5.16" "@vue/shared" "3.5.16" +vue@^3.5.21, vue@^3.5.26: + version "3.5.27" + resolved "https://registry.yarnpkg.com/vue/-/vue-3.5.27.tgz#e55fd941b614459ab2228489bc19d1692e05876c" + integrity sha512-aJ/UtoEyFySPBGarREmN4z6qNKpbEguYHMmXSiOGk69czc+zhs0NF6tEFrY8TZKAl8N/LYAkd4JHVd5E/AsSmw== + dependencies: + "@vue/compiler-dom" "3.5.27" + "@vue/compiler-sfc" "3.5.27" + "@vue/runtime-dom" "3.5.27" + "@vue/server-renderer" "3.5.27" + "@vue/shared" "3.5.27" + +w3c-keyname@^2.2.4: + version "2.2.8" + resolved "https://registry.yarnpkg.com/w3c-keyname/-/w3c-keyname-2.2.8.tgz#7b17c8c6883d4e8b86ac8aba79d39e880f8869c5" + integrity sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ== + +web-namespaces@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/web-namespaces/-/web-namespaces-2.0.1.tgz#1010ff7c650eccb2592cebeeaf9a1b253fd40692" + integrity sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ== + web-streams-polyfill@^3.0.3: version "3.3.3" resolved "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz" integrity sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw== +web-worker@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/web-worker/-/web-worker-1.2.0.tgz#5d85a04a7fbc1e7db58f66595d7a3ac7c9c180da" + integrity sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA== + webidl-conversions@^3.0.0: version "3.0.1" resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" @@ -6269,6 +9216,11 @@ webpack-virtual-modules@^0.6.2: resolved "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz" integrity sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ== +whatwg-mimetype@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz#bc1bf94a985dc50388d54a9258ac405c3ca2fc0a" + integrity sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg== + whatwg-url@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" @@ -6406,6 +9358,11 @@ yaml@^2.7.0: resolved "https://registry.npmjs.org/yaml/-/yaml-2.8.0.tgz" integrity sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ== +yaml@^2.8.0: + version "2.8.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.8.2.tgz#5694f25eca0ce9c3e7a9d9e00ce0ddabbd9e35c5" + integrity sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A== + yargs-parser@^18.1.2: version "18.1.3" resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz" @@ -6481,6 +9438,11 @@ youch@^4.1.0-beta.7: cookie "^1.0.2" youch-core "^0.3.1" +zhead@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/zhead/-/zhead-2.2.4.tgz#87cd1e2c3d2f465fa9f43b8db23f9716dfe6bed7" + integrity sha512-8F0OI5dpWIA5IGG5NHUg9staDwz/ZPxZtvGVf01j7vHqSyZ0raHY+78atOVxRqb73AotX22uV1pXt3gYSstGag== + zip-stream@^6.0.1: version "6.0.1" resolved "https://registry.npmjs.org/zip-stream/-/zip-stream-6.0.1.tgz" @@ -6499,3 +9461,13 @@ zod@^3.24.1: version "3.25.67" resolved "https://registry.npmjs.org/zod/-/zod-3.25.67.tgz" integrity sha512-idA2YXwpCdqUSKRCACDE6ItZD9TZzy3OZMtpfLoh6oPR47lipysRrJfjzMqFxQ3uJuUPyUeWe1r9vLH33xO/Qw== + +zod@^4.1.11, zod@^4.3.5, zod@^4.3.6: + version "4.3.6" + resolved "https://registry.yarnpkg.com/zod/-/zod-4.3.6.tgz#89c56e0aa7d2b05107d894412227087885ab112a" + integrity sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg== + +zwitch@^2.0.0, zwitch@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-2.0.4.tgz#c827d4b0acb76fc3e685a4c6ec2902d51070e9d7" + integrity sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A== From f7a09b82c5792a3319bec57e87cf5305e9b8a958 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 3 Feb 2026 20:42:04 +0000 Subject: [PATCH 02/10] Add GitHub Actions CI pipeline with ESLint, Prettier, Vitest, and build - Add .github/workflows/ci.yml: four parallel jobs (lint, typecheck, test, build) on push to main and PRs targeting main, Node 20 LTS with yarn cache. Build step runs `npx nuxt build` directly to skip the postbuild hook that requires a live database. - Wire ESLint (flat config via @nuxt/eslint-config), Prettier, and Vitest as devDependencies; add lint, format:check, typecheck, and test scripts to package.json. - eslint.config.mjs: excludes shadcn-vue generated components/ui/, downgrades no-explicit-any to warn (drizzle ORM patterns). - Add vitest.config.ts and a first unit test (tests/utils.test.ts) covering the cn() helper. - Run Prettier over the entire repo so format:check is green from day one; fix the handful of lint errors that surfaced (dead imports, unused-var prefixes). - Add CI status badge to README. https://claude.ai/code/session_0143PEXicpSS8sXgc83Ljr9U --- .cursor/README.md | 9 +- .github/workflows/ci.yml | 78 + .prettierignore | 6 + .prettierrc.json | 8 + CLAUDE.md | 128 +- README.md | 12 +- app.vue | 6 +- assets/css/main.css | 6 +- auth-schema.ts | 154 +- components.json | 2 +- components/settings/SettingsAppearance.vue | 71 +- components/settings/SettingsBilling.vue | 8 +- components/settings/SettingsNotifications.vue | 35 +- components/settings/SettingsProfile.vue | 105 +- components/settings/SettingsSecurity.vue | 167 +- components/settings/SettingsTeam.vue | 309 ++- components/sidebar/AppSidebar.vue | 44 +- components/sidebar/NavUser.vue | 74 +- components/sidebar/TeamSwitcher.vue | 71 +- components/ui/avatar/Avatar.vue | 5 +- components/ui/avatar/AvatarImage.vue | 6 +- components/ui/badge/Badge.vue | 16 +- components/ui/badge/index.ts | 13 +- components/ui/button/index.ts | 13 +- components/ui/card/Card.vue | 7 +- components/ui/card/CardContent.vue | 5 +- components/ui/card/CardDescription.vue | 5 +- components/ui/card/CardFooter.vue | 5 +- components/ui/card/CardHeader.vue | 7 +- components/ui/card/CardTitle.vue | 5 +- components/ui/dialog/Dialog.vue | 5 +- components/ui/dialog/DialogClose.vue | 5 +- components/ui/dialog/DialogContent.vue | 5 +- components/ui/dialog/DialogFooter.vue | 5 +- components/ui/dialog/DialogHeader.vue | 5 +- components/ui/dialog/DialogOverlay.vue | 7 +- components/ui/dialog/DialogScrollContent.vue | 22 +- components/ui/dialog/DialogTrigger.vue | 5 +- components/ui/dropdown-menu/DropdownMenu.vue | 5 +- .../DropdownMenuCheckboxItem.vue | 10 +- .../ui/dropdown-menu/DropdownMenuContent.vue | 16 +- .../ui/dropdown-menu/DropdownMenuGroup.vue | 5 +- .../ui/dropdown-menu/DropdownMenuItem.vue | 26 +- .../ui/dropdown-menu/DropdownMenuLabel.vue | 2 +- .../dropdown-menu/DropdownMenuRadioGroup.vue | 5 +- .../dropdown-menu/DropdownMenuRadioItem.vue | 10 +- .../dropdown-menu/DropdownMenuSeparator.vue | 13 +- .../ui/dropdown-menu/DropdownMenuSub.vue | 7 +- .../dropdown-menu/DropdownMenuSubContent.vue | 7 +- .../dropdown-menu/DropdownMenuSubTrigger.vue | 18 +- .../ui/dropdown-menu/DropdownMenuTrigger.vue | 5 +- components/ui/input/Input.vue | 16 +- components/ui/label/Label.vue | 2 +- components/ui/scroll-area/ScrollArea.vue | 13 +- components/ui/scroll-area/ScrollBar.vue | 18 +- components/ui/separator/Separator.vue | 6 +- components/ui/sheet/Sheet.vue | 5 +- components/ui/sheet/SheetClose.vue | 5 +- components/ui/sheet/SheetContent.vue | 25 +- components/ui/sheet/SheetFooter.vue | 6 +- components/ui/sheet/SheetHeader.vue | 5 +- components/ui/sheet/SheetOverlay.vue | 7 +- components/ui/sheet/SheetTrigger.vue | 5 +- components/ui/sidebar/Sidebar.vue | 42 +- components/ui/sidebar/SidebarContent.vue | 4 +- components/ui/sidebar/SidebarFooter.vue | 6 +- components/ui/sidebar/SidebarGroupAction.vue | 22 +- components/ui/sidebar/SidebarGroupContent.vue | 6 +- components/ui/sidebar/SidebarGroupLabel.vue | 19 +- components/ui/sidebar/SidebarHeader.vue | 6 +- components/ui/sidebar/SidebarInput.vue | 5 +- components/ui/sidebar/SidebarInset.vue | 12 +- components/ui/sidebar/SidebarMenu.vue | 6 +- components/ui/sidebar/SidebarMenuAction.vue | 41 +- components/ui/sidebar/SidebarMenuBadge.vue | 20 +- components/ui/sidebar/SidebarMenuButton.vue | 25 +- components/ui/sidebar/SidebarMenuItem.vue | 6 +- components/ui/sidebar/SidebarMenuSkeleton.vue | 6 +- components/ui/sidebar/SidebarMenuSub.vue | 12 +- .../ui/sidebar/SidebarMenuSubButton.vue | 39 +- components/ui/sidebar/SidebarProvider.vue | 30 +- components/ui/sidebar/SidebarRail.vue | 20 +- components/ui/sidebar/index.ts | 2 +- components/ui/skeleton/Skeleton.vue | 5 +- components/ui/sonner/Sonner.vue | 1 - components/ui/tooltip/Tooltip.vue | 5 +- components/ui/tooltip/TooltipContent.vue | 20 +- components/ui/tooltip/TooltipTrigger.vue | 5 +- docker-compose-dev.yml | 8 +- docker-compose.yml | 4 +- drizzle.config.ts | 18 +- eslint.config.mjs | 19 + layouts/clean.vue | 4 +- layouts/dashboard.vue | 8 +- lib/auth-client.ts | 15 +- lib/auth.ts | 27 +- lib/email-templates.ts | 14 +- lib/email.ts | 24 +- middleware/auth.global.ts | 42 +- nuxt.config.ts | 12 +- package.json | 14 +- pages/auth/index.vue | 100 +- pages/dashboard/index.vue | 20 +- pages/feedback/index.vue | 85 +- pages/forgot-password/index.vue | 59 +- pages/help/index.vue | 52 +- pages/index.vue | 18 +- pages/login/index.vue | 100 +- pages/reports/index.vue | 20 +- pages/settings/index.vue | 64 +- pages/signup/index.vue | 99 +- scripts/seed.ts | 12 +- server/api/auth/[...all].ts | 6 +- server/api/mail/send-mail.post.ts | 16 +- server/api/test.ts | 9 +- server/api/user/profile.put.ts | 27 +- server/database/db.ts | 3 - server/database/drizzle.ts | 23 +- server/database/schema/auth.ts | 188 +- server/database/schema/feedback.ts | 451 ++-- server/database/schema/index.ts | 4 +- tests/utils.test.ts | 17 + vitest.config.ts | 7 + yarn.lock | 1873 ++++++++++++++++- 124 files changed, 3773 insertions(+), 1735 deletions(-) create mode 100644 .github/workflows/ci.yml create mode 100644 .prettierignore create mode 100644 .prettierrc.json create mode 100644 eslint.config.mjs create mode 100644 tests/utils.test.ts create mode 100644 vitest.config.ts diff --git a/.cursor/README.md b/.cursor/README.md index 3b099f9..3200cb4 100644 --- a/.cursor/README.md +++ b/.cursor/README.md @@ -8,7 +8,7 @@ This project uses the new Cursor project rules structure with **MDC format** for .cursor/rules/ # Project-wide rules and overview project.md # General patterns, security, architecture -server/.cursor/rules/ # Backend-specific rules +server/.cursor/rules/ # Backend-specific rules api.md # API patterns, database, server-side auth components/.cursor/rules/ # Frontend-specific rules @@ -18,18 +18,21 @@ components/.cursor/rules/ # Frontend-specific rules ## Rule Categories ### Project-wide (`.cursor/rules/`) + - Project overview and architecture with Mermaid diagrams - Common patterns across the entire codebase - Security guidelines and migration notes - Development workflow and best practices ### Server (`server/.cursor/rules/`) + - API route patterns and error handling - Database schema and Drizzle ORM usage - Better-Auth server-side integration - Environment configuration and security ### Components (`components/.cursor/rules/`) + - Vue 3 Options API patterns with examples - shadcn-vue component usage and styling - Client-side authentication and navigation @@ -58,7 +61,7 @@ The rules files use **MDC (Markdown Components)** format with: When working in different directories, Cursor automatically applies the most relevant rules: - **Root directory**: General project patterns and architecture -- **`/server/` directory**: Backend API and database patterns +- **`/server/` directory**: Backend API and database patterns - **`/components/` directory**: Vue component and UI patterns -This ensures you get contextual AI assistance based on what part of the application you're working on. \ No newline at end of file +This ensures you get contextual AI assistance based on what part of the application you're working on. diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..d02a914 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,78 @@ +name: CI + +on: + push: + branches: [main] + pull_request: + branches: [main] + +jobs: + # ── Lint (ESLint + Prettier) ────────────────────────────────────── + lint: + name: Lint + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-node@v5 + with: + node-version: '20' + cache: yarn + + - run: yarn install --frozen-lockfile + + - run: yarn lint + + - run: yarn format:check + + # ── Type check (vue-tsc) ────────────────────────────────────────── + typecheck: + name: Type Check + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-node@v5 + with: + node-version: '20' + cache: yarn + + - run: yarn install --frozen-lockfile + # postinstall runs `nuxt prepare`, which generates .nuxt/tsconfig.json + + - run: yarn typecheck + + # ── Unit tests (Vitest) ─────────────────────────────────────────── + test: + name: Test + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-node@v5 + with: + node-version: '20' + cache: yarn + + - run: yarn install --frozen-lockfile + + - run: yarn test + + # ── Production build ────────────────────────────────────────────── + build: + name: Build + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-node@v5 + with: + node-version: '20' + cache: yarn + + - run: yarn install --frozen-lockfile + + # Run nuxt build directly (not `yarn build`) to skip the + # postbuild lifecycle hook, which runs db migrations and + # requires a live PostgreSQL connection. + - run: npx nuxt build diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..79bee78 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,6 @@ +node_modules +.nuxt +.output +dist +.cache +server/database/migrations diff --git a/.prettierrc.json b/.prettierrc.json new file mode 100644 index 0000000..3b5eb66 --- /dev/null +++ b/.prettierrc.json @@ -0,0 +1,8 @@ +{ + "semi": false, + "singleQuote": true, + "trailingComma": "es5", + "printWidth": 120, + "tabWidth": 2, + "bracketSpacing": true +} diff --git a/CLAUDE.md b/CLAUDE.md index 2ea8f72..9893143 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -12,19 +12,19 @@ Veerify is a feedback management and verification platform built with **Nuxt 3** ## Technology Stack -| Layer | Technology | -|---|---| -| Framework | Nuxt 3 (Vue 3) | -| Language | TypeScript | -| UI Components | shadcn-vue (New York style) | -| Styling | Tailwind CSS v4 (`@tailwindcss/vite`) | -| Icons | Nuxt Icon — Lucide icon set | -| Authentication | Better-Auth v1.2+ | -| ORM | Drizzle ORM | -| Database | PostgreSQL 17.5 | -| Email | Nodemailer via `nuxt-nodemailer` | -| Dark Mode | `@nuxtjs/color-mode` (system preference, dark fallback) | -| Package Manager | Yarn | +| Layer | Technology | +| --------------- | ------------------------------------------------------- | +| Framework | Nuxt 3 (Vue 3) | +| Language | TypeScript | +| UI Components | shadcn-vue (New York style) | +| Styling | Tailwind CSS v4 (`@tailwindcss/vite`) | +| Icons | Nuxt Icon — Lucide icon set | +| Authentication | Better-Auth v1.2+ | +| ORM | Drizzle ORM | +| Database | PostgreSQL 17.5 | +| Email | Nodemailer via `nuxt-nodemailer` | +| Dark Mode | `@nuxtjs/color-mode` (system preference, dark fallback) | +| Package Manager | Yarn | --- @@ -85,6 +85,7 @@ Veerify is a feedback management and verification platform built with **Nuxt 3** ## Development Setup ### Prerequisites + - Node.js 18+ - Yarn - Docker (for local PostgreSQL + Mailpit) @@ -131,15 +132,15 @@ During development, emails are captured by Mailpit — they are never sent to re ## NPM Scripts -| Script | Purpose | -|---|---| -| `yarn dev` | Start Nuxt dev server | -| `yarn build` | Production build | -| `yarn preview` | Preview production build locally | -| `yarn db:generate` | Generate a new Drizzle migration from schema changes | -| `yarn db:migrate` | Run pending migrations against the database | -| `yarn db:push` | Push schema directly (no migration file — dev use only) | -| `yarn db:studio` | Open Drizzle Studio UI | +| Script | Purpose | +| ------------------ | ------------------------------------------------------- | +| `yarn dev` | Start Nuxt dev server | +| `yarn build` | Production build | +| `yarn preview` | Preview production build locally | +| `yarn db:generate` | Generate a new Drizzle migration from schema changes | +| `yarn db:migrate` | Run pending migrations against the database | +| `yarn db:push` | Push schema directly (no migration file — dev use only) | +| `yarn db:studio` | Open Drizzle Studio UI | --- @@ -199,11 +200,11 @@ import { authClient, signIn, signUp, signOut, useSession } from '~/lib/auth-clie Runs on the **client only** (`process.server` check skips SSR/build). Categorises routes: -| Category | Routes | Behaviour | -|---|---|---| -| Protected | `/dashboard`, `/settings`, `/team`, `/reports`, `/feedback`, `/help` | Redirect to `/login` if no session | -| Auth | `/login`, `/signup`, `/auth` | Redirect to `/dashboard` if session exists | -| Public | everything else | No redirect | +| Category | Routes | Behaviour | +| --------- | -------------------------------------------------------------------- | ------------------------------------------ | +| Protected | `/dashboard`, `/settings`, `/team`, `/reports`, `/feedback`, `/help` | Redirect to `/login` if no session | +| Auth | `/login`, `/signup`, `/auth` | Redirect to `/dashboard` if session exists | +| Public | everything else | No redirect | --- @@ -217,16 +218,16 @@ Uses `drizzle-orm/node-postgres` with a raw `pg` `Client`. Connection parameters Eight tables, all defined with `pgTable` from `drizzle-orm/pg-core`: -| Table | Key Columns | Notes | -|---|---|---| -| `user` | id, name, email (unique), emailVerified, twoFactorEnabled | Core identity | -| `session` | id, token (unique), userId (FK→user), expiresAt, activeOrganizationId | Auth sessions | -| `account` | id, accountId, providerId, userId (FK→user), password | Stores credential per provider | -| `verification` | id, identifier, value, expiresAt | Email verification & password reset tokens | -| `organization` | id, name, slug (unique), logo | Multi-tenant orgs | -| `member` | id, organizationId (FK→organization), userId (FK→user), role | Org membership | -| `invitation` | id, organizationId, email, role, status, inviterId, expiresAt | Pending invites | -| `twoFactor` | id, userId (FK→user), secret, backupCodes | TOTP 2FA | +| Table | Key Columns | Notes | +| -------------- | --------------------------------------------------------------------- | ------------------------------------------ | +| `user` | id, name, email (unique), emailVerified, twoFactorEnabled | Core identity | +| `session` | id, token (unique), userId (FK→user), expiresAt, activeOrganizationId | Auth sessions | +| `account` | id, accountId, providerId, userId (FK→user), password | Stores credential per provider | +| `verification` | id, identifier, value, expiresAt | Email verification & password reset tokens | +| `organization` | id, name, slug (unique), logo | Multi-tenant orgs | +| `member` | id, organizationId (FK→organization), userId (FK→user), role | Org membership | +| `invitation` | id, organizationId, email, role, status, inviterId, expiresAt | Pending invites | +| `twoFactor` | id, userId (FK→user), secret, backupCodes | TOTP 2FA | ### Migration Workflow @@ -280,11 +281,19 @@ The project **migrated away from Composition API**. All components must use the export default { name: 'ComponentName', data() { - return { /* reactive state */ } + return { + /* reactive state */ + } + }, + computed: { + /* derived state */ + }, + methods: { + /* actions */ + }, + async mounted() { + /* lifecycle */ }, - computed: { /* derived state */ }, - methods: { /* actions */ }, - async mounted() { /* lifecycle */ } } ``` @@ -294,6 +303,7 @@ export default { ### Auto-Imports Nuxt auto-imports components from `components/` and `components/ui/`. You do **not** need to manually import: + - Any shadcn-vue UI component (`Button`, `Input`, `Card`, `Skeleton`, `Avatar`, etc.) - Any component inside `components/` (e.g. `AppSidebar`, `SettingsProfile`) - Nuxt built-ins (`NuxtLink`, `navigateTo`) @@ -319,8 +329,12 @@ Always use the Nuxt Icon component with Lucide: Use `import.meta.client` (not the deprecated `process.client`): ```js -if (import.meta.client) { /* browser-only code */ } -if (import.meta.server) { /* server-only code */ } +if (import.meta.client) { + /* browser-only code */ +} +if (import.meta.server) { + /* server-only code */ +} ``` ### Tailwind & Theming @@ -337,11 +351,11 @@ if (import.meta.server) { /* server-only code */ } Nuxt maps files under `server/api/` directly to routes. Method-specific files use suffixes: -| File | Route | Method | -|---|---|---| -| `server/api/auth/[...all].ts` | `/api/auth/*` | All (Better-Auth catch-all) | -| `server/api/mail/send-mail.post.ts` | `/api/mail/send-mail` | POST | -| `server/api/user/profile.put.ts` | `/api/user/profile` | PUT | +| File | Route | Method | +| ----------------------------------- | --------------------- | --------------------------- | +| `server/api/auth/[...all].ts` | `/api/auth/*` | All (Better-Auth catch-all) | +| `server/api/mail/send-mail.post.ts` | `/api/mail/send-mail` | POST | +| `server/api/user/profile.put.ts` | `/api/user/profile` | PUT | ### Protected Route Template @@ -397,11 +411,11 @@ throw createError({ statusCode: 500, statusMessage: 'Internal server error' }) ### Route Categories -| Route | Layout | Auth State | -|---|---|---| -| `/` | — | Redirects based on session | -| `/login`, `/signup`, `/forgot-password` | `clean` | Public (redirects away if authed) | -| `/dashboard`, `/feedback`, `/reports`, `/settings`, `/help` | `dashboard` | Protected | +| Route | Layout | Auth State | +| ----------------------------------------------------------- | ----------- | --------------------------------- | +| `/` | — | Redirects based on session | +| `/login`, `/signup`, `/forgot-password` | `clean` | Public (redirects away if authed) | +| `/dashboard`, `/feedback`, `/reports`, `/settings`, `/help` | `dashboard` | Protected | --- @@ -409,10 +423,10 @@ throw createError({ statusCode: 500, statusMessage: 'Internal server error' }) The project ships context-aware Cursor rules in MDC format: -| File | Scope | -|---|---| -| `.cursor/rules/project.mdc` | Project-wide patterns, security, architecture | -| `server/.cursor/rules/api.mdc` | API routes, database, server auth | +| File | Scope | +| ---------------------------------- | --------------------------------------------- | +| `.cursor/rules/project.mdc` | Project-wide patterns, security, architecture | +| `server/.cursor/rules/api.mdc` | API routes, database, server auth | | `components/.cursor/rules/vue.mdc` | Vue components, UI patterns, client-side auth | These mirror the conventions in this file. Keep them in sync when making architectural changes. diff --git a/README.md b/README.md index 33f8cb3..522a8f7 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # Veerify +[![CI](https://github.com/Frogbyte-io/veerify/actions/workflows/ci.yml/badge.svg)](https://github.com/Frogbyte-io/veerify/actions/workflows/ci.yml) + A modern feedback management platform built with Nuxt 3, TypeScript, and shadcn-vue. Veerify helps you collect, organize, and prioritize user feedback to build better products - similar to Sleekplan, Canny, and Featurebase. ## 🌟 Features @@ -27,7 +29,7 @@ A modern feedback management platform built with Nuxt 3, TypeScript, and shadcn- ### Prerequisites -- Node.js 18+ +- Node.js 18+ - Yarn package manager ### Installation @@ -139,10 +141,10 @@ No GitHub Actions or per-PR configuration required — the Neon Vercel integrati **Test credentials on preview deployments:** -| Field | Value | -|---|---| -| Email | `test@preview.local` | -| Password | `password123` | +| Field | Value | +| -------- | -------------------- | +| Email | `test@preview.local` | +| Password | `password123` | ## 📁 Project Structure diff --git a/app.vue b/app.vue index dc2e63f..7009ff2 100644 --- a/app.vue +++ b/app.vue @@ -7,12 +7,12 @@ diff --git a/assets/css/main.css b/assets/css/main.css index 0a61557..30841b6 100644 --- a/assets/css/main.css +++ b/assets/css/main.css @@ -1,5 +1,5 @@ -@import "tailwindcss"; -@import "tw-animate-css"; +@import 'tailwindcss'; +@import 'tw-animate-css'; @custom-variant dark (&:is(.dark *)); @@ -120,4 +120,4 @@ body { @apply bg-background text-foreground; } -} \ No newline at end of file +} diff --git a/auth-schema.ts b/auth-schema.ts index 7c0a48b..fb0be7d 100644 --- a/auth-schema.ts +++ b/auth-schema.ts @@ -1,75 +1,93 @@ -import { pgTable, text, timestamp, boolean, integer } from "drizzle-orm/pg-core"; +import { pgTable, text, timestamp, boolean } from 'drizzle-orm/pg-core' -export const user = pgTable("user", { - id: text('id').primaryKey(), - name: text('name').notNull(), - email: text('email').notNull().unique(), - emailVerified: boolean('email_verified').$defaultFn(() => false).notNull(), - image: text('image'), - createdAt: timestamp('created_at').$defaultFn(() => /* @__PURE__ */ new Date()).notNull(), - updatedAt: timestamp('updated_at').$defaultFn(() => /* @__PURE__ */ new Date()).notNull() - }); +export const user = pgTable('user', { + id: text('id').primaryKey(), + name: text('name').notNull(), + email: text('email').notNull().unique(), + emailVerified: boolean('email_verified') + .$defaultFn(() => false) + .notNull(), + image: text('image'), + createdAt: timestamp('created_at') + .$defaultFn(() => /* @__PURE__ */ new Date()) + .notNull(), + updatedAt: timestamp('updated_at') + .$defaultFn(() => /* @__PURE__ */ new Date()) + .notNull(), +}) -export const session = pgTable("session", { - id: text('id').primaryKey(), - expiresAt: timestamp('expires_at').notNull(), - token: text('token').notNull().unique(), - createdAt: timestamp('created_at').notNull(), - updatedAt: timestamp('updated_at').notNull(), - ipAddress: text('ip_address'), - userAgent: text('user_agent'), - userId: text('user_id').notNull().references(()=> user.id, { onDelete: 'cascade' }), - activeOrganizationId: text('active_organization_id') - }); +export const session = pgTable('session', { + id: text('id').primaryKey(), + expiresAt: timestamp('expires_at').notNull(), + token: text('token').notNull().unique(), + createdAt: timestamp('created_at').notNull(), + updatedAt: timestamp('updated_at').notNull(), + ipAddress: text('ip_address'), + userAgent: text('user_agent'), + userId: text('user_id') + .notNull() + .references(() => user.id, { onDelete: 'cascade' }), + activeOrganizationId: text('active_organization_id'), +}) -export const account = pgTable("account", { - id: text('id').primaryKey(), - accountId: text('account_id').notNull(), - providerId: text('provider_id').notNull(), - userId: text('user_id').notNull().references(()=> user.id, { onDelete: 'cascade' }), - accessToken: text('access_token'), - refreshToken: text('refresh_token'), - idToken: text('id_token'), - accessTokenExpiresAt: timestamp('access_token_expires_at'), - refreshTokenExpiresAt: timestamp('refresh_token_expires_at'), - scope: text('scope'), - password: text('password'), - createdAt: timestamp('created_at').notNull(), - updatedAt: timestamp('updated_at').notNull() - }); +export const account = pgTable('account', { + id: text('id').primaryKey(), + accountId: text('account_id').notNull(), + providerId: text('provider_id').notNull(), + userId: text('user_id') + .notNull() + .references(() => user.id, { onDelete: 'cascade' }), + accessToken: text('access_token'), + refreshToken: text('refresh_token'), + idToken: text('id_token'), + accessTokenExpiresAt: timestamp('access_token_expires_at'), + refreshTokenExpiresAt: timestamp('refresh_token_expires_at'), + scope: text('scope'), + password: text('password'), + createdAt: timestamp('created_at').notNull(), + updatedAt: timestamp('updated_at').notNull(), +}) -export const verification = pgTable("verification", { - id: text('id').primaryKey(), - identifier: text('identifier').notNull(), - value: text('value').notNull(), - expiresAt: timestamp('expires_at').notNull(), - createdAt: timestamp('created_at').$defaultFn(() => /* @__PURE__ */ new Date()), - updatedAt: timestamp('updated_at').$defaultFn(() => /* @__PURE__ */ new Date()) - }); +export const verification = pgTable('verification', { + id: text('id').primaryKey(), + identifier: text('identifier').notNull(), + value: text('value').notNull(), + expiresAt: timestamp('expires_at').notNull(), + createdAt: timestamp('created_at').$defaultFn(() => /* @__PURE__ */ new Date()), + updatedAt: timestamp('updated_at').$defaultFn(() => /* @__PURE__ */ new Date()), +}) -export const organization = pgTable("organization", { - id: text('id').primaryKey(), - name: text('name').notNull(), - slug: text('slug').unique(), - logo: text('logo'), - createdAt: timestamp('created_at').notNull(), - metadata: text('metadata') - }); +export const organization = pgTable('organization', { + id: text('id').primaryKey(), + name: text('name').notNull(), + slug: text('slug').unique(), + logo: text('logo'), + createdAt: timestamp('created_at').notNull(), + metadata: text('metadata'), +}) -export const member = pgTable("member", { - id: text('id').primaryKey(), - organizationId: text('organization_id').notNull().references(()=> organization.id, { onDelete: 'cascade' }), - userId: text('user_id').notNull().references(()=> user.id, { onDelete: 'cascade' }), - role: text('role').default("member").notNull(), - createdAt: timestamp('created_at').notNull() - }); +export const member = pgTable('member', { + id: text('id').primaryKey(), + organizationId: text('organization_id') + .notNull() + .references(() => organization.id, { onDelete: 'cascade' }), + userId: text('user_id') + .notNull() + .references(() => user.id, { onDelete: 'cascade' }), + role: text('role').default('member').notNull(), + createdAt: timestamp('created_at').notNull(), +}) -export const invitation = pgTable("invitation", { - id: text('id').primaryKey(), - organizationId: text('organization_id').notNull().references(()=> organization.id, { onDelete: 'cascade' }), - email: text('email').notNull(), - role: text('role'), - status: text('status').default("pending").notNull(), - expiresAt: timestamp('expires_at').notNull(), - inviterId: text('inviter_id').notNull().references(()=> user.id, { onDelete: 'cascade' }) - }); +export const invitation = pgTable('invitation', { + id: text('id').primaryKey(), + organizationId: text('organization_id') + .notNull() + .references(() => organization.id, { onDelete: 'cascade' }), + email: text('email').notNull(), + role: text('role'), + status: text('status').default('pending').notNull(), + expiresAt: timestamp('expires_at').notNull(), + inviterId: text('inviter_id') + .notNull() + .references(() => user.id, { onDelete: 'cascade' }), +}) diff --git a/components.json b/components.json index df9560a..972fb2c 100644 --- a/components.json +++ b/components.json @@ -17,4 +17,4 @@ "lib": "@/lib" }, "iconLibrary": "lucide" -} \ No newline at end of file +} diff --git a/components/settings/SettingsAppearance.vue b/components/settings/SettingsAppearance.vue index 3508fac..84f9eea 100644 --- a/components/settings/SettingsAppearance.vue +++ b/components/settings/SettingsAppearance.vue @@ -9,73 +9,78 @@

Theme

- - -
- +
@@ -91,9 +96,7 @@ Always use dark mode regardless of system preference. - - Loading theme preferences... - + Loading theme preferences...

@@ -110,13 +113,13 @@ export default { data() { return { isClient: false, - colorMode: null + colorMode: null, } }, computed: { currentTheme() { return this.colorMode?.preference || 'system' - } + }, }, mounted() { this.isClient = true @@ -127,7 +130,7 @@ export default { if (this.colorMode) { this.colorMode.preference = mode } - } - } + }, + }, } - \ No newline at end of file + diff --git a/components/settings/SettingsBilling.vue b/components/settings/SettingsBilling.vue index 1932e4f..6e2e261 100644 --- a/components/settings/SettingsBilling.vue +++ b/components/settings/SettingsBilling.vue @@ -26,9 +26,7 @@
•••• •••• •••• 4242 - + @@ -38,6 +36,6 @@ \ No newline at end of file + diff --git a/components/settings/SettingsNotifications.vue b/components/settings/SettingsNotifications.vue index 1238410..e21b7e6 100644 --- a/components/settings/SettingsNotifications.vue +++ b/components/settings/SettingsNotifications.vue @@ -12,19 +12,23 @@

Receive email updates about project activities