UNPKG

@apolitical/server

Version:

Node.js module to encapsulate Apolitical's express server setup

47 lines (44 loc) 1.24 kB
'use strict'; module.exports = ({ bodyParser: { json, urlencoded }, express, compression, cors, cookieParser, prerender, config, }) => { const { BODY_PARSER_OPTIONS: { JSON_OPTIONS, URL_ENCODED_OPTIONS }, CORS_OPTIONS, STATIC_FILES: { OPTIONS: STATIC_OPTIONS, NO_CACHE_TYPES }, } = config.SERVER; return function load(app, { corsOptions, prerenderToken, staticFiles }) { // Load useful middlewares app.use(cookieParser()); app.use(json(JSON_OPTIONS)); app.use(urlencoded(URL_ENCODED_OPTIONS)); app.use(cors(Object.assign({}, CORS_OPTIONS, corsOptions))); app.use(compression()); if (prerenderToken) { app.use(prerender.set('prerenderToken', prerenderToken)); } if (staticFiles) { const { baseUrl, folderPath } = staticFiles; app.use( baseUrl, express.static( folderPath, Object.assign({}, STATIC_OPTIONS, { setHeaders: (res, path) => { const mimeType = express.static.mime.lookup(path); if (NO_CACHE_TYPES.includes(mimeType)) { res.setHeader('Cache-Control', 'public, max-age=0'); } }, }), ), ); } }; };