egg 3.26.1 → 4.0.0-beta.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 (196) hide show
  1. package/README.md +1 -1
  2. package/README.zh-CN.md +6 -5
  3. package/dist/commonjs/agent.d.ts +4 -0
  4. package/dist/commonjs/agent.js +10 -0
  5. package/dist/commonjs/app/middleware/body_parser.d.ts +2 -0
  6. package/dist/commonjs/app/middleware/body_parser.js +8 -0
  7. package/dist/commonjs/app/middleware/meta.d.ts +11 -0
  8. package/dist/commonjs/app/middleware/meta.js +22 -0
  9. package/dist/commonjs/app/middleware/notfound.d.ts +8 -0
  10. package/dist/commonjs/app/middleware/notfound.js +31 -0
  11. package/dist/commonjs/app/middleware/override_method.d.ts +2 -0
  12. package/dist/commonjs/app/middleware/override_method.js +8 -0
  13. package/dist/commonjs/app/middleware/site_file.d.ts +7 -0
  14. package/dist/commonjs/app/middleware/site_file.js +40 -0
  15. package/dist/commonjs/config/config.default.d.ts +9 -0
  16. package/dist/commonjs/config/config.default.js +378 -0
  17. package/dist/commonjs/config/config.local.d.ts +8 -0
  18. package/dist/commonjs/config/config.local.js +12 -0
  19. package/dist/commonjs/config/config.unittest.d.ts +7 -0
  20. package/dist/commonjs/config/config.unittest.js +11 -0
  21. package/dist/commonjs/config/plugin.d.ts +122 -0
  22. package/dist/commonjs/config/plugin.js +125 -0
  23. package/dist/commonjs/index.d.ts +61 -0
  24. package/dist/commonjs/index.js +89 -0
  25. package/dist/commonjs/lib/agent.d.ts +19 -0
  26. package/dist/commonjs/lib/agent.js +58 -0
  27. package/dist/commonjs/lib/application.d.ts +66 -0
  28. package/dist/commonjs/lib/application.js +281 -0
  29. package/dist/commonjs/lib/core/base_context_class.d.ts +14 -0
  30. package/dist/commonjs/lib/core/base_context_class.js +22 -0
  31. package/dist/commonjs/lib/core/base_context_logger.d.ts +36 -0
  32. package/dist/commonjs/lib/core/base_context_logger.js +64 -0
  33. package/dist/commonjs/lib/core/base_hook_class.d.ts +11 -0
  34. package/dist/commonjs/lib/core/base_hook_class.js +30 -0
  35. package/dist/commonjs/lib/core/context_httpclient.d.ts +16 -0
  36. package/dist/commonjs/lib/core/context_httpclient.js +30 -0
  37. package/dist/commonjs/lib/core/httpclient.d.ts +14 -0
  38. package/dist/commonjs/lib/core/httpclient.js +40 -0
  39. package/dist/commonjs/lib/core/logger.d.ts +3 -0
  40. package/dist/commonjs/lib/core/logger.js +40 -0
  41. package/dist/commonjs/lib/core/messenger/IMessenger.d.ts +50 -0
  42. package/dist/commonjs/lib/core/messenger/IMessenger.js +3 -0
  43. package/dist/commonjs/lib/core/messenger/index.d.ts +7 -0
  44. package/dist/commonjs/lib/core/messenger/index.js +14 -0
  45. package/dist/commonjs/lib/core/messenger/ipc.d.ts +57 -0
  46. package/dist/commonjs/lib/core/messenger/ipc.js +126 -0
  47. package/dist/commonjs/lib/core/messenger/local.d.ts +61 -0
  48. package/dist/commonjs/lib/core/messenger/local.js +134 -0
  49. package/dist/commonjs/lib/core/singleton.d.ts +23 -0
  50. package/dist/commonjs/lib/core/singleton.js +120 -0
  51. package/dist/commonjs/lib/core/utils.d.ts +2 -0
  52. package/dist/commonjs/lib/core/utils.js +77 -0
  53. package/dist/commonjs/lib/egg.d.ts +267 -0
  54. package/dist/commonjs/lib/egg.js +595 -0
  55. package/dist/commonjs/lib/loader/AgentWorkerLoader.d.ts +12 -0
  56. package/dist/commonjs/lib/loader/AgentWorkerLoader.js +24 -0
  57. package/dist/commonjs/lib/loader/AppWorkerLoader.d.ts +17 -0
  58. package/dist/commonjs/lib/loader/AppWorkerLoader.js +43 -0
  59. package/dist/commonjs/lib/loader/EggApplicationLoader.d.ts +4 -0
  60. package/dist/commonjs/lib/loader/EggApplicationLoader.js +8 -0
  61. package/dist/commonjs/lib/loader/index.d.ts +3 -0
  62. package/dist/commonjs/lib/loader/index.js +22 -0
  63. package/dist/commonjs/lib/start.d.ts +15 -0
  64. package/dist/commonjs/lib/start.js +49 -0
  65. package/dist/commonjs/lib/type.d.ts +295 -0
  66. package/dist/commonjs/lib/type.js +3 -0
  67. package/dist/commonjs/package.json +3 -0
  68. package/dist/esm/agent.d.ts +4 -0
  69. package/dist/esm/agent.js +7 -0
  70. package/dist/esm/app/middleware/body_parser.d.ts +2 -0
  71. package/dist/esm/app/middleware/body_parser.js +3 -0
  72. package/dist/esm/app/middleware/meta.d.ts +11 -0
  73. package/dist/esm/app/middleware/meta.js +20 -0
  74. package/dist/esm/app/middleware/notfound.d.ts +8 -0
  75. package/dist/esm/app/middleware/notfound.js +29 -0
  76. package/dist/esm/app/middleware/override_method.d.ts +2 -0
  77. package/dist/esm/app/middleware/override_method.js +3 -0
  78. package/dist/esm/app/middleware/site_file.d.ts +7 -0
  79. package/dist/esm/app/middleware/site_file.js +35 -0
  80. package/dist/esm/config/config.default.d.ts +9 -0
  81. package/dist/esm/config/config.default.js +373 -0
  82. package/dist/esm/config/config.local.d.ts +8 -0
  83. package/dist/esm/config/config.local.js +10 -0
  84. package/dist/esm/config/config.unittest.d.ts +7 -0
  85. package/dist/esm/config/config.unittest.js +9 -0
  86. package/dist/esm/config/favicon.png +0 -0
  87. package/dist/esm/config/plugin.d.ts +122 -0
  88. package/dist/esm/config/plugin.js +123 -0
  89. package/dist/esm/index.d.ts +61 -0
  90. package/dist/esm/index.js +65 -0
  91. package/dist/esm/lib/agent.d.ts +19 -0
  92. package/dist/esm/lib/agent.js +54 -0
  93. package/dist/esm/lib/application.d.ts +66 -0
  94. package/dist/esm/lib/application.js +274 -0
  95. package/dist/esm/lib/core/base_context_class.d.ts +14 -0
  96. package/dist/esm/lib/core/base_context_class.js +18 -0
  97. package/dist/esm/lib/core/base_context_logger.d.ts +36 -0
  98. package/dist/esm/lib/core/base_context_logger.js +60 -0
  99. package/dist/esm/lib/core/base_hook_class.d.ts +11 -0
  100. package/dist/esm/lib/core/base_hook_class.js +23 -0
  101. package/dist/esm/lib/core/context_httpclient.d.ts +16 -0
  102. package/dist/esm/lib/core/context_httpclient.js +26 -0
  103. package/dist/esm/lib/core/httpclient.d.ts +14 -0
  104. package/dist/esm/lib/core/httpclient.js +33 -0
  105. package/dist/esm/lib/core/logger.d.ts +3 -0
  106. package/dist/esm/lib/core/logger.js +37 -0
  107. package/dist/esm/lib/core/messenger/IMessenger.d.ts +50 -0
  108. package/dist/esm/lib/core/messenger/IMessenger.js +2 -0
  109. package/dist/esm/lib/core/messenger/index.d.ts +7 -0
  110. package/dist/esm/lib/core/messenger/index.js +11 -0
  111. package/dist/esm/lib/core/messenger/ipc.d.ts +57 -0
  112. package/dist/esm/lib/core/messenger/ipc.js +119 -0
  113. package/dist/esm/lib/core/messenger/local.d.ts +61 -0
  114. package/dist/esm/lib/core/messenger/local.js +127 -0
  115. package/dist/esm/lib/core/singleton.d.ts +23 -0
  116. package/dist/esm/lib/core/singleton.js +113 -0
  117. package/dist/esm/lib/core/utils.d.ts +2 -0
  118. package/dist/esm/lib/core/utils.js +70 -0
  119. package/dist/esm/lib/egg.d.ts +267 -0
  120. package/dist/esm/lib/egg.js +565 -0
  121. package/dist/esm/lib/loader/AgentWorkerLoader.d.ts +12 -0
  122. package/dist/esm/lib/loader/AgentWorkerLoader.js +20 -0
  123. package/dist/esm/lib/loader/AppWorkerLoader.d.ts +17 -0
  124. package/dist/esm/lib/loader/AppWorkerLoader.js +39 -0
  125. package/dist/esm/lib/loader/EggApplicationLoader.d.ts +4 -0
  126. package/dist/esm/lib/loader/EggApplicationLoader.js +4 -0
  127. package/dist/esm/lib/loader/index.d.ts +3 -0
  128. package/dist/esm/lib/loader/index.js +4 -0
  129. package/dist/esm/lib/start.d.ts +15 -0
  130. package/dist/esm/lib/start.js +43 -0
  131. package/dist/esm/lib/type.d.ts +295 -0
  132. package/dist/esm/lib/type.js +2 -0
  133. package/dist/esm/package.json +3 -0
  134. package/dist/package.json +4 -0
  135. package/package.json +83 -70
  136. package/src/agent.ts +7 -0
  137. package/src/app/middleware/body_parser.ts +3 -0
  138. package/{app/middleware/meta.js → src/app/middleware/meta.ts} +12 -4
  139. package/{app/middleware/notfound.js → src/app/middleware/notfound.ts} +9 -3
  140. package/src/app/middleware/override_method.ts +3 -0
  141. package/src/app/middleware/site_file.ts +49 -0
  142. package/{config/config.default.js → src/config/config.default.ts} +21 -42
  143. package/src/config/config.local.ts +11 -0
  144. package/src/config/config.unittest.ts +10 -0
  145. package/src/config/favicon.png +0 -0
  146. package/{config/plugin.js → src/config/plugin.ts} +1 -3
  147. package/src/index.ts +78 -0
  148. package/src/lib/agent.ts +66 -0
  149. package/{lib/application.js → src/lib/application.ts} +79 -120
  150. package/src/lib/core/base_context_class.ts +21 -0
  151. package/src/lib/core/base_context_logger.ts +67 -0
  152. package/src/lib/core/base_hook_class.ts +30 -0
  153. package/src/lib/core/context_httpclient.ts +33 -0
  154. package/src/lib/core/httpclient.ts +52 -0
  155. package/src/lib/core/logger.ts +42 -0
  156. package/src/lib/core/messenger/IMessenger.ts +58 -0
  157. package/src/lib/core/messenger/index.ts +15 -0
  158. package/{lib/core/messenger/ipc.js → src/lib/core/messenger/ipc.ts} +25 -29
  159. package/{lib/core/messenger/local.js → src/lib/core/messenger/local.ts} +27 -21
  160. package/{lib/core/singleton.js → src/lib/core/singleton.ts} +56 -33
  161. package/src/lib/core/utils.ts +77 -0
  162. package/{lib/egg.js → src/lib/egg.ts} +252 -218
  163. package/src/lib/loader/AgentWorkerLoader.ts +21 -0
  164. package/src/lib/loader/AppWorkerLoader.ts +42 -0
  165. package/src/lib/loader/EggApplicationLoader.ts +5 -0
  166. package/src/lib/loader/index.ts +3 -0
  167. package/src/lib/start.ts +56 -0
  168. package/src/lib/type.ts +329 -0
  169. package/agent.js +0 -11
  170. package/app/middleware/body_parser.js +0 -3
  171. package/app/middleware/override_method.js +0 -3
  172. package/app/middleware/site_file.js +0 -31
  173. package/config/config.local.js +0 -7
  174. package/config/config.unittest.js +0 -8
  175. package/index.d.ts +0 -1285
  176. package/index.js +0 -68
  177. package/lib/agent.js +0 -95
  178. package/lib/core/base_context_class.js +0 -20
  179. package/lib/core/base_context_logger.js +0 -64
  180. package/lib/core/base_hook_class.js +0 -31
  181. package/lib/core/context_httpclient.js +0 -26
  182. package/lib/core/dnscache_httpclient.js +0 -93
  183. package/lib/core/httpclient.js +0 -108
  184. package/lib/core/httpclient_next.js +0 -45
  185. package/lib/core/logger.js +0 -35
  186. package/lib/core/messenger/index.js +0 -14
  187. package/lib/core/utils.js +0 -73
  188. package/lib/loader/agent_worker_loader.js +0 -27
  189. package/lib/loader/app_worker_loader.js +0 -48
  190. package/lib/loader/index.js +0 -5
  191. package/lib/start.js +0 -39
  192. /package/{config → dist/commonjs/config}/favicon.png +0 -0
  193. /package/{app → src/app}/extend/context.js +0 -0
  194. /package/{app → src/app}/extend/helper.js +0 -0
  195. /package/{app → src/app}/extend/request.js +0 -0
  196. /package/{app → src/app}/extend/response.js +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(): import("egg-logger").EggLogger;
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 { EggContext, EggApplicationCore } from '../egg.js';
2
+ import type { HttpClientRequestURL, HttpClientRequestOptions } from './httpclient.js';
3
+ export declare class ContextHttpClient {
4
+ ctx: EggContext;
5
+ app: EggApplicationCore;
6
+ constructor(ctx: EggContext);
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dF9odHRwY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jb3JlL2NvbnRleHRfaHR0cGNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxNQUFNLE9BQU8saUJBQWlCO0lBQzVCLEdBQUcsQ0FBYTtJQUNoQixHQUFHLENBQXFCO0lBRXhCLFlBQVksR0FBZTtRQUN6QixJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNmLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQztJQUNyQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsS0FBSyxDQUFDLElBQUksQ0FBVSxHQUF5QixFQUFFLE9BQWtDO1FBQy9FLE9BQU8sR0FBRztZQUNSLEdBQUcsT0FBTztZQUNWLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztTQUNkLENBQUM7UUFDRixPQUFPLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUksR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTyxDQUFVLEdBQXlCLEVBQUUsT0FBa0M7UUFDbEYsT0FBTyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUksR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzFDLENBQUM7Q0FDRiJ9
@@ -0,0 +1,14 @@
1
+ import { EggCoreContext } from '@eggjs/core';
2
+ import { HttpClient as RawHttpClient, RequestURL as HttpClientRequestURL, RequestOptions } from 'urllib';
3
+ import type { EggApplicationCore } from '../egg.js';
4
+ export type { HttpClientResponse, RequestURL as HttpClientRequestURL, } from 'urllib';
5
+ export interface HttpClientRequestOptions extends RequestOptions {
6
+ ctx?: EggCoreContext;
7
+ tracer?: unknown;
8
+ }
9
+ export declare class HttpClient extends RawHttpClient {
10
+ #private;
11
+ constructor(app: EggApplicationCore);
12
+ request<T = any>(url: HttpClientRequestURL, options?: HttpClientRequestOptions): Promise<import("urllib").HttpClientResponse<T>>;
13
+ curl<T = any>(url: HttpClientRequestURL, options?: HttpClientRequestOptions): Promise<import("urllib").HttpClientResponse<T>>;
14
+ }
@@ -0,0 +1,33 @@
1
+ import { HttpClient as RawHttpClient, } from 'urllib';
2
+ import ms from '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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cGNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS9odHRwY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFDTCxVQUFVLElBQUksYUFBYSxHQUc1QixNQUFNLFFBQVEsQ0FBQztBQUNoQixPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFhcEIsTUFBTSxPQUFPLFVBQVcsU0FBUSxhQUFhO0lBQ2xDLElBQUksQ0FBNEM7SUFFekQsWUFBWSxHQUF1QjtRQUNqQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckIsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7UUFDckMsS0FBSyxDQUFDO1lBQ0osV0FBVyxFQUFFLE1BQU0sQ0FBQyxPQUFPO1NBQzVCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO0lBQ2xCLENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTyxDQUFVLEdBQXlCLEVBQUUsT0FBa0M7UUFDbEYsT0FBTyxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFDeEIsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQ3hCLE9BQU8sQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUM7UUFDdEMsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDdEQsQ0FBQztRQUNELE9BQU8sTUFBTSxLQUFLLENBQUMsT0FBTyxDQUFJLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUksQ0FBVSxHQUF5QixFQUFFLE9BQWtDO1FBQy9FLE9BQU8sTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFJLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM3QyxDQUFDO0NBQ0Y7QUFFRCxTQUFTLGVBQWUsQ0FBQyxHQUF1QjtJQUM5QyxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQztJQUNyQyxJQUFJLE9BQU8sTUFBTSxDQUFDLE9BQU8sRUFBRSxPQUFPLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDaEQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBaUIsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7QUFDSCxDQUFDIn0=
@@ -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} pid - the process id of the receiver
13
+ * @param {String} action - message key
14
+ * @param {Object} data - message value
15
+ * @return {Messenger} this
16
+ */
17
+ sendTo(pid: 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();
10
+ }
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvcmUvbWVzc2VuZ2VyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLElBQUksY0FBYyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLElBQUksWUFBWSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBTXJEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLE1BQU0sQ0FBQyxHQUF1QjtJQUM1QyxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLFFBQVE7UUFDbEMsQ0FBQyxDQUFDLElBQUksY0FBYyxDQUFDLEdBQUcsQ0FBQztRQUN6QixDQUFDLENBQUMsSUFBSSxZQUFZLEVBQUUsQ0FBQztBQUN6QixDQUFDIn0=
@@ -0,0 +1,57 @@
1
+ import { EventEmitter } from 'node:events';
2
+ import type { IMessenger } from './IMessenger.js';
3
+ /**
4
+ * Communication between app worker and agent worker by IPC channel
5
+ */
6
+ export declare class Messenger extends EventEmitter implements IMessenger {
7
+ readonly pid: string;
8
+ opids: string[];
9
+ constructor();
10
+ /**
11
+ * Send message to all agent and app
12
+ * @param {String} action - message key
13
+ * @param {Object} data - message value
14
+ * @return {Messenger} this
15
+ */
16
+ broadcast(action: string, data?: unknown): Messenger;
17
+ /**
18
+ * send message to the specified process
19
+ * @param {String} pid - the process id of the receiver
20
+ * @param {String} action - message key
21
+ * @param {Object} data - message value
22
+ * @return {Messenger} this
23
+ */
24
+ sendTo(pid: string, action: string, data?: unknown): Messenger;
25
+ /**
26
+ * send message to one app worker by random
27
+ * - if it's running in agent, it will send to one of app workers
28
+ * - if it's running in app, it will send to agent
29
+ * @param {String} action - message key
30
+ * @param {Object} data - message value
31
+ * @return {Messenger} this
32
+ */
33
+ sendRandom(action: string, data?: unknown): Messenger;
34
+ /**
35
+ * send message to app
36
+ * @param {String} action - message key
37
+ * @param {Object} data - message value
38
+ * @return {Messenger} this
39
+ */
40
+ sendToApp(action: string, data?: unknown): Messenger;
41
+ /**
42
+ * send message to agent
43
+ * @param {String} action - message key
44
+ * @param {Object} data - message value
45
+ * @return {Messenger} this
46
+ */
47
+ sendToAgent(action: string, data?: unknown): Messenger;
48
+ /**
49
+ * @param {String} action - message key
50
+ * @param {Object} data - message value
51
+ * @param {String} to - let master know how to send message
52
+ * @return {Messenger} this
53
+ */
54
+ send(action: string, data: unknown | undefined, to: string): Messenger;
55
+ onMessage(message: any): void;
56
+ close(): void;
57
+ }
@@ -0,0 +1,119 @@
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
+ opids = [];
12
+ constructor() {
13
+ super();
14
+ this.pid = String(process.pid);
15
+ // pids of agent or app managed by master
16
+ // - retrieve app worker pids when it's an agent worker
17
+ // - retrieve agent worker pids when it's an app worker
18
+ this.on('egg-pids', pids => {
19
+ this.opids = pids;
20
+ });
21
+ this.onMessage = this.onMessage.bind(this);
22
+ process.on('message', this.onMessage);
23
+ if (!workerThreads.isMainThread) {
24
+ workerThreads.parentPort.on('message', this.onMessage);
25
+ }
26
+ }
27
+ /**
28
+ * Send message to all agent and app
29
+ * @param {String} action - message key
30
+ * @param {Object} data - message value
31
+ * @return {Messenger} this
32
+ */
33
+ broadcast(action, data) {
34
+ debug('[%s] broadcast %s with %j', this.pid, action, data);
35
+ this.send(action, data, 'app');
36
+ this.send(action, data, 'agent');
37
+ return this;
38
+ }
39
+ /**
40
+ * send message to the specified process
41
+ * @param {String} pid - the process id of the receiver
42
+ * @param {String} action - message key
43
+ * @param {Object} data - message value
44
+ * @return {Messenger} this
45
+ */
46
+ sendTo(pid, action, data) {
47
+ debug('[%s] send %s with %j to %s', this.pid, action, data, pid);
48
+ sendmessage(process, {
49
+ action,
50
+ data,
51
+ receiverPid: String(pid),
52
+ });
53
+ return this;
54
+ }
55
+ /**
56
+ * send message to one app worker by random
57
+ * - if it's running in agent, it will send to one of app workers
58
+ * - if it's running in app, it will send to agent
59
+ * @param {String} action - message key
60
+ * @param {Object} data - message value
61
+ * @return {Messenger} this
62
+ */
63
+ sendRandom(action, data) {
64
+ /* istanbul ignore if */
65
+ if (this.opids.length === 0)
66
+ return this;
67
+ const index = Math.floor(Math.random() * this.opids.length);
68
+ const pid = this.opids[index];
69
+ this.sendTo(String(pid), action, data);
70
+ return this;
71
+ }
72
+ /**
73
+ * send message to app
74
+ * @param {String} action - message key
75
+ * @param {Object} data - message value
76
+ * @return {Messenger} this
77
+ */
78
+ sendToApp(action, data) {
79
+ debug('[%s] send %s with %j to all app', this.pid, action, data);
80
+ this.send(action, data, 'app');
81
+ return this;
82
+ }
83
+ /**
84
+ * send message to agent
85
+ * @param {String} action - message key
86
+ * @param {Object} data - message value
87
+ * @return {Messenger} this
88
+ */
89
+ sendToAgent(action, data) {
90
+ debug('[%s] send %s with %j to all agent', this.pid, action, data);
91
+ this.send(action, data, 'agent');
92
+ return this;
93
+ }
94
+ /**
95
+ * @param {String} action - message key
96
+ * @param {Object} data - message value
97
+ * @param {String} to - let master know how to send message
98
+ * @return {Messenger} this
99
+ */
100
+ send(action, data, to) {
101
+ sendmessage(process, {
102
+ action,
103
+ data,
104
+ to,
105
+ });
106
+ return this;
107
+ }
108
+ onMessage(message) {
109
+ if (typeof message?.action === 'string') {
110
+ debug('[%s] got message %s with %j, receiverPid: %s', this.pid, message.action, message.data, message.receiverPid);
111
+ this.emit(message.action, message.data);
112
+ }
113
+ }
114
+ close() {
115
+ process.removeListener('message', this.onMessage);
116
+ this.removeAllListeners();
117
+ }
118
+ }
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXBjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb3JlL21lc3Nlbmdlci9pcGMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMzQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3JDLE9BQU8sYUFBYSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hELE9BQU8sV0FBVyxNQUFNLGFBQWEsQ0FBQztBQUd0QyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsNEJBQTRCLENBQUMsQ0FBQztBQUVyRDs7R0FFRztBQUNILE1BQU0sT0FBTyxTQUFVLFNBQVEsWUFBWTtJQUNoQyxHQUFHLENBQVM7SUFDckIsS0FBSyxHQUFhLEVBQUUsQ0FBQztJQUVyQjtRQUNFLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9CLHlDQUF5QztRQUN6Qyx1REFBdUQ7UUFDdkQsdURBQXVEO1FBQ3ZELElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ3pCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQyxPQUFPLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNoQyxhQUFhLENBQUMsVUFBVyxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzFELENBQUM7SUFDSCxDQUFD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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} pid - the process id of the receiver
23
+ * @param {String} action - message key
24
+ * @param {Object} data - message value
25
+ * @return {Messenger} this
26
+ */
27
+ sendTo(pid: 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
+ }