UNPKG

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