You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					117 lines
				
				2.4 KiB
			
		
		
			
		
	
	
					117 lines
				
				2.4 KiB
			| 
								 
											4 years ago
										 
									 | 
							
								/*!
							 | 
						||
| 
								 | 
							
								 * 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.raw = bodyParser.raw
							 | 
						||
| 
								 | 
							
								exports.static = require('serve-static');
							 | 
						||
| 
								 | 
							
								exports.text = bodyParser.text
							 | 
						||
| 
								 | 
							
								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
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								});
							 |