41 lines
941 B
JavaScript
41 lines
941 B
JavaScript
const joi = require('joi')
|
|
|
|
const envVarsSchema = joi.object({
|
|
NODE_ENV: joi.string()
|
|
.valid(['development', 'production', 'test', 'provision'])
|
|
.required(),
|
|
PORT: joi.number()
|
|
.required(),
|
|
LOGGER_LEVEL: joi.string()
|
|
.valid(['error', 'warn', 'info', 'verbose', 'debug', 'silly'])
|
|
.default('info'),
|
|
LOGGER_ENABLED: joi.boolean()
|
|
.truthy('TRUE')
|
|
.truthy('true')
|
|
.falsy('FALSE')
|
|
.falsy('false')
|
|
.default(true)
|
|
}).unknown()
|
|
.required()
|
|
|
|
const { error, value: envVars } = joi.validate(process.env, envVarsSchema)
|
|
if (error) {
|
|
throw new Error(`Config validation error: ${error.message}`)
|
|
}
|
|
|
|
const config = {
|
|
env: envVars.NODE_ENV,
|
|
isTest: envVars.NODE_ENV === 'test',
|
|
isDevelopment: envVars.NODE_ENV === 'development',
|
|
logger: {
|
|
level: envVars.LOGGER_LEVEL,
|
|
enabled: envVars.LOGGER_ENABLED
|
|
},
|
|
server: {
|
|
port: envVars.PORT
|
|
}
|
|
// ...
|
|
}
|
|
|
|
module.exports = config;
|