@tasolutions/express-core
Version:
All libs for express
104 lines (100 loc) • 4.48 kB
JavaScript
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;