egg 4.0.10 → 4.1.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 (291) hide show
  1. package/README.md +4 -22
  2. package/dist/agent.d.ts +8 -0
  3. package/dist/agent.js +11 -0
  4. package/dist/app/extend/context.d.ts +207 -0
  5. package/dist/app/extend/context.js +244 -0
  6. package/{src/app/extend/helper.ts → dist/app/extend/helper.d.ts} +8 -10
  7. package/dist/app/extend/helper.js +47 -0
  8. package/dist/app/extend/request.d.ts +145 -0
  9. package/dist/app/extend/request.js +226 -0
  10. package/{src/app/extend/response.ts → dist/app/extend/response.d.ts} +7 -16
  11. package/dist/app/extend/response.js +36 -0
  12. package/dist/app/middleware/body_parser.d.ts +2 -0
  13. package/dist/app/middleware/body_parser.js +7 -0
  14. package/dist/app/middleware/meta.d.ts +11 -0
  15. package/dist/app/middleware/meta.js +14 -0
  16. package/dist/app/middleware/notfound.d.ts +11 -0
  17. package/dist/app/middleware/notfound.js +26 -0
  18. package/dist/app/middleware/override_method.d.ts +2 -0
  19. package/dist/app/middleware/override_method.js +7 -0
  20. package/dist/app/middleware/site_file.d.ts +13 -0
  21. package/dist/app/middleware/site_file.js +38 -0
  22. package/dist/config/config.default.d.ts +12 -0
  23. package/dist/config/config.default.js +260 -0
  24. package/dist/config/config.local.d.ts +10 -0
  25. package/dist/config/config.local.js +7 -0
  26. package/dist/config/config.unittest.d.ts +9 -0
  27. package/dist/config/config.unittest.js +10 -0
  28. package/{src/config/plugin.ts → dist/config/plugin.d.ts} +41 -49
  29. package/dist/config/plugin.js +54 -0
  30. package/dist/index.d.ts +19 -0
  31. package/dist/index.js +21 -0
  32. package/dist/lib/agent.d.ts +22 -0
  33. package/dist/lib/agent.js +56 -0
  34. package/dist/lib/application.d.ts +71 -0
  35. package/dist/lib/application.js +209 -0
  36. package/dist/lib/core/base_context_class.d.ts +23 -0
  37. package/dist/lib/core/base_context_class.js +19 -0
  38. package/dist/lib/core/base_context_logger.d.ts +40 -0
  39. package/dist/lib/core/base_context_logger.js +58 -0
  40. package/dist/lib/core/base_hook_class.d.ts +18 -0
  41. package/dist/lib/core/base_hook_class.js +26 -0
  42. package/dist/lib/core/context_httpclient.d.ts +22 -0
  43. package/dist/lib/core/context_httpclient.js +29 -0
  44. package/dist/lib/core/httpclient.d.ts +17 -0
  45. package/dist/lib/core/httpclient.js +36 -0
  46. package/dist/lib/core/logger.d.ts +7 -0
  47. package/dist/lib/core/logger.js +31 -0
  48. package/{src/lib/core/messenger/IMessenger.ts → dist/lib/core/messenger/IMessenger.d.ts} +6 -10
  49. package/dist/lib/core/messenger/IMessenger.js +1 -0
  50. package/dist/lib/core/messenger/base.d.ts +12 -0
  51. package/dist/lib/core/messenger/base.js +29 -0
  52. package/dist/lib/core/messenger/index.d.ts +11 -0
  53. package/dist/lib/core/messenger/index.js +13 -0
  54. package/dist/lib/core/messenger/ipc.d.ts +63 -0
  55. package/dist/lib/core/messenger/ipc.js +122 -0
  56. package/dist/lib/core/messenger/local.d.ts +65 -0
  57. package/dist/lib/core/messenger/local.js +126 -0
  58. package/dist/lib/core/utils.d.ts +5 -0
  59. package/dist/lib/core/utils.js +48 -0
  60. package/dist/lib/egg.d.ts +306 -0
  61. package/dist/lib/egg.js +512 -0
  62. package/dist/lib/error/CookieLimitExceedError.d.ts +8 -0
  63. package/dist/lib/error/CookieLimitExceedError.js +15 -0
  64. package/dist/lib/error/MessageUnhandledRejectionError.d.ts +8 -0
  65. package/dist/lib/error/MessageUnhandledRejectionError.js +15 -0
  66. package/dist/lib/error/index.d.ts +3 -0
  67. package/dist/lib/error/index.js +4 -0
  68. package/dist/lib/loader/AgentWorkerLoader.d.ts +17 -0
  69. package/dist/lib/loader/AgentWorkerLoader.js +24 -0
  70. package/dist/lib/loader/AppWorkerLoader.d.ts +22 -0
  71. package/dist/lib/loader/AppWorkerLoader.js +37 -0
  72. package/dist/lib/loader/EggApplicationLoader.d.ts +8 -0
  73. package/dist/lib/loader/EggApplicationLoader.js +7 -0
  74. package/dist/lib/loader/index.d.ts +4 -0
  75. package/dist/lib/loader/index.js +5 -0
  76. package/dist/lib/start.d.ts +28 -0
  77. package/dist/lib/start.js +36 -0
  78. package/{src/lib/types.ts → dist/lib/types.d.ts} +73 -94
  79. package/dist/lib/types.js +36 -0
  80. package/dist/lib/utils.d.ts +5 -0
  81. package/dist/lib/utils.js +14 -0
  82. package/dist/urllib.d.ts +1 -0
  83. package/dist/urllib.js +3 -0
  84. package/package.json +81 -99
  85. package/README.zh-CN.md +0 -61
  86. package/dist/commonjs/agent.d.ts +0 -4
  87. package/dist/commonjs/agent.js +0 -10
  88. package/dist/commonjs/app/extend/context.d.ts +0 -204
  89. package/dist/commonjs/app/extend/context.js +0 -262
  90. package/dist/commonjs/app/extend/helper.d.ts +0 -37
  91. package/dist/commonjs/app/extend/helper.js +0 -49
  92. package/dist/commonjs/app/extend/request.d.ts +0 -141
  93. package/dist/commonjs/app/extend/request.js +0 -270
  94. package/dist/commonjs/app/extend/response.d.ts +0 -31
  95. package/dist/commonjs/app/extend/response.js +0 -37
  96. package/dist/commonjs/app/middleware/body_parser.d.ts +0 -2
  97. package/dist/commonjs/app/middleware/body_parser.js +0 -8
  98. package/dist/commonjs/app/middleware/meta.d.ts +0 -10
  99. package/dist/commonjs/app/middleware/meta.js +0 -22
  100. package/dist/commonjs/app/middleware/notfound.d.ts +0 -7
  101. package/dist/commonjs/app/middleware/notfound.js +0 -31
  102. package/dist/commonjs/app/middleware/override_method.d.ts +0 -2
  103. package/dist/commonjs/app/middleware/override_method.js +0 -8
  104. package/dist/commonjs/app/middleware/site_file.d.ts +0 -9
  105. package/dist/commonjs/app/middleware/site_file.js +0 -58
  106. package/dist/commonjs/config/config.default.d.ts +0 -9
  107. package/dist/commonjs/config/config.default.js +0 -379
  108. package/dist/commonjs/config/config.local.d.ts +0 -8
  109. package/dist/commonjs/config/config.local.js +0 -12
  110. package/dist/commonjs/config/config.unittest.d.ts +0 -7
  111. package/dist/commonjs/config/config.unittest.js +0 -11
  112. package/dist/commonjs/config/plugin.d.ts +0 -122
  113. package/dist/commonjs/config/plugin.js +0 -124
  114. package/dist/commonjs/index.d.ts +0 -69
  115. package/dist/commonjs/index.js +0 -83
  116. package/dist/commonjs/lib/agent.d.ts +0 -19
  117. package/dist/commonjs/lib/agent.js +0 -58
  118. package/dist/commonjs/lib/application.d.ts +0 -67
  119. package/dist/commonjs/lib/application.js +0 -266
  120. package/dist/commonjs/lib/core/base_context_class.d.ts +0 -17
  121. package/dist/commonjs/lib/core/base_context_class.js +0 -21
  122. package/dist/commonjs/lib/core/base_context_logger.d.ts +0 -36
  123. package/dist/commonjs/lib/core/base_context_logger.js +0 -64
  124. package/dist/commonjs/lib/core/base_hook_class.d.ts +0 -11
  125. package/dist/commonjs/lib/core/base_hook_class.js +0 -29
  126. package/dist/commonjs/lib/core/context_httpclient.d.ts +0 -16
  127. package/dist/commonjs/lib/core/context_httpclient.js +0 -30
  128. package/dist/commonjs/lib/core/httpclient.d.ts +0 -14
  129. package/dist/commonjs/lib/core/httpclient.js +0 -42
  130. package/dist/commonjs/lib/core/logger.d.ts +0 -3
  131. package/dist/commonjs/lib/core/logger.js +0 -40
  132. package/dist/commonjs/lib/core/messenger/IMessenger.d.ts +0 -50
  133. package/dist/commonjs/lib/core/messenger/IMessenger.js +0 -3
  134. package/dist/commonjs/lib/core/messenger/base.d.ts +0 -8
  135. package/dist/commonjs/lib/core/messenger/base.js +0 -31
  136. package/dist/commonjs/lib/core/messenger/index.d.ts +0 -7
  137. package/dist/commonjs/lib/core/messenger/index.js +0 -15
  138. package/dist/commonjs/lib/core/messenger/ipc.d.ts +0 -58
  139. package/dist/commonjs/lib/core/messenger/ipc.js +0 -135
  140. package/dist/commonjs/lib/core/messenger/local.d.ts +0 -60
  141. package/dist/commonjs/lib/core/messenger/local.js +0 -132
  142. package/dist/commonjs/lib/core/utils.d.ts +0 -2
  143. package/dist/commonjs/lib/core/utils.js +0 -77
  144. package/dist/commonjs/lib/egg.d.ts +0 -305
  145. package/dist/commonjs/lib/egg.js +0 -628
  146. package/dist/commonjs/lib/error/CookieLimitExceedError.d.ts +0 -5
  147. package/dist/commonjs/lib/error/CookieLimitExceedError.js +0 -16
  148. package/dist/commonjs/lib/error/MessageUnhandledRejectionError.d.ts +0 -5
  149. package/dist/commonjs/lib/error/MessageUnhandledRejectionError.js +0 -16
  150. package/dist/commonjs/lib/error/index.d.ts +0 -2
  151. package/dist/commonjs/lib/error/index.js +0 -19
  152. package/dist/commonjs/lib/loader/AgentWorkerLoader.d.ts +0 -12
  153. package/dist/commonjs/lib/loader/AgentWorkerLoader.js +0 -24
  154. package/dist/commonjs/lib/loader/AppWorkerLoader.d.ts +0 -17
  155. package/dist/commonjs/lib/loader/AppWorkerLoader.js +0 -43
  156. package/dist/commonjs/lib/loader/EggApplicationLoader.d.ts +0 -4
  157. package/dist/commonjs/lib/loader/EggApplicationLoader.js +0 -8
  158. package/dist/commonjs/lib/loader/index.d.ts +0 -3
  159. package/dist/commonjs/lib/loader/index.js +0 -22
  160. package/dist/commonjs/lib/start.d.ts +0 -24
  161. package/dist/commonjs/lib/start.js +0 -49
  162. package/dist/commonjs/lib/types.d.ts +0 -257
  163. package/dist/commonjs/lib/types.js +0 -16
  164. package/dist/commonjs/lib/utils.d.ts +0 -2
  165. package/dist/commonjs/lib/utils.js +0 -21
  166. package/dist/commonjs/package.json +0 -3
  167. package/dist/commonjs/urllib.d.ts +0 -1
  168. package/dist/commonjs/urllib.js +0 -18
  169. package/dist/esm/agent.d.ts +0 -4
  170. package/dist/esm/agent.js +0 -7
  171. package/dist/esm/app/extend/context.d.ts +0 -204
  172. package/dist/esm/app/extend/context.js +0 -259
  173. package/dist/esm/app/extend/helper.d.ts +0 -37
  174. package/dist/esm/app/extend/helper.js +0 -43
  175. package/dist/esm/app/extend/request.d.ts +0 -141
  176. package/dist/esm/app/extend/request.js +0 -264
  177. package/dist/esm/app/extend/response.d.ts +0 -31
  178. package/dist/esm/app/extend/response.js +0 -34
  179. package/dist/esm/app/middleware/body_parser.d.ts +0 -2
  180. package/dist/esm/app/middleware/body_parser.js +0 -3
  181. package/dist/esm/app/middleware/meta.d.ts +0 -10
  182. package/dist/esm/app/middleware/meta.js +0 -20
  183. package/dist/esm/app/middleware/notfound.d.ts +0 -7
  184. package/dist/esm/app/middleware/notfound.js +0 -29
  185. package/dist/esm/app/middleware/override_method.d.ts +0 -2
  186. package/dist/esm/app/middleware/override_method.js +0 -3
  187. package/dist/esm/app/middleware/site_file.d.ts +0 -9
  188. package/dist/esm/app/middleware/site_file.js +0 -53
  189. package/dist/esm/config/config.default.d.ts +0 -9
  190. package/dist/esm/config/config.default.js +0 -374
  191. package/dist/esm/config/config.local.d.ts +0 -8
  192. package/dist/esm/config/config.local.js +0 -10
  193. package/dist/esm/config/config.unittest.d.ts +0 -7
  194. package/dist/esm/config/config.unittest.js +0 -9
  195. package/dist/esm/config/favicon.png +0 -0
  196. package/dist/esm/config/plugin.d.ts +0 -122
  197. package/dist/esm/config/plugin.js +0 -122
  198. package/dist/esm/index.d.ts +0 -69
  199. package/dist/esm/index.js +0 -73
  200. package/dist/esm/lib/agent.d.ts +0 -19
  201. package/dist/esm/lib/agent.js +0 -54
  202. package/dist/esm/lib/application.d.ts +0 -67
  203. package/dist/esm/lib/application.js +0 -259
  204. package/dist/esm/lib/core/base_context_class.d.ts +0 -17
  205. package/dist/esm/lib/core/base_context_class.js +0 -17
  206. package/dist/esm/lib/core/base_context_logger.d.ts +0 -36
  207. package/dist/esm/lib/core/base_context_logger.js +0 -60
  208. package/dist/esm/lib/core/base_hook_class.d.ts +0 -11
  209. package/dist/esm/lib/core/base_hook_class.js +0 -22
  210. package/dist/esm/lib/core/context_httpclient.d.ts +0 -16
  211. package/dist/esm/lib/core/context_httpclient.js +0 -26
  212. package/dist/esm/lib/core/httpclient.d.ts +0 -14
  213. package/dist/esm/lib/core/httpclient.js +0 -38
  214. package/dist/esm/lib/core/logger.d.ts +0 -3
  215. package/dist/esm/lib/core/logger.js +0 -37
  216. package/dist/esm/lib/core/messenger/IMessenger.d.ts +0 -50
  217. package/dist/esm/lib/core/messenger/IMessenger.js +0 -2
  218. package/dist/esm/lib/core/messenger/base.d.ts +0 -8
  219. package/dist/esm/lib/core/messenger/base.js +0 -27
  220. package/dist/esm/lib/core/messenger/index.d.ts +0 -7
  221. package/dist/esm/lib/core/messenger/index.js +0 -12
  222. package/dist/esm/lib/core/messenger/ipc.d.ts +0 -58
  223. package/dist/esm/lib/core/messenger/ipc.js +0 -128
  224. package/dist/esm/lib/core/messenger/local.d.ts +0 -60
  225. package/dist/esm/lib/core/messenger/local.js +0 -128
  226. package/dist/esm/lib/core/utils.d.ts +0 -2
  227. package/dist/esm/lib/core/utils.js +0 -70
  228. package/dist/esm/lib/egg.d.ts +0 -305
  229. package/dist/esm/lib/egg.js +0 -586
  230. package/dist/esm/lib/error/CookieLimitExceedError.d.ts +0 -5
  231. package/dist/esm/lib/error/CookieLimitExceedError.js +0 -12
  232. package/dist/esm/lib/error/MessageUnhandledRejectionError.d.ts +0 -5
  233. package/dist/esm/lib/error/MessageUnhandledRejectionError.js +0 -12
  234. package/dist/esm/lib/error/index.d.ts +0 -2
  235. package/dist/esm/lib/error/index.js +0 -3
  236. package/dist/esm/lib/loader/AgentWorkerLoader.d.ts +0 -12
  237. package/dist/esm/lib/loader/AgentWorkerLoader.js +0 -20
  238. package/dist/esm/lib/loader/AppWorkerLoader.d.ts +0 -17
  239. package/dist/esm/lib/loader/AppWorkerLoader.js +0 -39
  240. package/dist/esm/lib/loader/EggApplicationLoader.d.ts +0 -4
  241. package/dist/esm/lib/loader/EggApplicationLoader.js +0 -4
  242. package/dist/esm/lib/loader/index.d.ts +0 -3
  243. package/dist/esm/lib/loader/index.js +0 -4
  244. package/dist/esm/lib/start.d.ts +0 -24
  245. package/dist/esm/lib/start.js +0 -43
  246. package/dist/esm/lib/types.d.ts +0 -257
  247. package/dist/esm/lib/types.js +0 -14
  248. package/dist/esm/lib/utils.d.ts +0 -2
  249. package/dist/esm/lib/utils.js +0 -14
  250. package/dist/esm/package.json +0 -3
  251. package/dist/esm/urllib.d.ts +0 -1
  252. package/dist/esm/urllib.js +0 -2
  253. package/dist/package.json +0 -4
  254. package/src/agent.ts +0 -7
  255. package/src/app/extend/context.ts +0 -332
  256. package/src/app/extend/request.ts +0 -300
  257. package/src/app/middleware/body_parser.ts +0 -3
  258. package/src/app/middleware/meta.ts +0 -27
  259. package/src/app/middleware/notfound.ts +0 -41
  260. package/src/app/middleware/override_method.ts +0 -3
  261. package/src/app/middleware/site_file.ts +0 -68
  262. package/src/config/config.default.ts +0 -404
  263. package/src/config/config.local.ts +0 -11
  264. package/src/config/config.unittest.ts +0 -10
  265. package/src/config/favicon.png +0 -0
  266. package/src/index.ts +0 -120
  267. package/src/lib/agent.ts +0 -66
  268. package/src/lib/application.ts +0 -308
  269. package/src/lib/core/base_context_class.ts +0 -24
  270. package/src/lib/core/base_context_logger.ts +0 -67
  271. package/src/lib/core/base_hook_class.ts +0 -30
  272. package/src/lib/core/context_httpclient.ts +0 -33
  273. package/src/lib/core/httpclient.ts +0 -64
  274. package/src/lib/core/logger.ts +0 -42
  275. package/src/lib/core/messenger/base.ts +0 -30
  276. package/src/lib/core/messenger/index.ts +0 -16
  277. package/src/lib/core/messenger/ipc.ts +0 -146
  278. package/src/lib/core/messenger/local.ts +0 -147
  279. package/src/lib/core/utils.ts +0 -77
  280. package/src/lib/egg.ts +0 -705
  281. package/src/lib/error/CookieLimitExceedError.ts +0 -12
  282. package/src/lib/error/MessageUnhandledRejectionError.ts +0 -12
  283. package/src/lib/error/index.ts +0 -2
  284. package/src/lib/loader/AgentWorkerLoader.ts +0 -21
  285. package/src/lib/loader/AppWorkerLoader.ts +0 -42
  286. package/src/lib/loader/EggApplicationLoader.ts +0 -5
  287. package/src/lib/loader/index.ts +0 -3
  288. package/src/lib/start.ts +0 -66
  289. package/src/lib/utils.ts +0 -15
  290. package/src/urllib.ts +0 -1
  291. /package/dist/{commonjs/config → config}/favicon.png +0 -0
@@ -1,68 +0,0 @@
1
- import path from 'node:path';
2
- import { fileURLToPath } from 'node:url';
3
- import { readFile } from 'node:fs/promises';
4
- import type { Next, Context } from '../../lib/egg.js';
5
-
6
- export type SiteFileContentFun = (ctx: Context) => Promise<Buffer | string>;
7
-
8
- export interface SiteFileMiddlewareOptions {
9
- enable: boolean;
10
- cacheControl: string;
11
- [key: string]: string | Buffer | boolean | SiteFileContentFun | URL;
12
- }
13
-
14
- const BUFFER_CACHE = Symbol('siteFile URL buffer cache');
15
-
16
- export default (options: SiteFileMiddlewareOptions) => {
17
- return async function siteFile(ctx: Context, next: Next) {
18
- if (ctx.method !== 'HEAD' && ctx.method !== 'GET') {
19
- return next();
20
- }
21
- if (ctx.path[0] !== '/') {
22
- return next();
23
- }
24
-
25
- let content = options[ctx.path];
26
- if (!content) {
27
- return next();
28
- }
29
-
30
- // '/favicon.ico': 'https://eggjs.org/favicon.ico' or '/favicon.ico': async (ctx) => 'https://eggjs.org/favicon.ico'
31
- // content is function
32
- if (typeof content === 'function') {
33
- content = await content(ctx);
34
- }
35
- // content is url
36
- if (typeof content === 'string') {
37
- return ctx.redirect(content);
38
- }
39
-
40
- // URL
41
- if (content instanceof URL) {
42
- if (content.protocol !== 'file:') {
43
- return ctx.redirect(content.href);
44
- }
45
- // protocol = file:
46
- let buffer = Reflect.get(content, BUFFER_CACHE) as Buffer;
47
- if (!buffer) {
48
- buffer = await readFile(fileURLToPath(content));
49
- Reflect.set(content, BUFFER_CACHE, buffer);
50
- }
51
- ctx.set('cache-control', options.cacheControl);
52
- ctx.body = content;
53
- ctx.type = path.extname(ctx.path);
54
- return;
55
- }
56
-
57
- // '/robots.txt': Buffer <xx..
58
- // content is buffer
59
- if (Buffer.isBuffer(content)) {
60
- ctx.set('cache-control', options.cacheControl);
61
- ctx.body = content;
62
- ctx.type = path.extname(ctx.path);
63
- return;
64
- }
65
-
66
- return next();
67
- };
68
- };
@@ -1,404 +0,0 @@
1
- import path from 'node:path';
2
- import { pathToFileURL } from 'node:url';
3
- import type { EggAppInfo, Context } from '@eggjs/core';
4
- import type { EggAppConfig, PowerPartial } from '../lib/types.js';
5
- import { getSourceFile } from '../lib/utils.js';
6
-
7
- /**
8
- * The configuration of egg application, can be access by `app.config`
9
- * @class Config
10
- * @since 1.0.0
11
- */
12
- export default (appInfo: EggAppInfo) => {
13
- const config: PowerPartial<EggAppConfig> = {
14
- /**
15
- * The environment of egg
16
- * @member {String} Config#env
17
- * @see {appInfo#env}
18
- * @since 1.0.0
19
- */
20
- env: appInfo.env,
21
-
22
- /**
23
- * The name of the application
24
- * @member {String} Config#name
25
- * @see {appInfo#name}
26
- * @since 1.0.0
27
- */
28
- name: appInfo.name,
29
-
30
- /**
31
- * The key that signing cookies. It can contain multiple keys separated by `,`.
32
- * @member {String} Config#keys
33
- * @see http://eggjs.org/en/core/cookie-and-session.html#cookie-secret-key
34
- * @default
35
- * @since 1.0.0
36
- */
37
- keys: '',
38
-
39
- /**
40
- * default cookie options
41
- *
42
- * @member Config#cookies
43
- * @property {String} sameSite - SameSite property, defaults is ''
44
- * @property {Boolean} httpOnly - httpOnly property, defaults is true
45
- */
46
- cookies: {
47
- // httpOnly: true | false,
48
- // sameSite: 'none|lax|strict',
49
- },
50
-
51
- /**
52
- * Whether application deployed after a reverse proxy,
53
- * when true proxy header fields will be trusted
54
- * @member {Boolean} Config#proxy
55
- * @default
56
- * @since 1.0.0
57
- */
58
- proxy: false,
59
-
60
- /**
61
- *
62
- * max ips read from proxy ip header, default to 0 (means infinity)
63
- * to prevent users from forging client ip addresses via x-forwarded-for
64
- * @see https://github.com/koajs/koa/blob/master/docs/api/request.md#requestips
65
- * @member {Integer} Config#maxIpsCount
66
- * @default
67
- * @since 2.25.0
68
- */
69
- maxIpsCount: 0,
70
-
71
- /**
72
- * please use maxIpsCount instead
73
- * @member {Integer} Config#maxProxyCount
74
- * @default
75
- * @since 2.21.0
76
- * @deprecated
77
- */
78
- maxProxyCount: 0,
79
-
80
- /**
81
- * Detect request's protocol from specified headers, not case-sensitive.
82
- * Only worked when config.proxy set to true.
83
- * @member {String} Config#protocolHeaders
84
- * @default
85
- * @since 1.0.0
86
- */
87
- protocolHeaders: 'x-forwarded-proto',
88
-
89
- /**
90
- * Detect request' ip from specified headers, not case-sensitive.
91
- * Only worked when config.proxy set to true.
92
- * @member {String} Config#ipHeaders
93
- * @default
94
- * @since 1.0.0
95
- */
96
- ipHeaders: 'x-forwarded-for',
97
-
98
- /**
99
- * Detect request' host from specified headers, not case-sensitive.
100
- * Only worked when config.proxy set to true.
101
- * @member {String} Config#hostHeaders
102
- * @default
103
- * @since 1.0.0
104
- */
105
- hostHeaders: '',
106
-
107
- /**
108
- * package.json
109
- * @member {Object} Config#pkg
110
- * @see {appInfo#pkg}
111
- * @since 1.0.0
112
- */
113
- pkg: appInfo.pkg,
114
-
115
- /**
116
- * The current directory of the application
117
- * @member {String} Config#baseDir
118
- * @see {appInfo#baseDir}
119
- * @since 1.0.0
120
- */
121
- baseDir: appInfo.baseDir,
122
-
123
- /**
124
- * The current HOME directory
125
- * @member {String} Config#HOME
126
- * @see {appInfo#HOME}
127
- * @since 1.0.0
128
- */
129
- HOME: appInfo.HOME,
130
-
131
- /**
132
- * The directory of server running. You can find `application_config.json` under it that is dumped from `app.config`.
133
- * @member {String} Config#rundir
134
- * @default
135
- * @since 1.0.0
136
- */
137
- rundir: path.join(appInfo.baseDir, 'run'),
138
-
139
- /**
140
- * dump config
141
- *
142
- * It will ignore special keys when dumpConfig
143
- *
144
- * @member Config#dump
145
- * @property {Set} ignore - keys to ignore
146
- */
147
- dump: {
148
- ignore: new Set([
149
- 'pass', 'pwd', 'passd', 'passwd', 'password', 'keys', 'masterKey', 'accessKey',
150
- // ignore any key contains "secret" keyword
151
- /secret/i,
152
- ]),
153
- timing: {
154
- // if boot action >= slowBootActionMinDuration, egg core will print it to warning log
155
- slowBootActionMinDuration: 5000,
156
- },
157
- },
158
-
159
- /**
160
- * configurations are confused to users
161
- * {
162
- * [unexpectedKey]: [expectedKey],
163
- * }
164
- * @member Config#confusedConfigurations
165
- * @type {Object}
166
- */
167
- confusedConfigurations: {
168
- bodyparser: 'bodyParser',
169
- notFound: 'notfound',
170
- sitefile: 'siteFile',
171
- middlewares: 'middleware',
172
- httpClient: 'httpclient',
173
- },
174
- };
175
-
176
- /**
177
- * The options of `notfound` middleware
178
- *
179
- * It will return page or json depend on negotiation when 404,
180
- * If pageUrl is set, it will redirect to the page.
181
- *
182
- * @member Config#notfound
183
- * @property {String} pageUrl - the 404 page url
184
- */
185
- config.notfound = {
186
- enable: true,
187
- pageUrl: '',
188
- };
189
-
190
- /**
191
- * The option of `siteFile` middleware
192
- *
193
- * You can map some files using this options, it will response immediately when matching.
194
- *
195
- * @member {Object} Config#siteFile - key is path, and value is url or buffer.
196
- * @property {String} cacheControl - files cache , default is public, max-age=2592000
197
- * @example
198
- * // specific app's favicon, => '/favicon.ico': 'https://eggjs.org/favicon.ico',
199
- * config.siteFile = {
200
- * '/favicon.ico': 'https://eggjs.org/favicon.ico',
201
- * };
202
- */
203
- config.siteFile = {
204
- enable: true,
205
- '/favicon.ico': pathToFileURL(getSourceFile('config/favicon.png')),
206
- // default cache in 30 days
207
- cacheControl: 'public, max-age=2592000',
208
- };
209
-
210
- /**
211
- * The options of `bodyParser` middleware
212
- *
213
- * @member Config#bodyParser
214
- * @property {Boolean} enable - enable bodyParser or not, default is true
215
- * @property {String | RegExp | Function | Array} ignore - won't parse request body when url path hit ignore pattern, can not set `ignore` when `match` presented
216
- * @property {String | RegExp | Function | Array} match - will parse request body only when url path hit match pattern
217
- * @property {String} encoding - body's encoding type,default is utf8
218
- * @property {String} formLimit - limit of the urlencoded body. If the body ends up being larger than this limit, a 413 error code is returned. Default is 1mb
219
- * @property {String} jsonLimit - limit of the json body, default is 1mb
220
- * @property {String} textLimit - limit of the text body, default is 1mb
221
- * @property {Boolean} strict - when set to true, JSON parser will only accept arrays and objects. Default is true
222
- * @property {Number} queryString.arrayLimit - urlencoded body array's max length, default is 100
223
- * @property {Number} queryString.depth - urlencoded body object's max depth, default is 5
224
- * @property {Number} queryString.parameterLimit - urlencoded body maximum parameters, default is 1000
225
- */
226
- config.bodyParser = {
227
- enable: true,
228
- encoding: 'utf8',
229
- formLimit: '1mb',
230
- jsonLimit: '1mb',
231
- textLimit: '1mb',
232
- strict: true,
233
- // @see https://github.com/hapijs/qs/blob/master/lib/parse.js#L8 for more options
234
- queryString: {
235
- arrayLimit: 100,
236
- depth: 5,
237
- parameterLimit: 1000,
238
- },
239
- onProtoPoisoning: 'error',
240
- onerror(err: any, ctx: Context) {
241
- err.message = `${err.message}, check bodyParser config`;
242
- if (ctx.status === 404) {
243
- // set default status to 400, meaning client bad request
244
- ctx.status = 400;
245
- if (!err.status) {
246
- err.status = 400;
247
- }
248
- }
249
- throw err;
250
- },
251
- };
252
-
253
- /**
254
- * logger options
255
- * @member Config#logger
256
- * @property {String} dir - directory of log files
257
- * @property {String} encoding - log file encoding, defaults to utf8
258
- * @property {String} level - default log level, could be: DEBUG, INFO, WARN, ERROR or NONE, defaults to INFO in production
259
- * @property {String} consoleLevel - log level of stdout, defaults to INFO in local serverEnv, defaults to WARN in unittest, defaults to NONE elsewise
260
- * @property {Boolean} disableConsoleAfterReady - disable logger console after app ready. defaults to `false` on local and unittest env, others is `true`.
261
- * @property {Boolean} outputJSON - log as JSON or not, defaults to false
262
- * @property {Boolean} buffer - if enabled, flush logs to disk at a certain frequency to improve performance, defaults to true
263
- * @property {String} errorLogName - file name of errorLogger
264
- * @property {String} coreLogName - file name of coreLogger
265
- * @property {String} agentLogName - file name of agent worker log
266
- * @property {Object} coreLogger - custom config of coreLogger
267
- * @property {Boolean} allowDebugAtProd - allow debug log at prod, defaults to false
268
- * @property {Boolean} enableFastContextLogger - using the app logger instead of EggContextLogger, defaults to true
269
- */
270
- config.logger = {
271
- dir: path.join(appInfo.root, 'logs', appInfo.name),
272
- encoding: 'utf8',
273
- env: appInfo.env,
274
- level: 'INFO',
275
- consoleLevel: 'INFO',
276
- disableConsoleAfterReady: appInfo.env !== 'local' && appInfo.env !== 'unittest',
277
- outputJSON: false,
278
- buffer: true,
279
- appLogName: `${appInfo.name}-web.log`,
280
- coreLogName: 'egg-web.log',
281
- agentLogName: 'egg-agent.log',
282
- errorLogName: 'common-error.log',
283
- coreLogger: {},
284
- allowDebugAtProd: false,
285
- enableFastContextLogger: true,
286
- };
287
-
288
- /**
289
- * The option for httpclient
290
- * @member Config#httpclient
291
- * @property {Boolean} enableDNSCache - Enable DNS lookup from local cache or not, default is false.
292
- * @property {Boolean} dnsCacheLookupInterval - minimum interval of DNS query on the same hostname (default 10s).
293
- *
294
- * @property {Number} request.timeout - httpclient request default timeout, default is 5000 ms.
295
- *
296
- * @property {Boolean} httpAgent.keepAlive - Enable http agent keepalive or not, default is true
297
- * @property {Number} httpAgent.freeSocketTimeout - http agent socket keepalive max free time, default is 4000 ms.
298
- * @property {Number} httpAgent.maxSockets - http agent max socket number of one host, default is `Number.MAX_SAFE_INTEGER` @ses https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER
299
- * @property {Number} httpAgent.maxFreeSockets - http agent max free socket number of one host, default is 256.
300
- *
301
- * @property {Boolean} httpsAgent.keepAlive - Enable https agent keepalive or not, default is true
302
- * @property {Number} httpsAgent.freeSocketTimeout - https agent socket keepalive max free time, default is 4000 ms.
303
- * @property {Number} httpsAgent.maxSockets - https agent max socket number of one host, default is `Number.MAX_SAFE_INTEGER` @ses https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER
304
- * @property {Number} httpsAgent.maxFreeSockets - https agent max free socket number of one host, default is 256.
305
- * @property {Boolean} useHttpClientNext - use urllib@3 HttpClient
306
- */
307
- config.httpclient = {
308
- request: {
309
- timeout: 5000,
310
- },
311
- };
312
-
313
- /**
314
- * The options of `meta` middleware
315
- *
316
- * @member Config#meta
317
- * @property {Boolean} enable - enable meta or not, default is `true`
318
- * @property {Boolean} logging - enable logging start request, default is `false`
319
- */
320
- config.meta = {
321
- enable: true,
322
- logging: false,
323
- };
324
-
325
- /**
326
- * core enable middlewares
327
- * @member {Array} Config#middleware
328
- */
329
- config.coreMiddleware = [
330
- 'meta',
331
- 'siteFile',
332
- 'notfound',
333
- 'bodyParser',
334
- 'overrideMethod',
335
- ];
336
-
337
- /**
338
- * emit `startTimeout` if worker don't ready after `workerStartTimeout` ms
339
- * @member {Number} Config.workerStartTimeout
340
- */
341
- config.workerStartTimeout = 10 * 60 * 1000;
342
-
343
- /**
344
- * server timeout in milliseconds, default to 0 (no timeout).
345
- *
346
- * for special request, just use `ctx.req.setTimeout(ms)`
347
- *
348
- * @member {Number} Config#serverTimeout
349
- * @see https://nodejs.org/api/http.html#http_server_timeout
350
- */
351
- config.serverTimeout = null;
352
-
353
- /**
354
- * The options of cluster
355
- * @member {Object} Config#cluster
356
- * @property {Object} listen - listen options, see {@link https://nodejs.org/api/http.html#http_server_listen_port_hostname_backlog_callback}
357
- * @property {String} listen.path - set a unix sock path when server listen
358
- * @property {Number} listen.port - set a port when server listen
359
- * @property {String} listen.hostname - set a hostname binding server when server listen
360
- */
361
- config.cluster = {
362
- listen: {
363
- path: '',
364
- port: 7001,
365
- hostname: '',
366
- },
367
- };
368
-
369
- /**
370
- * @property {Number} responseTimeout - response timeout, default is 60000
371
- */
372
- config.clusterClient = {
373
- maxWaitTime: 60000,
374
- responseTimeout: 60000,
375
- };
376
-
377
- /**
378
- * This function / async function will be called when a client error occurred and return the response.
379
- *
380
- * The arguments are `err`, `socket` and `application` which indicate current client error object, current socket
381
- * object and the application object.
382
- *
383
- * The response to be returned should include properties below:
384
- *
385
- * @member {Function} Config#onClientError
386
- * @property [body] {String|Buffer} - the response body
387
- * @property [status] {Number} - the response status code
388
- * @property [headers] {Object} - the response header key-value pairs
389
- *
390
- * @example
391
- * exports.onClientError = async (err, socket, app) => {
392
- * return {
393
- * body: 'error',
394
- * status: 400,
395
- * headers: {
396
- * 'powered-by': 'Egg.js',
397
- * }
398
- * };
399
- * }
400
- */
401
- config.onClientError = undefined;
402
-
403
- return config;
404
- };
@@ -1,11 +0,0 @@
1
- import type { EggAppConfig, PowerPartial } from '../lib/types.js';
2
-
3
- export default () => {
4
- return {
5
- logger: {
6
- coreLogger: {
7
- consoleLevel: 'WARN',
8
- },
9
- },
10
- } satisfies PowerPartial<EggAppConfig>;
11
- };
@@ -1,10 +0,0 @@
1
- import type { EggAppConfig, PowerPartial } from '../lib/types.js';
2
-
3
- export default () => {
4
- return {
5
- logger: {
6
- consoleLevel: 'WARN',
7
- buffer: false,
8
- },
9
- } satisfies PowerPartial<EggAppConfig>;
10
- };
Binary file
package/src/index.ts DELETED
@@ -1,120 +0,0 @@
1
- /**
2
- * @namespace Egg
3
- */
4
-
5
- import { BaseContextClass } from './lib/core/base_context_class.js';
6
- import {
7
- startEgg,
8
- SingleModeApplication,
9
- SingleModeAgent,
10
- } from './lib/start.js';
11
- import Helper from './app/extend/helper.js';
12
-
13
- // export extends
14
- export {
15
- Helper,
16
- };
17
- export type {
18
- // keep compatible with egg v3
19
- Helper as IHelper,
20
- };
21
-
22
- // export types
23
- export * from './lib/egg.js';
24
- export * from './lib/types.js';
25
- export * from './lib/start.js';
26
-
27
- // export singleton
28
- export {
29
- Singleton,
30
- type SingletonCreateMethod,
31
- type SingletonOptions,
32
- } from '@eggjs/core';
33
-
34
- // export errors
35
- export * from './lib/error/index.js';
36
-
37
- // export loggers
38
- export type {
39
- LoggerLevel,
40
- EggLogger,
41
- } from 'egg-logger';
42
-
43
- // export httpClients
44
- export * from './lib/core/httpclient.js';
45
- export * from './lib/core/context_httpclient.js';
46
-
47
- /**
48
- * Start egg application with cluster mode
49
- * @since 1.0.0
50
- */
51
- export * from '@eggjs/cluster';
52
-
53
- /**
54
- * Start egg application with single process mode
55
- * @since 1.0.0
56
- */
57
- export {
58
- startEgg as start,
59
- SingleModeApplication,
60
- SingleModeAgent,
61
- };
62
-
63
- /**
64
- * @member {Application} Egg#Application
65
- * @since 1.0.0
66
- */
67
- export { Application } from './lib/application.js';
68
-
69
- /**
70
- * @member {Agent} Egg#Agent
71
- * @since 1.0.0
72
- */
73
- export { Agent } from './lib/agent.js';
74
-
75
- /**
76
- * @member {AppWorkerLoader} Egg#AppWorkerLoader
77
- * @since 1.0.0
78
- */
79
-
80
- /**
81
- * @member {AgentWorkerLoader} Egg#AgentWorkerLoader
82
- * @since 1.0.0
83
- */
84
-
85
- export { AppWorkerLoader, AgentWorkerLoader } from './lib/loader/index.js';
86
-
87
- /**
88
- * @member {Controller} Egg#Controller
89
- * @since 1.1.0
90
- */
91
- export {
92
- BaseContextClass as Controller,
93
- };
94
-
95
- /**
96
- * @member {Service} Egg#Service
97
- * @since 1.1.0
98
- */
99
- export {
100
- BaseContextClass as Service,
101
- };
102
-
103
- /**
104
- * @member {Subscription} Egg#Subscription
105
- * @since 1.10.0
106
- */
107
- export {
108
- BaseContextClass as Subscription,
109
- };
110
-
111
- /**
112
- * @member {BaseContextClass} Egg#BaseContextClass
113
- * @since 1.2.0
114
- */
115
- export { BaseContextClass } from './lib/core/base_context_class.js';
116
-
117
- /**
118
- * @member {Boot} Egg#Boot
119
- */
120
- export { BaseHookClass as Boot } from './lib/core/base_hook_class.js';
package/src/lib/agent.ts DELETED
@@ -1,66 +0,0 @@
1
- import type { EggLogger } from 'egg-logger';
2
- import { EggApplicationCore, EggApplicationCoreOptions } from './egg.js';
3
- import { AgentWorkerLoader } from './loader/index.js';
4
-
5
- const EGG_LOADER = Symbol.for('egg#loader');
6
-
7
- /**
8
- * Singleton instance in Agent Worker, extend {@link EggApplicationCore}
9
- * @augments EggApplicationCore
10
- */
11
- export class Agent extends EggApplicationCore {
12
- readonly #agentAliveHandler: NodeJS.Timeout;
13
-
14
- /**
15
- * @class
16
- * @param {Object} options - see {@link EggApplicationCore}
17
- */
18
- constructor(options?: Omit<EggApplicationCoreOptions, 'type'>) {
19
- super({
20
- ...options,
21
- type: 'agent',
22
- });
23
-
24
- // keep agent alive even it doesn't have any io tasks
25
- this.#agentAliveHandler = setInterval(() => {
26
- this.coreLogger.info('[]');
27
- }, 24 * 60 * 60 * 1000);
28
- }
29
-
30
- get [EGG_LOADER]() {
31
- return AgentWorkerLoader;
32
- }
33
-
34
- _wrapMessenger() {
35
- for (const methodName of [
36
- 'broadcast',
37
- 'sendTo',
38
- 'sendToApp',
39
- 'sendToAgent',
40
- 'sendRandom',
41
- ]) {
42
- wrapMethod(methodName, this.messenger, this.coreLogger);
43
- }
44
-
45
- function wrapMethod(methodName: string, messenger: any, logger: EggLogger) {
46
- const originMethod = messenger[methodName];
47
- messenger[methodName] = function(...args: any[]) {
48
- const stack = new Error().stack!.split('\n').slice(1).join('\n');
49
- logger.warn(
50
- "agent can't call %s before server started\n%s",
51
- methodName,
52
- stack,
53
- );
54
- originMethod.apply(this, args);
55
- };
56
- messenger.prependOnceListener('egg-ready', () => {
57
- messenger[methodName] = originMethod;
58
- });
59
- }
60
- }
61
-
62
- async close() {
63
- clearInterval(this.#agentAliveHandler);
64
- await super.close();
65
- }
66
- }