|
|
/*! * express * Copyright(c) 2009-2013 TJ Holowaychuk * Copyright(c) 2013 Roman Shtylman * Copyright(c) 2014-2015 Douglas Christopher Wilson * MIT Licensed */
'use strict';
/** * Module dependencies. */
var bodyParser = require('body-parser') var EventEmitter = require('events').EventEmitter; var mixin = require('merge-descriptors'); var proto = require('./application'); var Route = require('./router/route'); var Router = require('./router'); var req = require('./request'); var res = require('./response');
/** * Expose `createApplication()`. */
exports = module.exports = createApplication;
/** * Create an express application. * * @return {Function} * @api public */
function createApplication() { var app = function(req, res, next) { app.handle(req, res, next); };
mixin(app, EventEmitter.prototype, false); mixin(app, proto, false);
// expose the prototype that will get set on requests
app.request = Object.create(req, { app: { configurable: true, enumerable: true, writable: true, value: app } })
// expose the prototype that will get set on responses
app.response = Object.create(res, { app: { configurable: true, enumerable: true, writable: true, value: app } })
app.init(); return app; }
/** * Expose the prototypes. */
exports.application = proto; exports.request = req; exports.response = res;
/** * Expose constructors. */
exports.Route = Route; exports.Router = Router;
/** * Expose middleware */
exports.json = bodyParser.json exports.query = require('./middleware/query'); exports.static = require('serve-static'); exports.urlencoded = bodyParser.urlencoded
/** * Replace removed middleware with an appropriate error message. */
var removedMiddlewares = [ 'bodyParser', 'compress', 'cookieSession', 'session', 'logger', 'cookieParser', 'favicon', 'responseTime', 'errorHandler', 'timeout', 'methodOverride', 'vhost', 'csrf', 'directory', 'limit', 'multipart', 'staticCache' ]
removedMiddlewares.forEach(function (name) { Object.defineProperty(exports, name, { get: function () { throw new Error('Most middleware (like ' + name + ') is no longer bundled with Express and must be installed separately. Please see https://github.com/senchalabs/connect#middleware.'); }, configurable: true }); });
|