evaengine 1.0.14 → 3.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.
Files changed (202) hide show
  1. package/README.md +15 -7
  2. package/bin/engine +2 -31
  3. package/dist/bin.d.ts +1 -0
  4. package/dist/bin.js +32 -0
  5. package/dist/bin.js.map +1 -0
  6. package/{src/commands/index.js → dist/commands/index.d.ts} +1 -8
  7. package/dist/commands/index.js +6 -0
  8. package/dist/commands/index.js.map +1 -0
  9. package/dist/commands/interface.d.ts +18 -0
  10. package/dist/commands/interface.js +40 -0
  11. package/dist/commands/interface.js.map +1 -0
  12. package/dist/commands/make_entity.d.ts +47 -0
  13. package/dist/commands/make_entity.js +410 -0
  14. package/dist/commands/make_entity.js.map +1 -0
  15. package/dist/commands/tramp.d.ts +7 -0
  16. package/dist/commands/tramp.js +29 -0
  17. package/dist/commands/tramp.js.map +1 -0
  18. package/dist/config/index.d.ts +92 -0
  19. package/dist/config/index.js +96 -0
  20. package/dist/config/index.js.map +1 -0
  21. package/dist/di.d.ts +131 -0
  22. package/dist/di.js +197 -0
  23. package/dist/di.js.map +1 -0
  24. package/dist/engine.d.ts +85 -0
  25. package/dist/engine.js +404 -0
  26. package/dist/engine.js.map +1 -0
  27. package/dist/entities/index.d.ts +54 -0
  28. package/dist/entities/index.js +228 -0
  29. package/dist/entities/index.js.map +1 -0
  30. package/dist/exceptions/index.d.ts +153 -0
  31. package/dist/exceptions/index.js +466 -0
  32. package/dist/exceptions/index.js.map +1 -0
  33. package/dist/index.d.ts +41 -0
  34. package/dist/index.js +43 -0
  35. package/dist/index.js.map +1 -0
  36. package/dist/middlewares/auth.d.ts +5 -0
  37. package/dist/middlewares/auth.js +63 -0
  38. package/dist/middlewares/auth.js.map +1 -0
  39. package/dist/middlewares/auth_kong.d.ts +2 -0
  40. package/dist/middlewares/auth_kong.js +24 -0
  41. package/dist/middlewares/auth_kong.js.map +1 -0
  42. package/dist/middlewares/debug.d.ts +3 -0
  43. package/dist/middlewares/debug.js +50 -0
  44. package/dist/middlewares/debug.js.map +1 -0
  45. package/{src/middlewares/index.js → dist/middlewares/index.d.ts} +1 -11
  46. package/dist/middlewares/index.js +9 -0
  47. package/dist/middlewares/index.js.map +1 -0
  48. package/dist/middlewares/providers.d.ts +25 -0
  49. package/dist/middlewares/providers.js +63 -0
  50. package/dist/middlewares/providers.js.map +1 -0
  51. package/dist/middlewares/session.d.ts +5 -0
  52. package/dist/middlewares/session.js +46 -0
  53. package/dist/middlewares/session.js.map +1 -0
  54. package/dist/middlewares/trace.d.ts +52 -0
  55. package/dist/middlewares/trace.js +225 -0
  56. package/dist/middlewares/trace.js.map +1 -0
  57. package/dist/middlewares/validator.d.ts +10 -0
  58. package/dist/middlewares/validator.js +43 -0
  59. package/dist/middlewares/validator.js.map +1 -0
  60. package/dist/middlewares/view_cache.d.ts +14 -0
  61. package/dist/middlewares/view_cache.js +102 -0
  62. package/dist/middlewares/view_cache.js.map +1 -0
  63. package/dist/services/cache.d.ts +68 -0
  64. package/dist/services/cache.js +206 -0
  65. package/dist/services/cache.js.map +1 -0
  66. package/dist/services/config.d.ts +17 -0
  67. package/dist/services/config.js +67 -0
  68. package/dist/services/config.js.map +1 -0
  69. package/dist/services/env.d.ts +12 -0
  70. package/dist/services/env.js +24 -0
  71. package/dist/services/env.js.map +1 -0
  72. package/dist/services/event_manager.d.ts +30 -0
  73. package/dist/services/event_manager.js +74 -0
  74. package/dist/services/event_manager.js.map +1 -0
  75. package/dist/services/http_client.d.ts +67 -0
  76. package/dist/services/http_client.js +61 -0
  77. package/dist/services/http_client.js.map +1 -0
  78. package/{src/services/index.js → dist/services/index.d.ts} +1 -15
  79. package/dist/services/index.js +14 -0
  80. package/dist/services/index.js.map +1 -0
  81. package/{src/services/interface.js → dist/services/interface.d.ts} +1 -3
  82. package/dist/services/interface.js +6 -0
  83. package/dist/services/interface.js.map +1 -0
  84. package/{src/services/joi.js → dist/services/joi.d.ts} +2 -9
  85. package/dist/services/joi.js +11 -0
  86. package/dist/services/joi.js.map +1 -0
  87. package/dist/services/jwt_token.d.ts +25 -0
  88. package/dist/services/jwt_token.js +76 -0
  89. package/dist/services/jwt_token.js.map +1 -0
  90. package/dist/services/jwt_token_kong.d.ts +26 -0
  91. package/dist/services/jwt_token_kong.js +64 -0
  92. package/dist/services/jwt_token_kong.js.map +1 -0
  93. package/dist/services/logger.d.ts +31 -0
  94. package/dist/services/logger.js +125 -0
  95. package/dist/services/logger.js.map +1 -0
  96. package/dist/services/namespace.d.ts +62 -0
  97. package/dist/services/namespace.js +171 -0
  98. package/dist/services/namespace.js.map +1 -0
  99. package/dist/services/now.d.ts +15 -0
  100. package/dist/services/now.js +42 -0
  101. package/dist/services/now.js.map +1 -0
  102. package/dist/services/providers.d.ts +55 -0
  103. package/dist/services/providers.js +134 -0
  104. package/dist/services/providers.js.map +1 -0
  105. package/dist/services/redis.d.ts +19 -0
  106. package/dist/services/redis.js +52 -0
  107. package/dist/services/redis.js.map +1 -0
  108. package/dist/services/rest_client.d.ts +49 -0
  109. package/dist/services/rest_client.js +95 -0
  110. package/dist/services/rest_client.js.map +1 -0
  111. package/dist/swagger/index.d.ts +223 -0
  112. package/dist/swagger/index.js +564 -0
  113. package/dist/swagger/index.js.map +1 -0
  114. package/dist/types/express.d.ts +14 -0
  115. package/dist/types/vendor.d.ts +30 -0
  116. package/dist/utils/api_scaffold.d.ts +74 -0
  117. package/dist/utils/api_scaffold.js +220 -0
  118. package/dist/utils/api_scaffold.js.map +1 -0
  119. package/dist/utils/case_converter.d.ts +7 -0
  120. package/dist/utils/case_converter.js +29 -0
  121. package/dist/utils/case_converter.js.map +1 -0
  122. package/dist/utils/crc32.d.ts +2 -0
  123. package/dist/utils/crc32.js +43 -0
  124. package/dist/utils/crc32.js.map +1 -0
  125. package/dist/utils/cron.d.ts +27 -0
  126. package/dist/utils/cron.js +186 -0
  127. package/dist/utils/cron.js.map +1 -0
  128. package/dist/utils/datetime.d.ts +4 -0
  129. package/dist/utils/datetime.js +6 -0
  130. package/dist/utils/datetime.js.map +1 -0
  131. package/dist/utils/host.d.ts +18 -0
  132. package/dist/utils/host.js +33 -0
  133. package/dist/utils/host.js.map +1 -0
  134. package/{src/utils/index.js → dist/utils/index.d.ts} +2 -26
  135. package/dist/utils/index.js +12 -0
  136. package/dist/utils/index.js.map +1 -0
  137. package/dist/utils/jwt.d.ts +16 -0
  138. package/dist/utils/jwt.js +93 -0
  139. package/dist/utils/jwt.js.map +1 -0
  140. package/dist/utils/pagination.d.ts +150 -0
  141. package/dist/utils/pagination.js +242 -0
  142. package/dist/utils/pagination.js.map +1 -0
  143. package/dist/utils/random.d.ts +3 -0
  144. package/dist/utils/random.js +18 -0
  145. package/dist/utils/random.js.map +1 -0
  146. package/dist/utils/request_client.d.ts +33 -0
  147. package/dist/utils/request_client.js +153 -0
  148. package/dist/utils/request_client.js.map +1 -0
  149. package/dist/utils/smart_query.d.ts +144 -0
  150. package/dist/utils/smart_query.js +310 -0
  151. package/dist/utils/smart_query.js.map +1 -0
  152. package/dist/utils/test.d.ts +14 -0
  153. package/dist/utils/test.js +37 -0
  154. package/dist/utils/test.js.map +1 -0
  155. package/dist/utils/wrapper.d.ts +3 -0
  156. package/dist/utils/wrapper.js +5 -0
  157. package/dist/utils/wrapper.js.map +1 -0
  158. package/package.json +22 -15
  159. package/index.js +0 -2
  160. package/src/commands/interface.js +0 -45
  161. package/src/commands/make_entity.js +0 -490
  162. package/src/commands/tramp.js +0 -34
  163. package/src/config/index.js +0 -95
  164. package/src/di.js +0 -96
  165. package/src/engine.js +0 -556
  166. package/src/entities/index.js +0 -272
  167. package/src/exceptions/index.js +0 -501
  168. package/src/index.js +0 -55
  169. package/src/middlewares/auth.js +0 -67
  170. package/src/middlewares/auth_kong.js +0 -28
  171. package/src/middlewares/debug.js +0 -88
  172. package/src/middlewares/providers.js +0 -73
  173. package/src/middlewares/session.js +0 -63
  174. package/src/middlewares/trace.js +0 -254
  175. package/src/middlewares/validator.js +0 -50
  176. package/src/middlewares/view_cache.js +0 -127
  177. package/src/services/cache.js +0 -223
  178. package/src/services/config.js +0 -115
  179. package/src/services/env.js +0 -28
  180. package/src/services/event_manager.js +0 -84
  181. package/src/services/http_client.js +0 -69
  182. package/src/services/jwt_token.js +0 -89
  183. package/src/services/jwt_token_kong.js +0 -75
  184. package/src/services/logger.js +0 -150
  185. package/src/services/namespace.js +0 -176
  186. package/src/services/now.js +0 -49
  187. package/src/services/providers.js +0 -158
  188. package/src/services/redis.js +0 -63
  189. package/src/services/rest_client.js +0 -112
  190. package/src/swagger/index.js +0 -665
  191. package/src/utils/api_scaffold.js +0 -240
  192. package/src/utils/case_converter.js +0 -33
  193. package/src/utils/crc32.js +0 -44
  194. package/src/utils/cron.js +0 -208
  195. package/src/utils/datetime.js +0 -13
  196. package/src/utils/host.js +0 -39
  197. package/src/utils/pagination.js +0 -260
  198. package/src/utils/random.js +0 -23
  199. package/src/utils/request_client.js +0 -179
  200. package/src/utils/smart_query.js +0 -352
  201. package/src/utils/test.js +0 -48
  202. package/src/utils/wrapper.js +0 -8
@@ -0,0 +1,67 @@
1
+ import Config from './config.js';
2
+ import Logger from './logger.js';
3
+ import { createRequestClient } from '../utils/request_client.js';
4
+ import ServiceInterface from './interface.js';
5
+ interface RequestParams {
6
+ url?: string;
7
+ uri?: string;
8
+ headers?: Record<string, unknown>;
9
+ [key: string]: unknown;
10
+ }
11
+ interface RequestDump {
12
+ method: string;
13
+ uri?: {
14
+ protocol: string;
15
+ href: string;
16
+ } | null;
17
+ headers: Record<string, unknown>;
18
+ req?: object;
19
+ _json?: boolean;
20
+ formData?: Record<string, unknown> | null;
21
+ body?: unknown;
22
+ form?: (data: unknown) => {
23
+ body: unknown;
24
+ };
25
+ }
26
+ interface ResponseDump {
27
+ statusCode: number;
28
+ statusMessage: string;
29
+ headers: Record<string, unknown>;
30
+ body: unknown;
31
+ }
32
+ declare class HttpClient extends ServiceInterface {
33
+ config: object;
34
+ client: ReturnType<typeof createRequestClient>;
35
+ static dependencies: (typeof Config | typeof Logger)[];
36
+ constructor(config: Config, logger: Logger);
37
+ getProto(): (params?: {
38
+ url?: string;
39
+ method?: string;
40
+ headers?: Record<string, unknown>;
41
+ body?: unknown;
42
+ json?: unknown;
43
+ qs?: Record<string, unknown> | string;
44
+ form?: Record<string, unknown>;
45
+ formData?: Record<string, unknown>;
46
+ simple?: boolean;
47
+ resolveWithFullResponse?: boolean;
48
+ timeout?: number;
49
+ }) => Promise<unknown>;
50
+ getInstance(): (params?: {
51
+ url?: string;
52
+ method?: string;
53
+ headers?: Record<string, unknown>;
54
+ body?: unknown;
55
+ json?: unknown;
56
+ qs?: Record<string, unknown> | string;
57
+ form?: Record<string, unknown>;
58
+ formData?: Record<string, unknown>;
59
+ simple?: boolean;
60
+ resolveWithFullResponse?: boolean;
61
+ timeout?: number;
62
+ }) => Promise<unknown>;
63
+ request(params: RequestParams): Promise<unknown>;
64
+ dumpRequest(req: RequestDump, asString?: boolean): object | string;
65
+ dumpResponse(res: ResponseDump, asString?: boolean): object | string;
66
+ }
67
+ export default HttpClient;
@@ -0,0 +1,61 @@
1
+ import Config from "./config.js";
2
+ import Logger from "./logger.js";
3
+ import { createRequestClient } from "../utils/request_client.js";
4
+ import { HttpRequestLogicException, HttpRequestIOException } from "../exceptions/index.js";
5
+ import ServiceInterface from "./interface.js";
6
+ class HttpClient extends ServiceInterface {
7
+ config;
8
+ client;
9
+ static dependencies = [Config, Logger];
10
+ constructor(config, logger) {
11
+ super();
12
+ this.config = config.get();
13
+ this.client = createRequestClient(logger);
14
+ }
15
+ getProto() {
16
+ return this.client;
17
+ }
18
+ getInstance() {
19
+ return this.client;
20
+ }
21
+ async request(params) {
22
+ try {
23
+ return await this.client(params);
24
+ }
25
+ catch (e) {
26
+ const { statusCode } = e;
27
+ if (statusCode && statusCode >= 400 && statusCode < 500) {
28
+ throw new HttpRequestLogicException(e);
29
+ }
30
+ throw new HttpRequestIOException(e);
31
+ }
32
+ }
33
+ dumpRequest(req, asString = false) {
34
+ const getBody = (r) => {
35
+ if (r._json) {
36
+ return r.body;
37
+ }
38
+ return r.form(r.formData).body;
39
+ };
40
+ const dump = {
41
+ method: req.method,
42
+ protocol: req.uri && req.uri.protocol === 'https:' ? 'https' : 'http',
43
+ url: req.uri ? req.uri.href : null,
44
+ headers: req.headers,
45
+ body: req.req && (req._json || req.formData)
46
+ ? getBody(req) : null
47
+ };
48
+ return asString === true ? JSON.stringify(dump) : dump;
49
+ }
50
+ dumpResponse(res, asString = false) {
51
+ const dump = {
52
+ statusCode: res.statusCode,
53
+ statusMessage: res.statusMessage,
54
+ headers: res.headers,
55
+ body: res.body
56
+ };
57
+ return asString === true ? JSON.stringify(dump) : dump;
58
+ }
59
+ }
60
+ export default HttpClient;
61
+ //# sourceMappingURL=http_client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http_client.js","sourceRoot":"","sources":["../../src/services/http_client.ts"],"names":[],"mappings":"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"}
@@ -10,18 +10,4 @@ import Namespace from './namespace.js';
10
10
  import Now from './now.js';
11
11
  import ValidatorBase from './joi.js';
12
12
  import EventManager from './event_manager.js';
13
-
14
- export {
15
- Cache,
16
- Config,
17
- Env,
18
- HttpClient,
19
- JsonWebToken,
20
- Logger,
21
- Redis,
22
- RestClient,
23
- Namespace,
24
- Now,
25
- ValidatorBase,
26
- EventManager
27
- };
13
+ export { Cache, Config, Env, HttpClient, JsonWebToken, Logger, Redis, RestClient, Namespace, Now, ValidatorBase, EventManager };
@@ -0,0 +1,14 @@
1
+ import Cache from "./cache.js";
2
+ import Config from "./config.js";
3
+ import Env from "./env.js";
4
+ import HttpClient from "./http_client.js";
5
+ import JsonWebToken from "./jwt_token.js";
6
+ import Logger from "./logger.js";
7
+ import Redis from "./redis.js";
8
+ import RestClient from "./rest_client.js";
9
+ import Namespace from "./namespace.js";
10
+ import Now from "./now.js";
11
+ import ValidatorBase from "./joi.js";
12
+ import EventManager from "./event_manager.js";
13
+ export { Cache, Config, Env, HttpClient, JsonWebToken, Logger, Redis, RestClient, Namespace, Now, ValidatorBase, EventManager };
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,GAAG,MAAM,UAAU,CAAC;AAC3B,OAAO,UAAU,MAAM,kBAAkB,CAAC;AAC1C,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,UAAU,MAAM,kBAAkB,CAAC;AAC1C,OAAO,SAAS,MAAM,gBAAgB,CAAC;AACvC,OAAO,GAAG,MAAM,UAAU,CAAC;AAC3B,OAAO,aAAa,MAAM,UAAU,CAAC;AACrC,OAAO,YAAY,MAAM,oBAAoB,CAAC;AAE9C,OAAO,EACL,KAAK,EACL,MAAM,EACN,GAAG,EACH,UAAU,EACV,YAAY,EACZ,MAAM,EACN,KAAK,EACL,UAAU,EACV,SAAS,EACT,GAAG,EACH,aAAa,EACb,YAAY,EACb,CAAC"}
@@ -1,5 +1,3 @@
1
1
  export default class ServiceInterface {
2
- getProto() {
3
- return {};
4
- }
2
+ getProto(): unknown;
5
3
  }
@@ -0,0 +1,6 @@
1
+ export default class ServiceInterface {
2
+ getProto() {
3
+ return {};
4
+ }
5
+ }
6
+ //# sourceMappingURL=interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interface.js","sourceRoot":"","sources":["../../src/services/interface.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,OAAO,gBAAgB;IACnC,QAAQ;QACN,OAAO,EAAE,CAAC;IACZ,CAAC;CACF"}
@@ -1,13 +1,6 @@
1
1
  import Joi from 'joi';
2
2
  import ServiceInterface from './interface.js';
3
-
4
3
  export default class ValidatorBase extends ServiceInterface {
5
- getProto() {
6
- return Joi;
7
- }
8
-
9
- getJoi() {
10
- return Joi;
11
- }
4
+ getProto(): typeof Joi;
5
+ getJoi(): typeof Joi;
12
6
  }
13
-
@@ -0,0 +1,11 @@
1
+ import Joi from 'joi';
2
+ import ServiceInterface from "./interface.js";
3
+ export default class ValidatorBase extends ServiceInterface {
4
+ getProto() {
5
+ return Joi;
6
+ }
7
+ getJoi() {
8
+ return Joi;
9
+ }
10
+ }
11
+ //# sourceMappingURL=joi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"joi.js","sourceRoot":"","sources":["../../src/services/joi.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,gBAAgB,MAAM,gBAAgB,CAAC;AAE9C,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,gBAAgB;IAChD,QAAQ;QACf,OAAO,GAAG,CAAC;IACb,CAAC;IAED,MAAM;QACJ,OAAO,GAAG,CAAC;IACb,CAAC;CACF"}
@@ -0,0 +1,25 @@
1
+ import * as jwt from '../utils/jwt.js';
2
+ import Config from './config.js';
3
+ import Redis from './redis.js';
4
+ import ServiceInterface from './interface.js';
5
+ import type { Redis as RedisClient } from 'ioredis';
6
+ interface TokenConfig {
7
+ prefix: string;
8
+ secret: string;
9
+ }
10
+ declare class JsonWebToken extends ServiceInterface {
11
+ redis: RedisClient;
12
+ config: TokenConfig;
13
+ static dependencies: (typeof Config | typeof Redis)[];
14
+ constructor(config: Config, redis: Redis);
15
+ getProto(): typeof jwt;
16
+ getRedis(): RedisClient;
17
+ getPrefix(): string;
18
+ save(uid: string | number, item: object): Promise<string>;
19
+ find(tokenString: string): Promise<unknown>;
20
+ clear(tokenString: string): boolean | Promise<number>;
21
+ getRedisKey(tokenString: string, groupOnly?: boolean): string;
22
+ encode(item: object, secret?: string): string;
23
+ decode(str: string, secret?: string): object;
24
+ }
25
+ export default JsonWebToken;
@@ -0,0 +1,76 @@
1
+ import * as jwt from "../utils/jwt.js";
2
+ import Config from "./config.js";
3
+ import Redis from "./redis.js";
4
+ import ServiceInterface from "./interface.js";
5
+ class JsonWebToken extends ServiceInterface {
6
+ redis;
7
+ config;
8
+ static dependencies = [Config, Redis];
9
+ constructor(config, redis) {
10
+ super();
11
+ this.redis = redis.getInstance();
12
+ this.config = config.get('token');
13
+ }
14
+ getProto() {
15
+ return jwt;
16
+ }
17
+ getRedis() {
18
+ return this.redis;
19
+ }
20
+ getPrefix() {
21
+ return this.config.prefix;
22
+ }
23
+ async save(uid, item) {
24
+ const toSaveItem = Object.assign({ uid }, item);
25
+ const tokenString = this.encode(toSaveItem);
26
+ const key = [this.getPrefix(), uid, tokenString.split('.').pop()].join(':');
27
+ //TODO 过期时间
28
+ await this.getRedis().set(key, JSON.stringify(toSaveItem));
29
+ return tokenString;
30
+ }
31
+ async find(tokenString) {
32
+ if (!tokenString) {
33
+ return { uid: null, expiredAt: 0 };
34
+ }
35
+ const parsedToken = this.decode(tokenString);
36
+ if (!parsedToken || !{}.hasOwnProperty.call(parsedToken, 'uid')) {
37
+ return { uid: null, expiredAt: 0 };
38
+ }
39
+ const key = [this.getPrefix(), parsedToken.uid, tokenString.split('.').pop()].join(':');
40
+ const storedToken = await this.redis.get(key);
41
+ if (!storedToken) {
42
+ return {
43
+ uid: parsedToken.uid,
44
+ expiredAt: 0
45
+ };
46
+ }
47
+ return JSON.parse(storedToken);
48
+ }
49
+ clear(tokenString) {
50
+ if (!tokenString) {
51
+ return true;
52
+ }
53
+ const key = this.getRedisKey(tokenString);
54
+ if (!key) {
55
+ return true;
56
+ }
57
+ return this.redis.del(key);
58
+ }
59
+ getRedisKey(tokenString, groupOnly = false) {
60
+ const parsedToken = this.decode(tokenString);
61
+ if (!parsedToken || !{}.hasOwnProperty.call(parsedToken, 'uid')) {
62
+ return '';
63
+ }
64
+ return groupOnly === true ?
65
+ [this.getPrefix(), parsedToken.uid].join(':') :
66
+ [this.getPrefix(), parsedToken.uid, tokenString.split('.').pop()].join(':');
67
+ }
68
+ encode(item, secret = this.config.secret) {
69
+ return jwt.encode(item, secret);
70
+ }
71
+ decode(str, secret = this.config.secret) {
72
+ return jwt.decode(str, secret);
73
+ }
74
+ }
75
+ export default JsonWebToken;
76
+ //# sourceMappingURL=jwt_token.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwt_token.js","sourceRoot":"","sources":["../../src/services/jwt_token.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import * as jwt from '../utils/jwt.js';
2
+ import Config from './config.js';
3
+ import RestClient from '../services/rest_client.js';
4
+ import ServiceInterface from './interface.js';
5
+ interface KongTokenConfig {
6
+ secret: string;
7
+ kong: {
8
+ endpoint: string;
9
+ };
10
+ }
11
+ declare class KongJsonWebToken extends ServiceInterface {
12
+ restClient: RestClient;
13
+ config: KongTokenConfig;
14
+ static dependencies: (typeof Config | typeof RestClient)[];
15
+ constructor(config: Config, restClient: RestClient);
16
+ getProto(): typeof jwt;
17
+ save(uid: string | number, item: {
18
+ username?: string;
19
+ expiredAt?: number;
20
+ }): Promise<string>;
21
+ find(tokenString: string): Promise<unknown>;
22
+ clear(tokenString: string): boolean | Promise<unknown>;
23
+ encode(item: object, secret?: string): string;
24
+ decode(str: string, secret?: string): object;
25
+ }
26
+ export default KongJsonWebToken;
@@ -0,0 +1,64 @@
1
+ import * as jwt from "../utils/jwt.js";
2
+ import get from 'lodash/get.js';
3
+ import { RuntimeException } from "../exceptions/index.js";
4
+ import Config from "./config.js";
5
+ import RestClient from "../services/rest_client.js";
6
+ import ServiceInterface from "./interface.js";
7
+ class KongJsonWebToken extends ServiceInterface {
8
+ restClient;
9
+ config;
10
+ static dependencies = [Config, RestClient];
11
+ constructor(config, restClient) {
12
+ super();
13
+ this.restClient = restClient;
14
+ this.config = config.get('token');
15
+ if (!get(this.config, 'kong.endpoint')) {
16
+ throw new RuntimeException('config item `token.kong.endpoint` can not be null');
17
+ }
18
+ }
19
+ getProto() {
20
+ return jwt;
21
+ }
22
+ async save(uid, item) {
23
+ const toSaveItem = Object.assign({ uid }, item);
24
+ const tokenString = this.encode(toSaveItem);
25
+ await this.restClient.request({
26
+ url: `${this.config.kong.endpoint}/rbac/credentials`,
27
+ method: 'post',
28
+ body: {
29
+ custom_id: uid.toString(),
30
+ username: item.username || null,
31
+ key: tokenString,
32
+ expired_at: item.expiredAt ? item.expiredAt * 1000 : null
33
+ }
34
+ });
35
+ return tokenString;
36
+ }
37
+ async find(tokenString) {
38
+ if (!tokenString) {
39
+ return { uid: null, expiredAt: 0 };
40
+ }
41
+ const parsedToken = this.decode(tokenString);
42
+ if (!parsedToken || !{}.hasOwnProperty.call(parsedToken, 'uid')) {
43
+ return { uid: null, expiredAt: 0 };
44
+ }
45
+ return parsedToken;
46
+ }
47
+ clear(tokenString) {
48
+ if (!tokenString) {
49
+ return true;
50
+ }
51
+ return this.restClient.request({
52
+ url: `${this.config.kong.endpoint}/rbac/credentials/${tokenString}`,
53
+ method: 'delete'
54
+ });
55
+ }
56
+ encode(item, secret = this.config.secret) {
57
+ return jwt.encode(item, secret);
58
+ }
59
+ decode(str, secret = this.config.secret) {
60
+ return jwt.decode(str, secret);
61
+ }
62
+ }
63
+ export default KongJsonWebToken;
64
+ //# sourceMappingURL=jwt_token_kong.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwt_token_kong.js","sourceRoot":"","sources":["../../src/services/jwt_token_kong.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,iBAAiB,CAAC;AACvC,OAAO,GAAG,MAAM,eAAe,CAAC;AAEhC,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,UAAU,MAAM,4BAA4B,CAAC;AACpD,OAAO,gBAAgB,MAAM,gBAAgB,CAAC;AAO9C,MAAM,gBAAiB,SAAQ,gBAAgB;IAC7C,UAAU,CAAa;IACvB,MAAM,CAAkB;IAExB,MAAM,CAAC,YAAY,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAE3C,YAAY,MAAc,EAAE,UAAsB;QAChD,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAoB,CAAC;QACrD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,gBAAgB,CAAC,mDAAmD,CAAC,CAAC;QAClF,CAAC;IACH,CAAC;IAEQ,QAAQ;QACf,OAAO,GAAG,CAAC;IACb,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,GAAoB,EAAE,IAA+C;QAC9E,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;QAChD,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC5C,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YAC5B,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,mBAAmB;YACpD,MAAM,EAAE,MAAM;YACd,IAAI,EAAE;gBACJ,SAAS,EAAE,GAAG,CAAC,QAAQ,EAAE;gBACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI;gBAC/B,GAAG,EAAE,WAAW;gBAChB,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI;aAC1D;SACF,CAAC,CAAC;QACH,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,WAAmB;QAC5B,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;QACrC,CAAC;QACD,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAA6B,CAAC;QACzE,IAAI,CAAC,WAAW,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC;YAChE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;QACrC,CAAC;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,WAAmB;QACvB,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YAC7B,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,qBAAqB,WAAW,EAAE;YACnE,MAAM,EAAE,QAAQ;SACjB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,IAAY,EAAE,SAAiB,IAAI,CAAC,MAAM,CAAC,MAAM;QACtD,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,MAAM,CAAC,GAAW,EAAE,SAAiB,IAAI,CAAC,MAAM,CAAC,MAAM;QACrD,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACjC,CAAC;;AAGH,eAAe,gBAAgB,CAAC"}
@@ -0,0 +1,31 @@
1
+ import winston from 'winston';
2
+ import Env from './env.js';
3
+ import Config from './config.js';
4
+ import Namespace from './namespace.js';
5
+ import ServiceInterface from './interface.js';
6
+ declare class Logger extends ServiceInterface {
7
+ env: Env;
8
+ config: Config;
9
+ namespace: Namespace;
10
+ level: string;
11
+ instance: winston.Logger | null;
12
+ label: string | null;
13
+ logfile: string | null;
14
+ static dependencies: (typeof Env | typeof Config | typeof Namespace)[];
15
+ constructor(env: Env, config: Config, namespace: Namespace);
16
+ getProto(): typeof winston;
17
+ getWinston(): typeof winston;
18
+ setLogFile(logfile: string): this;
19
+ setLabel(label: string): this;
20
+ setLevel(level: string): this;
21
+ getInstance(): winston.Logger;
22
+ factory(logPath: string | false, key?: string, level?: string): winston.Logger;
23
+ populateTraceId(args: unknown[]): [string, ...unknown[]];
24
+ debug(...args: unknown[]): winston.Logger;
25
+ verbose(...args: unknown[]): winston.Logger;
26
+ info(...args: unknown[]): winston.Logger;
27
+ warn(...args: unknown[]): winston.Logger;
28
+ error(...args: unknown[]): winston.Logger;
29
+ dump(obj: unknown): winston.Logger;
30
+ }
31
+ export default Logger;
@@ -0,0 +1,125 @@
1
+ import moment from 'moment-timezone';
2
+ import winston from 'winston';
3
+ import { inspect } from 'util';
4
+ import Env from "./env.js";
5
+ import Config from "./config.js";
6
+ import Namespace from "./namespace.js";
7
+ import ServiceInterface from "./interface.js";
8
+ class Logger extends ServiceInterface {
9
+ env;
10
+ config;
11
+ namespace;
12
+ level;
13
+ instance;
14
+ label;
15
+ logfile;
16
+ static dependencies = [Env, Config, Namespace];
17
+ constructor(env, config, namespace) {
18
+ super();
19
+ this.env = env;
20
+ this.config = config;
21
+ this.namespace = namespace;
22
+ let level = env.isProduction() ? 'info' : 'debug';
23
+ if (process.env.LOG_LEVEL) {
24
+ level = process.env.LOG_LEVEL;
25
+ }
26
+ this.level = level;
27
+ winston.level = level;
28
+ this.instance = null;
29
+ this.label = null;
30
+ this.logfile = null;
31
+ }
32
+ getProto() {
33
+ return winston;
34
+ }
35
+ getWinston() {
36
+ return winston;
37
+ }
38
+ setLogFile(logfile) {
39
+ this.logfile = logfile;
40
+ return this;
41
+ }
42
+ setLabel(label) {
43
+ this.label = label;
44
+ return this;
45
+ }
46
+ setLevel(level) {
47
+ this.level = level;
48
+ return this;
49
+ }
50
+ getInstance() {
51
+ if (this.instance) {
52
+ return this.instance;
53
+ }
54
+ const logPath = this.logfile || this.config.get('logger.file');
55
+ this.instance = this.factory(logPath);
56
+ return this.instance;
57
+ }
58
+ factory(logPath, key = 'global', level = this.level) {
59
+ const timestamp = () => moment().format();
60
+ return logPath ? winston.createLogger({
61
+ format: winston.format.combine(winston.format.splat(), winston.format.json()),
62
+ transports: [
63
+ new (winston.transports.Console)({
64
+ name: `${key}-console`,
65
+ timestamp,
66
+ level,
67
+ label: this.label
68
+ }),
69
+ new (winston.transports.File)({
70
+ name: `${key}-file`,
71
+ timestamp,
72
+ json: false,
73
+ level,
74
+ label: this.label,
75
+ filename: logPath
76
+ })
77
+ ]
78
+ }) : winston.createLogger({
79
+ format: winston.format.combine(winston.format.splat(), winston.format.json()),
80
+ transports: [
81
+ new (winston.transports.Console)({
82
+ name: `${key}-console`,
83
+ timestamp,
84
+ level,
85
+ label: this.label,
86
+ colorize: !this.env.isProduction(),
87
+ prettyPrint: !this.env.isProduction()
88
+ })
89
+ ]
90
+ });
91
+ }
92
+ populateTraceId(args) {
93
+ if (!this.namespace.get('tracer')) {
94
+ return args;
95
+ }
96
+ const { spanId, traceId } = (this.namespace.get('tracer') || {});
97
+ if (spanId) {
98
+ args.push(spanId);
99
+ }
100
+ if (spanId !== traceId) {
101
+ args.push(traceId);
102
+ }
103
+ return args;
104
+ }
105
+ debug(...args) {
106
+ return this.getInstance().debug(...this.populateTraceId(args));
107
+ }
108
+ verbose(...args) {
109
+ return this.getInstance().verbose(...this.populateTraceId(args));
110
+ }
111
+ info(...args) {
112
+ return this.getInstance().info(...this.populateTraceId(args));
113
+ }
114
+ warn(...args) {
115
+ return this.getInstance().warn(...this.populateTraceId(args));
116
+ }
117
+ error(...args) {
118
+ return this.getInstance().error(...this.populateTraceId(args));
119
+ }
120
+ dump(obj) {
121
+ return this.debug(inspect(obj, { depth: null, colors: true }));
122
+ }
123
+ }
124
+ export default Logger;
125
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/services/logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ import { AsyncLocalStorage } from 'node:async_hooks';
2
+ import Config from './config.js';
3
+ import ServiceInterface from './interface.js';
4
+ /**
5
+ * CLS 语义的上下文是键值集合;AsyncLocalStorage 的 context 是单个值,
6
+ * 因此用 Map 承载,保持 get(key)/set(key, value) 的消费方式不变。
7
+ */
8
+ type ClsContext = Map<string, unknown>;
9
+ export declare class Store {
10
+ get(...args: unknown[]): unknown;
11
+ set(...args: unknown[]): this;
12
+ bind(...args: unknown[]): unknown;
13
+ reset(): this;
14
+ active(): unknown;
15
+ run(callback: (context?: unknown, ...args: unknown[]) => unknown, ...args: unknown[]): unknown;
16
+ bindEmitter(...args: unknown[]): unknown;
17
+ getContext(): unknown;
18
+ createContext(): unknown;
19
+ }
20
+ export declare class NullStore extends Store {
21
+ constructor(...args: unknown[]);
22
+ }
23
+ export declare class NsStore extends Store {
24
+ name: string;
25
+ storage: AsyncLocalStorage<ClsContext>;
26
+ constructor(name: string);
27
+ get(key: string): unknown;
28
+ set(key: string, value: unknown): this;
29
+ bind<T extends (...args: never[]) => unknown>(fn: T): (...args: never[]) => unknown;
30
+ active(): ClsContext | undefined;
31
+ run(callback: (context: ClsContext, ...args: unknown[]) => unknown, ...args: unknown[]): unknown;
32
+ bindEmitter(emitter: unknown): unknown;
33
+ getContext(): NsStore;
34
+ createContext(): ClsContext;
35
+ reset(): this;
36
+ }
37
+ interface NamespaceConfig {
38
+ enable?: boolean;
39
+ }
40
+ declare class Namespace extends ServiceInterface {
41
+ config: NamespaceConfig;
42
+ defaultName: string;
43
+ store: Store | null;
44
+ name: string | null;
45
+ static dependencies: (typeof Config)[];
46
+ constructor(config: Config);
47
+ isEnabled(): boolean | undefined;
48
+ getDefaultName(): string;
49
+ setDefaultName(name: string): this;
50
+ getName(): string | null;
51
+ getStore(): Store;
52
+ destroy(name: string): this;
53
+ use(ns?: string | null): Store;
54
+ get(key: string): unknown;
55
+ set(key: string, value: unknown): unknown;
56
+ bind(...args: unknown[]): unknown;
57
+ active(): unknown;
58
+ run(...args: unknown[]): unknown;
59
+ bindEmitter(...args: unknown[]): unknown;
60
+ createContext(): unknown;
61
+ }
62
+ export default Namespace;