egg 3.29.0 → 4.0.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (202) hide show
  1. package/README.md +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 +2 -0
  6. package/dist/commonjs/app/extend/context.js +263 -0
  7. package/dist/commonjs/app/middleware/body_parser.d.ts +2 -0
  8. package/dist/commonjs/app/middleware/body_parser.js +8 -0
  9. package/dist/commonjs/app/middleware/meta.d.ts +11 -0
  10. package/dist/commonjs/app/middleware/meta.js +22 -0
  11. package/dist/commonjs/app/middleware/notfound.d.ts +8 -0
  12. package/dist/commonjs/app/middleware/notfound.js +31 -0
  13. package/dist/commonjs/app/middleware/override_method.d.ts +2 -0
  14. package/dist/commonjs/app/middleware/override_method.js +8 -0
  15. package/dist/commonjs/app/middleware/site_file.d.ts +7 -0
  16. package/dist/commonjs/app/middleware/site_file.js +59 -0
  17. package/dist/commonjs/config/config.default.d.ts +9 -0
  18. package/dist/commonjs/config/config.default.js +378 -0
  19. package/dist/commonjs/config/config.local.d.ts +8 -0
  20. package/dist/commonjs/config/config.local.js +12 -0
  21. package/dist/commonjs/config/config.unittest.d.ts +7 -0
  22. package/dist/commonjs/config/config.unittest.js +11 -0
  23. package/dist/commonjs/config/plugin.d.ts +122 -0
  24. package/dist/commonjs/config/plugin.js +125 -0
  25. package/dist/commonjs/index.d.ts +61 -0
  26. package/dist/commonjs/index.js +89 -0
  27. package/dist/commonjs/lib/agent.d.ts +19 -0
  28. package/dist/commonjs/lib/agent.js +58 -0
  29. package/dist/commonjs/lib/application.d.ts +66 -0
  30. package/dist/commonjs/lib/application.js +281 -0
  31. package/dist/commonjs/lib/core/base_context_class.d.ts +14 -0
  32. package/dist/commonjs/lib/core/base_context_class.js +22 -0
  33. package/dist/commonjs/lib/core/base_context_logger.d.ts +36 -0
  34. package/dist/commonjs/lib/core/base_context_logger.js +64 -0
  35. package/dist/commonjs/lib/core/base_hook_class.d.ts +11 -0
  36. package/dist/commonjs/lib/core/base_hook_class.js +30 -0
  37. package/dist/commonjs/lib/core/context_httpclient.d.ts +16 -0
  38. package/dist/commonjs/lib/core/context_httpclient.js +30 -0
  39. package/dist/commonjs/lib/core/httpclient.d.ts +14 -0
  40. package/dist/commonjs/lib/core/httpclient.js +40 -0
  41. package/dist/commonjs/lib/core/logger.d.ts +3 -0
  42. package/dist/commonjs/lib/core/logger.js +40 -0
  43. package/dist/commonjs/lib/core/messenger/IMessenger.d.ts +50 -0
  44. package/dist/commonjs/lib/core/messenger/IMessenger.js +3 -0
  45. package/dist/commonjs/lib/core/messenger/index.d.ts +7 -0
  46. package/dist/commonjs/lib/core/messenger/index.js +14 -0
  47. package/dist/commonjs/lib/core/messenger/ipc.d.ts +57 -0
  48. package/dist/commonjs/lib/core/messenger/ipc.js +126 -0
  49. package/dist/commonjs/lib/core/messenger/local.d.ts +61 -0
  50. package/dist/commonjs/lib/core/messenger/local.js +134 -0
  51. package/dist/commonjs/lib/core/singleton.d.ts +23 -0
  52. package/dist/commonjs/lib/core/singleton.js +120 -0
  53. package/dist/commonjs/lib/core/utils.d.ts +2 -0
  54. package/dist/commonjs/lib/core/utils.js +77 -0
  55. package/dist/commonjs/lib/egg.d.ts +271 -0
  56. package/dist/commonjs/lib/egg.js +613 -0
  57. package/dist/commonjs/lib/loader/AgentWorkerLoader.d.ts +12 -0
  58. package/dist/commonjs/lib/loader/AgentWorkerLoader.js +24 -0
  59. package/dist/commonjs/lib/loader/AppWorkerLoader.d.ts +17 -0
  60. package/dist/commonjs/lib/loader/AppWorkerLoader.js +43 -0
  61. package/dist/commonjs/lib/loader/EggApplicationLoader.d.ts +4 -0
  62. package/dist/commonjs/lib/loader/EggApplicationLoader.js +8 -0
  63. package/dist/commonjs/lib/loader/index.d.ts +3 -0
  64. package/dist/commonjs/lib/loader/index.js +22 -0
  65. package/dist/commonjs/lib/start.d.ts +15 -0
  66. package/dist/commonjs/lib/start.js +49 -0
  67. package/dist/commonjs/lib/type.d.ts +296 -0
  68. package/dist/commonjs/lib/type.js +3 -0
  69. package/dist/commonjs/package.json +3 -0
  70. package/dist/esm/agent.d.ts +4 -0
  71. package/dist/esm/agent.js +7 -0
  72. package/dist/esm/app/extend/context.d.ts +2 -0
  73. package/dist/esm/app/extend/context.js +258 -0
  74. package/dist/esm/app/middleware/body_parser.d.ts +2 -0
  75. package/dist/esm/app/middleware/body_parser.js +3 -0
  76. package/dist/esm/app/middleware/meta.d.ts +11 -0
  77. package/dist/esm/app/middleware/meta.js +20 -0
  78. package/dist/esm/app/middleware/notfound.d.ts +8 -0
  79. package/dist/esm/app/middleware/notfound.js +29 -0
  80. package/dist/esm/app/middleware/override_method.d.ts +2 -0
  81. package/dist/esm/app/middleware/override_method.js +3 -0
  82. package/dist/esm/app/middleware/site_file.d.ts +7 -0
  83. package/dist/esm/app/middleware/site_file.js +54 -0
  84. package/dist/esm/config/config.default.d.ts +9 -0
  85. package/dist/esm/config/config.default.js +373 -0
  86. package/dist/esm/config/config.local.d.ts +8 -0
  87. package/dist/esm/config/config.local.js +10 -0
  88. package/dist/esm/config/config.unittest.d.ts +7 -0
  89. package/dist/esm/config/config.unittest.js +9 -0
  90. package/dist/esm/config/favicon.png +0 -0
  91. package/dist/esm/config/plugin.d.ts +122 -0
  92. package/dist/esm/config/plugin.js +123 -0
  93. package/dist/esm/index.d.ts +61 -0
  94. package/dist/esm/index.js +65 -0
  95. package/dist/esm/lib/agent.d.ts +19 -0
  96. package/dist/esm/lib/agent.js +54 -0
  97. package/dist/esm/lib/application.d.ts +66 -0
  98. package/dist/esm/lib/application.js +274 -0
  99. package/dist/esm/lib/core/base_context_class.d.ts +14 -0
  100. package/dist/esm/lib/core/base_context_class.js +18 -0
  101. package/dist/esm/lib/core/base_context_logger.d.ts +36 -0
  102. package/dist/esm/lib/core/base_context_logger.js +60 -0
  103. package/dist/esm/lib/core/base_hook_class.d.ts +11 -0
  104. package/dist/esm/lib/core/base_hook_class.js +23 -0
  105. package/dist/esm/lib/core/context_httpclient.d.ts +16 -0
  106. package/dist/esm/lib/core/context_httpclient.js +26 -0
  107. package/dist/esm/lib/core/httpclient.d.ts +14 -0
  108. package/dist/esm/lib/core/httpclient.js +33 -0
  109. package/dist/esm/lib/core/logger.d.ts +3 -0
  110. package/dist/esm/lib/core/logger.js +37 -0
  111. package/dist/esm/lib/core/messenger/IMessenger.d.ts +50 -0
  112. package/dist/esm/lib/core/messenger/IMessenger.js +2 -0
  113. package/dist/esm/lib/core/messenger/index.d.ts +7 -0
  114. package/dist/esm/lib/core/messenger/index.js +11 -0
  115. package/dist/esm/lib/core/messenger/ipc.d.ts +57 -0
  116. package/dist/esm/lib/core/messenger/ipc.js +119 -0
  117. package/dist/esm/lib/core/messenger/local.d.ts +61 -0
  118. package/dist/esm/lib/core/messenger/local.js +127 -0
  119. package/dist/esm/lib/core/singleton.d.ts +23 -0
  120. package/dist/esm/lib/core/singleton.js +113 -0
  121. package/dist/esm/lib/core/utils.d.ts +2 -0
  122. package/dist/esm/lib/core/utils.js +70 -0
  123. package/dist/esm/lib/egg.d.ts +271 -0
  124. package/dist/esm/lib/egg.js +573 -0
  125. package/dist/esm/lib/loader/AgentWorkerLoader.d.ts +12 -0
  126. package/dist/esm/lib/loader/AgentWorkerLoader.js +20 -0
  127. package/dist/esm/lib/loader/AppWorkerLoader.d.ts +17 -0
  128. package/dist/esm/lib/loader/AppWorkerLoader.js +39 -0
  129. package/dist/esm/lib/loader/EggApplicationLoader.d.ts +4 -0
  130. package/dist/esm/lib/loader/EggApplicationLoader.js +4 -0
  131. package/dist/esm/lib/loader/index.d.ts +3 -0
  132. package/dist/esm/lib/loader/index.js +4 -0
  133. package/dist/esm/lib/start.d.ts +15 -0
  134. package/dist/esm/lib/start.js +43 -0
  135. package/dist/esm/lib/type.d.ts +296 -0
  136. package/dist/esm/lib/type.js +2 -0
  137. package/dist/esm/package.json +3 -0
  138. package/dist/package.json +4 -0
  139. package/package.json +87 -72
  140. package/src/agent.ts +7 -0
  141. package/{app/extend/context.js → src/app/extend/context.ts} +19 -23
  142. package/src/app/middleware/body_parser.ts +3 -0
  143. package/{app/middleware/meta.js → src/app/middleware/meta.ts} +12 -4
  144. package/{app/middleware/notfound.js → src/app/middleware/notfound.ts} +9 -3
  145. package/src/app/middleware/override_method.ts +3 -0
  146. package/src/app/middleware/site_file.ts +70 -0
  147. package/{config/config.default.js → src/config/config.default.ts} +24 -45
  148. package/src/config/config.local.ts +11 -0
  149. package/src/config/config.unittest.ts +10 -0
  150. package/src/config/favicon.png +0 -0
  151. package/{config/plugin.js → src/config/plugin.ts} +1 -3
  152. package/src/index.ts +78 -0
  153. package/src/lib/agent.ts +66 -0
  154. package/{lib/application.js → src/lib/application.ts} +79 -120
  155. package/src/lib/core/base_context_class.ts +21 -0
  156. package/src/lib/core/base_context_logger.ts +67 -0
  157. package/src/lib/core/base_hook_class.ts +30 -0
  158. package/src/lib/core/context_httpclient.ts +33 -0
  159. package/src/lib/core/httpclient.ts +52 -0
  160. package/src/lib/core/logger.ts +42 -0
  161. package/src/lib/core/messenger/IMessenger.ts +58 -0
  162. package/src/lib/core/messenger/index.ts +15 -0
  163. package/{lib/core/messenger/ipc.js → src/lib/core/messenger/ipc.ts} +24 -29
  164. package/{lib/core/messenger/local.js → src/lib/core/messenger/local.ts} +27 -21
  165. package/{lib/core/singleton.js → src/lib/core/singleton.ts} +56 -33
  166. package/src/lib/core/utils.ts +77 -0
  167. package/{lib/egg.js → src/lib/egg.ts} +262 -219
  168. package/src/lib/loader/AgentWorkerLoader.ts +21 -0
  169. package/src/lib/loader/AppWorkerLoader.ts +42 -0
  170. package/src/lib/loader/EggApplicationLoader.ts +5 -0
  171. package/src/lib/loader/index.ts +3 -0
  172. package/src/lib/start.ts +56 -0
  173. package/src/lib/type.ts +336 -0
  174. package/CHANGELOG.md +0 -2395
  175. package/History.md +0 -52
  176. package/agent.js +0 -11
  177. package/app/middleware/body_parser.js +0 -3
  178. package/app/middleware/override_method.js +0 -3
  179. package/app/middleware/site_file.js +0 -31
  180. package/config/config.local.js +0 -7
  181. package/config/config.unittest.js +0 -8
  182. package/index.d.ts +0 -1288
  183. package/index.js +0 -68
  184. package/lib/agent.js +0 -95
  185. package/lib/core/base_context_class.js +0 -20
  186. package/lib/core/base_context_logger.js +0 -64
  187. package/lib/core/base_hook_class.js +0 -31
  188. package/lib/core/context_httpclient.js +0 -26
  189. package/lib/core/dnscache_httpclient.js +0 -93
  190. package/lib/core/httpclient.js +0 -119
  191. package/lib/core/httpclient_next.js +0 -80
  192. package/lib/core/logger.js +0 -35
  193. package/lib/core/messenger/index.js +0 -14
  194. package/lib/core/utils.js +0 -73
  195. package/lib/loader/agent_worker_loader.js +0 -27
  196. package/lib/loader/app_worker_loader.js +0 -48
  197. package/lib/loader/index.js +0 -5
  198. package/lib/start.js +0 -39
  199. /package/{config → dist/commonjs/config}/favicon.png +0 -0
  200. /package/{app → src/app}/extend/helper.js +0 -0
  201. /package/{app → src/app}/extend/request.js +0 -0
  202. /package/{app → src/app}/extend/response.js +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 { 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,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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dF9odHRwY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jb3JlL2NvbnRleHRfaHR0cGNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFLQSxNQUFhLGlCQUFpQjtJQUM1QixHQUFHLENBQWE7SUFDaEIsR0FBRyxDQUFxQjtJQUV4QixZQUFZLEdBQWU7UUFDekIsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDZixJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUM7SUFDckIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILEtBQUssQ0FBQyxJQUFJLENBQVUsR0FBeUIsRUFBRSxPQUFrQztRQUMvRSxPQUFPLEdBQUc7WUFDUixHQUFHLE9BQU87WUFDVixHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7U0FDZCxDQUFDO1FBQ0YsT0FBTyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFJLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU8sQ0FBVSxHQUF5QixFQUFFLE9BQWtDO1FBQ2xGLE9BQU8sTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFJLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMxQyxDQUFDO0NBQ0Y7QUEzQkQsOENBMkJDIn0=
@@ -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,40 @@
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.HttpClient = void 0;
7
+ const urllib_1 = require("urllib");
8
+ const ms_1 = __importDefault(require("ms"));
9
+ class HttpClient extends urllib_1.HttpClient {
10
+ #app;
11
+ constructor(app) {
12
+ normalizeConfig(app);
13
+ const config = app.config.httpclient;
14
+ super({
15
+ defaultArgs: config.request,
16
+ });
17
+ this.#app = app;
18
+ }
19
+ async request(url, options) {
20
+ options = options ?? {};
21
+ if (options.ctx?.tracer) {
22
+ options.tracer = options.ctx.tracer;
23
+ }
24
+ else {
25
+ options.tracer = options.tracer ?? this.#app.tracer;
26
+ }
27
+ return await super.request(url, options);
28
+ }
29
+ async curl(url, options) {
30
+ return await this.request(url, options);
31
+ }
32
+ }
33
+ exports.HttpClient = HttpClient;
34
+ function normalizeConfig(app) {
35
+ const config = app.config.httpclient;
36
+ if (typeof config.request?.timeout === 'string') {
37
+ config.request.timeout = (0, ms_1.default)(config.request.timeout);
38
+ }
39
+ }
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cGNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS9odHRwY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLG1DQUlnQjtBQUNoQiw0Q0FBb0I7QUFhcEIsTUFBYSxVQUFXLFNBQVEsbUJBQWE7SUFDbEMsSUFBSSxDQUE0QztJQUV6RCxZQUFZLEdBQXVCO1FBQ2pDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNyQixNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQztRQUNyQyxLQUFLLENBQUM7WUFDSixXQUFXLEVBQUUsTUFBTSxDQUFDLE9BQU87U0FDNUIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7SUFDbEIsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPLENBQVUsR0FBeUIsRUFBRSxPQUFrQztRQUNsRixPQUFPLEdBQUcsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUN4QixJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDeEIsT0FBTyxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQztRQUN0QyxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUN0RCxDQUFDO1FBQ0QsT0FBTyxNQUFNLEtBQUssQ0FBQyxPQUFPLENBQUksR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBSSxDQUFVLEdBQXlCLEVBQUUsT0FBa0M7UUFDL0UsT0FBTyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUksR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzdDLENBQUM7Q0FDRjtBQXpCRCxnQ0F5QkM7QUFFRCxTQUFTLGVBQWUsQ0FBQyxHQUF1QjtJQUM5QyxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQztJQUNyQyxJQUFJLE9BQU8sTUFBTSxDQUFDLE9BQU8sRUFBRSxPQUFPLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDaEQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEdBQUcsSUFBQSxZQUFFLEVBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFpQixDQUFDLENBQUM7SUFDaEUsQ0FBQztBQUNILENBQUMifQ==
@@ -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} 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,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();
13
+ }
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvcmUvbWVzc2VuZ2VyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBVUEsd0JBSUM7QUFkRCx5Q0FBeUQ7QUFDekQscUNBQXFEO0FBTXJEOztHQUVHO0FBQ0gsU0FBZ0IsTUFBTSxDQUFDLEdBQXVCO0lBQzVDLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEtBQUssUUFBUTtRQUNsQyxDQUFDLENBQUMsSUFBSSxvQkFBYyxDQUFDLEdBQUcsQ0FBQztRQUN6QixDQUFDLENBQUMsSUFBSSxrQkFBWSxFQUFFLENBQUM7QUFDekIsQ0FBQyJ9
@@ -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,126 @@
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
+ opids = [];
18
+ constructor() {
19
+ super();
20
+ this.pid = String(process.pid);
21
+ // pids of agent or app managed by master
22
+ // - retrieve app worker pids when it's an agent worker
23
+ // - retrieve agent worker pids when it's an app worker
24
+ this.on('egg-pids', pids => {
25
+ this.opids = pids;
26
+ });
27
+ this.onMessage = this.onMessage.bind(this);
28
+ process.on('message', this.onMessage);
29
+ if (!node_worker_threads_1.default.isMainThread) {
30
+ node_worker_threads_1.default.parentPort.on('message', this.onMessage);
31
+ }
32
+ }
33
+ /**
34
+ * Send message to all agent and app
35
+ * @param {String} action - message key
36
+ * @param {Object} data - message value
37
+ * @return {Messenger} this
38
+ */
39
+ broadcast(action, data) {
40
+ debug('[%s] broadcast %s with %j', this.pid, action, data);
41
+ this.send(action, data, 'app');
42
+ this.send(action, data, 'agent');
43
+ return this;
44
+ }
45
+ /**
46
+ * send message to the specified process
47
+ * @param {String} pid - the process id of the receiver
48
+ * @param {String} action - message key
49
+ * @param {Object} data - message value
50
+ * @return {Messenger} this
51
+ */
52
+ sendTo(pid, action, data) {
53
+ debug('[%s] send %s with %j to %s', this.pid, action, data, pid);
54
+ (0, sendmessage_1.sendmessage)(process, {
55
+ action,
56
+ data,
57
+ receiverPid: String(pid),
58
+ });
59
+ return this;
60
+ }
61
+ /**
62
+ * send message to one app worker by random
63
+ * - if it's running in agent, it will send to one of app workers
64
+ * - if it's running in app, it will send to agent
65
+ * @param {String} action - message key
66
+ * @param {Object} data - message value
67
+ * @return {Messenger} this
68
+ */
69
+ sendRandom(action, data) {
70
+ /* istanbul ignore if */
71
+ if (this.opids.length === 0)
72
+ return this;
73
+ const index = Math.floor(Math.random() * this.opids.length);
74
+ const pid = this.opids[index];
75
+ this.sendTo(String(pid), action, data);
76
+ return this;
77
+ }
78
+ /**
79
+ * send message to app
80
+ * @param {String} action - message key
81
+ * @param {Object} data - message value
82
+ * @return {Messenger} this
83
+ */
84
+ sendToApp(action, data) {
85
+ debug('[%s] send %s with %j to all app', this.pid, action, data);
86
+ this.send(action, data, 'app');
87
+ return this;
88
+ }
89
+ /**
90
+ * send message to agent
91
+ * @param {String} action - message key
92
+ * @param {Object} data - message value
93
+ * @return {Messenger} this
94
+ */
95
+ sendToAgent(action, data) {
96
+ debug('[%s] send %s with %j to all agent', this.pid, action, data);
97
+ this.send(action, data, 'agent');
98
+ return this;
99
+ }
100
+ /**
101
+ * @param {String} action - message key
102
+ * @param {Object} data - message value
103
+ * @param {String} to - let master know how to send message
104
+ * @return {Messenger} this
105
+ */
106
+ send(action, data, to) {
107
+ (0, sendmessage_1.sendmessage)(process, {
108
+ action,
109
+ data,
110
+ to,
111
+ });
112
+ return this;
113
+ }
114
+ onMessage(message) {
115
+ if (typeof message?.action === 'string') {
116
+ debug('[%s] got message %s with %j, receiverPid: %s', this.pid, message.action, message.data, message.receiverPid);
117
+ this.emit(message.action, message.data);
118
+ }
119
+ }
120
+ close() {
121
+ process.removeListener('message', this.onMessage);
122
+ this.removeAllListeners();
123
+ }
124
+ }
125
+ exports.Messenger = Messenger;
126
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXBjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb3JlL21lc3Nlbmdlci9pcGMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsNkNBQTJDO0FBQzNDLHlDQUFxQztBQUNyQyw4RUFBZ0Q7QUFDaEQsNkNBQTBDO0FBRzFDLE1BQU0sS0FBSyxHQUFHLElBQUEsb0JBQVEsRUFBQyw0QkFBNEIsQ0FBQyxDQUFDO0FBRXJEOztHQUVHO0FBQ0gsTUFBYSxTQUFVLFNBQVEsMEJBQVk7SUFDaEMsR0FBRyxDQUFTO0lBQ3JCLEtBQUssR0FBYSxFQUFFLENBQUM7SUFFckI7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMvQix5Q0FBeUM7UUFDekMsdURBQXVEO1FBQ3ZELHVEQUF1RDtRQUN2RCxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsRUFBRTtZQUN6QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNwQixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0MsT0FBTyxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyw2QkFBYSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ2hDLDZCQUFhLENBQUMsVUFBVyxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzFELENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxTQUFTLENBQUMsTUFBYyxFQUFFLElBQWM7UUFDdEMsS0FBSyxDQUFDLDJCQUEyQixFQUFFLElBQUksQ0FBQyxH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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
+ }