evaengine 0.11.1 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.ai/analysis.md +657 -0
- package/.ai/architecture/runtime.md +504 -0
- package/.ai/contracts/public-api.md +447 -0
- package/.ai/external-project-guide.md +248 -0
- package/.ai/vision.md +314 -0
- package/README.md +51 -62
- package/bin/engine +15 -21
- package/index.js +2 -18
- package/package.json +60 -64
- package/src/index.js +57 -0
- package/bin/engine-babel +0 -38
- package/lib/commands/index.js +0 -25
- package/lib/commands/index.js.map +0 -1
- package/lib/commands/interface.js +0 -51
- package/lib/commands/interface.js.map +0 -1
- package/lib/commands/make_entity.js +0 -549
- package/lib/commands/make_entity.js.map +0 -1
- package/lib/commands/tramp.js +0 -53
- package/lib/commands/tramp.js.map +0 -1
- package/lib/config/index.js +0 -98
- package/lib/config/index.js.map +0 -1
- package/lib/di.js +0 -99
- package/lib/di.js.map +0 -1
- package/lib/engine.js +0 -558
- package/lib/engine.js.map +0 -1
- package/lib/entities/index.js +0 -283
- package/lib/entities/index.js.map +0 -1
- package/lib/exceptions/index.js +0 -522
- package/lib/exceptions/index.js.map +0 -1
- package/lib/index.js +0 -105
- package/lib/index.js.map +0 -1
- package/lib/middlewares/auth.js +0 -97
- package/lib/middlewares/auth.js.map +0 -1
- package/lib/middlewares/auth_kong.js +0 -48
- package/lib/middlewares/auth_kong.js.map +0 -1
- package/lib/middlewares/debug.js +0 -68
- package/lib/middlewares/debug.js.map +0 -1
- package/lib/middlewares/index.js +0 -45
- package/lib/middlewares/index.js.map +0 -1
- package/lib/middlewares/providers.js +0 -102
- package/lib/middlewares/providers.js.map +0 -1
- package/lib/middlewares/session.js +0 -76
- package/lib/middlewares/session.js.map +0 -1
- package/lib/middlewares/trace.js +0 -241
- package/lib/middlewares/trace.js.map +0 -1
- package/lib/middlewares/validator.js +0 -71
- package/lib/middlewares/validator.js.map +0 -1
- package/lib/middlewares/view_cache.js +0 -160
- package/lib/middlewares/view_cache.js.map +0 -1
- package/lib/services/cache.js +0 -234
- package/lib/services/cache.js.map +0 -1
- package/lib/services/config.js +0 -140
- package/lib/services/config.js.map +0 -1
- package/lib/services/env.js +0 -40
- package/lib/services/env.js.map +0 -1
- package/lib/services/event_manager.js +0 -110
- package/lib/services/event_manager.js.map +0 -1
- package/lib/services/http_client.js +0 -178
- package/lib/services/http_client.js.map +0 -1
- package/lib/services/index.js +0 -70
- package/lib/services/index.js.map +0 -1
- package/lib/services/interface.js +0 -12
- package/lib/services/interface.js.map +0 -1
- package/lib/services/joi.js +0 -28
- package/lib/services/joi.js.map +0 -1
- package/lib/services/jwt_token.js +0 -120
- package/lib/services/jwt_token.js.map +0 -1
- package/lib/services/jwt_token_kong.js +0 -111
- package/lib/services/jwt_token_kong.js.map +0 -1
- package/lib/services/logger.js +0 -172
- package/lib/services/logger.js.map +0 -1
- package/lib/services/namespace.js +0 -188
- package/lib/services/namespace.js.map +0 -1
- package/lib/services/now.js +0 -69
- package/lib/services/now.js.map +0 -1
- package/lib/services/providers.js +0 -195
- package/lib/services/providers.js.map +0 -1
- package/lib/services/redis.js +0 -77
- package/lib/services/redis.js.map +0 -1
- package/lib/services/rest_client.js +0 -136
- package/lib/services/rest_client.js.map +0 -1
- package/lib/swagger/index.js +0 -684
- package/lib/swagger/index.js.map +0 -1
- package/lib/utils/api_scaffold.js +0 -253
- package/lib/utils/api_scaffold.js.map +0 -1
- package/lib/utils/case_converter.js +0 -48
- package/lib/utils/case_converter.js.map +0 -1
- package/lib/utils/crc32.js +0 -22
- package/lib/utils/crc32.js.map +0 -1
- package/lib/utils/datetime.js +0 -21
- package/lib/utils/datetime.js.map +0 -1
- package/lib/utils/host.js +0 -48
- package/lib/utils/host.js.map +0 -1
- package/lib/utils/index.js +0 -61
- package/lib/utils/index.js.map +0 -1
- package/lib/utils/pagination.js +0 -269
- package/lib/utils/pagination.js.map +0 -1
- package/lib/utils/random.js +0 -33
- package/lib/utils/random.js.map +0 -1
- package/lib/utils/smart_query.js +0 -342
- package/lib/utils/smart_query.js.map +0 -1
- package/lib/utils/test.js +0 -62
- package/lib/utils/test.js.map +0 -1
- package/lib/utils/wrapper.js +0 -9
- package/lib/utils/wrapper.js.map +0 -1
package/lib/services/cache.js
DELETED
|
@@ -1,234 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = exports.RedisStore = exports.RedisNamespaceStore = exports.NullStore = exports.Store = undefined;
|
|
7
|
-
|
|
8
|
-
var _dec, _class;
|
|
9
|
-
|
|
10
|
-
var _constitute = require('constitute');
|
|
11
|
-
|
|
12
|
-
var _exceptions = require('./../exceptions');
|
|
13
|
-
|
|
14
|
-
var _redis = require('./redis');
|
|
15
|
-
|
|
16
|
-
var _redis2 = _interopRequireDefault(_redis);
|
|
17
|
-
|
|
18
|
-
var _di = require('./../di');
|
|
19
|
-
|
|
20
|
-
var _di2 = _interopRequireDefault(_di);
|
|
21
|
-
|
|
22
|
-
var _config = require('./config');
|
|
23
|
-
|
|
24
|
-
var _config2 = _interopRequireDefault(_config);
|
|
25
|
-
|
|
26
|
-
var _interface = require('./interface');
|
|
27
|
-
|
|
28
|
-
var _interface2 = _interopRequireDefault(_interface);
|
|
29
|
-
|
|
30
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
31
|
-
|
|
32
|
-
let Store = exports.Store = class Store {
|
|
33
|
-
getInstance() {
|
|
34
|
-
return this;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
has() {
|
|
38
|
-
return Promise.resolve(false);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
get() {
|
|
42
|
-
return Promise.resolve(null);
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
set() {
|
|
46
|
-
return Promise.resolve(this);
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
del() {
|
|
50
|
-
return Promise.resolve(this);
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
flush() {
|
|
54
|
-
return Promise.resolve(true);
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
tags() {
|
|
58
|
-
throw new _exceptions.UnsupportedOperationException('Not support tag feature');
|
|
59
|
-
}
|
|
60
|
-
};
|
|
61
|
-
let NullStore = exports.NullStore = class NullStore extends Store {
|
|
62
|
-
namespace() {
|
|
63
|
-
return this;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
tags() {
|
|
67
|
-
return this;
|
|
68
|
-
}
|
|
69
|
-
};
|
|
70
|
-
let RedisNamespaceStore = exports.RedisNamespaceStore = class RedisNamespaceStore extends Store {
|
|
71
|
-
constructor(prefix, namespace, redis) {
|
|
72
|
-
super();
|
|
73
|
-
this.prefix = prefix;
|
|
74
|
-
this.namespace = namespace;
|
|
75
|
-
this.redis = redis;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
getInstance() {
|
|
79
|
-
return this.redis;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
has(key) {
|
|
83
|
-
return this.redis.exists(this.key(key)).then(res => res > 0);
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
key(key) {
|
|
87
|
-
return this.prefix ? [this.prefix, this.namespace, key].join(':') : key;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
get(key) {
|
|
91
|
-
return this.redis.get(this.key(key)).then(res => JSON.parse(res));
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
del(key) {
|
|
95
|
-
return this.redis.del(this.key(key));
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
set(key, value, minutes, mutex) {
|
|
99
|
-
const args = [this.key(key), JSON.stringify(value)];
|
|
100
|
-
if (minutes) {
|
|
101
|
-
args.push('ex', minutes * 60);
|
|
102
|
-
}
|
|
103
|
-
if (mutex) {
|
|
104
|
-
const m = mutex.toUpperCase();
|
|
105
|
-
if (m === 'NX' || m === 'XX') {
|
|
106
|
-
args.push(m);
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
return this.redis.set(...args);
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
flush() {
|
|
113
|
-
return this.redis.keys([this.prefix, this.namespace, '*'].join(':')).then(keys => {
|
|
114
|
-
if (keys.length) {
|
|
115
|
-
return this.redis.del(keys);
|
|
116
|
-
}
|
|
117
|
-
return 0;
|
|
118
|
-
});
|
|
119
|
-
}
|
|
120
|
-
};
|
|
121
|
-
let RedisStore = exports.RedisStore = class RedisStore extends Store {
|
|
122
|
-
constructor(prefix, redis) {
|
|
123
|
-
super();
|
|
124
|
-
this.prefix = prefix;
|
|
125
|
-
this.namespaceHandler = {};
|
|
126
|
-
this.redis = redis || _di2.default.get('redis').getInstance();
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
getInstance() {
|
|
130
|
-
return this.redis;
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
namespace(namespace) {
|
|
134
|
-
if ({}.hasOwnProperty.call(this.namespaceHandler, namespace)) {
|
|
135
|
-
return this.namespaceHandler[namespace];
|
|
136
|
-
}
|
|
137
|
-
this.namespaceHandler[namespace] = new RedisNamespaceStore(this.prefix, namespace, this.redis);
|
|
138
|
-
return this.namespaceHandler[namespace];
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
has(key) {
|
|
142
|
-
return this.redis.exists(this.key(key));
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
key(key) {
|
|
146
|
-
return this.prefix ? [this.prefix, key].join(':') : key;
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
get(key) {
|
|
150
|
-
return this.redis.get(this.key(key)).then(res => JSON.parse(res));
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
del(key) {
|
|
154
|
-
return this.redis.del(this.key(key));
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
set(key, value, minutes, mutex) {
|
|
158
|
-
const args = [this.key(key), JSON.stringify(value)];
|
|
159
|
-
if (minutes) {
|
|
160
|
-
args.push('ex', minutes * 60);
|
|
161
|
-
}
|
|
162
|
-
if (mutex) {
|
|
163
|
-
const m = mutex.toUpperCase();
|
|
164
|
-
if (m === 'NX' || m === 'XX') {
|
|
165
|
-
args.push(m);
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
return this.redis.set(...args);
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
flush() {
|
|
172
|
-
return this.redis.flushall();
|
|
173
|
-
}
|
|
174
|
-
};
|
|
175
|
-
//eslint-disable-line new-cap
|
|
176
|
-
let Cache = (_dec = (0, _constitute.Dependencies)(_config2.default, _redis2.default), _dec(_class = class Cache extends _interface2.default {
|
|
177
|
-
constructor(config) {
|
|
178
|
-
super();
|
|
179
|
-
this.config = config.get('cache');
|
|
180
|
-
this.prefix = this.config.prefix || 'eva';
|
|
181
|
-
this.driver = this.config.driver;
|
|
182
|
-
this.store = null;
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
setStore(store) {
|
|
186
|
-
this.store = store;
|
|
187
|
-
return this;
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
/**
|
|
191
|
-
* @returns {Store}
|
|
192
|
-
*/
|
|
193
|
-
getStore() {
|
|
194
|
-
if (this.store) {
|
|
195
|
-
return this.store;
|
|
196
|
-
}
|
|
197
|
-
this.store = this.driver === 'redis' ? new RedisStore(this.prefix) : new NullStore(this.prefix);
|
|
198
|
-
return this.store;
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
setPrefix(prefix) {
|
|
202
|
-
this.prefix = prefix;
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
getPrefix() {
|
|
206
|
-
return this.prefix;
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
namespace(...args) {
|
|
210
|
-
return this.getStore().namespace(...args);
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
has(key) {
|
|
214
|
-
return this.getStore().has(key);
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
get(key) {
|
|
218
|
-
return this.getStore().get(key);
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
set(...args) {
|
|
222
|
-
return this.getStore().set(...args);
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
del(...args) {
|
|
226
|
-
return this.getStore().del(...args);
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
flush() {
|
|
230
|
-
return this.getStore().flush();
|
|
231
|
-
}
|
|
232
|
-
}) || _class);
|
|
233
|
-
exports.default = Cache;
|
|
234
|
-
//# sourceMappingURL=cache.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/services/cache.js"],"names":["Store","getInstance","has","Promise","resolve","get","set","del","flush","tags","UnsupportedOperationException","NullStore","namespace","RedisNamespaceStore","constructor","prefix","redis","key","exists","then","res","join","JSON","parse","value","minutes","mutex","args","stringify","push","m","toUpperCase","keys","length","RedisStore","namespaceHandler","DI","hasOwnProperty","call","flushall","Cache","Config","Redis","ServiceInterface","config","driver","store","setStore","getStore","setPrefix","getPrefix"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;;;IAEaA,K,WAAAA,K,GAAN,MAAMA,KAAN,CAAY;AACjBC,gBAAc;AACZ,WAAO,IAAP;AACD;;AAEDC,QAAM;AACJ,WAAOC,QAAQC,OAAR,CAAgB,KAAhB,CAAP;AACD;;AAEDC,QAAM;AACJ,WAAOF,QAAQC,OAAR,CAAgB,IAAhB,CAAP;AACD;;AAEDE,QAAM;AACJ,WAAOH,QAAQC,OAAR,CAAgB,IAAhB,CAAP;AACD;;AAEDG,QAAM;AACJ,WAAOJ,QAAQC,OAAR,CAAgB,IAAhB,CAAP;AACD;;AAEDI,UAAQ;AACN,WAAOL,QAAQC,OAAR,CAAgB,IAAhB,CAAP;AACD;;AAEDK,SAAO;AACL,UAAM,IAAIC,yCAAJ,CAAkC,yBAAlC,CAAN;AACD;AA3BgB,C;IA8BNC,S,WAAAA,S,GAAN,MAAMA,SAAN,SAAwBX,KAAxB,CAA8B;AACnCY,cAAY;AACV,WAAO,IAAP;AACD;;AAEDH,SAAO;AACL,WAAO,IAAP;AACD;AAPkC,C;IAUxBI,mB,WAAAA,mB,GAAN,MAAMA,mBAAN,SAAkCb,KAAlC,CAAwC;AAC7Cc,cAAYC,MAAZ,EAAoBH,SAApB,EAA+BI,KAA/B,EAAsC;AACpC;AACA,SAAKD,MAAL,GAAcA,MAAd;AACA,SAAKH,SAAL,GAAiBA,SAAjB;AACA,SAAKI,KAAL,GAAaA,KAAb;AACD;;AAEDf,gBAAc;AACZ,WAAO,KAAKe,KAAZ;AACD;;AAEDd,MAAIe,GAAJ,EAAS;AACP,WAAO,KAAKD,KAAL,CAAWE,MAAX,CAAkB,KAAKD,GAAL,CAASA,GAAT,CAAlB,EAAiCE,IAAjC,CAAsCC,OAAOA,MAAM,CAAnD,CAAP;AACD;;AAEDH,MAAIA,GAAJ,EAAS;AACP,WAAO,KAAKF,MAAL,GAAc,CAAC,KAAKA,MAAN,EAAc,KAAKH,SAAnB,EAA8BK,GAA9B,EAAmCI,IAAnC,CAAwC,GAAxC,CAAd,GAA6DJ,GAApE;AACD;;AAEDZ,MAAIY,GAAJ,EAAS;AACP,WAAO,KAAKD,KAAL,CAAWX,GAAX,CAAe,KAAKY,GAAL,CAASA,GAAT,CAAf,EAA8BE,IAA9B,CAAmCC,OAAOE,KAAKC,KAAL,CAAWH,GAAX,CAA1C,CAAP;AACD;;AAEDb,MAAIU,GAAJ,EAAS;AACP,WAAO,KAAKD,KAAL,CAAWT,GAAX,CAAe,KAAKU,GAAL,CAASA,GAAT,CAAf,CAAP;AACD;;AAEDX,MAAIW,GAAJ,EAASO,KAAT,EAAgBC,OAAhB,EAAyBC,KAAzB,EAAgC;AAC9B,UAAMC,OAAO,CACX,KAAKV,GAAL,CAASA,GAAT,CADW,EAEXK,KAAKM,SAAL,CAAeJ,KAAf,CAFW,CAAb;AAIA,QAAIC,OAAJ,EAAa;AACXE,WAAKE,IAAL,CAAU,IAAV,EAAgBJ,UAAU,EAA1B;AACD;AACD,QAAIC,KAAJ,EAAW;AACT,YAAMI,IAAIJ,MAAMK,WAAN,EAAV;AACA,UAAID,MAAM,IAAN,IAAcA,MAAM,IAAxB,EAA8B;AAC5BH,aAAKE,IAAL,CAAUC,CAAV;AACD;AACF;AACD,WAAO,KAAKd,KAAL,CAAWV,GAAX,CAAe,GAAGqB,IAAlB,CAAP;AACD;;AAEDnB,UAAQ;AACN,WAAO,KAAKQ,KAAL,CAAWgB,IAAX,CAAgB,CAAC,KAAKjB,MAAN,EAAc,KAAKH,SAAnB,EAA8B,GAA9B,EAAmCS,IAAnC,CAAwC,GAAxC,CAAhB,EACJF,IADI,CACEa,IAAD,IAAU;AACd,UAAIA,KAAKC,MAAT,EAAiB;AACf,eAAO,KAAKjB,KAAL,CAAWT,GAAX,CAAeyB,IAAf,CAAP;AACD;AACD,aAAO,CAAP;AACD,KANI,CAAP;AAOD;AArD4C,C;IAwDlCE,U,WAAAA,U,GAAN,MAAMA,UAAN,SAAyBlC,KAAzB,CAA+B;AACpCc,cAAYC,MAAZ,EAAoBC,KAApB,EAA2B;AACzB;AACA,SAAKD,MAAL,GAAcA,MAAd;AACA,SAAKoB,gBAAL,GAAwB,EAAxB;AACA,SAAKnB,KAAL,GAAaA,SAASoB,aAAG/B,GAAH,CAAO,OAAP,EAAgBJ,WAAhB,EAAtB;AACD;;AAEDA,gBAAc;AACZ,WAAO,KAAKe,KAAZ;AACD;;AAEDJ,YAAUA,SAAV,EAAqB;AACnB,QAAI,GAAGyB,cAAH,CAAkBC,IAAlB,CAAuB,KAAKH,gBAA5B,EAA8CvB,SAA9C,CAAJ,EAA8D;AAC5D,aAAO,KAAKuB,gBAAL,CAAsBvB,SAAtB,CAAP;AACD;AACD,SAAKuB,gBAAL,CAAsBvB,SAAtB,IAAmC,IAAIC,mBAAJ,CAAwB,KAAKE,MAA7B,EAAqCH,SAArC,EAAgD,KAAKI,KAArD,CAAnC;AACA,WAAO,KAAKmB,gBAAL,CAAsBvB,SAAtB,CAAP;AACD;;AAEDV,MAAIe,GAAJ,EAAS;AACP,WAAO,KAAKD,KAAL,CAAWE,MAAX,CAAkB,KAAKD,GAAL,CAASA,GAAT,CAAlB,CAAP;AACD;;AAEDA,MAAIA,GAAJ,EAAS;AACP,WAAO,KAAKF,MAAL,GAAc,CAAC,KAAKA,MAAN,EAAcE,GAAd,EAAmBI,IAAnB,CAAwB,GAAxB,CAAd,GAA6CJ,GAApD;AACD;;AAEDZ,MAAIY,GAAJ,EAAS;AACP,WAAO,KAAKD,KAAL,CAAWX,GAAX,CAAe,KAAKY,GAAL,CAASA,GAAT,CAAf,EAA8BE,IAA9B,CAAmCC,OAAOE,KAAKC,KAAL,CAAWH,GAAX,CAA1C,CAAP;AACD;;AAEDb,MAAIU,GAAJ,EAAS;AACP,WAAO,KAAKD,KAAL,CAAWT,GAAX,CAAe,KAAKU,GAAL,CAASA,GAAT,CAAf,CAAP;AACD;;AAEDX,MAAIW,GAAJ,EAASO,KAAT,EAAgBC,OAAhB,EAAyBC,KAAzB,EAAgC;AAC9B,UAAMC,OAAO,CACX,KAAKV,GAAL,CAASA,GAAT,CADW,EAEXK,KAAKM,SAAL,CAAeJ,KAAf,CAFW,CAAb;AAIA,QAAIC,OAAJ,EAAa;AACXE,WAAKE,IAAL,CAAU,IAAV,EAAgBJ,UAAU,EAA1B;AACD;AACD,QAAIC,KAAJ,EAAW;AACT,YAAMI,IAAIJ,MAAMK,WAAN,EAAV;AACA,UAAID,MAAM,IAAN,IAAcA,MAAM,IAAxB,EAA8B;AAC5BH,aAAKE,IAAL,CAAUC,CAAV;AACD;AACF;AACD,WAAO,KAAKd,KAAL,CAAWV,GAAX,CAAe,GAAGqB,IAAlB,CAAP;AACD;;AAEDnB,UAAQ;AACN,WAAO,KAAKQ,KAAL,CAAWuB,QAAX,EAAP;AACD;AAvDmC,C;AA0DT;IACRC,K,WADpB,8BAAaC,gBAAb,EAAqBC,eAArB,C,gBACc,MAAMF,KAAN,SAAoBG,mBAApB,CAAqC;AAClD7B,cAAY8B,MAAZ,EAAoB;AAClB;AACA,SAAKA,MAAL,GAAcA,OAAOvC,GAAP,CAAW,OAAX,CAAd;AACA,SAAKU,MAAL,GAAc,KAAK6B,MAAL,CAAY7B,MAAZ,IAAsB,KAApC;AACA,SAAK8B,MAAL,GAAc,KAAKD,MAAL,CAAYC,MAA1B;AACA,SAAKC,KAAL,GAAa,IAAb;AACD;;AAEDC,WAASD,KAAT,EAAgB;AACd,SAAKA,KAAL,GAAaA,KAAb;AACA,WAAO,IAAP;AACD;;AAED;;;AAGAE,aAAW;AACT,QAAI,KAAKF,KAAT,EAAgB;AACd,aAAO,KAAKA,KAAZ;AACD;AACD,SAAKA,KAAL,GAAa,KAAKD,MAAL,KAAgB,OAAhB,GACX,IAAIX,UAAJ,CAAe,KAAKnB,MAApB,CADW,GACmB,IAAIJ,SAAJ,CAAc,KAAKI,MAAnB,CADhC;AAEA,WAAO,KAAK+B,KAAZ;AACD;;AAEDG,YAAUlC,MAAV,EAAkB;AAChB,SAAKA,MAAL,GAAcA,MAAd;AACD;;AAEDmC,cAAY;AACV,WAAO,KAAKnC,MAAZ;AACD;;AAEDH,YAAU,GAAGe,IAAb,EAAmB;AACjB,WAAO,KAAKqB,QAAL,GAAgBpC,SAAhB,CAA0B,GAAGe,IAA7B,CAAP;AACD;;AAEDzB,MAAIe,GAAJ,EAAS;AACP,WAAO,KAAK+B,QAAL,GAAgB9C,GAAhB,CAAoBe,GAApB,CAAP;AACD;;AAEDZ,MAAIY,GAAJ,EAAS;AACP,WAAO,KAAK+B,QAAL,GAAgB3C,GAAhB,CAAoBY,GAApB,CAAP;AACD;;AAEDX,MAAI,GAAGqB,IAAP,EAAa;AACX,WAAO,KAAKqB,QAAL,GAAgB1C,GAAhB,CAAoB,GAAGqB,IAAvB,CAAP;AACD;;AAEDpB,MAAI,GAAGoB,IAAP,EAAa;AACX,WAAO,KAAKqB,QAAL,GAAgBzC,GAAhB,CAAoB,GAAGoB,IAAvB,CAAP;AACD;;AAEDnB,UAAQ;AACN,WAAO,KAAKwC,QAAL,GAAgBxC,KAAhB,EAAP;AACD;AAxDiD,C;kBAA/BgC,K","file":"cache.js","sourcesContent":["import { Dependencies } from 'constitute';\nimport { UnsupportedOperationException } from './../exceptions';\nimport Redis from './redis';\nimport DI from './../di';\nimport Config from './config';\nimport ServiceInterface from './interface';\n\nexport class Store {\n getInstance() {\n return this;\n }\n\n has() {\n return Promise.resolve(false);\n }\n\n get() {\n return Promise.resolve(null);\n }\n\n set() {\n return Promise.resolve(this);\n }\n\n del() {\n return Promise.resolve(this);\n }\n\n flush() {\n return Promise.resolve(true);\n }\n\n tags() {\n throw new UnsupportedOperationException('Not support tag feature');\n }\n}\n\nexport class NullStore extends Store {\n namespace() {\n return this;\n }\n\n tags() {\n return this;\n }\n}\n\nexport class RedisNamespaceStore extends Store {\n constructor(prefix, namespace, redis) {\n super();\n this.prefix = prefix;\n this.namespace = namespace;\n this.redis = redis;\n }\n\n getInstance() {\n return this.redis;\n }\n\n has(key) {\n return this.redis.exists(this.key(key)).then(res => res > 0);\n }\n\n key(key) {\n return this.prefix ? [this.prefix, this.namespace, key].join(':') : key;\n }\n\n get(key) {\n return this.redis.get(this.key(key)).then(res => JSON.parse(res));\n }\n\n del(key) {\n return this.redis.del(this.key(key));\n }\n\n set(key, value, minutes, mutex) {\n const args = [\n this.key(key),\n JSON.stringify(value)\n ];\n if (minutes) {\n args.push('ex', minutes * 60);\n }\n if (mutex) {\n const m = mutex.toUpperCase();\n if (m === 'NX' || m === 'XX') {\n args.push(m);\n }\n }\n return this.redis.set(...args);\n }\n\n flush() {\n return this.redis.keys([this.prefix, this.namespace, '*'].join(':'))\n .then((keys) => {\n if (keys.length) {\n return this.redis.del(keys);\n }\n return 0;\n });\n }\n}\n\nexport class RedisStore extends Store {\n constructor(prefix, redis) {\n super();\n this.prefix = prefix;\n this.namespaceHandler = {};\n this.redis = redis || DI.get('redis').getInstance();\n }\n\n getInstance() {\n return this.redis;\n }\n\n namespace(namespace) {\n if ({}.hasOwnProperty.call(this.namespaceHandler, namespace)) {\n return this.namespaceHandler[namespace];\n }\n this.namespaceHandler[namespace] = new RedisNamespaceStore(this.prefix, namespace, this.redis);\n return this.namespaceHandler[namespace];\n }\n\n has(key) {\n return this.redis.exists(this.key(key));\n }\n\n key(key) {\n return this.prefix ? [this.prefix, key].join(':') : key;\n }\n\n get(key) {\n return this.redis.get(this.key(key)).then(res => JSON.parse(res));\n }\n\n del(key) {\n return this.redis.del(this.key(key));\n }\n\n set(key, value, minutes, mutex) {\n const args = [\n this.key(key),\n JSON.stringify(value)\n ];\n if (minutes) {\n args.push('ex', minutes * 60);\n }\n if (mutex) {\n const m = mutex.toUpperCase();\n if (m === 'NX' || m === 'XX') {\n args.push(m);\n }\n }\n return this.redis.set(...args);\n }\n\n flush() {\n return this.redis.flushall();\n }\n}\n\n@Dependencies(Config, Redis) //eslint-disable-line new-cap\nexport default class Cache extends ServiceInterface {\n constructor(config) {\n super();\n this.config = config.get('cache');\n this.prefix = this.config.prefix || 'eva';\n this.driver = this.config.driver;\n this.store = null;\n }\n\n setStore(store) {\n this.store = store;\n return this;\n }\n\n /**\n * @returns {Store}\n */\n getStore() {\n if (this.store) {\n return this.store;\n }\n this.store = this.driver === 'redis' ?\n new RedisStore(this.prefix) : new NullStore(this.prefix);\n return this.store;\n }\n\n setPrefix(prefix) {\n this.prefix = prefix;\n }\n\n getPrefix() {\n return this.prefix;\n }\n\n namespace(...args) {\n return this.getStore().namespace(...args);\n }\n\n has(key) {\n return this.getStore().has(key);\n }\n\n get(key) {\n return this.getStore().get(key);\n }\n\n set(...args) {\n return this.getStore().set(...args);\n }\n\n del(...args) {\n return this.getStore().del(...args);\n }\n\n flush() {\n return this.getStore().flush();\n }\n}\n\n"]}
|
package/lib/services/config.js
DELETED
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = undefined;
|
|
7
|
-
|
|
8
|
-
var _dec, _class;
|
|
9
|
-
|
|
10
|
-
var _lodash = require('lodash');
|
|
11
|
-
|
|
12
|
-
var _lodash2 = _interopRequireDefault(_lodash);
|
|
13
|
-
|
|
14
|
-
var _constitute = require('constitute');
|
|
15
|
-
|
|
16
|
-
var _cloudConfigClient = require('cloud-config-client');
|
|
17
|
-
|
|
18
|
-
var _cloudConfigClient2 = _interopRequireDefault(_cloudConfigClient);
|
|
19
|
-
|
|
20
|
-
var _env = require('./env');
|
|
21
|
-
|
|
22
|
-
var _env2 = _interopRequireDefault(_env);
|
|
23
|
-
|
|
24
|
-
var _config = require('../config');
|
|
25
|
-
|
|
26
|
-
var _config2 = _interopRequireDefault(_config);
|
|
27
|
-
|
|
28
|
-
var _interface = require('./interface');
|
|
29
|
-
|
|
30
|
-
var _interface2 = _interopRequireDefault(_interface);
|
|
31
|
-
|
|
32
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
33
|
-
|
|
34
|
-
function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
|
|
35
|
-
|
|
36
|
-
let config = null;
|
|
37
|
-
|
|
38
|
-
//eslint-disable-line new-cap
|
|
39
|
-
let Config = (_dec = (0, _constitute.Dependencies)(_env2.default), _dec(_class = class Config extends _interface2.default {
|
|
40
|
-
/**
|
|
41
|
-
* @param env {Env}
|
|
42
|
-
*/
|
|
43
|
-
constructor(env) {
|
|
44
|
-
super();
|
|
45
|
-
this.env = env;
|
|
46
|
-
this.path = null;
|
|
47
|
-
this.mergedFiles = [];
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
setPath(path) {
|
|
51
|
-
this.path = path;
|
|
52
|
-
return this;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* Resolve configurations from Spring Cloud Config Server.
|
|
57
|
-
* @param endpoint
|
|
58
|
-
* @param name
|
|
59
|
-
* @param profiles
|
|
60
|
-
* @param label
|
|
61
|
-
* @returns {Promise.<void>}
|
|
62
|
-
*/
|
|
63
|
-
resolveSpringConfig({
|
|
64
|
-
endpoint,
|
|
65
|
-
name,
|
|
66
|
-
profiles,
|
|
67
|
-
label = 'master'
|
|
68
|
-
}) {
|
|
69
|
-
var _this = this;
|
|
70
|
-
|
|
71
|
-
return _asyncToGenerator(function* () {
|
|
72
|
-
if (!config) {
|
|
73
|
-
config = _this.loadConfigFromFiles();
|
|
74
|
-
}
|
|
75
|
-
const configRemote = yield _cloudConfigClient2.default.load({
|
|
76
|
-
endpoint,
|
|
77
|
-
name,
|
|
78
|
-
profiles: _lodash2.default.isString(profiles) ? profiles.split(',') : [],
|
|
79
|
-
label
|
|
80
|
-
});
|
|
81
|
-
configRemote.forEach(function (key, value) {
|
|
82
|
-
_lodash2.default.set(config, key, value);
|
|
83
|
-
});
|
|
84
|
-
})();
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
get(key) {
|
|
88
|
-
if (config) {
|
|
89
|
-
return key ? Config.search(key, config) : config;
|
|
90
|
-
}
|
|
91
|
-
config = this.loadConfigFromFiles();
|
|
92
|
-
return key ? Config.search(key, config) : config;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
loadConfigFromFiles() {
|
|
96
|
-
const env = this.env.get();
|
|
97
|
-
const configPath = this.path;
|
|
98
|
-
const pathDefault = `${configPath}/config.default`;
|
|
99
|
-
const pathEnv = `${configPath}/config.${env}`;
|
|
100
|
-
const pathLocal = `${configPath}/config.local.${env}`;
|
|
101
|
-
/*eslint-disable global-require*/
|
|
102
|
-
/*eslint-disable import/no-dynamic-require*/
|
|
103
|
-
const configDefault = require(pathDefault);
|
|
104
|
-
this.mergedFiles.push(pathDefault);
|
|
105
|
-
const configEnv = require(pathEnv);
|
|
106
|
-
this.mergedFiles.push(pathEnv);
|
|
107
|
-
let configLocal = {};
|
|
108
|
-
try {
|
|
109
|
-
configLocal = require(pathLocal);
|
|
110
|
-
this.mergedFiles.push(pathLocal);
|
|
111
|
-
} catch (e) {
|
|
112
|
-
configLocal = {};
|
|
113
|
-
}
|
|
114
|
-
/*eslint-enable import/no-dynamic-require*/
|
|
115
|
-
/*eslint-enable global-require*/
|
|
116
|
-
return _lodash2.default.merge(_config2.default, configDefault, configEnv, configLocal);
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
getMergedFiles() {
|
|
120
|
-
return this.mergedFiles;
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
reload() {
|
|
124
|
-
config = null;
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
/**
|
|
128
|
-
* @param {string} keyString
|
|
129
|
-
* @param {Object} target
|
|
130
|
-
* @returns {*}
|
|
131
|
-
*/
|
|
132
|
-
static search(keyString, target) {
|
|
133
|
-
if (typeof keyString !== 'string') {
|
|
134
|
-
return target;
|
|
135
|
-
}
|
|
136
|
-
return _lodash2.default.get(target, keyString);
|
|
137
|
-
}
|
|
138
|
-
}) || _class);
|
|
139
|
-
exports.default = Config;
|
|
140
|
-
//# sourceMappingURL=config.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/services/config.js"],"names":["config","Config","Env","ServiceInterface","constructor","env","path","mergedFiles","setPath","resolveSpringConfig","endpoint","name","profiles","label","loadConfigFromFiles","configRemote","springConfigClient","load","_","isString","split","forEach","key","value","set","get","search","configPath","pathDefault","pathEnv","pathLocal","configDefault","require","push","configEnv","configLocal","e","merge","EngineConfig","getMergedFiles","reload","keyString","target"],"mappings":";;;;;;;;;AAAA;;;;AACA;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;;;;;AAEA,IAAIA,SAAS,IAAb;;AAEmB;IACEC,M,WADpB,8BAAaC,aAAb,C,gBACc,MAAMD,MAAN,SAAqBE,mBAArB,CAAsC;AACnD;;;AAGAC,cAAYC,GAAZ,EAAiB;AACf;AACA,SAAKA,GAAL,GAAWA,GAAX;AACA,SAAKC,IAAL,GAAY,IAAZ;AACA,SAAKC,WAAL,GAAmB,EAAnB;AACD;;AAEDC,UAAQF,IAAR,EAAc;AACZ,SAAKA,IAAL,GAAYA,IAAZ;AACA,WAAO,IAAP;AACD;;AAED;;;;;;;;AAQMG,qBAAN,CAA0B;AACxBC,YADwB;AAExBC,QAFwB;AAGxBC,YAHwB;AAIxBC,YAAQ;AAJgB,GAA1B,EAKG;AAAA;;AAAA;AACD,UAAI,CAACb,MAAL,EAAa;AACXA,iBAAS,MAAKc,mBAAL,EAAT;AACD;AACD,YAAMC,eAAe,MAAMC,4BAAmBC,IAAnB,CAAwB;AACjDP,gBADiD;AAEjDC,YAFiD;AAGjDC,kBAAUM,iBAAEC,QAAF,CAAWP,QAAX,IAAuBA,SAASQ,KAAT,CAAe,GAAf,CAAvB,GAA6C,EAHN;AAIjDP;AAJiD,OAAxB,CAA3B;AAMAE,mBAAaM,OAAb,CAAqB,UAACC,GAAD,EAAMC,KAAN,EAAgB;AACnCL,yBAAEM,GAAF,CAAMxB,MAAN,EAAcsB,GAAd,EAAmBC,KAAnB;AACD,OAFD;AAVC;AAaF;;AAEDE,MAAIH,GAAJ,EAAS;AACP,QAAItB,MAAJ,EAAY;AACV,aAAOsB,MAAMrB,OAAOyB,MAAP,CAAcJ,GAAd,EAAmBtB,MAAnB,CAAN,GAAmCA,MAA1C;AACD;AACDA,aAAS,KAAKc,mBAAL,EAAT;AACA,WAAOQ,MAAMrB,OAAOyB,MAAP,CAAcJ,GAAd,EAAmBtB,MAAnB,CAAN,GAAmCA,MAA1C;AACD;;AAEDc,wBAAsB;AACpB,UAAMT,MAAM,KAAKA,GAAL,CAASoB,GAAT,EAAZ;AACA,UAAME,aAAa,KAAKrB,IAAxB;AACA,UAAMsB,cAAe,GAAED,UAAW,iBAAlC;AACA,UAAME,UAAW,GAAEF,UAAW,WAAUtB,GAAI,EAA5C;AACA,UAAMyB,YAAa,GAAEH,UAAW,iBAAgBtB,GAAI,EAApD;AACA;AACA;AACA,UAAM0B,gBAAgBC,QAAQJ,WAAR,CAAtB;AACA,SAAKrB,WAAL,CAAiB0B,IAAjB,CAAsBL,WAAtB;AACA,UAAMM,YAAYF,QAAQH,OAAR,CAAlB;AACA,SAAKtB,WAAL,CAAiB0B,IAAjB,CAAsBJ,OAAtB;AACA,QAAIM,cAAc,EAAlB;AACA,QAAI;AACFA,oBAAcH,QAAQF,SAAR,CAAd;AACA,WAAKvB,WAAL,CAAiB0B,IAAjB,CAAsBH,SAAtB;AACD,KAHD,CAGE,OAAOM,CAAP,EAAU;AACVD,oBAAc,EAAd;AACD;AACD;AACA;AACA,WAAOjB,iBAAEmB,KAAF,CAAQC,gBAAR,EAAsBP,aAAtB,EAAqCG,SAArC,EAAgDC,WAAhD,CAAP;AACD;;AAEDI,mBAAiB;AACf,WAAO,KAAKhC,WAAZ;AACD;;AAEDiC,WAAS;AACPxC,aAAS,IAAT;AACD;;AAED;;;;;AAKA,SAAO0B,MAAP,CAAce,SAAd,EAAyBC,MAAzB,EAAiC;AAC/B,QAAI,OAAOD,SAAP,KAAqB,QAAzB,EAAmC;AACjC,aAAOC,MAAP;AACD;AACD,WAAOxB,iBAAEO,GAAF,CAAMiB,MAAN,EAAcD,SAAd,CAAP;AACD;AA9FkD,C;kBAAhCxC,M","file":"config.js","sourcesContent":["import _ from 'lodash';\nimport { Dependencies } from 'constitute';\nimport springConfigClient from 'cloud-config-client';\nimport Env from './env';\nimport EngineConfig from '../config';\nimport ServiceInterface from './interface';\n\nlet config = null;\n\n@Dependencies(Env) //eslint-disable-line new-cap\nexport default class Config extends ServiceInterface {\n /**\n * @param env {Env}\n */\n constructor(env) {\n super();\n this.env = env;\n this.path = null;\n this.mergedFiles = [];\n }\n\n setPath(path) {\n this.path = path;\n return this;\n }\n\n /**\n * Resolve configurations from Spring Cloud Config Server.\n * @param endpoint\n * @param name\n * @param profiles\n * @param label\n * @returns {Promise.<void>}\n */\n async resolveSpringConfig({\n endpoint,\n name,\n profiles,\n label = 'master'\n }) {\n if (!config) {\n config = this.loadConfigFromFiles();\n }\n const configRemote = await springConfigClient.load({\n endpoint,\n name,\n profiles: _.isString(profiles) ? profiles.split(',') : [],\n label\n });\n configRemote.forEach((key, value) => {\n _.set(config, key, value);\n });\n }\n\n get(key) {\n if (config) {\n return key ? Config.search(key, config) : config;\n }\n config = this.loadConfigFromFiles();\n return key ? Config.search(key, config) : config;\n }\n\n loadConfigFromFiles() {\n const env = this.env.get();\n const configPath = this.path;\n const pathDefault = `${configPath}/config.default`;\n const pathEnv = `${configPath}/config.${env}`;\n const pathLocal = `${configPath}/config.local.${env}`;\n /*eslint-disable global-require*/\n /*eslint-disable import/no-dynamic-require*/\n const configDefault = require(pathDefault);\n this.mergedFiles.push(pathDefault);\n const configEnv = require(pathEnv);\n this.mergedFiles.push(pathEnv);\n let configLocal = {};\n try {\n configLocal = require(pathLocal);\n this.mergedFiles.push(pathLocal);\n } catch (e) {\n configLocal = {};\n }\n /*eslint-enable import/no-dynamic-require*/\n /*eslint-enable global-require*/\n return _.merge(EngineConfig, configDefault, configEnv, configLocal);\n }\n\n getMergedFiles() {\n return this.mergedFiles;\n }\n\n reload() {\n config = null;\n }\n\n /**\n * @param {string} keyString\n * @param {Object} target\n * @returns {*}\n */\n static search(keyString, target) {\n if (typeof keyString !== 'string') {\n return target;\n }\n return _.get(target, keyString);\n }\n}\n\n"]}
|
package/lib/services/env.js
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = exports.TYPES = undefined;
|
|
7
|
-
|
|
8
|
-
var _interface = require('./interface');
|
|
9
|
-
|
|
10
|
-
var _interface2 = _interopRequireDefault(_interface);
|
|
11
|
-
|
|
12
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
-
|
|
14
|
-
let env = null;
|
|
15
|
-
const TYPES = exports.TYPES = {
|
|
16
|
-
PRODUCTION: 'production',
|
|
17
|
-
TEST: 'test',
|
|
18
|
-
DEVELOPMENT: 'development'
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
let Env = class Env extends _interface2.default {
|
|
22
|
-
get() {
|
|
23
|
-
env = [TYPES.PRODUCTION, TYPES.TEST, TYPES.DEVELOPMENT].indexOf(process.env.NODE_ENV) > -1 ? process.env.NODE_ENV : TYPES.DEVELOPMENT;
|
|
24
|
-
return env;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
isTest() {
|
|
28
|
-
return this.get() === TYPES.TEST;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
isProduction() {
|
|
32
|
-
return this.get() === TYPES.PRODUCTION;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
isDevelopment() {
|
|
36
|
-
return this.get() === TYPES.DEVELOPMENT;
|
|
37
|
-
}
|
|
38
|
-
};
|
|
39
|
-
exports.default = Env;
|
|
40
|
-
//# sourceMappingURL=env.js.map
|
package/lib/services/env.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/services/env.js"],"names":["env","TYPES","PRODUCTION","TEST","DEVELOPMENT","Env","ServiceInterface","get","indexOf","process","NODE_ENV","isTest","isProduction","isDevelopment"],"mappings":";;;;;;;AAAA;;;;;;AAEA,IAAIA,MAAM,IAAV;AACO,MAAMC,wBAAQ;AACnBC,cAAY,YADO;AAEnBC,QAAM,MAFa;AAGnBC,eAAa;AAHM,CAAd;;IAMcC,G,GAAN,MAAMA,GAAN,SAAkBC,mBAAlB,CAAmC;AAChDC,QAAM;AACJP,UAAM,CAACC,MAAMC,UAAP,EAAmBD,MAAME,IAAzB,EAA+BF,MAAMG,WAArC,EAAkDI,OAAlD,CAA0DC,QAAQT,GAAR,CAAYU,QAAtE,IAAkF,CAAC,CAAnF,GACFD,QAAQT,GAAR,CAAYU,QADV,GACqBT,MAAMG,WADjC;AAEA,WAAOJ,GAAP;AACD;;AAEDW,WAAS;AACP,WAAO,KAAKJ,GAAL,OAAeN,MAAME,IAA5B;AACD;;AAEDS,iBAAe;AACb,WAAO,KAAKL,GAAL,OAAeN,MAAMC,UAA5B;AACD;;AAEDW,kBAAgB;AACd,WAAO,KAAKN,GAAL,OAAeN,MAAMG,WAA5B;AACD;AAjB+C,C;kBAA7BC,G","file":"env.js","sourcesContent":["import ServiceInterface from './interface';\n\nlet env = null;\nexport const TYPES = {\n PRODUCTION: 'production',\n TEST: 'test',\n DEVELOPMENT: 'development'\n};\n\nexport default class Env extends ServiceInterface {\n get() {\n env = [TYPES.PRODUCTION, TYPES.TEST, TYPES.DEVELOPMENT].indexOf(process.env.NODE_ENV) > -1\n ? process.env.NODE_ENV : TYPES.DEVELOPMENT;\n return env;\n }\n\n isTest() {\n return this.get() === TYPES.TEST;\n }\n\n isProduction() {\n return this.get() === TYPES.PRODUCTION;\n }\n\n isDevelopment() {\n return this.get() === TYPES.DEVELOPMENT;\n }\n}\n"]}
|
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = undefined;
|
|
7
|
-
|
|
8
|
-
var _dec, _class;
|
|
9
|
-
|
|
10
|
-
var _constitute = require('constitute');
|
|
11
|
-
|
|
12
|
-
var _events = require('events');
|
|
13
|
-
|
|
14
|
-
var _events2 = _interopRequireDefault(_events);
|
|
15
|
-
|
|
16
|
-
var _camelCase = require('lodash/camelCase');
|
|
17
|
-
|
|
18
|
-
var _camelCase2 = _interopRequireDefault(_camelCase);
|
|
19
|
-
|
|
20
|
-
var _exceptions = require('../exceptions');
|
|
21
|
-
|
|
22
|
-
var _logger = require('./logger');
|
|
23
|
-
|
|
24
|
-
var _logger2 = _interopRequireDefault(_logger);
|
|
25
|
-
|
|
26
|
-
var _interface = require('./interface');
|
|
27
|
-
|
|
28
|
-
var _interface2 = _interopRequireDefault(_interface);
|
|
29
|
-
|
|
30
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
31
|
-
|
|
32
|
-
//eslint-disable-line new-cap
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* A strict version of EventEmitter
|
|
37
|
-
* 1. listener must be a standard class
|
|
38
|
-
* 2. unregistered event not allow to emit
|
|
39
|
-
* 3. all events register and trigger will be recorded
|
|
40
|
-
*/
|
|
41
|
-
let EventManager = (_dec = (0, _constitute.Dependencies)(_logger2.default), _dec(_class = class EventManager extends _interface2.default {
|
|
42
|
-
constructor(logger) {
|
|
43
|
-
super();
|
|
44
|
-
this.logger = logger;
|
|
45
|
-
this.emitter = new _events2.default();
|
|
46
|
-
this.events = new Set();
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
getProto() {
|
|
50
|
-
return _events2.default;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
getAllowEvents() {
|
|
54
|
-
return this.events;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
getEmitter() {
|
|
58
|
-
//TODO: 屏蔽写入
|
|
59
|
-
return this.emitter;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* Allow to register a class such like
|
|
64
|
-
* class Foo { get prefix(){ return 'foo'} get actions() { return ['bar']} }
|
|
65
|
-
* @param ListenerClass
|
|
66
|
-
* @returns {EventManager}
|
|
67
|
-
*/
|
|
68
|
-
addListener(ListenerClass) {
|
|
69
|
-
if (typeof ListenerClass !== 'function') {
|
|
70
|
-
throw new _exceptions.RuntimeException('Not a standard listener input');
|
|
71
|
-
}
|
|
72
|
-
const listener = new ListenerClass();
|
|
73
|
-
const { prefix, actions } = listener;
|
|
74
|
-
if (!prefix || !actions) {
|
|
75
|
-
throw new _exceptions.RuntimeException('Not a standard listener input');
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
const events = {};
|
|
79
|
-
const eventsCount = this.events.size;
|
|
80
|
-
for (const action of actions) {
|
|
81
|
-
events[[prefix, action, 'before'].join(':')] = (0, _camelCase2.default)(['before', action].join('_'));
|
|
82
|
-
events[[prefix, action, 'after'].join(':')] = (0, _camelCase2.default)(['after', action].join('_'));
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
//TODO: 用Set保存注册的事件
|
|
86
|
-
for (const [eventName, callback] of Object.entries(events)) {
|
|
87
|
-
this.events.add(eventName);
|
|
88
|
-
if (Reflect.has(listener, callback) === false) {
|
|
89
|
-
continue;
|
|
90
|
-
}
|
|
91
|
-
this.emitter.addListener(eventName, listener[callback]);
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
if (eventsCount + Object.keys(events).length !== this.events.size) {
|
|
95
|
-
throw new _exceptions.RuntimeException('Repeated event name has been registered, please check');
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
// this.logger.debug('Registered events', this.emitter.eventNames());
|
|
99
|
-
return this;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
emit(eventName, callback) {
|
|
103
|
-
if (!this.events.has(eventName)) {
|
|
104
|
-
throw new _exceptions.RuntimeException(`Event ${eventName} not registered yet`);
|
|
105
|
-
}
|
|
106
|
-
return this.emitter.emit(eventName, callback);
|
|
107
|
-
}
|
|
108
|
-
}) || _class);
|
|
109
|
-
exports.default = EventManager;
|
|
110
|
-
//# sourceMappingURL=event_manager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/services/event_manager.js"],"names":["EventManager","Logger","ServiceInterface","constructor","logger","emitter","EventEmitter","events","Set","getProto","getAllowEvents","getEmitter","addListener","ListenerClass","RuntimeException","listener","prefix","actions","eventsCount","size","action","join","eventName","callback","Object","entries","add","Reflect","has","keys","length","emit"],"mappings":";;;;;;;;;AAAA;;AACA;;;;AACA;;;;AACA;;AACA;;;;AACA;;;;;;AAQsB;;;AANtB;;;;;;IAOqBA,Y,WADpB,8BAAaC,gBAAb,C,gBACc,MAAMD,YAAN,SAA2BE,mBAA3B,CAA4C;AACzDC,cAAYC,MAAZ,EAAoB;AAClB;AACA,SAAKA,MAAL,GAAcA,MAAd;AACA,SAAKC,OAAL,GAAe,IAAIC,gBAAJ,EAAf;AACA,SAAKC,MAAL,GAAc,IAAIC,GAAJ,EAAd;AACD;;AAEDC,aAAW;AACT,WAAOH,gBAAP;AACD;;AAEDI,mBAAiB;AACf,WAAO,KAAKH,MAAZ;AACD;;AAEDI,eAAa;AACX;AACA,WAAO,KAAKN,OAAZ;AACD;;AAED;;;;;;AAMAO,cAAYC,aAAZ,EAA2B;AACzB,QAAI,OAAOA,aAAP,KAAyB,UAA7B,EAAyC;AACvC,YAAM,IAAIC,4BAAJ,CAAqB,+BAArB,CAAN;AACD;AACD,UAAMC,WAAW,IAAIF,aAAJ,EAAjB;AACA,UAAM,EAAEG,MAAF,EAAUC,OAAV,KAAsBF,QAA5B;AACA,QAAI,CAACC,MAAD,IAAW,CAACC,OAAhB,EAAyB;AACvB,YAAM,IAAIH,4BAAJ,CAAqB,+BAArB,CAAN;AACD;;AAED,UAAMP,SAAS,EAAf;AACA,UAAMW,cAAc,KAAKX,MAAL,CAAYY,IAAhC;AACA,SAAK,MAAMC,MAAX,IAAqBH,OAArB,EAA8B;AAC5BV,aAAO,CAACS,MAAD,EAASI,MAAT,EAAiB,QAAjB,EAA2BC,IAA3B,CAAgC,GAAhC,CAAP,IAA+C,yBAAU,CAAC,QAAD,EAAWD,MAAX,EAAmBC,IAAnB,CAAwB,GAAxB,CAAV,CAA/C;AACAd,aAAO,CAACS,MAAD,EAASI,MAAT,EAAiB,OAAjB,EAA0BC,IAA1B,CAA+B,GAA/B,CAAP,IAA8C,yBAAU,CAAC,OAAD,EAAUD,MAAV,EAAkBC,IAAlB,CAAuB,GAAvB,CAAV,CAA9C;AACD;;AAED;AACA,SAAK,MAAM,CAACC,SAAD,EAAYC,QAAZ,CAAX,IAAoCC,OAAOC,OAAP,CAAelB,MAAf,CAApC,EAA4D;AAC1D,WAAKA,MAAL,CAAYmB,GAAZ,CAAgBJ,SAAhB;AACA,UAAIK,QAAQC,GAAR,CAAYb,QAAZ,EAAsBQ,QAAtB,MAAoC,KAAxC,EAA+C;AAC7C;AACD;AACD,WAAKlB,OAAL,CAAaO,WAAb,CAAyBU,SAAzB,EAAoCP,SAASQ,QAAT,CAApC;AACD;;AAED,QAAIL,cAAcM,OAAOK,IAAP,CAAYtB,MAAZ,EAAoBuB,MAAlC,KAA6C,KAAKvB,MAAL,CAAYY,IAA7D,EAAmE;AACjE,YAAM,IAAIL,4BAAJ,CAAqB,uDAArB,CAAN;AACD;;AAED;AACA,WAAO,IAAP;AACD;;AAEDiB,OAAKT,SAAL,EAAgBC,QAAhB,EAA0B;AACxB,QAAI,CAAC,KAAKhB,MAAL,CAAYqB,GAAZ,CAAgBN,SAAhB,CAAL,EAAiC;AAC/B,YAAM,IAAIR,4BAAJ,CAAsB,SAAQQ,SAAU,qBAAxC,CAAN;AACD;AACD,WAAO,KAAKjB,OAAL,CAAa0B,IAAb,CAAkBT,SAAlB,EAA6BC,QAA7B,CAAP;AACD;AAlEwD,C;kBAAtCvB,Y","file":"event_manager.js","sourcesContent":["import { Dependencies } from 'constitute';\nimport EventEmitter from 'events';\nimport camelCase from 'lodash/camelCase';\nimport { RuntimeException } from '../exceptions';\nimport Logger from './logger';\nimport ServiceInterface from './interface';\n\n/**\n * A strict version of EventEmitter\n * 1. listener must be a standard class\n * 2. unregistered event not allow to emit\n * 3. all events register and trigger will be recorded\n */\n@Dependencies(Logger) //eslint-disable-line new-cap\nexport default class EventManager extends ServiceInterface {\n constructor(logger) {\n super();\n this.logger = logger;\n this.emitter = new EventEmitter();\n this.events = new Set();\n }\n\n getProto() {\n return EventEmitter;\n }\n\n getAllowEvents() {\n return this.events;\n }\n\n getEmitter() {\n //TODO: 屏蔽写入\n return this.emitter;\n }\n\n /**\n * Allow to register a class such like\n * class Foo { get prefix(){ return 'foo'} get actions() { return ['bar']} }\n * @param ListenerClass\n * @returns {EventManager}\n */\n addListener(ListenerClass) {\n if (typeof ListenerClass !== 'function') {\n throw new RuntimeException('Not a standard listener input');\n }\n const listener = new ListenerClass();\n const { prefix, actions } = listener;\n if (!prefix || !actions) {\n throw new RuntimeException('Not a standard listener input');\n }\n\n const events = {};\n const eventsCount = this.events.size;\n for (const action of actions) {\n events[[prefix, action, 'before'].join(':')] = camelCase(['before', action].join('_'));\n events[[prefix, action, 'after'].join(':')] = camelCase(['after', action].join('_'));\n }\n\n //TODO: 用Set保存注册的事件\n for (const [eventName, callback] of Object.entries(events)) {\n this.events.add(eventName);\n if (Reflect.has(listener, callback) === false) {\n continue;\n }\n this.emitter.addListener(eventName, listener[callback]);\n }\n\n if (eventsCount + Object.keys(events).length !== this.events.size) {\n throw new RuntimeException('Repeated event name has been registered, please check');\n }\n\n // this.logger.debug('Registered events', this.emitter.eventNames());\n return this;\n }\n\n emit(eventName, callback) {\n if (!this.events.has(eventName)) {\n throw new RuntimeException(`Event ${eventName} not registered yet`);\n }\n return this.emitter.emit(eventName, callback);\n }\n}\n"]}
|