All files / server/plugins/middle index.js

93.55% Statements 29/31
60.71% Branches 17/28
100% Functions 12/12
93.1% Lines 27/29
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 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105  5x 50x 208x 208x     5x                                     5x       21x 21x           21x 21x           21x 21x           21x 21x           21x 21x             21x 21x           21x 21x             21x 21x       20x 20x         20x 20x                   5x  
// Modules - All of the modules that are loaded by default
const modern = require('../../src/modern');
const renaissance = mod => ctx => {
  let res = mod(ctx);
  return res ? modern(res)(ctx) : Promise.resolve();
}
 
const plugin = {
  name: 'middle',
  options: {
    public: 'public',
    bodyParser: { extended: true },
    jsonParser: {},
    dataParser: {},
    cookieParser: {},
    compress: {},
    session: {
      resave: false,
      saveUninitialized: true,
      cookie: {}
    },
    responseTime: {},
    methodOverride: {},
  }
};
 
plugin.middle = [
 
  // Public folder
  renaissance(ctx => {
    Eif (ctx.options.middle.public) {
      return ctx.express.static(ctx.options.middle.public);
    }
  }),
 
  // Body Parser
  renaissance(ctx => {
    Eif (ctx.options.middle.bodyParser) {
      return require('body-parser').urlencoded(ctx.options.middle.bodyParser)
    }
  }),
 
  // JSON parser
  renaissance(ctx => {
    Eif (ctx.options.middle.jsonParser) {
      return require('body-parser').json(ctx.options.middle.jsonParser);
    }
  }),
 
  // Data parser
  renaissance(ctx => {
    Eif (ctx.options.middle.dataParser) {
      return require('express-data-parser')(ctx.options.middle.dataParser);
    }
  }),
 
  // Cookie parser
  renaissance(ctx => {
    const opts = ctx.options.middle.cookieParser || ctx.options.cookieParser;
    Iif (opts && opts.secret) {
      return require('cookie-parser')(ctx.options.middle.cookieParser);
    }
  }),
 
  // Compress
  renaissance(ctx => {
    Eif (ctx.options.middle.compress) {
      return require('compression')(ctx.options.middle.compress);
    }
  }),
 
  // Session
  renaissance(ctx => {
    let opts = ctx.options.middle.session;
    Iif (opts.session && opts.secret) {
      return require('express-session')(opts);
    }
  }),
 
  // Favicon
  renaissance(ctx => {
    let opt = ctx.options.middle.favicon;
    if (opt) return require('serve-favicon')(opt);
  }),
 
  renaissance(ctx => {
    Eif (ctx.options.middle.responseTime) {
      return require('response-time')(ctx.options.responseTime);
    }
  }),
 
  renaissance(ctx => {
    Eif (ctx.options.middle.methodOverride) {
      return require('method-override')(ctx.options.methodOverride);
    }
  }),
 
  // TODO: connectTimeout: require('connect-timeout'),
  // TODO: vhost: require('vhost'),
  // TODO: csurf: require('csurf'),
  // ?TODO: serveIndex: (opt, all) => require('serve-index')(all.public)
];
 
module.exports = plugin;