Newer
Older
import type { ConfigType } from '@nestjs/config';
import type { MicroserviceOptions, NatsOptions } from '@nestjs/microservices';
import { ConfigService } from '@nestjs/config';
import { NestFactory } from '@nestjs/core';
import { Transport } from '@nestjs/microservices';
import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger';
import { Application } from './application.js';
import { natsConfig } from './config/nats.config.js';
const app = await NestFactory.create(Application);
const configService = app.get(ConfigService);
app.enableCors();
const { url, user, password } = app.get(natsConfig.KEY) as ConfigType<
typeof natsConfig
>;
const microserviceOptions: Required<NatsOptions> = {
transport: Transport.NATS,
options: {
servers: [url],
};
if (user && password) {
microserviceOptions.options.user = user;
microserviceOptions.options.pass = password;
}
app.connectMicroservice<MicroserviceOptions>(microserviceOptions);
app.enableVersioning({
type: VersioningType.URI,
});
const swaggerConfig = new DocumentBuilder()
.setTitle('Gaia-X Connection Manager API')
.setDescription('API documentation for GAIA-X Connection Manager')
.setVersion('1.0')
.build();
const document = SwaggerModule.createDocument(app, swaggerConfig);
SwaggerModule.setup('/swagger', app, document);
await app.startAllMicroservices();
await app.listen(configService.get('http.port') as number);
/* c8 ignore stop */