UNPKG

1.57 kBJavaScriptView Raw
1
2/*!
3 * Connect
4 * Copyright(c) 2010 Sencha Inc.
5 * Copyright(c) 2011 TJ Holowaychuk
6 * MIT Licensed
7 */
8
9/**
10 * Module dependencies.
11 */
12
13var EventEmitter = require('events').EventEmitter
14 , proto = require('./proto')
15 , utils = require('./utils')
16 , path = require('path')
17 , basename = path.basename
18 , fs = require('fs');
19
20// node patches
21
22require('./patch');
23
24// expose createServer() as the module
25
26exports = module.exports = createServer;
27
28/**
29 * Framework version.
30 */
31
32exports.version = '2.3.3';
33
34/**
35 * Expose mime module.
36 */
37
38exports.mime = require('mime');
39
40/**
41 * Expose the prototype.
42 */
43
44exports.proto = proto;
45
46/**
47 * Auto-load middleware getters.
48 */
49
50exports.middleware = {};
51
52/**
53 * Expose utilities.
54 */
55
56exports.utils = utils;
57
58/**
59 * Create a new connect server.
60 *
61 * @return {Function}
62 * @api public
63 */
64
65function createServer() {
66 function app(req, res){ app.handle(req, res); }
67 utils.merge(app, proto);
68 utils.merge(app, EventEmitter.prototype);
69 app.route = '/';
70 app.stack = [];
71 for (var i = 0; i < arguments.length; ++i) {
72 app.use(arguments[i]);
73 }
74 return app;
75};
76
77/**
78 * Support old `.createServer()` method.
79 */
80
81createServer.createServer = createServer;
82
83/**
84 * Auto-load bundled middleware with getters.
85 */
86
87fs.readdirSync(__dirname + '/middleware').forEach(function(filename){
88 if (!/\.js$/.test(filename)) return;
89 var name = basename(filename, '.js');
90 function load(){ return require('./middleware/' + name); }
91 exports.middleware.__defineGetter__(name, load);
92 exports.__defineGetter__(name, load);
93});