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.
		
		
		
		
		
			
		
			
				
					
					
						
							116 lines
						
					
					
						
							2.4 KiB
						
					
					
				
			
		
		
	
	
							116 lines
						
					
					
						
							2.4 KiB
						
					
					
				/*! | 
						|
 * 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 | 
						|
  }); | 
						|
});
 | 
						|
 |