evaengine 0.11.2 → 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/redis.js
DELETED
|
@@ -1,77 +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 _ioredis = require('ioredis');
|
|
11
|
-
|
|
12
|
-
var _ioredis2 = _interopRequireDefault(_ioredis);
|
|
13
|
-
|
|
14
|
-
var _constitute = require('constitute');
|
|
15
|
-
|
|
16
|
-
var _config = require('./config');
|
|
17
|
-
|
|
18
|
-
var _config2 = _interopRequireDefault(_config);
|
|
19
|
-
|
|
20
|
-
var _interface = require('./interface');
|
|
21
|
-
|
|
22
|
-
var _interface2 = _interopRequireDefault(_interface);
|
|
23
|
-
|
|
24
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
25
|
-
|
|
26
|
-
let redisClient = null;
|
|
27
|
-
|
|
28
|
-
//eslint-disable-line new-cap
|
|
29
|
-
let Redis = (_dec = (0, _constitute.Dependencies)(_config2.default), _dec(_class = class Redis extends _interface2.default {
|
|
30
|
-
/**
|
|
31
|
-
* @param config Config
|
|
32
|
-
*/
|
|
33
|
-
constructor(config) {
|
|
34
|
-
super();
|
|
35
|
-
this.config = config;
|
|
36
|
-
this.options = null;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
getProto() {
|
|
40
|
-
return _ioredis2.default;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
getRedis() {
|
|
44
|
-
return _ioredis2.default;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
setOptions(options) {
|
|
48
|
-
this.options = options;
|
|
49
|
-
return this;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
isConnected() {
|
|
53
|
-
return redisClient !== null;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
cleanup() {
|
|
57
|
-
return this.getInstance().end();
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* @returns {Ioredis}
|
|
62
|
-
*/
|
|
63
|
-
getInstance() {
|
|
64
|
-
if (redisClient) {
|
|
65
|
-
return redisClient;
|
|
66
|
-
}
|
|
67
|
-
redisClient = new _ioredis2.default(Object.assign({
|
|
68
|
-
enableOfflineQueue: true //make redis connect failings throw error
|
|
69
|
-
}, this.options || this.config.get('redis')));
|
|
70
|
-
redisClient.on('error', e => {
|
|
71
|
-
throw e;
|
|
72
|
-
});
|
|
73
|
-
return redisClient;
|
|
74
|
-
}
|
|
75
|
-
}) || _class);
|
|
76
|
-
exports.default = Redis;
|
|
77
|
-
//# sourceMappingURL=redis.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/services/redis.js"],"names":["redisClient","Redis","Config","ServiceInterface","constructor","config","options","getProto","Ioredis","getRedis","setOptions","isConnected","cleanup","getInstance","end","Object","assign","enableOfflineQueue","get","on","e"],"mappings":";;;;;;;;;AAAA;;;;AACA;;AACA;;;;AACA;;;;;;AAEA,IAAIA,cAAc,IAAlB;;AAEsB;IACDC,K,WADpB,8BAAaC,gBAAb,C,gBACc,MAAMD,KAAN,SAAoBE,mBAApB,CAAqC;AAClD;;;AAGAC,cAAYC,MAAZ,EAAoB;AAClB;AACA,SAAKA,MAAL,GAAcA,MAAd;AACA,SAAKC,OAAL,GAAe,IAAf;AACD;;AAEDC,aAAW;AACT,WAAOC,iBAAP;AACD;;AAEDC,aAAW;AACT,WAAOD,iBAAP;AACD;;AAEDE,aAAWJ,OAAX,EAAoB;AAClB,SAAKA,OAAL,GAAeA,OAAf;AACA,WAAO,IAAP;AACD;;AAEDK,gBAAc;AACZ,WAAOX,gBAAgB,IAAvB;AACD;;AAEDY,YAAU;AACR,WAAO,KAAKC,WAAL,GAAmBC,GAAnB,EAAP;AACD;;AAED;;;AAGAD,gBAAc;AACZ,QAAIb,WAAJ,EAAiB;AACf,aAAOA,WAAP;AACD;AACDA,kBAAc,IAAIQ,iBAAJ,CAAYO,OAAOC,MAAP,CAAc;AACtCC,0BAAoB,IADkB,CACb;AADa,KAAd,EAEvB,KAAKX,OAAL,IAAgB,KAAKD,MAAL,CAAYa,GAAZ,CAAgB,OAAhB,CAFO,CAAZ,CAAd;AAGAlB,gBAAYmB,EAAZ,CAAe,OAAf,EAAyBC,CAAD,IAAO;AAC7B,YAAMA,CAAN;AACD,KAFD;AAGA,WAAOpB,WAAP;AACD;AA7CiD,C;kBAA/BC,K","file":"redis.js","sourcesContent":["import Ioredis from 'ioredis';\nimport { Dependencies } from 'constitute';\nimport Config from './config';\nimport ServiceInterface from './interface';\n\nlet redisClient = null;\n\n@Dependencies(Config) //eslint-disable-line new-cap\nexport default class Redis extends ServiceInterface {\n /**\n * @param config Config\n */\n constructor(config) {\n super();\n this.config = config;\n this.options = null;\n }\n\n getProto() {\n return Ioredis;\n }\n\n getRedis() {\n return Ioredis;\n }\n\n setOptions(options) {\n this.options = options;\n return this;\n }\n\n isConnected() {\n return redisClient !== null;\n }\n\n cleanup() {\n return this.getInstance().end();\n }\n\n /**\n * @returns {Ioredis}\n */\n getInstance() {\n if (redisClient) {\n return redisClient;\n }\n redisClient = new Ioredis(Object.assign({\n enableOfflineQueue: true //make redis connect failings throw error\n }, this.options || this.config.get('redis')));\n redisClient.on('error', (e) => {\n throw e;\n });\n return redisClient;\n }\n}\n\n"]}
|
|
@@ -1,136 +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 _http_client = require('./http_client');
|
|
13
|
-
|
|
14
|
-
var _http_client2 = _interopRequireDefault(_http_client);
|
|
15
|
-
|
|
16
|
-
var _namespace = require('./namespace');
|
|
17
|
-
|
|
18
|
-
var _namespace2 = _interopRequireDefault(_namespace);
|
|
19
|
-
|
|
20
|
-
var _exceptions = require('../exceptions');
|
|
21
|
-
|
|
22
|
-
var _interface = require('./interface');
|
|
23
|
-
|
|
24
|
-
var _interface2 = _interopRequireDefault(_interface);
|
|
25
|
-
|
|
26
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
27
|
-
|
|
28
|
-
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"); }); }; }
|
|
29
|
-
|
|
30
|
-
//eslint-disable-line new-cap
|
|
31
|
-
let RestClient = (_dec = (0, _constitute.Dependencies)(_http_client2.default, _namespace2.default), _dec(_class = class RestClient extends _interface2.default {
|
|
32
|
-
/**
|
|
33
|
-
* @param {HttpClient} client
|
|
34
|
-
* @param {Namespace} ns
|
|
35
|
-
*/
|
|
36
|
-
constructor(client, ns) {
|
|
37
|
-
super();
|
|
38
|
-
this.client = client;
|
|
39
|
-
this.ns = ns;
|
|
40
|
-
this.baseUrl = null;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
setBaseUrl(baseUrl) {
|
|
44
|
-
this.baseUrl = baseUrl;
|
|
45
|
-
return this;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
getBaseUrl() {
|
|
49
|
-
return this.baseUrl;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
getProto() {
|
|
53
|
-
return this.client.getProto();
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
getInstance() {
|
|
57
|
-
return this.client.getInstance();
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
populateTrace(params) {
|
|
61
|
-
const {
|
|
62
|
-
traceId, spanId, sampled
|
|
63
|
-
} = this.ns.get('tracer') || {};
|
|
64
|
-
if (!traceId || !spanId) {
|
|
65
|
-
return params;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
if (!params.headers) {
|
|
69
|
-
Object.assign(params, { headers: {} });
|
|
70
|
-
}
|
|
71
|
-
Object.assign(params.headers, {
|
|
72
|
-
'X-B3-TraceId': traceId,
|
|
73
|
-
'X-B3-SpanId': spanId,
|
|
74
|
-
'X-B3-Sampled': sampled
|
|
75
|
-
});
|
|
76
|
-
return params;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
saveToTracer(headers) {
|
|
80
|
-
if (!headers || Object.keys(headers).length < 1) {
|
|
81
|
-
return;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
const tracer = this.ns.get('tracer');
|
|
85
|
-
if (!tracer) {
|
|
86
|
-
return;
|
|
87
|
-
}
|
|
88
|
-
Object.entries(headers).forEach(([key, value]) => {
|
|
89
|
-
if (key.startsWith('x-debug-')) {
|
|
90
|
-
tracer.debug[key] = value;
|
|
91
|
-
}
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
rawRequest(params) {
|
|
96
|
-
if (this.baseUrl) {
|
|
97
|
-
Object.assign(params, { url: this.baseUrl + (params.url || params.uri) });
|
|
98
|
-
if (params.uri) {
|
|
99
|
-
delete params.uri; //eslint-disable-line no-param-reassign
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
return this.client.getInstance()(this.populateTrace(params));
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
request(params) {
|
|
106
|
-
var _this = this;
|
|
107
|
-
|
|
108
|
-
return _asyncToGenerator(function* () {
|
|
109
|
-
if (_this.baseUrl) {
|
|
110
|
-
Object.assign(params, {
|
|
111
|
-
url: _this.baseUrl + (params.url || params.uri)
|
|
112
|
-
});
|
|
113
|
-
if (params.uri) {
|
|
114
|
-
delete params.uri; //eslint-disable-line no-param-reassign
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
try {
|
|
118
|
-
const { headers, body } = yield _this.client.getInstance()(Object.assign(_this.populateTrace(params), {
|
|
119
|
-
json: true,
|
|
120
|
-
resolveWithFullResponse: true
|
|
121
|
-
}));
|
|
122
|
-
_this.saveToTracer(headers);
|
|
123
|
-
return body;
|
|
124
|
-
} catch (e) {
|
|
125
|
-
//FIXME TypeError无法被记录?
|
|
126
|
-
const { statusCode } = e;
|
|
127
|
-
if (statusCode && statusCode >= 400 && statusCode < 500) {
|
|
128
|
-
throw new _exceptions.RestServiceLogicException(e);
|
|
129
|
-
}
|
|
130
|
-
throw new _exceptions.RestServiceIOException(e);
|
|
131
|
-
}
|
|
132
|
-
})();
|
|
133
|
-
}
|
|
134
|
-
}) || _class);
|
|
135
|
-
exports.default = RestClient;
|
|
136
|
-
//# sourceMappingURL=rest_client.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/services/rest_client.js"],"names":["RestClient","HttpClient","Namespace","ServiceInterface","constructor","client","ns","baseUrl","setBaseUrl","getBaseUrl","getProto","getInstance","populateTrace","params","traceId","spanId","sampled","get","headers","Object","assign","saveToTracer","keys","length","tracer","entries","forEach","key","value","startsWith","debug","rawRequest","url","uri","request","body","json","resolveWithFullResponse","e","statusCode","RestServiceLogicException","RestServiceIOException"],"mappings":"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","file":"rest_client.js","sourcesContent":["import { Dependencies } from 'constitute';\nimport HttpClient from './http_client';\nimport Namespace from './namespace';\nimport { RestServiceLogicException, RestServiceIOException } from '../exceptions';\nimport ServiceInterface from './interface';\n\n@Dependencies(HttpClient, Namespace) //eslint-disable-line new-cap\nexport default class RestClient extends ServiceInterface {\n /**\n * @param {HttpClient} client\n * @param {Namespace} ns\n */\n constructor(client, ns) {\n super();\n this.client = client;\n this.ns = ns;\n this.baseUrl = null;\n }\n\n setBaseUrl(baseUrl) {\n this.baseUrl = baseUrl;\n return this;\n }\n\n getBaseUrl() {\n return this.baseUrl;\n }\n\n getProto() {\n return this.client.getProto();\n }\n\n getInstance() {\n return this.client.getInstance();\n }\n\n populateTrace(params) {\n const {\n traceId, spanId, sampled\n } = this.ns.get('tracer') || {};\n if (!traceId || !spanId) {\n return params;\n }\n\n if (!params.headers) {\n Object.assign(params, { headers: {} });\n }\n Object.assign(params.headers, {\n 'X-B3-TraceId': traceId,\n 'X-B3-SpanId': spanId,\n 'X-B3-Sampled': sampled\n });\n return params;\n }\n\n saveToTracer(headers) {\n if (!headers || Object.keys(headers).length < 1) {\n return;\n }\n\n const tracer = this.ns.get('tracer');\n if (!tracer) {\n return;\n }\n Object.entries(headers).forEach(([key, value]) => {\n if (key.startsWith('x-debug-')) {\n tracer.debug[key] = value;\n }\n });\n }\n\n rawRequest(params) {\n if (this.baseUrl) {\n Object.assign(params, { url: this.baseUrl + (params.url || params.uri) });\n if (params.uri) {\n delete params.uri; //eslint-disable-line no-param-reassign\n }\n }\n return this.client.getInstance()(this.populateTrace(params));\n }\n\n async request(params) {\n if (this.baseUrl) {\n Object.assign(params, {\n url: this.baseUrl + (params.url || params.uri)\n });\n if (params.uri) {\n delete params.uri; //eslint-disable-line no-param-reassign\n }\n }\n try {\n const { headers, body } = await this.client.getInstance()(Object.assign(\n this.populateTrace(params),\n {\n json: true,\n resolveWithFullResponse: true\n }\n ));\n this.saveToTracer(headers);\n return body;\n } catch (e) {\n //FIXME TypeError无法被记录?\n const { statusCode } = e;\n if (statusCode && statusCode >= 400 && statusCode < 500) {\n throw new RestServiceLogicException(e);\n }\n throw new RestServiceIOException(e);\n }\n }\n}\n"]}
|