@apolitical/server
Version:
Node.js module to encapsulate Apolitical's express server setup
37 lines (35 loc) • 855 B
JavaScript
;
module.exports = ({
documentationLoader,
loggerLoader,
errorMiddleware,
middlewaresLoader,
probesLoader,
fallbackLoader,
}) => {
// Main (express) loader
return async function load(app, opts) {
// Enable strict routing (treat "/foo" and "/foo/" as different)
if (opts.strictRouting) {
app.enable('strict routing');
}
// Load probes
probesLoader(app, opts);
// Load useful middlewares
middlewaresLoader(app, opts);
// Load logger
await loggerLoader(app, opts);
// Load custom resources
if (opts.appLoader) {
await opts.appLoader(app);
}
// Load documentation
documentationLoader(app, opts);
// Load fallback routing
fallbackLoader(app, opts);
// Use error handler
if (opts.handleErrors) {
app.use(errorMiddleware(opts));
}
};
};