@watco/config-lib
Version:
Shared multi-environment configuration helpers for SDC NestJS services
124 lines (123 loc) • 6.59 kB
JavaScript
"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;