UNPKG

@watco/config-lib

Version:

Shared multi-environment configuration helpers for SDC NestJS services

124 lines (123 loc) 6.59 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AbstractConfigService = void 0; const env_utils_1 = require("./env-utils"); class AbstractConfigService { constructor() { this.env = (0, env_utils_1.loadEnv)(); } getDatabaseConfig() { const sslEnabled = (0, env_utils_1.getEnvValue)(this.env, 'POSTGRES_SSL_ENABLED', false) === 'true'; return { type: 'postgres', host: (0, env_utils_1.getEnvValue)(this.env, 'POSTGRES_HOST'), port: parseInt((0, env_utils_1.getEnvValue)(this.env, 'POSTGRES_PORT', false) || '5432', 10), username: (0, env_utils_1.getEnvValue)(this.env, 'POSTGRES_USER'), password: (0, env_utils_1.getEnvValue)(this.env, 'POSTGRES_PASSWORD'), database: (0, env_utils_1.getEnvValue)(this.env, 'POSTGRES_DATABASE'), entities: this.getDatabaseEntities(), migrations: this.getDatabaseMigrations(), synchronize: this.getDatabaseSynchronize(), logging: this.getDatabaseLogging(), ssl: sslEnabled ? { rejectUnauthorized: false } : undefined, }; } getDatabaseMigrations() { return [__dirname + '/../migration/*{.ts,.js}']; } getDatabaseSynchronize() { return false; } getDatabaseLogging() { return true; } getConsulConfig() { return { host: (0, env_utils_1.getEnvValue)(this.env, 'CONSUL_HOST', false) || '127.0.0.1', port: parseInt((0, env_utils_1.getEnvValue)(this.env, 'CONSUL_PORT', false) || '8500', 10), secure: (0, env_utils_1.getEnvValue)(this.env, 'CONSUL_SECURE', false) === 'true', serviceName: (0, env_utils_1.getEnvValue)(this.env, 'SERVICE_NAME', false) || 'sdc-user-service', serviceHost: (0, env_utils_1.getEnvValue)(this.env, 'SERVICE_HOST', false) || '127.0.0.1', servicePort: parseInt((0, env_utils_1.getEnvValue)(this.env, 'SERVICE_PORT', false) || '3000', 10), }; } getRedisConfig() { return { host: (0, env_utils_1.getEnvValue)(this.env, 'REDIS_HOST', false) || 'localhost', port: parseInt((0, env_utils_1.getEnvValue)(this.env, 'REDIS_PORT') || '6379', 10), password: (0, env_utils_1.getEnvValue)(this.env, 'REDIS_PASSWORD', false) || undefined, username: (0, env_utils_1.getEnvValue)(this.env, 'REDIS_USERNAME', false) || undefined, db: parseInt((0, env_utils_1.getEnvValue)(this.env, 'REDIS_DB', false) || '0'), }; } getJWTConfig() { return { accessTokenSecret: (0, env_utils_1.getEnvValue)(this.env, 'JWT_ACCESS_TOKEN_SECRET', false) || '', accessTokenExpIn: parseInt((0, env_utils_1.getEnvValue)(this.env, 'JWT_ACCESS_TOKEN_EXP', false) || '3600', 10), refreshTokenSecret: (0, env_utils_1.getEnvValue)(this.env, 'JWT_REFRESH_TOKEN_SECRET', false) || '', refreshTokenExpIn: parseInt((0, env_utils_1.getEnvValue)(this.env, 'JWT_REFRESH_TOKEN_EXP', false) || '86400', 10), }; } getJUtilConfig() { return { accessLogMaxAgeDays: parseInt((0, env_utils_1.getEnvValue)(this.env, 'ACCESS_LOG_MAX_AGE_DAYS', false) || '7', 10), accessLogMaxSizeMb: parseInt((0, env_utils_1.getEnvValue)(this.env, 'ACCESS_LOG_MAX_SIZE_MB', false) || '10', 10), authServiceUrl: (0, env_utils_1.getEnvValue)(this.env, 'AUTH_SERVICE_URL', false) || 'http://localhost:3000', }; } getMailConfig() { return { mailPort: parseInt((0, env_utils_1.getEnvValue)(this.env, 'MAIL_PORT', false) || '0', 10), mailSecure: (0, env_utils_1.getEnvValue)(this.env, 'MAIL_SECURE', false) || '', mailHost: (0, env_utils_1.getEnvValue)(this.env, 'MAIL_HOST', false) || '', mailUser: (0, env_utils_1.getEnvValue)(this.env, 'MAIL_USER', false) || '', mailPass: (0, env_utils_1.getEnvValue)(this.env, 'MAIL_PASS', false) || '', mailFrom: (0, env_utils_1.getEnvValue)(this.env, 'MAIL_FROM', false) || '', mailDir: (0, env_utils_1.getEnvValue)(this.env, 'MAIL_DIR', false) || '', mailOrigin: (0, env_utils_1.getEnvValue)(this.env, 'MAIL_ORIGIN', false) || '', }; } getKAFKAConfig() { const config = { brokers: (0, env_utils_1.getEnvValue)(this.env, 'KAFKA_BROKERS', false) ? (0, env_utils_1.getEnvValue)(this.env, 'KAFKA_BROKERS', false) .split(',') .map((b) => b.trim()) : ['202.137.208.36:9095'], clientId: (0, env_utils_1.getEnvValue)(this.env, 'KAFKA_CLIENT_ID', false) || 'sdc-dev-client', groupId: (0, env_utils_1.getEnvValue)(this.env, 'KAFKA_GROUP_ID', false) || 'sdc-dev-group', topicName: (0, env_utils_1.getEnvValue)(this.env, 'KAFKA_TOPIC_NAME', false) || 'sdc-dev-topic', }; const sslEnabled = (0, env_utils_1.getEnvValue)(this.env, 'KAFKA_SSL_ENABLED', false) === 'true'; if (sslEnabled) { const fs = require('fs'); config.ssl = { rejectUnauthorized: (0, env_utils_1.getEnvValue)(this.env, 'KAFKA_SSL_REJECT_UNAUTHORIZED', false) !== 'false', }; const caPath = (0, env_utils_1.getEnvValue)(this.env, 'KAFKA_SSL_CA_PATH', false); if (caPath) { config.ssl.ca = fs.readFileSync(caPath, 'utf8'); } const certPath = (0, env_utils_1.getEnvValue)(this.env, 'KAFKA_SSL_CERT_PATH', false); if (certPath) { config.ssl.cert = fs.readFileSync(certPath, 'utf8'); } const keyPath = (0, env_utils_1.getEnvValue)(this.env, 'KAFKA_SSL_KEY_PATH', false); if (keyPath) { config.ssl.key = fs.readFileSync(keyPath, 'utf8'); } } const saslEnabled = (0, env_utils_1.getEnvValue)(this.env, 'KAFKA_SASL_ENABLED', false) === 'true'; if (saslEnabled) { config.sasl = { mechanism: (0, env_utils_1.getEnvValue)(this.env, 'KAFKA_SASL_MECHANISM', false) || 'plain', username: (0, env_utils_1.getEnvValue)(this.env, 'KAFKA_SASL_USERNAME', false) || '', password: (0, env_utils_1.getEnvValue)(this.env, 'KAFKA_SASL_PASSWORD', false) || '', }; } return config; } } exports.AbstractConfigService = AbstractConfigService;