107 lines
2.2 KiB
JavaScript
107 lines
2.2 KiB
JavaScript
|
|
||
|
/*!
|
||
|
* Connect
|
||
|
* Copyright(c) 2010 Sencha Inc.
|
||
|
* Copyright(c) 2011 TJ Holowaychuk
|
||
|
* MIT Licensed
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* Module dependencies.
|
||
|
*/
|
||
|
|
||
|
var HTTPServer = require('./http').Server
|
||
|
, HTTPSServer = require('./https').Server
|
||
|
, fs = require('fs');
|
||
|
|
||
|
// node patches
|
||
|
|
||
|
require('./patch');
|
||
|
|
||
|
// expose createServer() as the module
|
||
|
|
||
|
exports = module.exports = createServer;
|
||
|
|
||
|
/**
|
||
|
* Framework version.
|
||
|
*/
|
||
|
|
||
|
exports.version = '1.8.5';
|
||
|
|
||
|
/**
|
||
|
* Initialize a new `connect.HTTPServer` with the middleware
|
||
|
* passed to this function. When an object is passed _first_,
|
||
|
* we assume these are the tls options, and return a `connect.HTTPSServer`.
|
||
|
*
|
||
|
* Examples:
|
||
|
*
|
||
|
* An example HTTP server, accepting several middleware.
|
||
|
*
|
||
|
* var server = connect.createServer(
|
||
|
* connect.logger()
|
||
|
* , connect.static(__dirname + '/public')
|
||
|
* );
|
||
|
*
|
||
|
* An HTTPS server, utilizing the same middleware as above.
|
||
|
*
|
||
|
* var server = connect.createServer(
|
||
|
* { key: key, cert: cert }
|
||
|
* , connect.logger()
|
||
|
* , connect.static(__dirname + '/public')
|
||
|
* );
|
||
|
*
|
||
|
* Alternatively with connect 1.0 we may omit `createServer()`.
|
||
|
*
|
||
|
* connect(
|
||
|
* connect.logger()
|
||
|
* , connect.static(__dirname + '/public')
|
||
|
* ).listen(3000);
|
||
|
*
|
||
|
* @param {Object|Function} ...
|
||
|
* @return {Server}
|
||
|
* @api public
|
||
|
*/
|
||
|
|
||
|
function createServer() {
|
||
|
if ('object' == typeof arguments[0]) {
|
||
|
return new HTTPSServer(arguments[0], Array.prototype.slice.call(arguments, 1));
|
||
|
} else {
|
||
|
return new HTTPServer(Array.prototype.slice.call(arguments));
|
||
|
}
|
||
|
};
|
||
|
|
||
|
// support connect.createServer()
|
||
|
|
||
|
exports.createServer = createServer;
|
||
|
|
||
|
// auto-load getters
|
||
|
|
||
|
exports.middleware = {};
|
||
|
|
||
|
/**
|
||
|
* Auto-load bundled middleware with getters.
|
||
|
*/
|
||
|
|
||
|
fs.readdirSync(__dirname + '/middleware').forEach(function(filename){
|
||
|
if (/\.js$/.test(filename)) {
|
||
|
var name = filename.substr(0, filename.lastIndexOf('.'));
|
||
|
exports.middleware.__defineGetter__(name, function(){
|
||
|
return require('./middleware/' + name);
|
||
|
});
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// expose utils
|
||
|
|
||
|
exports.utils = require('./utils');
|
||
|
|
||
|
// expose getters as first-class exports
|
||
|
|
||
|
exports.utils.merge(exports, exports.middleware);
|
||
|
|
||
|
// expose constructors
|
||
|
|
||
|
exports.HTTPServer = HTTPServer;
|
||
|
exports.HTTPSServer = HTTPSServer;
|
||
|
|