//! Deps const express = require('express'); const helmet = require('helmet'); const compression = require('compression'); const cors = require('cors'); const morgan = require('morgan'); const chalk = require('chalk'); const hbs = require('express-handlebars'); const UA = require('ua-parser-js'); const con = require('./constants'); let { port, hostname } = { port: 3621 // hostname: 'localhost' }; const app = express(); app.set('view engine', 'hbs'); app.engine( 'hbs', hbs({ extname: 'hbs', defaultView: 'default' }) ); app.set('json spaces', 4); app.use('/assets', express.static('./assets')); app.set('view options', { layout: false }); app.use(express.json()); app.use( express.urlencoded({ extended: true }) ); app.use(helmet()); app.use(compression()); app.use(cors()); // Logging app.use( morgan((tokens, req, res) => { return [ chalk.hex('#34ace0').bold(tokens.method(req, res)), chalk.hex('#ffb142').bold(tokens.status(req, res)), chalk.hex('#ff5252').bold(req.hostname + tokens.url(req, res)), chalk.hex('#2ed573').bold(tokens['response-time'](req, res) + 'ms'), chalk.hex('#f78fb3').bold('@ ' + tokens.date(req, res)) ].join(' '); }) ); app.use('/portfolio', require('./routes/portfolio')); app.use('/lore', require('./routes/lore')); app.use('/art', require('./routes/art')); module.exports = (client) => { app.get('/', async (req, res) => { /* var ua = UA(req.headers['user-agent']); console.log(ua) */ res.render('index', { layout: 'main', name: con.name, host: req.hostname, item: { 0: { name: 'portfolio', source: '/portfolio' } } }); }); app.listen( port, /* hostname, */ () => { console.log(`Listening on ${port}`); } ); };