├── .github └── ISSUE_TEMPLATE │ ├── register.yml │ └── registro-hackathon-vercel.md ├── .gitignore ├── README.md └── ejemplos ├── xx-ai-review-summary ├── LICENSE ├── README.md ├── app │ ├── [gameId] │ │ └── page.tsx │ ├── favicon.ico │ ├── globals.css │ ├── layout.tsx │ └── page.tsx ├── components.json ├── components │ ├── ai-review-summary.tsx │ ├── reviews.tsx │ ├── score.tsx │ └── ui │ │ ├── avatar.tsx │ │ ├── card.tsx │ │ └── separator.tsx ├── lib │ ├── ai-summary.ts │ ├── data.ts │ ├── types.ts │ └── utils.ts ├── next-env.d.ts ├── next.config.mjs ├── package.json ├── pnpm-lock.yaml ├── postcss.config.js ├── public │ ├── next.svg │ ├── placeholder-user.jpg │ └── vercel.svg ├── tailwind.config.ts └── tsconfig.json └── xx-chat-node ├── .gitignore ├── README.md ├── chatgpt.js ├── index.ts ├── package.json └── pnpm-lock.yaml /.github/ISSUE_TEMPLATE/register.yml: -------------------------------------------------------------------------------- 1 | name: "✅ Registra tu participación en la hackathon" 2 | description: "Incluye toda la información de tu participación" 3 | title: "[Participación]: " 4 | labels: ["registro"] 5 | body: 6 | - type: markdown 7 | attributes: 8 | value: "## Pre-requisitos" 9 | - type: checkboxes 10 | id: pre-requisitos 11 | attributes: 12 | label: Señala los requisitos cumplidos 13 | description: | 14 | Asegúrate de cumplir estos requisitos antes de registrarte 15 | options: 16 | - label: Mi aplicación usa Vercel SDK AI de alguna forma 17 | required: true 18 | - label: | 19 | Mi aplicación está desplegada y funciona 20 | required: true 21 | - type: markdown 22 | attributes: 23 | value: "## Información" 24 | - type: input 25 | id: nombre-equipo 26 | attributes: 27 | label: Escribe tu nombre o el del equipo 28 | placeholder: midudev 29 | validations: 30 | required: true 31 | - type: input 32 | id: nombre-proyecto 33 | attributes: 34 | label: Nombre del Proyecto 35 | placeholder: Mi impresionante proyecto 36 | validations: 37 | required: true 38 | - type: textarea 39 | id: descripcion-proyecto 40 | attributes: 41 | label: Descripción del Proyecto 42 | description: Breve descripción de lo que hace tu proyecto 43 | placeholder: Mi proyecto te permite recuperar el ALT de las imágenes... 44 | validations: 45 | required: true 46 | - type: input 47 | id: repositorio-codigo 48 | attributes: 49 | label: Repositorio de Código 50 | description: Enlace al repositorio del proyecto (GitHub, GitLab, etc.) 51 | placeholder: https://github.com/tu-proyecto 52 | validations: 53 | required: true 54 | - type: input 55 | id: demostracion-vivo 56 | attributes: 57 | label: Proyecto desplegado 58 | description: Enlace a la demostración del proyecto, si aplica 59 | placeholder: https://tu-demostracion.com 60 | - type: markdown 61 | attributes: 62 | value: "## Extra" 63 | - type: textarea 64 | id: instrucciones-configuracion 65 | attributes: 66 | label: Instrucciones de Configuración 67 | description: Pasos para configurar y ejecutar el proyecto 68 | placeholder: "Extensión de Chrome. Instálala siguiendo el README y entra en una página, luego pulsa el icono para que funcione." -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/registro-hackathon-vercel.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | .next 4 | .env.local 5 | .env -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![Issues][issues-badge]][issues-url] 2 | 3 | ![Vercel AI](https://github.com/vercel/ai/blob/main/assets/hero.gif?raw=true) 4 | 5 |
6 | Tabla de contenido 7 | 8 | - [Cómo participar en la Hackatón](#cómo-participar-en-la-hackatón) 9 | - [¿Qué es una Hackatón?](#qué-es-una-hackatón) 10 | - [🎁 Premios de la Hackatón](#-premios-de-la-hackatón) 11 | - [Sorteo entre los que participan](#sorteo-entre-los-que-participan) 12 | - [Fechas](#fechas) 13 | - [Templates disponibles para empezar](#templates-disponibles-para-empezar) 14 | - [💬 Preguntas frecuentes](#-preguntas-frecuentes) 15 |
16 | 17 | # Cómo participar en la Hackatón 18 | 19 | Para participar debes crear un proyecto que use [Vercel SDK AI](https://sdk.vercel.ai/docs/introduction). 20 | 21 | **Puedes usar el framework que quieras** y desplegar tu proyecto donde prefieras. 22 | 23 | Una vez tengas el **proyecto listo**, debes introducir la información de tu proyecto aquí: 24 | 25 | [Regístrate aquí](https://github.com/midudev/hackaton-vercel-2024/issues/new?assignees=&labels=registro&projects=&template=register.yml&title=%5BParticipaci%C3%B3n%5D%3A+%3Cinserta-aqui-tu-nick-o-nombre%3E) 26 | 27 | ## ¿Qué es una Hackatón? 28 | 29 | Una hackaton es una actividad de desarrollo de software donde los participantes trabajan en solitario o en grupo para resolver un problema o desafío específico en un tiempo determinado. 30 | 31 | **La idea** es que los participantes **aprendan** a trabajar en equipo y a **resolver** problemas de manera creativa y colaborativa. 32 | 33 | ## 🎁 Premios de la Hackatón 34 | 35 | - 🥇 $500 + Vercel Credits + Swag Vercel Box 36 | - 🥈 $250 + Vercel Credits + Swag Vercel Box 37 | - 🥉 $100 + Vercel Credits + Swag Vercel Box 38 | - 🎖️ Vercel Credits + Swag Vercel Box 39 | - 🎖️ Vercel Credits + Swag Vercel Box 40 | 41 | ![Fh9ImwIWYAMdkM-](https://github.com/midudev/hackaton-vercel-2024/assets/1561955/0590602a-20c9-4812-8215-857f4ad02ebb) 42 | 43 | > [!IMPORTANT] 44 | > El pago de la hackatón se hace por PayPal o similares. 45 | 46 | # Sorteo entre los que participan 47 | 48 | - [3x Libro de GitHub](https://leanpub.com/aprendiendo-git) 49 | 50 | # Fechas 51 | 52 | - 📅 **Fecha límite de inscripción:** 53 | 6 de Agosto de 2024 al terminar el [directo](https://www.twitch.tv/midudev) 54 | 55 | - 🗳️ **Votaciones finales en directo:** 56 | [Stream](https://www.twitch.tv/midudev) del 13 de Agosto de 2024 57 | 58 | ## Templates disponibles para empezar 59 | 60 | [Templates disponibles](https://sdk.vercel.ai/docs/introduction#templates) 61 | 62 | ## 💬 Preguntas frecuentes 63 | 64 |
65 | ¿Cómo puedo recibir ayuda? 66 | 67 | Puedes unirte a nuestro canal de [Discord](https://discord.gg/midudev) para recibir ayuda. 68 | 69 |
70 | 71 |
72 | ¿Tengo que usar React? 73 | 74 | No, puedes usar el framework que prefieras. Siempre y cuando puedas usar Vercel SDK AI en alguna parte de tu proyecto. 75 |
76 | 77 |
78 | ¿Tengo que usar Vercel? 79 | 80 | No, puedes desplegar tu aplicación donde prefieras. 81 |
82 | 83 |
84 | ¿Tengo que usar una AI de pago para participar? 85 | 86 | Sí, pero puedes hacer que tu proyecto sólo funcione al informar con una API KEY por parte del usuario. Sólo asegúrate que lo especifiques en el README de tu proyecto y al introducir tu participación. 87 | 88 |
89 | 90 | [issues-url]: https://github.com/midudev/hackaton-vercel-2024/issues 91 | [issues-badge]: https://img.shields.io/github/issues/midudev/hackaton-vercel-2024.svg?style=for-the-badge 92 | -------------------------------------------------------------------------------- /ejemplos/xx-ai-review-summary/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright 2024 Vercel Inc 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 4 | 5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 6 | 7 | THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 8 | -------------------------------------------------------------------------------- /ejemplos/xx-ai-review-summary/README.md: -------------------------------------------------------------------------------- 1 | This is a demo of AI generated summaries of customer reviews for an e-commerce storefront. 2 | 3 | The demo takes a set of customer reviews, and uses an LLM to create summaries of those reviews. 4 | It then displays the summary and the reviews in a demo UI. 5 | 6 | The benefit of such an AI summary is that the user can get a quick overview of the sentiment 7 | of reviewers of the product without reading them all. 8 | 9 | [A deployed version can be found here.](https://review-summary.vercel.app/) 10 | 11 | [Install the template on Vercel](https://vercel.com/templates/next.js/customer-reviews-ai-summary-nextjs-vercel) 12 | 13 | ## Getting Started 14 | 15 | First, run the development server: 16 | 17 | ```bash 18 | pnpm dev 19 | ``` 20 | 21 | ## AI key 22 | 23 | This demo requires an API key for Perplexity's inference API. This can be installed via 24 | [Vercel's AI Marketplace](https://vercel.com/docs/integrations/ai). 25 | 26 | Any other LLM model can be connected via minimal changes to `lib/ai-summary.ts` through [Vercel's AI SDK](https://sdk.vercel.ai/docs). 27 | -------------------------------------------------------------------------------- /ejemplos/xx-ai-review-summary/app/[gameId]/page.tsx: -------------------------------------------------------------------------------- 1 | import { Reviews } from "@/components/reviews"; 2 | import { getGame, games } from "@/lib/data"; 3 | 4 | export default async function GamePage({ 5 | params: { gameId }, 6 | }: { 7 | params: { gameId: string }; 8 | }) { 9 | const game = await getGame(gameId); 10 | 11 | return ; 12 | } 13 | 14 | export async function generateStaticParams() { 15 | const gameIds = Object.keys(games); 16 | 17 | return gameIds.map((id) => ({ 18 | gameId: id, 19 | })); 20 | } 21 | -------------------------------------------------------------------------------- /ejemplos/xx-ai-review-summary/app/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/hackaton-vercel-2024/8e867addcc41a983eb37809682400a38ac0a842a/ejemplos/xx-ai-review-summary/app/favicon.ico -------------------------------------------------------------------------------- /ejemplos/xx-ai-review-summary/app/globals.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | 5 | :root { 6 | --foreground-rgb: 0, 0, 0; 7 | --background-start-rgb: 214, 219, 220; 8 | --background-end-rgb: 255, 255, 255; 9 | } 10 | 11 | body { 12 | color: rgb(var(--foreground-rgb)); 13 | } 14 | 15 | @layer utilities { 16 | .text-balance { 17 | text-wrap: balance; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /ejemplos/xx-ai-review-summary/app/layout.tsx: -------------------------------------------------------------------------------- 1 | import type { Metadata } from "next"; 2 | import { Inter } from "next/font/google"; 3 | import "./globals.css"; 4 | import Link from "next/link"; 5 | import { games } from "@/lib/data"; 6 | 7 | const inter = Inter({ subsets: ["latin"] }); 8 | 9 | export const metadata: Metadata = { 10 | title: "Review summary", 11 | description: "AI summaries of user reviews for videogames", 12 | }; 13 | 14 | export default function RootLayout({ 15 | children, 16 | }: Readonly<{ 17 | children: React.ReactNode; 18 | }>) { 19 | return ( 20 | 21 | 22 | 33 |
{children}
34 | 35 | 36 | ); 37 | } 38 | -------------------------------------------------------------------------------- /ejemplos/xx-ai-review-summary/app/page.tsx: -------------------------------------------------------------------------------- 1 | import { Reviews } from "@/components/reviews"; 2 | import { getGame } from "@/lib/data"; 3 | 4 | export default async function Home() { 5 | const game = await getGame("the-last-of-us-part-ii-remastered"); 6 | 7 | return ; 8 | } 9 | -------------------------------------------------------------------------------- /ejemplos/xx-ai-review-summary/components.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://ui.shadcn.com/schema.json", 3 | "style": "default", 4 | "rsc": true, 5 | "tsx": true, 6 | "tailwind": { 7 | "config": "tailwind.config.ts", 8 | "css": "app/globals.css", 9 | "baseColor": "gray", 10 | "cssVariables": false 11 | }, 12 | "aliases": { 13 | "utils": "@/lib/utils", 14 | "components": "@/components" 15 | } 16 | } -------------------------------------------------------------------------------- /ejemplos/xx-ai-review-summary/components/ai-review-summary.tsx: -------------------------------------------------------------------------------- 1 | import { 2 | CardTitle, 3 | CardDescription, 4 | CardHeader, 5 | CardContent, 6 | Card, 7 | } from "@/components/ui/card"; 8 | import { Game } from "@/lib/types"; 9 | import { summarizeReviews } from "@/lib/ai-summary"; 10 | 11 | import { Score } from "./score"; 12 | 13 | export async function AIReviewSummary({ game }: { game: Game }) { 14 | if (!game) return null; 15 | 16 | const summary = await summarizeReviews(game.id); 17 | 18 | return ( 19 | 20 | 21 | 22 | 23 |
24 | {game.name} 25 | 26 | Basado en {game?.reviews?.length} valoraciones de usuarios 27 | 28 |
29 | 30 | 31 |
32 | 33 | 34 |

35 | {summary} 36 |

37 |
38 | 39 | {game.name} 40 |
41 | ); 42 | } 43 | -------------------------------------------------------------------------------- /ejemplos/xx-ai-review-summary/components/reviews.tsx: -------------------------------------------------------------------------------- 1 | import { AvatarImage, AvatarFallback, Avatar } from "@/components/ui/avatar"; 2 | import { Game, Review as ReviewType } from "@/lib/types"; 3 | import ms from "ms"; 4 | import { Score } from "./score"; 5 | import { AIReviewSummary } from "./ai-review-summary"; 6 | 7 | export async function Reviews({ game }: { game: Game }) { 8 | return ( 9 |
10 | 11 | {game?.reviews?.map((review) => ( 12 |
13 | 14 |
15 | ))} 16 |
17 | ); 18 | } 19 | 20 | export function Review({ review }: { review: ReviewType }) { 21 | const date = new Date(review.date); 22 | 23 | return ( 24 |
25 | 26 | 27 | CN 28 | 29 |
30 |
31 |
32 |

{review.author}

33 | 39 |
40 |
41 | 42 |
43 |
44 |
45 |

{review.quote}

46 |
47 |
48 |
49 | ); 50 | } 51 | 52 | /** 53 | * You probably want to wrap the parent element of this component with `suppressHydrationWarning` 54 | */ 55 | const timeAgo = (date: Date, suffix = true) => { 56 | if (Date.now() - date.getTime() < 1000) { 57 | return "Ahora"; 58 | } 59 | 60 | return `hace ${ms(Date.now() - date.getTime(), { long: true })}` 61 | }; 62 | -------------------------------------------------------------------------------- /ejemplos/xx-ai-review-summary/components/score.tsx: -------------------------------------------------------------------------------- 1 | export function Score({ rating, maxScore = 100 }: { rating: number, maxScore?: number }) { 2 | 3 | const getBackgroundColor = (score: number) => { 4 | const percentage = (score / maxScore) * 100; 5 | if (percentage <= 40) return 'bg-red-500'; 6 | if (percentage <= 60) return 'bg-yellow-500'; 7 | return 'bg-green-500'; 8 | }; 9 | 10 | return ( 11 |
12 | {rating} 13 |
14 | ); 15 | } -------------------------------------------------------------------------------- /ejemplos/xx-ai-review-summary/components/ui/avatar.tsx: -------------------------------------------------------------------------------- 1 | "use client" 2 | 3 | import * as React from "react" 4 | import * as AvatarPrimitive from "@radix-ui/react-avatar" 5 | 6 | import { cn } from "@/lib/utils" 7 | 8 | const Avatar = React.forwardRef< 9 | React.ElementRef, 10 | React.ComponentPropsWithoutRef 11 | >(({ className, ...props }, ref) => ( 12 | 20 | )) 21 | Avatar.displayName = AvatarPrimitive.Root.displayName 22 | 23 | const AvatarImage = React.forwardRef< 24 | React.ElementRef, 25 | React.ComponentPropsWithoutRef 26 | >(({ className, ...props }, ref) => ( 27 | 32 | )) 33 | AvatarImage.displayName = AvatarPrimitive.Image.displayName 34 | 35 | const AvatarFallback = React.forwardRef< 36 | React.ElementRef, 37 | React.ComponentPropsWithoutRef 38 | >(({ className, ...props }, ref) => ( 39 | 47 | )) 48 | AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName 49 | 50 | export { Avatar, AvatarImage, AvatarFallback } 51 | -------------------------------------------------------------------------------- /ejemplos/xx-ai-review-summary/components/ui/card.tsx: -------------------------------------------------------------------------------- 1 | import * as React from "react" 2 | 3 | import { cn } from "@/lib/utils" 4 | 5 | const Card = React.forwardRef< 6 | HTMLDivElement, 7 | React.HTMLAttributes 8 | >(({ className, ...props }, ref) => ( 9 |
17 | )) 18 | Card.displayName = "Card" 19 | 20 | const CardHeader = React.forwardRef< 21 | HTMLDivElement, 22 | React.HTMLAttributes 23 | >(({ className, ...props }, ref) => ( 24 |
29 | )) 30 | CardHeader.displayName = "CardHeader" 31 | 32 | const CardTitle = React.forwardRef< 33 | HTMLParagraphElement, 34 | React.HTMLAttributes 35 | >(({ className, ...props }, ref) => ( 36 |

44 | )) 45 | CardTitle.displayName = "CardTitle" 46 | 47 | const CardDescription = React.forwardRef< 48 | HTMLParagraphElement, 49 | React.HTMLAttributes 50 | >(({ className, ...props }, ref) => ( 51 |

56 | )) 57 | CardDescription.displayName = "CardDescription" 58 | 59 | const CardContent = React.forwardRef< 60 | HTMLDivElement, 61 | React.HTMLAttributes 62 | >(({ className, ...props }, ref) => ( 63 |

64 | )) 65 | CardContent.displayName = "CardContent" 66 | 67 | const CardFooter = React.forwardRef< 68 | HTMLDivElement, 69 | React.HTMLAttributes 70 | >(({ className, ...props }, ref) => ( 71 |
76 | )) 77 | CardFooter.displayName = "CardFooter" 78 | 79 | export { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent } 80 | -------------------------------------------------------------------------------- /ejemplos/xx-ai-review-summary/components/ui/separator.tsx: -------------------------------------------------------------------------------- 1 | "use client" 2 | 3 | import * as React from "react" 4 | import * as SeparatorPrimitive from "@radix-ui/react-separator" 5 | 6 | import { cn } from "@/lib/utils" 7 | 8 | const Separator = React.forwardRef< 9 | React.ElementRef, 10 | React.ComponentPropsWithoutRef 11 | >( 12 | ( 13 | { className, orientation = "horizontal", decorative = true, ...props }, 14 | ref 15 | ) => ( 16 | 27 | ) 28 | ) 29 | Separator.displayName = SeparatorPrimitive.Root.displayName 30 | 31 | export { Separator } 32 | -------------------------------------------------------------------------------- /ejemplos/xx-ai-review-summary/lib/ai-summary.ts: -------------------------------------------------------------------------------- 1 | import OpenAI from "openai"; 2 | import { GameId, Review } from "./types"; 3 | import { OpenAIStream, StreamingTextResponse } from 'ai' // Vercel AI SDK *** 4 | 5 | if (!process.env.PERPLEXITY_API_KEY) { 6 | throw new Error( 7 | "PERPLEXITY_API_KEY environment variable is required. You can get this via https://vercel.com/docs/integrations/ai" 8 | ); 9 | } 10 | 11 | const perplexity = new OpenAI({ 12 | apiKey: process.env.PERPLEXITY_API_KEY || "", 13 | baseURL: "https://api.perplexity.ai", 14 | }); 15 | 16 | function buildPrompt(prompt: string): [{ role: "user"; content: string }] { 17 | return [ 18 | { 19 | role: "user", 20 | content: prompt, 21 | }, 22 | ]; 23 | } 24 | 25 | 26 | 27 | export async function summarizeReviews(gameId: GameId) { 28 | const metaCriticURL = `https://internal-prod.apigee.fandom.net/v1/xapi/composer/metacritic/pages/games-user-reviews/${gameId}/platform/playstation-5/web?filter=all&sort=date&apiKey=1MOZgmNFxvmljaQR1X9KAij9Mo4xAY3u` 29 | 30 | const res = await fetch(metaCriticURL); 31 | const data = await res.json(); 32 | 33 | const { components } = data 34 | const [rawInfo, _, rawReviews] = components 35 | 36 | const { data: { item: { criticScoreSummary, title } } } = rawInfo 37 | const { score } = criticScoreSummary 38 | 39 | const { data: { items } } = rawReviews 40 | 41 | const prompt = `Escribe un resumen de las valoraciones de usuarios del videojuego ${title} en español. La puntuación es ${score} de 100. 42 | 43 | Usa este tono según la puntuación del videojuego: 44 | - De 0 a 40: negativo 45 | - De 41 a 60: neutral 46 | - De 61 a 80: positivo 47 | - De 81 a 100: muy positivo 48 | 49 | Recibirás una lista de valoraciones de usuarios en diferentes idiomas pero tu resumen debe estar en español. 50 | Tu objetivo es resaltar los temas más comunes y las emociones expresaddas por los usuarios. 51 | Si hay varios temas, intenta capturar los más importantes. 52 | Divídela en 4 párrafos cortos. Máximo 30 palabras en total. 53 | No vuelvas a repetir la puntuación. 54 | No hagas referencias a puntuaciones concretas ni a la fecha de la valoración. 55 | 56 | Estas son las valoraciones de los usuarios: 57 | ${items.map((item: Review) => item.quote).join('\n')} 58 | ` 59 | const query = { 60 | model: 'llama-3-sonar-large-32k-chat', 61 | stream: true, 62 | messages: buildPrompt(prompt), 63 | max_tokens: 1000, 64 | temperature: 0.75, 65 | frequency_penalty: 1, 66 | } as const 67 | 68 | const response = await perplexity.chat.completions.create(query) 69 | 70 | const stream = OpenAIStream(response) 71 | 72 | const streamingResponse = new StreamingTextResponse(stream) 73 | return await streamingResponse.text() 74 | } 75 | -------------------------------------------------------------------------------- /ejemplos/xx-ai-review-summary/lib/data.ts: -------------------------------------------------------------------------------- 1 | import { Game } from "./types"; 2 | 3 | export async function getGame(id: string) { 4 | const metaCriticURL = `https://internal-prod.apigee.fandom.net/v1/xapi/composer/metacritic/pages/games-user-reviews/${id}/platform/playstation-5/web?filter=all&sort=date&apiKey=1MOZgmNFxvmljaQR1X9KAij9Mo4xAY3u` 5 | 6 | const response = await fetch(metaCriticURL); 7 | const data = await response.json(); 8 | 9 | // const rawInfo = data[0] 10 | // const rawReviews = data[2] 11 | const { components } = data 12 | const [rawInfo, _, rawReviews] = components 13 | 14 | const { data: { item: { criticScoreSummary, title, images } } } = rawInfo 15 | const { score } = criticScoreSummary 16 | 17 | const { bucketPath, bucketType } = images[0] 18 | const img = `https://www.metacritic.com/a/img/${bucketType}${bucketPath}` 19 | 20 | const { data: { items } } = rawReviews 21 | 22 | return { id, name: title, img, score, reviews: items } 23 | 24 | } 25 | 26 | export const games = { 27 | 'the-last-of-us-part-ii-remastered': 'The Last of Us', 28 | 'the-callisto-protocol': 'The Callisto Protocol', 29 | 'the-lord-of-the-rings-gollum': 'The Lord of the Rings: Gollum' 30 | } 31 | -------------------------------------------------------------------------------- /ejemplos/xx-ai-review-summary/lib/types.ts: -------------------------------------------------------------------------------- 1 | export interface Review { 2 | id: string; 3 | score: number 4 | author: string; 5 | quote: string; 6 | date: string; 7 | } 8 | 9 | export type GameId = string 10 | 11 | export interface Game { 12 | id: GameId; 13 | name: string; 14 | reviews: Review[]; 15 | score: number 16 | img: string; 17 | } 18 | -------------------------------------------------------------------------------- /ejemplos/xx-ai-review-summary/lib/utils.ts: -------------------------------------------------------------------------------- 1 | import { type ClassValue, clsx } from "clsx" 2 | import { twMerge } from "tailwind-merge" 3 | 4 | export function cn(...inputs: ClassValue[]) { 5 | return twMerge(clsx(inputs)) 6 | } 7 | -------------------------------------------------------------------------------- /ejemplos/xx-ai-review-summary/next-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | 4 | // NOTE: This file should not be edited 5 | // see https://nextjs.org/docs/basic-features/typescript for more information. 6 | -------------------------------------------------------------------------------- /ejemplos/xx-ai-review-summary/next.config.mjs: -------------------------------------------------------------------------------- 1 | /** @type {import('next').NextConfig} */ 2 | const nextConfig = {}; 3 | 4 | export default nextConfig; 5 | -------------------------------------------------------------------------------- /ejemplos/xx-ai-review-summary/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "review-summary", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "dev": "next dev", 7 | "build": "next build", 8 | "start": "next start", 9 | "lint": "next lint" 10 | }, 11 | "dependencies": { 12 | "@radix-ui/react-avatar": "^1.0.4", 13 | "@radix-ui/react-icons": "^1.3.0", 14 | "@radix-ui/react-separator": "^1.0.3", 15 | "@types/ms": "^0.7.34", 16 | "ai": "^2.2.35", 17 | "class-variance-authority": "^0.7.0", 18 | "clsx": "^2.1.0", 19 | "lucide-react": "^0.331.0", 20 | "ms": "^2.1.3", 21 | "next": "14.1.0", 22 | "openai": "^4.28.0", 23 | "react": "^18", 24 | "react-dom": "^18", 25 | "tailwind-merge": "^2.2.1", 26 | "tailwindcss-animate": "^1.0.7" 27 | }, 28 | "devDependencies": { 29 | "@types/node": "^20", 30 | "@types/react": "^18", 31 | "@types/react-dom": "^18", 32 | "autoprefixer": "^10.0.1", 33 | "postcss": "^8", 34 | "tailwindcss": "^3.3.0", 35 | "typescript": "^5" 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /ejemplos/xx-ai-review-summary/pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | dependencies: 11 | '@radix-ui/react-avatar': 12 | specifier: ^1.0.4 13 | version: 1.0.4(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) 14 | '@radix-ui/react-icons': 15 | specifier: ^1.3.0 16 | version: 1.3.0(react@18.2.0) 17 | '@radix-ui/react-separator': 18 | specifier: ^1.0.3 19 | version: 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) 20 | '@types/ms': 21 | specifier: ^0.7.34 22 | version: 0.7.34 23 | ai: 24 | specifier: ^2.2.35 25 | version: 2.2.35(react@18.2.0)(solid-js@1.8.15)(svelte@4.2.11)(vue@3.4.19) 26 | class-variance-authority: 27 | specifier: ^0.7.0 28 | version: 0.7.0 29 | clsx: 30 | specifier: ^2.1.0 31 | version: 2.1.0 32 | lucide-react: 33 | specifier: ^0.331.0 34 | version: 0.331.0(react@18.2.0) 35 | ms: 36 | specifier: ^2.1.3 37 | version: 2.1.3 38 | next: 39 | specifier: 14.1.0 40 | version: 14.1.0(react-dom@18.2.0)(react@18.2.0) 41 | openai: 42 | specifier: ^4.28.0 43 | version: 4.28.0 44 | react: 45 | specifier: ^18 46 | version: 18.2.0 47 | react-dom: 48 | specifier: ^18 49 | version: 18.2.0(react@18.2.0) 50 | tailwind-merge: 51 | specifier: ^2.2.1 52 | version: 2.2.1 53 | tailwindcss-animate: 54 | specifier: ^1.0.7 55 | version: 1.0.7(tailwindcss@3.4.1) 56 | devDependencies: 57 | '@types/node': 58 | specifier: ^20 59 | version: 20.11.19 60 | '@types/react': 61 | specifier: ^18 62 | version: 18.2.55 63 | '@types/react-dom': 64 | specifier: ^18 65 | version: 18.2.19 66 | autoprefixer: 67 | specifier: ^10.0.1 68 | version: 10.4.17(postcss@8.4.35) 69 | postcss: 70 | specifier: ^8 71 | version: 8.4.35 72 | tailwindcss: 73 | specifier: ^3.3.0 74 | version: 3.4.1 75 | typescript: 76 | specifier: ^5 77 | version: 5.3.3 78 | 79 | packages: 80 | 81 | '@alloc/quick-lru@5.2.0': 82 | resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} 83 | engines: {node: '>=10'} 84 | 85 | '@ampproject/remapping@2.2.1': 86 | resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} 87 | engines: {node: '>=6.0.0'} 88 | 89 | '@babel/helper-string-parser@7.23.4': 90 | resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} 91 | engines: {node: '>=6.9.0'} 92 | 93 | '@babel/helper-validator-identifier@7.22.20': 94 | resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} 95 | engines: {node: '>=6.9.0'} 96 | 97 | '@babel/parser@7.23.9': 98 | resolution: {integrity: sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==} 99 | engines: {node: '>=6.0.0'} 100 | hasBin: true 101 | 102 | '@babel/runtime@7.23.9': 103 | resolution: {integrity: sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==} 104 | engines: {node: '>=6.9.0'} 105 | 106 | '@babel/types@7.23.9': 107 | resolution: {integrity: sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==} 108 | engines: {node: '>=6.9.0'} 109 | 110 | '@isaacs/cliui@8.0.2': 111 | resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} 112 | engines: {node: '>=12'} 113 | 114 | '@jridgewell/gen-mapping@0.3.3': 115 | resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} 116 | engines: {node: '>=6.0.0'} 117 | 118 | '@jridgewell/resolve-uri@3.1.2': 119 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 120 | engines: {node: '>=6.0.0'} 121 | 122 | '@jridgewell/set-array@1.1.2': 123 | resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} 124 | engines: {node: '>=6.0.0'} 125 | 126 | '@jridgewell/sourcemap-codec@1.4.15': 127 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} 128 | 129 | '@jridgewell/trace-mapping@0.3.22': 130 | resolution: {integrity: sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==} 131 | 132 | '@next/env@14.1.0': 133 | resolution: {integrity: sha512-Py8zIo+02ht82brwwhTg36iogzFqGLPXlRGKQw5s+qP/kMNc4MAyDeEwBKDijk6zTIbegEgu8Qy7C1LboslQAw==} 134 | 135 | '@next/swc-darwin-arm64@14.1.0': 136 | resolution: {integrity: sha512-nUDn7TOGcIeyQni6lZHfzNoo9S0euXnu0jhsbMOmMJUBfgsnESdjN97kM7cBqQxZa8L/bM9om/S5/1dzCrW6wQ==} 137 | engines: {node: '>= 10'} 138 | cpu: [arm64] 139 | os: [darwin] 140 | 141 | '@next/swc-darwin-x64@14.1.0': 142 | resolution: {integrity: sha512-1jgudN5haWxiAl3O1ljUS2GfupPmcftu2RYJqZiMJmmbBT5M1XDffjUtRUzP4W3cBHsrvkfOFdQ71hAreNQP6g==} 143 | engines: {node: '>= 10'} 144 | cpu: [x64] 145 | os: [darwin] 146 | 147 | '@next/swc-linux-arm64-gnu@14.1.0': 148 | resolution: {integrity: sha512-RHo7Tcj+jllXUbK7xk2NyIDod3YcCPDZxj1WLIYxd709BQ7WuRYl3OWUNG+WUfqeQBds6kvZYlc42NJJTNi4tQ==} 149 | engines: {node: '>= 10'} 150 | cpu: [arm64] 151 | os: [linux] 152 | 153 | '@next/swc-linux-arm64-musl@14.1.0': 154 | resolution: {integrity: sha512-v6kP8sHYxjO8RwHmWMJSq7VZP2nYCkRVQ0qolh2l6xroe9QjbgV8siTbduED4u0hlk0+tjS6/Tuy4n5XCp+l6g==} 155 | engines: {node: '>= 10'} 156 | cpu: [arm64] 157 | os: [linux] 158 | 159 | '@next/swc-linux-x64-gnu@14.1.0': 160 | resolution: {integrity: sha512-zJ2pnoFYB1F4vmEVlb/eSe+VH679zT1VdXlZKX+pE66grOgjmKJHKacf82g/sWE4MQ4Rk2FMBCRnX+l6/TVYzQ==} 161 | engines: {node: '>= 10'} 162 | cpu: [x64] 163 | os: [linux] 164 | 165 | '@next/swc-linux-x64-musl@14.1.0': 166 | resolution: {integrity: sha512-rbaIYFt2X9YZBSbH/CwGAjbBG2/MrACCVu2X0+kSykHzHnYH5FjHxwXLkcoJ10cX0aWCEynpu+rP76x0914atg==} 167 | engines: {node: '>= 10'} 168 | cpu: [x64] 169 | os: [linux] 170 | 171 | '@next/swc-win32-arm64-msvc@14.1.0': 172 | resolution: {integrity: sha512-o1N5TsYc8f/HpGt39OUQpQ9AKIGApd3QLueu7hXk//2xq5Z9OxmV6sQfNp8C7qYmiOlHYODOGqNNa0e9jvchGQ==} 173 | engines: {node: '>= 10'} 174 | cpu: [arm64] 175 | os: [win32] 176 | 177 | '@next/swc-win32-ia32-msvc@14.1.0': 178 | resolution: {integrity: sha512-XXIuB1DBRCFwNO6EEzCTMHT5pauwaSj4SWs7CYnME57eaReAKBXCnkUE80p/pAZcewm7hs+vGvNqDPacEXHVkw==} 179 | engines: {node: '>= 10'} 180 | cpu: [ia32] 181 | os: [win32] 182 | 183 | '@next/swc-win32-x64-msvc@14.1.0': 184 | resolution: {integrity: sha512-9WEbVRRAqJ3YFVqEZIxUqkiO8l1nool1LmNxygr5HWF8AcSYsEpneUDhmjUVJEzO2A04+oPtZdombzzPPkTtgg==} 185 | engines: {node: '>= 10'} 186 | cpu: [x64] 187 | os: [win32] 188 | 189 | '@nodelib/fs.scandir@2.1.5': 190 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 191 | engines: {node: '>= 8'} 192 | 193 | '@nodelib/fs.stat@2.0.5': 194 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 195 | engines: {node: '>= 8'} 196 | 197 | '@nodelib/fs.walk@1.2.8': 198 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 199 | engines: {node: '>= 8'} 200 | 201 | '@pkgjs/parseargs@0.11.0': 202 | resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} 203 | engines: {node: '>=14'} 204 | 205 | '@radix-ui/react-avatar@1.0.4': 206 | resolution: {integrity: sha512-kVK2K7ZD3wwj3qhle0ElXhOjbezIgyl2hVvgwfIdexL3rN6zJmy5AqqIf+D31lxVppdzV8CjAfZ6PklkmInZLw==} 207 | peerDependencies: 208 | '@types/react': '*' 209 | '@types/react-dom': '*' 210 | react: ^16.8 || ^17.0 || ^18.0 211 | react-dom: ^16.8 || ^17.0 || ^18.0 212 | peerDependenciesMeta: 213 | '@types/react': 214 | optional: true 215 | '@types/react-dom': 216 | optional: true 217 | 218 | '@radix-ui/react-compose-refs@1.0.1': 219 | resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==} 220 | peerDependencies: 221 | '@types/react': '*' 222 | react: ^16.8 || ^17.0 || ^18.0 223 | peerDependenciesMeta: 224 | '@types/react': 225 | optional: true 226 | 227 | '@radix-ui/react-context@1.0.1': 228 | resolution: {integrity: sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==} 229 | peerDependencies: 230 | '@types/react': '*' 231 | react: ^16.8 || ^17.0 || ^18.0 232 | peerDependenciesMeta: 233 | '@types/react': 234 | optional: true 235 | 236 | '@radix-ui/react-icons@1.3.0': 237 | resolution: {integrity: sha512-jQxj/0LKgp+j9BiTXz3O3sgs26RNet2iLWmsPyRz2SIcR4q/4SbazXfnYwbAr+vLYKSfc7qxzyGQA1HLlYiuNw==} 238 | peerDependencies: 239 | react: ^16.x || ^17.x || ^18.x 240 | 241 | '@radix-ui/react-primitive@1.0.3': 242 | resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==} 243 | peerDependencies: 244 | '@types/react': '*' 245 | '@types/react-dom': '*' 246 | react: ^16.8 || ^17.0 || ^18.0 247 | react-dom: ^16.8 || ^17.0 || ^18.0 248 | peerDependenciesMeta: 249 | '@types/react': 250 | optional: true 251 | '@types/react-dom': 252 | optional: true 253 | 254 | '@radix-ui/react-separator@1.0.3': 255 | resolution: {integrity: sha512-itYmTy/kokS21aiV5+Z56MZB54KrhPgn6eHDKkFeOLR34HMN2s8PaN47qZZAGnvupcjxHaFZnW4pQEh0BvvVuw==} 256 | peerDependencies: 257 | '@types/react': '*' 258 | '@types/react-dom': '*' 259 | react: ^16.8 || ^17.0 || ^18.0 260 | react-dom: ^16.8 || ^17.0 || ^18.0 261 | peerDependenciesMeta: 262 | '@types/react': 263 | optional: true 264 | '@types/react-dom': 265 | optional: true 266 | 267 | '@radix-ui/react-slot@1.0.2': 268 | resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==} 269 | peerDependencies: 270 | '@types/react': '*' 271 | react: ^16.8 || ^17.0 || ^18.0 272 | peerDependenciesMeta: 273 | '@types/react': 274 | optional: true 275 | 276 | '@radix-ui/react-use-callback-ref@1.0.1': 277 | resolution: {integrity: sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==} 278 | peerDependencies: 279 | '@types/react': '*' 280 | react: ^16.8 || ^17.0 || ^18.0 281 | peerDependenciesMeta: 282 | '@types/react': 283 | optional: true 284 | 285 | '@radix-ui/react-use-layout-effect@1.0.1': 286 | resolution: {integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==} 287 | peerDependencies: 288 | '@types/react': '*' 289 | react: ^16.8 || ^17.0 || ^18.0 290 | peerDependenciesMeta: 291 | '@types/react': 292 | optional: true 293 | 294 | '@swc/helpers@0.5.2': 295 | resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==} 296 | 297 | '@types/estree@1.0.5': 298 | resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} 299 | 300 | '@types/ms@0.7.34': 301 | resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} 302 | 303 | '@types/node-fetch@2.6.11': 304 | resolution: {integrity: sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==} 305 | 306 | '@types/node@18.19.17': 307 | resolution: {integrity: sha512-SzyGKgwPzuWp2SHhlpXKzCX0pIOfcI4V2eF37nNBJOhwlegQ83omtVQ1XxZpDE06V/d6AQvfQdPfnw0tRC//Ng==} 308 | 309 | '@types/node@20.11.19': 310 | resolution: {integrity: sha512-7xMnVEcZFu0DikYjWOlRq7NTPETrm7teqUT2WkQjrTIkEgUyyGdWsj/Zg8bEJt5TNklzbPD1X3fqfsHw3SpapQ==} 311 | 312 | '@types/prop-types@15.7.11': 313 | resolution: {integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==} 314 | 315 | '@types/react-dom@18.2.19': 316 | resolution: {integrity: sha512-aZvQL6uUbIJpjZk4U8JZGbau9KDeAwMfmhyWorxgBkqDIEf6ROjRozcmPIicqsUwPUjbkDfHKgGee1Lq65APcA==} 317 | 318 | '@types/react@18.2.55': 319 | resolution: {integrity: sha512-Y2Tz5P4yz23brwm2d7jNon39qoAtMMmalOQv6+fEFt1mT+FcM3D841wDpoUvFXhaYenuROCy3FZYqdTjM7qVyA==} 320 | 321 | '@types/scheduler@0.16.8': 322 | resolution: {integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==} 323 | 324 | '@vue/compiler-core@3.4.19': 325 | resolution: {integrity: sha512-gj81785z0JNzRcU0Mq98E56e4ltO1yf8k5PQ+tV/7YHnbZkrM0fyFyuttnN8ngJZjbpofWE/m4qjKBiLl8Ju4w==} 326 | 327 | '@vue/compiler-dom@3.4.19': 328 | resolution: {integrity: sha512-vm6+cogWrshjqEHTzIDCp72DKtea8Ry/QVpQRYoyTIg9k7QZDX6D8+HGURjtmatfgM8xgCFtJJaOlCaRYRK3QA==} 329 | 330 | '@vue/compiler-sfc@3.4.19': 331 | resolution: {integrity: sha512-LQ3U4SN0DlvV0xhr1lUsgLCYlwQfUfetyPxkKYu7dkfvx7g3ojrGAkw0AERLOKYXuAGnqFsEuytkdcComei3Yg==} 332 | 333 | '@vue/compiler-ssr@3.4.19': 334 | resolution: {integrity: sha512-P0PLKC4+u4OMJ8sinba/5Z/iDT84uMRRlrWzadgLA69opCpI1gG4N55qDSC+dedwq2fJtzmGald05LWR5TFfLw==} 335 | 336 | '@vue/reactivity@3.4.19': 337 | resolution: {integrity: sha512-+VcwrQvLZgEclGZRHx4O2XhyEEcKaBi50WbxdVItEezUf4fqRh838Ix6amWTdX0CNb/b6t3Gkz3eOebfcSt+UA==} 338 | 339 | '@vue/runtime-core@3.4.19': 340 | resolution: {integrity: sha512-/Z3tFwOrerJB/oyutmJGoYbuoadphDcJAd5jOuJE86THNZji9pYjZroQ2NFsZkTxOq0GJbb+s2kxTYToDiyZzw==} 341 | 342 | '@vue/runtime-dom@3.4.19': 343 | resolution: {integrity: sha512-IyZzIDqfNCF0OyZOauL+F4yzjMPN2rPd8nhqPP2N1lBn3kYqJpPHHru+83Rkvo2lHz5mW+rEeIMEF9qY3PB94g==} 344 | 345 | '@vue/server-renderer@3.4.19': 346 | resolution: {integrity: sha512-eAj2p0c429RZyyhtMRnttjcSToch+kTWxFPHlzGMkR28ZbF1PDlTcmGmlDxccBuqNd9iOQ7xPRPAGgPVj+YpQw==} 347 | peerDependencies: 348 | vue: 3.4.19 349 | 350 | '@vue/shared@3.4.19': 351 | resolution: {integrity: sha512-/KliRRHMF6LoiThEy+4c1Z4KB/gbPrGjWwJR+crg2otgrf/egKzRaCPvJ51S5oetgsgXLfc4Rm5ZgrKHZrtMSw==} 352 | 353 | abort-controller@3.0.0: 354 | resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} 355 | engines: {node: '>=6.5'} 356 | 357 | acorn@8.11.3: 358 | resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} 359 | engines: {node: '>=0.4.0'} 360 | hasBin: true 361 | 362 | agentkeepalive@4.5.0: 363 | resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} 364 | engines: {node: '>= 8.0.0'} 365 | 366 | ai@2.2.35: 367 | resolution: {integrity: sha512-YzR56VAMjqvGIVzMUFwH7jjo7K+Z3Old4nXcigiWsuqXnWQeQi3iPR8p2/xOZzmuZyMTOC+6jjbIJ8hoEOhfcQ==} 368 | engines: {node: '>=14.6'} 369 | peerDependencies: 370 | react: ^18.2.0 371 | solid-js: ^1.7.7 372 | svelte: ^3.0.0 || ^4.0.0 373 | vue: ^3.3.4 374 | peerDependenciesMeta: 375 | react: 376 | optional: true 377 | solid-js: 378 | optional: true 379 | svelte: 380 | optional: true 381 | vue: 382 | optional: true 383 | 384 | ansi-regex@5.0.1: 385 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 386 | engines: {node: '>=8'} 387 | 388 | ansi-regex@6.0.1: 389 | resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} 390 | engines: {node: '>=12'} 391 | 392 | ansi-styles@4.3.0: 393 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 394 | engines: {node: '>=8'} 395 | 396 | ansi-styles@6.2.1: 397 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} 398 | engines: {node: '>=12'} 399 | 400 | any-promise@1.3.0: 401 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} 402 | 403 | anymatch@3.1.3: 404 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 405 | engines: {node: '>= 8'} 406 | 407 | arg@5.0.2: 408 | resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} 409 | 410 | aria-query@5.3.0: 411 | resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} 412 | 413 | asynckit@0.4.0: 414 | resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} 415 | 416 | autoprefixer@10.4.17: 417 | resolution: {integrity: sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg==} 418 | engines: {node: ^10 || ^12 || >=14} 419 | hasBin: true 420 | peerDependencies: 421 | postcss: ^8.1.0 422 | 423 | axobject-query@4.0.0: 424 | resolution: {integrity: sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==} 425 | 426 | balanced-match@1.0.2: 427 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 428 | 429 | base-64@0.1.0: 430 | resolution: {integrity: sha512-Y5gU45svrR5tI2Vt/X9GPd3L0HNIKzGu202EjxrXMpuc2V2CiKgemAbUUsqYmZJvPtCXoUKjNZwBJzsNScUbXA==} 431 | 432 | binary-extensions@2.2.0: 433 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} 434 | engines: {node: '>=8'} 435 | 436 | brace-expansion@2.0.1: 437 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 438 | 439 | braces@3.0.2: 440 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 441 | engines: {node: '>=8'} 442 | 443 | browserslist@4.23.0: 444 | resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} 445 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 446 | hasBin: true 447 | 448 | busboy@1.6.0: 449 | resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} 450 | engines: {node: '>=10.16.0'} 451 | 452 | camelcase-css@2.0.1: 453 | resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} 454 | engines: {node: '>= 6'} 455 | 456 | caniuse-lite@1.0.30001587: 457 | resolution: {integrity: sha512-HMFNotUmLXn71BQxg8cijvqxnIAofforZOwGsxyXJ0qugTdspUF4sPSJ2vhgprHCB996tIDzEq1ubumPDV8ULA==} 458 | 459 | charenc@0.0.2: 460 | resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} 461 | 462 | chokidar@3.6.0: 463 | resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} 464 | engines: {node: '>= 8.10.0'} 465 | 466 | class-variance-authority@0.7.0: 467 | resolution: {integrity: sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==} 468 | 469 | client-only@0.0.1: 470 | resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} 471 | 472 | clsx@2.0.0: 473 | resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} 474 | engines: {node: '>=6'} 475 | 476 | clsx@2.1.0: 477 | resolution: {integrity: sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==} 478 | engines: {node: '>=6'} 479 | 480 | code-red@1.0.4: 481 | resolution: {integrity: sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==} 482 | 483 | color-convert@2.0.1: 484 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 485 | engines: {node: '>=7.0.0'} 486 | 487 | color-name@1.1.4: 488 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 489 | 490 | combined-stream@1.0.8: 491 | resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} 492 | engines: {node: '>= 0.8'} 493 | 494 | commander@4.1.1: 495 | resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} 496 | engines: {node: '>= 6'} 497 | 498 | cross-spawn@7.0.3: 499 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 500 | engines: {node: '>= 8'} 501 | 502 | crypt@0.0.2: 503 | resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==} 504 | 505 | css-tree@2.3.1: 506 | resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} 507 | engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} 508 | 509 | cssesc@3.0.0: 510 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} 511 | engines: {node: '>=4'} 512 | hasBin: true 513 | 514 | csstype@3.1.3: 515 | resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} 516 | 517 | delayed-stream@1.0.0: 518 | resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} 519 | engines: {node: '>=0.4.0'} 520 | 521 | dequal@2.0.3: 522 | resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} 523 | engines: {node: '>=6'} 524 | 525 | didyoumean@1.2.2: 526 | resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} 527 | 528 | digest-fetch@1.3.0: 529 | resolution: {integrity: sha512-CGJuv6iKNM7QyZlM2T3sPAdZWd/p9zQiRNS9G+9COUCwzWFTs0Xp8NF5iePx7wtvhDykReiRRrSeNb4oMmB8lA==} 530 | 531 | dlv@1.1.3: 532 | resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} 533 | 534 | eastasianwidth@0.2.0: 535 | resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} 536 | 537 | electron-to-chromium@1.4.672: 538 | resolution: {integrity: sha512-YYCy+goe3UqZqa3MOQCI5Mx/6HdBLzXL/mkbGCEWL3sP3Z1BP9zqAzeD3YEmLZlespYGFtyM8tRp5i2vfaUGCA==} 539 | 540 | emoji-regex@8.0.0: 541 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 542 | 543 | emoji-regex@9.2.2: 544 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} 545 | 546 | entities@4.5.0: 547 | resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} 548 | engines: {node: '>=0.12'} 549 | 550 | escalade@3.1.2: 551 | resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} 552 | engines: {node: '>=6'} 553 | 554 | estree-walker@2.0.2: 555 | resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} 556 | 557 | estree-walker@3.0.3: 558 | resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} 559 | 560 | event-target-shim@5.0.1: 561 | resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} 562 | engines: {node: '>=6'} 563 | 564 | eventsource-parser@1.0.0: 565 | resolution: {integrity: sha512-9jgfSCa3dmEme2ES3mPByGXfgZ87VbP97tng1G2nWwWx6bV2nYxm2AWCrbQjXToSe+yYlqaZNtxffR9IeQr95g==} 566 | engines: {node: '>=14.18'} 567 | 568 | fast-glob@3.3.2: 569 | resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} 570 | engines: {node: '>=8.6.0'} 571 | 572 | fastq@1.17.1: 573 | resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} 574 | 575 | fill-range@7.0.1: 576 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 577 | engines: {node: '>=8'} 578 | 579 | foreground-child@3.1.1: 580 | resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} 581 | engines: {node: '>=14'} 582 | 583 | form-data-encoder@1.7.2: 584 | resolution: {integrity: sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==} 585 | 586 | form-data@4.0.0: 587 | resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} 588 | engines: {node: '>= 6'} 589 | 590 | formdata-node@4.4.1: 591 | resolution: {integrity: sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==} 592 | engines: {node: '>= 12.20'} 593 | 594 | fraction.js@4.3.7: 595 | resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} 596 | 597 | fsevents@2.3.3: 598 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 599 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 600 | os: [darwin] 601 | 602 | function-bind@1.1.2: 603 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} 604 | 605 | glob-parent@5.1.2: 606 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 607 | engines: {node: '>= 6'} 608 | 609 | glob-parent@6.0.2: 610 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 611 | engines: {node: '>=10.13.0'} 612 | 613 | glob@10.3.10: 614 | resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} 615 | engines: {node: '>=16 || 14 >=14.17'} 616 | hasBin: true 617 | 618 | graceful-fs@4.2.11: 619 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 620 | 621 | hasown@2.0.1: 622 | resolution: {integrity: sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==} 623 | engines: {node: '>= 0.4'} 624 | 625 | humanize-ms@1.2.1: 626 | resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} 627 | 628 | is-binary-path@2.1.0: 629 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 630 | engines: {node: '>=8'} 631 | 632 | is-buffer@1.1.6: 633 | resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} 634 | 635 | is-core-module@2.13.1: 636 | resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} 637 | 638 | is-extglob@2.1.1: 639 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 640 | engines: {node: '>=0.10.0'} 641 | 642 | is-fullwidth-code-point@3.0.0: 643 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 644 | engines: {node: '>=8'} 645 | 646 | is-glob@4.0.3: 647 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 648 | engines: {node: '>=0.10.0'} 649 | 650 | is-number@7.0.0: 651 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 652 | engines: {node: '>=0.12.0'} 653 | 654 | is-reference@3.0.2: 655 | resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} 656 | 657 | isexe@2.0.0: 658 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 659 | 660 | jackspeak@2.3.6: 661 | resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} 662 | engines: {node: '>=14'} 663 | 664 | jiti@1.21.0: 665 | resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} 666 | hasBin: true 667 | 668 | js-tokens@4.0.0: 669 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 670 | 671 | lilconfig@2.1.0: 672 | resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} 673 | engines: {node: '>=10'} 674 | 675 | lilconfig@3.1.0: 676 | resolution: {integrity: sha512-p3cz0JV5vw/XeouBU3Ldnp+ZkBjE+n8ydJ4mcwBrOiXXPqNlrzGBqWs9X4MWF7f+iKUBu794Y8Hh8yawiJbCjw==} 677 | engines: {node: '>=14'} 678 | 679 | lines-and-columns@1.2.4: 680 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 681 | 682 | locate-character@3.0.0: 683 | resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} 684 | 685 | loose-envify@1.4.0: 686 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} 687 | hasBin: true 688 | 689 | lru-cache@10.2.0: 690 | resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} 691 | engines: {node: 14 || >=16.14} 692 | 693 | lucide-react@0.331.0: 694 | resolution: {integrity: sha512-CHFJ0ve9vaZ7bB2VRAl27SlX1ELh6pfNC0jS96qGpPEEzLkLDGq4pDBFU8RhOoRMqsjXqTzLm9U6bZ1OcIHq7Q==} 695 | peerDependencies: 696 | react: ^16.5.1 || ^17.0.0 || ^18.0.0 697 | 698 | magic-string@0.30.7: 699 | resolution: {integrity: sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA==} 700 | engines: {node: '>=12'} 701 | 702 | md5@2.3.0: 703 | resolution: {integrity: sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==} 704 | 705 | mdn-data@2.0.30: 706 | resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} 707 | 708 | merge2@1.4.1: 709 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 710 | engines: {node: '>= 8'} 711 | 712 | micromatch@4.0.5: 713 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 714 | engines: {node: '>=8.6'} 715 | 716 | mime-db@1.52.0: 717 | resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} 718 | engines: {node: '>= 0.6'} 719 | 720 | mime-types@2.1.35: 721 | resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} 722 | engines: {node: '>= 0.6'} 723 | 724 | minimatch@9.0.3: 725 | resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} 726 | engines: {node: '>=16 || 14 >=14.17'} 727 | 728 | minipass@7.0.4: 729 | resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} 730 | engines: {node: '>=16 || 14 >=14.17'} 731 | 732 | ms@2.1.3: 733 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 734 | 735 | mz@2.7.0: 736 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} 737 | 738 | nanoid@3.3.6: 739 | resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} 740 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 741 | hasBin: true 742 | 743 | nanoid@3.3.7: 744 | resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} 745 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 746 | hasBin: true 747 | 748 | next@14.1.0: 749 | resolution: {integrity: sha512-wlzrsbfeSU48YQBjZhDzOwhWhGsy+uQycR8bHAOt1LY1bn3zZEcDyHQOEoN3aWzQ8LHCAJ1nqrWCc9XF2+O45Q==} 750 | engines: {node: '>=18.17.0'} 751 | hasBin: true 752 | peerDependencies: 753 | '@opentelemetry/api': ^1.1.0 754 | react: ^18.2.0 755 | react-dom: ^18.2.0 756 | sass: ^1.3.0 757 | peerDependenciesMeta: 758 | '@opentelemetry/api': 759 | optional: true 760 | sass: 761 | optional: true 762 | 763 | node-domexception@1.0.0: 764 | resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} 765 | engines: {node: '>=10.5.0'} 766 | 767 | node-fetch@2.7.0: 768 | resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} 769 | engines: {node: 4.x || >=6.0.0} 770 | peerDependencies: 771 | encoding: ^0.1.0 772 | peerDependenciesMeta: 773 | encoding: 774 | optional: true 775 | 776 | node-releases@2.0.14: 777 | resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} 778 | 779 | normalize-path@3.0.0: 780 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 781 | engines: {node: '>=0.10.0'} 782 | 783 | normalize-range@0.1.2: 784 | resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} 785 | engines: {node: '>=0.10.0'} 786 | 787 | object-assign@4.1.1: 788 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 789 | engines: {node: '>=0.10.0'} 790 | 791 | object-hash@3.0.0: 792 | resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} 793 | engines: {node: '>= 6'} 794 | 795 | openai@4.28.0: 796 | resolution: {integrity: sha512-JM8fhcpmpGN0vrUwGquYIzdcEQHtFuom6sRCbbCM6CfzZXNuRk33G7KfeRAIfnaCxSpzrP5iHtwJzIm6biUZ2Q==} 797 | hasBin: true 798 | 799 | path-key@3.1.1: 800 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 801 | engines: {node: '>=8'} 802 | 803 | path-parse@1.0.7: 804 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 805 | 806 | path-scurry@1.10.1: 807 | resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} 808 | engines: {node: '>=16 || 14 >=14.17'} 809 | 810 | periscopic@3.1.0: 811 | resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} 812 | 813 | picocolors@1.0.0: 814 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 815 | 816 | picomatch@2.3.1: 817 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 818 | engines: {node: '>=8.6'} 819 | 820 | pify@2.3.0: 821 | resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} 822 | engines: {node: '>=0.10.0'} 823 | 824 | pirates@4.0.6: 825 | resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} 826 | engines: {node: '>= 6'} 827 | 828 | postcss-import@15.1.0: 829 | resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} 830 | engines: {node: '>=14.0.0'} 831 | peerDependencies: 832 | postcss: ^8.0.0 833 | 834 | postcss-js@4.0.1: 835 | resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} 836 | engines: {node: ^12 || ^14 || >= 16} 837 | peerDependencies: 838 | postcss: ^8.4.21 839 | 840 | postcss-load-config@4.0.2: 841 | resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} 842 | engines: {node: '>= 14'} 843 | peerDependencies: 844 | postcss: '>=8.0.9' 845 | ts-node: '>=9.0.0' 846 | peerDependenciesMeta: 847 | postcss: 848 | optional: true 849 | ts-node: 850 | optional: true 851 | 852 | postcss-nested@6.0.1: 853 | resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} 854 | engines: {node: '>=12.0'} 855 | peerDependencies: 856 | postcss: ^8.2.14 857 | 858 | postcss-selector-parser@6.0.15: 859 | resolution: {integrity: sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==} 860 | engines: {node: '>=4'} 861 | 862 | postcss-value-parser@4.2.0: 863 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} 864 | 865 | postcss@8.4.31: 866 | resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} 867 | engines: {node: ^10 || ^12 || >=14} 868 | 869 | postcss@8.4.35: 870 | resolution: {integrity: sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==} 871 | engines: {node: ^10 || ^12 || >=14} 872 | 873 | queue-microtask@1.2.3: 874 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 875 | 876 | react-dom@18.2.0: 877 | resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} 878 | peerDependencies: 879 | react: ^18.2.0 880 | 881 | react@18.2.0: 882 | resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} 883 | engines: {node: '>=0.10.0'} 884 | 885 | read-cache@1.0.0: 886 | resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} 887 | 888 | readdirp@3.6.0: 889 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 890 | engines: {node: '>=8.10.0'} 891 | 892 | regenerator-runtime@0.14.1: 893 | resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} 894 | 895 | resolve@1.22.8: 896 | resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} 897 | hasBin: true 898 | 899 | reusify@1.0.4: 900 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 901 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 902 | 903 | run-parallel@1.2.0: 904 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 905 | 906 | scheduler@0.23.0: 907 | resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} 908 | 909 | seroval-plugins@1.0.4: 910 | resolution: {integrity: sha512-DQ2IK6oQVvy8k+c2V5x5YCtUa/GGGsUwUBNN9UqohrZ0rWdUapBFpNMYP1bCyRHoxOJjdKGl+dieacFIpU/i1A==} 911 | engines: {node: '>=10'} 912 | peerDependencies: 913 | seroval: ^1.0 914 | 915 | seroval@1.0.4: 916 | resolution: {integrity: sha512-qQs/N+KfJu83rmszFQaTxcoJoPn6KNUruX4KmnmyD0oZkUoiNvJ1rpdYKDf4YHM05k+HOgCxa3yvf15QbVijGg==} 917 | engines: {node: '>=10'} 918 | 919 | shebang-command@2.0.0: 920 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 921 | engines: {node: '>=8'} 922 | 923 | shebang-regex@3.0.0: 924 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 925 | engines: {node: '>=8'} 926 | 927 | signal-exit@4.1.0: 928 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} 929 | engines: {node: '>=14'} 930 | 931 | solid-js@1.8.15: 932 | resolution: {integrity: sha512-d0QP/efr3UVcwGgWVPveQQ0IHOH6iU7yUhc2piy8arNG8wxKmvUy1kFxyF8owpmfCWGB87usDKMaVnsNYZm+Vw==} 933 | 934 | solid-swr-store@0.10.7: 935 | resolution: {integrity: sha512-A6d68aJmRP471aWqKKPE2tpgOiR5fH4qXQNfKIec+Vap+MGQm3tvXlT8n0I8UgJSlNAsSAUuw2VTviH2h3Vv5g==} 936 | engines: {node: '>=10'} 937 | peerDependencies: 938 | solid-js: ^1.2 939 | swr-store: ^0.10 940 | 941 | source-map-js@1.0.2: 942 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 943 | engines: {node: '>=0.10.0'} 944 | 945 | sswr@2.0.0: 946 | resolution: {integrity: sha512-mV0kkeBHcjcb0M5NqKtKVg/uTIYNlIIniyDfSGrSfxpEdM9C365jK0z55pl9K0xAkNTJi2OAOVFQpgMPUk+V0w==} 947 | peerDependencies: 948 | svelte: ^4.0.0 949 | 950 | streamsearch@1.1.0: 951 | resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} 952 | engines: {node: '>=10.0.0'} 953 | 954 | string-width@4.2.3: 955 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 956 | engines: {node: '>=8'} 957 | 958 | string-width@5.1.2: 959 | resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} 960 | engines: {node: '>=12'} 961 | 962 | strip-ansi@6.0.1: 963 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 964 | engines: {node: '>=8'} 965 | 966 | strip-ansi@7.1.0: 967 | resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} 968 | engines: {node: '>=12'} 969 | 970 | styled-jsx@5.1.1: 971 | resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} 972 | engines: {node: '>= 12.0.0'} 973 | peerDependencies: 974 | '@babel/core': '*' 975 | babel-plugin-macros: '*' 976 | react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' 977 | peerDependenciesMeta: 978 | '@babel/core': 979 | optional: true 980 | babel-plugin-macros: 981 | optional: true 982 | 983 | sucrase@3.35.0: 984 | resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} 985 | engines: {node: '>=16 || 14 >=14.17'} 986 | hasBin: true 987 | 988 | supports-preserve-symlinks-flag@1.0.0: 989 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 990 | engines: {node: '>= 0.4'} 991 | 992 | svelte@4.2.11: 993 | resolution: {integrity: sha512-YIQk3J4X89wOLhjsqIW8tqY3JHPuBdtdOIkASP2PZeAMcSW9RsIjQzMesCrxOF3gdWYC0mKknlKF7OqmLM+Zqg==} 994 | engines: {node: '>=16'} 995 | 996 | swr-store@0.10.6: 997 | resolution: {integrity: sha512-xPjB1hARSiRaNNlUQvWSVrG5SirCjk2TmaUyzzvk69SZQan9hCJqw/5rG9iL7xElHU784GxRPISClq4488/XVw==} 998 | engines: {node: '>=10'} 999 | 1000 | swr@2.2.0: 1001 | resolution: {integrity: sha512-AjqHOv2lAhkuUdIiBu9xbuettzAzWXmCEcLONNKJRba87WAefz8Ca9d6ds/SzrPc235n1IxWYdhJ2zF3MNUaoQ==} 1002 | peerDependencies: 1003 | react: ^16.11.0 || ^17.0.0 || ^18.0.0 1004 | 1005 | swrev@4.0.0: 1006 | resolution: {integrity: sha512-LqVcOHSB4cPGgitD1riJ1Hh4vdmITOp+BkmfmXRh4hSF/t7EnS4iD+SOTmq7w5pPm/SiPeto4ADbKS6dHUDWFA==} 1007 | 1008 | swrv@1.0.4: 1009 | resolution: {integrity: sha512-zjEkcP8Ywmj+xOJW3lIT65ciY/4AL4e/Or7Gj0MzU3zBJNMdJiT8geVZhINavnlHRMMCcJLHhraLTAiDOTmQ9g==} 1010 | peerDependencies: 1011 | vue: '>=3.2.26 < 4' 1012 | 1013 | tailwind-merge@2.2.1: 1014 | resolution: {integrity: sha512-o+2GTLkthfa5YUt4JxPfzMIpQzZ3adD1vLVkvKE1Twl9UAhGsEbIZhHHZVRttyW177S8PDJI3bTQNaebyofK3Q==} 1015 | 1016 | tailwindcss-animate@1.0.7: 1017 | resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==} 1018 | peerDependencies: 1019 | tailwindcss: '>=3.0.0 || insiders' 1020 | 1021 | tailwindcss@3.4.1: 1022 | resolution: {integrity: sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==} 1023 | engines: {node: '>=14.0.0'} 1024 | hasBin: true 1025 | 1026 | thenify-all@1.6.0: 1027 | resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} 1028 | engines: {node: '>=0.8'} 1029 | 1030 | thenify@3.3.1: 1031 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} 1032 | 1033 | to-fast-properties@2.0.0: 1034 | resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} 1035 | engines: {node: '>=4'} 1036 | 1037 | to-regex-range@5.0.1: 1038 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1039 | engines: {node: '>=8.0'} 1040 | 1041 | tr46@0.0.3: 1042 | resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} 1043 | 1044 | ts-interface-checker@0.1.13: 1045 | resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} 1046 | 1047 | tslib@2.6.2: 1048 | resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} 1049 | 1050 | typescript@5.3.3: 1051 | resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} 1052 | engines: {node: '>=14.17'} 1053 | hasBin: true 1054 | 1055 | undici-types@5.26.5: 1056 | resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} 1057 | 1058 | update-browserslist-db@1.0.13: 1059 | resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} 1060 | hasBin: true 1061 | peerDependencies: 1062 | browserslist: '>= 4.21.0' 1063 | 1064 | use-sync-external-store@1.2.0: 1065 | resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} 1066 | peerDependencies: 1067 | react: ^16.8.0 || ^17.0.0 || ^18.0.0 1068 | 1069 | util-deprecate@1.0.2: 1070 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 1071 | 1072 | vue@3.4.19: 1073 | resolution: {integrity: sha512-W/7Fc9KUkajFU8dBeDluM4sRGc/aa4YJnOYck8dkjgZoXtVsn3OeTGni66FV1l3+nvPA7VBFYtPioaGKUmEADw==} 1074 | peerDependencies: 1075 | typescript: '*' 1076 | peerDependenciesMeta: 1077 | typescript: 1078 | optional: true 1079 | 1080 | web-streams-polyfill@3.3.2: 1081 | resolution: {integrity: sha512-3pRGuxRF5gpuZc0W+EpwQRmCD7gRqcDOMt688KmdlDAgAyaB1XlN0zq2njfDNm44XVdIouE7pZ6GzbdyH47uIQ==} 1082 | engines: {node: '>= 8'} 1083 | 1084 | web-streams-polyfill@4.0.0-beta.3: 1085 | resolution: {integrity: sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==} 1086 | engines: {node: '>= 14'} 1087 | 1088 | webidl-conversions@3.0.1: 1089 | resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} 1090 | 1091 | whatwg-url@5.0.0: 1092 | resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} 1093 | 1094 | which@2.0.2: 1095 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 1096 | engines: {node: '>= 8'} 1097 | hasBin: true 1098 | 1099 | wrap-ansi@7.0.0: 1100 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 1101 | engines: {node: '>=10'} 1102 | 1103 | wrap-ansi@8.1.0: 1104 | resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} 1105 | engines: {node: '>=12'} 1106 | 1107 | yaml@2.3.4: 1108 | resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==} 1109 | engines: {node: '>= 14'} 1110 | 1111 | snapshots: 1112 | 1113 | '@alloc/quick-lru@5.2.0': {} 1114 | 1115 | '@ampproject/remapping@2.2.1': 1116 | dependencies: 1117 | '@jridgewell/gen-mapping': 0.3.3 1118 | '@jridgewell/trace-mapping': 0.3.22 1119 | 1120 | '@babel/helper-string-parser@7.23.4': {} 1121 | 1122 | '@babel/helper-validator-identifier@7.22.20': {} 1123 | 1124 | '@babel/parser@7.23.9': 1125 | dependencies: 1126 | '@babel/types': 7.23.9 1127 | 1128 | '@babel/runtime@7.23.9': 1129 | dependencies: 1130 | regenerator-runtime: 0.14.1 1131 | 1132 | '@babel/types@7.23.9': 1133 | dependencies: 1134 | '@babel/helper-string-parser': 7.23.4 1135 | '@babel/helper-validator-identifier': 7.22.20 1136 | to-fast-properties: 2.0.0 1137 | 1138 | '@isaacs/cliui@8.0.2': 1139 | dependencies: 1140 | string-width: 5.1.2 1141 | string-width-cjs: string-width@4.2.3 1142 | strip-ansi: 7.1.0 1143 | strip-ansi-cjs: strip-ansi@6.0.1 1144 | wrap-ansi: 8.1.0 1145 | wrap-ansi-cjs: wrap-ansi@7.0.0 1146 | 1147 | '@jridgewell/gen-mapping@0.3.3': 1148 | dependencies: 1149 | '@jridgewell/set-array': 1.1.2 1150 | '@jridgewell/sourcemap-codec': 1.4.15 1151 | '@jridgewell/trace-mapping': 0.3.22 1152 | 1153 | '@jridgewell/resolve-uri@3.1.2': {} 1154 | 1155 | '@jridgewell/set-array@1.1.2': {} 1156 | 1157 | '@jridgewell/sourcemap-codec@1.4.15': {} 1158 | 1159 | '@jridgewell/trace-mapping@0.3.22': 1160 | dependencies: 1161 | '@jridgewell/resolve-uri': 3.1.2 1162 | '@jridgewell/sourcemap-codec': 1.4.15 1163 | 1164 | '@next/env@14.1.0': {} 1165 | 1166 | '@next/swc-darwin-arm64@14.1.0': 1167 | optional: true 1168 | 1169 | '@next/swc-darwin-x64@14.1.0': 1170 | optional: true 1171 | 1172 | '@next/swc-linux-arm64-gnu@14.1.0': 1173 | optional: true 1174 | 1175 | '@next/swc-linux-arm64-musl@14.1.0': 1176 | optional: true 1177 | 1178 | '@next/swc-linux-x64-gnu@14.1.0': 1179 | optional: true 1180 | 1181 | '@next/swc-linux-x64-musl@14.1.0': 1182 | optional: true 1183 | 1184 | '@next/swc-win32-arm64-msvc@14.1.0': 1185 | optional: true 1186 | 1187 | '@next/swc-win32-ia32-msvc@14.1.0': 1188 | optional: true 1189 | 1190 | '@next/swc-win32-x64-msvc@14.1.0': 1191 | optional: true 1192 | 1193 | '@nodelib/fs.scandir@2.1.5': 1194 | dependencies: 1195 | '@nodelib/fs.stat': 2.0.5 1196 | run-parallel: 1.2.0 1197 | 1198 | '@nodelib/fs.stat@2.0.5': {} 1199 | 1200 | '@nodelib/fs.walk@1.2.8': 1201 | dependencies: 1202 | '@nodelib/fs.scandir': 2.1.5 1203 | fastq: 1.17.1 1204 | 1205 | '@pkgjs/parseargs@0.11.0': 1206 | optional: true 1207 | 1208 | '@radix-ui/react-avatar@1.0.4(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0)': 1209 | dependencies: 1210 | '@babel/runtime': 7.23.9 1211 | '@radix-ui/react-context': 1.0.1(@types/react@18.2.55)(react@18.2.0) 1212 | '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) 1213 | '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.55)(react@18.2.0) 1214 | '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.55)(react@18.2.0) 1215 | '@types/react': 18.2.55 1216 | '@types/react-dom': 18.2.19 1217 | react: 18.2.0 1218 | react-dom: 18.2.0(react@18.2.0) 1219 | 1220 | '@radix-ui/react-compose-refs@1.0.1(@types/react@18.2.55)(react@18.2.0)': 1221 | dependencies: 1222 | '@babel/runtime': 7.23.9 1223 | '@types/react': 18.2.55 1224 | react: 18.2.0 1225 | 1226 | '@radix-ui/react-context@1.0.1(@types/react@18.2.55)(react@18.2.0)': 1227 | dependencies: 1228 | '@babel/runtime': 7.23.9 1229 | '@types/react': 18.2.55 1230 | react: 18.2.0 1231 | 1232 | '@radix-ui/react-icons@1.3.0(react@18.2.0)': 1233 | dependencies: 1234 | react: 18.2.0 1235 | 1236 | '@radix-ui/react-primitive@1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0)': 1237 | dependencies: 1238 | '@babel/runtime': 7.23.9 1239 | '@radix-ui/react-slot': 1.0.2(@types/react@18.2.55)(react@18.2.0) 1240 | '@types/react': 18.2.55 1241 | '@types/react-dom': 18.2.19 1242 | react: 18.2.0 1243 | react-dom: 18.2.0(react@18.2.0) 1244 | 1245 | '@radix-ui/react-separator@1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0)': 1246 | dependencies: 1247 | '@babel/runtime': 7.23.9 1248 | '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) 1249 | '@types/react': 18.2.55 1250 | '@types/react-dom': 18.2.19 1251 | react: 18.2.0 1252 | react-dom: 18.2.0(react@18.2.0) 1253 | 1254 | '@radix-ui/react-slot@1.0.2(@types/react@18.2.55)(react@18.2.0)': 1255 | dependencies: 1256 | '@babel/runtime': 7.23.9 1257 | '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.55)(react@18.2.0) 1258 | '@types/react': 18.2.55 1259 | react: 18.2.0 1260 | 1261 | '@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.2.55)(react@18.2.0)': 1262 | dependencies: 1263 | '@babel/runtime': 7.23.9 1264 | '@types/react': 18.2.55 1265 | react: 18.2.0 1266 | 1267 | '@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.2.55)(react@18.2.0)': 1268 | dependencies: 1269 | '@babel/runtime': 7.23.9 1270 | '@types/react': 18.2.55 1271 | react: 18.2.0 1272 | 1273 | '@swc/helpers@0.5.2': 1274 | dependencies: 1275 | tslib: 2.6.2 1276 | 1277 | '@types/estree@1.0.5': {} 1278 | 1279 | '@types/ms@0.7.34': {} 1280 | 1281 | '@types/node-fetch@2.6.11': 1282 | dependencies: 1283 | '@types/node': 20.11.19 1284 | form-data: 4.0.0 1285 | 1286 | '@types/node@18.19.17': 1287 | dependencies: 1288 | undici-types: 5.26.5 1289 | 1290 | '@types/node@20.11.19': 1291 | dependencies: 1292 | undici-types: 5.26.5 1293 | 1294 | '@types/prop-types@15.7.11': {} 1295 | 1296 | '@types/react-dom@18.2.19': 1297 | dependencies: 1298 | '@types/react': 18.2.55 1299 | 1300 | '@types/react@18.2.55': 1301 | dependencies: 1302 | '@types/prop-types': 15.7.11 1303 | '@types/scheduler': 0.16.8 1304 | csstype: 3.1.3 1305 | 1306 | '@types/scheduler@0.16.8': {} 1307 | 1308 | '@vue/compiler-core@3.4.19': 1309 | dependencies: 1310 | '@babel/parser': 7.23.9 1311 | '@vue/shared': 3.4.19 1312 | entities: 4.5.0 1313 | estree-walker: 2.0.2 1314 | source-map-js: 1.0.2 1315 | 1316 | '@vue/compiler-dom@3.4.19': 1317 | dependencies: 1318 | '@vue/compiler-core': 3.4.19 1319 | '@vue/shared': 3.4.19 1320 | 1321 | '@vue/compiler-sfc@3.4.19': 1322 | dependencies: 1323 | '@babel/parser': 7.23.9 1324 | '@vue/compiler-core': 3.4.19 1325 | '@vue/compiler-dom': 3.4.19 1326 | '@vue/compiler-ssr': 3.4.19 1327 | '@vue/shared': 3.4.19 1328 | estree-walker: 2.0.2 1329 | magic-string: 0.30.7 1330 | postcss: 8.4.35 1331 | source-map-js: 1.0.2 1332 | 1333 | '@vue/compiler-ssr@3.4.19': 1334 | dependencies: 1335 | '@vue/compiler-dom': 3.4.19 1336 | '@vue/shared': 3.4.19 1337 | 1338 | '@vue/reactivity@3.4.19': 1339 | dependencies: 1340 | '@vue/shared': 3.4.19 1341 | 1342 | '@vue/runtime-core@3.4.19': 1343 | dependencies: 1344 | '@vue/reactivity': 3.4.19 1345 | '@vue/shared': 3.4.19 1346 | 1347 | '@vue/runtime-dom@3.4.19': 1348 | dependencies: 1349 | '@vue/runtime-core': 3.4.19 1350 | '@vue/shared': 3.4.19 1351 | csstype: 3.1.3 1352 | 1353 | '@vue/server-renderer@3.4.19(vue@3.4.19)': 1354 | dependencies: 1355 | '@vue/compiler-ssr': 3.4.19 1356 | '@vue/shared': 3.4.19 1357 | vue: 3.4.19(typescript@5.3.3) 1358 | 1359 | '@vue/shared@3.4.19': {} 1360 | 1361 | abort-controller@3.0.0: 1362 | dependencies: 1363 | event-target-shim: 5.0.1 1364 | 1365 | acorn@8.11.3: {} 1366 | 1367 | agentkeepalive@4.5.0: 1368 | dependencies: 1369 | humanize-ms: 1.2.1 1370 | 1371 | ai@2.2.35(react@18.2.0)(solid-js@1.8.15)(svelte@4.2.11)(vue@3.4.19): 1372 | dependencies: 1373 | eventsource-parser: 1.0.0 1374 | nanoid: 3.3.6 1375 | react: 18.2.0 1376 | solid-js: 1.8.15 1377 | solid-swr-store: 0.10.7(solid-js@1.8.15)(swr-store@0.10.6) 1378 | sswr: 2.0.0(svelte@4.2.11) 1379 | svelte: 4.2.11 1380 | swr: 2.2.0(react@18.2.0) 1381 | swr-store: 0.10.6 1382 | swrv: 1.0.4(vue@3.4.19) 1383 | vue: 3.4.19(typescript@5.3.3) 1384 | 1385 | ansi-regex@5.0.1: {} 1386 | 1387 | ansi-regex@6.0.1: {} 1388 | 1389 | ansi-styles@4.3.0: 1390 | dependencies: 1391 | color-convert: 2.0.1 1392 | 1393 | ansi-styles@6.2.1: {} 1394 | 1395 | any-promise@1.3.0: {} 1396 | 1397 | anymatch@3.1.3: 1398 | dependencies: 1399 | normalize-path: 3.0.0 1400 | picomatch: 2.3.1 1401 | 1402 | arg@5.0.2: {} 1403 | 1404 | aria-query@5.3.0: 1405 | dependencies: 1406 | dequal: 2.0.3 1407 | 1408 | asynckit@0.4.0: {} 1409 | 1410 | autoprefixer@10.4.17(postcss@8.4.35): 1411 | dependencies: 1412 | browserslist: 4.23.0 1413 | caniuse-lite: 1.0.30001587 1414 | fraction.js: 4.3.7 1415 | normalize-range: 0.1.2 1416 | picocolors: 1.0.0 1417 | postcss: 8.4.35 1418 | postcss-value-parser: 4.2.0 1419 | 1420 | axobject-query@4.0.0: 1421 | dependencies: 1422 | dequal: 2.0.3 1423 | 1424 | balanced-match@1.0.2: {} 1425 | 1426 | base-64@0.1.0: {} 1427 | 1428 | binary-extensions@2.2.0: {} 1429 | 1430 | brace-expansion@2.0.1: 1431 | dependencies: 1432 | balanced-match: 1.0.2 1433 | 1434 | braces@3.0.2: 1435 | dependencies: 1436 | fill-range: 7.0.1 1437 | 1438 | browserslist@4.23.0: 1439 | dependencies: 1440 | caniuse-lite: 1.0.30001587 1441 | electron-to-chromium: 1.4.672 1442 | node-releases: 2.0.14 1443 | update-browserslist-db: 1.0.13(browserslist@4.23.0) 1444 | 1445 | busboy@1.6.0: 1446 | dependencies: 1447 | streamsearch: 1.1.0 1448 | 1449 | camelcase-css@2.0.1: {} 1450 | 1451 | caniuse-lite@1.0.30001587: {} 1452 | 1453 | charenc@0.0.2: {} 1454 | 1455 | chokidar@3.6.0: 1456 | dependencies: 1457 | anymatch: 3.1.3 1458 | braces: 3.0.2 1459 | glob-parent: 5.1.2 1460 | is-binary-path: 2.1.0 1461 | is-glob: 4.0.3 1462 | normalize-path: 3.0.0 1463 | readdirp: 3.6.0 1464 | optionalDependencies: 1465 | fsevents: 2.3.3 1466 | 1467 | class-variance-authority@0.7.0: 1468 | dependencies: 1469 | clsx: 2.0.0 1470 | 1471 | client-only@0.0.1: {} 1472 | 1473 | clsx@2.0.0: {} 1474 | 1475 | clsx@2.1.0: {} 1476 | 1477 | code-red@1.0.4: 1478 | dependencies: 1479 | '@jridgewell/sourcemap-codec': 1.4.15 1480 | '@types/estree': 1.0.5 1481 | acorn: 8.11.3 1482 | estree-walker: 3.0.3 1483 | periscopic: 3.1.0 1484 | 1485 | color-convert@2.0.1: 1486 | dependencies: 1487 | color-name: 1.1.4 1488 | 1489 | color-name@1.1.4: {} 1490 | 1491 | combined-stream@1.0.8: 1492 | dependencies: 1493 | delayed-stream: 1.0.0 1494 | 1495 | commander@4.1.1: {} 1496 | 1497 | cross-spawn@7.0.3: 1498 | dependencies: 1499 | path-key: 3.1.1 1500 | shebang-command: 2.0.0 1501 | which: 2.0.2 1502 | 1503 | crypt@0.0.2: {} 1504 | 1505 | css-tree@2.3.1: 1506 | dependencies: 1507 | mdn-data: 2.0.30 1508 | source-map-js: 1.0.2 1509 | 1510 | cssesc@3.0.0: {} 1511 | 1512 | csstype@3.1.3: {} 1513 | 1514 | delayed-stream@1.0.0: {} 1515 | 1516 | dequal@2.0.3: {} 1517 | 1518 | didyoumean@1.2.2: {} 1519 | 1520 | digest-fetch@1.3.0: 1521 | dependencies: 1522 | base-64: 0.1.0 1523 | md5: 2.3.0 1524 | 1525 | dlv@1.1.3: {} 1526 | 1527 | eastasianwidth@0.2.0: {} 1528 | 1529 | electron-to-chromium@1.4.672: {} 1530 | 1531 | emoji-regex@8.0.0: {} 1532 | 1533 | emoji-regex@9.2.2: {} 1534 | 1535 | entities@4.5.0: {} 1536 | 1537 | escalade@3.1.2: {} 1538 | 1539 | estree-walker@2.0.2: {} 1540 | 1541 | estree-walker@3.0.3: 1542 | dependencies: 1543 | '@types/estree': 1.0.5 1544 | 1545 | event-target-shim@5.0.1: {} 1546 | 1547 | eventsource-parser@1.0.0: {} 1548 | 1549 | fast-glob@3.3.2: 1550 | dependencies: 1551 | '@nodelib/fs.stat': 2.0.5 1552 | '@nodelib/fs.walk': 1.2.8 1553 | glob-parent: 5.1.2 1554 | merge2: 1.4.1 1555 | micromatch: 4.0.5 1556 | 1557 | fastq@1.17.1: 1558 | dependencies: 1559 | reusify: 1.0.4 1560 | 1561 | fill-range@7.0.1: 1562 | dependencies: 1563 | to-regex-range: 5.0.1 1564 | 1565 | foreground-child@3.1.1: 1566 | dependencies: 1567 | cross-spawn: 7.0.3 1568 | signal-exit: 4.1.0 1569 | 1570 | form-data-encoder@1.7.2: {} 1571 | 1572 | form-data@4.0.0: 1573 | dependencies: 1574 | asynckit: 0.4.0 1575 | combined-stream: 1.0.8 1576 | mime-types: 2.1.35 1577 | 1578 | formdata-node@4.4.1: 1579 | dependencies: 1580 | node-domexception: 1.0.0 1581 | web-streams-polyfill: 4.0.0-beta.3 1582 | 1583 | fraction.js@4.3.7: {} 1584 | 1585 | fsevents@2.3.3: 1586 | optional: true 1587 | 1588 | function-bind@1.1.2: {} 1589 | 1590 | glob-parent@5.1.2: 1591 | dependencies: 1592 | is-glob: 4.0.3 1593 | 1594 | glob-parent@6.0.2: 1595 | dependencies: 1596 | is-glob: 4.0.3 1597 | 1598 | glob@10.3.10: 1599 | dependencies: 1600 | foreground-child: 3.1.1 1601 | jackspeak: 2.3.6 1602 | minimatch: 9.0.3 1603 | minipass: 7.0.4 1604 | path-scurry: 1.10.1 1605 | 1606 | graceful-fs@4.2.11: {} 1607 | 1608 | hasown@2.0.1: 1609 | dependencies: 1610 | function-bind: 1.1.2 1611 | 1612 | humanize-ms@1.2.1: 1613 | dependencies: 1614 | ms: 2.1.3 1615 | 1616 | is-binary-path@2.1.0: 1617 | dependencies: 1618 | binary-extensions: 2.2.0 1619 | 1620 | is-buffer@1.1.6: {} 1621 | 1622 | is-core-module@2.13.1: 1623 | dependencies: 1624 | hasown: 2.0.1 1625 | 1626 | is-extglob@2.1.1: {} 1627 | 1628 | is-fullwidth-code-point@3.0.0: {} 1629 | 1630 | is-glob@4.0.3: 1631 | dependencies: 1632 | is-extglob: 2.1.1 1633 | 1634 | is-number@7.0.0: {} 1635 | 1636 | is-reference@3.0.2: 1637 | dependencies: 1638 | '@types/estree': 1.0.5 1639 | 1640 | isexe@2.0.0: {} 1641 | 1642 | jackspeak@2.3.6: 1643 | dependencies: 1644 | '@isaacs/cliui': 8.0.2 1645 | optionalDependencies: 1646 | '@pkgjs/parseargs': 0.11.0 1647 | 1648 | jiti@1.21.0: {} 1649 | 1650 | js-tokens@4.0.0: {} 1651 | 1652 | lilconfig@2.1.0: {} 1653 | 1654 | lilconfig@3.1.0: {} 1655 | 1656 | lines-and-columns@1.2.4: {} 1657 | 1658 | locate-character@3.0.0: {} 1659 | 1660 | loose-envify@1.4.0: 1661 | dependencies: 1662 | js-tokens: 4.0.0 1663 | 1664 | lru-cache@10.2.0: {} 1665 | 1666 | lucide-react@0.331.0(react@18.2.0): 1667 | dependencies: 1668 | react: 18.2.0 1669 | 1670 | magic-string@0.30.7: 1671 | dependencies: 1672 | '@jridgewell/sourcemap-codec': 1.4.15 1673 | 1674 | md5@2.3.0: 1675 | dependencies: 1676 | charenc: 0.0.2 1677 | crypt: 0.0.2 1678 | is-buffer: 1.1.6 1679 | 1680 | mdn-data@2.0.30: {} 1681 | 1682 | merge2@1.4.1: {} 1683 | 1684 | micromatch@4.0.5: 1685 | dependencies: 1686 | braces: 3.0.2 1687 | picomatch: 2.3.1 1688 | 1689 | mime-db@1.52.0: {} 1690 | 1691 | mime-types@2.1.35: 1692 | dependencies: 1693 | mime-db: 1.52.0 1694 | 1695 | minimatch@9.0.3: 1696 | dependencies: 1697 | brace-expansion: 2.0.1 1698 | 1699 | minipass@7.0.4: {} 1700 | 1701 | ms@2.1.3: {} 1702 | 1703 | mz@2.7.0: 1704 | dependencies: 1705 | any-promise: 1.3.0 1706 | object-assign: 4.1.1 1707 | thenify-all: 1.6.0 1708 | 1709 | nanoid@3.3.6: {} 1710 | 1711 | nanoid@3.3.7: {} 1712 | 1713 | next@14.1.0(react-dom@18.2.0)(react@18.2.0): 1714 | dependencies: 1715 | '@next/env': 14.1.0 1716 | '@swc/helpers': 0.5.2 1717 | busboy: 1.6.0 1718 | caniuse-lite: 1.0.30001587 1719 | graceful-fs: 4.2.11 1720 | postcss: 8.4.31 1721 | react: 18.2.0 1722 | react-dom: 18.2.0(react@18.2.0) 1723 | styled-jsx: 5.1.1(react@18.2.0) 1724 | optionalDependencies: 1725 | '@next/swc-darwin-arm64': 14.1.0 1726 | '@next/swc-darwin-x64': 14.1.0 1727 | '@next/swc-linux-arm64-gnu': 14.1.0 1728 | '@next/swc-linux-arm64-musl': 14.1.0 1729 | '@next/swc-linux-x64-gnu': 14.1.0 1730 | '@next/swc-linux-x64-musl': 14.1.0 1731 | '@next/swc-win32-arm64-msvc': 14.1.0 1732 | '@next/swc-win32-ia32-msvc': 14.1.0 1733 | '@next/swc-win32-x64-msvc': 14.1.0 1734 | transitivePeerDependencies: 1735 | - '@babel/core' 1736 | - babel-plugin-macros 1737 | 1738 | node-domexception@1.0.0: {} 1739 | 1740 | node-fetch@2.7.0: 1741 | dependencies: 1742 | whatwg-url: 5.0.0 1743 | 1744 | node-releases@2.0.14: {} 1745 | 1746 | normalize-path@3.0.0: {} 1747 | 1748 | normalize-range@0.1.2: {} 1749 | 1750 | object-assign@4.1.1: {} 1751 | 1752 | object-hash@3.0.0: {} 1753 | 1754 | openai@4.28.0: 1755 | dependencies: 1756 | '@types/node': 18.19.17 1757 | '@types/node-fetch': 2.6.11 1758 | abort-controller: 3.0.0 1759 | agentkeepalive: 4.5.0 1760 | digest-fetch: 1.3.0 1761 | form-data-encoder: 1.7.2 1762 | formdata-node: 4.4.1 1763 | node-fetch: 2.7.0 1764 | web-streams-polyfill: 3.3.2 1765 | transitivePeerDependencies: 1766 | - encoding 1767 | 1768 | path-key@3.1.1: {} 1769 | 1770 | path-parse@1.0.7: {} 1771 | 1772 | path-scurry@1.10.1: 1773 | dependencies: 1774 | lru-cache: 10.2.0 1775 | minipass: 7.0.4 1776 | 1777 | periscopic@3.1.0: 1778 | dependencies: 1779 | '@types/estree': 1.0.5 1780 | estree-walker: 3.0.3 1781 | is-reference: 3.0.2 1782 | 1783 | picocolors@1.0.0: {} 1784 | 1785 | picomatch@2.3.1: {} 1786 | 1787 | pify@2.3.0: {} 1788 | 1789 | pirates@4.0.6: {} 1790 | 1791 | postcss-import@15.1.0(postcss@8.4.35): 1792 | dependencies: 1793 | postcss: 8.4.35 1794 | postcss-value-parser: 4.2.0 1795 | read-cache: 1.0.0 1796 | resolve: 1.22.8 1797 | 1798 | postcss-js@4.0.1(postcss@8.4.35): 1799 | dependencies: 1800 | camelcase-css: 2.0.1 1801 | postcss: 8.4.35 1802 | 1803 | postcss-load-config@4.0.2(postcss@8.4.35): 1804 | dependencies: 1805 | lilconfig: 3.1.0 1806 | postcss: 8.4.35 1807 | yaml: 2.3.4 1808 | 1809 | postcss-nested@6.0.1(postcss@8.4.35): 1810 | dependencies: 1811 | postcss: 8.4.35 1812 | postcss-selector-parser: 6.0.15 1813 | 1814 | postcss-selector-parser@6.0.15: 1815 | dependencies: 1816 | cssesc: 3.0.0 1817 | util-deprecate: 1.0.2 1818 | 1819 | postcss-value-parser@4.2.0: {} 1820 | 1821 | postcss@8.4.31: 1822 | dependencies: 1823 | nanoid: 3.3.7 1824 | picocolors: 1.0.0 1825 | source-map-js: 1.0.2 1826 | 1827 | postcss@8.4.35: 1828 | dependencies: 1829 | nanoid: 3.3.7 1830 | picocolors: 1.0.0 1831 | source-map-js: 1.0.2 1832 | 1833 | queue-microtask@1.2.3: {} 1834 | 1835 | react-dom@18.2.0(react@18.2.0): 1836 | dependencies: 1837 | loose-envify: 1.4.0 1838 | react: 18.2.0 1839 | scheduler: 0.23.0 1840 | 1841 | react@18.2.0: 1842 | dependencies: 1843 | loose-envify: 1.4.0 1844 | 1845 | read-cache@1.0.0: 1846 | dependencies: 1847 | pify: 2.3.0 1848 | 1849 | readdirp@3.6.0: 1850 | dependencies: 1851 | picomatch: 2.3.1 1852 | 1853 | regenerator-runtime@0.14.1: {} 1854 | 1855 | resolve@1.22.8: 1856 | dependencies: 1857 | is-core-module: 2.13.1 1858 | path-parse: 1.0.7 1859 | supports-preserve-symlinks-flag: 1.0.0 1860 | 1861 | reusify@1.0.4: {} 1862 | 1863 | run-parallel@1.2.0: 1864 | dependencies: 1865 | queue-microtask: 1.2.3 1866 | 1867 | scheduler@0.23.0: 1868 | dependencies: 1869 | loose-envify: 1.4.0 1870 | 1871 | seroval-plugins@1.0.4(seroval@1.0.4): 1872 | dependencies: 1873 | seroval: 1.0.4 1874 | 1875 | seroval@1.0.4: {} 1876 | 1877 | shebang-command@2.0.0: 1878 | dependencies: 1879 | shebang-regex: 3.0.0 1880 | 1881 | shebang-regex@3.0.0: {} 1882 | 1883 | signal-exit@4.1.0: {} 1884 | 1885 | solid-js@1.8.15: 1886 | dependencies: 1887 | csstype: 3.1.3 1888 | seroval: 1.0.4 1889 | seroval-plugins: 1.0.4(seroval@1.0.4) 1890 | 1891 | solid-swr-store@0.10.7(solid-js@1.8.15)(swr-store@0.10.6): 1892 | dependencies: 1893 | solid-js: 1.8.15 1894 | swr-store: 0.10.6 1895 | 1896 | source-map-js@1.0.2: {} 1897 | 1898 | sswr@2.0.0(svelte@4.2.11): 1899 | dependencies: 1900 | svelte: 4.2.11 1901 | swrev: 4.0.0 1902 | 1903 | streamsearch@1.1.0: {} 1904 | 1905 | string-width@4.2.3: 1906 | dependencies: 1907 | emoji-regex: 8.0.0 1908 | is-fullwidth-code-point: 3.0.0 1909 | strip-ansi: 6.0.1 1910 | 1911 | string-width@5.1.2: 1912 | dependencies: 1913 | eastasianwidth: 0.2.0 1914 | emoji-regex: 9.2.2 1915 | strip-ansi: 7.1.0 1916 | 1917 | strip-ansi@6.0.1: 1918 | dependencies: 1919 | ansi-regex: 5.0.1 1920 | 1921 | strip-ansi@7.1.0: 1922 | dependencies: 1923 | ansi-regex: 6.0.1 1924 | 1925 | styled-jsx@5.1.1(react@18.2.0): 1926 | dependencies: 1927 | client-only: 0.0.1 1928 | react: 18.2.0 1929 | 1930 | sucrase@3.35.0: 1931 | dependencies: 1932 | '@jridgewell/gen-mapping': 0.3.3 1933 | commander: 4.1.1 1934 | glob: 10.3.10 1935 | lines-and-columns: 1.2.4 1936 | mz: 2.7.0 1937 | pirates: 4.0.6 1938 | ts-interface-checker: 0.1.13 1939 | 1940 | supports-preserve-symlinks-flag@1.0.0: {} 1941 | 1942 | svelte@4.2.11: 1943 | dependencies: 1944 | '@ampproject/remapping': 2.2.1 1945 | '@jridgewell/sourcemap-codec': 1.4.15 1946 | '@jridgewell/trace-mapping': 0.3.22 1947 | '@types/estree': 1.0.5 1948 | acorn: 8.11.3 1949 | aria-query: 5.3.0 1950 | axobject-query: 4.0.0 1951 | code-red: 1.0.4 1952 | css-tree: 2.3.1 1953 | estree-walker: 3.0.3 1954 | is-reference: 3.0.2 1955 | locate-character: 3.0.0 1956 | magic-string: 0.30.7 1957 | periscopic: 3.1.0 1958 | 1959 | swr-store@0.10.6: 1960 | dependencies: 1961 | dequal: 2.0.3 1962 | 1963 | swr@2.2.0(react@18.2.0): 1964 | dependencies: 1965 | react: 18.2.0 1966 | use-sync-external-store: 1.2.0(react@18.2.0) 1967 | 1968 | swrev@4.0.0: {} 1969 | 1970 | swrv@1.0.4(vue@3.4.19): 1971 | dependencies: 1972 | vue: 3.4.19(typescript@5.3.3) 1973 | 1974 | tailwind-merge@2.2.1: 1975 | dependencies: 1976 | '@babel/runtime': 7.23.9 1977 | 1978 | tailwindcss-animate@1.0.7(tailwindcss@3.4.1): 1979 | dependencies: 1980 | tailwindcss: 3.4.1 1981 | 1982 | tailwindcss@3.4.1: 1983 | dependencies: 1984 | '@alloc/quick-lru': 5.2.0 1985 | arg: 5.0.2 1986 | chokidar: 3.6.0 1987 | didyoumean: 1.2.2 1988 | dlv: 1.1.3 1989 | fast-glob: 3.3.2 1990 | glob-parent: 6.0.2 1991 | is-glob: 4.0.3 1992 | jiti: 1.21.0 1993 | lilconfig: 2.1.0 1994 | micromatch: 4.0.5 1995 | normalize-path: 3.0.0 1996 | object-hash: 3.0.0 1997 | picocolors: 1.0.0 1998 | postcss: 8.4.35 1999 | postcss-import: 15.1.0(postcss@8.4.35) 2000 | postcss-js: 4.0.1(postcss@8.4.35) 2001 | postcss-load-config: 4.0.2(postcss@8.4.35) 2002 | postcss-nested: 6.0.1(postcss@8.4.35) 2003 | postcss-selector-parser: 6.0.15 2004 | resolve: 1.22.8 2005 | sucrase: 3.35.0 2006 | transitivePeerDependencies: 2007 | - ts-node 2008 | 2009 | thenify-all@1.6.0: 2010 | dependencies: 2011 | thenify: 3.3.1 2012 | 2013 | thenify@3.3.1: 2014 | dependencies: 2015 | any-promise: 1.3.0 2016 | 2017 | to-fast-properties@2.0.0: {} 2018 | 2019 | to-regex-range@5.0.1: 2020 | dependencies: 2021 | is-number: 7.0.0 2022 | 2023 | tr46@0.0.3: {} 2024 | 2025 | ts-interface-checker@0.1.13: {} 2026 | 2027 | tslib@2.6.2: {} 2028 | 2029 | typescript@5.3.3: {} 2030 | 2031 | undici-types@5.26.5: {} 2032 | 2033 | update-browserslist-db@1.0.13(browserslist@4.23.0): 2034 | dependencies: 2035 | browserslist: 4.23.0 2036 | escalade: 3.1.2 2037 | picocolors: 1.0.0 2038 | 2039 | use-sync-external-store@1.2.0(react@18.2.0): 2040 | dependencies: 2041 | react: 18.2.0 2042 | 2043 | util-deprecate@1.0.2: {} 2044 | 2045 | vue@3.4.19(typescript@5.3.3): 2046 | dependencies: 2047 | '@vue/compiler-dom': 3.4.19 2048 | '@vue/compiler-sfc': 3.4.19 2049 | '@vue/runtime-dom': 3.4.19 2050 | '@vue/server-renderer': 3.4.19(vue@3.4.19) 2051 | '@vue/shared': 3.4.19 2052 | typescript: 5.3.3 2053 | 2054 | web-streams-polyfill@3.3.2: {} 2055 | 2056 | web-streams-polyfill@4.0.0-beta.3: {} 2057 | 2058 | webidl-conversions@3.0.1: {} 2059 | 2060 | whatwg-url@5.0.0: 2061 | dependencies: 2062 | tr46: 0.0.3 2063 | webidl-conversions: 3.0.1 2064 | 2065 | which@2.0.2: 2066 | dependencies: 2067 | isexe: 2.0.0 2068 | 2069 | wrap-ansi@7.0.0: 2070 | dependencies: 2071 | ansi-styles: 4.3.0 2072 | string-width: 4.2.3 2073 | strip-ansi: 6.0.1 2074 | 2075 | wrap-ansi@8.1.0: 2076 | dependencies: 2077 | ansi-styles: 6.2.1 2078 | string-width: 5.1.2 2079 | strip-ansi: 7.1.0 2080 | 2081 | yaml@2.3.4: {} 2082 | -------------------------------------------------------------------------------- /ejemplos/xx-ai-review-summary/postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | }; 7 | -------------------------------------------------------------------------------- /ejemplos/xx-ai-review-summary/public/next.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ejemplos/xx-ai-review-summary/public/placeholder-user.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/hackaton-vercel-2024/8e867addcc41a983eb37809682400a38ac0a842a/ejemplos/xx-ai-review-summary/public/placeholder-user.jpg -------------------------------------------------------------------------------- /ejemplos/xx-ai-review-summary/public/vercel.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ejemplos/xx-ai-review-summary/tailwind.config.ts: -------------------------------------------------------------------------------- 1 | import type { Config } from "tailwindcss"; 2 | 3 | const config: Config = { 4 | content: [ 5 | "./pages/**/*.{js,ts,jsx,tsx,mdx}", 6 | "./components/**/*.{js,ts,jsx,tsx,mdx}", 7 | "./app/**/*.{js,ts,jsx,tsx,mdx}", 8 | ], 9 | theme: { 10 | extend: { 11 | backgroundImage: { 12 | "gradient-radial": "radial-gradient(var(--tw-gradient-stops))", 13 | "gradient-conic": 14 | "conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))", 15 | }, 16 | }, 17 | }, 18 | plugins: [require("tailwindcss-animate")], 19 | }; 20 | export default config; 21 | -------------------------------------------------------------------------------- /ejemplos/xx-ai-review-summary/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "lib": ["dom", "dom.iterable", "esnext"], 4 | "allowJs": true, 5 | "skipLibCheck": true, 6 | "strict": true, 7 | "noEmit": true, 8 | "esModuleInterop": true, 9 | "module": "esnext", 10 | "moduleResolution": "bundler", 11 | "resolveJsonModule": true, 12 | "isolatedModules": true, 13 | "jsx": "preserve", 14 | "incremental": true, 15 | "plugins": [ 16 | { 17 | "name": "next" 18 | } 19 | ], 20 | "paths": { 21 | "@/*": ["./*"] 22 | } 23 | }, 24 | "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], 25 | "exclude": ["node_modules"] 26 | } 27 | -------------------------------------------------------------------------------- /ejemplos/xx-chat-node/.gitignore: -------------------------------------------------------------------------------- 1 | .env 2 | node_modules -------------------------------------------------------------------------------- /ejemplos/xx-chat-node/README.md: -------------------------------------------------------------------------------- 1 | # Proyecto de Node 2 | 3 | pnpm add ai @ai-sdk/openai dotenv 4 | pnpm add -D @types/node tsx typescript 5 | 6 | ```ts 7 | // para leer lo que escribes en la terminal 8 | import * as readline from 'node:readline/promises' 9 | // traemos las dependencias necesarias 10 | import { type CoreMessage, streamText } from 'ai' 11 | // el cliente de OpenAI 12 | import { openai } from '@ai-sdk/openai' 13 | // para leer las variables de entorno 14 | import dotenv from 'dotenv' 15 | dotenv.config() 16 | 17 | // creamos la interfaz de terminal para leer y escribir 18 | const terminal = readline.createInterface({ 19 | input: process.stdin, 20 | output: process.stdout, 21 | }) 22 | 23 | // array con los mensajes de la conversación 24 | const messages: CoreMessage[] = [] 25 | 26 | async function main() { 27 | // loop infinito para leer y escribir continuamente 28 | while (true) { 29 | // preguntamos en la terminal al usuario que escriba 30 | const userInput = await terminal.question('Tú: ') 31 | // añadimos el mensaje al array 32 | messages.push({ role: 'user', content: userInput }) 33 | // preguntamos a chatgpt para responder 34 | // con este mensaje y todos los demás 35 | const result = await streamText({ 36 | model: openai('gpt-4-turbo'), 37 | system: `Eres un asistente útil, honesto y educado.`, 38 | messages, 39 | }) 40 | 41 | // vamos a guardar el resultado de la conversación poco a poco 42 | let fullResponse = '' 43 | process.stdout.write('\nChatGPT: ') 44 | 45 | // conforme recibimos información de chatgpt, hacemos algo 46 | for await (const part of result.textStream) { 47 | fullResponse += part // vamos guardando el resultado en el array 48 | process.stdout.write(part) // vamos mostrando el resultado en la terminal 49 | } 50 | 51 | // terminamos la conversación con un salto de línea 52 | process.stdout.write('\n\n') 53 | // guardamos el mensaje final de chatgpt en el array 54 | messages.push({ role: 'assistant', content: fullResponse }) 55 | // volvemos al inicio del bucle para preguntar de nuevo al usuario 56 | } 57 | } 58 | 59 | main().catch(console.error) 60 | ``` -------------------------------------------------------------------------------- /ejemplos/xx-chat-node/chatgpt.js: -------------------------------------------------------------------------------- 1 | import * as readline from 'node:readline/promises' 2 | import { streamText } from 'ai' 3 | import { openai } from '@ai-sdk/openai' 4 | 5 | process.env.OPENAI_API_KEY = "sk-proj-LZm1eP3..." 6 | 7 | const terminal = readline.createInterface({ 8 | input: process.stdin, 9 | output: process.stdout, 10 | }) 11 | 12 | const messages = [] 13 | 14 | async function main() { 15 | while (true) { 16 | const userInput = await terminal.question('Tú: ') 17 | messages.push({ role: 'user', content: userInput }) 18 | 19 | const result = await streamText({ 20 | model: openai('gpt-4-turbo'), 21 | system: `Eres un asistente útil, honesto y educado.`, 22 | messages, 23 | }) 24 | 25 | let fullResponse = '' 26 | process.stdout.write('\nChatGPT: ') 27 | 28 | for await (const part of result.textStream) { 29 | fullResponse += part 30 | process.stdout.write(part) 31 | } 32 | 33 | process.stdout.write('\n\n') 34 | messages.push({ role: 'assistant', content: fullResponse }) 35 | } 36 | } 37 | 38 | main().catch(console.error) -------------------------------------------------------------------------------- /ejemplos/xx-chat-node/index.ts: -------------------------------------------------------------------------------- 1 | // para leer lo que escribes en la terminal 2 | import * as readline from 'node:readline/promises' 3 | // traemos las dependencias necesarias 4 | import { type CoreMessage, streamText } from 'ai' // vercel sdk AI 5 | // el cliente de OpenAI 6 | import { openai } from '@ai-sdk/openai' 7 | // para leer las variables de entorno 8 | import dotenv from 'dotenv' 9 | dotenv.config() 10 | 11 | // creamos la interfaz de terminal para leer y escribir 12 | const terminal = readline.createInterface({ 13 | input: process.stdin, 14 | output: process.stdout, 15 | }) 16 | 17 | // array con los mensajes de la conversación 18 | const messages: CoreMessage[] = [] 19 | 20 | async function main() { 21 | // loop infinito para leer y escribir continuamente 22 | while (true) { 23 | // preguntamos en la terminal al usuario que escriba 24 | const userInput = await terminal.question('Tú: ') 25 | // añadimos el mensaje al array 26 | messages.push({ role: 'user', content: userInput }) 27 | // preguntamos a chatgpt para responder 28 | // con este mensaje y todos los demás 29 | const result = await streamText({ 30 | model: openai('gpt-4-turbo'), 31 | system: `Eres un asistente que tiene acento francés. Haz que tus respuestas se note que hablas en español pero con un deje francés.`, 32 | messages, 33 | }) 34 | 35 | // vamos a guardar el resultado de la conversación poco a poco 36 | let fullResponse = '' 37 | process.stdout.write('\nChatGPT: ') 38 | 39 | // conforme recibimos información de chatgpt, hacemos algo 40 | for await (const part of result.textStream) { 41 | fullResponse += part // vamos guardando el resultado en el array 42 | process.stdout.write(part) // vamos mostrando el resultado en la terminal 43 | } 44 | 45 | // terminamos la conversación con un salto de línea 46 | process.stdout.write('\n\n') 47 | // guardamos el mensaje final de chatgpt en el array 48 | messages.push({ role: 'assistant', content: fullResponse }) 49 | // volvemos al inicio del bucle para preguntar de nuevo al usuario 50 | } 51 | } 52 | 53 | main().catch(console.error) -------------------------------------------------------------------------------- /ejemplos/xx-chat-node/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "xx-chat-node", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "scripts": { 6 | "test": "echo \"Error: no test specified\" && exit 1" 7 | }, 8 | "keywords": [], 9 | "author": "", 10 | "license": "ISC", 11 | "description": "", 12 | "dependencies": { 13 | "@ai-sdk/openai": "0.0.35", 14 | "ai": "3.2.18", 15 | "dotenv": "16.4.5", 16 | "zod": "3.23.8" 17 | }, 18 | "devDependencies": { 19 | "@types/node": "20.14.10", 20 | "tsx": "4.16.2", 21 | "typescript": "5.5.3" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /ejemplos/xx-chat-node/pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | dependencies: 11 | '@ai-sdk/openai': 12 | specifier: ^0.0.35 13 | version: 0.0.35(zod@3.23.8) 14 | ai: 15 | specifier: ^3.2.18 16 | version: 3.2.18(react@18.3.1)(svelte@4.2.18)(vue@3.4.31(typescript@5.5.3))(zod@3.23.8) 17 | dotenv: 18 | specifier: ^16.4.5 19 | version: 16.4.5 20 | zod: 21 | specifier: ^3.23.8 22 | version: 3.23.8 23 | devDependencies: 24 | '@types/node': 25 | specifier: ^20.14.10 26 | version: 20.14.10 27 | tsx: 28 | specifier: ^4.16.2 29 | version: 4.16.2 30 | typescript: 31 | specifier: ^5.5.3 32 | version: 5.5.3 33 | 34 | packages: 35 | 36 | '@ai-sdk/openai@0.0.35': 37 | resolution: {integrity: sha512-CRBmVLU+C4jwfr4kxc40l4hrsqi/Jd1kd9MmJqeCSBHzXA7iTjQPFddz3uDG+73jLJk2DSlG5wrBLZmUYSnARw==} 38 | engines: {node: '>=18'} 39 | peerDependencies: 40 | zod: ^3.0.0 41 | 42 | '@ai-sdk/provider-utils@1.0.1': 43 | resolution: {integrity: sha512-PtbxRf/CQwNsXuLan8FmyseE/eQ3uF6LGAvjFD47MosHs9cYaWBDIjx2XraucdVWp1gmRYb2SO4P48xPi2r/NQ==} 44 | engines: {node: '>=18'} 45 | peerDependencies: 46 | zod: ^3.0.0 47 | peerDependenciesMeta: 48 | zod: 49 | optional: true 50 | 51 | '@ai-sdk/provider@0.0.11': 52 | resolution: {integrity: sha512-VTipPQ92Moa5Ovg/nZIc8yNoIFfukZjUHZcQMduJbiUh3CLQyrBAKTEV9AwjPy8wgVxj3+GZjon0yyOJKhfp5g==} 53 | engines: {node: '>=18'} 54 | 55 | '@ai-sdk/react@0.0.18': 56 | resolution: {integrity: sha512-e1JUnUmc5LSR/PIZVOZ+az6ywKcQrBnahmDwX8GJhlGSPoG3PfAGAm9ZnhqwaYr5orPMhh8+9eUdwbvrWWQwPg==} 57 | engines: {node: '>=18'} 58 | peerDependencies: 59 | react: ^18 || ^19 60 | zod: ^3.0.0 61 | peerDependenciesMeta: 62 | react: 63 | optional: true 64 | zod: 65 | optional: true 66 | 67 | '@ai-sdk/solid@0.0.12': 68 | resolution: {integrity: sha512-H7zkbrdfGQ7wwgDsineg6PcBD8YSUTn7aUSHdmLZqezRtBuzRtRRGj+Jcr6LnN7j28GWzv8UO7sLSPFfCfQRTA==} 69 | engines: {node: '>=18'} 70 | peerDependencies: 71 | solid-js: ^1.7.7 72 | peerDependenciesMeta: 73 | solid-js: 74 | optional: true 75 | 76 | '@ai-sdk/svelte@0.0.13': 77 | resolution: {integrity: sha512-AeJNxxd3qoxfZtnYanFrHAS4HyymN70VDyZQo3swhjVDkLUtDTnCd1HwBVn8OL9qSJjxawOWjM6fccEz6VY2pQ==} 78 | engines: {node: '>=18'} 79 | peerDependencies: 80 | svelte: ^3.0.0 || ^4.0.0 81 | peerDependenciesMeta: 82 | svelte: 83 | optional: true 84 | 85 | '@ai-sdk/ui-utils@0.0.10': 86 | resolution: {integrity: sha512-XHqfqtx9ryVXZ/ZFyVEX44r2JJslKh3DBSIPVdSsiNoxUpzzM7mrIVT2XOMSrCSxoCqScOk8GVRsw/dwG1xw7Q==} 87 | engines: {node: '>=18'} 88 | peerDependencies: 89 | zod: ^3.0.0 90 | peerDependenciesMeta: 91 | zod: 92 | optional: true 93 | 94 | '@ai-sdk/vue@0.0.12': 95 | resolution: {integrity: sha512-qhHRNp+F5SDkO4HklrD6EmRCrec4xO7huHkm08QxoUm2l8sPcnPgUG3ur6+3Q6QDKI9WmfbqkRR3YR0y6IZM5g==} 96 | engines: {node: '>=18'} 97 | peerDependencies: 98 | vue: ^3.3.4 99 | peerDependenciesMeta: 100 | vue: 101 | optional: true 102 | 103 | '@ampproject/remapping@2.3.0': 104 | resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} 105 | engines: {node: '>=6.0.0'} 106 | 107 | '@babel/helper-string-parser@7.24.7': 108 | resolution: {integrity: sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==} 109 | engines: {node: '>=6.9.0'} 110 | 111 | '@babel/helper-validator-identifier@7.24.7': 112 | resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} 113 | engines: {node: '>=6.9.0'} 114 | 115 | '@babel/parser@7.24.7': 116 | resolution: {integrity: sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==} 117 | engines: {node: '>=6.0.0'} 118 | hasBin: true 119 | 120 | '@babel/types@7.24.7': 121 | resolution: {integrity: sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==} 122 | engines: {node: '>=6.9.0'} 123 | 124 | '@esbuild/aix-ppc64@0.21.5': 125 | resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} 126 | engines: {node: '>=12'} 127 | cpu: [ppc64] 128 | os: [aix] 129 | 130 | '@esbuild/android-arm64@0.21.5': 131 | resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} 132 | engines: {node: '>=12'} 133 | cpu: [arm64] 134 | os: [android] 135 | 136 | '@esbuild/android-arm@0.21.5': 137 | resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} 138 | engines: {node: '>=12'} 139 | cpu: [arm] 140 | os: [android] 141 | 142 | '@esbuild/android-x64@0.21.5': 143 | resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} 144 | engines: {node: '>=12'} 145 | cpu: [x64] 146 | os: [android] 147 | 148 | '@esbuild/darwin-arm64@0.21.5': 149 | resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} 150 | engines: {node: '>=12'} 151 | cpu: [arm64] 152 | os: [darwin] 153 | 154 | '@esbuild/darwin-x64@0.21.5': 155 | resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} 156 | engines: {node: '>=12'} 157 | cpu: [x64] 158 | os: [darwin] 159 | 160 | '@esbuild/freebsd-arm64@0.21.5': 161 | resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} 162 | engines: {node: '>=12'} 163 | cpu: [arm64] 164 | os: [freebsd] 165 | 166 | '@esbuild/freebsd-x64@0.21.5': 167 | resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} 168 | engines: {node: '>=12'} 169 | cpu: [x64] 170 | os: [freebsd] 171 | 172 | '@esbuild/linux-arm64@0.21.5': 173 | resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} 174 | engines: {node: '>=12'} 175 | cpu: [arm64] 176 | os: [linux] 177 | 178 | '@esbuild/linux-arm@0.21.5': 179 | resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} 180 | engines: {node: '>=12'} 181 | cpu: [arm] 182 | os: [linux] 183 | 184 | '@esbuild/linux-ia32@0.21.5': 185 | resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} 186 | engines: {node: '>=12'} 187 | cpu: [ia32] 188 | os: [linux] 189 | 190 | '@esbuild/linux-loong64@0.21.5': 191 | resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} 192 | engines: {node: '>=12'} 193 | cpu: [loong64] 194 | os: [linux] 195 | 196 | '@esbuild/linux-mips64el@0.21.5': 197 | resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} 198 | engines: {node: '>=12'} 199 | cpu: [mips64el] 200 | os: [linux] 201 | 202 | '@esbuild/linux-ppc64@0.21.5': 203 | resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} 204 | engines: {node: '>=12'} 205 | cpu: [ppc64] 206 | os: [linux] 207 | 208 | '@esbuild/linux-riscv64@0.21.5': 209 | resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} 210 | engines: {node: '>=12'} 211 | cpu: [riscv64] 212 | os: [linux] 213 | 214 | '@esbuild/linux-s390x@0.21.5': 215 | resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} 216 | engines: {node: '>=12'} 217 | cpu: [s390x] 218 | os: [linux] 219 | 220 | '@esbuild/linux-x64@0.21.5': 221 | resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} 222 | engines: {node: '>=12'} 223 | cpu: [x64] 224 | os: [linux] 225 | 226 | '@esbuild/netbsd-x64@0.21.5': 227 | resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} 228 | engines: {node: '>=12'} 229 | cpu: [x64] 230 | os: [netbsd] 231 | 232 | '@esbuild/openbsd-x64@0.21.5': 233 | resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} 234 | engines: {node: '>=12'} 235 | cpu: [x64] 236 | os: [openbsd] 237 | 238 | '@esbuild/sunos-x64@0.21.5': 239 | resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} 240 | engines: {node: '>=12'} 241 | cpu: [x64] 242 | os: [sunos] 243 | 244 | '@esbuild/win32-arm64@0.21.5': 245 | resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} 246 | engines: {node: '>=12'} 247 | cpu: [arm64] 248 | os: [win32] 249 | 250 | '@esbuild/win32-ia32@0.21.5': 251 | resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} 252 | engines: {node: '>=12'} 253 | cpu: [ia32] 254 | os: [win32] 255 | 256 | '@esbuild/win32-x64@0.21.5': 257 | resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} 258 | engines: {node: '>=12'} 259 | cpu: [x64] 260 | os: [win32] 261 | 262 | '@jridgewell/gen-mapping@0.3.5': 263 | resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} 264 | engines: {node: '>=6.0.0'} 265 | 266 | '@jridgewell/resolve-uri@3.1.2': 267 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 268 | engines: {node: '>=6.0.0'} 269 | 270 | '@jridgewell/set-array@1.2.1': 271 | resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} 272 | engines: {node: '>=6.0.0'} 273 | 274 | '@jridgewell/sourcemap-codec@1.4.15': 275 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} 276 | 277 | '@jridgewell/trace-mapping@0.3.25': 278 | resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} 279 | 280 | '@types/diff-match-patch@1.0.36': 281 | resolution: {integrity: sha512-xFdR6tkm0MWvBfO8xXCSsinYxHcqkQUlcHeSpMC2ukzOb6lwQAfDmW+Qt0AvlGd8HpsS28qKsB+oPeJn9I39jg==} 282 | 283 | '@types/estree@1.0.5': 284 | resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} 285 | 286 | '@types/node@20.14.10': 287 | resolution: {integrity: sha512-MdiXf+nDuMvY0gJKxyfZ7/6UFsETO7mGKF54MVD/ekJS6HdFtpZFBgrh6Pseu64XTb2MLyFPlbW6hj8HYRQNOQ==} 288 | 289 | '@vue/compiler-core@3.4.31': 290 | resolution: {integrity: sha512-skOiodXWTV3DxfDhB4rOf3OGalpITLlgCeOwb+Y9GJpfQ8ErigdBUHomBzvG78JoVE8MJoQsb+qhZiHfKeNeEg==} 291 | 292 | '@vue/compiler-dom@3.4.31': 293 | resolution: {integrity: sha512-wK424WMXsG1IGMyDGyLqB+TbmEBFM78hIsOJ9QwUVLGrcSk0ak6zYty7Pj8ftm7nEtdU/DGQxAXp0/lM/2cEpQ==} 294 | 295 | '@vue/compiler-sfc@3.4.31': 296 | resolution: {integrity: sha512-einJxqEw8IIJxzmnxmJBuK2usI+lJonl53foq+9etB2HAzlPjAS/wa7r0uUpXw5ByX3/0uswVSrjNb17vJm1kQ==} 297 | 298 | '@vue/compiler-ssr@3.4.31': 299 | resolution: {integrity: sha512-RtefmITAje3fJ8FSg1gwgDhdKhZVntIVbwupdyZDSifZTRMiWxWehAOTCc8/KZDnBOcYQ4/9VWxsTbd3wT0hAA==} 300 | 301 | '@vue/reactivity@3.4.31': 302 | resolution: {integrity: sha512-VGkTani8SOoVkZNds1PfJ/T1SlAIOf8E58PGAhIOUDYPC4GAmFA2u/E14TDAFcf3vVDKunc4QqCe/SHr8xC65Q==} 303 | 304 | '@vue/runtime-core@3.4.31': 305 | resolution: {integrity: sha512-LDkztxeUPazxG/p8c5JDDKPfkCDBkkiNLVNf7XZIUnJ+66GVGkP+TIh34+8LtPisZ+HMWl2zqhIw0xN5MwU1cw==} 306 | 307 | '@vue/runtime-dom@3.4.31': 308 | resolution: {integrity: sha512-2Auws3mB7+lHhTFCg8E9ZWopA6Q6L455EcU7bzcQ4x6Dn4cCPuqj6S2oBZgN2a8vJRS/LSYYxwFFq2Hlx3Fsaw==} 309 | 310 | '@vue/server-renderer@3.4.31': 311 | resolution: {integrity: sha512-D5BLbdvrlR9PE3by9GaUp1gQXlCNadIZytMIb8H2h3FMWJd4oUfkUTEH2wAr3qxoRz25uxbTcbqd3WKlm9EHQA==} 312 | peerDependencies: 313 | vue: 3.4.31 314 | 315 | '@vue/shared@3.4.31': 316 | resolution: {integrity: sha512-Yp3wtJk//8cO4NItOPpi3QkLExAr/aLBGZMmTtW9WpdwBCJpRM6zj9WgWktXAl8IDIozwNMByT45JP3tO3ACWA==} 317 | 318 | acorn@8.12.1: 319 | resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} 320 | engines: {node: '>=0.4.0'} 321 | hasBin: true 322 | 323 | ai@3.2.18: 324 | resolution: {integrity: sha512-8ZZF7s9sgerhPEUP8SdUstEQo9JneIah/lMpiiH+sTgoSmu1S/u8pTQ7rDwzfVHM6qYOeGZGHnye3VK4Sn6lbw==} 325 | engines: {node: '>=18'} 326 | peerDependencies: 327 | openai: ^4.42.0 328 | react: ^18 || ^19 329 | svelte: ^3.0.0 || ^4.0.0 330 | zod: ^3.0.0 331 | peerDependenciesMeta: 332 | openai: 333 | optional: true 334 | react: 335 | optional: true 336 | svelte: 337 | optional: true 338 | zod: 339 | optional: true 340 | 341 | aria-query@5.3.0: 342 | resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} 343 | 344 | axobject-query@4.0.0: 345 | resolution: {integrity: sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==} 346 | 347 | chalk@5.3.0: 348 | resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} 349 | engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} 350 | 351 | code-red@1.0.4: 352 | resolution: {integrity: sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==} 353 | 354 | css-tree@2.3.1: 355 | resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} 356 | engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} 357 | 358 | csstype@3.1.3: 359 | resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} 360 | 361 | dequal@2.0.3: 362 | resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} 363 | engines: {node: '>=6'} 364 | 365 | diff-match-patch@1.0.5: 366 | resolution: {integrity: sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==} 367 | 368 | dotenv@16.4.5: 369 | resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} 370 | engines: {node: '>=12'} 371 | 372 | entities@4.5.0: 373 | resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} 374 | engines: {node: '>=0.12'} 375 | 376 | esbuild@0.21.5: 377 | resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} 378 | engines: {node: '>=12'} 379 | hasBin: true 380 | 381 | estree-walker@2.0.2: 382 | resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} 383 | 384 | estree-walker@3.0.3: 385 | resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} 386 | 387 | eventsource-parser@1.1.2: 388 | resolution: {integrity: sha512-v0eOBUbiaFojBu2s2NPBfYUoRR9GjcDNvCXVaqEf5vVfpIAh9f8RCo4vXTP8c63QRKCFwoLpMpTdPwwhEKVgzA==} 389 | engines: {node: '>=14.18'} 390 | 391 | fsevents@2.3.3: 392 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 393 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 394 | os: [darwin] 395 | 396 | get-tsconfig@4.7.5: 397 | resolution: {integrity: sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==} 398 | 399 | is-reference@3.0.2: 400 | resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} 401 | 402 | js-tokens@4.0.0: 403 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 404 | 405 | json-schema@0.4.0: 406 | resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} 407 | 408 | jsondiffpatch@0.6.0: 409 | resolution: {integrity: sha512-3QItJOXp2AP1uv7waBkao5nCvhEv+QmJAd38Ybq7wNI74Q+BBmnLn4EDKz6yI9xGAIQoUF87qHt+kc1IVxB4zQ==} 410 | engines: {node: ^18.0.0 || >=20.0.0} 411 | hasBin: true 412 | 413 | locate-character@3.0.0: 414 | resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} 415 | 416 | loose-envify@1.4.0: 417 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} 418 | hasBin: true 419 | 420 | magic-string@0.30.10: 421 | resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} 422 | 423 | mdn-data@2.0.30: 424 | resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} 425 | 426 | nanoid@3.3.6: 427 | resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} 428 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 429 | hasBin: true 430 | 431 | nanoid@3.3.7: 432 | resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} 433 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 434 | hasBin: true 435 | 436 | periscopic@3.1.0: 437 | resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} 438 | 439 | picocolors@1.0.1: 440 | resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} 441 | 442 | postcss@8.4.39: 443 | resolution: {integrity: sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==} 444 | engines: {node: ^10 || ^12 || >=14} 445 | 446 | react@18.3.1: 447 | resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} 448 | engines: {node: '>=0.10.0'} 449 | 450 | resolve-pkg-maps@1.0.0: 451 | resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} 452 | 453 | secure-json-parse@2.7.0: 454 | resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} 455 | 456 | source-map-js@1.2.0: 457 | resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} 458 | engines: {node: '>=0.10.0'} 459 | 460 | sswr@2.1.0: 461 | resolution: {integrity: sha512-Cqc355SYlTAaUt8iDPaC/4DPPXK925PePLMxyBKuWd5kKc5mwsG3nT9+Mq2tyguL5s7b4Jg+IRMpTRsNTAfpSQ==} 462 | peerDependencies: 463 | svelte: ^4.0.0 || ^5.0.0-next.0 464 | 465 | svelte@4.2.18: 466 | resolution: {integrity: sha512-d0FdzYIiAePqRJEb90WlJDkjUEx42xhivxN8muUBmfZnP+tzUgz12DJ2hRJi8sIHCME7jeK1PTMgKPSfTd8JrA==} 467 | engines: {node: '>=16'} 468 | 469 | swr@2.2.0: 470 | resolution: {integrity: sha512-AjqHOv2lAhkuUdIiBu9xbuettzAzWXmCEcLONNKJRba87WAefz8Ca9d6ds/SzrPc235n1IxWYdhJ2zF3MNUaoQ==} 471 | peerDependencies: 472 | react: ^16.11.0 || ^17.0.0 || ^18.0.0 473 | 474 | swrev@4.0.0: 475 | resolution: {integrity: sha512-LqVcOHSB4cPGgitD1riJ1Hh4vdmITOp+BkmfmXRh4hSF/t7EnS4iD+SOTmq7w5pPm/SiPeto4ADbKS6dHUDWFA==} 476 | 477 | swrv@1.0.4: 478 | resolution: {integrity: sha512-zjEkcP8Ywmj+xOJW3lIT65ciY/4AL4e/Or7Gj0MzU3zBJNMdJiT8geVZhINavnlHRMMCcJLHhraLTAiDOTmQ9g==} 479 | peerDependencies: 480 | vue: '>=3.2.26 < 4' 481 | 482 | to-fast-properties@2.0.0: 483 | resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} 484 | engines: {node: '>=4'} 485 | 486 | tsx@4.16.2: 487 | resolution: {integrity: sha512-C1uWweJDgdtX2x600HjaFaucXTilT7tgUZHbOE4+ypskZ1OP8CRCSDkCxG6Vya9EwaFIVagWwpaVAn5wzypaqQ==} 488 | engines: {node: '>=18.0.0'} 489 | hasBin: true 490 | 491 | typescript@5.5.3: 492 | resolution: {integrity: sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==} 493 | engines: {node: '>=14.17'} 494 | hasBin: true 495 | 496 | undici-types@5.26.5: 497 | resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} 498 | 499 | use-sync-external-store@1.2.2: 500 | resolution: {integrity: sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==} 501 | peerDependencies: 502 | react: ^16.8.0 || ^17.0.0 || ^18.0.0 503 | 504 | vue@3.4.31: 505 | resolution: {integrity: sha512-njqRrOy7W3YLAlVqSKpBebtZpDVg21FPoaq1I7f/+qqBThK9ChAIjkRWgeP6Eat+8C+iia4P3OYqpATP21BCoQ==} 506 | peerDependencies: 507 | typescript: '*' 508 | peerDependenciesMeta: 509 | typescript: 510 | optional: true 511 | 512 | zod-to-json-schema@3.22.5: 513 | resolution: {integrity: sha512-+akaPo6a0zpVCCseDed504KBJUQpEW5QZw7RMneNmKw+fGaML1Z9tUNLnHHAC8x6dzVRO1eB2oEMyZRnuBZg7Q==} 514 | peerDependencies: 515 | zod: ^3.22.4 516 | 517 | zod@3.23.8: 518 | resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} 519 | 520 | snapshots: 521 | 522 | '@ai-sdk/openai@0.0.35(zod@3.23.8)': 523 | dependencies: 524 | '@ai-sdk/provider': 0.0.11 525 | '@ai-sdk/provider-utils': 1.0.1(zod@3.23.8) 526 | zod: 3.23.8 527 | 528 | '@ai-sdk/provider-utils@1.0.1(zod@3.23.8)': 529 | dependencies: 530 | '@ai-sdk/provider': 0.0.11 531 | eventsource-parser: 1.1.2 532 | nanoid: 3.3.6 533 | secure-json-parse: 2.7.0 534 | optionalDependencies: 535 | zod: 3.23.8 536 | 537 | '@ai-sdk/provider@0.0.11': 538 | dependencies: 539 | json-schema: 0.4.0 540 | 541 | '@ai-sdk/react@0.0.18(react@18.3.1)(zod@3.23.8)': 542 | dependencies: 543 | '@ai-sdk/provider-utils': 1.0.1(zod@3.23.8) 544 | '@ai-sdk/ui-utils': 0.0.10(zod@3.23.8) 545 | swr: 2.2.0(react@18.3.1) 546 | optionalDependencies: 547 | react: 18.3.1 548 | zod: 3.23.8 549 | 550 | '@ai-sdk/solid@0.0.12(zod@3.23.8)': 551 | dependencies: 552 | '@ai-sdk/ui-utils': 0.0.10(zod@3.23.8) 553 | transitivePeerDependencies: 554 | - zod 555 | 556 | '@ai-sdk/svelte@0.0.13(svelte@4.2.18)(zod@3.23.8)': 557 | dependencies: 558 | '@ai-sdk/provider-utils': 1.0.1(zod@3.23.8) 559 | '@ai-sdk/ui-utils': 0.0.10(zod@3.23.8) 560 | sswr: 2.1.0(svelte@4.2.18) 561 | optionalDependencies: 562 | svelte: 4.2.18 563 | transitivePeerDependencies: 564 | - zod 565 | 566 | '@ai-sdk/ui-utils@0.0.10(zod@3.23.8)': 567 | dependencies: 568 | '@ai-sdk/provider-utils': 1.0.1(zod@3.23.8) 569 | secure-json-parse: 2.7.0 570 | optionalDependencies: 571 | zod: 3.23.8 572 | 573 | '@ai-sdk/vue@0.0.12(vue@3.4.31(typescript@5.5.3))(zod@3.23.8)': 574 | dependencies: 575 | '@ai-sdk/ui-utils': 0.0.10(zod@3.23.8) 576 | swrv: 1.0.4(vue@3.4.31(typescript@5.5.3)) 577 | optionalDependencies: 578 | vue: 3.4.31(typescript@5.5.3) 579 | transitivePeerDependencies: 580 | - zod 581 | 582 | '@ampproject/remapping@2.3.0': 583 | dependencies: 584 | '@jridgewell/gen-mapping': 0.3.5 585 | '@jridgewell/trace-mapping': 0.3.25 586 | 587 | '@babel/helper-string-parser@7.24.7': {} 588 | 589 | '@babel/helper-validator-identifier@7.24.7': {} 590 | 591 | '@babel/parser@7.24.7': 592 | dependencies: 593 | '@babel/types': 7.24.7 594 | 595 | '@babel/types@7.24.7': 596 | dependencies: 597 | '@babel/helper-string-parser': 7.24.7 598 | '@babel/helper-validator-identifier': 7.24.7 599 | to-fast-properties: 2.0.0 600 | 601 | '@esbuild/aix-ppc64@0.21.5': 602 | optional: true 603 | 604 | '@esbuild/android-arm64@0.21.5': 605 | optional: true 606 | 607 | '@esbuild/android-arm@0.21.5': 608 | optional: true 609 | 610 | '@esbuild/android-x64@0.21.5': 611 | optional: true 612 | 613 | '@esbuild/darwin-arm64@0.21.5': 614 | optional: true 615 | 616 | '@esbuild/darwin-x64@0.21.5': 617 | optional: true 618 | 619 | '@esbuild/freebsd-arm64@0.21.5': 620 | optional: true 621 | 622 | '@esbuild/freebsd-x64@0.21.5': 623 | optional: true 624 | 625 | '@esbuild/linux-arm64@0.21.5': 626 | optional: true 627 | 628 | '@esbuild/linux-arm@0.21.5': 629 | optional: true 630 | 631 | '@esbuild/linux-ia32@0.21.5': 632 | optional: true 633 | 634 | '@esbuild/linux-loong64@0.21.5': 635 | optional: true 636 | 637 | '@esbuild/linux-mips64el@0.21.5': 638 | optional: true 639 | 640 | '@esbuild/linux-ppc64@0.21.5': 641 | optional: true 642 | 643 | '@esbuild/linux-riscv64@0.21.5': 644 | optional: true 645 | 646 | '@esbuild/linux-s390x@0.21.5': 647 | optional: true 648 | 649 | '@esbuild/linux-x64@0.21.5': 650 | optional: true 651 | 652 | '@esbuild/netbsd-x64@0.21.5': 653 | optional: true 654 | 655 | '@esbuild/openbsd-x64@0.21.5': 656 | optional: true 657 | 658 | '@esbuild/sunos-x64@0.21.5': 659 | optional: true 660 | 661 | '@esbuild/win32-arm64@0.21.5': 662 | optional: true 663 | 664 | '@esbuild/win32-ia32@0.21.5': 665 | optional: true 666 | 667 | '@esbuild/win32-x64@0.21.5': 668 | optional: true 669 | 670 | '@jridgewell/gen-mapping@0.3.5': 671 | dependencies: 672 | '@jridgewell/set-array': 1.2.1 673 | '@jridgewell/sourcemap-codec': 1.4.15 674 | '@jridgewell/trace-mapping': 0.3.25 675 | 676 | '@jridgewell/resolve-uri@3.1.2': {} 677 | 678 | '@jridgewell/set-array@1.2.1': {} 679 | 680 | '@jridgewell/sourcemap-codec@1.4.15': {} 681 | 682 | '@jridgewell/trace-mapping@0.3.25': 683 | dependencies: 684 | '@jridgewell/resolve-uri': 3.1.2 685 | '@jridgewell/sourcemap-codec': 1.4.15 686 | 687 | '@types/diff-match-patch@1.0.36': {} 688 | 689 | '@types/estree@1.0.5': {} 690 | 691 | '@types/node@20.14.10': 692 | dependencies: 693 | undici-types: 5.26.5 694 | 695 | '@vue/compiler-core@3.4.31': 696 | dependencies: 697 | '@babel/parser': 7.24.7 698 | '@vue/shared': 3.4.31 699 | entities: 4.5.0 700 | estree-walker: 2.0.2 701 | source-map-js: 1.2.0 702 | 703 | '@vue/compiler-dom@3.4.31': 704 | dependencies: 705 | '@vue/compiler-core': 3.4.31 706 | '@vue/shared': 3.4.31 707 | 708 | '@vue/compiler-sfc@3.4.31': 709 | dependencies: 710 | '@babel/parser': 7.24.7 711 | '@vue/compiler-core': 3.4.31 712 | '@vue/compiler-dom': 3.4.31 713 | '@vue/compiler-ssr': 3.4.31 714 | '@vue/shared': 3.4.31 715 | estree-walker: 2.0.2 716 | magic-string: 0.30.10 717 | postcss: 8.4.39 718 | source-map-js: 1.2.0 719 | 720 | '@vue/compiler-ssr@3.4.31': 721 | dependencies: 722 | '@vue/compiler-dom': 3.4.31 723 | '@vue/shared': 3.4.31 724 | 725 | '@vue/reactivity@3.4.31': 726 | dependencies: 727 | '@vue/shared': 3.4.31 728 | 729 | '@vue/runtime-core@3.4.31': 730 | dependencies: 731 | '@vue/reactivity': 3.4.31 732 | '@vue/shared': 3.4.31 733 | 734 | '@vue/runtime-dom@3.4.31': 735 | dependencies: 736 | '@vue/reactivity': 3.4.31 737 | '@vue/runtime-core': 3.4.31 738 | '@vue/shared': 3.4.31 739 | csstype: 3.1.3 740 | 741 | '@vue/server-renderer@3.4.31(vue@3.4.31(typescript@5.5.3))': 742 | dependencies: 743 | '@vue/compiler-ssr': 3.4.31 744 | '@vue/shared': 3.4.31 745 | vue: 3.4.31(typescript@5.5.3) 746 | 747 | '@vue/shared@3.4.31': {} 748 | 749 | acorn@8.12.1: {} 750 | 751 | ai@3.2.18(react@18.3.1)(svelte@4.2.18)(vue@3.4.31(typescript@5.5.3))(zod@3.23.8): 752 | dependencies: 753 | '@ai-sdk/provider': 0.0.11 754 | '@ai-sdk/provider-utils': 1.0.1(zod@3.23.8) 755 | '@ai-sdk/react': 0.0.18(react@18.3.1)(zod@3.23.8) 756 | '@ai-sdk/solid': 0.0.12(zod@3.23.8) 757 | '@ai-sdk/svelte': 0.0.13(svelte@4.2.18)(zod@3.23.8) 758 | '@ai-sdk/ui-utils': 0.0.10(zod@3.23.8) 759 | '@ai-sdk/vue': 0.0.12(vue@3.4.31(typescript@5.5.3))(zod@3.23.8) 760 | eventsource-parser: 1.1.2 761 | json-schema: 0.4.0 762 | jsondiffpatch: 0.6.0 763 | nanoid: 3.3.6 764 | secure-json-parse: 2.7.0 765 | sswr: 2.1.0(svelte@4.2.18) 766 | zod-to-json-schema: 3.22.5(zod@3.23.8) 767 | optionalDependencies: 768 | react: 18.3.1 769 | svelte: 4.2.18 770 | zod: 3.23.8 771 | transitivePeerDependencies: 772 | - solid-js 773 | - vue 774 | 775 | aria-query@5.3.0: 776 | dependencies: 777 | dequal: 2.0.3 778 | 779 | axobject-query@4.0.0: 780 | dependencies: 781 | dequal: 2.0.3 782 | 783 | chalk@5.3.0: {} 784 | 785 | code-red@1.0.4: 786 | dependencies: 787 | '@jridgewell/sourcemap-codec': 1.4.15 788 | '@types/estree': 1.0.5 789 | acorn: 8.12.1 790 | estree-walker: 3.0.3 791 | periscopic: 3.1.0 792 | 793 | css-tree@2.3.1: 794 | dependencies: 795 | mdn-data: 2.0.30 796 | source-map-js: 1.2.0 797 | 798 | csstype@3.1.3: {} 799 | 800 | dequal@2.0.3: {} 801 | 802 | diff-match-patch@1.0.5: {} 803 | 804 | dotenv@16.4.5: {} 805 | 806 | entities@4.5.0: {} 807 | 808 | esbuild@0.21.5: 809 | optionalDependencies: 810 | '@esbuild/aix-ppc64': 0.21.5 811 | '@esbuild/android-arm': 0.21.5 812 | '@esbuild/android-arm64': 0.21.5 813 | '@esbuild/android-x64': 0.21.5 814 | '@esbuild/darwin-arm64': 0.21.5 815 | '@esbuild/darwin-x64': 0.21.5 816 | '@esbuild/freebsd-arm64': 0.21.5 817 | '@esbuild/freebsd-x64': 0.21.5 818 | '@esbuild/linux-arm': 0.21.5 819 | '@esbuild/linux-arm64': 0.21.5 820 | '@esbuild/linux-ia32': 0.21.5 821 | '@esbuild/linux-loong64': 0.21.5 822 | '@esbuild/linux-mips64el': 0.21.5 823 | '@esbuild/linux-ppc64': 0.21.5 824 | '@esbuild/linux-riscv64': 0.21.5 825 | '@esbuild/linux-s390x': 0.21.5 826 | '@esbuild/linux-x64': 0.21.5 827 | '@esbuild/netbsd-x64': 0.21.5 828 | '@esbuild/openbsd-x64': 0.21.5 829 | '@esbuild/sunos-x64': 0.21.5 830 | '@esbuild/win32-arm64': 0.21.5 831 | '@esbuild/win32-ia32': 0.21.5 832 | '@esbuild/win32-x64': 0.21.5 833 | 834 | estree-walker@2.0.2: {} 835 | 836 | estree-walker@3.0.3: 837 | dependencies: 838 | '@types/estree': 1.0.5 839 | 840 | eventsource-parser@1.1.2: {} 841 | 842 | fsevents@2.3.3: 843 | optional: true 844 | 845 | get-tsconfig@4.7.5: 846 | dependencies: 847 | resolve-pkg-maps: 1.0.0 848 | 849 | is-reference@3.0.2: 850 | dependencies: 851 | '@types/estree': 1.0.5 852 | 853 | js-tokens@4.0.0: {} 854 | 855 | json-schema@0.4.0: {} 856 | 857 | jsondiffpatch@0.6.0: 858 | dependencies: 859 | '@types/diff-match-patch': 1.0.36 860 | chalk: 5.3.0 861 | diff-match-patch: 1.0.5 862 | 863 | locate-character@3.0.0: {} 864 | 865 | loose-envify@1.4.0: 866 | dependencies: 867 | js-tokens: 4.0.0 868 | 869 | magic-string@0.30.10: 870 | dependencies: 871 | '@jridgewell/sourcemap-codec': 1.4.15 872 | 873 | mdn-data@2.0.30: {} 874 | 875 | nanoid@3.3.6: {} 876 | 877 | nanoid@3.3.7: {} 878 | 879 | periscopic@3.1.0: 880 | dependencies: 881 | '@types/estree': 1.0.5 882 | estree-walker: 3.0.3 883 | is-reference: 3.0.2 884 | 885 | picocolors@1.0.1: {} 886 | 887 | postcss@8.4.39: 888 | dependencies: 889 | nanoid: 3.3.7 890 | picocolors: 1.0.1 891 | source-map-js: 1.2.0 892 | 893 | react@18.3.1: 894 | dependencies: 895 | loose-envify: 1.4.0 896 | 897 | resolve-pkg-maps@1.0.0: {} 898 | 899 | secure-json-parse@2.7.0: {} 900 | 901 | source-map-js@1.2.0: {} 902 | 903 | sswr@2.1.0(svelte@4.2.18): 904 | dependencies: 905 | svelte: 4.2.18 906 | swrev: 4.0.0 907 | 908 | svelte@4.2.18: 909 | dependencies: 910 | '@ampproject/remapping': 2.3.0 911 | '@jridgewell/sourcemap-codec': 1.4.15 912 | '@jridgewell/trace-mapping': 0.3.25 913 | '@types/estree': 1.0.5 914 | acorn: 8.12.1 915 | aria-query: 5.3.0 916 | axobject-query: 4.0.0 917 | code-red: 1.0.4 918 | css-tree: 2.3.1 919 | estree-walker: 3.0.3 920 | is-reference: 3.0.2 921 | locate-character: 3.0.0 922 | magic-string: 0.30.10 923 | periscopic: 3.1.0 924 | 925 | swr@2.2.0(react@18.3.1): 926 | dependencies: 927 | react: 18.3.1 928 | use-sync-external-store: 1.2.2(react@18.3.1) 929 | 930 | swrev@4.0.0: {} 931 | 932 | swrv@1.0.4(vue@3.4.31(typescript@5.5.3)): 933 | dependencies: 934 | vue: 3.4.31(typescript@5.5.3) 935 | 936 | to-fast-properties@2.0.0: {} 937 | 938 | tsx@4.16.2: 939 | dependencies: 940 | esbuild: 0.21.5 941 | get-tsconfig: 4.7.5 942 | optionalDependencies: 943 | fsevents: 2.3.3 944 | 945 | typescript@5.5.3: {} 946 | 947 | undici-types@5.26.5: {} 948 | 949 | use-sync-external-store@1.2.2(react@18.3.1): 950 | dependencies: 951 | react: 18.3.1 952 | 953 | vue@3.4.31(typescript@5.5.3): 954 | dependencies: 955 | '@vue/compiler-dom': 3.4.31 956 | '@vue/compiler-sfc': 3.4.31 957 | '@vue/runtime-dom': 3.4.31 958 | '@vue/server-renderer': 3.4.31(vue@3.4.31(typescript@5.5.3)) 959 | '@vue/shared': 3.4.31 960 | optionalDependencies: 961 | typescript: 5.5.3 962 | 963 | zod-to-json-schema@3.22.5(zod@3.23.8): 964 | dependencies: 965 | zod: 3.23.8 966 | 967 | zod@3.23.8: {} 968 | --------------------------------------------------------------------------------