102 lines
1.8 KiB
JavaScript
102 lines
1.8 KiB
JavaScript
|
/*!
|
||
|
* Connect
|
||
|
* Copyright(c) 2010 Sencha Inc.
|
||
|
* Copyright(c) 2011 TJ Holowaychuk
|
||
|
* MIT Licensed
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* Module dependencies.
|
||
|
*/
|
||
|
|
||
|
var deprecate = require('depd')('connect');
|
||
|
var EventEmitter = require('events').EventEmitter
|
||
|
, proto = require('./proto')
|
||
|
, utils = require('./utils')
|
||
|
, path = require('path')
|
||
|
, basename = path.basename
|
||
|
, fs = require('fs');
|
||
|
var merge = require('utils-merge');
|
||
|
|
||
|
// node patches
|
||
|
|
||
|
require('./patch');
|
||
|
|
||
|
// expose createServer() as the module
|
||
|
|
||
|
exports = module.exports = createServer;
|
||
|
|
||
|
/**
|
||
|
* Framework version.
|
||
|
*/
|
||
|
|
||
|
exports.version = require('../package').version;
|
||
|
|
||
|
/**
|
||
|
* Expose mime module.
|
||
|
*/
|
||
|
|
||
|
exports.mime = require('./middleware/static').mime;
|
||
|
|
||
|
/**
|
||
|
* Expose the prototype.
|
||
|
*/
|
||
|
|
||
|
exports.proto = proto;
|
||
|
|
||
|
/**
|
||
|
* Auto-load middleware getters.
|
||
|
*/
|
||
|
|
||
|
exports.middleware = {};
|
||
|
|
||
|
/**
|
||
|
* Expose utilities.
|
||
|
*/
|
||
|
|
||
|
exports.utils = utils;
|
||
|
|
||
|
/**
|
||
|
* Create a new connect server.
|
||
|
*
|
||
|
* @return {Function}
|
||
|
* @api public
|
||
|
*/
|
||
|
|
||
|
function createServer() {
|
||
|
function app(req, res, next){ app.handle(req, res, next); }
|
||
|
merge(app, proto);
|
||
|
merge(app, EventEmitter.prototype);
|
||
|
app.route = '/';
|
||
|
app.stack = [];
|
||
|
|
||
|
if (arguments.length !== 0) {
|
||
|
deprecate('connect(middleware): use app.use(middleware) instead');
|
||
|
}
|
||
|
|
||
|
for (var i = 0; i < arguments.length; ++i) {
|
||
|
app.use(arguments[i]);
|
||
|
}
|
||
|
|
||
|
return app;
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Support old `.createServer()` method.
|
||
|
*/
|
||
|
|
||
|
createServer.createServer = deprecate.function(createServer,
|
||
|
'createServer(): use connect() instead');
|
||
|
|
||
|
/**
|
||
|
* Auto-load bundled middleware with getters.
|
||
|
*/
|
||
|
|
||
|
fs.readdirSync(__dirname + '/middleware').forEach(function(filename){
|
||
|
if (!/\.js$/.test(filename)) return;
|
||
|
var name = basename(filename, '.js');
|
||
|
function load(){ return require('./middleware/' + name); }
|
||
|
exports.middleware.__defineGetter__(name, load);
|
||
|
exports.__defineGetter__(name, load);
|
||
|
});
|