All files / src/server index.jsx

100% Statements 10/10
100% Branches 0/0
100% Functions 4/4
100% Lines 9/9
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51                  1x   1x   1x   1x             1x       1x   1x       5x                           3x        
import express from 'express';
import compression from 'compression';
import expressStaticGzip from 'express-static-gzip';
// not part of react-helmet
import helmet from 'helmet';
import gnuTP from 'gnu-terry-pratchett';
import nodeLogger from '../utilities/loggers/logger.node';
 
// require instead of import because the relative imports need to run first
const morgan = require('morgan');
 
const logger = nodeLogger(`spartacus:${__filename}`);
 
const publicDirectory = 'build/public';
 
logger.debug(
  `Application outputting logs to directory "${process.env.LOG_DIR}"`,
);
 
/* eslint class-methods-use-this: ["error", { "exceptMethods": ["write"] }] */
class LoggerStream {
  write(message) {
    logger.info(message.substring(0, message.lastIndexOf('\n')));
  }
}
 
const server = () => express();
 
const expressServer = server()
  .disable('x-powered-by')
  .use(
    morgan('tiny', {
      skip: (req, res) => res.statusCode === 200,
      stream: new LoggerStream(),
    }),
  )
  .use(compression())
  .use(helmet({ frameguard: { action: 'deny' } }))
  .use(
    expressStaticGzip(publicDirectory, {
      enableBrotli: true,
      orderPreference: ['br'],
    }),
  )
  .use(gnuTP())
  .get('/status', (req, res) => {
    res.sendStatus(200);
  });
 
export default expressServer;