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.
106 lines
2.2 KiB
106 lines
2.2 KiB
|
|
/*! |
|
* 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; |
|
|
|
|