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,60 @@
1
+ export class BaseContextLogger {
2
+ #ctx;
3
+ #pathName;
4
+ /**
5
+ * @class
6
+ * @param {Context} ctx - context instance
7
+ * @param {String} pathName - class path name
8
+ * @since 1.0.0
9
+ */
10
+ constructor(ctx, pathName) {
11
+ /**
12
+ * @member {Context} BaseContextLogger#ctx
13
+ * @since 1.2.0
14
+ */
15
+ this.#ctx = ctx;
16
+ this.#pathName = pathName;
17
+ }
18
+ _log(method, args) {
19
+ // add `[${pathName}]` in log
20
+ if (this.#pathName && typeof args[0] === 'string') {
21
+ args[0] = `[${this.#pathName}] ${args[0]}`;
22
+ }
23
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
24
+ // @ts-ignore
25
+ this.#ctx.app.logger[method](...args);
26
+ }
27
+ /**
28
+ * @member {Function} BaseContextLogger#debug
29
+ * @param {...any} args - log msg
30
+ * @since 1.2.0
31
+ */
32
+ debug(...args) {
33
+ this._log('debug', args);
34
+ }
35
+ /**
36
+ * @member {Function} BaseContextLogger#info
37
+ * @param {...any} args - log msg
38
+ * @since 1.2.0
39
+ */
40
+ info(...args) {
41
+ this._log('info', args);
42
+ }
43
+ /**
44
+ * @member {Function} BaseContextLogger#warn
45
+ * @param {...any} args - log msg
46
+ * @since 1.2.0
47
+ */
48
+ warn(...args) {
49
+ this._log('warn', args);
50
+ }
51
+ /**
52
+ * @member {Function} BaseContextLogger#error
53
+ * @param {...any} args - log msg
54
+ * @since 1.2.0
55
+ */
56
+ error(...args) {
57
+ this._log('error', args);
58
+ }
59
+ }
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZV9jb250ZXh0X2xvZ2dlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS9iYXNlX2NvbnRleHRfbG9nZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyxpQkFBaUI7SUFDbkIsSUFBSSxDQUFhO0lBQ2pCLFNBQVMsQ0FBVTtJQUU1Qjs7Ozs7T0FLRztJQUNILFlBQVksR0FBZSxFQUFFLFFBQWlCO1FBQzVDOzs7V0FHRztRQUNILElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO1FBQ2hCLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO0lBQzVCLENBQUM7SUFFUyxJQUFJLENBQUMsTUFBMkMsRUFBRSxJQUFXO1FBQ3JFLDZCQUE2QjtRQUM3QixJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDbEQsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUM3QyxDQUFDO1FBQ0QsNkRBQTZEO1FBQzdELGFBQWE7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxHQUFHLElBQVc7UUFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUFJLENBQUMsR0FBRyxJQUFXO1FBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBSSxDQUFDLEdBQUcsSUFBVztRQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxHQUFHLElBQVc7UUFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDM0IsQ0FBQztDQUNGIn0=
@@ -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,23 @@
1
+ import assert from 'node:assert';
2
+ export class BaseHookClass {
3
+ fullPath;
4
+ #instance;
5
+ constructor(instance) {
6
+ this.#instance = instance;
7
+ }
8
+ get logger() {
9
+ return this.#instance.logger;
10
+ }
11
+ get config() {
12
+ return this.#instance.config;
13
+ }
14
+ get app() {
15
+ assert(this.#instance.type === 'application', 'agent boot should not use app instance');
16
+ return this.#instance;
17
+ }
18
+ get agent() {
19
+ assert(this.#instance.type === 'agent', 'app boot should not use agent instance');
20
+ return this.#instance;
21
+ }
22
+ }
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZV9ob29rX2NsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jb3JlL2Jhc2VfaG9va19jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE1BQU0sTUFBTSxhQUFhLENBQUM7QUFJakMsTUFBTSxPQUFPLGFBQWE7SUFDeEIsUUFBUSxDQUFVO0lBQ2xCLFNBQVMsQ0FBc0I7SUFFL0IsWUFBWSxRQUE2QjtRQUN2QyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxHQUFHO1FBQ0wsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxLQUFLLGFBQWEsRUFBRSx3Q0FBd0MsQ0FBQyxDQUFDO1FBQ3hGLE9BQU8sSUFBSSxDQUFDLFNBQXdCLENBQUM7SUFDdkMsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUUsd0NBQXdDLENBQUMsQ0FBQztRQUNsRixPQUFPLElBQUksQ0FBQyxTQUFrQixDQUFDO0lBQ2pDLENBQUM7Q0FDRiJ9
@@ -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,26 @@
1
+ export class ContextHttpClient {
2
+ ctx;
3
+ app;
4
+ constructor(ctx) {
5
+ this.ctx = ctx;
6
+ this.app = ctx.app;
7
+ }
8
+ /**
9
+ * http request helper base on {@link HttpClient}, it will auto save httpclient log.
10
+ * Keep the same api with {@link Application#curl}.
11
+ *
12
+ * @param {String|Object} url - request url address.
13
+ * @param {Object} [options] - options for request.
14
+ */
15
+ async curl(url, options) {
16
+ options = {
17
+ ...options,
18
+ ctx: this.ctx,
19
+ };
20
+ return await this.app.curl(url, options);
21
+ }
22
+ async request(url, options) {
23
+ return await this.curl(url, options);
24
+ }
25
+ }
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dF9odHRwY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jb3JlL2NvbnRleHRfaHR0cGNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxNQUFNLE9BQU8saUJBQWlCO0lBQzVCLEdBQUcsQ0FBb0I7SUFDdkIsR0FBRyxDQUFxQjtJQUV4QixZQUFZLEdBQXNCO1FBQ2hDLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxLQUFLLENBQUMsSUFBSSxDQUFVLEdBQXlCLEVBQUUsT0FBa0M7UUFDL0UsT0FBTyxHQUFHO1lBQ1IsR0FBRyxPQUFPO1lBQ1YsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO1NBQ2QsQ0FBQztRQUNGLE9BQU8sTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBSSxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPLENBQVUsR0FBeUIsRUFBRSxPQUFrQztRQUNsRixPQUFPLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBSSxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDMUMsQ0FBQztDQUNGIn0=
@@ -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,33 @@
1
+ import { HttpClient as RawHttpClient, } from 'urllib';
2
+ import { ms } from 'humanize-ms';
3
+ export class HttpClient extends RawHttpClient {
4
+ #app;
5
+ constructor(app) {
6
+ normalizeConfig(app);
7
+ const config = app.config.httpclient;
8
+ super({
9
+ defaultArgs: config.request,
10
+ });
11
+ this.#app = app;
12
+ }
13
+ async request(url, options) {
14
+ options = options ?? {};
15
+ if (options.ctx?.tracer) {
16
+ options.tracer = options.ctx.tracer;
17
+ }
18
+ else {
19
+ options.tracer = options.tracer ?? this.#app.tracer;
20
+ }
21
+ return await super.request(url, options);
22
+ }
23
+ async curl(url, options) {
24
+ return await this.request(url, options);
25
+ }
26
+ }
27
+ function normalizeConfig(app) {
28
+ const config = app.config.httpclient;
29
+ if (typeof config.request?.timeout === 'string') {
30
+ config.request.timeout = ms(config.request.timeout);
31
+ }
32
+ }
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cGNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS9odHRwY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxVQUFVLElBQUksYUFBYSxHQUc1QixNQUFNLFFBQVEsQ0FBQztBQUNoQixPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBYWpDLE1BQU0sT0FBTyxVQUFXLFNBQVEsYUFBYTtJQUNsQyxJQUFJLENBQTRDO0lBRXpELFlBQVksR0FBdUI7UUFDakMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3JCLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDO1FBQ3JDLEtBQUssQ0FBQztZQUNKLFdBQVcsRUFBRSxNQUFNLENBQUMsT0FBTztTQUM1QixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztJQUNsQixDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU8sQ0FBVSxHQUF5QixFQUFFLE9BQWtDO1FBQ2xGLE9BQU8sR0FBRyxPQUFPLElBQUksRUFBRSxDQUFDO1FBQ3hCLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUN4QixPQUFPLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDO1FBQ3RDLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ3RELENBQUM7UUFDRCxPQUFPLE1BQU0sS0FBSyxDQUFDLE9BQU8sQ0FBSSxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFJLENBQVUsR0FBeUIsRUFBRSxPQUFrQztRQUMvRSxPQUFPLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBSSxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDN0MsQ0FBQztDQUNGO0FBRUQsU0FBUyxlQUFlLENBQUMsR0FBdUI7SUFDOUMsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7SUFDckMsSUFBSSxPQUFPLE1BQU0sQ0FBQyxPQUFPLEVBQUUsT0FBTyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ2hELE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3RELENBQUM7QUFDSCxDQUFDIn0=
@@ -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,37 @@
1
+ import { EggLoggers } from 'egg-logger';
2
+ import { setCustomLogger } from 'onelogger';
3
+ export function createLoggers(app) {
4
+ const loggerOptions = {
5
+ ...app.config.logger,
6
+ type: app.type,
7
+ localStorage: app.ctxStorage,
8
+ };
9
+ // set DEBUG level into INFO on prod env
10
+ if (app.config.env === 'prod' && loggerOptions.level === 'DEBUG' && !app.config.logger.allowDebugAtProd) {
11
+ loggerOptions.level = 'INFO';
12
+ }
13
+ const loggers = new EggLoggers({
14
+ logger: loggerOptions,
15
+ customLogger: app.config.customLogger,
16
+ });
17
+ // won't print to console after started, except for local and unittest
18
+ app.ready(() => {
19
+ if (app.config.logger.disableConsoleAfterReady) {
20
+ loggers.disableConsole();
21
+ loggers.coreLogger.info('[egg:lib:core:logger] disable console log after app ready');
22
+ }
23
+ });
24
+ // set global logger
25
+ for (const loggerName of Object.keys(loggers)) {
26
+ setCustomLogger(loggerName, loggers[loggerName]);
27
+ }
28
+ // reset global logger on beforeClose hook
29
+ app.lifecycle.registerBeforeClose(() => {
30
+ for (const loggerName of Object.keys(loggers)) {
31
+ setCustomLogger(loggerName, undefined);
32
+ }
33
+ });
34
+ loggers.coreLogger.info('[egg:lib:core:logger] init all loggers with options: %j', loggerOptions);
35
+ return loggers;
36
+ }
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jb3JlL2xvZ2dlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFxQixNQUFNLFlBQVksQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRzVDLE1BQU0sVUFBVSxhQUFhLENBQUMsR0FBdUI7SUFDbkQsTUFBTSxhQUFhLEdBQUc7UUFDcEIsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU07UUFDcEIsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJO1FBQ2QsWUFBWSxFQUFFLEdBQUcsQ0FBQyxVQUFVO0tBQ1IsQ0FBQztJQUV2Qix3Q0FBd0M7SUFDeEMsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxNQUFNLElBQUksYUFBYSxDQUFDLEtBQUssS0FBSyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hHLGFBQWEsQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDO0lBQy9CLENBQUM7SUFFRCxNQUFNLE9BQU8sR0FBRyxJQUFJLFVBQVUsQ0FBQztRQUM3QixNQUFNLEVBQUUsYUFBYTtRQUNyQixZQUFZLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxZQUFZO0tBQ3RDLENBQUMsQ0FBQztJQUVILHNFQUFzRTtJQUN0RSxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRTtRQUNiLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztZQUMvQyxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDekIsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsMkRBQTJELENBQUMsQ0FBQztRQUN2RixDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFSCxvQkFBb0I7SUFDcEIsS0FBSyxNQUFNLFVBQVUsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDOUMsZUFBZSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBQ0QsMENBQTBDO0lBQzFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUMsR0FBRyxFQUFFO1FBQ3JDLEtBQUssTUFBTSxVQUFVLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQzlDLGVBQWUsQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDekMsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMseURBQXlELEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDbEcsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQyJ9
@@ -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,2 @@
1
+ export {};
2
+ //# 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,11 @@
1
+ import { Messenger as LocalMessenger } from './local.js';
2
+ import { Messenger as IPCMessenger } from './ipc.js';
3
+ /**
4
+ * @class Messenger
5
+ */
6
+ export function create(egg) {
7
+ return egg.options.mode === 'single'
8
+ ? new LocalMessenger(egg)
9
+ : new IPCMessenger(egg);
10
+ }
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvcmUvbWVzc2VuZ2VyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLElBQUksY0FBYyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLElBQUksWUFBWSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBTXJEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLE1BQU0sQ0FBQyxHQUF1QjtJQUM1QyxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLFFBQVE7UUFDbEMsQ0FBQyxDQUFDLElBQUksY0FBYyxDQUFDLEdBQUcsQ0FBQztRQUN6QixDQUFDLENBQUMsSUFBSSxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDNUIsQ0FBQyJ9
@@ -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,130 @@
1
+ import { EventEmitter } from 'node:events';
2
+ import { debuglog } from 'node:util';
3
+ import workerThreads from 'node:worker_threads';
4
+ import { sendmessage } from 'sendmessage';
5
+ const debug = debuglog('egg/lib/core/messenger/ipc');
6
+ /**
7
+ * Communication between app worker and agent worker by IPC channel
8
+ */
9
+ export class Messenger extends EventEmitter {
10
+ pid;
11
+ egg;
12
+ opids = [];
13
+ constructor(egg) {
14
+ super();
15
+ this.pid = String(process.pid);
16
+ this.egg = egg;
17
+ // pids of agent or app managed by master
18
+ // - retrieve app worker pids when it's an agent worker
19
+ // - retrieve agent worker pids when it's an app worker
20
+ this.on('egg-pids', workerIds => {
21
+ debug('[%s:%s] got egg-pids %j', this.egg.type, this.pid, workerIds);
22
+ this.opids = workerIds.map((workerId) => String(workerId));
23
+ });
24
+ this.onMessage = this.onMessage.bind(this);
25
+ process.on('message', this.onMessage);
26
+ if (!workerThreads.isMainThread) {
27
+ workerThreads.parentPort.on('message', this.onMessage);
28
+ }
29
+ }
30
+ /**
31
+ * Send message to all agent and app
32
+ * @param {String} action - message key
33
+ * @param {Object} data - message value
34
+ * @return {Messenger} this
35
+ */
36
+ broadcast(action, data) {
37
+ debug('[%s:%s] broadcast %s with %j', this.egg.type, this.pid, action, data);
38
+ this.send(action, data, 'app');
39
+ this.send(action, data, 'agent');
40
+ return this;
41
+ }
42
+ /**
43
+ * send message to the specified process
44
+ * @param {String} workerId - the workerId of the receiver
45
+ * @param {String} action - message key
46
+ * @param {Object} data - message value
47
+ * @return {Messenger} this
48
+ */
49
+ sendTo(workerId, action, data) {
50
+ debug('[%s:%s] send %s with %j to workerId:%s', this.egg.type, this.pid, action, data, workerId);
51
+ sendmessage(process, {
52
+ action,
53
+ data,
54
+ /**
55
+ * @deprecated Keep compatible, please use receiverWorkerId instead
56
+ */
57
+ receiverPid: String(workerId),
58
+ receiverWorkerId: String(workerId),
59
+ });
60
+ return this;
61
+ }
62
+ /**
63
+ * send message to one app worker by random
64
+ * - if it's running in agent, it will send to one of app workers
65
+ * - if it's running in app, it will send to agent
66
+ * @param {String} action - message key
67
+ * @param {Object} data - message value
68
+ * @return {Messenger} this
69
+ */
70
+ sendRandom(action, data) {
71
+ if (this.opids.length === 0) {
72
+ debug('[%s:%s] no pids, ignore sendRandom %s with %j', this.egg.type, this.pid, action, data);
73
+ return this;
74
+ }
75
+ const index = Math.floor(Math.random() * this.opids.length);
76
+ const workerId = this.opids[index];
77
+ this.sendTo(workerId, action, data);
78
+ return this;
79
+ }
80
+ /**
81
+ * send message to app
82
+ * @param {String} action - message key
83
+ * @param {Object} data - message value
84
+ * @return {Messenger} this
85
+ */
86
+ sendToApp(action, data) {
87
+ debug('[%s:%s] send %s with %j to all app', this.egg.type, this.pid, action, data);
88
+ this.send(action, data, 'app');
89
+ return this;
90
+ }
91
+ /**
92
+ * send message to agent
93
+ * @param {String} action - message key
94
+ * @param {Object} data - message value
95
+ * @return {Messenger} this
96
+ */
97
+ sendToAgent(action, data) {
98
+ debug('[%s:%s] send %s with %j to all agent', this.egg.type, this.pid, action, data);
99
+ this.send(action, data, 'agent');
100
+ return this;
101
+ }
102
+ /**
103
+ * @param {String} action - message key
104
+ * @param {Object} data - message value
105
+ * @param {String} to - let master know how to send message
106
+ * @return {Messenger} this
107
+ */
108
+ send(action, data, to) {
109
+ sendmessage(process, {
110
+ action,
111
+ data,
112
+ to,
113
+ });
114
+ return this;
115
+ }
116
+ onMessage(message) {
117
+ if (typeof message?.action === 'string') {
118
+ debug('[%s:%s] got message %s with %j, receiverWorkerId: %s', this.egg.type, this.pid, message.action, message.data, message.receiverWorkerId ?? message.receiverPid);
119
+ this.emit(message.action, message.data);
120
+ }
121
+ else {
122
+ debug('[%s:%s] got an invalid message %j', this.egg.type, this.pid, message);
123
+ }
124
+ }
125
+ close() {
126
+ process.removeListener('message', this.onMessage);
127
+ this.removeAllListeners();
128
+ }
129
+ }
130
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXBjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb3JlL21lc3Nlbmdlci9pcGMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMzQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3JDLE9BQU8sYUFBYSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFJMUMsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLDRCQUE0QixDQUFDLENBQUM7QUFFckQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sU0FBVSxTQUFRLFlBQVk7SUFDaEMsR0FBRyxDQUFTO0lBQ1osR0FBRyxDQUFxQjtJQUNqQyxLQUFLLEdBQWEsRUFBRSxDQUFDO0lBRXJCLFlBQVksR0FBdUI7UUFDakMsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDZix5Q0FBeUM7UUFDekMsdURBQXVEO1FBQ3ZELHVEQUF1RDtRQUN2RCxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsRUFBRTtZQUM5QixLQUFLLENBQUMseUJBQXlCLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUNyRSxJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFnQixFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUNyRSxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxD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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
+ }