1 | var fs = require('fs'),
|
2 | exists = require('fs-exists-sync'),
|
3 | path = require('path'),
|
4 | paths = require('../configs/paths'),
|
5 | config = require('../configs/config')
|
6 |
|
7 |
|
8 | module.exports = class {
|
9 |
|
10 | constructor() {
|
11 | paths = paths;
|
12 | this.events = [];
|
13 |
|
14 | var files = this.loadFiles();
|
15 |
|
16 | for(var key in files){
|
17 | this.events.push(require(files[key])());
|
18 | }
|
19 |
|
20 | return this;
|
21 | }
|
22 |
|
23 | loadFiles() {
|
24 | var files = [];
|
25 |
|
26 | if (exists(paths.app.events)) {
|
27 | fs.readdirSync(paths.app.events)
|
28 | .filter(function (file) {
|
29 | return (file.indexOf(".") !== 0);
|
30 | })
|
31 | .forEach(function (file) {
|
32 | files.push(path.join(paths.app.events, file));
|
33 | });
|
34 | }
|
35 |
|
36 | return files;
|
37 | }
|
38 |
|
39 | exists(name){
|
40 | for(var key in this.events){
|
41 | if(this.events[key][name]){
|
42 | return true
|
43 | }
|
44 | }
|
45 |
|
46 | return false;
|
47 | }
|
48 |
|
49 | emit(eventName, options){
|
50 | var events = (name, options, key = 0) => {
|
51 | for(var i = key; i < this.events.length; i++){
|
52 | if(this.events[i][name]){
|
53 | return this.events[i][name](options, (returns) => {
|
54 | return events(name, returns, ++i)
|
55 | })
|
56 | }
|
57 | }
|
58 |
|
59 | return options;
|
60 | }
|
61 |
|
62 | return events(eventName, options);
|
63 | }
|
64 |
|
65 | } |
\ | No newline at end of file |