build: update example dependencies
[express.git] / lib / express.js
blobd188a16db70387967e0f913c2ee7c0bf9f7ffb09
1 /*!
2  * express
3  * Copyright(c) 2009-2013 TJ Holowaychuk
4  * Copyright(c) 2013 Roman Shtylman
5  * Copyright(c) 2014-2015 Douglas Christopher Wilson
6  * MIT Licensed
7  */
9 'use strict';
11 /**
12  * Module dependencies.
13  */
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 Route = require('./router/route');
20 var Router = require('./router');
21 var req = require('./request');
22 var res = require('./response');
24 /**
25  * Expose `createApplication()`.
26  */
28 exports = module.exports = createApplication;
30 /**
31  * Create an express application.
32  *
33  * @return {Function}
34  * @api public
35  */
37 function createApplication() {
38   var app = function(req, res, next) {
39     app.handle(req, res, next);
40   };
42   mixin(app, EventEmitter.prototype, false);
43   mixin(app, proto, false);
45   // expose the prototype that will get set on requests
46   app.request = Object.create(req, {
47     app: { configurable: true, enumerable: true, writable: true, value: app }
48   })
50   // expose the prototype that will get set on responses
51   app.response = Object.create(res, {
52     app: { configurable: true, enumerable: true, writable: true, value: app }
53   })
55   app.init();
56   return app;
59 /**
60  * Expose the prototypes.
61  */
63 exports.application = proto;
64 exports.request = req;
65 exports.response = res;
67 /**
68  * Expose constructors.
69  */
71 exports.Route = Route;
72 exports.Router = Router;
74 /**
75  * Expose middleware
76  */
78 exports.json = bodyParser.json
79 exports.query = require('./middleware/query');
80 exports.raw = bodyParser.raw
81 exports.static = require('serve-static');
82 exports.text = bodyParser.text
83 exports.urlencoded = bodyParser.urlencoded
85 /**
86  * Replace removed middleware with an appropriate error message.
87  */
89 var removedMiddlewares = [
90   'bodyParser',
91   'compress',
92   'cookieSession',
93   'session',
94   'logger',
95   'cookieParser',
96   'favicon',
97   'responseTime',
98   'errorHandler',
99   'timeout',
100   'methodOverride',
101   'vhost',
102   'csrf',
103   'directory',
104   'limit',
105   'multipart',
106   'staticCache'
109 removedMiddlewares.forEach(function (name) {
110   Object.defineProperty(exports, name, {
111     get: function () {
112       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.');
113     },
114     configurable: true
115   });