var express = require('express'); var path = require('path'); var middlewares = exports; function safeRequire(m) { try { return require(m); } catch (err) { return undefined; } } function createMiddlewareNotInstalled(memberName, moduleName) { return function() { var msg = 'The middleware loopback.' + memberName + ' is not installed.\n' + 'Run `npm install --save ' + moduleName + '` to fix the problem.'; throw new Error(msg); }; } var middlewareModules = { 'compress': 'compression', 'timeout': 'connect-timeout', 'cookieParser': 'cookie-parser', 'cookieSession': 'cookie-session', 'csrf': 'csurf', 'errorHandler': 'errorhandler', 'session': 'express-session', 'methodOverride': 'method-override', 'logger': 'morgan', 'responseTime': 'response-time', 'favicon': 'serve-favicon', 'directory': 'serve-index', // 'static': 'serve-static', 'vhost': 'vhost' }; middlewares.bodyParser = safeRequire('body-parser'); middlewares.json = middlewares.bodyParser && middlewares.bodyParser.json; middlewares.urlencoded = middlewares.bodyParser && middlewares.bodyParser.urlencoded; for (var m in middlewareModules) { var moduleName = middlewareModules[m]; middlewares[m] = safeRequire(moduleName) || createMiddlewareNotInstalled(m, moduleName); } // serve-favicon requires a path var favicon = middlewares.favicon; middlewares.favicon = function(icon, options) { icon = icon || path.join(__dirname, '../favicon.ico'); return favicon(icon, options); };