diff --git a/apps/credential-manager/src/application.ts b/apps/credential-manager/src/application.ts index f60686bfdfb1359cffcd9c418d60ee6bd4459be6..982d2a6110cca75029a55c908a190e8e7f53fda4 100644 --- a/apps/credential-manager/src/application.ts +++ b/apps/credential-manager/src/application.ts @@ -1,4 +1,5 @@ import type { ConfigType } from '@nestjs/config'; +import type { ClientProvider } from '@nestjs/microservices'; import { Module } from '@nestjs/common'; import { ConfigModule } from '@nestjs/config'; @@ -34,12 +35,21 @@ import { CredentialRequestsModule } from './credential-requests/credential-reque { name: NATS_CLIENT, inject: [natsConfig.KEY], - useFactory: (config: ConfigType<typeof natsConfig>) => ({ - transport: Transport.NATS, - options: { - url: config.url as string, - }, - }), + useFactory: (config: ConfigType<typeof natsConfig>) => { + const provider: Required<ClientProvider> = { + transport: Transport.NATS, + options: { + servers: config.url as string, + }, + }; + + if ('user' in config && 'password' in config) { + provider.options.user = config.user as string; + provider.options.pass = config.password as string; + } + + return provider; + }, }, ], }), diff --git a/apps/credential-manager/src/config/http.config.ts b/apps/credential-manager/src/config/http.config.ts index 0bb4d4c2df3e791f741f3aac483b6fb3f39a5ba0..fc63fd9ddbe4bfb6b1d8225d636d3dee1f284502 100644 --- a/apps/credential-manager/src/config/http.config.ts +++ b/apps/credential-manager/src/config/http.config.ts @@ -1,6 +1,6 @@ import { registerAs } from '@nestjs/config'; export const httpConfig = registerAs('http', () => ({ - host: process.env.HOST, - port: Number(process.env.PORT), + host: process.env.HOST || '0.0.0.0', + port: Number(process.env.PORT) || 3000, })); diff --git a/apps/credential-manager/src/config/nats.config.ts b/apps/credential-manager/src/config/nats.config.ts index 023e92372adf6be27904aeccd041d125fbb804b9..194053c2e2e44070e34b8547b4a15819d02d9b75 100644 --- a/apps/credential-manager/src/config/nats.config.ts +++ b/apps/credential-manager/src/config/nats.config.ts @@ -1,6 +1,8 @@ import { registerAs } from '@nestjs/config'; export const natsConfig = registerAs('nats', () => ({ - url: process.env.NATS_URL, - monitoringUrl: process.env.NATS_MONITORING_URL, + url: process.env.NATS_URL || 'nats://localhost:4222', + user: process.env.NATS_USER, + password: process.env.NATS_PASSWORD, + monitoringUrl: process.env.NATS_MONITORING_URL || 'http://localhost:8222', })); diff --git a/apps/credential-manager/src/config/ssi.config.ts b/apps/credential-manager/src/config/ssi.config.ts index 1779919f156e28d94440919221b2c95acda26a10..408bf279a73c30ed0ff8a277630ea4f7b8882eb8 100644 --- a/apps/credential-manager/src/config/ssi.config.ts +++ b/apps/credential-manager/src/config/ssi.config.ts @@ -1,5 +1,5 @@ import { registerAs } from '@nestjs/config'; export const ssiConfig = registerAs('ssi', () => ({ - agentUrl: process.env.SSI_AGENT_URL, + agentUrl: process.env.SSI_AGENT_URL || 'http://localhost:3010', })); diff --git a/apps/credential-manager/src/config/validation.ts b/apps/credential-manager/src/config/validation.ts index a7fe2f83c768b702b76f629b790507af6344ff7c..8431e101ec082c9bdc9b183e2f6d39aaef38ffaa 100644 --- a/apps/credential-manager/src/config/validation.ts +++ b/apps/credential-manager/src/config/validation.ts @@ -1,11 +1,13 @@ import Joi from 'joi'; export const validationSchema = Joi.object({ - HTTP_HOST: Joi.string().default('0.0.0.0'), - HTTP_PORT: Joi.number().default(3000), + HTTP_HOST: Joi.string(), + HTTP_PORT: Joi.number(), - NATS_URL: Joi.string().uri().default('nats://localhost:4222'), - NATS_MONITORING_URL: Joi.string().uri().default('http://localhost:8222'), + NATS_URL: Joi.string().uri(), + NATS_USER: Joi.string().optional(), + NATS_PASSWORD: Joi.string().optional(), + NATS_MONITORING_URL: Joi.string().uri(), - SSI_AGENT_URL: Joi.string().default('http://localhost:3010'), + SSI_AGENT_URL: Joi.string(), }); diff --git a/apps/credential-manager/src/main.ts b/apps/credential-manager/src/main.ts index 2b5dccd2368d7a458d0d28c168eefc37962b66b2..f2780c9feed00fd4c0b976d5d7dcd21e5f3acbd4 100644 --- a/apps/credential-manager/src/main.ts +++ b/apps/credential-manager/src/main.ts @@ -1,23 +1,36 @@ -import type { MicroserviceOptions } from '@nestjs/microservices'; +/* c8 ignore start */ +import type { ConfigType } from '@nestjs/config'; +import type { MicroserviceOptions, NatsOptions } from '@nestjs/microservices'; -import { VersioningType } from '@nestjs/common'; -import { ConfigService } from '@nestjs/config'; +import { Logger, VersioningType } from '@nestjs/common'; import { NestFactory } from '@nestjs/core'; import { Transport } from '@nestjs/microservices'; import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger'; import { Application } from './application.js'; +import { httpConfig } from './config/http.config.js'; +import { natsConfig } from './config/nats.config.js'; const app = await NestFactory.create(Application); -const configService = app.get(ConfigService); app.enableCors(); -app.connectMicroservice<MicroserviceOptions>({ +const { url, user, password } = app.get(natsConfig.KEY) as ConfigType< + typeof natsConfig +>; + +const microserviceOptions: Required<NatsOptions> = { transport: Transport.NATS, options: { - servers: [configService.get('nats').url], + servers: [url], }, -}); +}; + +if (user && password) { + microserviceOptions.options.user = user; + microserviceOptions.options.pass = password; +} + +app.connectMicroservice<MicroserviceOptions>(microserviceOptions); app.enableVersioning({ defaultVersion: ['1'], @@ -35,4 +48,8 @@ const document = SwaggerModule.createDocument(app, swaggerConfig); SwaggerModule.setup('/swagger', app, document); await app.startAllMicroservices(); -await app.listen(configService.get('PORT') || 3000); +const { host, port } = app.get(httpConfig.KEY) as ConfigType<typeof httpConfig>; +await app.listen(port as number, host as string); + +Logger.log(`Application is running on: ${await app.getUrl()}`); +/* c8 ignore stop */