initial commit

This commit is contained in:
Wyatt Johnson
2018-06-16 17:20:51 -06:00
commit 02e1236792
39 changed files with 5258 additions and 0 deletions
+75
View File
@@ -0,0 +1,75 @@
import Joi from 'joi';
import convict from 'convict';
import dotenv from 'dotenv';
// Apply all the configuration provided in the .env file if it isn't already in
// the environment.
dotenv.config();
// Add custom format for the mongo uri scheme.
convict.addFormat({
name: 'mongo-uri',
validate: (url: string) => {
Joi.assert(
url,
Joi.string().uri({
scheme: ['mongodb'],
})
);
},
});
// Add custom format for the redis uri scheme.
convict.addFormat({
name: 'redis-uri',
validate: (url: string) => {
Joi.assert(
url,
Joi.string().uri({
scheme: ['redis'],
})
);
},
});
export const config = convict({
env: {
doc: 'The application environment.',
format: ['production', 'development', 'test'],
default: 'development',
env: 'NODE_ENV',
},
port: {
doc: 'The port to bind.',
format: 'port',
default: 3000,
env: 'PORT',
arg: 'port',
},
mongodb: {
doc: 'The MongoDB database to connect to.',
format: 'mongo-uri',
default: 'mongodb://localhost/talk',
env: 'MONGODB',
arg: 'mongodb',
},
redis: {
doc: 'The Redis database to connect to.',
format: 'redis-uri',
default: 'redis://localhost:6379',
env: 'REDIS',
arg: 'redis',
},
secret: {
doc: 'The secret used to sign and verify JWTs',
format: '*',
default: null,
env: 'SECRET',
arg: 'secret',
},
});
export type Config = typeof config;
// Setup the base configuration.
export default config;