From 7c847ceea8147f88629d3b71873f1ac5d62d1af0 Mon Sep 17 00:00:00 2001 From: bill bittner Date: Wed, 6 Jun 2018 08:30:30 -0700 Subject: [PATCH] added module aliasing --- index.js | 130 +++++++++++++++------------- package-lock.json | 5 ++ package.json | 1 + server/utils/createModuleAliases.js | 11 +++ 4 files changed, 85 insertions(+), 62 deletions(-) create mode 100644 server/utils/createModuleAliases.js diff --git a/index.js b/index.js index 5c903af4..63a1d2b4 100644 --- a/index.js +++ b/index.js @@ -8,80 +8,86 @@ const cookieSession = require('cookie-session'); const http = require('http'); const logger = require('winston'); const Path = require('path'); +const moduleAlias = require('module-alias'); // load local modules const requestLogger = require('./server/middleware/requestLogger.js'); -const siteConfig = require('@config/siteConfig'); -const PORT = siteConfig.details.port; const createDatabaseIfNotExists = require('./server/models/utils/createDatabaseIfNotExists.js'); const { getWalletBalance } = require('./server/lbrynet'); const db = require('./server/models'); - -// configure logging const configureLogging = require('./server/utils/configureLogging.js'); -configureLogging(); - -// configure slack logging const configureSlack = require('./server/utils/configureSlack.js'); -configureSlack(); +const speechPassport = require('./server/speechPassport'); +const createModuleAliases = require('./utils/createModuleAliases.js'); -/* create app */ -const app = express(); +// set up aliasing +const customAliases = createModuleAliases(); +logger.debug('custom aliases', customAliases); +moduleAlias.addAliases(customAliases); -// trust the proxy to get ip address for us -app.enable('trust proxy'); - -// set HTTP headers to protect against well-known web vulnerabilties -app.use(helmet()); - -// 'express.static' to serve static files from public directory -const publicPath = Path.resolve(process.cwd(), 'public'); -app.use(express.static(publicPath)); -logger.info(`serving static files from default static path at ${publicPath}.`); - -// 'body parser' for parsing application/json -app.use(bodyParser.json()); - -// 'body parser' for parsing application/x-www-form-urlencoded -app.use(bodyParser.urlencoded({ extended: true })); - -// add custom middleware (note: build out to accept dynamically use what is in server/middleware/ -app.use(requestLogger); - -// configure passport -const speechPassport = require('./server/speechPassport/index'); - -// initialize passport -const sessionKey = siteConfig.auth.sessionKey; -app.use(cookieSession({ - name : 'session', - keys : [sessionKey], -})); -app.use(speechPassport.initialize()); -app.use(speechPassport.session()); - -// configure handlebars & register it with express app -const hbs = expressHandlebars.create({ - defaultLayout: 'embed', - handlebars : Handlebars, -}); -app.engine('handlebars', hbs.engine); -app.set('view engine', 'handlebars'); - -// set the routes on the app -require('./server/routes/auth/index')(app); -require('./server/routes/api/index')(app); -require('./server/routes/pages/index')(app); -require('./server/routes/assets/index')(app); -require('./server/routes/fallback/index')(app); - -/* create server */ -const server = http.Server(app); - -/* start the server */ +// load aliased modules +const siteConfig = require('@config/siteConfig'); +const PORT = siteConfig.details.port; const startServer = () => { - return createDatabaseIfNotExists() + // configure logging + configureLogging(); + + // configure slack logging + configureSlack(); + + /* create app */ + const app = express(); + + // trust the proxy to get ip address for us + app.enable('trust proxy'); + + // set HTTP headers to protect against well-known web vulnerabilties + app.use(helmet()); + + // 'express.static' to serve static files from public directory + const publicPath = Path.resolve(process.cwd(), 'public'); + app.use(express.static(publicPath)); + logger.info(`serving static files from default static path at ${publicPath}.`); + + // 'body parser' for parsing application/json + app.use(bodyParser.json()); + + // 'body parser' for parsing application/x-www-form-urlencoded + app.use(bodyParser.urlencoded({ extended: true })); + + // add custom middleware (note: build out to accept dynamically use what is in server/middleware/ + app.use(requestLogger); + + // initialize passport + const sessionKey = siteConfig.auth.sessionKey; + app.use(cookieSession({ + name : 'session', + keys : [sessionKey], + })); + app.use(speechPassport.initialize()); + app.use(speechPassport.session()); + + // configure handlebars & register it with express app + const hbs = expressHandlebars.create({ + defaultLayout: 'embed', + handlebars : Handlebars, + }); + app.engine('handlebars', hbs.engine); + app.set('view engine', 'handlebars'); + + // set the routes on the app + require('./server/routes/auth')(app); + require('./server/routes/api')(app); + require('./server/routes/pages')(app); + require('./server/routes/assets')(app); + require('./server/routes/fallback')(app); + + /* create server */ + const server = http.Server(app); + + /* start the server */ + createDatabaseIfNotExists() .then(() => { return getWalletBalance(); }) diff --git a/package-lock.json b/package-lock.json index 11a4515a..2e9a4fd1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5291,6 +5291,11 @@ } } }, + "module-alias": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/module-alias/-/module-alias-2.0.6.tgz", + "integrity": "sha1-q7LPoHAU9QNRStUGHG8D15tZGIk=" + }, "moment": { "version": "2.22.1", "resolved": "http://registry.npmjs.org/moment/-/moment-2.22.1.tgz", diff --git a/package.json b/package.json index 386622ae..065928fb 100644 --- a/package.json +++ b/package.json @@ -38,6 +38,7 @@ "express": "^4.15.2", "express-handlebars": "^3.0.0", "helmet": "^3.8.1", + "module-alias": "^2.0.6", "mysql2": "^1.3.5", "passport": "^0.4.0", "passport-local": "^1.0.0", diff --git a/server/utils/createModuleAliases.js b/server/utils/createModuleAliases.js new file mode 100644 index 00000000..4420a6a7 --- /dev/null +++ b/server/utils/createModuleAliases.js @@ -0,0 +1,11 @@ +const { resolve } = require('path'); +const WWW_SPEECH_ROOT = resolve(process.cwd()); + +module.exports = () => { + let moduleAliases = {}; + // default aliases + moduleAliases['@config'] = resolve(WWW_SPEECH_ROOT, 'config'); + moduleAliases['@public'] = resolve(WWW_SPEECH_ROOT, 'public'); + // return finished aliases + return moduleAliases; +};