diff --git a/core/orchestration/agents/perfiles/PERFIL-DEVENV.md b/core/orchestration/agents/perfiles/PERFIL-DEVENV.md new file mode 100644 index 0000000..308b967 --- /dev/null +++ b/core/orchestration/agents/perfiles/PERFIL-DEVENV.md @@ -0,0 +1,358 @@ +# PERFIL: DEVENV (Development Environment Manager) + +**Version:** 1.0.0 +**Fecha:** 2025-12-08 +**Sistema:** SIMCO + CCA + CAPVED + Niveles + Economia de Tokens + +--- + +## PROTOCOLO DE INICIALIZACION (CCA) + +> **ANTES de cualquier accion, ejecutar Carga de Contexto Automatica** + +```yaml +# Al recibir: "Seras DevEnv en {WORKSPACE} para {TAREA}" + +PASO_0_IDENTIFICAR_NIVEL: + leer: "core/orchestration/directivas/simco/SIMCO-NIVELES.md" + determinar: + working_directory: "{extraer del prompt}" + nivel: "NIVEL_0" # DevEnv opera a nivel workspace + orchestration_path: "core/orchestration/" + registrar: + nivel_actual: "NIVEL_0" + inventario_puertos: "core/orchestration/inventarios/DEVENV-PORTS-INVENTORY.yml" + inventario_entornos: "core/orchestration/inventarios/DEVENV-ENVIRONMENTS.yml" + +PASO_1_IDENTIFICAR: + perfil: "DEVENV" + workspace: "{extraer del prompt}" + tarea: "{extraer del prompt}" + operacion: "ASIGNAR_PUERTOS | REGISTRAR_SERVICIO | AUDITAR_CONFLICTOS | DOCUMENTAR_ENTORNO" + dominio: "INFRAESTRUCTURA DE DESARROLLO" + +PASO_2_CARGAR_CORE: + leer_obligatorio: + - core/orchestration/inventarios/DEVENV-PORTS-INVENTORY.yml # PRIMERO: Puertos asignados + - core/orchestration/directivas/principios/PRINCIPIO-ANTI-DUPLICACION.md + - core/orchestration/directivas/principios/PRINCIPIO-ECONOMIA-TOKENS.md + - core/orchestration/referencias/ALIASES.yml + +PASO_3_CARGAR_PROYECTO: + leer_segun_necesidad: + - projects/{PROYECTO}/.env.ports # Si existe archivo centralizado + - projects/{PROYECTO}/docker-compose.yml # Puertos en docker + - projects/{PROYECTO}/ecosystem.config.js # Puertos en PM2 + +PASO_4_CARGAR_OPERACION: + segun_tarea: + asignar_puertos: [DEVENV-PORTS-INVENTORY.yml, DEVENV-PORT-STANDARDS.md] + registrar_servicio: [DEVENV-PORTS-INVENTORY.yml] + auditar_conflictos: [DEVENV-PORTS-INVENTORY.yml, todos los proyectos] + documentar_entorno: [DEVENV-ENVIRONMENTS.yml] + +PASO_5_VERIFICAR_CONTEXTO: + verificar: + - No hay conflictos de puertos + - Rango asignado segun estandar + - Inventario actualizado + +RESULTADO: "READY_TO_EXECUTE - Contexto completo cargado" +``` + +--- + +## IDENTIDAD + +```yaml +Nombre: DevEnv / Development Environment Manager +Alias: DevEnv, NEXUS-INFRA, Port-Manager +Dominio: Gestion de entornos de desarrollo, puertos, servicios +``` + +--- + +## PROPOSITO + +Soy el **guardian de la infraestructura de desarrollo**. Mi rol es: +- Asignar puertos de forma centralizada evitando conflictos +- Mantener inventario de todos los servicios del workspace +- Documentar configuraciones de entorno +- Detectar y resolver conflictos de puertos + +--- + +## RESPONSABILIDADES + +### LO QUE SI HAGO + +- Asignar puertos a nuevos proyectos/servicios +- Mantener inventario centralizado de puertos +- Auditar conflictos entre proyectos +- Documentar configuraciones de entorno (.env) +- Crear archivos .env.ports para proyectos +- Validar que puertos asignados no esten en uso +- Proponer rangos de puertos por tipo de servicio +- Generar reportes de uso de puertos + +### LO QUE NO HAGO (DELEGO) + +| Necesidad | Delegar a | +|-----------|-----------| +| Configurar Docker | Backend-Agent / DevOps | +| Crear servicios | Backend-Agent | +| Configurar PM2 | Backend-Agent | +| Decisiones de arquitectura | Architecture-Analyst | +| Crear documentacion tecnica | Documentation-Validator | + +--- + +## ESTANDAR DE ASIGNACION DE PUERTOS + +### Rangos por Proyecto (Regla Base) + +```yaml +# Cada proyecto tiene un bloque de 100 puertos asignados +# Formato: XXNN donde XX = proyecto, NN = servicio dentro del proyecto + +PROYECTOS_ASIGNADOS: + gamilit: + rango: "3000-3099" + frontend: 3005 + backend: 3006 + base_asignada: 3000 + + erp-suite: + rango: "3100-3199" + base_asignada: 3100 + # Verticales usan sub-rangos + + trading-platform: + rango: "3200-3299 (frontend), 4000-4099 (backend), 5000-5099 (python)" + base_asignada: 3200 + + betting-analytics: + rango: "3300-3399" + base_asignada: 3300 + + inmobiliaria-analytics: + rango: "3400-3499" + base_asignada: 3400 + + platform_marketing_content: + rango: "3500-3599" + base_asignada: 3500 +``` + +### Rangos por Tipo de Servicio (Dentro de cada proyecto) + +```yaml +SERVICIOS_OFFSET: + frontend_web: +05 # Ej: 3005, 3105, 3205 + frontend_admin: +07 # Ej: 3007, 3107, 3207 + backend_api: +06 # Ej: 3006, 3106, 3206 + backend_ws: +08 # Ej: 3008, 3108, 3208 + backend_workers: +09 # Ej: 3009, 3109, 3209 +``` + +### Servicios de Infraestructura (Globales) + +```yaml +INFRAESTRUCTURA: + postgresql: + default: 5432 + proyecto_especifico: "543X" # 5432-5439 + redis: + default: 6379 + proyecto_especifico: "637X" # 6379-6389 + mysql: + default: 3306 + mongodb: + default: 27017 +``` + +--- + +## FLUJO DE TRABAJO + +``` +1. Recibir solicitud de puertos + | + v +2. CONSULTAR INVENTARIO: + | - Leer DEVENV-PORTS-INVENTORY.yml + | - Identificar rango del proyecto + | - Verificar disponibilidad + | + v +3. ASIGNAR PUERTO: + | - Seguir estandar de rangos + | - Verificar no hay conflicto + | - Registrar en inventario + | + v +4. DOCUMENTAR: + | - Actualizar DEVENV-PORTS-INVENTORY.yml + | - Crear/actualizar .env.ports del proyecto + | - Generar instrucciones de configuracion + | + v +5. VALIDAR: + | - Verificar puerto no en uso (lsof) + | - Verificar no hay duplicados + | - Build/lint si aplica + | + v +6. COMUNICAR: + - Informar puertos asignados + - Proporcionar configuracion .env +``` + +--- + +## FORMATO DE INVENTARIO + +```yaml +# DEVENV-PORTS-INVENTORY.yml + +version: "1.0.0" +updated: "2025-12-08" +maintainer: "DevEnv Agent" + +projects: + gamilit: + range: "3000-3099" + services: + frontend: + port: 3005 + protocol: http + description: "Vite dev server / PM2 preview" + backend: + port: 3006 + protocol: http + description: "NestJS API server" + databases: + postgresql: 5432 + redis: 6379 + + trading-platform: + range: "3200-3299, 4000-4099, 5000-5099" + services: + frontend_web: + port: 3100 + protocol: http + frontend_admin: + port: 3101 + protocol: http + backend_api: + port: 4000 + protocol: http + backend_ws: + port: 4001 + protocol: ws + ml_engine: + port: 5000 + protocol: http + data_service: + port: 5001 + protocol: http +``` + +--- + +## COMANDOS DE VALIDACION + +```bash +# Verificar puerto en uso +lsof -i :3005 + +# Listar todos los puertos en uso +netstat -tlnp | grep LISTEN + +# Verificar conflictos en docker +docker ps --format "{{.Ports}}" + +# Escanear rango de puertos +for port in {3000..3100}; do + (echo >/dev/tcp/localhost/$port) 2>/dev/null && echo "Puerto $port en uso" +done +``` + +--- + +## PLANTILLA DE ARCHIVO .env.ports + +```bash +# ============================================================================= +# {PROYECTO} - PORT ASSIGNMENTS +# ============================================================================= +# Archivo centralizado de asignacion de puertos +# Gestionado por: DevEnv Agent +# Fecha: {FECHA} +# ============================================================================= + +# Frontend +FRONTEND_PORT={FRONTEND_PORT} +FRONTEND_ADMIN_PORT={FRONTEND_ADMIN_PORT} + +# Backend +BACKEND_API_PORT={BACKEND_API_PORT} +BACKEND_WS_PORT={BACKEND_WS_PORT} + +# Databases +POSTGRES_PORT={POSTGRES_PORT} +REDIS_PORT={REDIS_PORT} + +# ============================================================================= +# RESUMEN DE ASIGNACION +# ============================================================================= +# Rango asignado: {RANGO} +# Proyecto: {PROYECTO} +# ============================================================================= +``` + +--- + +## DIRECTIVA: CONSULTAR DEVENV ANTES DE ASIGNAR PUERTOS + +> **TODOS los agentes DEBEN consultar al agente DevEnv antes de:** +> - Crear un nuevo servicio que requiera puerto +> - Modificar puertos existentes +> - Configurar docker-compose con puertos +> - Crear archivos .env con puertos + +```yaml +# En SIMCO-DELEGACION, incluir: +ANTES_DE_ASIGNAR_PUERTO: + consultar: "DevEnv Agent" + proporcionar: + - nombre_proyecto + - tipo_servicio (frontend, backend, db, etc) + - cantidad_puertos_necesarios + esperar: + - puertos_asignados + - configuracion_env +``` + +--- + +## ALIAS RELEVANTES + +```yaml +@DEVENV_PORTS: "core/orchestration/inventarios/DEVENV-PORTS-INVENTORY.yml" +@DEVENV_ENV: "core/orchestration/inventarios/DEVENV-ENVIRONMENTS.yml" +@DEVENV_STANDARDS: "core/orchestration/referencias/DEVENV-PORT-STANDARDS.md" +``` + +--- + +## REFERENCIAS EXTENDIDAS + +Para detalles completos, consultar: +- `core/orchestration/inventarios/DEVENV-PORTS-INVENTORY.yml` +- `projects/trading-platform/.env.ports` (ejemplo de archivo centralizado) +- `projects/gamilit/ecosystem.config.js` (ejemplo PM2) + +--- + +**Version:** 1.0.0 | **Sistema:** SIMCO + CAPVED + Niveles + Tokens | **Tipo:** Perfil de Agente diff --git a/core/orchestration/agents/perfiles/PERFIL-TECH-LEADER.md b/core/orchestration/agents/perfiles/PERFIL-TECH-LEADER.md new file mode 100644 index 0000000..609d180 --- /dev/null +++ b/core/orchestration/agents/perfiles/PERFIL-TECH-LEADER.md @@ -0,0 +1,405 @@ +# PERFIL: TECH-LEADER + +**Version:** 1.0.0 +**Fecha:** 2025-12-08 +**Sistema:** SIMCO + CCA + CAPVED + Niveles + Economia de Tokens + +--- + +## PROTOCOLO DE INICIALIZACION (CCA) + +> **ANTES de cualquier accion, ejecutar Carga de Contexto Automatica** + +```yaml +# Al recibir: "Seras Tech-Leader en {PROYECTO} para {TAREA}" + +PASO_0_IDENTIFICAR_NIVEL: + leer: "core/orchestration/directivas/simco/SIMCO-NIVELES.md" + determinar: + working_directory: "{extraer del prompt}" + nivel: "{NIVEL_0|1|2A|2B|2B.1|2B.2|3}" + orchestration_path: "{calcular segun nivel}" + propagate_to: ["{niveles superiores}"] + registrar: + nivel_actual: "{nivel identificado}" + ruta_inventario: "{orchestration_path}/inventarios/" + ruta_traza: "{orchestration_path}/trazas/" + +PASO_1_IDENTIFICAR: + perfil: "TECH-LEADER" + proyecto: "{extraer del prompt}" + tarea: "{extraer del prompt}" + operacion: "PLANIFICAR | COORDINAR | DELEGAR | VALIDAR" + dominio: "LIDERAZGO TECNICO" + +PASO_2_CARGAR_CORE: + leer_obligatorio: + - core/catalog/CATALOG-INDEX.yml # Funcionalidades reutilizables + - core/orchestration/directivas/principios/PRINCIPIO-CAPVED.md + - core/orchestration/directivas/principios/PRINCIPIO-DOC-PRIMERO.md + - core/orchestration/directivas/principios/PRINCIPIO-ANTI-DUPLICACION.md + - core/orchestration/directivas/principios/PRINCIPIO-VALIDACION-OBLIGATORIA.md + - core/orchestration/directivas/principios/PRINCIPIO-ECONOMIA-TOKENS.md + - core/orchestration/directivas/simco/_INDEX.md + - core/orchestration/directivas/simco/SIMCO-TAREA.md + - core/orchestration/directivas/simco/SIMCO-DELEGACION.md + - core/orchestration/referencias/ALIASES.yml + +PASO_3_CARGAR_PROYECTO: + leer_obligatorio: + - projects/{PROYECTO}/orchestration/00-guidelines/CONTEXTO-PROYECTO.md + - projects/{PROYECTO}/orchestration/PROXIMA-ACCION.md + - projects/{PROYECTO}/orchestration/inventarios/MASTER_INVENTORY.yml + leer_segun_necesidad: + - projects/{PROYECTO}/orchestration/inventarios/DATABASE_INVENTORY.yml + - projects/{PROYECTO}/orchestration/inventarios/BACKEND_INVENTORY.yml + - projects/{PROYECTO}/orchestration/inventarios/FRONTEND_INVENTORY.yml + +PASO_4_CARGAR_EQUIPO: + # Tech-Leader conoce a su equipo de agentes especializados + agentes_disponibles: + analisis: + - PERFIL-REQUIREMENTS-ANALYST.md # Analisis de requerimientos + - PERFIL-ARCHITECTURE-ANALYST.md # Analisis de arquitectura + implementacion: + - PERFIL-DATABASE.md # DDL y migraciones + - PERFIL-BACKEND.md # Servicios y APIs + - PERFIL-BACKEND-EXPRESS.md # Express especifico + - PERFIL-FRONTEND.md # UI y componentes + - PERFIL-MOBILE-AGENT.md # Apps moviles + - PERFIL-ML-SPECIALIST.md # Machine Learning + calidad: + - PERFIL-CODE-REVIEWER.md # Revision de codigo + - PERFIL-BUG-FIXER.md # Correccion de bugs + - PERFIL-DOCUMENTATION-VALIDATOR.md # Validacion de docs + infraestructura: + - PERFIL-DEVENV.md # Puertos y entornos + - PERFIL-WORKSPACE-MANAGER.md # Organizacion workspace + +PASO_5_CARGAR_OPERACION: + siempre: + - SIMCO-DELEGACION.md + - SIMCO-VALIDAR.md + segun_tarea: + nueva_funcionalidad: + - Delegar a REQUIREMENTS-ANALYST primero + - Luego a ARCHITECTURE-ANALYST + - Finalmente a agentes de implementacion + bug_fix: + - Delegar a BUG-FIXER + - Code review al terminar + refactoring: + - Delegar a ARCHITECTURE-ANALYST para plan + - Luego a agentes de capa + +RESULTADO: "READY_TO_LEAD - Equipo listo para coordinar" +``` + +--- + +## IDENTIDAD + +```yaml +Nombre: Tech-Leader +Alias: TL, Technical Lead, NEXUS-LEAD +Dominio: Liderazgo tecnico, coordinacion de equipos, toma de decisiones +``` + +--- + +## PROPOSITO + +Soy el **lider tecnico del equipo de agentes**. Mi rol es: +- Recibir tareas de alto nivel y descomponerlas +- Delegar a los agentes especializados correctos +- Coordinar el flujo de trabajo entre agentes +- Tomar decisiones tecnicas cuando hay ambiguedad +- Asegurar calidad y coherencia del desarrollo + +--- + +## DIFERENCIA CON ORQUESTADOR + +```yaml +ORQUESTADOR (PERFIL-ORQUESTADOR.md): + - Enfoque: Proceso CAPVED completo + - Ejecuta: Fases directamente + orquesta subagentes + - Responsable de: Ciclo de vida de HU/Tareas + +TECH-LEADER (Este perfil): + - Enfoque: Liderazgo y delegacion estrategica + - Ejecuta: Analisis inicial + delega TODO + - Responsable de: Asignar el agente correcto para cada tarea + - Especialidad: Saber CUANDO llamar a REQUIREMENTS-ANALYST vs ARCHITECTURE-ANALYST +``` + +--- + +## RESPONSABILIDADES + +### LO QUE SI HAGO + +- Analizar requerimientos de alto nivel +- Decidir que agente debe ejecutar cada subtarea +- Delegar a REQUIREMENTS-ANALYST para nuevos features +- Delegar a ARCHITECTURE-ANALYST para decisiones de diseno +- Coordinar dependencias entre agentes +- Resolver conflictos tecnicos +- Validar entregas de subagentes +- Tomar decisiones cuando hay trade-offs + +### LO QUE NO HAGO (SIEMPRE DELEGO) + +| Necesidad | Delegar a | +|-----------|-----------| +| Analizar requerimientos detallados | REQUIREMENTS-ANALYST | +| Definir arquitectura | ARCHITECTURE-ANALYST | +| Crear DDL | DATABASE | +| Implementar backend | BACKEND / BACKEND-EXPRESS | +| Implementar frontend | FRONTEND | +| Asignar puertos | DEVENV | +| Revisar codigo | CODE-REVIEWER | +| Documentar | DOCUMENTATION-VALIDATOR | + +--- + +## FLUJO DE DELEGACION + +### Para Nueva Funcionalidad + +``` +1. Recibir tarea/HU + | + v +2. ANALISIS INICIAL (Tech-Leader): + | - Entender alcance + | - Identificar capas afectadas + | - Detectar ambiguedades + | + v +3. DELEGACION FASE 1 - REQUIREMENTS: + | --> REQUIREMENTS-ANALYST + | - Detallar casos de uso + | - Definir criterios de aceptacion + | - Identificar edge cases + | + v +4. DELEGACION FASE 2 - ARCHITECTURE: + | --> ARCHITECTURE-ANALYST + | - Disenar solucion tecnica + | - Definir contratos API + | - Planificar capas (DB -> BE -> FE) + | + v +5. DELEGACION FASE 3 - INFRAESTRUCTURA: + | --> DEVENV (si necesita nuevos servicios) + | - Asignar puertos + | - Configurar entorno + | + v +6. DELEGACION FASE 4 - IMPLEMENTACION: + | --> DATABASE (DDL primero) + | --> BACKEND (APIs) + | --> FRONTEND (UI) + | + v +7. DELEGACION FASE 5 - CALIDAD: + | --> CODE-REVIEWER + | --> DOCUMENTATION-VALIDATOR + | + v +8. VALIDACION FINAL (Tech-Leader): + - Verificar integracion + - Build/Lint pasa + - Criterios cumplidos +``` + +### Para Bug Fix + +``` +1. Recibir reporte de bug + | + v +2. DELEGACION DIRECTA: + | --> BUG-FIXER + | - Investigar causa raiz + | - Implementar fix + | - Crear tests + | + v +3. DELEGACION POST-FIX: + | --> CODE-REVIEWER + | + v +4. VALIDACION (Tech-Leader) +``` + +--- + +## TEMPLATE DE DELEGACION A ANALISTAS + +### Delegacion a REQUIREMENTS-ANALYST + +```markdown +## DELEGACION: Requirements Analysis + +**Tech-Leader delegando a:** REQUIREMENTS-ANALYST +**Proyecto:** {PROYECTO} +**Tarea origen:** {TAREA_ORIGINAL} + +### Contexto +{Descripcion de la tarea de alto nivel} + +### Lo que necesito de ti +1. Analizar los requerimientos funcionales +2. Identificar casos de uso principales +3. Definir criterios de aceptacion (Given/When/Then) +4. Detectar ambiguedades y proponer resoluciones +5. Identificar dependencias con otras funcionalidades + +### Entregables esperados +- Documento de requerimientos detallado +- Lista de casos de uso +- Criterios de aceptacion por caso de uso +- Preguntas/clarificaciones si hay ambiguedad + +### Directivas a seguir +- @SIMCO/SIMCO-TAREA.md +- @PRINCIPIOS/PRINCIPIO-DOC-PRIMERO.md +``` + +### Delegacion a ARCHITECTURE-ANALYST + +```markdown +## DELEGACION: Architecture Design + +**Tech-Leader delegando a:** ARCHITECTURE-ANALYST +**Proyecto:** {PROYECTO} +**Tarea origen:** {TAREA_ORIGINAL} +**Requerimientos:** {OUTPUT_DE_REQUIREMENTS_ANALYST} + +### Contexto +{Descripcion tecnica del problema a resolver} + +### Lo que necesito de ti +1. Disenar la arquitectura de la solucion +2. Definir contratos de API (endpoints, payloads) +3. Disenar modelo de datos (entidades, relaciones) +4. Planificar orden de implementacion por capas +5. Identificar riesgos tecnicos y mitigaciones + +### Entregables esperados +- Diagrama de arquitectura (si aplica) +- Contratos API (OpenAPI/Swagger) +- Modelo de datos (ERD conceptual) +- Plan de implementacion por fases +- Trade-offs considerados + +### Directivas a seguir +- @SIMCO/SIMCO-TAREA.md +- @PRINCIPIOS/PRINCIPIO-CAPVED.md +- @PRINCIPIOS/PRINCIPIO-ANTI-DUPLICACION.md +``` + +--- + +## REGLAS DE DECISION + +### Cuando llamar a REQUIREMENTS-ANALYST + +```yaml +LLAMAR_REQUIREMENTS_ANALYST: + cuando: + - Nueva funcionalidad sin especificacion clara + - Historia de usuario ambigua + - Necesito entender "que" debe hacer el sistema + - Faltan criterios de aceptacion + - Hay multiples interpretaciones posibles + + no_llamar: + - Bug fix con causa clara + - Refactoring interno + - Tarea puramente tecnica +``` + +### Cuando llamar a ARCHITECTURE-ANALYST + +```yaml +LLAMAR_ARCHITECTURE_ANALYST: + cuando: + - Necesito definir "como" implementar + - Nueva integracion con sistemas externos + - Cambio que afecta multiples capas + - Decision de patrones/frameworks + - Optimizacion de rendimiento significativa + + no_llamar: + - Implementacion simple y clara + - Bug fix aislado + - Cambio en una sola capa +``` + +### Cuando llamar a DEVENV + +```yaml +LLAMAR_DEVENV: + cuando: + - Nuevo servicio necesita puerto + - Configurar nuevo entorno + - Conflicto de puertos detectado + - Setup de docker-compose + + no_llamar: + - Cambios en servicios existentes + - Modificar codigo sin nuevo servicio +``` + +--- + +## PROTOCOLO DE CONSULTA DE PUERTOS + +> **OBLIGATORIO: Consultar DEVENV antes de asignar puertos** + +```yaml +ANTES_DE_ASIGNAR_PUERTOS: + 1. Verificar: "Este servicio necesita puerto nuevo?" + 2. Si SI: + - Delegar a DEVENV + - Proporcionar: proyecto, tipo_servicio, descripcion + - Esperar: puerto asignado, configuracion .env + 3. Si NO: + - Usar puerto existente del inventario + - Verificar en: @DEVENV_PORTS + +NUNCA: + - Asignar puertos arbitrariamente + - Copiar puertos de otro proyecto sin verificar + - Usar puertos "comunes" (3000, 8080) sin consultar +``` + +--- + +## ALIAS RELEVANTES + +```yaml +@TECH_LEADER: "core/orchestration/agents/perfiles/PERFIL-TECH-LEADER.md" +@ORQUESTADOR: "core/orchestration/agents/perfiles/PERFIL-ORQUESTADOR.md" +@REQ_ANALYST: "core/orchestration/agents/perfiles/PERFIL-REQUIREMENTS-ANALYST.md" +@ARCH_ANALYST: "core/orchestration/agents/perfiles/PERFIL-ARCHITECTURE-ANALYST.md" +@DEVENV: "core/orchestration/agents/perfiles/PERFIL-DEVENV.md" +@DEVENV_PORTS: "core/orchestration/inventarios/DEVENV-PORTS-INVENTORY.yml" +@DELEGAR: "core/orchestration/directivas/simco/SIMCO-DELEGACION.md" +``` + +--- + +## REFERENCIAS EXTENDIDAS + +Para detalles completos, consultar: +- `core/orchestration/agents/perfiles/PERFIL-ORQUESTADOR.md` (version CAPVED) +- `core/orchestration/directivas/simco/SIMCO-DELEGACION.md` +- `core/orchestration/directivas/simco/SIMCO-TAREA.md` + +--- + +**Version:** 1.0.0 | **Sistema:** SIMCO + CAPVED + Niveles + Tokens | **Tipo:** Perfil de Agente diff --git a/core/orchestration/inventarios/DEVENV-PORTS-INVENTORY.yml b/core/orchestration/inventarios/DEVENV-PORTS-INVENTORY.yml new file mode 100644 index 0000000..e6841e5 --- /dev/null +++ b/core/orchestration/inventarios/DEVENV-PORTS-INVENTORY.yml @@ -0,0 +1,477 @@ +# ============================================================================= +# DEVENV-PORTS-INVENTORY.yml +# ============================================================================= +# Inventario centralizado de puertos para todo el workspace +# Gestionado por: DevEnv Agent +# Fecha: 2025-12-08 +# ============================================================================= +# +# DIRECTIVA: TODO agente que necesite asignar puertos DEBE: +# 1. Consultar este inventario primero +# 2. Solicitar asignacion al agente DevEnv +# 3. NUNCA asignar puertos arbitrariamente +# +# ESTANDAR BASE: gamilit +# - Frontend: 3005 +# - Backend: 3006 +# - Patron: proyecto_base + offset segun servicio +# +# ============================================================================= + +version: "1.0.0" +updated: "2025-12-08" +maintainer: "DevEnv Agent" +workspace: "/home/isem/workspace" + +# ============================================================================= +# RANGOS ASIGNADOS POR PROYECTO +# ============================================================================= +# Cada proyecto tiene un bloque de puertos reservado +# Evita conflictos entre proyectos + +ranges: + gamilit: + start: 3000 + end: 3099 + description: "Plataforma educativa gamificada" + + erp-suite: + start: 3100 + end: 3199 + description: "Suite ERP con verticales" + sub_ranges: + erp-core: + start: 3100 + end: 3119 + construccion: + start: 3120 + end: 3139 + vidrio-templado: + start: 3140 + end: 3159 + mecanicas-diesel: + start: 3160 + end: 3179 + retail: + start: 3180 + end: 3199 + clinicas: + start: 3200 + end: 3219 # Extiende el rango + + trading-platform: + start: 3300 + end: 3399 + description: "Plataforma de trading IA" + extended_ranges: + backend: "4000-4099" + python_services: "5000-5099" + + betting-analytics: + start: 3400 + end: 3499 + description: "Analytics de apuestas deportivas" + + inmobiliaria-analytics: + start: 3500 + end: 3599 + description: "Analytics inmobiliario" + + platform_marketing_content: + start: 3600 + end: 3699 + description: "Plataforma de marketing de contenidos" + +# ============================================================================= +# PROYECTOS - DETALLE DE PUERTOS ASIGNADOS +# ============================================================================= + +projects: + + # --------------------------------------------------------------------------- + # GAMILIT - Plataforma Educativa Gamificada + # --------------------------------------------------------------------------- + gamilit: + status: "active" + base_path: "projects/gamilit" + range: "3000-3099" + + services: + frontend: + port: 3005 + protocol: "http" + framework: "React + Vite" + description: "Aplicacion web principal" + config_file: "apps/frontend/.env" + pm2_name: "gamilit-frontend" + + backend: + port: 3006 + protocol: "http" + framework: "NestJS" + description: "API principal" + config_file: "apps/backend/.env" + pm2_name: "gamilit-backend" + + databases: + postgresql: + port: 5432 + description: "Base de datos principal" + redis: + port: 6379 + description: "Cache y sessions" + + production: + server: "74.208.126.102" + pm2_config: "ecosystem.config.js" + + # --------------------------------------------------------------------------- + # ERP-SUITE - Suite ERP Multi-Vertical + # --------------------------------------------------------------------------- + erp-suite: + status: "active" + base_path: "projects/erp-suite" + range: "3100-3219" + + # ERP Core + erp-core: + services: + backend: + port: 3100 + protocol: "http" + framework: "Express/NestJS" + description: "Core API compartido" + databases: + postgresql: + port: 5432 + description: "BD compartida core" + + # Verticales + verticales: + construccion: + services: + backend: + port: 3120 + protocol: "http" + description: "API vertical construccion" + databases: + postgresql: + port: 5433 + description: "BD construccion" + redis: + port: 6380 + + vidrio-templado: + services: + backend: + port: 3140 + protocol: "http" + description: "API vertical vidrio templado" + frontend: + port: 5175 + protocol: "http" + description: "UI vidrio templado" + databases: + postgresql: + port: 5434 + description: "BD vidrio templado" + redis: + port: 6381 + + mecanicas-diesel: + services: + backend: + port: 3160 + protocol: "http" + description: "API vertical mecanicas" + databases: + postgresql: + port: 5432 + description: "BD mecanicas (compartida)" + redis: + port: 6379 + + retail: + services: + backend: + port: 3180 + protocol: "http" + description: "API vertical retail" + frontend: + port: 5177 + protocol: "http" + description: "UI retail" + databases: + postgresql: + port: 5436 + description: "BD retail" + redis: + port: 6383 + + clinicas: + services: + backend: + port: 3200 + protocol: "http" + description: "API vertical clinicas" + frontend: + port: 5178 + protocol: "http" + description: "UI clinicas" + dicom_server: + port: 4242 + protocol: "dicom" + description: "Servidor DICOM imagenologia" + databases: + postgresql: + port: 5437 + description: "BD clinicas" + redis: + port: 6384 + + # Productos + products: + pos-micro: + services: + backend: + port: 3190 + protocol: "http" + description: "API POS micro" + databases: + postgresql: + port: 5432 + description: "BD POS (compartida)" + + # --------------------------------------------------------------------------- + # TRADING-PLATFORM - Plataforma de Trading IA + # --------------------------------------------------------------------------- + trading-platform: + status: "active" + base_path: "projects/trading-platform" + range: "3300-3399, 4000-4099, 5000-5099" + env_ports_file: ".env.ports" + + services: + # Frontend + frontend_web: + port: 3100 + protocol: "http" + framework: "React + Vite" + description: "Aplicacion web principal" + frontend_admin: + port: 3101 + protocol: "http" + description: "Panel de administracion" + frontend_preview: + port: 4173 + protocol: "http" + description: "Vite preview/build" + + # Backend Node.js + backend_api: + port: 4000 + protocol: "http" + framework: "Express" + description: "API principal" + backend_ws: + port: 4001 + protocol: "ws" + description: "WebSocket server real-time" + backend_webhooks: + port: 4002 + protocol: "http" + description: "API webhooks" + + # Python Services + ml_engine: + port: 5000 + protocol: "http" + framework: "FastAPI" + description: "ML predicciones y senales" + data_service: + port: 5001 + protocol: "http" + framework: "Python asyncio" + description: "Sincronizacion datos mercado" + llm_agent: + port: 5002 + protocol: "http" + framework: "FastAPI" + description: "Asistente IA" + portfolio_manager: + port: 5003 + protocol: "http" + framework: "FastAPI" + description: "Gestion de portafolios" + + databases: + postgresql: + port: 5432 + description: "BD principal" + postgresql_test: + port: 5433 + description: "BD testing" + redis: + port: 6379 + description: "Cache y queues" + mysql: + port: 3306 + description: "Legacy migracion" + + monitoring: + jenkins: + port: 8080 + description: "CI/CD pipeline" + jenkins_agent: + port: 50000 + description: "Jenkins agent" + prometheus: + port: 9090 + description: "Metricas" + grafana: + port: 3200 + description: "Dashboards" + + development: + mailhog_smtp: + port: 1025 + description: "Testing emails" + mailhog_web: + port: 8025 + description: "Mailhog UI" + pgadmin: + port: 5050 + description: "Admin PostgreSQL" + + # --------------------------------------------------------------------------- + # BETTING-ANALYTICS + # --------------------------------------------------------------------------- + betting-analytics: + status: "planned" + base_path: "projects/betting-analytics" + range: "3400-3499" + + services: + frontend: + port: 3405 + protocol: "http" + description: "Dashboard analytics" + assigned: false + backend: + port: 3406 + protocol: "http" + description: "API analytics" + assigned: false + + databases: + postgresql: + port: 5438 + description: "BD analytics" + + # --------------------------------------------------------------------------- + # INMOBILIARIA-ANALYTICS + # --------------------------------------------------------------------------- + inmobiliaria-analytics: + status: "planned" + base_path: "projects/inmobiliaria-analytics" + range: "3500-3599" + + services: + frontend: + port: 3505 + protocol: "http" + description: "Dashboard inmobiliario" + assigned: false + backend: + port: 3506 + protocol: "http" + description: "API inmobiliario" + assigned: false + + databases: + postgresql: + port: 5439 + description: "BD inmobiliario" + + # --------------------------------------------------------------------------- + # PLATFORM MARKETING CONTENT + # --------------------------------------------------------------------------- + platform_marketing_content: + status: "active" + base_path: "projects/platform_marketing_content" + range: "3600-3699" + + services: + frontend: + port: 3605 + protocol: "http" + description: "Dashboard marketing" + assigned: true + backend: + port: 3606 + protocol: "http" + description: "API marketing" + assigned: true + + databases: + postgresql: + port: 5440 + description: "BD marketing" + +# ============================================================================= +# SERVICIOS DE INFRAESTRUCTURA GLOBALES +# ============================================================================= + +infrastructure: + postgresql: + default_port: 5432 + range: "5432-5449" + note: "Cada proyecto puede tener su BD en puerto unico" + + redis: + default_port: 6379 + range: "6379-6389" + note: "Cache distribuido, sessions, queues" + + mysql: + default_port: 3306 + note: "Solo para migraciones legacy" + + mongodb: + default_port: 27017 + note: "Reservado si se necesita" + +# ============================================================================= +# REGLAS DE ASIGNACION +# ============================================================================= + +rules: + offset_standard: + frontend_web: 5 # proyecto_base + 5 (ej: 3005, 3105, 3205) + frontend_admin: 7 # proyecto_base + 7 + backend_api: 6 # proyecto_base + 6 (ej: 3006, 3106, 3206) + backend_ws: 8 # proyecto_base + 8 + backend_workers: 9 # proyecto_base + 9 + + reserved_ports: + - 22 # SSH + - 80 # HTTP + - 443 # HTTPS + - 3000 # Comun desarrollo (evitar) + - 8080 # Comun desarrollo (evitar) + + guidelines: + - "Siempre consultar este inventario antes de asignar" + - "Seguir patron: proyecto_base + offset_standard" + - "Documentar en este archivo cualquier nuevo puerto" + - "Verificar conflictos con: lsof -i :PUERTO" + +# ============================================================================= +# HISTORIAL DE CAMBIOS +# ============================================================================= + +changelog: + - date: "2025-12-08" + action: "Creacion inicial" + author: "DevEnv Agent" + details: "Inventario completo de todos los proyectos del workspace" diff --git a/core/orchestration/referencias/ALIASES.yml b/core/orchestration/referencias/ALIASES.yml index 47eb625..5d3a904 100644 --- a/core/orchestration/referencias/ALIASES.yml +++ b/core/orchestration/referencias/ALIASES.yml @@ -17,8 +17,9 @@ # # ═══════════════════════════════════════════════════════════════════════════════ -version: "2.2.0" +version: "2.2.1" fecha_actualizacion: "2025-12-08" +changelog: "Agregados @PERFIL_TECH_LEADER, @PERFIL_DEVENV, @DEVENV_PORTS, @DEVENV_STANDARDS" # ───────────────────────────────────────────────────────────────────────────────── # ALIAS GLOBALES (rutas absolutas - aplican a todos los proyectos) @@ -99,6 +100,15 @@ global: "@PERFIL_BUG_FIXER": "core/orchestration/agents/perfiles/PERFIL-BUG-FIXER.md" "@PERFIL_DOC_VALIDATOR": "core/orchestration/agents/perfiles/PERFIL-DOCUMENTATION-VALIDATOR.md" "@PERFIL_WORKSPACE": "core/orchestration/agents/perfiles/PERFIL-WORKSPACE-MANAGER.md" + # Nuevos perfiles v2.2.1 + "@PERFIL_TECH_LEADER": "core/orchestration/agents/perfiles/PERFIL-TECH-LEADER.md" + "@PERFIL_DEVENV": "core/orchestration/agents/perfiles/PERFIL-DEVENV.md" + + # ═══════════════════════════════════════════════════════════════════ + # DEVENV - GESTIÓN DE PUERTOS Y ENTORNOS + # ═══════════════════════════════════════════════════════════════════ + "@DEVENV_PORTS": "core/orchestration/inventarios/DEVENV-PORTS-INVENTORY.yml" + "@DEVENV_STANDARDS": "core/orchestration/referencias/DEVENV-PORT-STANDARDS.md" # ═══════════════════════════════════════════════════════════════════ # PATRONES DE CÓDIGO (CONSULTAR ANTES DE IMPLEMENTAR) diff --git a/core/orchestration/referencias/DEVENV-PORT-STANDARDS.md b/core/orchestration/referencias/DEVENV-PORT-STANDARDS.md new file mode 100644 index 0000000..8411cdc --- /dev/null +++ b/core/orchestration/referencias/DEVENV-PORT-STANDARDS.md @@ -0,0 +1,324 @@ +# DEVENV-PORT-STANDARDS + +**Version:** 1.0.0 +**Fecha:** 2025-12-08 +**Mantenedor:** DevEnv Agent + +--- + +## DIRECTIVA OBLIGATORIA + +> **TODOS los agentes DEBEN consultar al agente DevEnv antes de asignar puertos.** +> +> El inventario centralizado esta en: `@DEVENV_PORTS` +> (`core/orchestration/inventarios/DEVENV-PORTS-INVENTORY.yml`) + +--- + +## ESTANDAR BASE + +El proyecto **gamilit** define el estandar base de asignacion de puertos: + +| Servicio | Puerto | Patron | +|----------|--------|--------| +| Frontend | 3005 | base + 5 | +| Backend | 3006 | base + 6 | + +Este patron se replica en todos los proyectos del workspace. + +--- + +## RANGOS POR PROYECTO + +Cada proyecto tiene un bloque de 100 puertos reservado: + +| Proyecto | Rango | Base | Frontend | Backend | +|----------|-------|------|----------|---------| +| gamilit | 3000-3099 | 3000 | 3005 | 3006 | +| erp-suite | 3100-3199 | 3100 | 3105 | 3106 | +| trading-platform | 3200-3299* | 3200 | 3100** | 4000** | +| betting-analytics | 3300-3399 | 3300 | 3305 | 3306 | +| inmobiliaria-analytics | 3400-3499 | 3400 | 3405 | 3406 | +| platform_marketing_content | 3500-3599 | 3500 | 3505 | 3506 | + +*Trading-platform tiene rangos extendidos para servicios Python (5000-5099) +**Trading-platform ya tenia puertos asignados antes de este estandar + +--- + +## OFFSETS ESTANDAR + +Dentro de cada rango de proyecto, se aplican estos offsets: + +```yaml +OFFSETS: + frontend_web: +5 # Aplicacion web principal + backend_api: +6 # API principal + frontend_admin: +7 # Panel de administracion + backend_ws: +8 # WebSocket server + backend_workers: +9 # Workers/Jobs + auxiliary: +10-19 # Servicios auxiliares +``` + +### Ejemplo para un nuevo proyecto "mi-proyecto" (base 3700): + +```yaml +mi-proyecto: + frontend_web: 3705 + backend_api: 3706 + frontend_admin: 3707 + backend_ws: 3708 + backend_workers: 3709 +``` + +--- + +## BASES DE DATOS + +Los puertos de bases de datos se asignan secuencialmente: + +| Servicio | Rango | Default | +|----------|-------|---------| +| PostgreSQL | 5432-5449 | 5432 | +| Redis | 6379-6389 | 6379 | +| MySQL | 3306 | 3306 (legacy) | +| MongoDB | 27017-27027 | 27017 | + +### Asignacion actual de PostgreSQL: + +| Puerto | Proyecto | +|--------|----------| +| 5432 | Default / gamilit / erp-core | +| 5433 | erp-suite/construccion / trading-platform test | +| 5434 | erp-suite/vidrio-templado | +| 5436 | erp-suite/retail | +| 5437 | erp-suite/clinicas | +| 5438 | betting-analytics (reservado) | +| 5439 | inmobiliaria-analytics (reservado) | +| 5440 | platform_marketing_content | + +--- + +## PUERTOS RESERVADOS (NO USAR) + +Estos puertos estan reservados y no deben usarse: + +| Puerto | Razon | +|--------|-------| +| 22 | SSH | +| 80 | HTTP estandar | +| 443 | HTTPS estandar | +| 3000 | Muy comun en desarrollo, conflictos frecuentes | +| 8080 | Muy comun en desarrollo, conflictos frecuentes | + +--- + +## PROCESO DE ASIGNACION + +### 1. Nuevo Proyecto + +```yaml +Cuando: Se crea un proyecto nuevo +Quien: Tech-Leader delega a DevEnv +Proceso: + 1. Identificar siguiente rango disponible (bloques de 100) + 2. Asignar puertos segun offsets estandar + 3. Registrar en DEVENV-PORTS-INVENTORY.yml + 4. Crear archivo .env.ports en el proyecto + 5. Comunicar puertos asignados al Tech-Leader +``` + +### 2. Nuevo Servicio en Proyecto Existente + +```yaml +Cuando: Se agrega servicio a proyecto existente +Quien: Agente de capa consulta a DevEnv +Proceso: + 1. Verificar puertos disponibles en rango del proyecto + 2. Asignar siguiente puerto segun tipo de servicio + 3. Actualizar DEVENV-PORTS-INVENTORY.yml + 4. Actualizar .env.ports del proyecto + 5. Comunicar configuracion al agente solicitante +``` + +### 3. Verificacion de Conflictos + +```bash +# Verificar puerto especifico +lsof -i :3005 + +# Verificar rango de puertos +for port in {3000..3100}; do + (echo >/dev/tcp/localhost/$port) 2>/dev/null && echo "Puerto $port en uso" +done + +# Puertos en docker +docker ps --format "{{.Ports}}" + +# Todos los puertos escuchando +netstat -tlnp | grep LISTEN +``` + +--- + +## TEMPLATE: .env.ports + +Cada proyecto debe tener un archivo `.env.ports` en su raiz: + +```bash +# ============================================================================= +# {NOMBRE_PROYECTO} - PORT ASSIGNMENTS +# ============================================================================= +# Archivo centralizado de asignacion de puertos +# Gestionado por: DevEnv Agent +# Fecha: {FECHA_CREACION} +# Rango asignado: {RANGO} +# ============================================================================= + +# FRONTEND +FRONTEND_PORT={BASE+5} +FRONTEND_ADMIN_PORT={BASE+7} + +# BACKEND +BACKEND_API_PORT={BASE+6} +BACKEND_WS_PORT={BASE+8} +BACKEND_WORKERS_PORT={BASE+9} + +# DATABASES (si son especificos del proyecto) +POSTGRES_PORT={ASIGNADO} +REDIS_PORT={ASIGNADO} + +# ============================================================================= +# NOTAS +# ============================================================================= +# - Estos puertos estan registrados en @DEVENV_PORTS +# - Cualquier cambio debe ser coordinado con DevEnv Agent +# - No modificar sin actualizar el inventario central +# ============================================================================= +``` + +--- + +## ERP-SUITE: Sub-Rangos para Verticales + +El proyecto erp-suite tiene sub-rangos para cada vertical: + +```yaml +erp-suite: + base: 3100 + + verticales: + erp-core: + range: "3100-3119" + backend: 3100 + + construccion: + range: "3120-3139" + backend: 3120 + postgresql: 5433 + + vidrio-templado: + range: "3140-3159" + backend: 3140 + frontend: 5175 + postgresql: 5434 + + mecanicas-diesel: + range: "3160-3179" + backend: 3160 + + retail: + range: "3180-3199" + backend: 3180 + frontend: 5177 + postgresql: 5436 + + clinicas: + range: "3200-3219" # Extension del rango + backend: 3200 + frontend: 5178 + dicom: 4242 + postgresql: 5437 +``` + +--- + +## TRADING-PLATFORM: Rangos Extendidos + +Trading-platform tiene una estructura especial con servicios Python: + +```yaml +trading-platform: + frontend_services: "3100-3199" + frontend_web: 3100 + frontend_admin: 3101 + frontend_preview: 4173 + + backend_node: "4000-4099" + backend_api: 4000 + backend_ws: 4001 + backend_webhooks: 4002 + + python_services: "5000-5099" + ml_engine: 5000 + data_service: 5001 + llm_agent: 5002 + portfolio_manager: 5003 +``` + +--- + +## ALIAS RELEVANTES + +```yaml +@DEVENV_PORTS: "core/orchestration/inventarios/DEVENV-PORTS-INVENTORY.yml" +@DEVENV_STANDARDS: "core/orchestration/referencias/DEVENV-PORT-STANDARDS.md" +@DEVENV_PROFILE: "core/orchestration/agents/perfiles/PERFIL-DEVENV.md" +``` + +--- + +## RESUMEN VISUAL + +``` +PUERTOS ASIGNADOS POR PROYECTO +============================== + +3000 ----[GAMILIT]---- 3099 + |-- FE: 3005 + |-- BE: 3006 + +3100 ----[ERP-SUITE]---- 3219 + |-- core: 3100-3119 + |-- construccion: 3120-3139 + |-- vidrio-templado: 3140-3159 + |-- mecanicas: 3160-3179 + |-- retail: 3180-3199 + |-- clinicas: 3200-3219 + +3200 ----[TRADING-PLATFORM]---- (extendido) + |-- FE: 3100-3199 + |-- BE Node: 4000-4099 + |-- Python: 5000-5099 + +3300 ----[BETTING-ANALYTICS]---- 3399 + |-- FE: 3305 (reservado) + |-- BE: 3306 (reservado) + +3400 ----[INMOBILIARIA-ANALYTICS]---- 3499 + |-- FE: 3405 (reservado) + |-- BE: 3406 (reservado) + +3500 ----[PLATFORM-MARKETING]---- 3599 + |-- FE: 3505 + |-- BE: 3506 + +BASES DE DATOS +============== +5432-5449: PostgreSQL (por proyecto) +6379-6389: Redis (por proyecto) +``` + +--- + +**Version:** 1.0.0 | **Sistema:** SIMCO + DevEnv | **Tipo:** Referencia diff --git a/projects/erp-suite/apps/verticales/retail/orchestration/inventarios/TRACEABILITY_MATRIX.yml b/projects/erp-suite/apps/verticales/retail/orchestration/inventarios/TRACEABILITY_MATRIX.yml index 96d3b70..2773737 100644 --- a/projects/erp-suite/apps/verticales/retail/orchestration/inventarios/TRACEABILITY_MATRIX.yml +++ b/projects/erp-suite/apps/verticales/retail/orchestration/inventarios/TRACEABILITY_MATRIX.yml @@ -19,11 +19,12 @@ metadata: resumen: modulos_total: 10 modulos_documentados: 10 - story_points_total: 322 + epicas_completas: 10 + story_points_total: 353 specs_core_aplicables: 26 specs_implementadas: 0 cobertura_specs: 0% - estado: PLANIFICACION_COMPLETA + estado: EPICAS_COMPLETAS # ============================================================================= # TRAZABILIDAD POR MÓDULO @@ -63,6 +64,7 @@ trazabilidad: herencia: 0% prioridad: P0 sp: 55 + epica: docs/08-epicas/EPIC-RT-002-pos.md critico: true database: tablas: @@ -98,7 +100,8 @@ trazabilidad: nombre: Inventario herencia: 70% prioridad: P0 - sp: 34 + sp: 42 + epica: docs/08-epicas/EPIC-RT-003-inventario.md database: tablas: - inventory.branches diff --git a/projects/erp-suite/apps/verticales/vidrio-templado/orchestration/inventarios/TRACEABILITY_MATRIX.yml b/projects/erp-suite/apps/verticales/vidrio-templado/orchestration/inventarios/TRACEABILITY_MATRIX.yml index fedecde..b529152 100644 --- a/projects/erp-suite/apps/verticales/vidrio-templado/orchestration/inventarios/TRACEABILITY_MATRIX.yml +++ b/projects/erp-suite/apps/verticales/vidrio-templado/orchestration/inventarios/TRACEABILITY_MATRIX.yml @@ -19,11 +19,12 @@ metadata: resumen: modulos_total: 8 modulos_documentados: 8 - story_points_total: 212 + epicas_completas: 8 + story_points_total: 259 specs_core_aplicables: 25 specs_implementadas: 0 cobertura_specs: 0% - estado: PLANIFICACION_COMPLETA + estado: EPICAS_COMPLETAS # ============================================================================= # TRAZABILIDAD POR MÓDULO @@ -63,6 +64,7 @@ trazabilidad: herencia: 30% prioridad: P0 sp: 34 + epica: docs/08-epicas/EPIC-VT-002-cotizaciones.md database: tablas: - glass.quotations @@ -93,7 +95,8 @@ trazabilidad: nombre: Produccion herencia: 20% prioridad: P0 - sp: 34 + sp: 42 + epica: docs/08-epicas/EPIC-VT-003-produccion.md database: tablas: - production.production_orders @@ -122,7 +125,8 @@ trazabilidad: nombre: Inventario herencia: 70% prioridad: P0 - sp: 21 + sp: 38 + epica: docs/08-epicas/EPIC-VT-004-inventario.md database: tablas: - glass.raw_materials @@ -149,7 +153,8 @@ trazabilidad: nombre: Corte herencia: 0% prioridad: P1 - sp: 47 + sp: 45 + epica: docs/08-epicas/EPIC-VT-005-corte.md database: tablas: - production.cutting_plans @@ -178,7 +183,8 @@ trazabilidad: nombre: Templado herencia: 0% prioridad: P1 - sp: 34 + sp: 40 + epica: docs/08-epicas/EPIC-VT-006-templado.md database: tablas: - production.furnaces @@ -207,7 +213,8 @@ trazabilidad: nombre: Calidad herencia: 40% prioridad: P0 - sp: 21 + sp: 32 + epica: docs/08-epicas/EPIC-VT-007-calidad.md database: tablas: - quality.quality_tests @@ -235,7 +242,8 @@ trazabilidad: nombre: Despacho herencia: 50% prioridad: P1 - sp: 21 + sp: 28 + epica: docs/08-epicas/EPIC-VT-008-despacho.md database: tablas: - logistics.shipments diff --git a/projects/gamilit/apps/backend/package.json b/projects/gamilit/apps/backend/package.json index 977a93f..83fa533 100644 --- a/projects/gamilit/apps/backend/package.json +++ b/projects/gamilit/apps/backend/package.json @@ -52,7 +52,7 @@ "rxjs": "^7.8.1", "sanitize-html": "^2.11.0", "socket.io": "^4.8.1", - "typeorm": "^0.3.17", + "typeorm": "^0.3.22", "web-push": "^3.6.7", "winston": "^3.18.3" }, diff --git a/projects/gamilit/apps/frontend/package.json b/projects/gamilit/apps/frontend/package.json index 3960f59..7358060 100644 --- a/projects/gamilit/apps/frontend/package.json +++ b/projects/gamilit/apps/frontend/package.json @@ -65,13 +65,13 @@ "@axe-core/react": "^4.8.4", "@chromatic-com/storybook": "^4.1.2", "@playwright/test": "^1.56.1", - "@storybook/addon-docs": "^10.0.6", - "@storybook/addon-essentials": "^7.6.20", - "@storybook/addon-interactions": "^7.6.20", - "@storybook/addon-links": "^7.6.20", - "@storybook/addon-onboarding": "^10.0.6", - "@storybook/react": "^7.6.5", - "@storybook/react-vite": "^7.6.5", + "@storybook/addon-docs": "^8.6.0", + "@storybook/addon-essentials": "^8.6.0", + "@storybook/addon-interactions": "^8.6.0", + "@storybook/addon-links": "^8.6.0", + "@storybook/addon-onboarding": "^8.6.0", + "@storybook/react": "^8.6.0", + "@storybook/react-vite": "^8.6.0", "@tailwindcss/postcss": "^4.1.14", "@testing-library/dom": "^10.4.1", "@testing-library/jest-dom": "^6.9.1", @@ -99,7 +99,7 @@ "prettier": "^3.2.4", "prettier-plugin-tailwindcss": "^0.5.9", "rollup-plugin-visualizer": "^6.0.5", - "storybook": "^7.6.20", + "storybook": "^8.6.0", "tailwindcss": "^4.1.14", "typescript": "^5.9.3", "vite": "^7.1.10", diff --git a/projects/gamilit/package.json b/projects/gamilit/package.json index 054fa52..7a283f8 100644 --- a/projects/gamilit/package.json +++ b/projects/gamilit/package.json @@ -25,7 +25,7 @@ "backend:format": "cd apps/backend && npm run format", "frontend:lint": "cd apps/frontend && npm run lint", "frontend:format": "cd apps/frontend && npm run format", - "prepare": "husky install" + "prepare": "cd ../.. && husky projects/gamilit/.husky install || true" }, "devDependencies": { "@types/node": "^20.10.0", @@ -49,5 +49,11 @@ "exceljs": "^4.4.0", "pg": "^8.16.3", "uuid": "^13.0.0" + }, + "overrides": { + "jws": "^4.0.1", + "js-yaml": "^4.1.1", + "glob": "^11.0.0", + "validator": "^13.15.22" } } diff --git a/projects/trading-platform/apps/backend/package-lock.json b/projects/trading-platform/apps/backend/package-lock.json index e65b913..6367319 100644 --- a/projects/trading-platform/apps/backend/package-lock.json +++ b/projects/trading-platform/apps/backend/package-lock.json @@ -22,7 +22,7 @@ "helmet": "^7.1.0", "jsonwebtoken": "^9.0.2", "morgan": "^1.10.0", - "nodemailer": "^6.9.7", + "nodemailer": "^7.0.11", "openai": "^4.73.0", "passport": "^0.7.0", "passport-apple": "^2.0.2", @@ -30,7 +30,6 @@ "passport-github2": "^0.1.12", "passport-google-oauth20": "^2.0.0", "passport-local": "^1.0.0", - "passport-twitter": "^1.0.4", "pg": "^8.11.3", "qrcode": "^1.5.3", "redis": "^4.6.10", @@ -57,7 +56,6 @@ "@types/passport-github2": "^1.2.9", "@types/passport-google-oauth20": "^2.0.14", "@types/passport-local": "^1.0.38", - "@types/passport-twitter": "^1.0.40", "@types/pg": "^8.10.9", "@types/qrcode": "^1.5.5", "@types/speakeasy": "^2.0.10", @@ -244,25 +242,25 @@ } }, "node_modules/@aws-sdk/client-ses": { - "version": "3.946.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-ses/-/client-ses-3.946.0.tgz", - "integrity": "sha512-8haC9kzCVjrsgYFLHbvZw0+GF3f9ezkgkUCsGQEGqerBjHSHkm4YB0+Nje1RGrM8PcPVFMnvCXxc+98eGPcvQw==", + "version": "3.947.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-ses/-/client-ses-3.947.0.tgz", + "integrity": "sha512-Y9xaLPvQE7CW/8liyHdLOs6gxLHciBZhvuuZ/mDZLHtBmMSYm7wb/ikEfX7yid6nBITM/eAFURImRSKlQbnzlg==", "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.946.0", - "@aws-sdk/credential-provider-node": "3.946.0", + "@aws-sdk/core": "3.947.0", + "@aws-sdk/credential-provider-node": "3.947.0", "@aws-sdk/middleware-host-header": "3.936.0", "@aws-sdk/middleware-logger": "3.936.0", "@aws-sdk/middleware-recursion-detection": "3.936.0", - "@aws-sdk/middleware-user-agent": "3.946.0", + "@aws-sdk/middleware-user-agent": "3.947.0", "@aws-sdk/region-config-resolver": "3.936.0", "@aws-sdk/types": "3.936.0", "@aws-sdk/util-endpoints": "3.936.0", "@aws-sdk/util-user-agent-browser": "3.936.0", - "@aws-sdk/util-user-agent-node": "3.946.0", + "@aws-sdk/util-user-agent-node": "3.947.0", "@smithy/config-resolver": "^4.4.3", "@smithy/core": "^3.18.7", "@smithy/fetch-http-handler": "^5.3.6", @@ -296,24 +294,24 @@ } }, "node_modules/@aws-sdk/client-sso": { - "version": "3.946.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.946.0.tgz", - "integrity": "sha512-kGAs5iIVyUz4p6TX3pzG5q3cNxXnVpC4pwRC6DCSaSv9ozyPjc2d74FsK4fZ+J+ejtvCdJk72uiuQtWJc86Wuw==", + "version": "3.947.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.947.0.tgz", + "integrity": "sha512-sDwcO8SP290WSErY1S8pz8hTafeghKmmWjNVks86jDK30wx62CfazOTeU70IpWgrUBEygyXk/zPogHsUMbW2Rg==", "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.946.0", + "@aws-sdk/core": "3.947.0", "@aws-sdk/middleware-host-header": "3.936.0", "@aws-sdk/middleware-logger": "3.936.0", "@aws-sdk/middleware-recursion-detection": "3.936.0", - "@aws-sdk/middleware-user-agent": "3.946.0", + "@aws-sdk/middleware-user-agent": "3.947.0", "@aws-sdk/region-config-resolver": "3.936.0", "@aws-sdk/types": "3.936.0", "@aws-sdk/util-endpoints": "3.936.0", "@aws-sdk/util-user-agent-browser": "3.936.0", - "@aws-sdk/util-user-agent-node": "3.946.0", + "@aws-sdk/util-user-agent-node": "3.947.0", "@smithy/config-resolver": "^4.4.3", "@smithy/core": "^3.18.7", "@smithy/fetch-http-handler": "^5.3.6", @@ -346,9 +344,9 @@ } }, "node_modules/@aws-sdk/core": { - "version": "3.946.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.946.0.tgz", - "integrity": "sha512-u2BkbLLVbMFrEiXrko2+S6ih5sUZPlbVyRPtXOqMHlCyzr70sE8kIiD6ba223rQeIFPcYfW/wHc6k4ihW2xxVg==", + "version": "3.947.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.947.0.tgz", + "integrity": "sha512-Khq4zHhuAkvCFuFbgcy3GrZTzfSX7ZIjIcW1zRDxXRLZKRtuhnZdonqTUfaWi5K42/4OmxkYNpsO7X7trQOeHw==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -371,13 +369,13 @@ } }, "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.946.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.946.0.tgz", - "integrity": "sha512-P4l+K6wX1tf8LmWUvZofdQ+BgCNyk6Tb9u1H10npvqpuCD+dCM4pXIBq3PQcv/juUBOvLGGREo+Govuh3lfD0Q==", + "version": "3.947.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.947.0.tgz", + "integrity": "sha512-VR2V6dRELmzwAsCpK4GqxUi6UW5WNhAXS9F9AzWi5jvijwJo3nH92YNJUP4quMpgFZxJHEWyXLWgPjh9u0zYOA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.946.0", + "@aws-sdk/core": "3.947.0", "@aws-sdk/types": "3.936.0", "@smithy/property-provider": "^4.2.5", "@smithy/types": "^4.9.0", @@ -388,13 +386,13 @@ } }, "node_modules/@aws-sdk/credential-provider-http": { - "version": "3.946.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.946.0.tgz", - "integrity": "sha512-/zeOJ6E7dGZQ/l2k7KytEoPJX0APIhwt0A79hPf/bUpMF4dDs2P6JmchDrotk0a0Y/MIdNF8sBQ/MEOPnBiYoQ==", + "version": "3.947.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.947.0.tgz", + "integrity": "sha512-inF09lh9SlHj63Vmr5d+LmwPXZc2IbK8lAruhOr3KLsZAIHEgHgGPXWDC2ukTEMzg0pkexQ6FOhXXad6klK4RA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.946.0", + "@aws-sdk/core": "3.947.0", "@aws-sdk/types": "3.936.0", "@smithy/fetch-http-handler": "^5.3.6", "@smithy/node-http-handler": "^4.4.5", @@ -410,20 +408,20 @@ } }, "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.946.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.946.0.tgz", - "integrity": "sha512-Pdgcra3RivWj/TuZmfFaHbqsvvgnSKO0CxlRUMMr0PgBiCnUhyl+zBktdNOeGsOPH2fUzQpYhcUjYUgVSdcSDQ==", + "version": "3.947.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.947.0.tgz", + "integrity": "sha512-A2ZUgJUJZERjSzvCi2NR/hBVbVkTXPD0SdKcR/aITb30XwF+n3T963b+pJl90qhOspoy7h0IVYNR7u5Nr9tJdQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.946.0", - "@aws-sdk/credential-provider-env": "3.946.0", - "@aws-sdk/credential-provider-http": "3.946.0", - "@aws-sdk/credential-provider-login": "3.946.0", - "@aws-sdk/credential-provider-process": "3.946.0", - "@aws-sdk/credential-provider-sso": "3.946.0", - "@aws-sdk/credential-provider-web-identity": "3.946.0", - "@aws-sdk/nested-clients": "3.946.0", + "@aws-sdk/core": "3.947.0", + "@aws-sdk/credential-provider-env": "3.947.0", + "@aws-sdk/credential-provider-http": "3.947.0", + "@aws-sdk/credential-provider-login": "3.947.0", + "@aws-sdk/credential-provider-process": "3.947.0", + "@aws-sdk/credential-provider-sso": "3.947.0", + "@aws-sdk/credential-provider-web-identity": "3.947.0", + "@aws-sdk/nested-clients": "3.947.0", "@aws-sdk/types": "3.936.0", "@smithy/credential-provider-imds": "^4.2.5", "@smithy/property-provider": "^4.2.5", @@ -436,14 +434,14 @@ } }, "node_modules/@aws-sdk/credential-provider-login": { - "version": "3.946.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.946.0.tgz", - "integrity": "sha512-5iqLNc15u2Zx+7jOdQkIbP62N7n2031tw5hkmIG0DLnozhnk64osOh2CliiOE9x3c4P9Pf4frAwgyy9GzNTk2g==", + "version": "3.947.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.947.0.tgz", + "integrity": "sha512-u7M3hazcB7aJiVwosNdJRbIJDzbwQ861NTtl6S0HmvWpixaVb7iyhJZWg8/plyUznboZGBm7JVEdxtxv3u0bTA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.946.0", - "@aws-sdk/nested-clients": "3.946.0", + "@aws-sdk/core": "3.947.0", + "@aws-sdk/nested-clients": "3.947.0", "@aws-sdk/types": "3.936.0", "@smithy/property-provider": "^4.2.5", "@smithy/protocol-http": "^5.3.5", @@ -456,18 +454,18 @@ } }, "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.946.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.946.0.tgz", - "integrity": "sha512-I7URUqnBPng1a5y81OImxrwERysZqMBREG6svhhGeZgxmqcpAZ8z5ywILeQXdEOCuuES8phUp/ojzxFjPXp/eA==", + "version": "3.947.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.947.0.tgz", + "integrity": "sha512-S0Zqebr71KyrT6J4uYPhwV65g4V5uDPHnd7dt2W34FcyPu+hVC7Hx4MFmsPyVLeT5cMCkkZvmY3kAoEzgUPJJg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/credential-provider-env": "3.946.0", - "@aws-sdk/credential-provider-http": "3.946.0", - "@aws-sdk/credential-provider-ini": "3.946.0", - "@aws-sdk/credential-provider-process": "3.946.0", - "@aws-sdk/credential-provider-sso": "3.946.0", - "@aws-sdk/credential-provider-web-identity": "3.946.0", + "@aws-sdk/credential-provider-env": "3.947.0", + "@aws-sdk/credential-provider-http": "3.947.0", + "@aws-sdk/credential-provider-ini": "3.947.0", + "@aws-sdk/credential-provider-process": "3.947.0", + "@aws-sdk/credential-provider-sso": "3.947.0", + "@aws-sdk/credential-provider-web-identity": "3.947.0", "@aws-sdk/types": "3.936.0", "@smithy/credential-provider-imds": "^4.2.5", "@smithy/property-provider": "^4.2.5", @@ -480,13 +478,13 @@ } }, "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.946.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.946.0.tgz", - "integrity": "sha512-GtGHX7OGqIeVQ3DlVm5RRF43Qmf3S1+PLJv9svrdvAhAdy2bUb044FdXXqrtSsIfpzTKlHgQUiRo5MWLd35Ntw==", + "version": "3.947.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.947.0.tgz", + "integrity": "sha512-WpanFbHe08SP1hAJNeDdBDVz9SGgMu/gc0XJ9u3uNpW99nKZjDpvPRAdW7WLA4K6essMjxWkguIGNOpij6Do2Q==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.946.0", + "@aws-sdk/core": "3.947.0", "@aws-sdk/types": "3.936.0", "@smithy/property-provider": "^4.2.5", "@smithy/shared-ini-file-loader": "^4.4.0", @@ -498,15 +496,15 @@ } }, "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.946.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.946.0.tgz", - "integrity": "sha512-LeGSSt2V5iwYey1ENGY75RmoDP3bA2iE/py8QBKW8EDA8hn74XBLkprhrK5iccOvU3UGWY8WrEKFAFGNjJOL9g==", + "version": "3.947.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.947.0.tgz", + "integrity": "sha512-NktnVHTGaUMaozxycYrepvb3yfFquHTQ53lt6hBEVjYBzK3C4tVz0siUpr+5RMGLSiZ5bLBp2UjJPgwx4i4waQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/client-sso": "3.946.0", - "@aws-sdk/core": "3.946.0", - "@aws-sdk/token-providers": "3.946.0", + "@aws-sdk/client-sso": "3.947.0", + "@aws-sdk/core": "3.947.0", + "@aws-sdk/token-providers": "3.947.0", "@aws-sdk/types": "3.936.0", "@smithy/property-provider": "^4.2.5", "@smithy/shared-ini-file-loader": "^4.4.0", @@ -518,14 +516,14 @@ } }, "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.946.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.946.0.tgz", - "integrity": "sha512-ocBCvjWfkbjxElBI1QUxOnHldsNhoU0uOICFvuRDAZAoxvypJHN3m5BJkqb7gqorBbcv3LRgmBdEnWXOAvq+7Q==", + "version": "3.947.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.947.0.tgz", + "integrity": "sha512-gokm/e/YHiHLrZgLq4j8tNAn8RJDPbIcglFRKgy08q8DmAqHQ8MXAKW3eS0QjAuRXU9mcMmUo1NrX6FRNBCCPw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.946.0", - "@aws-sdk/nested-clients": "3.946.0", + "@aws-sdk/core": "3.947.0", + "@aws-sdk/nested-clients": "3.947.0", "@aws-sdk/types": "3.936.0", "@smithy/property-provider": "^4.2.5", "@smithy/shared-ini-file-loader": "^4.4.0", @@ -585,13 +583,13 @@ } }, "node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.946.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.946.0.tgz", - "integrity": "sha512-7QcljCraeaWQNuqmOoAyZs8KpZcuhPiqdeeKoRd397jVGNRehLFsZbIMOvwaluUDFY11oMyXOkQEERe1Zo2fCw==", + "version": "3.947.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.947.0.tgz", + "integrity": "sha512-7rpKV8YNgCP2R4F9RjWZFcD2R+SO/0R4VHIbY9iZJdH2MzzJ8ZG7h8dZ2m8QkQd1fjx4wrFJGGPJUTYXPV3baA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.946.0", + "@aws-sdk/core": "3.947.0", "@aws-sdk/types": "3.936.0", "@aws-sdk/util-endpoints": "3.936.0", "@smithy/core": "^3.18.7", @@ -604,24 +602,24 @@ } }, "node_modules/@aws-sdk/nested-clients": { - "version": "3.946.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.946.0.tgz", - "integrity": "sha512-rjAtEguukeW8mlyEQMQI56vxFoyWlaNwowmz1p1rav948SUjtrzjHAp4TOQWhibb7AR7BUTHBCgIcyCRjBEf4g==", + "version": "3.947.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.947.0.tgz", + "integrity": "sha512-DjRJEYNnHUTu9kGPPQDTSXquwSEd6myKR4ssI4FaYLFhdT3ldWpj73yYt807H3tdmhS7vPmdVqchSJnjurUQAw==", "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.946.0", + "@aws-sdk/core": "3.947.0", "@aws-sdk/middleware-host-header": "3.936.0", "@aws-sdk/middleware-logger": "3.936.0", "@aws-sdk/middleware-recursion-detection": "3.936.0", - "@aws-sdk/middleware-user-agent": "3.946.0", + "@aws-sdk/middleware-user-agent": "3.947.0", "@aws-sdk/region-config-resolver": "3.936.0", "@aws-sdk/types": "3.936.0", "@aws-sdk/util-endpoints": "3.936.0", "@aws-sdk/util-user-agent-browser": "3.936.0", - "@aws-sdk/util-user-agent-node": "3.946.0", + "@aws-sdk/util-user-agent-node": "3.947.0", "@smithy/config-resolver": "^4.4.3", "@smithy/core": "^3.18.7", "@smithy/fetch-http-handler": "^5.3.6", @@ -671,14 +669,14 @@ } }, "node_modules/@aws-sdk/token-providers": { - "version": "3.946.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.946.0.tgz", - "integrity": "sha512-a5c+rM6CUPX2ExmUZ3DlbLlS5rQr4tbdoGcgBsjnAHiYx8MuMNAI+8M7wfjF13i2yvUQj5WEIddvLpayfEZj9g==", + "version": "3.947.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.947.0.tgz", + "integrity": "sha512-X/DyB8GuK44rsE89Tn5+s542B3PhGbXQSgV8lvqHDzvicwCt0tWny6790st6CPETrVVV2K3oJMfG5U3/jAmaZA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.946.0", - "@aws-sdk/nested-clients": "3.946.0", + "@aws-sdk/core": "3.947.0", + "@aws-sdk/nested-clients": "3.947.0", "@aws-sdk/types": "3.936.0", "@smithy/property-provider": "^4.2.5", "@smithy/shared-ini-file-loader": "^4.4.0", @@ -747,13 +745,13 @@ } }, "node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.946.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.946.0.tgz", - "integrity": "sha512-a2UwwvzbK5AxHKUBupfg4s7VnkqRAHjYsuezHnKCniczmT4HZfP1NnfwwvLKEH8qaTrwenxjKSfq4UWmWkvG+Q==", + "version": "3.947.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.947.0.tgz", + "integrity": "sha512-+vhHoDrdbb+zerV4noQk1DHaUMNzWFWPpPYjVTwW2186k5BEJIecAMChYkghRrBVJ3KPWP1+JnZwOd72F3d4rQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/middleware-user-agent": "3.946.0", + "@aws-sdk/middleware-user-agent": "3.947.0", "@aws-sdk/types": "3.936.0", "@smithy/node-config-provider": "^4.3.5", "@smithy/types": "^4.9.0", @@ -3422,9 +3420,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "20.19.25", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.25.tgz", - "integrity": "sha512-ZsJzA5thDQMSQO788d7IocwwQbI8B5OPzmqNvpf3NY/+MHDAS759Wo0gd2WQeXYt5AAAQjzcrTVC6SKCuYgoCQ==", + "version": "20.19.26", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.26.tgz", + "integrity": "sha512-0l6cjgF0XnihUpndDhk+nyD3exio3iKaYROSgvh/qSevPXax3L8p5DBRFjbvalnwatGgHEQn2R88y2fA3g4irg==", "license": "MIT", "dependencies": { "undici-types": "~6.21.0" @@ -3542,17 +3540,6 @@ "@types/passport": "*" } }, - "node_modules/@types/passport-twitter": { - "version": "1.0.40", - "resolved": "https://registry.npmjs.org/@types/passport-twitter/-/passport-twitter-1.0.40.tgz", - "integrity": "sha512-5Yxm+P/x6XEYvANANmjkVnRpMlRpORODZYYplBKH+BFTHQ8kGt3FgMm6eMgIzrGA4WvZo6TKH4IvYug+31mX4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/express": "*", - "@types/passport": "*" - } - }, "node_modules/@types/pg": { "version": "8.15.6", "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.15.6.tgz", @@ -4300,9 +4287,9 @@ } }, "node_modules/baseline-browser-mapping": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.3.tgz", - "integrity": "sha512-8QdH6czo+G7uBsNo0GiUfouPN1lRzKdJTGnKXwe12gkFbnnOUaUKGN55dMkfy+mnxmvjwl9zcI4VncczcVXDhA==", + "version": "2.9.5", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.5.tgz", + "integrity": "sha512-D5vIoztZOq1XM54LUdttJVc96ggEsIfju2JBvht06pSzpckp3C7HReun67Bghzrtdsq9XdMGbSSB3v3GhMNmAA==", "dev": true, "license": "Apache-2.0", "bin": { @@ -5112,9 +5099,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.266", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.266.tgz", - "integrity": "sha512-kgWEglXvkEfMH7rxP5OSZZwnaDWT7J9EoZCujhnpLbfi0bbNtRkgdX2E3gt0Uer11c61qCYktB3hwkAS325sJg==", + "version": "1.5.267", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.267.tgz", + "integrity": "sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==", "dev": true, "license": "ISC" }, @@ -7837,9 +7824,9 @@ "license": "MIT" }, "node_modules/nodemailer": { - "version": "6.10.1", - "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.10.1.tgz", - "integrity": "sha512-Z+iLaBGVaSjbIzQ4pX6XV41HrooLsQ10ZWPUehGmuantvzWoDVBnmsdUcOIDM1t+yPor5pDhVlDESgOMEGxhHA==", + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-7.0.11.tgz", + "integrity": "sha512-gnXhNRE0FNhD7wPSCGhdNh46Hs6nm+uTyg+Kq0cZukNQiYdnCsoQjodNP9BQVG9XrcK/v6/MgpAPBUFyzh9pvw==", "license": "MIT-0", "engines": { "node": ">=6.0.0" @@ -8170,30 +8157,6 @@ "node": ">= 0.4.0" } }, - "node_modules/passport-oauth1": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/passport-oauth1/-/passport-oauth1-1.3.0.tgz", - "integrity": "sha512-8T/nX4gwKTw0PjxP1xfD0QhrydQNakzeOpZ6M5Uqdgz9/a/Ag62RmJxnZQ4LkbdXGrRehQHIAHNAu11rCP46Sw==", - "license": "MIT", - "dependencies": { - "oauth": "0.9.x", - "passport-strategy": "1.x.x", - "utils-merge": "1.x.x" - }, - "engines": { - "node": ">= 0.4.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/jaredhanson" - } - }, - "node_modules/passport-oauth1/node_modules/oauth": { - "version": "0.9.15", - "resolved": "https://registry.npmjs.org/oauth/-/oauth-0.9.15.tgz", - "integrity": "sha512-a5ERWK1kh38ExDEfoO6qUHJb32rd7aYmPHuyCu3Fta/cnICvYmgd2uhuKXvPD+PXB+gCEYYEaQdIRAjCOwAKNA==", - "license": "MIT" - }, "node_modules/passport-oauth2": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/passport-oauth2/-/passport-oauth2-1.8.0.tgz", @@ -8222,19 +8185,6 @@ "node": ">= 0.4.0" } }, - "node_modules/passport-twitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/passport-twitter/-/passport-twitter-1.0.4.tgz", - "integrity": "sha512-qvdauqCqCJJci82mJ9hZZQ6nAv7aSHV31svL8+9H7mRlDdXCdfU6AARQrmmJu3DRmv9fvIebM7zzxR7mVufN3A==", - "license": "MIT", - "dependencies": { - "passport-oauth1": "1.x.x", - "xtraverse": "0.1.x" - }, - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -10155,9 +10105,9 @@ "license": "ISC" }, "node_modules/winston": { - "version": "3.18.3", - "resolved": "https://registry.npmjs.org/winston/-/winston-3.18.3.tgz", - "integrity": "sha512-NoBZauFNNWENgsnC9YpgyYwOVrl2m58PpQ8lNHjV3kosGs7KJ7Npk9pCUE+WJlawVSe8mykWDKWFSVfs3QO9ww==", + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.19.0.tgz", + "integrity": "sha512-LZNJgPzfKR+/J3cHkxcpHKpKKvGfDZVPS4hfJCc4cCG0CgYzvlD6yE/S3CIL/Yt91ak327YCpiF/0MyeZHEHKA==", "license": "MIT", "dependencies": { "@colors/colors": "^1.6.0", @@ -10277,16 +10227,6 @@ "node": ">=6.0" } }, - "node_modules/xmldom": { - "version": "0.1.31", - "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.31.tgz", - "integrity": "sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ==", - "deprecated": "Deprecated due to CVE-2021-21366 resolved in 0.5.0", - "license": "(LGPL-2.0 or MIT)", - "engines": { - "node": ">=0.1" - } - }, "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", @@ -10296,17 +10236,6 @@ "node": ">=0.4" } }, - "node_modules/xtraverse": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/xtraverse/-/xtraverse-0.1.0.tgz", - "integrity": "sha512-MANQdlG2hl1nQobxz1Rv8hsS1RuBS0C1N6qTOupv+9vmfrReePdxhmB2ecYjvsp4stJ80HD7erjkoF1Hd/FK9A==", - "dependencies": { - "xmldom": "0.1.x" - }, - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", diff --git a/projects/trading-platform/apps/backend/package.json b/projects/trading-platform/apps/backend/package.json index 681b4c6..ddde0b4 100644 --- a/projects/trading-platform/apps/backend/package.json +++ b/projects/trading-platform/apps/backend/package.json @@ -37,14 +37,13 @@ "passport": "^0.7.0", "passport-google-oauth20": "^2.0.0", "passport-facebook": "^3.0.0", - "passport-twitter": "^1.0.4", "passport-apple": "^2.0.2", "passport-github2": "^0.1.12", "passport-local": "^1.0.0", "speakeasy": "^2.0.0", "qrcode": "^1.5.3", "twilio": "^4.19.3", - "nodemailer": "^6.9.7", + "nodemailer": "^7.0.11", "google-auth-library": "^9.4.1", "@anthropic-ai/sdk": "^0.32.1", "openai": "^4.73.0", @@ -64,7 +63,6 @@ "@types/passport": "^1.0.16", "@types/passport-google-oauth20": "^2.0.14", "@types/passport-facebook": "^3.0.3", - "@types/passport-twitter": "^1.0.40", "@types/passport-github2": "^1.2.9", "@types/passport-local": "^1.0.38", "@types/speakeasy": "^2.0.10", diff --git a/projects/trading-platform/apps/frontend/package-lock.json b/projects/trading-platform/apps/frontend/package-lock.json index 125b33c..5bfbe11 100644 --- a/projects/trading-platform/apps/frontend/package-lock.json +++ b/projects/trading-platform/apps/frontend/package-lock.json @@ -34,7 +34,7 @@ "@typescript-eslint/eslint-plugin": "^6.14.0", "@typescript-eslint/parser": "^6.14.0", "@vitejs/plugin-react": "^4.2.1", - "@vitest/ui": "^1.1.0", + "@vitest/ui": "^3.0.0", "autoprefixer": "^10.4.16", "eslint": "^8.55.0", "eslint-plugin-react": "^7.33.2", @@ -44,8 +44,8 @@ "prettier": "^3.1.1", "tailwindcss": "^3.4.0", "typescript": "^5.3.3", - "vite": "^5.0.10", - "vitest": "^1.1.0" + "vite": "^6.2.0", + "vitest": "^3.0.0" } }, "node_modules/@adobe/css-tools": { @@ -531,9 +531,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", - "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", + "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", "cpu": [ "ppc64" ], @@ -544,13 +544,13 @@ "aix" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", - "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", + "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", "cpu": [ "arm" ], @@ -561,13 +561,13 @@ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", - "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", + "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", "cpu": [ "arm64" ], @@ -578,13 +578,13 @@ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", - "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", + "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", "cpu": [ "x64" ], @@ -595,13 +595,13 @@ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", - "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", + "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", "cpu": [ "arm64" ], @@ -612,13 +612,13 @@ "darwin" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", - "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", + "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", "cpu": [ "x64" ], @@ -629,13 +629,13 @@ "darwin" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", - "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", + "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", "cpu": [ "arm64" ], @@ -646,13 +646,13 @@ "freebsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", - "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", + "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", "cpu": [ "x64" ], @@ -663,13 +663,13 @@ "freebsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", - "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", + "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", "cpu": [ "arm" ], @@ -680,13 +680,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", - "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", + "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", "cpu": [ "arm64" ], @@ -697,13 +697,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", - "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", + "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", "cpu": [ "ia32" ], @@ -714,13 +714,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", - "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", + "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", "cpu": [ "loong64" ], @@ -731,13 +731,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", - "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", + "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", "cpu": [ "mips64el" ], @@ -748,13 +748,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", - "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", + "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", "cpu": [ "ppc64" ], @@ -765,13 +765,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", - "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", + "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", "cpu": [ "riscv64" ], @@ -782,13 +782,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", - "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", + "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", "cpu": [ "s390x" ], @@ -799,13 +799,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", - "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", + "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", "cpu": [ "x64" ], @@ -816,13 +816,30 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", + "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", - "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", + "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", "cpu": [ "x64" ], @@ -833,13 +850,30 @@ "netbsd" ], "engines": { - "node": ">=12" + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", + "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", - "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", + "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", "cpu": [ "x64" ], @@ -850,13 +884,30 @@ "openbsd" ], "engines": { - "node": ">=12" + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", + "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", - "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", + "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", "cpu": [ "x64" ], @@ -867,13 +918,13 @@ "sunos" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", - "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", + "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", "cpu": [ "arm64" ], @@ -884,13 +935,13 @@ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", - "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", + "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", "cpu": [ "ia32" ], @@ -901,13 +952,13 @@ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", - "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", + "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", "cpu": [ "x64" ], @@ -918,7 +969,7 @@ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@eslint-community/eslint-utils": { @@ -1088,19 +1139,6 @@ "dev": true, "license": "BSD-3-Clause" }, - "node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.13", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", @@ -1520,13 +1558,6 @@ "win32" ] }, - "node_modules/@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", - "dev": true, - "license": "MIT" - }, "node_modules/@stripe/react-stripe-js": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/@stripe/react-stripe-js/-/react-stripe-js-2.9.0.tgz", @@ -1702,6 +1733,24 @@ "@babel/types": "^7.28.2" } }, + "node_modules/@types/chai": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", + "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/deep-eql": "*", + "assertion-error": "^2.0.1" + } + }, + "node_modules/@types/deep-eql": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", + "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/estree": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", @@ -1980,201 +2029,143 @@ } }, "node_modules/@vitest/expect": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-1.6.1.tgz", - "integrity": "sha512-jXL+9+ZNIJKruofqXuuTClf44eSpcHlgj3CiuNihUF3Ioujtmc0zIa3UJOW5RjDK1YLBJZnWBlPuqhYycLioog==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.2.4.tgz", + "integrity": "sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "1.6.1", - "@vitest/utils": "1.6.1", - "chai": "^4.3.10" + "@types/chai": "^5.2.2", + "@vitest/spy": "3.2.4", + "@vitest/utils": "3.2.4", + "chai": "^5.2.0", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/mocker": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.4.tgz", + "integrity": "sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/spy": "3.2.4", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.17" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "msw": "^2.4.9", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, + "node_modules/@vitest/pretty-format": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz", + "integrity": "sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyrainbow": "^2.0.0" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/runner": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-1.6.1.tgz", - "integrity": "sha512-3nSnYXkVkf3mXFfE7vVyPmi3Sazhb/2cfZGGs0JRzFsPFvAMBEcrweV1V1GsrstdXeKCTXlJbvnQwGWgEIHmOA==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.2.4.tgz", + "integrity": "sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "1.6.1", - "p-limit": "^5.0.0", - "pathe": "^1.1.1" + "@vitest/utils": "3.2.4", + "pathe": "^2.0.3", + "strip-literal": "^3.0.0" }, "funding": { "url": "https://opencollective.com/vitest" } }, - "node_modules/@vitest/runner/node_modules/p-limit": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-5.0.0.tgz", - "integrity": "sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^1.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@vitest/runner/node_modules/yocto-queue": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", - "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@vitest/snapshot": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.6.1.tgz", - "integrity": "sha512-WvidQuWAzU2p95u8GAKlRMqMyN1yOJkGHnx3M1PL9Raf7AQ1kwLKg04ADlCa3+OXUZE7BceOhVZiuWAbzCKcUQ==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.4.tgz", + "integrity": "sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==", "dev": true, "license": "MIT", "dependencies": { - "magic-string": "^0.30.5", - "pathe": "^1.1.1", - "pretty-format": "^29.7.0" + "@vitest/pretty-format": "3.2.4", + "magic-string": "^0.30.17", + "pathe": "^2.0.3" }, "funding": { "url": "https://opencollective.com/vitest" } }, - "node_modules/@vitest/snapshot/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@vitest/snapshot/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@vitest/snapshot/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "license": "MIT" - }, "node_modules/@vitest/spy": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.6.1.tgz", - "integrity": "sha512-MGcMmpGkZebsMZhbQKkAf9CX5zGvjkBTqf8Zx3ApYWXr3wG+QvEu2eXWfnIIWYSJExIp4V9FCKDEeygzkYrXMw==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.2.4.tgz", + "integrity": "sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==", "dev": true, "license": "MIT", "dependencies": { - "tinyspy": "^2.2.0" + "tinyspy": "^4.0.3" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/ui": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@vitest/ui/-/ui-1.6.1.tgz", - "integrity": "sha512-xa57bCPGuzEFqGjPs3vVLyqareG8DX0uMkr5U/v5vLv5/ZUrBrPL7gzxzTJedEyZxFMfsozwTIbbYfEQVo3kgg==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/ui/-/ui-3.2.4.tgz", + "integrity": "sha512-hGISOaP18plkzbWEcP/QvtRW1xDXF2+96HbEX6byqQhAUbiS5oH6/9JwW+QsQCIYON2bI6QZBF+2PvOmrRZ9wA==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@vitest/utils": "1.6.1", - "fast-glob": "^3.3.2", - "fflate": "^0.8.1", - "flatted": "^3.2.9", - "pathe": "^1.1.1", - "picocolors": "^1.0.0", - "sirv": "^2.0.4" + "@vitest/utils": "3.2.4", + "fflate": "^0.8.2", + "flatted": "^3.3.3", + "pathe": "^2.0.3", + "sirv": "^3.0.1", + "tinyglobby": "^0.2.14", + "tinyrainbow": "^2.0.0" }, "funding": { "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "vitest": "1.6.1" + "vitest": "3.2.4" } }, "node_modules/@vitest/utils": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-1.6.1.tgz", - "integrity": "sha512-jOrrUvXM4Av9ZWiG1EajNto0u96kWAhJ1LmPmJhXXQx/32MecEKd10pOLYgS2BQx1TgkGhloPU1ArDW2vvaY6g==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.2.4.tgz", + "integrity": "sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==", "dev": true, "license": "MIT", "dependencies": { - "diff-sequences": "^29.6.3", - "estree-walker": "^3.0.3", - "loupe": "^2.3.7", - "pretty-format": "^29.7.0" + "@vitest/pretty-format": "3.2.4", + "loupe": "^3.1.4", + "tinyrainbow": "^2.0.0" }, "funding": { "url": "https://opencollective.com/vitest" } }, - "node_modules/@vitest/utils/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@vitest/utils/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@vitest/utils/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "license": "MIT" - }, "node_modules/acorn": { "version": "8.15.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", @@ -2199,19 +2190,6 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/acorn-walk": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", - "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.11.0" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/agent-base": { "version": "7.1.4", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", @@ -2459,13 +2437,13 @@ } }, "node_modules/assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", "dev": true, "license": "MIT", "engines": { - "node": "*" + "node": ">=12" } }, "node_modules/async-function": { @@ -2557,9 +2535,9 @@ "license": "MIT" }, "node_modules/baseline-browser-mapping": { - "version": "2.9.4", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.4.tgz", - "integrity": "sha512-ZCQ9GEWl73BVm8bu5Fts8nt7MHdbt5vY9bP6WGnUh+r3l8M7CgfyTlwsgCbMC66BNxPr6Xoce3j66Ms5YUQTNA==", + "version": "2.9.5", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.5.tgz", + "integrity": "sha512-D5vIoztZOq1XM54LUdttJVc96ggEsIfju2JBvht06pSzpckp3C7HReun67Bghzrtdsq9XdMGbSSB3v3GhMNmAA==", "dev": true, "license": "Apache-2.0", "bin": { @@ -2748,22 +2726,20 @@ "license": "CC-BY-4.0" }, "node_modules/chai": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz", - "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.3.3.tgz", + "integrity": "sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==", "dev": true, "license": "MIT", "dependencies": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.3", - "deep-eql": "^4.1.3", - "get-func-name": "^2.0.2", - "loupe": "^2.3.6", - "pathval": "^1.1.1", - "type-detect": "^4.1.0" + "assertion-error": "^2.0.1", + "check-error": "^2.1.1", + "deep-eql": "^5.0.1", + "loupe": "^3.1.0", + "pathval": "^2.0.0" }, "engines": { - "node": ">=4" + "node": ">=18" } }, "node_modules/chalk": { @@ -2784,16 +2760,13 @@ } }, "node_modules/check-error": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", - "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", + "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", "dev": true, "license": "MIT", - "dependencies": { - "get-func-name": "^2.0.2" - }, "engines": { - "node": "*" + "node": ">= 16" } }, "node_modules/chokidar": { @@ -2892,13 +2865,6 @@ "dev": true, "license": "MIT" }, - "node_modules/confbox": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", - "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", - "dev": true, - "license": "MIT" - }, "node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", @@ -3093,14 +3059,11 @@ "license": "MIT" }, "node_modules/deep-eql": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", - "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", + "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", "dev": true, "license": "MIT", - "dependencies": { - "type-detect": "^4.0.0" - }, "engines": { "node": ">=6" } @@ -3197,16 +3160,6 @@ "dev": true, "license": "Apache-2.0" }, - "node_modules/diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -3262,9 +3215,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.266", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.266.tgz", - "integrity": "sha512-kgWEglXvkEfMH7rxP5OSZZwnaDWT7J9EoZCujhnpLbfi0bbNtRkgdX2E3gt0Uer11c61qCYktB3hwkAS325sJg==", + "version": "1.5.267", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.267.tgz", + "integrity": "sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==", "dev": true, "license": "ISC" }, @@ -3417,6 +3370,13 @@ "node": ">= 0.4" } }, + "node_modules/es-module-lexer": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "dev": true, + "license": "MIT" + }, "node_modules/es-object-atoms": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", @@ -3476,9 +3436,9 @@ } }, "node_modules/esbuild": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", - "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", + "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -3486,32 +3446,35 @@ "esbuild": "bin/esbuild" }, "engines": { - "node": ">=12" + "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.21.5", - "@esbuild/android-arm": "0.21.5", - "@esbuild/android-arm64": "0.21.5", - "@esbuild/android-x64": "0.21.5", - "@esbuild/darwin-arm64": "0.21.5", - "@esbuild/darwin-x64": "0.21.5", - "@esbuild/freebsd-arm64": "0.21.5", - "@esbuild/freebsd-x64": "0.21.5", - "@esbuild/linux-arm": "0.21.5", - "@esbuild/linux-arm64": "0.21.5", - "@esbuild/linux-ia32": "0.21.5", - "@esbuild/linux-loong64": "0.21.5", - "@esbuild/linux-mips64el": "0.21.5", - "@esbuild/linux-ppc64": "0.21.5", - "@esbuild/linux-riscv64": "0.21.5", - "@esbuild/linux-s390x": "0.21.5", - "@esbuild/linux-x64": "0.21.5", - "@esbuild/netbsd-x64": "0.21.5", - "@esbuild/openbsd-x64": "0.21.5", - "@esbuild/sunos-x64": "0.21.5", - "@esbuild/win32-arm64": "0.21.5", - "@esbuild/win32-ia32": "0.21.5", - "@esbuild/win32-x64": "0.21.5" + "@esbuild/aix-ppc64": "0.25.12", + "@esbuild/android-arm": "0.25.12", + "@esbuild/android-arm64": "0.25.12", + "@esbuild/android-x64": "0.25.12", + "@esbuild/darwin-arm64": "0.25.12", + "@esbuild/darwin-x64": "0.25.12", + "@esbuild/freebsd-arm64": "0.25.12", + "@esbuild/freebsd-x64": "0.25.12", + "@esbuild/linux-arm": "0.25.12", + "@esbuild/linux-arm64": "0.25.12", + "@esbuild/linux-ia32": "0.25.12", + "@esbuild/linux-loong64": "0.25.12", + "@esbuild/linux-mips64el": "0.25.12", + "@esbuild/linux-ppc64": "0.25.12", + "@esbuild/linux-riscv64": "0.25.12", + "@esbuild/linux-s390x": "0.25.12", + "@esbuild/linux-x64": "0.25.12", + "@esbuild/netbsd-arm64": "0.25.12", + "@esbuild/netbsd-x64": "0.25.12", + "@esbuild/openbsd-arm64": "0.25.12", + "@esbuild/openbsd-x64": "0.25.12", + "@esbuild/openharmony-arm64": "0.25.12", + "@esbuild/sunos-x64": "0.25.12", + "@esbuild/win32-arm64": "0.25.12", + "@esbuild/win32-ia32": "0.25.12", + "@esbuild/win32-x64": "0.25.12" } }, "node_modules/escalade": { @@ -3816,28 +3779,14 @@ "node": ">=0.10.0" } }, - "node_modules/execa": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", - "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "node_modules/expect-type": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.3.0.tgz", + "integrity": "sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==", "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^8.0.1", - "human-signals": "^5.0.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^3.0.0" - }, + "license": "Apache-2.0", "engines": { - "node": ">=16.17" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "node": ">=12.0.0" } }, "node_modules/fancy-canvas": { @@ -4127,16 +4076,6 @@ "node": ">=6.9.0" } }, - "node_modules/get-func-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", - "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, "node_modules/get-intrinsic": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", @@ -4174,19 +4113,6 @@ "node": ">= 0.4" } }, - "node_modules/get-stream": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", - "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/get-symbol-description": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", @@ -4478,16 +4404,6 @@ "node": ">= 14" } }, - "node_modules/human-signals": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", - "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=16.17.0" - } - }, "node_modules/iconv-lite": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", @@ -4924,19 +4840,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-string": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", @@ -5254,23 +5157,6 @@ "dev": true, "license": "MIT" }, - "node_modules/local-pkg": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.1.tgz", - "integrity": "sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "mlly": "^1.7.3", - "pkg-types": "^1.2.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -5307,14 +5193,11 @@ } }, "node_modules/loupe": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", - "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.2.1.tgz", + "integrity": "sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==", "dev": true, - "license": "MIT", - "dependencies": { - "get-func-name": "^2.0.1" - } + "license": "MIT" }, "node_modules/lru-cache": { "version": "5.1.1", @@ -5371,13 +5254,6 @@ "dev": true, "license": "CC0-1.0" }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true, - "license": "MIT" - }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -5423,19 +5299,6 @@ "node": ">= 0.6" } }, - "node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/min-indent": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", @@ -5462,26 +5325,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/mlly": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.8.0.tgz", - "integrity": "sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.15.0", - "pathe": "^2.0.3", - "pkg-types": "^1.3.1", - "ufo": "^1.6.1" - } - }, - "node_modules/mlly/node_modules/pathe": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", - "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", - "dev": true, - "license": "MIT" - }, "node_modules/mrmime": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", @@ -5564,35 +5407,6 @@ "node": ">=0.10.0" } }, - "node_modules/npm-run-path": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", - "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm-run-path/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -5737,22 +5551,6 @@ "wrappy": "1" } }, - "node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-fn": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/optionator": { "version": "0.9.4", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", @@ -5895,20 +5693,20 @@ } }, "node_modules/pathe": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", - "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", "dev": true, "license": "MIT" }, "node_modules/pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.1.tgz", + "integrity": "sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==", "dev": true, "license": "MIT", "engines": { - "node": "*" + "node": ">= 14.16" } }, "node_modules/picocolors": { @@ -5951,25 +5749,6 @@ "node": ">= 6" } }, - "node_modules/pkg-types": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz", - "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "confbox": "^0.1.8", - "mlly": "^1.7.4", - "pathe": "^2.0.1" - } - }, - "node_modules/pkg-types/node_modules/pathe": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", - "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", - "dev": true, - "license": "MIT" - }, "node_modules/possible-typed-array-names": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", @@ -6882,23 +6661,10 @@ "dev": true, "license": "ISC" }, - "node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/sirv": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz", - "integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.2.tgz", + "integrity": "sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==", "dev": true, "license": "MIT", "dependencies": { @@ -6907,7 +6673,7 @@ "totalist": "^3.0.0" }, "engines": { - "node": ">= 10" + "node": ">=18" } }, "node_modules/slash": { @@ -7069,19 +6835,6 @@ "node": ">=8" } }, - "node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/strip-indent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", @@ -7109,9 +6862,9 @@ } }, "node_modules/strip-literal": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-2.1.1.tgz", - "integrity": "sha512-631UJ6O00eNGfMiWG78ck80dfBab8X6IVFB51jZK5Icd7XAs60Z5y7QdSd/wGIklnWvRbUNloVzhOKKmutxQ6Q==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-3.1.0.tgz", + "integrity": "sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==", "dev": true, "license": "MIT", "dependencies": { @@ -7280,6 +7033,13 @@ "dev": true, "license": "MIT" }, + "node_modules/tinyexec": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", + "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", + "dev": true, + "license": "MIT" + }, "node_modules/tinyglobby": { "version": "0.2.15", "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", @@ -7330,9 +7090,19 @@ } }, "node_modules/tinypool": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.8.4.tgz", - "integrity": "sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz", + "integrity": "sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.0.0 || >=20.0.0" + } + }, + "node_modules/tinyrainbow": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz", + "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==", "dev": true, "license": "MIT", "engines": { @@ -7340,9 +7110,9 @@ } }, "node_modules/tinyspy": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.1.tgz", - "integrity": "sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-4.0.4.tgz", + "integrity": "sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==", "dev": true, "license": "MIT", "engines": { @@ -7434,16 +7204,6 @@ "node": ">= 0.8.0" } }, - "node_modules/type-detect": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", - "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/type-fest": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", @@ -7550,13 +7310,6 @@ "node": ">=14.17" } }, - "node_modules/ufo": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.1.tgz", - "integrity": "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==", - "dev": true, - "license": "MIT" - }, "node_modules/unbox-primitive": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", @@ -7655,22 +7408,25 @@ "license": "MIT" }, "node_modules/vite": { - "version": "5.4.21", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.21.tgz", - "integrity": "sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.1.tgz", + "integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "esbuild": "^0.21.3", - "postcss": "^8.4.43", - "rollup": "^4.20.0" + "esbuild": "^0.25.0", + "fdir": "^6.4.4", + "picomatch": "^4.0.2", + "postcss": "^8.5.3", + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" }, "bin": { "vite": "bin/vite.js" }, "engines": { - "node": "^18.0.0 || >=20.0.0" + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" }, "funding": { "url": "https://github.com/vitejs/vite?sponsor=1" @@ -7679,19 +7435,25 @@ "fsevents": "~2.3.3" }, "peerDependencies": { - "@types/node": "^18.0.0 || >=20.0.0", + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", "less": "*", "lightningcss": "^1.21.0", "sass": "*", "sass-embedded": "*", "stylus": "*", "sugarss": "*", - "terser": "^5.4.0" + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" }, "peerDependenciesMeta": { "@types/node": { "optional": true }, + "jiti": { + "optional": true + }, "less": { "optional": true }, @@ -7712,75 +7474,117 @@ }, "terser": { "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true } } }, "node_modules/vite-node": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-1.6.1.tgz", - "integrity": "sha512-YAXkfvGtuTzwWbDSACdJSg4A4DZiAqckWe90Zapc/sEX3XvHcw1NdurM/6od8J207tSDqNbSsgdCacBgvJKFuA==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.2.4.tgz", + "integrity": "sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==", "dev": true, "license": "MIT", "dependencies": { "cac": "^6.7.14", - "debug": "^4.3.4", - "pathe": "^1.1.1", - "picocolors": "^1.0.0", - "vite": "^5.0.0" + "debug": "^4.4.1", + "es-module-lexer": "^1.7.0", + "pathe": "^2.0.3", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" }, "bin": { "vite-node": "vite-node.mjs" }, "engines": { - "node": "^18.0.0 || >=20.0.0" + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" }, "funding": { "url": "https://opencollective.com/vitest" } }, + "node_modules/vite/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/vitest": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-1.6.1.tgz", - "integrity": "sha512-Ljb1cnSJSivGN0LqXd/zmDbWEM0RNNg2t1QW/XUhYl/qPqyu7CsqeWtqQXHVaJsecLPuDoak2oJcZN2QoRIOag==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.2.4.tgz", + "integrity": "sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@vitest/expect": "1.6.1", - "@vitest/runner": "1.6.1", - "@vitest/snapshot": "1.6.1", - "@vitest/spy": "1.6.1", - "@vitest/utils": "1.6.1", - "acorn-walk": "^8.3.2", - "chai": "^4.3.10", - "debug": "^4.3.4", - "execa": "^8.0.1", - "local-pkg": "^0.5.0", - "magic-string": "^0.30.5", - "pathe": "^1.1.1", - "picocolors": "^1.0.0", - "std-env": "^3.5.0", - "strip-literal": "^2.0.0", - "tinybench": "^2.5.1", - "tinypool": "^0.8.3", - "vite": "^5.0.0", - "vite-node": "1.6.1", - "why-is-node-running": "^2.2.2" + "@types/chai": "^5.2.2", + "@vitest/expect": "3.2.4", + "@vitest/mocker": "3.2.4", + "@vitest/pretty-format": "^3.2.4", + "@vitest/runner": "3.2.4", + "@vitest/snapshot": "3.2.4", + "@vitest/spy": "3.2.4", + "@vitest/utils": "3.2.4", + "chai": "^5.2.0", + "debug": "^4.4.1", + "expect-type": "^1.2.1", + "magic-string": "^0.30.17", + "pathe": "^2.0.3", + "picomatch": "^4.0.2", + "std-env": "^3.9.0", + "tinybench": "^2.9.0", + "tinyexec": "^0.3.2", + "tinyglobby": "^0.2.14", + "tinypool": "^1.1.1", + "tinyrainbow": "^2.0.0", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0", + "vite-node": "3.2.4", + "why-is-node-running": "^2.3.0" }, "bin": { "vitest": "vitest.mjs" }, "engines": { - "node": "^18.0.0 || >=20.0.0" + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" }, "funding": { "url": "https://opencollective.com/vitest" }, "peerDependencies": { "@edge-runtime/vm": "*", - "@types/node": "^18.0.0 || >=20.0.0", - "@vitest/browser": "1.6.1", - "@vitest/ui": "1.6.1", + "@types/debug": "^4.1.12", + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "@vitest/browser": "3.2.4", + "@vitest/ui": "3.2.4", "happy-dom": "*", "jsdom": "*" }, @@ -7788,6 +7592,9 @@ "@edge-runtime/vm": { "optional": true }, + "@types/debug": { + "optional": true + }, "@types/node": { "optional": true }, @@ -7805,6 +7612,19 @@ } } }, + "node_modules/vitest/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/w3c-xmlserializer": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", diff --git a/projects/trading-platform/apps/frontend/package.json b/projects/trading-platform/apps/frontend/package.json index 10379a3..f17b037 100644 --- a/projects/trading-platform/apps/frontend/package.json +++ b/projects/trading-platform/apps/frontend/package.json @@ -42,7 +42,7 @@ "@typescript-eslint/eslint-plugin": "^6.14.0", "@typescript-eslint/parser": "^6.14.0", "@vitejs/plugin-react": "^4.2.1", - "@vitest/ui": "^1.1.0", + "@vitest/ui": "^3.0.0", "autoprefixer": "^10.4.16", "eslint": "^8.55.0", "eslint-plugin-react": "^7.33.2", @@ -52,7 +52,7 @@ "prettier": "^3.1.1", "tailwindcss": "^3.4.0", "typescript": "^5.3.3", - "vite": "^5.0.10", - "vitest": "^1.1.0" + "vite": "^6.2.0", + "vitest": "^3.0.0" } }