5 var EventEmitter = require('events').EventEmitter;
6 var mixin = require('merge-descriptors');
7 var proto = require('./application');
8 var Route = require('./router/route');
9 var Router = require('./router');
10 var req = require('./request');
11 var res = require('./response');
14 * Expose `createApplication()`.
17 exports = module.exports = createApplication;
20 * Create an express application.
26 function createApplication() {
27 var app = function(req, res, next) {
28 app.handle(req, res, next);
32 mixin(app, EventEmitter.prototype);
34 app.request = { __proto__: req, app: app };
35 app.response = { __proto__: res, app: app };
41 * Expose the prototypes.
44 exports.application = proto;
45 exports.request = req;
46 exports.response = res;
49 * Expose constructors.
52 exports.Route = Route;
53 exports.Router = Router;
59 exports.query = require('./middleware/query');
60 exports.static = require('serve-static');
63 * Replace removed middleware with an appropriate error message.
86 ].forEach(function (name) {
87 Object.defineProperty(exports, name, {
89 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.');