UNPKG

2.82 kBJavaScriptView Raw
1/*!
2 * Pomelo
3 * Copyright(c) 2012 xiechengchao <xiecc@163.com>
4 * MIT Licensed
5 */
6
7/**
8 * Module dependencies.
9 */
10var fs = require('fs');
11var path = require('path');
12var application = require('./application');
13var Package = require('../package');
14
15/**
16 * Expose `createApplication()`.
17 *
18 * @module
19 */
20
21var Pomelo = module.exports = {};
22
23/**
24 * Framework version.
25 */
26
27Pomelo.version = Package.version;
28
29/**
30 * Event definitions that would be emitted by app.event
31 */
32Pomelo.events = require('./util/events');
33
34/**
35 * auto loaded components
36 */
37Pomelo.components = {};
38
39/**
40 * auto loaded filters
41 */
42Pomelo.filters = {};
43
44/**
45 * auto loaded rpc filters
46 */
47Pomelo.rpcFilters = {};
48
49/**
50 * connectors
51 */
52Pomelo.connectors = {};
53Pomelo.connectors.__defineGetter__('sioconnector', load.bind(null, './connectors/sioconnector'));
54Pomelo.connectors.__defineGetter__('hybridconnector', load.bind(null, './connectors/hybridconnector'));
55Pomelo.connectors.__defineGetter__('udpconnector', load.bind(null, './connectors/udpconnector'));
56Pomelo.connectors.__defineGetter__('mqttconnector', load.bind(null, './connectors/mqttconnector'));
57
58/**
59 * pushSchedulers
60 */
61Pomelo.pushSchedulers = {};
62Pomelo.pushSchedulers.__defineGetter__('direct', load.bind(null, './pushSchedulers/direct'));
63Pomelo.pushSchedulers.__defineGetter__('buffer', load.bind(null, './pushSchedulers/buffer'));
64
65var self = this;
66
67/**
68 * Create an pomelo application.
69 *
70 * @return {Application}
71 * @memberOf Pomelo
72 * @api public
73 */
74Pomelo.createApp = function (opts) {
75 var app = application;
76 app.init(opts);
77 self.app = app;
78 return app;
79};
80
81/**
82 * Get application
83 */
84Object.defineProperty(Pomelo, 'app', {
85 get:function () {
86 return self.app;
87 }
88});
89
90/**
91 * Auto-load bundled components with getters.
92 */
93fs.readdirSync(__dirname + '/components').forEach(function (filename) {
94 if (!/\.js$/.test(filename)) {
95 return;
96 }
97 var name = path.basename(filename, '.js');
98 var _load = load.bind(null, './components/', name);
99
100 Pomelo.components.__defineGetter__(name, _load);
101 Pomelo.__defineGetter__(name, _load);
102});
103
104fs.readdirSync(__dirname + '/filters/handler').forEach(function (filename) {
105 if (!/\.js$/.test(filename)) {
106 return;
107 }
108 var name = path.basename(filename, '.js');
109 var _load = load.bind(null, './filters/handler/', name);
110
111 Pomelo.filters.__defineGetter__(name, _load);
112 Pomelo.__defineGetter__(name, _load);
113});
114
115fs.readdirSync(__dirname + '/filters/rpc').forEach(function (filename) {
116 if (!/\.js$/.test(filename)) {
117 return;
118 }
119 var name = path.basename(filename, '.js');
120 var _load = load.bind(null, './filters/rpc/', name);
121
122 Pomelo.rpcFilters.__defineGetter__(name, _load);
123});
124
125function load(path, name) {
126 if (name) {
127 return require(path + name);
128 }
129 return require(path);
130}