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
|
@@ -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"]}
|
package/lib/services/index.js
DELETED
|
@@ -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 +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"]}
|
package/lib/services/joi.js
DELETED
|
@@ -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
|
package/lib/services/joi.js.map
DELETED
|
@@ -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"]}
|
|
@@ -1,111 +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 _lodash = require('lodash');
|
|
17
|
-
|
|
18
|
-
var _lodash2 = _interopRequireDefault(_lodash);
|
|
19
|
-
|
|
20
|
-
var _exceptions = require('../exceptions');
|
|
21
|
-
|
|
22
|
-
var _config = require('./config');
|
|
23
|
-
|
|
24
|
-
var _config2 = _interopRequireDefault(_config);
|
|
25
|
-
|
|
26
|
-
var _rest_client = require('../services/rest_client');
|
|
27
|
-
|
|
28
|
-
var _rest_client2 = _interopRequireDefault(_rest_client);
|
|
29
|
-
|
|
30
|
-
var _interface = require('./interface');
|
|
31
|
-
|
|
32
|
-
var _interface2 = _interopRequireDefault(_interface);
|
|
33
|
-
|
|
34
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
35
|
-
|
|
36
|
-
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"); }); }; }
|
|
37
|
-
|
|
38
|
-
//eslint-disable-line new-cap
|
|
39
|
-
let KongJsonWebToken = (_dec = (0, _constitute.Dependencies)(_config2.default, _rest_client2.default), _dec(_class = class KongJsonWebToken extends _interface2.default {
|
|
40
|
-
/**
|
|
41
|
-
* @param config {Config}
|
|
42
|
-
* @param restClient {RestClient}
|
|
43
|
-
*/
|
|
44
|
-
constructor(config, restClient) {
|
|
45
|
-
super();
|
|
46
|
-
this.restClient = restClient;
|
|
47
|
-
this.config = config.get('token');
|
|
48
|
-
if (!_lodash2.default.get(this.config, 'kong.endpoint')) {
|
|
49
|
-
throw new _exceptions.RuntimeException('config item `token.kong.endpoint` can not be null');
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
getProto() {
|
|
54
|
-
return _jwtSimple2.default;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
save(uid, item) {
|
|
58
|
-
var _this = this;
|
|
59
|
-
|
|
60
|
-
return _asyncToGenerator(function* () {
|
|
61
|
-
const toSaveItem = Object.assign({ uid }, item);
|
|
62
|
-
const tokenString = _this.encode(toSaveItem);
|
|
63
|
-
yield _this.restClient.request({
|
|
64
|
-
url: `${_this.config.kong.endpoint}/rbac/credentials`,
|
|
65
|
-
method: 'post',
|
|
66
|
-
body: {
|
|
67
|
-
custom_id: uid.toString(),
|
|
68
|
-
username: item.username || null,
|
|
69
|
-
key: tokenString,
|
|
70
|
-
expired_at: item.expiredAt ? item.expiredAt * 1000 : null
|
|
71
|
-
}
|
|
72
|
-
});
|
|
73
|
-
return tokenString;
|
|
74
|
-
})();
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
find(tokenString) {
|
|
78
|
-
var _this2 = this;
|
|
79
|
-
|
|
80
|
-
return _asyncToGenerator(function* () {
|
|
81
|
-
if (!tokenString) {
|
|
82
|
-
return { uid: null, expiredAt: 0 };
|
|
83
|
-
}
|
|
84
|
-
const parsedToken = _this2.decode(tokenString);
|
|
85
|
-
if (!parsedToken || !{}.hasOwnProperty.call(parsedToken, 'uid')) {
|
|
86
|
-
return { uid: null, expiredAt: 0 };
|
|
87
|
-
}
|
|
88
|
-
return parsedToken;
|
|
89
|
-
})();
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
clear(tokenString) {
|
|
93
|
-
if (!tokenString) {
|
|
94
|
-
return true;
|
|
95
|
-
}
|
|
96
|
-
return this.restClient.request({
|
|
97
|
-
url: `${this.config.kong.endpoint}/rbac/credentials/${tokenString}`,
|
|
98
|
-
method: 'delete'
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
encode(item, secret = this.config.secret) {
|
|
103
|
-
return _jwtSimple2.default.encode(item, secret);
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
decode(str, secret = this.config.secret) {
|
|
107
|
-
return _jwtSimple2.default.decode(str, secret);
|
|
108
|
-
}
|
|
109
|
-
}) || _class);
|
|
110
|
-
exports.default = KongJsonWebToken;
|
|
111
|
-
//# sourceMappingURL=jwt_token_kong.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/services/jwt_token_kong.js"],"names":["KongJsonWebToken","Config","RestClient","ServiceInterface","constructor","config","restClient","get","_","RuntimeException","getProto","jwt","save","uid","item","toSaveItem","Object","assign","tokenString","encode","request","url","kong","endpoint","method","body","custom_id","toString","username","key","expired_at","expiredAt","find","parsedToken","decode","hasOwnProperty","call","clear","secret","str"],"mappings":";;;;;;;;;AAAA;;AACA;;;;AACA;;;;AAEA;;AACA;;;;AACA;;;;AACA;;;;;;;;AAEkC;IACbA,gB,WADpB,8BAAaC,gBAAb,EAAqBC,qBAArB,C,gBACc,MAAMF,gBAAN,SAA+BG,mBAA/B,CAAgD;AAC7D;;;;AAIAC,cAAYC,MAAZ,EAAoBC,UAApB,EAAgC;AAC9B;AACA,SAAKA,UAAL,GAAkBA,UAAlB;AACA,SAAKD,MAAL,GAAcA,OAAOE,GAAP,CAAW,OAAX,CAAd;AACA,QAAI,CAACC,iBAAED,GAAF,CAAM,KAAKF,MAAX,EAAmB,eAAnB,CAAL,EAA0C;AACxC,YAAM,IAAII,4BAAJ,CAAqB,mDAArB,CAAN;AACD;AACF;;AAEDC,aAAW;AACT,WAAOC,mBAAP;AACD;;AAEKC,MAAN,CAAWC,GAAX,EAAgBC,IAAhB,EAAsB;AAAA;;AAAA;AACpB,YAAMC,aAAaC,OAAOC,MAAP,CAAc,EAAEJ,GAAF,EAAd,EAAuBC,IAAvB,CAAnB;AACA,YAAMI,cAAc,MAAKC,MAAL,CAAYJ,UAAZ,CAApB;AACA,YAAM,MAAKT,UAAL,CAAgBc,OAAhB,CAAwB;AAC5BC,aAAM,GAAE,MAAKhB,MAAL,CAAYiB,IAAZ,CAAiBC,QAAS,mBADN;AAE5BC,gBAAQ,MAFoB;AAG5BC,cAAM;AACJC,qBAAWb,IAAIc,QAAJ,EADP;AAEJC,oBAAUd,KAAKc,QAAL,IAAiB,IAFvB;AAGJC,eAAKX,WAHD;AAIJY,sBAAYhB,KAAKiB,SAAL,GAAiBjB,KAAKiB,SAAL,GAAiB,IAAlC,GAAyC;AAJjD;AAHsB,OAAxB,CAAN;AAUA,aAAOb,WAAP;AAboB;AAcrB;;AAEKc,MAAN,CAAWd,WAAX,EAAwB;AAAA;;AAAA;AACtB,UAAI,CAACA,WAAL,EAAkB;AAChB,eAAO,EAAEL,KAAK,IAAP,EAAakB,WAAW,CAAxB,EAAP;AACD;AACD,YAAME,cAAc,OAAKC,MAAL,CAAYhB,WAAZ,CAApB;AACA,UAAI,CAACe,WAAD,IAAgB,CAAC,GAAGE,cAAH,CAAkBC,IAAlB,CAAuBH,WAAvB,EAAoC,KAApC,CAArB,EAAiE;AAC/D,eAAO,EAAEpB,KAAK,IAAP,EAAakB,WAAW,CAAxB,EAAP;AACD;AACD,aAAOE,WAAP;AARsB;AASvB;;AAEDI,QAAMnB,WAAN,EAAmB;AACjB,QAAI,CAACA,WAAL,EAAkB;AAChB,aAAO,IAAP;AACD;AACD,WAAO,KAAKZ,UAAL,CAAgBc,OAAhB,CAAwB;AAC7BC,WAAM,GAAE,KAAKhB,MAAL,CAAYiB,IAAZ,CAAiBC,QAAS,qBAAoBL,WAAY,EADrC;AAE7BM,cAAQ;AAFqB,KAAxB,CAAP;AAID;;AAEDL,SAAOL,IAAP,EAAawB,SAAS,KAAKjC,MAAL,CAAYiC,MAAlC,EAA0C;AACxC,WAAO3B,oBAAIQ,MAAJ,CAAWL,IAAX,EAAiBwB,MAAjB,CAAP;AACD;;AAEDJ,SAAOK,GAAP,EAAYD,SAAS,KAAKjC,MAAL,CAAYiC,MAAjC,EAAyC;AACvC,WAAO3B,oBAAIuB,MAAJ,CAAWK,GAAX,EAAgBD,MAAhB,CAAP;AACD;AA7D4D,C;kBAA1CtC,gB","file":"jwt_token_kong.js","sourcesContent":["import { Dependencies } from 'constitute';\nimport jwt from 'jwt-simple';\nimport _ from 'lodash';\n\nimport { RuntimeException } from '../exceptions';\nimport Config from './config';\nimport RestClient from '../services/rest_client';\nimport ServiceInterface from './interface';\n\n@Dependencies(Config, RestClient) //eslint-disable-line new-cap\nexport default class KongJsonWebToken extends ServiceInterface {\n /**\n * @param config {Config}\n * @param restClient {RestClient}\n */\n constructor(config, restClient) {\n super();\n this.restClient = restClient;\n this.config = config.get('token');\n if (!_.get(this.config, 'kong.endpoint')) {\n throw new RuntimeException('config item `token.kong.endpoint` can not be null');\n }\n }\n\n getProto() {\n return jwt;\n }\n\n async save(uid, item) {\n const toSaveItem = Object.assign({ uid }, item);\n const tokenString = this.encode(toSaveItem);\n await this.restClient.request({\n url: `${this.config.kong.endpoint}/rbac/credentials`,\n method: 'post',\n body: {\n custom_id: uid.toString(),\n username: item.username || null,\n key: tokenString,\n expired_at: item.expiredAt ? item.expiredAt * 1000 : null\n }\n });\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 return parsedToken;\n }\n\n clear(tokenString) {\n if (!tokenString) {\n return true;\n }\n return this.restClient.request({\n url: `${this.config.kong.endpoint}/rbac/credentials/${tokenString}`,\n method: 'delete'\n });\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"]}
|