evaengine 0.11.2 → 1.0.1

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.
Files changed (141) hide show
  1. package/.ai/analysis.md +657 -0
  2. package/.ai/architecture/runtime.md +504 -0
  3. package/.ai/contracts/public-api.md +447 -0
  4. package/.ai/external-project-guide.md +248 -0
  5. package/.ai/vision.md +314 -0
  6. package/README.md +51 -62
  7. package/bin/engine +15 -21
  8. package/index.js +2 -18
  9. package/package.json +60 -64
  10. package/src/commands/index.js +12 -0
  11. package/{lib → src}/commands/interface.js +5 -11
  12. package/src/commands/make_entity.js +490 -0
  13. package/src/commands/tramp.js +34 -0
  14. package/{lib → src}/config/index.js +7 -9
  15. package/{lib → src}/di.js +11 -26
  16. package/src/engine.js +551 -0
  17. package/{lib → src}/entities/index.js +72 -82
  18. package/{lib → src}/exceptions/index.js +71 -92
  19. package/src/index.js +57 -0
  20. package/src/middlewares/auth.js +67 -0
  21. package/src/middlewares/auth_kong.js +28 -0
  22. package/src/middlewares/debug.js +88 -0
  23. package/src/middlewares/index.js +18 -0
  24. package/src/middlewares/providers.js +73 -0
  25. package/src/middlewares/session.js +58 -0
  26. package/{lib → src}/middlewares/trace.js +74 -86
  27. package/src/middlewares/validator.js +50 -0
  28. package/src/middlewares/view_cache.js +127 -0
  29. package/{lib → src}/services/cache.js +45 -56
  30. package/src/services/config.js +111 -0
  31. package/src/services/env.js +28 -0
  32. package/src/services/event_manager.js +84 -0
  33. package/src/services/http_client.js +160 -0
  34. package/src/services/index.js +27 -0
  35. package/src/services/interface.js +5 -0
  36. package/src/services/joi.js +13 -0
  37. package/src/services/jwt_token.js +89 -0
  38. package/src/services/jwt_token_kong.js +75 -0
  39. package/src/services/logger.js +148 -0
  40. package/src/services/namespace.js +176 -0
  41. package/src/services/now.js +49 -0
  42. package/src/services/providers.js +158 -0
  43. package/src/services/redis.js +55 -0
  44. package/src/services/rest_client.js +112 -0
  45. package/src/swagger/index.js +668 -0
  46. package/{lib → src}/utils/api_scaffold.js +26 -39
  47. package/src/utils/case_converter.js +33 -0
  48. package/src/utils/crc32.js +44 -0
  49. package/src/utils/datetime.js +13 -0
  50. package/src/utils/host.js +39 -0
  51. package/src/utils/index.js +35 -0
  52. package/{lib → src}/utils/pagination.js +22 -31
  53. package/src/utils/random.js +23 -0
  54. package/{lib → src}/utils/smart_query.js +27 -27
  55. package/src/utils/test.js +48 -0
  56. package/src/utils/wrapper.js +8 -0
  57. package/bin/engine-babel +0 -38
  58. package/lib/commands/index.js +0 -25
  59. package/lib/commands/index.js.map +0 -1
  60. package/lib/commands/interface.js.map +0 -1
  61. package/lib/commands/make_entity.js +0 -549
  62. package/lib/commands/make_entity.js.map +0 -1
  63. package/lib/commands/tramp.js +0 -53
  64. package/lib/commands/tramp.js.map +0 -1
  65. package/lib/config/index.js.map +0 -1
  66. package/lib/di.js.map +0 -1
  67. package/lib/engine.js +0 -558
  68. package/lib/engine.js.map +0 -1
  69. package/lib/entities/index.js.map +0 -1
  70. package/lib/exceptions/index.js.map +0 -1
  71. package/lib/index.js +0 -105
  72. package/lib/index.js.map +0 -1
  73. package/lib/middlewares/auth.js +0 -97
  74. package/lib/middlewares/auth.js.map +0 -1
  75. package/lib/middlewares/auth_kong.js +0 -48
  76. package/lib/middlewares/auth_kong.js.map +0 -1
  77. package/lib/middlewares/debug.js +0 -68
  78. package/lib/middlewares/debug.js.map +0 -1
  79. package/lib/middlewares/index.js +0 -45
  80. package/lib/middlewares/index.js.map +0 -1
  81. package/lib/middlewares/providers.js +0 -102
  82. package/lib/middlewares/providers.js.map +0 -1
  83. package/lib/middlewares/session.js +0 -76
  84. package/lib/middlewares/session.js.map +0 -1
  85. package/lib/middlewares/trace.js.map +0 -1
  86. package/lib/middlewares/validator.js +0 -71
  87. package/lib/middlewares/validator.js.map +0 -1
  88. package/lib/middlewares/view_cache.js +0 -160
  89. package/lib/middlewares/view_cache.js.map +0 -1
  90. package/lib/services/cache.js.map +0 -1
  91. package/lib/services/config.js +0 -140
  92. package/lib/services/config.js.map +0 -1
  93. package/lib/services/env.js +0 -40
  94. package/lib/services/env.js.map +0 -1
  95. package/lib/services/event_manager.js +0 -110
  96. package/lib/services/event_manager.js.map +0 -1
  97. package/lib/services/http_client.js +0 -178
  98. package/lib/services/http_client.js.map +0 -1
  99. package/lib/services/index.js +0 -70
  100. package/lib/services/index.js.map +0 -1
  101. package/lib/services/interface.js +0 -12
  102. package/lib/services/interface.js.map +0 -1
  103. package/lib/services/joi.js +0 -28
  104. package/lib/services/joi.js.map +0 -1
  105. package/lib/services/jwt_token.js +0 -120
  106. package/lib/services/jwt_token.js.map +0 -1
  107. package/lib/services/jwt_token_kong.js +0 -111
  108. package/lib/services/jwt_token_kong.js.map +0 -1
  109. package/lib/services/logger.js +0 -172
  110. package/lib/services/logger.js.map +0 -1
  111. package/lib/services/namespace.js +0 -188
  112. package/lib/services/namespace.js.map +0 -1
  113. package/lib/services/now.js +0 -69
  114. package/lib/services/now.js.map +0 -1
  115. package/lib/services/providers.js +0 -195
  116. package/lib/services/providers.js.map +0 -1
  117. package/lib/services/redis.js +0 -77
  118. package/lib/services/redis.js.map +0 -1
  119. package/lib/services/rest_client.js +0 -136
  120. package/lib/services/rest_client.js.map +0 -1
  121. package/lib/swagger/index.js +0 -684
  122. package/lib/swagger/index.js.map +0 -1
  123. package/lib/utils/api_scaffold.js.map +0 -1
  124. package/lib/utils/case_converter.js +0 -48
  125. package/lib/utils/case_converter.js.map +0 -1
  126. package/lib/utils/crc32.js +0 -22
  127. package/lib/utils/crc32.js.map +0 -1
  128. package/lib/utils/datetime.js +0 -21
  129. package/lib/utils/datetime.js.map +0 -1
  130. package/lib/utils/host.js +0 -48
  131. package/lib/utils/host.js.map +0 -1
  132. package/lib/utils/index.js +0 -61
  133. package/lib/utils/index.js.map +0 -1
  134. package/lib/utils/pagination.js.map +0 -1
  135. package/lib/utils/random.js +0 -33
  136. package/lib/utils/random.js.map +0 -1
  137. package/lib/utils/smart_query.js.map +0 -1
  138. package/lib/utils/test.js +0 -62
  139. package/lib/utils/test.js.map +0 -1
  140. package/lib/utils/wrapper.js +0 -9
  141. package/lib/utils/wrapper.js.map +0 -1
@@ -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"]}
@@ -1,178 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = exports.requestDebug = exports.deepClone = undefined;
7
-
8
- var _dec, _class;
9
-
10
- var _constitute = require('constitute');
11
-
12
- var _requestPromiseNative = require('request-promise-native');
13
-
14
- var _requestPromiseNative2 = _interopRequireDefault(_requestPromiseNative);
15
-
16
- var _config = require('./config');
17
-
18
- var _config2 = _interopRequireDefault(_config);
19
-
20
- var _logger = require('./logger');
21
-
22
- var _logger2 = _interopRequireDefault(_logger);
23
-
24
- var _exceptions = require('../exceptions');
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
- 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"); }); }; }
33
-
34
- const deepClone = exports.deepClone = obj => JSON.parse(JSON.stringify(obj));
35
-
36
- const TOO_LONG_BODY = '____TLDR____';
37
-
38
- let debugFlag = false;
39
- /* eslint-disable */
40
- //Mod version of https://github.com/request/request-debug
41
- const requestDebug = exports.requestDebug = (logger, maxBodyLength = process.env.MAX_REQUEST_DEBUG_BODY || 3000) => {
42
- if (debugFlag === true) {
43
- return;
44
- }
45
-
46
- let proto = {};
47
- let debugId = 0;
48
- if (_requestPromiseNative2.default.Request) {
49
- proto = _requestPromiseNative2.default.Request.prototype;
50
- } else if (_requestPromiseNative2.default.get && _requestPromiseNative2.default.post) {
51
- // The object returned by request.defaults() doesn't include the
52
- // Request property, so do this horrible thing to get at it. Per
53
- // Wikipedia, port 4 is unassigned.
54
- const req = (0, _requestPromiseNative2.default)('http://localhost:4').on('error', () => {});
55
- proto = req.constructor.prototype;
56
- } else {
57
- throw new Error('Pass the object returned by require("request") to this function.');
58
- }
59
- if (proto._initBeforeDebug) {
60
- return;
61
- }
62
-
63
- proto._initBeforeDebug = proto.init;
64
-
65
- const ignoreDebug = headers => {
66
- if (!headers || Object.keys(headers).length < 1) {
67
- return {};
68
- }
69
- return Object.keys(headers).filter(key => !key.startsWith('x-debug')).reduce((res, key) => (res[key] = headers[key], res), {});
70
- };
71
-
72
- proto.init = function () {
73
- if (this._debugId) {
74
- return;
75
- }
76
- this.on('request', function (req) {
77
- const data = {
78
- headers: deepClone(this.headers)
79
- };
80
- if (this.body) {
81
- data.body = maxBodyLength > 0 && this.body.toString().length < maxBodyLength ? this.body.toString('utf8') : TOO_LONG_BODY;
82
- }
83
-
84
- logger.verbose('[HTTP_REQUEST_%s] [%s %s] [REQ_HEADERS: %s] [REQ_BODY: %s]', this._debugId, this.method.toUpperCase(), this.uri.href, JSON.stringify(data.headers), data.body || '');
85
- }).on('response', function (res) {
86
- if (this.callback) {
87
- return;
88
- }
89
-
90
- const bodyLength = res.headers['content-length'] || (res.body ? res.body.toString().length : 0);
91
- logger.verbose('[HTTP_RESPONSE_%s] [%s %s] [%s] [RES_HEADERS: %s] [RES_BODY: %s]', this._debugId, this.method.toUpperCase(), this.uri.href, res.statusCode, JSON.stringify(ignoreDebug(res.headers)), bodyLength > maxBodyLength ? TOO_LONG_BODY : res.body || '');
92
- }).on('complete', function (res) {
93
- if (!this.callback) {
94
- return;
95
- }
96
-
97
- const bodyLength = res.headers['content-length'] || (res.body ? res.body.toString().length : 0);
98
- logger.verbose('[HTTP_RESPONSE_%s] [%s %s] [%s] [RES_HEADERS: %s] [RES_BODY: %s]', this._debugId, this.method.toUpperCase(), this.uri.href, res.statusCode, JSON.stringify(ignoreDebug(res.headers)), bodyLength > maxBodyLength ? TOO_LONG_BODY : res.body || '');
99
- }).on('redirect', function () {
100
-
101
- logger.verbose('[HTTP_REDIRECT_%s] [%s %s] [%s] [RES_HEADERS: %s] [RES_BODY: %s]', this._debugId, this.method.toUpperCase(), this.uri.href, this.response.statusCode, JSON.stringify(ignoreDebug(this.response.headers)), '');
102
- });
103
- this._debugId = ++debugId;
104
- return proto._initBeforeDebug.apply(this, arguments);
105
- };
106
-
107
- debugFlag = true;
108
- };
109
- /* eslint-enable */
110
-
111
- //eslint-disable-line new-cap
112
- let HttpClient = (_dec = (0, _constitute.Dependencies)(_config2.default, _logger2.default), _dec(_class = class HttpClient extends _interface2.default {
113
- /**
114
- * @param config {Config}
115
- * @param logger {Logger}
116
- */
117
- constructor(config, logger) {
118
- super();
119
- this.config = config.get();
120
- this.client = _requestPromiseNative2.default;
121
- requestDebug(logger);
122
- }
123
-
124
- getProto() {
125
- return _requestPromiseNative2.default;
126
- }
127
-
128
- getInstance() {
129
- return this.client;
130
- }
131
-
132
- request(params) {
133
- var _this = this;
134
-
135
- return _asyncToGenerator(function* () {
136
- try {
137
- return yield _this.client(params);
138
- } catch (e) {
139
- const { statusCode } = e;
140
- if (statusCode && statusCode >= 400 && statusCode < 500) {
141
- throw new _exceptions.HttpRequestLogicException(e);
142
- }
143
- throw new _exceptions.HttpRequestIOException(e);
144
- }
145
- })();
146
- }
147
-
148
- dumpRequest(req, asString = false) {
149
- const getBody = r => {
150
- if (r._json) {
151
- //eslint-disable-line no-underscore-dangle
152
- return r.body;
153
- }
154
- return r.form(r.formData).body;
155
- };
156
- const dump = {
157
- method: req.method,
158
- protocol: req.uri && req.uri.protocol === 'https:' ? 'https' : 'http',
159
- url: req.uri ? req.uri.href : null,
160
- headers: req.headers,
161
- body: req.req && (req._json || req.formData) //eslint-disable-line no-underscore-dangle
162
- ? getBody(req) : null
163
- };
164
- return asString === true ? JSON.stringify(dump) : dump;
165
- }
166
-
167
- dumpResponse(res, asString = false) {
168
- const dump = {
169
- statusCode: res.statusCode,
170
- statusMessage: res.statusMessage,
171
- headers: res.headers,
172
- body: res.body
173
- };
174
- return asString === true ? JSON.stringify(dump) : dump;
175
- }
176
- }) || _class);
177
- exports.default = HttpClient;
178
- //# sourceMappingURL=http_client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/services/http_client.js"],"names":["deepClone","obj","JSON","parse","stringify","TOO_LONG_BODY","debugFlag","requestDebug","logger","maxBodyLength","process","env","MAX_REQUEST_DEBUG_BODY","proto","debugId","request","Request","prototype","get","post","req","on","constructor","Error","_initBeforeDebug","init","ignoreDebug","headers","Object","keys","length","filter","key","startsWith","reduce","res","_debugId","data","body","toString","verbose","method","toUpperCase","uri","href","callback","bodyLength","statusCode","response","apply","arguments","HttpClient","Config","Logger","ServiceInterface","config","client","getProto","getInstance","params","e","HttpRequestLogicException","HttpRequestIOException","dumpRequest","asString","getBody","r","_json","form","formData","dump","protocol","url","dumpResponse","statusMessage"],"mappings":"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","file":"http_client.js","sourcesContent":["import { Dependencies } from 'constitute';\nimport request from 'request-promise-native';\nimport Config from './config';\nimport Logger from './logger';\nimport { HttpRequestLogicException, HttpRequestIOException } from '../exceptions';\nimport ServiceInterface from './interface';\n\nexport const deepClone = obj =>\n JSON.parse(JSON.stringify(obj));\n\nconst TOO_LONG_BODY = '____TLDR____';\n\nlet debugFlag = false;\n/* eslint-disable */\n//Mod version of https://github.com/request/request-debug\nexport const requestDebug = (logger, maxBodyLength = process.env.MAX_REQUEST_DEBUG_BODY || 3000) => {\n if (debugFlag === true) {\n return;\n }\n\n let proto = {};\n let debugId = 0;\n if (request.Request) {\n proto = request.Request.prototype;\n } else if (request.get && request.post) {\n // The object returned by request.defaults() doesn't include the\n // Request property, so do this horrible thing to get at it. Per\n // Wikipedia, port 4 is unassigned.\n const req = request('http://localhost:4').on('error', () => {\n });\n proto = req.constructor.prototype;\n } else {\n throw new Error('Pass the object returned by require(\"request\") to this function.');\n }\n if (proto._initBeforeDebug) {\n return;\n }\n\n proto._initBeforeDebug = proto.init;\n\n const ignoreDebug = (headers) => {\n if (!headers || Object.keys(headers).length < 1) {\n return {};\n }\n return Object.keys(headers)\n .filter(key => !key.startsWith('x-debug'))\n .reduce((res, key) => (res[key] = headers[key], res), {});\n };\n\n proto.init = function () {\n if (this._debugId) {\n return;\n }\n this.on('request', function (req) {\n const data = {\n headers: deepClone(this.headers)\n };\n if (this.body) {\n data.body = maxBodyLength > 0 && this.body.toString().length < maxBodyLength ? this.body.toString('utf8') : TOO_LONG_BODY;\n }\n\n logger.verbose('[HTTP_REQUEST_%s] [%s %s] [REQ_HEADERS: %s] [REQ_BODY: %s]', this._debugId,\n this.method.toUpperCase(), this.uri.href, JSON.stringify(data.headers), data.body || ''\n );\n }).on('response', function (res) {\n if (this.callback) {\n return;\n }\n\n const bodyLength = res.headers['content-length'] || (res.body ? res.body.toString().length : 0);\n logger.verbose('[HTTP_RESPONSE_%s] [%s %s] [%s] [RES_HEADERS: %s] [RES_BODY: %s]', this._debugId,\n this.method.toUpperCase(), this.uri.href, res.statusCode, JSON.stringify(ignoreDebug(res.headers)),\n bodyLength > maxBodyLength ? TOO_LONG_BODY : res.body || ''\n );\n }).on('complete', function (res) {\n if (!this.callback) {\n return;\n }\n\n const bodyLength = res.headers['content-length'] || (res.body ? res.body.toString().length : 0);\n logger.verbose('[HTTP_RESPONSE_%s] [%s %s] [%s] [RES_HEADERS: %s] [RES_BODY: %s]', this._debugId,\n this.method.toUpperCase(), this.uri.href, res.statusCode, JSON.stringify(ignoreDebug(res.headers)),\n bodyLength > maxBodyLength ? TOO_LONG_BODY : res.body || ''\n );\n }).on('redirect', function () {\n\n logger.verbose('[HTTP_REDIRECT_%s] [%s %s] [%s] [RES_HEADERS: %s] [RES_BODY: %s]', this._debugId,\n this.method.toUpperCase(), this.uri.href, this.response.statusCode, JSON.stringify(ignoreDebug(this.response.headers)), '');\n });\n this._debugId = ++debugId;\n return proto._initBeforeDebug.apply(this, arguments);\n };\n\n debugFlag = true;\n};\n/* eslint-enable */\n\n@Dependencies(Config, Logger) //eslint-disable-line new-cap\nexport default class HttpClient extends ServiceInterface {\n /**\n * @param config {Config}\n * @param logger {Logger}\n */\n constructor(config, logger) {\n super();\n this.config = config.get();\n this.client = request;\n requestDebug(logger);\n }\n\n getProto() {\n return request;\n }\n\n getInstance() {\n return this.client;\n }\n\n async request(params) {\n try {\n return await this.client(params);\n } catch (e) {\n const { statusCode } = e;\n if (statusCode && statusCode >= 400 && statusCode < 500) {\n throw new HttpRequestLogicException(e);\n }\n throw new HttpRequestIOException(e);\n }\n }\n\n dumpRequest(req, asString = false) {\n const getBody = (r) => {\n if (r._json) { //eslint-disable-line no-underscore-dangle\n return r.body;\n }\n return r.form(r.formData).body;\n };\n const dump = {\n method: req.method,\n protocol: req.uri && req.uri.protocol === 'https:' ? 'https' : 'http',\n url: req.uri ? req.uri.href : null,\n headers: req.headers,\n body: req.req && (req._json || req.formData) //eslint-disable-line no-underscore-dangle\n ? getBody(req) : null\n };\n return asString === true ? JSON.stringify(dump) : dump;\n }\n\n dumpResponse(res, asString = false) {\n const dump = {\n statusCode: res.statusCode,\n statusMessage: res.statusMessage,\n headers: res.headers,\n body: res.body\n };\n return asString === true ? JSON.stringify(dump) : dump;\n }\n}\n"]}
@@ -1,70 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.EventManager = exports.ValidatorBase = exports.Now = exports.Namespace = exports.RestClient = exports.Redis = exports.Logger = exports.JsonWebToken = exports.HttpClient = exports.Env = exports.Config = exports.Cache = undefined;
7
-
8
- var _cache = require('./cache');
9
-
10
- var _cache2 = _interopRequireDefault(_cache);
11
-
12
- var _config = require('./config');
13
-
14
- var _config2 = _interopRequireDefault(_config);
15
-
16
- var _env = require('./env');
17
-
18
- var _env2 = _interopRequireDefault(_env);
19
-
20
- var _http_client = require('./http_client');
21
-
22
- var _http_client2 = _interopRequireDefault(_http_client);
23
-
24
- var _jwt_token = require('./jwt_token');
25
-
26
- var _jwt_token2 = _interopRequireDefault(_jwt_token);
27
-
28
- var _logger = require('./logger');
29
-
30
- var _logger2 = _interopRequireDefault(_logger);
31
-
32
- var _redis = require('./redis');
33
-
34
- var _redis2 = _interopRequireDefault(_redis);
35
-
36
- var _rest_client = require('./rest_client');
37
-
38
- var _rest_client2 = _interopRequireDefault(_rest_client);
39
-
40
- var _namespace = require('./namespace');
41
-
42
- var _namespace2 = _interopRequireDefault(_namespace);
43
-
44
- var _now = require('./now');
45
-
46
- var _now2 = _interopRequireDefault(_now);
47
-
48
- var _joi = require('./joi');
49
-
50
- var _joi2 = _interopRequireDefault(_joi);
51
-
52
- var _event_manager = require('./event_manager');
53
-
54
- var _event_manager2 = _interopRequireDefault(_event_manager);
55
-
56
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
57
-
58
- exports.Cache = _cache2.default;
59
- exports.Config = _config2.default;
60
- exports.Env = _env2.default;
61
- exports.HttpClient = _http_client2.default;
62
- exports.JsonWebToken = _jwt_token2.default;
63
- exports.Logger = _logger2.default;
64
- exports.Redis = _redis2.default;
65
- exports.RestClient = _rest_client2.default;
66
- exports.Namespace = _namespace2.default;
67
- exports.Now = _now2.default;
68
- exports.ValidatorBase = _joi2.default;
69
- exports.EventManager = _event_manager2.default;
70
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/services/index.js"],"names":["Cache","Config","Env","HttpClient","JsonWebToken","Logger","Redis","RestClient","Namespace","Now","ValidatorBase","EventManager"],"mappings":";;;;;;;AAAA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;;;QAGEA,K,GAAAA,e;QACAC,M,GAAAA,gB;QACAC,G,GAAAA,a;QACAC,U,GAAAA,qB;QACAC,Y,GAAAA,mB;QACAC,M,GAAAA,gB;QACAC,K,GAAAA,e;QACAC,U,GAAAA,qB;QACAC,S,GAAAA,mB;QACAC,G,GAAAA,a;QACAC,a,GAAAA,a;QACAC,Y,GAAAA,uB","file":"index.js","sourcesContent":["import Cache from './cache';\nimport Config from './config';\nimport Env from './env';\nimport HttpClient from './http_client';\nimport JsonWebToken from './jwt_token';\nimport Logger from './logger';\nimport Redis from './redis';\nimport RestClient from './rest_client';\nimport Namespace from './namespace';\nimport Now from './now';\nimport ValidatorBase from './joi';\nimport EventManager from './event_manager';\n\nexport {\n Cache,\n Config,\n Env,\n HttpClient,\n JsonWebToken,\n Logger,\n Redis,\n RestClient,\n Namespace,\n Now,\n ValidatorBase,\n EventManager\n};\n"]}
@@ -1,12 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- let ServiceInterface = class ServiceInterface {
7
- getProto() {
8
- return {};
9
- }
10
- };
11
- exports.default = ServiceInterface;
12
- //# sourceMappingURL=interface.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/services/interface.js"],"names":["ServiceInterface","getProto"],"mappings":";;;;;IAAqBA,gB,GAAN,MAAMA,gBAAN,CAAuB;AACpCC,aAAW;AACT,WAAO,EAAP;AACD;AAHmC,C;kBAAjBD,gB","file":"interface.js","sourcesContent":["export default class ServiceInterface {\n getProto() {\n return {};\n }\n}\n"]}
@@ -1,28 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = undefined;
7
-
8
- var _joi = require('joi');
9
-
10
- var _joi2 = _interopRequireDefault(_joi);
11
-
12
- var _interface = require('./interface');
13
-
14
- var _interface2 = _interopRequireDefault(_interface);
15
-
16
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
-
18
- let ValidatorBase = class ValidatorBase extends _interface2.default {
19
- getProto() {
20
- return _joi2.default;
21
- }
22
-
23
- getJoi() {
24
- return _joi2.default;
25
- }
26
- };
27
- exports.default = ValidatorBase;
28
- //# sourceMappingURL=joi.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/services/joi.js"],"names":["ValidatorBase","ServiceInterface","getProto","Joi","getJoi"],"mappings":";;;;;;;AAAA;;;;AACA;;;;;;IAEqBA,a,GAAN,MAAMA,aAAN,SAA4BC,mBAA5B,CAA6C;AAC1DC,aAAW;AACT,WAAOC,aAAP;AACD;;AAEDC,WAAS;AACP,WAAOD,aAAP;AACD;AAPyD,C;kBAAvCH,a","file":"joi.js","sourcesContent":["import Joi from 'joi';\nimport ServiceInterface from './interface';\n\nexport default class ValidatorBase extends ServiceInterface {\n getProto() {\n return Joi;\n }\n\n getJoi() {\n return Joi;\n }\n}\n\n"]}
@@ -1,120 +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 _jwtSimple = require('jwt-simple');
13
-
14
- var _jwtSimple2 = _interopRequireDefault(_jwtSimple);
15
-
16
- var _config = require('./config');
17
-
18
- var _config2 = _interopRequireDefault(_config);
19
-
20
- var _redis = require('./redis');
21
-
22
- var _redis2 = _interopRequireDefault(_redis);
23
-
24
- var _interface = require('./interface');
25
-
26
- var _interface2 = _interopRequireDefault(_interface);
27
-
28
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
29
-
30
- 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"); }); }; }
31
-
32
- //eslint-disable-line new-cap
33
- let JsonWebToken = (_dec = (0, _constitute.Dependencies)(_config2.default, _redis2.default), _dec(_class = class JsonWebToken extends _interface2.default {
34
- /**
35
- * @param config {Config}
36
- * @param redis {Redis}
37
- */
38
- constructor(config, redis) {
39
- super();
40
- this.redis = redis.getInstance();
41
- this.config = config.get('token');
42
- }
43
-
44
- getProto() {
45
- return _jwtSimple2.default;
46
- }
47
-
48
- getRedis() {
49
- return this.redis;
50
- }
51
-
52
- getPrefix() {
53
- return this.config.prefix;
54
- }
55
-
56
- save(uid, item) {
57
- var _this = this;
58
-
59
- return _asyncToGenerator(function* () {
60
- const toSaveItem = Object.assign({ uid }, item);
61
- const tokenString = _this.encode(toSaveItem);
62
- const key = [_this.getPrefix(), uid, tokenString.split('.').pop()].join(':');
63
- //TODO 过期时间
64
- yield _this.getRedis().set(key, JSON.stringify(toSaveItem));
65
- return tokenString;
66
- })();
67
- }
68
-
69
- find(tokenString) {
70
- var _this2 = this;
71
-
72
- return _asyncToGenerator(function* () {
73
- if (!tokenString) {
74
- return { uid: null, expiredAt: 0 };
75
- }
76
- const parsedToken = _this2.decode(tokenString);
77
- if (!parsedToken || !{}.hasOwnProperty.call(parsedToken, 'uid')) {
78
- return { uid: null, expiredAt: 0 };
79
- }
80
- const key = [_this2.getPrefix(), parsedToken.uid, tokenString.split('.').pop()].join(':');
81
- const storedToken = yield _this2.redis.get(key);
82
- if (!storedToken) {
83
- return {
84
- uid: parsedToken.uid,
85
- expiredAt: 0
86
- };
87
- }
88
- return JSON.parse(storedToken);
89
- })();
90
- }
91
-
92
- clear(tokenString) {
93
- if (!tokenString) {
94
- return true;
95
- }
96
- const key = this.getRedisKey(tokenString);
97
- if (!key) {
98
- return true;
99
- }
100
- return this.redis.del(key);
101
- }
102
-
103
- getRedisKey(tokenString, groupOnly = false) {
104
- const parsedToken = this.decode(tokenString);
105
- if (!parsedToken || !{}.hasOwnProperty.call(parsedToken, 'uid')) {
106
- return '';
107
- }
108
- return groupOnly === true ? [this.getPrefix(), parsedToken.uid].join(':') : [this.getPrefix(), parsedToken.uid, tokenString.split('.').pop()].join(':');
109
- }
110
-
111
- encode(item, secret = this.config.secret) {
112
- return _jwtSimple2.default.encode(item, secret);
113
- }
114
-
115
- decode(str, secret = this.config.secret) {
116
- return _jwtSimple2.default.decode(str, secret);
117
- }
118
- }) || _class);
119
- exports.default = JsonWebToken;
120
- //# sourceMappingURL=jwt_token.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/services/jwt_token.js"],"names":["JsonWebToken","Config","Redis","ServiceInterface","constructor","config","redis","getInstance","get","getProto","jwt","getRedis","getPrefix","prefix","save","uid","item","toSaveItem","Object","assign","tokenString","encode","key","split","pop","join","set","JSON","stringify","find","expiredAt","parsedToken","decode","hasOwnProperty","call","storedToken","parse","clear","getRedisKey","del","groupOnly","secret","str"],"mappings":"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","file":"jwt_token.js","sourcesContent":["import { Dependencies } from 'constitute';\nimport jwt from 'jwt-simple';\nimport Config from './config';\nimport Redis from './redis';\nimport ServiceInterface from './interface';\n\n@Dependencies(Config, Redis) //eslint-disable-line new-cap\nexport default class JsonWebToken extends ServiceInterface {\n /**\n * @param config {Config}\n * @param redis {Redis}\n */\n constructor(config, redis) {\n super();\n this.redis = redis.getInstance();\n this.config = config.get('token');\n }\n\n getProto() {\n return jwt;\n }\n\n getRedis() {\n return this.redis;\n }\n\n getPrefix() {\n return this.config.prefix;\n }\n\n async save(uid, item) {\n const toSaveItem = Object.assign({ uid }, item);\n const tokenString = this.encode(toSaveItem);\n const key = [this.getPrefix(), uid, tokenString.split('.').pop()].join(':');\n //TODO 过期时间\n await this.getRedis().set(key, JSON.stringify(toSaveItem));\n return tokenString;\n }\n\n async find(tokenString) {\n if (!tokenString) {\n return { uid: null, expiredAt: 0 };\n }\n const parsedToken = this.decode(tokenString);\n if (!parsedToken || !{}.hasOwnProperty.call(parsedToken, 'uid')) {\n return { uid: null, expiredAt: 0 };\n }\n const key = [this.getPrefix(), parsedToken.uid, tokenString.split('.').pop()].join(':');\n const storedToken = await this.redis.get(key);\n if (!storedToken) {\n return {\n uid: parsedToken.uid,\n expiredAt: 0\n };\n }\n return JSON.parse(storedToken);\n }\n\n clear(tokenString) {\n if (!tokenString) {\n return true;\n }\n const key = this.getRedisKey(tokenString);\n if (!key) {\n return true;\n }\n return this.redis.del(key);\n }\n\n getRedisKey(tokenString, groupOnly = false) {\n const parsedToken = this.decode(tokenString);\n if (!parsedToken || !{}.hasOwnProperty.call(parsedToken, 'uid')) {\n return '';\n }\n return groupOnly === true ?\n [this.getPrefix(), parsedToken.uid].join(':') :\n [this.getPrefix(), parsedToken.uid, tokenString.split('.').pop()].join(':');\n }\n\n encode(item, secret = this.config.secret) {\n return jwt.encode(item, secret);\n }\n\n decode(str, secret = this.config.secret) {\n return jwt.decode(str, secret);\n }\n}\n"]}