Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
@doodle/server / src / index.js
Size: Mime:
const express = require('express');
const LoggerMiddleware = require('@doodle/logger/middleware');
const ProbesMiddleware = require('./middlewares/probes');
const MetricsMiddleware = require('./middlewares/metrics');

/**
 *
 * @param {*} param0
 */
const createServer = (logger, { port, probes = {}, metrics = {} } = {}) => {
  const app = express();

  LoggerMiddleware.initialize(app, logger);
  ProbesMiddleware.initialize(app, {
    ...probes,
    middleware: MetricsMiddleware.ignoreMetrics,
  });
  MetricsMiddleware.initialize(app, metrics);

  app.start = async () =>
    new Promise((resolve, reject) => {
      app.use(LoggerMiddleware.expressLogger);
      app.use(LoggerMiddleware.expressErrorLogger);

      app.listen(port || 3000, resolve).on('error', reject);
    });

  return app;
};

module.exports = createServer;