// registers aliases, DON'T REMOVE THIS LINE! import 'module-alias/register'; import { NestFactory } from '@nestjs/core'; import { ValidationPipe, ValidationError } from '@nestjs/common'; import { SwaggerModule, DocumentBuilder } from '@nestjs/swagger'; import { ConfigService } from '@nestjs/config'; import AppModule from './modules/app/app.module'; import ValidationExceptions from './exceptions/validation.exceptions'; import { BadRequestExceptionFilter, UnauthorizedExceptionFilter, ForbiddenExceptionFilter, ValidationExceptionsFilter, NotFoundExceptionFilter, AllExceptionsFilter, } from './filters'; async function bootstrap() { const app = await NestFactory.create(AppModule); app.useGlobalPipes(new ValidationPipe({ exceptionFactory: (errors: ValidationError[]) => new ValidationExceptions(errors), })); app.useGlobalFilters( new AllExceptionsFilter(), new UnauthorizedExceptionFilter(), new ForbiddenExceptionFilter(), new BadRequestExceptionFilter(), new NotFoundExceptionFilter(), new ValidationExceptionsFilter(), ); const configService = app.get(ConfigService); const port = configService.get('SERVER_POR') || 3000; const options = new DocumentBuilder() .setTitle('Api v1') .setDescription('The boilerplate API for nestjs devs') .setVersion('1.0') .addBearerAuth({ in: 'header', type: 'http' }) .build(); const document = SwaggerModule.createDocument(app, options); SwaggerModule.setup('api', app, document); await app.listen(port, async () => { console.log(`The server is running on ${port} port: http://localhost:${port}/api`); }); } bootstrap();