The ValidationPipe import was commented out and not being used in the code. This commit removes the unused import to clean up the code and avoid potential confusion. The Logger import remains active and is still in use.
79 lines
2.4 KiB
TypeScript
79 lines
2.4 KiB
TypeScript
import { webcrypto } from 'crypto';
|
|
import { NestFactory } from '@nestjs/core';
|
|
|
|
// Polyfill crypto for @nestjs/typeorm
|
|
if (!global.crypto) {
|
|
global.crypto = webcrypto as any;
|
|
}
|
|
import { Logger } from '@nestjs/common';
|
|
//import { Logger, ValidationPipe } from '@nestjs/common';
|
|
import { NestExpressApplication } from '@nestjs/platform-express';
|
|
import { utilities, WinstonModule } from 'nest-winston';
|
|
import winston from 'winston';
|
|
import cookieParser from 'cookie-parser';
|
|
|
|
import { AppModule } from './app.module';
|
|
import { ApiDocumentation } from './documentation';
|
|
import { extractSubdomain, LoggingInterceptor } from './common';
|
|
|
|
function getLogger() {
|
|
return process.env.WINSTON_ENABLED === 'true'
|
|
? WinstonModule.createLogger({
|
|
level: 'debug',
|
|
transports: [
|
|
new winston.transports.Console({
|
|
format: winston.format.combine(
|
|
winston.format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss.SSS' }),
|
|
utilities.format.nestLike(process.env.APPLICATION_NAME, { colors: true, prettyPrint: true }),
|
|
),
|
|
}),
|
|
],
|
|
})
|
|
: undefined;
|
|
}
|
|
|
|
async function bootstrap() {
|
|
if (process.env.NEW_RELIC_ENABLED === 'true') {
|
|
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
require('newrelic');
|
|
}
|
|
|
|
const app = await NestFactory.create<NestExpressApplication>(AppModule, { rawBody: true, logger: getLogger() });
|
|
app.enableCors({
|
|
origin: process.env['FRONTEND_URL'] || 'http://localhost:3000',
|
|
methods: 'GET,HEAD,PUT,PATCH,POST,DELETE,OPTIONS',
|
|
credentials: true,
|
|
allowedHeaders: ['Content-Type', 'Authorization', 'X-CSRF-Token']
|
|
});
|
|
|
|
app.set('trust proxy', true);
|
|
app.use(cookieParser());
|
|
app.use(extractSubdomain);
|
|
app.setGlobalPrefix('api');
|
|
|
|
//Global validation
|
|
// app.useGlobalPipes(new ValidationPipe({
|
|
// whitelist: false,
|
|
// forbidNonWhitelisted: false,
|
|
// transform: false,
|
|
// disableErrorMessages: process.env['NODE_ENV'] === 'production'
|
|
// }));
|
|
|
|
app.useGlobalInterceptors(new LoggingInterceptor());
|
|
|
|
ApiDocumentation.configure(app);
|
|
|
|
const logger = new Logger('main');
|
|
|
|
process.on('uncaughtException', (error) => {
|
|
logger.error(`Uncaught Exception`, error.stack);
|
|
});
|
|
|
|
await app.listen(process.env.APPLICATION_PORT, '127.0.0.1');
|
|
|
|
logger.log(`Application is running on: ${await app.getUrl()}`);
|
|
logger.log(`Application version is: ${process.env.npm_package_version}`);
|
|
}
|
|
|
|
bootstrap();
|