2026-07-07 07:11:50 +00:00
/*!
* 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' )
2026-07-12 12:41:35 +00:00
var EventEmitter = require ( 'events' ) . EventEmitter ;
2026-07-07 07:11:50 +00:00
var mixin = require ( 'merge-descriptors' ) ;
var proto = require ( './application' ) ;
2026-07-12 12:41:35 +00:00
var Route = require ( './router/route' ) ;
var Router = require ( './router' ) ;
2026-07-07 07:11:50 +00:00
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.
*/
2026-07-12 12:41:35 +00:00
exports . Route = Route ;
2026-07-07 07:11:50 +00:00
exports . Router = Router ;
/**
* Expose middleware
*/
exports . json = bodyParser . json
2026-07-12 12:41:35 +00:00
exports . query = require ( './middleware/query' ) ;
2026-07-07 07:11:50 +00:00
exports . raw = bodyParser . raw
exports . static = require ( 'serve-static' ) ;
exports . text = bodyParser . text
exports . urlencoded = bodyParser . urlencoded
2026-07-12 12:41:35 +00:00
/**
* 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
} ) ;
} ) ;