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,63 @@
1
+ /**
2
+ * @namespace Egg
3
+ */
4
+ import { BaseContextClass } from './lib/core/base_context_class.js';
5
+ import { startEgg } from './lib/start.js';
6
+ import Helper from './app/extend/helper.js';
7
+ export { Helper };
8
+ export * from './lib/egg.js';
9
+ export * from './lib/type.js';
10
+ export * from './lib/start.js';
11
+ /**
12
+ * Start egg application with cluster mode
13
+ * @since 1.0.0
14
+ */
15
+ export * from '@eggjs/cluster';
16
+ /**
17
+ * Start egg application with single process mode
18
+ * @since 1.0.0
19
+ */
20
+ export declare const start: typeof startEgg;
21
+ /**
22
+ * @member {Application} Egg#Application
23
+ * @since 1.0.0
24
+ */
25
+ export { Application } from './lib/application.js';
26
+ /**
27
+ * @member {Agent} Egg#Agent
28
+ * @since 1.0.0
29
+ */
30
+ export { Agent } from './lib/agent.js';
31
+ /**
32
+ * @member {AppWorkerLoader} Egg#AppWorkerLoader
33
+ * @since 1.0.0
34
+ */
35
+ /**
36
+ * @member {AgentWorkerLoader} Egg#AgentWorkerLoader
37
+ * @since 1.0.0
38
+ */
39
+ export { AppWorkerLoader, AgentWorkerLoader } from './lib/loader/index.js';
40
+ /**
41
+ * @member {Controller} Egg#Controller
42
+ * @since 1.1.0
43
+ */
44
+ export declare const Controller: typeof BaseContextClass;
45
+ /**
46
+ * @member {Service} Egg#Service
47
+ * @since 1.1.0
48
+ */
49
+ export declare const Service: typeof BaseContextClass;
50
+ /**
51
+ * @member {Subscription} Egg#Subscription
52
+ * @since 1.10.0
53
+ */
54
+ export declare const Subscription: typeof BaseContextClass;
55
+ /**
56
+ * @member {BaseContextClass} Egg#BaseContextClass
57
+ * @since 1.2.0
58
+ */
59
+ export { BaseContextClass } from './lib/core/base_context_class.js';
60
+ /**
61
+ * @member {Boot} Egg#Boot
62
+ */
63
+ export { BaseHookClass as Boot } from './lib/core/base_hook_class.js';
@@ -0,0 +1,66 @@
1
+ /**
2
+ * @namespace Egg
3
+ */
4
+ import { BaseContextClass } from './lib/core/base_context_class.js';
5
+ import { startEgg } from './lib/start.js';
6
+ import Helper from './app/extend/helper.js';
7
+ // export extends
8
+ export { Helper };
9
+ // export types
10
+ export * from './lib/egg.js';
11
+ export * from './lib/type.js';
12
+ export * from './lib/start.js';
13
+ /**
14
+ * Start egg application with cluster mode
15
+ * @since 1.0.0
16
+ */
17
+ export * from '@eggjs/cluster';
18
+ /**
19
+ * Start egg application with single process mode
20
+ * @since 1.0.0
21
+ */
22
+ export const start = startEgg;
23
+ /**
24
+ * @member {Application} Egg#Application
25
+ * @since 1.0.0
26
+ */
27
+ export { Application } from './lib/application.js';
28
+ /**
29
+ * @member {Agent} Egg#Agent
30
+ * @since 1.0.0
31
+ */
32
+ export { Agent } from './lib/agent.js';
33
+ /**
34
+ * @member {AppWorkerLoader} Egg#AppWorkerLoader
35
+ * @since 1.0.0
36
+ */
37
+ /**
38
+ * @member {AgentWorkerLoader} Egg#AgentWorkerLoader
39
+ * @since 1.0.0
40
+ */
41
+ export { AppWorkerLoader, AgentWorkerLoader } from './lib/loader/index.js';
42
+ /**
43
+ * @member {Controller} Egg#Controller
44
+ * @since 1.1.0
45
+ */
46
+ export const Controller = BaseContextClass;
47
+ /**
48
+ * @member {Service} Egg#Service
49
+ * @since 1.1.0
50
+ */
51
+ export const Service = BaseContextClass;
52
+ /**
53
+ * @member {Subscription} Egg#Subscription
54
+ * @since 1.10.0
55
+ */
56
+ export const Subscription = BaseContextClass;
57
+ /**
58
+ * @member {BaseContextClass} Egg#BaseContextClass
59
+ * @since 1.2.0
60
+ */
61
+ export { BaseContextClass } from './lib/core/base_context_class.js';
62
+ /**
63
+ * @member {Boot} Egg#Boot
64
+ */
65
+ export { BaseHookClass as Boot } from './lib/core/base_hook_class.js';
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUMsT0FBTyxNQUFNLE1BQU0sd0JBQXdCLENBQUM7QUFFNUMsaUJBQWlCO0FBQ2pCLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQztBQUVsQixlQUFlO0FBQ2YsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxnQkFBZ0IsQ0FBQztBQUUvQjs7O0dBR0c7QUFDSCxjQUFjLGdCQUFnQixDQUFDO0FBRS9COzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUM7QUFFOUI7OztHQUdHO0FBQ0gsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRW5EOzs7R0FHRztBQUNILE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2Qzs7O0dBR0c7QUFFSDs7O0dBR0c7QUFFSCxPQUFPLEVBQUUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFM0U7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLGdCQUFnQixDQUFDO0FBRTNDOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxnQkFBZ0IsQ0FBQztBQUV4Qzs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsZ0JBQWdCLENBQUM7QUFFN0M7OztHQUdHO0FBQ0gsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFcEU7O0dBRUc7QUFDSCxPQUFPLEVBQUUsYUFBYSxJQUFJLElBQUksRUFBRSxNQUFNLCtCQUErQixDQUFDIn0=
@@ -0,0 +1,19 @@
1
+ import { EggApplicationCore, EggApplicationCoreOptions } from './egg.js';
2
+ import { AgentWorkerLoader } from './loader/index.js';
3
+ declare const EGG_LOADER: unique symbol;
4
+ /**
5
+ * Singleton instance in Agent Worker, extend {@link EggApplicationCore}
6
+ * @augments EggApplicationCore
7
+ */
8
+ export declare class Agent extends EggApplicationCore {
9
+ #private;
10
+ /**
11
+ * @class
12
+ * @param {Object} options - see {@link EggApplicationCore}
13
+ */
14
+ constructor(options?: Omit<EggApplicationCoreOptions, 'type'>);
15
+ get [EGG_LOADER](): typeof AgentWorkerLoader;
16
+ _wrapMessenger(): void;
17
+ close(): Promise<void>;
18
+ }
19
+ export {};
@@ -0,0 +1,54 @@
1
+ import { EggApplicationCore } from './egg.js';
2
+ import { AgentWorkerLoader } from './loader/index.js';
3
+ const EGG_LOADER = Symbol.for('egg#loader');
4
+ /**
5
+ * Singleton instance in Agent Worker, extend {@link EggApplicationCore}
6
+ * @augments EggApplicationCore
7
+ */
8
+ export class Agent extends EggApplicationCore {
9
+ #agentAliveHandler;
10
+ /**
11
+ * @class
12
+ * @param {Object} options - see {@link EggApplicationCore}
13
+ */
14
+ constructor(options) {
15
+ super({
16
+ ...options,
17
+ type: 'agent',
18
+ });
19
+ // keep agent alive even it doesn't have any io tasks
20
+ this.#agentAliveHandler = setInterval(() => {
21
+ this.coreLogger.info('[]');
22
+ }, 24 * 60 * 60 * 1000);
23
+ }
24
+ get [EGG_LOADER]() {
25
+ return AgentWorkerLoader;
26
+ }
27
+ _wrapMessenger() {
28
+ for (const methodName of [
29
+ 'broadcast',
30
+ 'sendTo',
31
+ 'sendToApp',
32
+ 'sendToAgent',
33
+ 'sendRandom',
34
+ ]) {
35
+ wrapMethod(methodName, this.messenger, this.coreLogger);
36
+ }
37
+ function wrapMethod(methodName, messenger, logger) {
38
+ const originMethod = messenger[methodName];
39
+ messenger[methodName] = function (...args) {
40
+ const stack = new Error().stack.split('\n').slice(1).join('\n');
41
+ logger.warn("agent can't call %s before server started\n%s", methodName, stack);
42
+ originMethod.apply(this, args);
43
+ };
44
+ messenger.prependOnceListener('egg-ready', () => {
45
+ messenger[methodName] = originMethod;
46
+ });
47
+ }
48
+ }
49
+ async close() {
50
+ clearInterval(this.#agentAliveHandler);
51
+ await super.close();
52
+ }
53
+ }
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2FnZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxrQkFBa0IsRUFBNkIsTUFBTSxVQUFVLENBQUM7QUFDekUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFdEQsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUU1Qzs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sS0FBTSxTQUFRLGtCQUFrQjtJQUNsQyxrQkFBa0IsQ0FBaUI7SUFFNUM7OztPQUdHO0lBQ0gsWUFBWSxPQUFpRDtRQUMzRCxLQUFLLENBQUM7WUFDSixHQUFHLE9BQU87WUFDVixJQUFJLEVBQUUsT0FBTztTQUNkLENBQUMsQ0FBQztRQUVILHFEQUFxRDtRQUNyRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRTtZQUN6QyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QixDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQUksQ0FBQyxVQUFVLENBQUM7UUFDZCxPQUFPLGlCQUFpQixDQUFDO0lBQzNCLENBQUM7SUFFRCxjQUFjO1FBQ1osS0FBSyxNQUFNLFVBQVUsSUFBSTtZQUN2QixXQUFXO1lBQ1gsUUFBUTtZQUNSLFdBQVc7WUFDWCxhQUFhO1lBQ2IsWUFBWTtTQUNiLEVBQUUsQ0FBQztZQUNGLFVBQVUsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDMUQsQ0FBQztRQUVELFNBQVMsVUFBVSxDQUFDLFVBQWtCLEVBQUUsU0FBYyxFQUFFLE1BQWlCO1lBQ3ZFLE1BQU0sWUFBWSxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUMzQyxTQUFTLENBQUMsVUFBVSxDQUFDLEdBQUcsVUFBUyxHQUFHLElBQVc7Z0JBQzdDLE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUMsS0FBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNqRSxNQUFNLENBQUMsSUFBSSxDQUNULCtDQUErQyxFQUMvQyxVQUFVLEVBQ1YsS0FBSyxDQUNOLENBQUM7Z0JBQ0YsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDakMsQ0FBQyxDQUFDO1lBQ0YsU0FBUyxDQUFDLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxHQUFHLEVBQUU7Z0JBQzlDLFNBQVMsQ0FBQyxVQUFVLENBQUMsR0FBRyxZQUFZLENBQUM7WUFDdkMsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxLQUFLO1FBQ1QsYUFBYSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3RCLENBQUM7Q0FDRiJ9
@@ -0,0 +1,59 @@
1
+ import http from 'node:http';
2
+ import { Socket } from 'node:net';
3
+ import { EggApplicationCore, type EggApplicationCoreOptions, type ContextDelegation } from './egg.js';
4
+ import { AppWorkerLoader } from './loader/index.js';
5
+ import Helper from '../app/extend/helper.js';
6
+ declare const EGG_LOADER: unique symbol;
7
+ /**
8
+ * Singleton instance in App Worker, extend {@link EggApplicationCore}
9
+ * @augments EggApplicationCore
10
+ */
11
+ export declare class Application extends EggApplicationCore {
12
+ #private;
13
+ server?: http.Server;
14
+ /**
15
+ * reference to {@link Helper}
16
+ * @member {Helper} Application#Helper
17
+ */
18
+ Helper: typeof Helper;
19
+ /**
20
+ * @class
21
+ * @param {Object} options - see {@link EggApplicationCore}
22
+ */
23
+ constructor(options?: Omit<EggApplicationCoreOptions, 'type'>);
24
+ protected load(): Promise<void>;
25
+ get [EGG_LOADER](): typeof AppWorkerLoader;
26
+ onClientError(err: any, socket: Socket): void;
27
+ onServer(server: http.Server): void;
28
+ /**
29
+ * global locals for view
30
+ * @member {Object} Application#locals
31
+ * @see Context#locals
32
+ */
33
+ get locals(): Record<string, any>;
34
+ set locals(val: Record<string, any>);
35
+ /**
36
+ * save routers to `run/router.json`
37
+ * @private
38
+ */
39
+ dumpConfig(): void;
40
+ /**
41
+ * Run async function in the background
42
+ * @see Context#runInBackground
43
+ * @param {Function} scope - the first args is an anonymous ctx
44
+ */
45
+ runInBackground(scope: (ctx: ContextDelegation) => Promise<void>, req?: unknown): void;
46
+ /**
47
+ * Run async function in the anonymous context scope
48
+ * @see Context#runInAnonymousContextScope
49
+ * @param {Function} scope - the first args is an anonymous ctx, scope should be async function
50
+ * @param {Request} [req] - if you want to mock request like querystring, you can pass an object to this function.
51
+ */
52
+ runInAnonymousContextScope(scope: (ctx: ContextDelegation) => Promise<void>, req?: unknown): Promise<void>;
53
+ /**
54
+ * secret key for Application
55
+ * @member {String} Application#keys
56
+ */
57
+ get keys(): string[];
58
+ }
59
+ export {};
@@ -0,0 +1,263 @@
1
+ import path from 'node:path';
2
+ import fs from 'node:fs';
3
+ import http from 'node:http';
4
+ import { graceful } from 'graceful';
5
+ import { assign } from 'utility';
6
+ import { utils as eggUtils } from '@eggjs/core';
7
+ import { EggApplicationCore, } from './egg.js';
8
+ import { AppWorkerLoader } from './loader/index.js';
9
+ import Helper from '../app/extend/helper.js';
10
+ const EGG_LOADER = Symbol.for('egg#loader');
11
+ // client error => 400 Bad Request
12
+ // Refs: https://nodejs.org/dist/latest-v8.x/docs/api/http.html#http_event_clienterror
13
+ const DEFAULT_BAD_REQUEST_HTML = `<html>
14
+ <head><title>400 Bad Request</title></head>
15
+ <body bgcolor="white">
16
+ <center><h1>400 Bad Request</h1></center>
17
+ <hr><center>❤</center>
18
+ </body>
19
+ </html>`;
20
+ const DEFAULT_BAD_REQUEST_HTML_LENGTH = Buffer.byteLength(DEFAULT_BAD_REQUEST_HTML);
21
+ const DEFAULT_BAD_REQUEST_RESPONSE = `HTTP/1.1 400 Bad Request\r\nContent-Length: ${DEFAULT_BAD_REQUEST_HTML_LENGTH}` +
22
+ `\r\n\r\n${DEFAULT_BAD_REQUEST_HTML}`;
23
+ // Refs: https://github.com/nodejs/node/blob/b38c81/lib/_http_outgoing.js#L706-L710
24
+ function escapeHeaderValue(value) {
25
+ // Protect against response splitting. The regex test is there to
26
+ // minimize the performance impact in the common case.
27
+ return /[\r\n]/.test(value) ? value.replace(/[\r\n]+[ \t]*/g, '') : value;
28
+ }
29
+ /**
30
+ * Singleton instance in App Worker, extend {@link EggApplicationCore}
31
+ * @augments EggApplicationCore
32
+ */
33
+ export class Application extends EggApplicationCore {
34
+ // will auto set after 'server' event emit
35
+ server;
36
+ #locals = {};
37
+ /**
38
+ * reference to {@link Helper}
39
+ * @member {Helper} Application#Helper
40
+ */
41
+ Helper = Helper;
42
+ /**
43
+ * @class
44
+ * @param {Object} options - see {@link EggApplicationCore}
45
+ */
46
+ constructor(options) {
47
+ super({
48
+ ...options,
49
+ type: 'application',
50
+ });
51
+ }
52
+ async load() {
53
+ await super.load();
54
+ this.#warnConfusedConfig();
55
+ this.#bindEvents();
56
+ }
57
+ get [EGG_LOADER]() {
58
+ return AppWorkerLoader;
59
+ }
60
+ #responseRaw(socket, raw) {
61
+ if (!socket?.writable)
62
+ return;
63
+ if (!raw) {
64
+ return socket.end(DEFAULT_BAD_REQUEST_RESPONSE);
65
+ }
66
+ const body = (raw.body == null) ? DEFAULT_BAD_REQUEST_HTML : raw.body;
67
+ const headers = raw.headers || {};
68
+ const status = raw.status || 400;
69
+ let responseHeaderLines = '';
70
+ const firstLine = `HTTP/1.1 ${status} ${http.STATUS_CODES[status] || 'Unknown'}`;
71
+ // Not that safe because no validation for header keys.
72
+ // Refs: https://github.com/nodejs/node/blob/b38c81/lib/_http_outgoing.js#L451
73
+ for (const key of Object.keys(headers)) {
74
+ if (key.toLowerCase() === 'content-length') {
75
+ delete headers[key];
76
+ continue;
77
+ }
78
+ responseHeaderLines += `${key}: ${escapeHeaderValue(headers[key])}\r\n`;
79
+ }
80
+ responseHeaderLines += `Content-Length: ${Buffer.byteLength(body)}\r\n`;
81
+ socket.end(`${firstLine}\r\n${responseHeaderLines}\r\n${body.toString()}`);
82
+ }
83
+ onClientError(err, socket) {
84
+ // ignore when there is no http body, it almost like an ECONNRESET
85
+ if (err.rawPacket) {
86
+ this.logger.warn('[egg:application] A client (%s:%d) error [%s] occurred: %s', socket.remoteAddress, socket.remotePort, err.code, err.message);
87
+ }
88
+ if (typeof this.config.onClientError === 'function') {
89
+ const p = eggUtils.callFn(this.config.onClientError, [err, socket, this]);
90
+ // the returned object should be something like:
91
+ //
92
+ // {
93
+ // body: '...',
94
+ // headers: {
95
+ // ...
96
+ // },
97
+ // status: 400
98
+ // }
99
+ //
100
+ // default values:
101
+ //
102
+ // + body: ''
103
+ // + headers: {}
104
+ // + status: 400
105
+ p.then(ret => {
106
+ this.#responseRaw(socket, ret || {});
107
+ }).catch(err => {
108
+ this.logger.error(err);
109
+ this.#responseRaw(socket);
110
+ });
111
+ }
112
+ else {
113
+ // because it's a raw socket object, we should return the raw HTTP response
114
+ // packet.
115
+ this.#responseRaw(socket);
116
+ }
117
+ }
118
+ onServer(server) {
119
+ // expose app.server
120
+ this.server = server;
121
+ // set ignore code
122
+ const serverGracefulIgnoreCode = this.config.serverGracefulIgnoreCode || [];
123
+ graceful({
124
+ server: [server],
125
+ error: (err, throwErrorCount) => {
126
+ const originMessage = err.message;
127
+ if (originMessage) {
128
+ // shouldjs will override error property but only getter
129
+ // https://github.com/shouldjs/should.js/blob/889e22ebf19a06bc2747d24cf34b25cc00b37464/lib/assertion-error.js#L26
130
+ Object.defineProperty(err, 'message', {
131
+ get() {
132
+ return `${originMessage} (uncaughtException throw ${throwErrorCount} times on pid: ${process.pid})`;
133
+ },
134
+ configurable: true,
135
+ enumerable: false,
136
+ });
137
+ }
138
+ this.coreLogger.error(err);
139
+ },
140
+ ignoreCode: serverGracefulIgnoreCode,
141
+ });
142
+ server.on('clientError', (err, socket) => this.onClientError(err, socket));
143
+ // server timeout
144
+ if (typeof this.config.serverTimeout === 'number') {
145
+ server.setTimeout(this.config.serverTimeout);
146
+ }
147
+ }
148
+ /**
149
+ * global locals for view
150
+ * @member {Object} Application#locals
151
+ * @see Context#locals
152
+ */
153
+ get locals() {
154
+ return this.#locals;
155
+ }
156
+ set locals(val) {
157
+ assign(this.#locals, val);
158
+ }
159
+ /**
160
+ * save routers to `run/router.json`
161
+ * @private
162
+ */
163
+ dumpConfig() {
164
+ super.dumpConfig();
165
+ // dump routers to router.json
166
+ const rundir = this.config.rundir;
167
+ const FULLPATH = this.loader.FileLoader.FULLPATH;
168
+ try {
169
+ const dumpRouterFile = path.join(rundir, 'router.json');
170
+ const routers = [];
171
+ for (const layer of this.router.stack) {
172
+ routers.push({
173
+ name: layer.name,
174
+ methods: layer.methods,
175
+ paramNames: layer.paramNames,
176
+ path: layer.path,
177
+ regexp: layer.regexp.toString(),
178
+ stack: layer.stack.map((stack) => stack[FULLPATH] || stack._name || stack.name || 'anonymous'),
179
+ });
180
+ }
181
+ fs.writeFileSync(dumpRouterFile, JSON.stringify(routers, null, 2));
182
+ }
183
+ catch (err) {
184
+ this.coreLogger.warn(`dumpConfig router.json error: ${err.message}`);
185
+ }
186
+ }
187
+ /**
188
+ * Run async function in the background
189
+ * @see Context#runInBackground
190
+ * @param {Function} scope - the first args is an anonymous ctx
191
+ */
192
+ runInBackground(scope, req) {
193
+ const ctx = this.createAnonymousContext(req);
194
+ if (!scope.name) {
195
+ Reflect.set(scope, '_name', eggUtils.getCalleeFromStack(true));
196
+ }
197
+ this.ctxStorage.run(ctx, () => {
198
+ return ctx.runInBackground(scope);
199
+ });
200
+ }
201
+ /**
202
+ * Run async function in the anonymous context scope
203
+ * @see Context#runInAnonymousContextScope
204
+ * @param {Function} scope - the first args is an anonymous ctx, scope should be async function
205
+ * @param {Request} [req] - if you want to mock request like querystring, you can pass an object to this function.
206
+ */
207
+ async runInAnonymousContextScope(scope, req) {
208
+ const ctx = this.createAnonymousContext(req);
209
+ if (!scope.name) {
210
+ Reflect.set(scope, '_name', eggUtils.getCalleeFromStack(true));
211
+ }
212
+ return await this.ctxStorage.run(ctx, async () => {
213
+ return await scope(ctx);
214
+ });
215
+ }
216
+ /**
217
+ * secret key for Application
218
+ * @member {String} Application#keys
219
+ */
220
+ get keys() {
221
+ if (!this._keys) {
222
+ if (!this.config.keys) {
223
+ if (this.config.env === 'local' || this.config.env === 'unittest') {
224
+ const configPath = path.join(this.config.baseDir, 'config/config.default.js');
225
+ console.error('Cookie need secret key to sign and encrypt.');
226
+ console.error('Please add `config.keys` in %s', configPath);
227
+ }
228
+ throw new Error('Please set config.keys first');
229
+ }
230
+ this._keys = this.config.keys.split(',').map(s => s.trim());
231
+ }
232
+ return this._keys;
233
+ }
234
+ /**
235
+ * bind app's events
236
+ *
237
+ * @private
238
+ */
239
+ #bindEvents() {
240
+ // Browser Cookie Limits: http://browsercookielimits.squawky.net/
241
+ this.on('cookieLimitExceed', ({ name, value, ctx }) => {
242
+ const err = new Error(`cookie ${name}'s length(${value.length}) exceed the limit(4093)`);
243
+ err.name = 'CookieLimitExceedError';
244
+ ctx.coreLogger.error(err);
245
+ });
246
+ // expose server to support websocket
247
+ this.once('server', (server) => this.onServer(server));
248
+ }
249
+ /**
250
+ * warn when confused configurations are present
251
+ *
252
+ * @private
253
+ */
254
+ #warnConfusedConfig() {
255
+ const confusedConfigurations = this.config.confusedConfigurations;
256
+ Object.keys(confusedConfigurations).forEach(key => {
257
+ if (this.config[key] !== undefined) {
258
+ this.logger.warn('[egg:application] Unexpected config key `%o` exists, Please use `%o` instead.', key, confusedConfigurations[key]);
259
+ }
260
+ });
261
+ }
262
+ }
263
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2FwcGxpY2F0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUM3QixPQUFPLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDekIsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBRTdCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNqQyxPQUFPLEVBQUUsS0FBSyxJQUFJLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNoRCxPQUFPLEVBQ0wsa0JBQWtCLEdBR25CLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLE1BQU0sTUFBTSx5QkFBeUIsQ0FBQztBQUU3QyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBRTVDLGtDQUFrQztBQUNsQyxzRkFBc0Y7QUFDdEYsTUFBTSx3QkFBd0IsR0FBRzs7Ozs7O1VBTXZCLENBQUM7QUFDWCxNQUFNLCtCQUErQixHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsd0JBQXdCLENBQUMsQ0FBQztBQUNwRixNQUFNLDRCQUE0QixHQUNoQywrQ0FBK0MsK0JBQStCLEVBQUU7SUFDaEYsV0FBVyx3QkFBd0IsRUFBRSxDQUFDO0FBRXhDLG1GQUFtRjtBQUNuRixTQUFTLGlCQUFpQixDQUFDLEtBQWE7SUFDdEMsaUVBQWlFO0lBQ2pFLHNEQUFzRDtJQUN0RCxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtB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
@@ -0,0 +1,14 @@
1
+ import { BaseContextClass as EggCoreBaseContextClass } from '@eggjs/core';
2
+ import type { ContextDelegation } from '../egg.js';
3
+ import { BaseContextLogger } from './base_context_logger.js';
4
+ /**
5
+ * BaseContextClass is a base class that can be extended,
6
+ * it's instantiated in context level,
7
+ * {@link Helper}, {@link Service} is extending it.
8
+ */
9
+ export declare class BaseContextClass extends EggCoreBaseContextClass {
10
+ #private;
11
+ ctx: ContextDelegation;
12
+ protected pathName?: string;
13
+ get logger(): BaseContextLogger;
14
+ }
@@ -0,0 +1,18 @@
1
+ import { BaseContextClass as EggCoreBaseContextClass } from '@eggjs/core';
2
+ import { BaseContextLogger } from './base_context_logger.js';
3
+ /**
4
+ * BaseContextClass is a base class that can be extended,
5
+ * it's instantiated in context level,
6
+ * {@link Helper}, {@link Service} is extending it.
7
+ */
8
+ export class BaseContextClass extends EggCoreBaseContextClass {
9
+ pathName;
10
+ #logger;
11
+ get logger() {
12
+ if (!this.#logger) {
13
+ this.#logger = new BaseContextLogger(this.ctx, this.pathName);
14
+ }
15
+ return this.#logger;
16
+ }
17
+ }
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZV9jb250ZXh0X2NsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jb3JlL2Jhc2VfY29udGV4dF9jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLElBQUksdUJBQXVCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFMUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFN0Q7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxnQkFBaUIsU0FBUSx1QkFBdUI7SUFFakQsUUFBUSxDQUFVO0lBQzVCLE9BQU8sQ0FBcUI7SUFFNUIsSUFBSSxNQUFNO1FBQ1IsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEUsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0NBQ0YifQ==
@@ -0,0 +1,36 @@
1
+ import type { EggContext } from '../egg.js';
2
+ export declare class BaseContextLogger {
3
+ #private;
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: EggContext, pathName?: string);
11
+ protected _log(method: 'info' | 'warn' | 'error' | 'debug', args: any[]): void;
12
+ /**
13
+ * @member {Function} BaseContextLogger#debug
14
+ * @param {...any} args - log msg
15
+ * @since 1.2.0
16
+ */
17
+ debug(...args: any[]): void;
18
+ /**
19
+ * @member {Function} BaseContextLogger#info
20
+ * @param {...any} args - log msg
21
+ * @since 1.2.0
22
+ */
23
+ info(...args: any[]): void;
24
+ /**
25
+ * @member {Function} BaseContextLogger#warn
26
+ * @param {...any} args - log msg
27
+ * @since 1.2.0
28
+ */
29
+ warn(...args: any[]): void;
30
+ /**
31
+ * @member {Function} BaseContextLogger#error
32
+ * @param {...any} args - log msg
33
+ * @since 1.2.0
34
+ */
35
+ error(...args: any[]): void;
36
+ }