egg 3.29.0 → 4.0.0-beta.10

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 (232) hide show
  1. package/README.md +2 -1
  2. package/README.zh-CN.md +7 -5
  3. package/dist/commonjs/agent.d.ts +4 -0
  4. package/dist/commonjs/agent.js +10 -0
  5. package/dist/commonjs/app/extend/context.d.ts +154 -0
  6. package/dist/commonjs/app/extend/context.js +261 -0
  7. package/dist/commonjs/app/extend/context.types.d.ts +16 -0
  8. package/dist/commonjs/app/extend/context.types.js +3 -0
  9. package/dist/commonjs/app/extend/helper.d.ts +37 -0
  10. package/dist/commonjs/app/extend/helper.js +49 -0
  11. package/dist/commonjs/app/extend/request.d.ts +128 -0
  12. package/dist/commonjs/app/extend/request.js +270 -0
  13. package/dist/commonjs/app/extend/response.d.ts +25 -0
  14. package/dist/commonjs/app/extend/response.js +37 -0
  15. package/dist/commonjs/app/middleware/body_parser.d.ts +2 -0
  16. package/dist/commonjs/app/middleware/body_parser.js +8 -0
  17. package/dist/commonjs/app/middleware/meta.d.ts +10 -0
  18. package/dist/commonjs/app/middleware/meta.js +22 -0
  19. package/dist/commonjs/app/middleware/notfound.d.ts +7 -0
  20. package/dist/commonjs/app/middleware/notfound.js +31 -0
  21. package/dist/commonjs/app/middleware/override_method.d.ts +2 -0
  22. package/dist/commonjs/app/middleware/override_method.js +8 -0
  23. package/dist/commonjs/app/middleware/site_file.d.ts +9 -0
  24. package/dist/commonjs/app/middleware/site_file.js +58 -0
  25. package/dist/commonjs/config/config.default.d.ts +9 -0
  26. package/dist/commonjs/config/config.default.js +379 -0
  27. package/dist/commonjs/config/config.local.d.ts +8 -0
  28. package/dist/commonjs/config/config.local.js +12 -0
  29. package/dist/commonjs/config/config.unittest.d.ts +7 -0
  30. package/dist/commonjs/config/config.unittest.js +11 -0
  31. package/dist/commonjs/config/plugin.d.ts +122 -0
  32. package/dist/commonjs/config/plugin.js +125 -0
  33. package/dist/commonjs/index.d.ts +63 -0
  34. package/dist/commonjs/index.js +91 -0
  35. package/dist/commonjs/lib/agent.d.ts +19 -0
  36. package/dist/commonjs/lib/agent.js +58 -0
  37. package/dist/commonjs/lib/application.d.ts +59 -0
  38. package/dist/commonjs/lib/application.js +270 -0
  39. package/dist/commonjs/lib/core/base_context_class.d.ts +14 -0
  40. package/dist/commonjs/lib/core/base_context_class.js +22 -0
  41. package/dist/commonjs/lib/core/base_context_logger.d.ts +36 -0
  42. package/dist/commonjs/lib/core/base_context_logger.js +64 -0
  43. package/dist/commonjs/lib/core/base_hook_class.d.ts +11 -0
  44. package/dist/commonjs/lib/core/base_hook_class.js +30 -0
  45. package/dist/commonjs/lib/core/context_httpclient.d.ts +16 -0
  46. package/dist/commonjs/lib/core/context_httpclient.js +30 -0
  47. package/dist/commonjs/lib/core/httpclient.d.ts +13 -0
  48. package/dist/commonjs/lib/core/httpclient.js +37 -0
  49. package/dist/commonjs/lib/core/logger.d.ts +3 -0
  50. package/dist/commonjs/lib/core/logger.js +40 -0
  51. package/dist/commonjs/lib/core/messenger/IMessenger.d.ts +50 -0
  52. package/dist/commonjs/lib/core/messenger/IMessenger.js +3 -0
  53. package/dist/commonjs/lib/core/messenger/index.d.ts +7 -0
  54. package/dist/commonjs/lib/core/messenger/index.js +14 -0
  55. package/dist/commonjs/lib/core/messenger/ipc.d.ts +59 -0
  56. package/dist/commonjs/lib/core/messenger/ipc.js +137 -0
  57. package/dist/commonjs/lib/core/messenger/local.d.ts +61 -0
  58. package/dist/commonjs/lib/core/messenger/local.js +137 -0
  59. package/dist/commonjs/lib/core/singleton.d.ts +23 -0
  60. package/dist/commonjs/lib/core/singleton.js +120 -0
  61. package/dist/commonjs/lib/core/utils.d.ts +2 -0
  62. package/dist/commonjs/lib/core/utils.js +77 -0
  63. package/dist/commonjs/lib/egg.d.ts +276 -0
  64. package/dist/commonjs/lib/egg.js +617 -0
  65. package/dist/commonjs/lib/egg.types.d.ts +6 -0
  66. package/dist/commonjs/lib/egg.types.js +3 -0
  67. package/dist/commonjs/lib/loader/AgentWorkerLoader.d.ts +12 -0
  68. package/dist/commonjs/lib/loader/AgentWorkerLoader.js +24 -0
  69. package/dist/commonjs/lib/loader/AppWorkerLoader.d.ts +17 -0
  70. package/dist/commonjs/lib/loader/AppWorkerLoader.js +43 -0
  71. package/dist/commonjs/lib/loader/EggApplicationLoader.d.ts +4 -0
  72. package/dist/commonjs/lib/loader/EggApplicationLoader.js +8 -0
  73. package/dist/commonjs/lib/loader/index.d.ts +3 -0
  74. package/dist/commonjs/lib/loader/index.js +22 -0
  75. package/dist/commonjs/lib/start.d.ts +15 -0
  76. package/dist/commonjs/lib/start.js +49 -0
  77. package/dist/commonjs/lib/type.d.ts +293 -0
  78. package/dist/commonjs/lib/type.js +3 -0
  79. package/dist/commonjs/lib/utils.d.ts +2 -0
  80. package/dist/commonjs/lib/utils.js +21 -0
  81. package/dist/commonjs/package.json +3 -0
  82. package/dist/esm/agent.d.ts +4 -0
  83. package/dist/esm/agent.js +7 -0
  84. package/dist/esm/app/extend/context.d.ts +154 -0
  85. package/dist/esm/app/extend/context.js +255 -0
  86. package/dist/esm/app/extend/context.types.d.ts +16 -0
  87. package/dist/esm/app/extend/context.types.js +2 -0
  88. package/dist/esm/app/extend/helper.d.ts +37 -0
  89. package/dist/esm/app/extend/helper.js +43 -0
  90. package/dist/esm/app/extend/request.d.ts +128 -0
  91. package/dist/esm/app/extend/request.js +264 -0
  92. package/dist/esm/app/extend/response.d.ts +25 -0
  93. package/dist/esm/app/extend/response.js +34 -0
  94. package/dist/esm/app/middleware/body_parser.d.ts +2 -0
  95. package/dist/esm/app/middleware/body_parser.js +3 -0
  96. package/dist/esm/app/middleware/meta.d.ts +10 -0
  97. package/dist/esm/app/middleware/meta.js +20 -0
  98. package/dist/esm/app/middleware/notfound.d.ts +7 -0
  99. package/dist/esm/app/middleware/notfound.js +29 -0
  100. package/dist/esm/app/middleware/override_method.d.ts +2 -0
  101. package/dist/esm/app/middleware/override_method.js +3 -0
  102. package/dist/esm/app/middleware/site_file.d.ts +9 -0
  103. package/dist/esm/app/middleware/site_file.js +53 -0
  104. package/dist/esm/config/config.default.d.ts +9 -0
  105. package/dist/esm/config/config.default.js +374 -0
  106. package/dist/esm/config/config.local.d.ts +8 -0
  107. package/dist/esm/config/config.local.js +10 -0
  108. package/dist/esm/config/config.unittest.d.ts +7 -0
  109. package/dist/esm/config/config.unittest.js +9 -0
  110. package/dist/esm/config/favicon.png +0 -0
  111. package/dist/esm/config/plugin.d.ts +122 -0
  112. package/dist/esm/config/plugin.js +123 -0
  113. package/dist/esm/index.d.ts +63 -0
  114. package/dist/esm/index.js +66 -0
  115. package/dist/esm/lib/agent.d.ts +19 -0
  116. package/dist/esm/lib/agent.js +54 -0
  117. package/dist/esm/lib/application.d.ts +59 -0
  118. package/dist/esm/lib/application.js +263 -0
  119. package/dist/esm/lib/core/base_context_class.d.ts +14 -0
  120. package/dist/esm/lib/core/base_context_class.js +18 -0
  121. package/dist/esm/lib/core/base_context_logger.d.ts +36 -0
  122. package/dist/esm/lib/core/base_context_logger.js +60 -0
  123. package/dist/esm/lib/core/base_hook_class.d.ts +11 -0
  124. package/dist/esm/lib/core/base_hook_class.js +23 -0
  125. package/dist/esm/lib/core/context_httpclient.d.ts +16 -0
  126. package/dist/esm/lib/core/context_httpclient.js +26 -0
  127. package/dist/esm/lib/core/httpclient.d.ts +13 -0
  128. package/dist/esm/lib/core/httpclient.js +33 -0
  129. package/dist/esm/lib/core/logger.d.ts +3 -0
  130. package/dist/esm/lib/core/logger.js +37 -0
  131. package/dist/esm/lib/core/messenger/IMessenger.d.ts +50 -0
  132. package/dist/esm/lib/core/messenger/IMessenger.js +2 -0
  133. package/dist/esm/lib/core/messenger/index.d.ts +7 -0
  134. package/dist/esm/lib/core/messenger/index.js +11 -0
  135. package/dist/esm/lib/core/messenger/ipc.d.ts +59 -0
  136. package/dist/esm/lib/core/messenger/ipc.js +130 -0
  137. package/dist/esm/lib/core/messenger/local.d.ts +61 -0
  138. package/dist/esm/lib/core/messenger/local.js +130 -0
  139. package/dist/esm/lib/core/singleton.d.ts +23 -0
  140. package/dist/esm/lib/core/singleton.js +113 -0
  141. package/dist/esm/lib/core/utils.d.ts +2 -0
  142. package/dist/esm/lib/core/utils.js +70 -0
  143. package/dist/esm/lib/egg.d.ts +276 -0
  144. package/dist/esm/lib/egg.js +574 -0
  145. package/dist/esm/lib/egg.types.d.ts +6 -0
  146. package/dist/esm/lib/egg.types.js +2 -0
  147. package/dist/esm/lib/loader/AgentWorkerLoader.d.ts +12 -0
  148. package/dist/esm/lib/loader/AgentWorkerLoader.js +20 -0
  149. package/dist/esm/lib/loader/AppWorkerLoader.d.ts +17 -0
  150. package/dist/esm/lib/loader/AppWorkerLoader.js +39 -0
  151. package/dist/esm/lib/loader/EggApplicationLoader.d.ts +4 -0
  152. package/dist/esm/lib/loader/EggApplicationLoader.js +4 -0
  153. package/dist/esm/lib/loader/index.d.ts +3 -0
  154. package/dist/esm/lib/loader/index.js +4 -0
  155. package/dist/esm/lib/start.d.ts +15 -0
  156. package/dist/esm/lib/start.js +43 -0
  157. package/dist/esm/lib/type.d.ts +293 -0
  158. package/dist/esm/lib/type.js +2 -0
  159. package/dist/esm/lib/utils.d.ts +2 -0
  160. package/dist/esm/lib/utils.js +14 -0
  161. package/dist/esm/package.json +3 -0
  162. package/dist/package.json +4 -0
  163. package/package.json +97 -79
  164. package/src/agent.ts +7 -0
  165. package/src/app/extend/context.ts +303 -0
  166. package/src/app/extend/context.types.ts +24 -0
  167. package/{app/extend/helper.js → src/app/extend/helper.ts} +14 -13
  168. package/{app/extend/request.js → src/app/extend/request.ts} +81 -79
  169. package/src/app/extend/response.ts +36 -0
  170. package/src/app/middleware/body_parser.ts +3 -0
  171. package/{app/middleware/meta.js → src/app/middleware/meta.ts} +11 -4
  172. package/{app/middleware/notfound.js → src/app/middleware/notfound.ts} +8 -3
  173. package/src/app/middleware/override_method.ts +3 -0
  174. package/src/app/middleware/site_file.ts +68 -0
  175. package/{config/config.default.js → src/config/config.default.ts} +25 -45
  176. package/src/config/config.local.ts +11 -0
  177. package/src/config/config.unittest.ts +10 -0
  178. package/src/config/favicon.png +0 -0
  179. package/{config/plugin.js → src/config/plugin.ts} +3 -5
  180. package/src/index.ts +80 -0
  181. package/src/lib/agent.ts +66 -0
  182. package/{lib/application.js → src/lib/application.ts} +76 -124
  183. package/src/lib/core/base_context_class.ts +21 -0
  184. package/src/lib/core/base_context_logger.ts +67 -0
  185. package/src/lib/core/base_hook_class.ts +30 -0
  186. package/src/lib/core/context_httpclient.ts +33 -0
  187. package/src/lib/core/httpclient.ts +51 -0
  188. package/src/lib/core/logger.ts +42 -0
  189. package/src/lib/core/messenger/IMessenger.ts +58 -0
  190. package/src/lib/core/messenger/index.ts +15 -0
  191. package/src/lib/core/messenger/ipc.ts +148 -0
  192. package/{lib/core/messenger/local.js → src/lib/core/messenger/local.ts} +36 -28
  193. package/{lib/core/singleton.js → src/lib/core/singleton.ts} +56 -33
  194. package/src/lib/core/utils.ts +77 -0
  195. package/{lib/egg.js → src/lib/egg.ts} +287 -221
  196. package/src/lib/egg.types.ts +6 -0
  197. package/src/lib/loader/AgentWorkerLoader.ts +21 -0
  198. package/src/lib/loader/AppWorkerLoader.ts +42 -0
  199. package/src/lib/loader/EggApplicationLoader.ts +5 -0
  200. package/src/lib/loader/index.ts +3 -0
  201. package/src/lib/start.ts +56 -0
  202. package/src/lib/type.ts +329 -0
  203. package/src/lib/utils.ts +16 -0
  204. package/CHANGELOG.md +0 -2395
  205. package/History.md +0 -52
  206. package/agent.js +0 -11
  207. package/app/extend/context.js +0 -285
  208. package/app/extend/response.js +0 -101
  209. package/app/middleware/body_parser.js +0 -3
  210. package/app/middleware/override_method.js +0 -3
  211. package/app/middleware/site_file.js +0 -31
  212. package/config/config.local.js +0 -7
  213. package/config/config.unittest.js +0 -8
  214. package/index.d.ts +0 -1288
  215. package/index.js +0 -68
  216. package/lib/agent.js +0 -95
  217. package/lib/core/base_context_class.js +0 -20
  218. package/lib/core/base_context_logger.js +0 -64
  219. package/lib/core/base_hook_class.js +0 -31
  220. package/lib/core/context_httpclient.js +0 -26
  221. package/lib/core/dnscache_httpclient.js +0 -93
  222. package/lib/core/httpclient.js +0 -119
  223. package/lib/core/httpclient_next.js +0 -80
  224. package/lib/core/logger.js +0 -35
  225. package/lib/core/messenger/index.js +0 -14
  226. package/lib/core/messenger/ipc.js +0 -141
  227. package/lib/core/utils.js +0 -73
  228. package/lib/loader/agent_worker_loader.js +0 -27
  229. package/lib/loader/app_worker_loader.js +0 -48
  230. package/lib/loader/index.js +0 -5
  231. package/lib/start.js +0 -39
  232. /package/{config → dist/commonjs/config}/favicon.png +0 -0
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseContextLogger = void 0;
4
+ class BaseContextLogger {
5
+ #ctx;
6
+ #pathName;
7
+ /**
8
+ * @class
9
+ * @param {Context} ctx - context instance
10
+ * @param {String} pathName - class path name
11
+ * @since 1.0.0
12
+ */
13
+ constructor(ctx, pathName) {
14
+ /**
15
+ * @member {Context} BaseContextLogger#ctx
16
+ * @since 1.2.0
17
+ */
18
+ this.#ctx = ctx;
19
+ this.#pathName = pathName;
20
+ }
21
+ _log(method, args) {
22
+ // add `[${pathName}]` in log
23
+ if (this.#pathName && typeof args[0] === 'string') {
24
+ args[0] = `[${this.#pathName}] ${args[0]}`;
25
+ }
26
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
27
+ // @ts-ignore
28
+ this.#ctx.app.logger[method](...args);
29
+ }
30
+ /**
31
+ * @member {Function} BaseContextLogger#debug
32
+ * @param {...any} args - log msg
33
+ * @since 1.2.0
34
+ */
35
+ debug(...args) {
36
+ this._log('debug', args);
37
+ }
38
+ /**
39
+ * @member {Function} BaseContextLogger#info
40
+ * @param {...any} args - log msg
41
+ * @since 1.2.0
42
+ */
43
+ info(...args) {
44
+ this._log('info', args);
45
+ }
46
+ /**
47
+ * @member {Function} BaseContextLogger#warn
48
+ * @param {...any} args - log msg
49
+ * @since 1.2.0
50
+ */
51
+ warn(...args) {
52
+ this._log('warn', args);
53
+ }
54
+ /**
55
+ * @member {Function} BaseContextLogger#error
56
+ * @param {...any} args - log msg
57
+ * @since 1.2.0
58
+ */
59
+ error(...args) {
60
+ this._log('error', args);
61
+ }
62
+ }
63
+ exports.BaseContextLogger = BaseContextLogger;
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZV9jb250ZXh0X2xvZ2dlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS9iYXNlX2NvbnRleHRfbG9nZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLE1BQWEsaUJBQWlCO0lBQ25CLElBQUksQ0FBYTtJQUNqQixTQUFTLENBQVU7SUFFNUI7Ozs7O09BS0c7SUFDSCxZQUFZLEdBQWUsRUFBRSxRQUFpQjtRQUM1Qzs7O1dBR0c7UUFDSCxJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztRQUNoQixJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztJQUM1QixDQUFDO0lBRVMsSUFBSSxDQUFDLE1BQTJDLEVBQUUsSUFBVztRQUNyRSw2QkFBNkI7UUFDN0IsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ2xELElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDN0MsQ0FBQztRQUNELDZEQUE2RDtRQUM3RCxhQUFhO1FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsR0FBRyxJQUFXO1FBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBSSxDQUFDLEdBQUcsSUFBVztRQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQUksQ0FBQyxHQUFHLElBQVc7UUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsR0FBRyxJQUFXO1FBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzNCLENBQUM7Q0FDRjtBQWhFRCw4Q0FnRUMifQ==
@@ -0,0 +1,11 @@
1
+ import type { ILifecycleBoot } from '@eggjs/core';
2
+ import type { Application, Agent } from '../../index.js';
3
+ export declare class BaseHookClass implements ILifecycleBoot {
4
+ #private;
5
+ fullPath?: string;
6
+ constructor(instance: Application | Agent);
7
+ get logger(): any;
8
+ get config(): import("../type.js").EggAppConfig;
9
+ get app(): Application;
10
+ get agent(): Agent;
11
+ }
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.BaseHookClass = void 0;
7
+ const node_assert_1 = __importDefault(require("node:assert"));
8
+ class BaseHookClass {
9
+ fullPath;
10
+ #instance;
11
+ constructor(instance) {
12
+ this.#instance = instance;
13
+ }
14
+ get logger() {
15
+ return this.#instance.logger;
16
+ }
17
+ get config() {
18
+ return this.#instance.config;
19
+ }
20
+ get app() {
21
+ (0, node_assert_1.default)(this.#instance.type === 'application', 'agent boot should not use app instance');
22
+ return this.#instance;
23
+ }
24
+ get agent() {
25
+ (0, node_assert_1.default)(this.#instance.type === 'agent', 'app boot should not use agent instance');
26
+ return this.#instance;
27
+ }
28
+ }
29
+ exports.BaseHookClass = BaseHookClass;
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZV9ob29rX2NsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jb3JlL2Jhc2VfaG9va19jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSw4REFBaUM7QUFJakMsTUFBYSxhQUFhO0lBQ3hCLFFBQVEsQ0FBVTtJQUNsQixTQUFTLENBQXNCO0lBRS9CLFlBQVksUUFBNkI7UUFDdkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQUksR0FBRztRQUNMLElBQUEscUJBQU0sRUFBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksS0FBSyxhQUFhLEVBQUUsd0NBQXdDLENBQUMsQ0FBQztRQUN4RixPQUFPLElBQUksQ0FBQyxTQUF3QixDQUFDO0lBQ3ZDLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxJQUFBLHFCQUFNLEVBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFFLHdDQUF3QyxDQUFDLENBQUM7UUFDbEYsT0FBTyxJQUFJLENBQUMsU0FBa0IsQ0FBQztJQUNqQyxDQUFDO0NBQ0Y7QUF6QkQsc0NBeUJDIn0=
@@ -0,0 +1,16 @@
1
+ import type { ContextDelegation, EggApplicationCore } from '../egg.js';
2
+ import type { HttpClientRequestURL, HttpClientRequestOptions } from './httpclient.js';
3
+ export declare class ContextHttpClient {
4
+ ctx: ContextDelegation;
5
+ app: EggApplicationCore;
6
+ constructor(ctx: ContextDelegation);
7
+ /**
8
+ * http request helper base on {@link HttpClient}, it will auto save httpclient log.
9
+ * Keep the same api with {@link Application#curl}.
10
+ *
11
+ * @param {String|Object} url - request url address.
12
+ * @param {Object} [options] - options for request.
13
+ */
14
+ curl<T = any>(url: HttpClientRequestURL, options?: HttpClientRequestOptions): Promise<import("./httpclient.js").HttpClientResponse<T>>;
15
+ request<T = any>(url: HttpClientRequestURL, options?: HttpClientRequestOptions): Promise<import("./httpclient.js").HttpClientResponse<T>>;
16
+ }
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ContextHttpClient = void 0;
4
+ class ContextHttpClient {
5
+ ctx;
6
+ app;
7
+ constructor(ctx) {
8
+ this.ctx = ctx;
9
+ this.app = ctx.app;
10
+ }
11
+ /**
12
+ * http request helper base on {@link HttpClient}, it will auto save httpclient log.
13
+ * Keep the same api with {@link Application#curl}.
14
+ *
15
+ * @param {String|Object} url - request url address.
16
+ * @param {Object} [options] - options for request.
17
+ */
18
+ async curl(url, options) {
19
+ options = {
20
+ ...options,
21
+ ctx: this.ctx,
22
+ };
23
+ return await this.app.curl(url, options);
24
+ }
25
+ async request(url, options) {
26
+ return await this.curl(url, options);
27
+ }
28
+ }
29
+ exports.ContextHttpClient = ContextHttpClient;
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dF9odHRwY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jb3JlL2NvbnRleHRfaHR0cGNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFLQSxNQUFhLGlCQUFpQjtJQUM1QixHQUFHLENBQW9CO0lBQ3ZCLEdBQUcsQ0FBcUI7SUFFeEIsWUFBWSxHQUFzQjtRQUNoQyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNmLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQztJQUNyQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsS0FBSyxDQUFDLElBQUksQ0FBVSxHQUF5QixFQUFFLE9BQWtDO1FBQy9FLE9BQU8sR0FBRztZQUNSLEdBQUcsT0FBTztZQUNWLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztTQUNkLENBQUM7UUFDRixPQUFPLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUksR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTyxDQUFVLEdBQXlCLEVBQUUsT0FBa0M7UUFDbEYsT0FBTyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUksR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzFDLENBQUM7Q0FDRjtBQTNCRCw4Q0EyQkMifQ==
@@ -0,0 +1,13 @@
1
+ import { HttpClient as RawHttpClient, RequestURL as HttpClientRequestURL, RequestOptions } from 'urllib';
2
+ import type { EggApplicationCore, ContextDelegation } from '../egg.js';
3
+ export type { HttpClientResponse, RequestURL as HttpClientRequestURL, } from 'urllib';
4
+ export interface HttpClientRequestOptions extends RequestOptions {
5
+ ctx?: ContextDelegation;
6
+ tracer?: unknown;
7
+ }
8
+ export declare class HttpClient extends RawHttpClient {
9
+ #private;
10
+ constructor(app: EggApplicationCore);
11
+ request<T = any>(url: HttpClientRequestURL, options?: HttpClientRequestOptions): Promise<import("urllib").HttpClientResponse<T>>;
12
+ curl<T = any>(url: HttpClientRequestURL, options?: HttpClientRequestOptions): Promise<import("urllib").HttpClientResponse<T>>;
13
+ }
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HttpClient = void 0;
4
+ const urllib_1 = require("urllib");
5
+ const humanize_ms_1 = require("humanize-ms");
6
+ class HttpClient extends urllib_1.HttpClient {
7
+ #app;
8
+ constructor(app) {
9
+ normalizeConfig(app);
10
+ const config = app.config.httpclient;
11
+ super({
12
+ defaultArgs: config.request,
13
+ });
14
+ this.#app = app;
15
+ }
16
+ async request(url, options) {
17
+ options = options ?? {};
18
+ if (options.ctx?.tracer) {
19
+ options.tracer = options.ctx.tracer;
20
+ }
21
+ else {
22
+ options.tracer = options.tracer ?? this.#app.tracer;
23
+ }
24
+ return await super.request(url, options);
25
+ }
26
+ async curl(url, options) {
27
+ return await this.request(url, options);
28
+ }
29
+ }
30
+ exports.HttpClient = HttpClient;
31
+ function normalizeConfig(app) {
32
+ const config = app.config.httpclient;
33
+ if (typeof config.request?.timeout === 'string') {
34
+ config.request.timeout = (0, humanize_ms_1.ms)(config.request.timeout);
35
+ }
36
+ }
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cGNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS9odHRwY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1DQUlnQjtBQUNoQiw2Q0FBaUM7QUFhakMsTUFBYSxVQUFXLFNBQVEsbUJBQWE7SUFDbEMsSUFBSSxDQUE0QztJQUV6RCxZQUFZLEdBQXVCO1FBQ2pDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNyQixNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQztRQUNyQyxLQUFLLENBQUM7WUFDSixXQUFXLEVBQUUsTUFBTSxDQUFDLE9BQU87U0FDNUIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7SUFDbEIsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPLENBQVUsR0FBeUIsRUFBRSxPQUFrQztRQUNsRixPQUFPLEdBQUcsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUN4QixJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDeEIsT0FBTyxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQztRQUN0QyxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUN0RCxDQUFDO1FBQ0QsT0FBTyxNQUFNLEtBQUssQ0FBQyxPQUFPLENBQUksR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBSSxDQUFVLEdBQXlCLEVBQUUsT0FBa0M7UUFDL0UsT0FBTyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUksR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzdDLENBQUM7Q0FDRjtBQXpCRCxnQ0F5QkM7QUFFRCxTQUFTLGVBQWUsQ0FBQyxHQUF1QjtJQUM5QyxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQztJQUNyQyxJQUFJLE9BQU8sTUFBTSxDQUFDLE9BQU8sRUFBRSxPQUFPLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDaEQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEdBQUcsSUFBQSxnQkFBRSxFQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdEQsQ0FBQztBQUNILENBQUMifQ==
@@ -0,0 +1,3 @@
1
+ import { EggLoggers } from 'egg-logger';
2
+ import type { EggApplicationCore } from '../egg.js';
3
+ export declare function createLoggers(app: EggApplicationCore): EggLoggers;
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createLoggers = createLoggers;
4
+ const egg_logger_1 = require("egg-logger");
5
+ const onelogger_1 = require("onelogger");
6
+ function createLoggers(app) {
7
+ const loggerOptions = {
8
+ ...app.config.logger,
9
+ type: app.type,
10
+ localStorage: app.ctxStorage,
11
+ };
12
+ // set DEBUG level into INFO on prod env
13
+ if (app.config.env === 'prod' && loggerOptions.level === 'DEBUG' && !app.config.logger.allowDebugAtProd) {
14
+ loggerOptions.level = 'INFO';
15
+ }
16
+ const loggers = new egg_logger_1.EggLoggers({
17
+ logger: loggerOptions,
18
+ customLogger: app.config.customLogger,
19
+ });
20
+ // won't print to console after started, except for local and unittest
21
+ app.ready(() => {
22
+ if (app.config.logger.disableConsoleAfterReady) {
23
+ loggers.disableConsole();
24
+ loggers.coreLogger.info('[egg:lib:core:logger] disable console log after app ready');
25
+ }
26
+ });
27
+ // set global logger
28
+ for (const loggerName of Object.keys(loggers)) {
29
+ (0, onelogger_1.setCustomLogger)(loggerName, loggers[loggerName]);
30
+ }
31
+ // reset global logger on beforeClose hook
32
+ app.lifecycle.registerBeforeClose(() => {
33
+ for (const loggerName of Object.keys(loggers)) {
34
+ (0, onelogger_1.setCustomLogger)(loggerName, undefined);
35
+ }
36
+ });
37
+ loggers.coreLogger.info('[egg:lib:core:logger] init all loggers with options: %j', loggerOptions);
38
+ return loggers;
39
+ }
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jb3JlL2xvZ2dlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUlBLHNDQXFDQztBQXpDRCwyQ0FBMkQ7QUFDM0QseUNBQTRDO0FBRzVDLFNBQWdCLGFBQWEsQ0FBQyxHQUF1QjtJQUNuRCxNQUFNLGFBQWEsR0FBRztRQUNwQixHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTTtRQUNwQixJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUk7UUFDZCxZQUFZLEVBQUUsR0FBRyxDQUFDLFVBQVU7S0FDUixDQUFDO0lBRXZCLHdDQUF3QztJQUN4QyxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxLQUFLLE1BQU0sSUFBSSxhQUFhLENBQUMsS0FBSyxLQUFLLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEcsYUFBYSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUM7SUFDL0IsQ0FBQztJQUVELE1BQU0sT0FBTyxHQUFHLElBQUksdUJBQVUsQ0FBQztRQUM3QixNQUFNLEVBQUUsYUFBYTtRQUNyQixZQUFZLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxZQUFZO0tBQ3RDLENBQUMsQ0FBQztJQUVILHNFQUFzRTtJQUN0RSxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRTtRQUNiLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztZQUMvQyxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDekIsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsMkRBQTJELENBQUMsQ0FBQztRQUN2RixDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFSCxvQkFBb0I7SUFDcEIsS0FBSyxNQUFNLFVBQVUsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDOUMsSUFBQSwyQkFBZSxFQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBQ0QsMENBQTBDO0lBQzFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUMsR0FBRyxFQUFFO1FBQ3JDLEtBQUssTUFBTSxVQUFVLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQzlDLElBQUEsMkJBQWUsRUFBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDekMsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMseURBQXlELEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDbEcsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQyJ9
@@ -0,0 +1,50 @@
1
+ import type { EventEmitter } from 'node:events';
2
+ export interface IMessenger extends EventEmitter {
3
+ /**
4
+ * Send message to all agent and app
5
+ * @param {String} action - message key
6
+ * @param {Object} data - message value
7
+ * @return {Messenger} this
8
+ */
9
+ broadcast(action: string, data?: unknown): IMessenger;
10
+ /**
11
+ * send message to the specified process
12
+ * @param {String} workerId - the workerId of the receiver
13
+ * @param {String} action - message key
14
+ * @param {Object} data - message value
15
+ * @return {Messenger} this
16
+ */
17
+ sendTo(workerId: string, action: string, data?: unknown): IMessenger;
18
+ /**
19
+ * send message to one app worker by random
20
+ * - if it's running in agent, it will send to one of app workers
21
+ * - if it's running in app, it will send to agent
22
+ * @param {String} action - message key
23
+ * @param {Object} data - message value
24
+ * @return {Messenger} this
25
+ */
26
+ sendRandom(action: string, data?: unknown): IMessenger;
27
+ /**
28
+ * send message to app
29
+ * @param {String} action - message key
30
+ * @param {Object} data - message value
31
+ * @return {Messenger} this
32
+ */
33
+ sendToApp(action: string, data?: unknown): IMessenger;
34
+ /**
35
+ * send message to agent
36
+ * @param {String} action - message key
37
+ * @param {Object} data - message value
38
+ * @return {Messenger} this
39
+ */
40
+ sendToAgent(action: string, data?: unknown): IMessenger;
41
+ /**
42
+ * @param {String} action - message key
43
+ * @param {Object} data - message value
44
+ * @param {String} to - let master know how to send message
45
+ * @return {Messenger} this
46
+ */
47
+ send(action: string, data: unknown | undefined, to?: string): IMessenger;
48
+ close(): void;
49
+ onMessage(message: any): void;
50
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSU1lc3Nlbmdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS9tZXNzZW5nZXIvSU1lc3Nlbmdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
@@ -0,0 +1,7 @@
1
+ import type { IMessenger } from './IMessenger.js';
2
+ import type { EggApplicationCore } from '../../egg.js';
3
+ export type { IMessenger } from './IMessenger.js';
4
+ /**
5
+ * @class Messenger
6
+ */
7
+ export declare function create(egg: EggApplicationCore): IMessenger;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.create = create;
4
+ const local_js_1 = require("./local.js");
5
+ const ipc_js_1 = require("./ipc.js");
6
+ /**
7
+ * @class Messenger
8
+ */
9
+ function create(egg) {
10
+ return egg.options.mode === 'single'
11
+ ? new local_js_1.Messenger(egg)
12
+ : new ipc_js_1.Messenger(egg);
13
+ }
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvcmUvbWVzc2VuZ2VyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBVUEsd0JBSUM7QUFkRCx5Q0FBeUQ7QUFDekQscUNBQXFEO0FBTXJEOztHQUVHO0FBQ0gsU0FBZ0IsTUFBTSxDQUFDLEdBQXVCO0lBQzVDLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEtBQUssUUFBUTtRQUNsQyxDQUFDLENBQUMsSUFBSSxvQkFBYyxDQUFDLEdBQUcsQ0FBQztRQUN6QixDQUFDLENBQUMsSUFBSSxrQkFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzVCLENBQUMifQ==
@@ -0,0 +1,59 @@
1
+ import { EventEmitter } from 'node:events';
2
+ import type { IMessenger } from './IMessenger.js';
3
+ import type { EggApplicationCore } from '../../egg.js';
4
+ /**
5
+ * Communication between app worker and agent worker by IPC channel
6
+ */
7
+ export declare class Messenger extends EventEmitter implements IMessenger {
8
+ readonly pid: string;
9
+ readonly egg: EggApplicationCore;
10
+ opids: string[];
11
+ constructor(egg: EggApplicationCore);
12
+ /**
13
+ * Send message to all agent and app
14
+ * @param {String} action - message key
15
+ * @param {Object} data - message value
16
+ * @return {Messenger} this
17
+ */
18
+ broadcast(action: string, data?: unknown): Messenger;
19
+ /**
20
+ * send message to the specified process
21
+ * @param {String} workerId - the workerId of the receiver
22
+ * @param {String} action - message key
23
+ * @param {Object} data - message value
24
+ * @return {Messenger} this
25
+ */
26
+ sendTo(workerId: string, action: string, data?: unknown): Messenger;
27
+ /**
28
+ * send message to one app worker by random
29
+ * - if it's running in agent, it will send to one of app workers
30
+ * - if it's running in app, it will send to agent
31
+ * @param {String} action - message key
32
+ * @param {Object} data - message value
33
+ * @return {Messenger} this
34
+ */
35
+ sendRandom(action: string, data?: unknown): Messenger;
36
+ /**
37
+ * send message to app
38
+ * @param {String} action - message key
39
+ * @param {Object} data - message value
40
+ * @return {Messenger} this
41
+ */
42
+ sendToApp(action: string, data?: unknown): Messenger;
43
+ /**
44
+ * send message to agent
45
+ * @param {String} action - message key
46
+ * @param {Object} data - message value
47
+ * @return {Messenger} this
48
+ */
49
+ sendToAgent(action: string, data?: unknown): Messenger;
50
+ /**
51
+ * @param {String} action - message key
52
+ * @param {Object} data - message value
53
+ * @param {String} to - let master know how to send message
54
+ * @return {Messenger} this
55
+ */
56
+ send(action: string, data: unknown | undefined, to?: string): Messenger;
57
+ onMessage(message: any): void;
58
+ close(): void;
59
+ }
@@ -0,0 +1,137 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Messenger = void 0;
7
+ const node_events_1 = require("node:events");
8
+ const node_util_1 = require("node:util");
9
+ const node_worker_threads_1 = __importDefault(require("node:worker_threads"));
10
+ const sendmessage_1 = require("sendmessage");
11
+ const debug = (0, node_util_1.debuglog)('egg/lib/core/messenger/ipc');
12
+ /**
13
+ * Communication between app worker and agent worker by IPC channel
14
+ */
15
+ class Messenger extends node_events_1.EventEmitter {
16
+ pid;
17
+ egg;
18
+ opids = [];
19
+ constructor(egg) {
20
+ super();
21
+ this.pid = String(process.pid);
22
+ this.egg = egg;
23
+ // pids of agent or app managed by master
24
+ // - retrieve app worker pids when it's an agent worker
25
+ // - retrieve agent worker pids when it's an app worker
26
+ this.on('egg-pids', workerIds => {
27
+ debug('[%s:%s] got egg-pids %j', this.egg.type, this.pid, workerIds);
28
+ this.opids = workerIds.map((workerId) => String(workerId));
29
+ });
30
+ this.onMessage = this.onMessage.bind(this);
31
+ process.on('message', this.onMessage);
32
+ if (!node_worker_threads_1.default.isMainThread) {
33
+ node_worker_threads_1.default.parentPort.on('message', this.onMessage);
34
+ }
35
+ }
36
+ /**
37
+ * Send message to all agent and app
38
+ * @param {String} action - message key
39
+ * @param {Object} data - message value
40
+ * @return {Messenger} this
41
+ */
42
+ broadcast(action, data) {
43
+ debug('[%s:%s] broadcast %s with %j', this.egg.type, this.pid, action, data);
44
+ this.send(action, data, 'app');
45
+ this.send(action, data, 'agent');
46
+ return this;
47
+ }
48
+ /**
49
+ * send message to the specified process
50
+ * @param {String} workerId - the workerId of the receiver
51
+ * @param {String} action - message key
52
+ * @param {Object} data - message value
53
+ * @return {Messenger} this
54
+ */
55
+ sendTo(workerId, action, data) {
56
+ debug('[%s:%s] send %s with %j to workerId:%s', this.egg.type, this.pid, action, data, workerId);
57
+ (0, sendmessage_1.sendmessage)(process, {
58
+ action,
59
+ data,
60
+ /**
61
+ * @deprecated Keep compatible, please use receiverWorkerId instead
62
+ */
63
+ receiverPid: String(workerId),
64
+ receiverWorkerId: String(workerId),
65
+ });
66
+ return this;
67
+ }
68
+ /**
69
+ * send message to one app worker by random
70
+ * - if it's running in agent, it will send to one of app workers
71
+ * - if it's running in app, it will send to agent
72
+ * @param {String} action - message key
73
+ * @param {Object} data - message value
74
+ * @return {Messenger} this
75
+ */
76
+ sendRandom(action, data) {
77
+ if (this.opids.length === 0) {
78
+ debug('[%s:%s] no pids, ignore sendRandom %s with %j', this.egg.type, this.pid, action, data);
79
+ return this;
80
+ }
81
+ const index = Math.floor(Math.random() * this.opids.length);
82
+ const workerId = this.opids[index];
83
+ this.sendTo(workerId, action, data);
84
+ return this;
85
+ }
86
+ /**
87
+ * send message to app
88
+ * @param {String} action - message key
89
+ * @param {Object} data - message value
90
+ * @return {Messenger} this
91
+ */
92
+ sendToApp(action, data) {
93
+ debug('[%s:%s] send %s with %j to all app', this.egg.type, this.pid, action, data);
94
+ this.send(action, data, 'app');
95
+ return this;
96
+ }
97
+ /**
98
+ * send message to agent
99
+ * @param {String} action - message key
100
+ * @param {Object} data - message value
101
+ * @return {Messenger} this
102
+ */
103
+ sendToAgent(action, data) {
104
+ debug('[%s:%s] send %s with %j to all agent', this.egg.type, this.pid, action, data);
105
+ this.send(action, data, 'agent');
106
+ return this;
107
+ }
108
+ /**
109
+ * @param {String} action - message key
110
+ * @param {Object} data - message value
111
+ * @param {String} to - let master know how to send message
112
+ * @return {Messenger} this
113
+ */
114
+ send(action, data, to) {
115
+ (0, sendmessage_1.sendmessage)(process, {
116
+ action,
117
+ data,
118
+ to,
119
+ });
120
+ return this;
121
+ }
122
+ onMessage(message) {
123
+ if (typeof message?.action === 'string') {
124
+ debug('[%s:%s] got message %s with %j, receiverWorkerId: %s', this.egg.type, this.pid, message.action, message.data, message.receiverWorkerId ?? message.receiverPid);
125
+ this.emit(message.action, message.data);
126
+ }
127
+ else {
128
+ debug('[%s:%s] got an invalid message %j', this.egg.type, this.pid, message);
129
+ }
130
+ }
131
+ close() {
132
+ process.removeListener('message', this.onMessage);
133
+ this.removeAllListeners();
134
+ }
135
+ }
136
+ exports.Messenger = Messenger;
137
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXBjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb3JlL21lc3Nlbmdlci9pcGMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsNkNBQTJDO0FBQzNDLHlDQUFxQztBQUNyQyw4RUFBZ0Q7QUFDaEQsNkNBQTBDO0FBSTFDLE1BQU0sS0FBSyxHQUFHLElBQUEsb0JBQVEsRUFBQyw0QkFBNEIsQ0FBQyxDQUFDO0FBRXJEOztHQUVHO0FBQ0gsTUFBYSxTQUFVLFNBQVEsMEJBQVk7SUFDaEMsR0FBRyxDQUFTO0lBQ1osR0FBRyxDQUFxQjtJQUNqQyxLQUFLLEdBQWEsRUFBRSxDQUFDO0lBRXJCLFlBQVksR0FBdUI7UUFDakMsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDZix5Q0FBeUM7UUFDekMsdURBQXVEO1FBQ3ZELHVEQUF1RDtRQUN2RCxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsRUFBRTtZQUM5QixLQUFLLENBQUMseUJBQXlCLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUNyRSxJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFnQixFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUNyRSxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0MsT0FBTyxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxD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
@@ -0,0 +1,61 @@
1
+ import EventEmitter from 'node:events';
2
+ import type { IMessenger } from './IMessenger.js';
3
+ import type { EggApplicationCore } from '../../egg.js';
4
+ /**
5
+ * Communication between app worker and agent worker with EventEmitter
6
+ */
7
+ export declare class Messenger extends EventEmitter implements IMessenger {
8
+ readonly pid: string;
9
+ readonly egg: EggApplicationCore;
10
+ constructor(egg: EggApplicationCore);
11
+ /**
12
+ * Send message to all agent and app
13
+ * @param {String} action - message key
14
+ * @param {Object} data - message value
15
+ * @return {Messenger} this
16
+ */
17
+ broadcast(action: string, data?: unknown): Messenger;
18
+ /**
19
+ * send message to the specified process
20
+ * Notice: in single process mode, it only can send to self process,
21
+ * and it will send to both agent and app's messengers.
22
+ * @param {String} workerId - the workerId of the receiver
23
+ * @param {String} action - message key
24
+ * @param {Object} data - message value
25
+ * @return {Messenger} this
26
+ */
27
+ sendTo(workerId: string, action: string, data?: unknown): Messenger;
28
+ /**
29
+ * send message to one worker by random
30
+ * Notice: in single process mode, we only start one agent worker and one app worker
31
+ * - if it's running in agent, it will send to one of app workers
32
+ * - if it's running in app, it will send to agent
33
+ * @param {String} action - message key
34
+ * @param {Object} data - message value
35
+ * @return {Messenger} this
36
+ */
37
+ sendRandom(action: string, data?: unknown): Messenger;
38
+ /**
39
+ * send message to app
40
+ * @param {String} action - message key
41
+ * @param {Object} data - message value
42
+ * @return {Messenger} this
43
+ */
44
+ sendToApp(action: string, data?: unknown): Messenger;
45
+ /**
46
+ * send message to agent
47
+ * @param {String} action - message key
48
+ * @param {Object} data - message value
49
+ * @return {Messenger} this
50
+ */
51
+ sendToAgent(action: string, data?: unknown): Messenger;
52
+ /**
53
+ * @param {String} action - message key
54
+ * @param {Object} data - message value
55
+ * @param {String} to - let master know how to send message
56
+ * @return {Messenger} this
57
+ */
58
+ send(action: string, data: unknown | undefined, to?: string): Messenger;
59
+ onMessage(message: any): void;
60
+ close(): void;
61
+ }