3 * Copyright(c) 2009-2013 TJ Holowaychuk
4 * Copyright(c) 2013 Roman Shtylman
5 * Copyright(c) 2014-2015 Douglas Christopher Wilson
12 * Module dependencies.
15 var bodyParser
= require('body-parser')
16 var EventEmitter
= require('events').EventEmitter
;
17 var mixin
= require('merge-descriptors');
18 var proto
= require('./application');
19 var Router
= require('router');
20 var req
= require('./request');
21 var res
= require('./response');
24 * Expose `createApplication()`.
27 exports
= module
.exports
= createApplication
;
30 * Create an express application.
36 function createApplication() {
37 var app = function(req
, res
, next
) {
38 app
.handle(req
, res
, next
);
41 mixin(app
, EventEmitter
.prototype, false);
42 mixin(app
, proto
, false);
44 // expose the prototype that will get set on requests
45 app
.request
= Object
.create(req
, {
46 app
: { configurable
: true, enumerable
: true, writable
: true, value
: app
}
49 // expose the prototype that will get set on responses
50 app
.response
= Object
.create(res
, {
51 app
: { configurable
: true, enumerable
: true, writable
: true, value
: app
}
59 * Expose the prototypes.
62 exports
.application
= proto
;
63 exports
.request
= req
;
64 exports
.response
= res
;
67 * Expose constructors.
70 exports
.Route
= Router
.Route
;
71 exports
.Router
= Router
;
77 exports
.json
= bodyParser
.json
78 exports
.raw
= bodyParser
.raw
79 exports
.static = require('serve-static');
80 exports
.text
= bodyParser
.text
81 exports
.urlencoded
= bodyParser
.urlencoded