UNPKG

weaver-frontend-cli

Version:

🕷️ Weaver CLI - Generador completo de arquitectura Clean Architecture para entidades CRUD y flujos de negocio desde OpenAPI/Swagger

298 lines (232 loc) 11.4 kB
# 🕷️ Weaver CLI **Teje la estructura perfecta de tu código frontend** Un generador de código CLI inteligente que lee especificaciones OpenAPI/Swagger y genera automáticamente toda la estructura de entidades siguiendo principios de Clean Architecture. ## 🚀 Instalación ```bash npm install -g weaver-frontend-cli ``` ## 🎯 Uso Una vez instalado globalmente, ejecuta el comando en tu proyecto: ```bash weaver ``` ### 🔑 Autenticación Weaver CLI requiere autenticación para su uso. Al ejecutar por primera vez, se te pedirá una clave de acceso. La sesión será válida por 30 días. ### 🧪 Modo de Prueba Local Para probar la generación sin afectar tu proyecto principal: ```bash weaver --local ``` ### 📊 Comandos Adicionales ```bash # Ver información de sesión weaver --session-info # Cerrar sesión weaver --logout ``` ## ✨ Características ### 🌐 Integración con OpenAPI/Swagger - Lee automáticamente especificaciones OpenAPI 3.x - Extrae entidades y sus propiedades - Detecta tipos de datos y validaciones - Sugiere nombres de API automáticamente ### 🏗️ Generación Inteligente - **43+ archivos por entidad** siguiendo Clean Architecture - **Validación previa** del proyecto y entidades existentes - **Soporte para múltiples APIs** (platform, payment, etc.) - **Nomenclatura consistente** (camelCase para DTOs, snake_case para Entities) ### 🛡️ Validaciones y Seguridad - ✅ Verificación de estructura del proyecto - ✅ Detección de entidades existentes - ✅ Confirmación antes de sobrescribir - ✅ Autenticación con clave de acceso ### 🎯 Estructura Generada (Patrón Clean Architecture) Para una entidad llamada `User` en API `platform`, se generan estos archivos: ``` bus/ ├── domain/ │ ├── models/apis/platform/entities/user/ │ │ ├── i-user-dto.ts # DTO principal │ │ ├── i-user-save-dto.ts # DTO para crear │ │ ├── i-user-read-dto.ts # DTO para leer (solo ID) │ │ ├── i-user-update-dto.ts # DTO para actualizar │ │ ├── i-user-delete-dto.ts # DTO para eliminar (solo ID) │ │ └── index.ts # Exportaciones │ └── services/ │ ├── repositories/apis/platform/entities/ │ │ └── i-user-repository.ts # Interface abstracta del repositorio │ └── use_cases/apis/platform/entities/user/ │ ├── user-save-use-case.ts # Use case para crear │ ├── user-read-use-case.ts # Use case para leer │ ├── user-update-use-case.ts # Use case para actualizar │ ├── user-delete-use-case.ts # Use case para eliminar │ └── user-list-use-case.ts # Use case para listar ├── infrastructure/ │ ├── entities/apis/platform/entities/user/ │ │ ├── i-user-entity.ts # Entity principal (snake_case) │ │ ├── i-user-save-entity.ts # Entity para crear │ │ ├── i-user-read-entity.ts # Entity para leer │ │ ├── i-user-update-entity.ts # Entity para actualizar │ │ ├── i-user-delete-entity.ts # Entity para eliminar │ │ └── index.ts # Exportaciones │ ├── mappers/apis/platform/entities/user/ │ │ ├── user-entity-mapper.ts # Mapper principal (Entity ↔ DTO) │ │ ├── user-save-mapper.ts # Mapper para operación save │ │ ├── user-read-mapper.ts # Mapper para operación read │ │ ├── user-update-mapper.ts # Mapper para operación update │ │ └── user-delete-mapper.ts # Mapper para operación delete │ └── repositories/apis/platform/repositories/entities/user/ │ └── user-repository.ts # Implementación del repositorio ├── facade/apis/platform/entities/ │ └── user-facade.ts # Facade con patrón singleton └── injection/ ├── domain/services/use_cases/apis/platform/injection/entities/ │ └── injection-platform-entities-user-use-case.ts # Inyección use cases ├── infrastructure/mappers/apis/platform/injection/entities/ │ └── injection-platform-entities-user-mapper.ts # Inyección mappers └── facade/apis/platform/injection/entities/ └── injection-platform-entities-facade.ts # Inyección facades (auto-actualizado) ``` ## 🛠️ Características Técnicas -**TypeScript** - Tipado fuerte y moderno -**Clean Architecture** - Separación clara de responsabilidades -**SOLID Principles** - Código mantenible y escalable -**Dependency Injection** - Acoplamiento débil entre componentes -**OpenAPI Integration** - Lectura automática de especificaciones -**Multi-API Support** - Soporte para múltiples APIs backend -**Authentication System** - Acceso controlado con clave -**Smart Imports** - Importaciones inteligentes según contexto -**Auto ID Field** - Campo `id` automático en DTOs y Entities principales -**Smart Cleanup** - Sistema de limpieza inteligente para eliminar código generado ### 📦 Sistema de Importaciones Weaver CLI genera importaciones inteligentes: ```typescript // ✅ Archivos generados - Usa @{api-name} import { IUserDTO } from "@platform/domain/models/apis/platform/entities/user"; import { UserRepository } from "@platform/infrastructure/repositories/apis/platform/repositories/entities/user"; // ✅ Dependencias core - Mantiene @bus import { IConfigDTO } from "@bus/core/interfaces"; import { UseCase } from "@bus/core/interfaces/use-case"; import { Mapper } from "@bus/core/classes"; ``` **Beneficios:** - 🎯 **Consistencia**: Importaciones coherentes en todo el proyecto - 🔧 **Flexibilidad**: Soporte para múltiples APIs sin conflictos - 🛡️ **Separación**: Distingue claramente entre código generado y dependencias ## 🧩 Flujo de Trabajo 1. **Ejecutar** `weaver` en tu proyecto 2. **Autenticarse** con la clave de acceso 3. **Ingresar URL** de OpenAPI/Swagger 4. **Seleccionar entidad** de la lista disponible 5. **Configurar API name** (autodetectado o manual) 6. **Validar** estructura del proyecto 7. **Confirmar** generación 8. **¡Listo!** 43+ archivos generados automáticamente ## 🧪 Desarrollo ```bash # Clonar el repositorio git clone <tu-repo> cd weaver-cli # Instalar dependencias npm install # Compilar npm run build # Desarrollo con watch npm run dev # Ejecutar localmente npm start # Modo prueba local npm run test:local ``` ## 📝 Scripts Disponibles ```bash npm run build # Compilar TypeScript npm run dev # Desarrollo con watch npm start # Ejecutar CLI npm run test:local # Prueba en modo local npm run logout # Cerrar sesión npm run session-info # Ver info de sesión ``` ## 🤝 Contribuir 1. Fork el proyecto 2. Crea una rama para tu feature (`git checkout -b feature/AmazingFeature`) 3. Commit tus cambios (`git commit -m 'Add some AmazingFeature'`) 4. Push a la rama (`git push origin feature/AmazingFeature`) 5. Abre un Pull Request ## 🆔 Campo ID Automático Todas las entidades generadas incluyen automáticamente el campo `id`: ```typescript // DTO Principal export interface IUserDTO { id?: string; // ← Agregado automáticamente name: string; email: string; } // Entity Principal export interface IUserEntity { id?: string; // ← Agregado automáticamente name: string; email: string; } // Mapper Principal - Mapeo automático public mapFrom(param: IUserEntity): IUserDTO { return { id: param.id, // ← Mapeado automáticamente name: param.name, email: param.email }; } ``` ## 🧹 Sistema de Limpieza de Entidades Weaver CLI incluye un sistema de limpieza para eliminar entidades generadas: ### 🗑️ **Eliminar Entidades** ```bash # Ejecutar desde la carpeta que contiene las entidades cd /ruta/a/tu/proyecto/bus # Ejemplo: carpeta 'bus' weaver # Seleccionar: 🧹 Limpiar/Eliminar código generado # Seleccionar la entidad a eliminar de la lista ``` ### ✨ **Características** - **Detección automática**: Identifica entidades generadas en la carpeta actual - **Vista previa**: Muestra archivos que se eliminarán antes de proceder - **Eliminación completa**: Remueve DTOs, Entities, Use Cases, Mappers, Repositories, Facades - **Limpieza de referencias**: Elimina automáticamente imports y métodos en archivos injection - **Confirmación segura**: Requiere confirmación explícita antes de eliminar ## 📋 Historial de Versiones ### v1.1.0 - Simplified Cleanup 🎯 - **🎯 Limpieza Simplificada**: Sistema directo enfocado en eliminar entidades - **📍 Ejecución Contextual**: Funciona desde la carpeta donde se ejecuta - **🚀 Flujo Directo**: Sin menús innecesarios, directo a seleccionar entidad - **✨ Experiencia Mejorada**: Flujo más rápido y claro para eliminar entidades ### v1.0.9 - Smart Cleanup System 🧹 - **🧹 Sistema de Limpieza Completo**: Gestión completa del código generado - **🗑️ Limpieza por Entidad**: Eliminación inteligente de entidades individuales - **🗂️ Limpieza por API**: Eliminación completa de APIs con todos sus archivos - **🧨 Limpieza Total**: Eliminación de todo el contenido con doble confirmación - **🛡️ Operaciones Seguras**: Múltiples confirmaciones y vista previa ### v1.0.8 - Auto ID Field ✨ - **🆔 Campo ID Automático**: Agregado automáticamente `id?: string;` en DTOs y Entities principales - **🔧 Mappers Inteligentes**: Mapeo automático del campo `id` en todos los mappers principales - **✅ Consistencia ID**: Manejo uniforme del identificador único en toda la arquitectura ### v1.0.7 - Repository Import Fix 🔧 - **🐛 Repository Imports**: Corregidas las importaciones en injection-platform-entities-repository.ts - **📁 Path específico**: Los repositories usan el path completo al archivo - **✅ Consistencia**: Alineado con el patrón del proyecto goluti-frontend ### v1.0.6 - Importaciones Inteligentes ✨ - **🔧 Importaciones corregidas**: Los archivos generados usan `@{api-name}`, los core mantienen `@bus` - **📦 33+ importaciones**: Sistemáticamente corregidas en todos los templates - **🎯 Separación clara**: Distingue entre código generado y dependencias externas ### v1.0.5 - Repository Injection Completo 🔧 - **📁 Archivo faltante**: Genera `injection-platform-entities-repository.ts` - **🔄 Actualización automática**: Agrega nuevas entidades al archivo existente - **🛡️ Evita duplicados**: Verificación inteligente de entidades existentes ### v1.0.4 - Clean Architecture Base 🏗️ - **43+ archivos**: Estructura completa por entidad - **🔐 Autenticación**: Sistema con clave de acceso - **🌐 OpenAPI**: Integración completa con Swagger - **🧪 Modo local**: Pruebas con `--local` ## 📄 Licencia MIT © Andrés León --- **🕷️ Weaver CLI** - *Tejiendo el futuro del desarrollo frontend*