diff --git a/apps/connection-manager/src/application.ts b/apps/connection-manager/src/application.ts index 575ee560eaa36da9d160ea0c6223546714e8131f..4faf826b7d000af01757bd7f0905aa827ec2b888 100644 --- a/apps/connection-manager/src/application.ts +++ b/apps/connection-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 { InvitationsModule } from './invitations/invitations.module.js'; { 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/connection-manager/src/config/http.config.ts b/apps/connection-manager/src/config/http.config.ts index 906f6c8d0652bdc74d737b6adef02b4d8f333c1b..fc63fd9ddbe4bfb6b1d8225d636d3dee1f284502 100644 --- a/apps/connection-manager/src/config/http.config.ts +++ b/apps/connection-manager/src/config/http.config.ts @@ -1,6 +1,6 @@ import { registerAs } from '@nestjs/config'; export const httpConfig = registerAs('http', () => ({ - host: process.env.HTTP_HOST, - port: Number(process.env.HTTP_PORT), + host: process.env.HOST || '0.0.0.0', + port: Number(process.env.PORT) || 3000, })); diff --git a/apps/connection-manager/src/config/nats.config.ts b/apps/connection-manager/src/config/nats.config.ts index 023e92372adf6be27904aeccd041d125fbb804b9..194053c2e2e44070e34b8547b4a15819d02d9b75 100644 --- a/apps/connection-manager/src/config/nats.config.ts +++ b/apps/connection-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/connection-manager/src/config/ssi.config.ts b/apps/connection-manager/src/config/ssi.config.ts index 1779919f156e28d94440919221b2c95acda26a10..408bf279a73c30ed0ff8a277630ea4f7b8882eb8 100644 --- a/apps/connection-manager/src/config/ssi.config.ts +++ b/apps/connection-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/connection-manager/src/config/validation.ts b/apps/connection-manager/src/config/validation.ts index a7fe2f83c768b702b76f629b790507af6344ff7c..8431e101ec082c9bdc9b183e2f6d39aaef38ffaa 100644 --- a/apps/connection-manager/src/config/validation.ts +++ b/apps/connection-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/connection-manager/src/main.ts b/apps/connection-manager/src/main.ts index 0490cd5aea0c873d02557512dec0a7022426aa87..24529e4abd0e91dc32fac0f80836a4d3d98834a9 100644 --- a/apps/connection-manager/src/main.ts +++ b/apps/connection-manager/src/main.ts @@ -1,5 +1,6 @@ /* c8 ignore start */ -import type { MicroserviceOptions } from '@nestjs/microservices'; +import type { ConfigType } from '@nestjs/config'; +import type { MicroserviceOptions, NatsOptions } from '@nestjs/microservices'; import { VersioningType } from '@nestjs/common'; import { ConfigService } from '@nestjs/config'; @@ -8,17 +9,29 @@ 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(); -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'],