UNPKG

2.35 kBJavaScriptView Raw
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 */
8
9'use strict';
10
11/**
12 * Module dependencies.
13 */
14
15var bodyParser = require('body-parser')
16var EventEmitter = require('events').EventEmitter;
17var mixin = require('merge-descriptors');
18var proto = require('./application');
19var Route = require('./router/route');
20var Router = require('./router');
21var req = require('./request');
22var res = require('./response');
23
24/**
25 * Expose `createApplication()`.
26 */
27
28exports = module.exports = createApplication;
29
30/**
31 * Create an express application.
32 *
33 * @return {Function}
34 * @api public
35 */
36
37function createApplication() {
38 var app = function(req, res, next) {
39 app.handle(req, res, next);
40 };
41
42 mixin(app, EventEmitter.prototype, false);
43 mixin(app, proto, false);
44
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 })
49
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 })
54
55 app.init();
56 return app;
57}
58
59/**
60 * Expose the prototypes.
61 */
62
63exports.application = proto;
64exports.request = req;
65exports.response = res;
66
67/**
68 * Expose constructors.
69 */
70
71exports.Route = Route;
72exports.Router = Router;
73
74/**
75 * Expose middleware
76 */
77
78exports.json = bodyParser.json
79exports.query = require('./middleware/query');
80exports.static = require('serve-static');
81exports.urlencoded = bodyParser.urlencoded
82
83/**
84 * Replace removed middleware with an appropriate error message.
85 */
86
87var removedMiddlewares = [
88 'bodyParser',
89 'compress',
90 'cookieSession',
91 'session',
92 'logger',
93 'cookieParser',
94 'favicon',
95 'responseTime',
96 'errorHandler',
97 'timeout',
98 'methodOverride',
99 'vhost',
100 'csrf',
101 'directory',
102 'limit',
103 'multipart',
104 'staticCache'
105]
106
107removedMiddlewares.forEach(function (name) {
108 Object.defineProperty(exports, name, {
109 get: function () {
110 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.');
111 },
112 configurable: true
113 });
114});