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
package/History.md DELETED
@@ -1,52 +0,0 @@
1
-
2
- 3.29.0 / 2024-11-30
3
- ==================
4
-
5
- **features**
6
- * [[`e4f706990`](http://github.com/eggjs/egg/commit/e4f7069904b99c842e65692f2531a72543719207)] - feat: use urllib@4.5.0 (#5371) (fengmk2 <<fengmk2@gmail.com>>)
7
-
8
- 3.28.0 / 2024-09-16
9
- ==================
10
-
11
- **features**
12
- * [[`46d3fb222`](http://github.com/eggjs/egg/commit/46d3fb222bcf455d2aee9a99005d18c271f29b16)] - feat: support allowH2 on urllib@4 (#5357) (fengmk2 <<suqian.yf@antgroup.com>>)
13
-
14
- 3.27.1 / 2024-07-12
15
- ==================
16
-
17
- **fixes**
18
- * [[`f3d8df1b`](http://github.com/eggjs/egg/commit/f3d8df1b7c2aef88cca3beec8c753656f8cc629c)] - fix: add httpclient.safeCurl typing (#5341) (killa <<zhubin.gzb@antgroup.com>>)
19
-
20
- 3.27.0 / 2024-07-12
21
- ==================
22
-
23
- **features**
24
- * [[`68cbd241`](http://github.com/eggjs/egg/commit/68cbd241e2172b8018328d77ea087dd5974a580f)] - feat: impl httpclient.safeCurl (#5339) (killa <<zhubin.gzb@antgroup.com>>)
25
-
26
- 3.26.1 / 2024-07-04
27
- ==================
28
-
29
- **fixes**
30
- * [[`872273cb`](http://github.com/eggjs/egg/commit/872273cb23cd6f5d76b3f33528916effade31011)] - fix: xframe value type (#5336) (hongzzz <<hongzzz@foxmail.com>>)
31
-
32
- **others**
33
- * [[`8ae76d09`](http://github.com/eggjs/egg/commit/8ae76d09db8cf020cbdacfc64fee0750b9612136)] - docs: fix typo (#5330) (Fu Yuchen <<78291982+fyc09@users.noreply.github.com>>)
34
-
35
- 3.26.0 / 2024-07-01
36
- ==================
37
-
38
- **features**
39
- * [[`b0292a8b`](http://github.com/eggjs/egg/commit/b0292a8b7e76d5dbf7441b7164c39441dbae51ec)] - feat: allow to create httpClient from app (#5334) (fengmk2 <<suqian.yf@antgroup.com>>)
40
-
41
- 3.25.0 / 2024-06-27
42
- ==================
43
-
44
- **features**
45
- * [[`ceded0b1`](http://github.com/eggjs/egg/commit/ceded0b1c9217503c5ed9226f96c493d6bd00547)] - feat: allow to httpClient use HTTP2 first (#5332) (fengmk2 <<suqian.yf@antgroup.com>>)
46
-
47
- **others**
48
- * [[`8553c3f2`](http://github.com/eggjs/egg/commit/8553c3f23e423e9f60144b11a484b703fe7c9229)] - chore: remove auto release (fengmk2 <<suqian.yf@antgroup.com>>)
49
- * [[`b4f01a1c`](http://github.com/eggjs/egg/commit/b4f01a1c6bf006c943c85fce334b81d61f55b7d0)] - chore: fix release branches name (fengmk2 <<suqian.yf@antgroup.com>>)
50
- * [[`a8073b04`](http://github.com/eggjs/egg/commit/a8073b04fc3821bb23326c6c8b4fd0ccaeb5c200)] - chore: add release config (fengmk2 <<suqian.yf@antgroup.com>>)
51
- * [[`8ce2ff90`](http://github.com/eggjs/egg/commit/8ce2ff90bfbb9e4580a23ea49a15fdb1c185fbb5)] - chore: add npm publish tag (fengmk2 <<suqian.yf@antgroup.com>>)
52
- * [[`44950ed8`](http://github.com/eggjs/egg/commit/44950ed82a3ce4d5d4b9028aee98d6650298a552)] - chore: start 3.x LTS (fengmk2 <<suqian.yf@antgroup.com>>)
package/agent.js DELETED
@@ -1,11 +0,0 @@
1
- 'use strict';
2
-
3
- const BaseHookClass = require('./lib/core/base_hook_class');
4
-
5
- class EggAgentHook extends BaseHookClass {
6
- configDidLoad() {
7
- this.agent._wrapMessenger();
8
- }
9
- }
10
-
11
- module.exports = EggAgentHook;
@@ -1,285 +0,0 @@
1
- 'use strict';
2
-
3
- const { performance } = require('perf_hooks');
4
- const delegate = require('delegates');
5
- const { assign } = require('utility');
6
- const eggUtils = require('egg-core').utils;
7
-
8
- const HELPER = Symbol('Context#helper');
9
- const LOCALS = Symbol('Context#locals');
10
- const LOCALS_LIST = Symbol('Context#localsList');
11
- const COOKIES = Symbol('Context#cookies');
12
- const CONTEXT_LOGGERS = Symbol('Context#logger');
13
- const CONTEXT_HTTPCLIENT = Symbol('Context#httpclient');
14
- const CONTEXT_ROUTER = Symbol('Context#router');
15
-
16
- const proto = module.exports = {
17
-
18
- /**
19
- * Get the current visitor's cookies.
20
- */
21
- get cookies() {
22
- if (!this[COOKIES]) {
23
- this[COOKIES] = new this.app.ContextCookies(this, this.app.keys, this.app.config.cookies);
24
- }
25
- return this[COOKIES];
26
- },
27
-
28
- /**
29
- * Get a wrapper httpclient instance contain ctx in the hold request process
30
- *
31
- * @return {ContextHttpClient} the wrapper httpclient instance
32
- */
33
- get httpclient() {
34
- if (!this[CONTEXT_HTTPCLIENT]) {
35
- this[CONTEXT_HTTPCLIENT] = new this.app.ContextHttpClient(this);
36
- }
37
- return this[CONTEXT_HTTPCLIENT];
38
- },
39
-
40
- /**
41
- * Shortcut for httpclient.curl
42
- *
43
- * @function Context#curl
44
- * @param {String|Object} url - request url address.
45
- * @param {Object} [options] - options for request.
46
- * @return {Object} see {@link ContextHttpClient#curl}
47
- */
48
- curl(url, options) {
49
- return this.httpclient.curl(url, options);
50
- },
51
-
52
- /**
53
- * Alias to {@link Application#router}
54
- *
55
- * @member {Router} Context#router
56
- * @since 1.0.0
57
- * @example
58
- * ```js
59
- * this.router.pathFor('post', { id: 12 });
60
- * ```
61
- */
62
- get router() {
63
- if (!this[CONTEXT_ROUTER]) {
64
- this[CONTEXT_ROUTER] = this.app.router;
65
- }
66
- return this[CONTEXT_ROUTER];
67
- },
68
-
69
- /**
70
- * Set router to Context, only use on EggRouter
71
- * @param {EggRouter} val router instance
72
- */
73
- set router(val) {
74
- this[CONTEXT_ROUTER] = val;
75
- },
76
-
77
- /**
78
- * Get helper instance from {@link Application#Helper}
79
- *
80
- * @member {Helper} Context#helper
81
- * @since 1.0.0
82
- */
83
- get helper() {
84
- if (!this[HELPER]) {
85
- this[HELPER] = new this.app.Helper(this);
86
- }
87
- return this[HELPER];
88
- },
89
-
90
- /**
91
- * Wrap app.loggers with context infomation,
92
- * if a custom logger is defined by naming aLogger, then you can `ctx.getLogger('aLogger')`
93
- *
94
- * @param {String} name - logger name
95
- * @return {Logger} logger
96
- */
97
- getLogger(name) {
98
- if (this.app.config.logger.enableFastContextLogger) {
99
- return this.app.getLogger(name);
100
- }
101
- let cache = this[CONTEXT_LOGGERS];
102
- if (!cache) {
103
- cache = this[CONTEXT_LOGGERS] = {};
104
- }
105
-
106
- // read from cache
107
- if (cache[name]) return cache[name];
108
-
109
- // get no exist logger
110
- const appLogger = this.app.getLogger(name);
111
- if (!appLogger) return null;
112
-
113
- // write to cache
114
- cache[name] = new this.app.ContextLogger(this, appLogger);
115
- return cache[name];
116
- },
117
-
118
- /**
119
- * Logger for Application, wrapping app.coreLogger with context infomation
120
- *
121
- * @member {ContextLogger} Context#logger
122
- * @since 1.0.0
123
- * @example
124
- * ```js
125
- * this.logger.info('some request data: %j', this.request.body);
126
- * this.logger.warn('WARNING!!!!');
127
- * ```
128
- */
129
- get logger() {
130
- return this.getLogger('logger');
131
- },
132
-
133
- /**
134
- * Logger for frameworks and plugins,
135
- * wrapping app.coreLogger with context infomation
136
- *
137
- * @member {ContextLogger} Context#coreLogger
138
- * @since 1.0.0
139
- */
140
- get coreLogger() {
141
- return this.getLogger('coreLogger');
142
- },
143
-
144
- /**
145
- * locals is an object for view, you can use `app.locals` and `ctx.locals` to set variables,
146
- * which will be used as data when view is rendering.
147
- * The difference between `app.locals` and `ctx.locals` is the context level, `app.locals` is global level, and `ctx.locals` is request level. when you get `ctx.locals`, it will merge `app.locals`.
148
- *
149
- * when you set locals, only object is available
150
- *
151
- * ```js
152
- * this.locals = {
153
- * a: 1
154
- * };
155
- * this.locals = {
156
- * b: 1
157
- * };
158
- * this.locals.c = 1;
159
- * console.log(this.locals);
160
- * {
161
- * a: 1,
162
- * b: 1,
163
- * c: 1,
164
- * };
165
- * ```
166
- *
167
- * `ctx.locals` has cache, it only merges `app.locals` once in one request.
168
- *
169
- * @member {Object} Context#locals
170
- */
171
- get locals() {
172
- if (!this[LOCALS]) {
173
- this[LOCALS] = assign({}, this.app.locals);
174
- }
175
- if (this[LOCALS_LIST] && this[LOCALS_LIST].length) {
176
- assign(this[LOCALS], this[LOCALS_LIST]);
177
- this[LOCALS_LIST] = null;
178
- }
179
- return this[LOCALS];
180
- },
181
-
182
- set locals(val) {
183
- if (!this[LOCALS_LIST]) {
184
- this[LOCALS_LIST] = [];
185
- }
186
- this[LOCALS_LIST].push(val);
187
- },
188
-
189
- /**
190
- * alias to {@link Context#locals}, compatible with koa that use this variable
191
- * @member {Object} state
192
- * @see Context#locals
193
- */
194
- get state() {
195
- return this.locals;
196
- },
197
-
198
- set state(val) {
199
- this.locals = val;
200
- },
201
-
202
- /**
203
- * Run async function in the background
204
- * @param {Function} scope - the first args is ctx
205
- * ```js
206
- * this.body = 'hi';
207
- *
208
- * this.runInBackground(async ctx => {
209
- * await ctx.mysql.query(sql);
210
- * await ctx.curl(url);
211
- * });
212
- * ```
213
- */
214
- runInBackground(scope) {
215
- // try to use custom function name first
216
- /* istanbul ignore next */
217
- const taskName = scope._name || scope.name || eggUtils.getCalleeFromStack(true);
218
- scope._name = taskName;
219
- this._runInBackground(scope);
220
- },
221
-
222
- // let plugins or frameworks to reuse _runInBackground in some cases.
223
- // e.g.: https://github.com/eggjs/egg-mock/pull/78
224
- _runInBackground(scope) {
225
- const ctx = this;
226
- const start = performance.now();
227
- /* istanbul ignore next */
228
- const taskName = scope._name || scope.name || eggUtils.getCalleeFromStack(true);
229
- // use setImmediate to ensure all sync logic will run async
230
- return new Promise(resolve => setImmediate(resolve))
231
- // use app.toAsyncFunction to support both generator function and async function
232
- .then(() => ctx.app.toAsyncFunction(scope)(ctx))
233
- .then(() => {
234
- ctx.coreLogger.info('[egg:background] task:%s success (%dms)',
235
- taskName, Math.floor((performance.now() - start) * 1000) / 1000);
236
- })
237
- .catch(err => {
238
- // background task process log
239
- ctx.coreLogger.info('[egg:background] task:%s fail (%dms)',
240
- taskName, Math.floor((performance.now() - start) * 1000) / 1000);
241
-
242
- // emit error when promise catch, and set err.runInBackground flag
243
- err.runInBackground = true;
244
- ctx.app.emit('error', err, ctx);
245
- });
246
- },
247
- };
248
-
249
- /**
250
- * Context delegation.
251
- */
252
-
253
- delegate(proto, 'request')
254
- /**
255
- * @member {Boolean} Context#acceptJSON
256
- * @see Request#acceptJSON
257
- * @since 1.0.0
258
- */
259
- .getter('acceptJSON')
260
- /**
261
- * @member {Array} Context#queries
262
- * @see Request#queries
263
- * @since 1.0.0
264
- */
265
- .getter('queries')
266
- /**
267
- * @member {Boolean} Context#accept
268
- * @see Request#accept
269
- * @since 1.0.0
270
- */
271
- .getter('accept')
272
- /**
273
- * @member {string} Context#ip
274
- * @see Request#ip
275
- * @since 1.0.0
276
- */
277
- .access('ip');
278
-
279
- delegate(proto, 'response')
280
- /**
281
- * @member {Number} Context#realStatus
282
- * @see Response#realStatus
283
- * @since 1.0.0
284
- */
285
- .access('realStatus');
@@ -1,101 +0,0 @@
1
- 'use strict';
2
-
3
- const getType = require('cache-content-type');
4
- const isJSON = require('koa-is-json');
5
-
6
- const REAL_STATUS = Symbol('Context#realStatus');
7
-
8
- module.exports = {
9
-
10
- /**
11
- * Get or set the length of content.
12
- *
13
- * For Get: If the original content length is null or undefined, it will read out
14
- * the body's content length as the return value.
15
- *
16
- * @member {Number} Response#type
17
- * @param {Number} len The content-length to be set.
18
- */
19
- set length(len) {
20
- // copy from koa
21
- // change header name to lower case
22
- this.set('content-length', len);
23
- },
24
-
25
- get length() {
26
- // copy from koa
27
- const len = this.header['content-length'];
28
- const body = this.body;
29
-
30
- if (len == null) {
31
- if (!body) return;
32
- if (typeof body === 'string') return Buffer.byteLength(body);
33
- if (Buffer.isBuffer(body)) return body.length;
34
- if (isJSON(body)) return Buffer.byteLength(JSON.stringify(body));
35
- return;
36
- }
37
-
38
- return parseInt(len, 10);
39
- },
40
-
41
- /**
42
- * Get or set the content-type.
43
- *
44
- * For Set: If type is null or undefined, this property will be removed.
45
- *
46
- * For Get: If the value is null or undefined, an empty string will be returned;
47
- * if you have multiple values seperated by `;`, ONLY the first one will be returned.
48
- *
49
- * @member {String} Response#type
50
- * @param {String} type The content-type to be set.
51
- */
52
- set type(type) {
53
- // copy from koa
54
- // Different:
55
- // - change header name to lower case
56
- type = getType(type);
57
- if (type) {
58
- this.set('content-type', type);
59
- } else {
60
- this.remove('content-type');
61
- }
62
- },
63
-
64
- get type() {
65
- // copy from koa
66
- const type = this.get('content-type');
67
- if (!type) return '';
68
- return type.split(';')[0];
69
- },
70
-
71
- /**
72
- * Get or set a real status code.
73
- *
74
- * e.g.: Using 302 status redirect to the global error page
75
- * instead of show current 500 status page.
76
- * And access log should save 500 not 302,
77
- * then the `realStatus` can help us find out the real status code.
78
- * @member {Number} Response#realStatus
79
- * @return {Number} The status code to be set.
80
- */
81
- get realStatus() {
82
- if (this[REAL_STATUS]) {
83
- return this[REAL_STATUS];
84
- }
85
- return this.status;
86
- },
87
-
88
- /**
89
- * Set a real status code.
90
- *
91
- * e.g.: Using 302 status redirect to the global error page
92
- * instead of show current 500 status page.
93
- * And access log should save 500 not 302,
94
- * then the `realStatus` can help us find out the real status code.
95
- * @member {Number} Response#realStatus
96
- * @param {Number} status The status code to be set.
97
- */
98
- set realStatus(status) {
99
- this[REAL_STATUS] = status;
100
- },
101
- };
@@ -1,3 +0,0 @@
1
- 'use strict';
2
-
3
- module.exports = require('koa-bodyparser');
@@ -1,3 +0,0 @@
1
- 'use strict';
2
-
3
- module.exports = require('koa-override');
@@ -1,31 +0,0 @@
1
- 'use strict';
2
-
3
- const path = require('path');
4
-
5
- module.exports = options => {
6
- return async function siteFile(ctx, next) {
7
- if (ctx.method !== 'HEAD' && ctx.method !== 'GET') return next();
8
- /* istanbul ignore if */
9
- if (ctx.path[0] !== '/') return next();
10
-
11
- let content = options[ctx.path];
12
- if (!content) return next();
13
-
14
- // '/favicon.ico': 'https://eggjs.org/favicon.ico' or '/favicon.ico': async (ctx) => 'https://eggjs.org/favicon.ico'
15
- // content is function
16
- if (typeof content === 'function') content = await content(ctx);
17
- // content is url
18
- if (typeof content === 'string') return ctx.redirect(content);
19
-
20
- // '/robots.txt': Buffer <xx..
21
- // content is buffer
22
- if (Buffer.isBuffer(content)) {
23
- ctx.set('cache-control', options.cacheControl);
24
- ctx.body = content;
25
- ctx.type = path.extname(ctx.path);
26
- return;
27
- }
28
-
29
- return next();
30
- };
31
- };
@@ -1,7 +0,0 @@
1
- 'use strict';
2
-
3
- exports.logger = {
4
- coreLogger: {
5
- consoleLevel: 'WARN',
6
- },
7
- };
@@ -1,8 +0,0 @@
1
- 'use strict';
2
-
3
- module.exports = {
4
- logger: {
5
- consoleLevel: 'WARN',
6
- buffer: false,
7
- },
8
- };