UNPKG

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