feat: Implement Clean Architecture code generation with Mustache templates

- Added `clean-arch.generator.ts` for generating models, mappers, repositories, use cases, and providers based on OpenAPI specs.
- Introduced `dto.generator.ts` to invoke `openapi-generator-cli` for generating DTOs and organizing them.
- Created `report.generator.ts` to generate a JSON report of the generation process.
- Implemented `analyzer.ts` for parsing OpenAPI/Swagger files and extracting relevant data.
- Defined new types in `cli.types.ts`, `generation.types.ts`, `openapi.types.ts`, and `swagger.types.ts` for better type safety.
- Added utility functions in `filesystem.ts` for creating directory structures and cleaning up temporary files.
- Developed logging utilities in `logger.ts` for better console output.
- Included OpenAPI generator checks and installation in `openapi-generator.ts`.
- Added type mapping utility in `type-mapper.ts` for converting OpenAPI types to TypeScript types.
- Updated `package.json` scripts to lint all TypeScript files.
- Modified `tsconfig.json` to include all TypeScript files in the project.
This commit is contained in:
didavila
2026-03-24 11:16:45 +01:00
parent 8854bc5217
commit bd67e6c6d1
16 changed files with 684 additions and 651 deletions

43
src/utils/logger.ts Normal file
View File

@@ -0,0 +1,43 @@
const colors = {
reset: '\x1b[0m',
bright: '\x1b[1m',
green: '\x1b[32m',
blue: '\x1b[34m',
yellow: '\x1b[33m',
red: '\x1b[31m',
cyan: '\x1b[36m'
} as const;
type Color = keyof typeof colors;
/** Imprime un mensaje en consola con el color ANSI indicado. */
export function log(message: string, color: Color = 'reset'): void {
console.log(`${colors[color]}${message}${colors.reset}`);
}
/** Imprime un mensaje de éxito (verde). */
export function logSuccess(message: string): void {
log(`${message}`, 'green');
}
/** Imprime un mensaje informativo (azul). */
export function logInfo(message: string): void {
log(` ${message}`, 'blue');
}
/** Imprime un mensaje de advertencia (amarillo). */
export function logWarning(message: string): void {
log(`⚠️ ${message}`, 'yellow');
}
/** Imprime un mensaje de error (rojo). */
export function logError(message: string): void {
log(`${message}`, 'red');
}
/** Imprime un encabezado de paso/etapa (cian). */
export function logStep(message: string): void {
log(`\n🚀 ${message}`, 'cyan');
}
export { colors };