/* eslint-disable @typescript-eslint/no-unsafe-call */ /* eslint-disable @typescript-eslint/no-unsafe-assignment */ import { NestFactory } from '@nestjs/core'; import { AppModule } from './app.module'; import { ValidationPipe, Logger } from '@nestjs/common'; import helmet from 'helmet'; import { KeycloakExceptionFilter } from './filters/keycloak-exception.filter'; import { SwaggerModule, DocumentBuilder } from '@nestjs/swagger'; async function bootstrap() { const app = await NestFactory.create(AppModule); const logger = new Logger('dcb-user-service'); app.use(helmet()); app.enableCors(); app.useGlobalFilters(new KeycloakExceptionFilter()); app.useGlobalPipes(new ValidationPipe({ whitelist: true, transform: true })); app.setGlobalPrefix('api/v1'); // Swagger Configuration const config = new DocumentBuilder() .setTitle('DCB User Service API') .setDescription('API de gestion des utilisateurs pour le système DCB') .setVersion('1.0') .addTag('users', 'Gestion des utilisateurs') .addBearerAuth() //.addServer('http://localhost:3000', 'Développement local') // .addServer('https://api.example.com', 'Production') .build(); const document = SwaggerModule.createDocument(app, config); SwaggerModule.setup('api-docs', app, document); app.enableCors({ origin: '*' }); app.getHttpAdapter().get('/api/swagger-json', (req, res) => { res.json(document); }); const port = process.env.PORT || 3000; await app.listen(port); logger.log(`Application running on http://localhost:${port}`); logger.log( `Swagger documentation available at http://localhost:${port}/api-docs`, ); console.log(`Swagger docs: http://localhost:${port}/api/swagger-json`); } bootstrap();