UNPKG

@tasolutions/express-core

Version:
104 lines (100 loc) 4.48 kB
require('dotenv').config(); const _ = require('lodash'); const path = require('path'); const externalConfigPath = path.resolve(process.cwd(), 'config'); const externalConfig = {}; try { Object.assign(externalConfig, require(externalConfigPath)); } catch (error) { console.warn('Cannot load external config, using default values:', error.message); } const defaultConfig = { applicationName: process.env.APPLICATION_NAME || '[APPLICATION NAME] SERVICE', appName: process.env.APP_NAME || false, env: process.env.ENV || 'dev', routeInfo: { name: process.env.ROUTE_INFO_NAME || '9s-express-core', baseUrl: process.env.ROUTE_INFO_BASE_URL || 'http://localhost:3000', }, apiGWInfo: { prefix: process.env.API_GATEWAY_INFO_PREFIX || '/api/v1/services/9s-express-core', url: process.env.API_GATEWAY_INFO_URL || 'https://uat.apis.portal.nails.9solutions.vn/api/v1/services/9s-express-core', }, database: { mongo: { url: process.env.DATABASE_MONGO_URL || 'mongodb://localhost:27017/express-core' }, }, port: process.env.PORT || 9999, jwtInfo: { JwtIssuerOptions: { Issuer: process.env.JWT_ISSUER || "NiceSolutions", Audience: process.env.JWT_AUDIENCE || "https://9solutions.vn", ShortExpireMinutes: 120, LongExpireMinutes: 1440, ShortRefreshExpireMinutes: 240, LongRefreshExpireMinutes: 2000 }, jwtSecret: process.env.JWT_SECRET || 'JWT_SECRET', }, authInfo: { enableRole: process.env.AUTH_INFO_ENABLE_ROLE || false, enableMerchant: process.env.AUTH_INFO_ENABLE_MERCHANT || false }, uploadInfo: { type: process.env.UPLOAD_INFO_TYPE || 'LOCAL', // Enum: LOCAL, S3 }, clientInfo: { userService: { enable: process.env.CLIENT_INFO_USER_SERVICE_ENABLE || 'false', endpoint: process.env.CLIENT_INFO_USER_SERVICE_ENDPOINT || 'http://localhost:3030/v1', }, configService: { enable: process.env.CLIENT_INFO_CONFIG_SERVICE_ENABLE || 'false', endpoint: process.env.CLIENT_INFO_CONFIG_SERVICE_ENDPOINT || 'http://localhost:3030/v1', } }, exportEndpoint: process.env.EXPORT_ENDPOINT || 'http://localhost:3000', sendGrid: { apiKey: process.env.SENDGRID_API_KEY || 'SENDGRID_API_KEY', to: process.env.SENDGRID_EMAIL_TO || 'SENDGRID_EMAIL_TO', from: process.env.SENDGRID_EMAIL_FROM || 'noreply@gmail.com', templateId: process.env.SENDGRID_TEMPLATE_CLIENT_ID || 'SENDGRID_TEMPLATE_CLIENT_ID', templateLandingPageId: process.env.SENDGRID_TEMPLATE_LANDING_PAGE_CLIENT_ID || 'SENDGRID_TEMPLATE_LANDING_PAGE_CLIENT_ID' }, modelPrefix: process.env.MODEL_PREFIX || '', awsInfo: { region: process.env.AWS_INFO_REGION || 'AWS_INFO_REGION', accessKeyId: process.env.AWS_INFO_ACCESS_KEY_ID || 'AWS_INFO_ACCESS_KEY_ID', secretAccessKey: process.env.AWS_INFO_SECRET_ACCESS_KEY || 'AWS_INFO_SECRET_ACCESS_KEY', s3Info: { bucket: process.env.AWS_INFO_S3_INFO_BUCKET || 'AWS_INFO_S3_INFO_BUCKET' } }, basicAuthInfo: { username: process.env.BASIC_AUTH_INFO_USERNAME || 'BASIC_AUTH_INFO_USERNAME', password: process.env.BASIC_AUTH_INFO_PASSWORD || 'BASIC_AUTH_INFO_PASSWORD' }, loggerInfo: { nodeEndpoint: process.env.LOGGER_INFO_NODE_ENDPOINT || 'LOGGER_INFO_NODE_ENDPOINT', auth_username: process.env.LOGGER_INFO_AUTH_USERNAME || 'LOGGER_INFO_AUTH_USERNAME', auth_password: process.env.LOGGER_INFO_AUTH_PASSWORD || 'LOGGER_INFO_AUTH_PASSWORD', index: process.env.LOGGER_INFO_INDEX || 'LOGGER_INFO_INDEX', enable: process.env.LOGGER_INFO_ENABLE || 'false', mongodbUrl: process.env.LOGGER_MONGODB_URL || 'false' }, redisInfo: { enable: process.env.REDIS_ENABLE || 'false', host: process.env.REDIS_HOST || 'localhost', port: process.env.REDIS_PORT || 6379, pass: process.env.REDIS_PASS || '', db: process.env.REDIS_DB || 0, }, discordInfo: { enable: process.env.DISCORD_ENABLE || 'false', bot_token: process.env.DISCORD_BOT_TOKEN || 'DISCORD_BOT_TOKEN', channel_id: process.env.DISCORD_CHANNEL_ID || 'DISCORD_CHANNEL_ID', } }; const config = _.merge({}, defaultConfig, externalConfig); module.exports = config;