egg 4.1.0-beta.20 → 4.1.0-beta.22

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 (123) hide show
  1. package/dist/agent.d.ts +3 -17
  2. package/dist/agent.js +7 -11
  3. package/dist/app/extend/context.d.ts +180 -12
  4. package/dist/app/extend/context.js +259 -3
  5. package/dist/app/extend/helper.d.ts +37 -12
  6. package/dist/app/extend/helper.js +43 -5
  7. package/dist/app/extend/request.d.ts +132 -12
  8. package/dist/app/extend/request.js +265 -4
  9. package/dist/app/extend/response.d.ts +25 -2
  10. package/dist/app/extend/response.js +34 -3
  11. package/dist/app/middleware/body_parser.d.ts +2 -2
  12. package/dist/app/middleware/body_parser.js +3 -7
  13. package/dist/app/middleware/meta.d.ts +10 -12
  14. package/dist/app/middleware/meta.js +19 -13
  15. package/dist/app/middleware/notfound.d.ts +7 -12
  16. package/dist/app/middleware/notfound.js +28 -25
  17. package/dist/app/middleware/override_method.d.ts +2 -2
  18. package/dist/app/middleware/override_method.js +3 -7
  19. package/dist/app/middleware/site_file.d.ts +9 -12
  20. package/dist/app/middleware/site_file.js +52 -37
  21. package/dist/config/config.default.d.ts +2 -16
  22. package/dist/config/config.default.js +375 -282
  23. package/dist/config/config.local.d.ts +5 -7
  24. package/dist/config/config.local.js +9 -6
  25. package/dist/config/config.unittest.d.ts +5 -7
  26. package/dist/config/config.unittest.js +8 -9
  27. package/dist/config/plugin.d.ts +120 -122
  28. package/dist/config/plugin.js +121 -53
  29. package/dist/index.d.ts +66 -13
  30. package/dist/index.js +70 -30
  31. package/dist/lib/agent.d.ts +19 -12
  32. package/dist/lib/agent.js +48 -22
  33. package/dist/lib/application.d.ts +56 -12
  34. package/dist/lib/application.js +261 -23
  35. package/dist/lib/core/base_context_class.d.ts +18 -12
  36. package/dist/lib/core/base_context_class.js +17 -4
  37. package/dist/lib/core/base_context_logger.d.ts +36 -12
  38. package/dist/lib/core/base_context_logger.js +60 -3
  39. package/dist/lib/core/base_hook_class.d.ts +11 -12
  40. package/dist/lib/core/base_hook_class.js +22 -3
  41. package/dist/lib/core/context_httpclient.d.ts +17 -12
  42. package/dist/lib/core/context_httpclient.js +26 -3
  43. package/dist/lib/core/httpclient.d.ts +14 -12
  44. package/dist/lib/core/httpclient.js +39 -3
  45. package/dist/lib/core/logger.d.ts +3 -17
  46. package/dist/lib/core/logger.js +37 -3
  47. package/dist/lib/core/messenger/IMessenger.d.ts +50 -2
  48. package/dist/lib/core/messenger/IMessenger.js +2 -1
  49. package/dist/lib/core/messenger/base.d.ts +8 -13
  50. package/dist/lib/core/messenger/base.js +28 -17
  51. package/dist/lib/core/messenger/index.d.ts +7 -12
  52. package/dist/lib/core/messenger/index.js +10 -17
  53. package/dist/lib/core/messenger/ipc.d.ts +55 -68
  54. package/dist/lib/core/messenger/ipc.js +151 -17
  55. package/dist/lib/core/messenger/local.d.ts +56 -69
  56. package/dist/lib/core/messenger/local.js +128 -17
  57. package/dist/lib/core/utils.d.ts +2 -5
  58. package/dist/lib/core/utils.js +70 -3
  59. package/dist/lib/egg.d.ts +285 -12
  60. package/dist/lib/egg.js +581 -17
  61. package/dist/lib/error/CookieLimitExceedError.d.ts +5 -2
  62. package/dist/lib/error/CookieLimitExceedError.js +12 -3
  63. package/dist/lib/error/MessageUnhandledRejectionError.d.ts +5 -2
  64. package/dist/lib/error/MessageUnhandledRejectionError.js +12 -3
  65. package/dist/lib/error/index.d.ts +2 -4
  66. package/dist/lib/error/index.js +3 -5
  67. package/dist/lib/loader/AgentWorkerLoader.d.ts +12 -3
  68. package/dist/lib/loader/AgentWorkerLoader.js +20 -4
  69. package/dist/lib/loader/AppWorkerLoader.d.ts +17 -3
  70. package/dist/lib/loader/AppWorkerLoader.js +39 -4
  71. package/dist/lib/loader/EggApplicationLoader.d.ts +4 -2
  72. package/dist/lib/loader/EggApplicationLoader.js +4 -3
  73. package/dist/lib/loader/index.d.ts +3 -5
  74. package/dist/lib/loader/index.js +4 -6
  75. package/dist/lib/start.d.ts +24 -12
  76. package/dist/lib/start.js +46 -27
  77. package/dist/lib/types.d.ts +281 -12
  78. package/dist/lib/types.js +31 -4
  79. package/dist/lib/types.plugin.d.ts +12 -1
  80. package/dist/lib/types.plugin.js +14 -3
  81. package/dist/lib/utils.d.ts +2 -5
  82. package/dist/lib/utils.js +14 -3
  83. package/dist/urllib.d.ts +1 -1
  84. package/dist/urllib.js +2 -3
  85. package/package.json +23 -23
  86. package/dist/AgentWorkerLoader-DG_hAClt.d.ts +0 -17
  87. package/dist/AgentWorkerLoader-D_hceBRW.js +0 -24
  88. package/dist/AppWorkerLoader-CAtxJvGl.js +0 -37
  89. package/dist/AppWorkerLoader-CT875rYM.d.ts +0 -22
  90. package/dist/CookieLimitExceedError-CAW0HYJw.d.ts +0 -8
  91. package/dist/CookieLimitExceedError-DLGakbeu.js +0 -15
  92. package/dist/EggApplicationLoader-CMe1VQt1.js +0 -7
  93. package/dist/EggApplicationLoader-PnIvd5oV.d.ts +0 -8
  94. package/dist/IMessenger-C9g6ypSI.d.ts +0 -54
  95. package/dist/MessageUnhandledRejectionError-Lq5fWw24.d.ts +0 -8
  96. package/dist/MessageUnhandledRejectionError-oD_E1Ewl.js +0 -15
  97. package/dist/agent-BfFWeJj4.js +0 -55
  98. package/dist/application-DVwFQSa9.js +0 -208
  99. package/dist/base-KLVtlzUD.d.ts +0 -12
  100. package/dist/base_context_class-Xc1OZql9.js +0 -19
  101. package/dist/base_context_logger-CZU59PGA.js +0 -58
  102. package/dist/base_hook_class-D0Gu2p8r.js +0 -26
  103. package/dist/base_hook_class-R8A8gm1s.d.ts +0 -1109
  104. package/dist/context-D1Wg7CXs.js +0 -244
  105. package/dist/context_httpclient-BpRMdJhf.js +0 -29
  106. package/dist/egg-DVo5e_lr.js +0 -800
  107. package/dist/error-BYo_LRnd.js +0 -1
  108. package/dist/helper-B3PKMPXq.js +0 -47
  109. package/dist/httpclient-C1QPc_R7.js +0 -36
  110. package/dist/index-CUPkUUOR.d.ts +0 -1
  111. package/dist/index-CkgLZdB4.d.ts +0 -1
  112. package/dist/loader-3myZ-rpm.js +0 -1
  113. package/dist/logger-C4tIcO3S.js +0 -31
  114. package/dist/request-Cy_1DlaX.js +0 -225
  115. package/dist/response-CDeQ9Sx2.js +0 -36
  116. package/dist/response-DlNYDj00.d.ts +0 -29
  117. package/dist/src-BuOjXSrB.js +0 -3
  118. package/dist/start-4E84z796.js +0 -35
  119. package/dist/types-dKSyDnVp.js +0 -32
  120. package/dist/types.plugin-B2v0K0I8.js +0 -14
  121. package/dist/types.plugin-C3D5I7VD.d.ts +0 -12
  122. package/dist/utils-B1Rjsoi9.js +0 -48
  123. package/dist/utils-BDoYg6z6.js +0 -14
package/dist/agent.d.ts CHANGED
@@ -1,18 +1,4 @@
1
- import "./EggApplicationLoader-PnIvd5oV.js";
2
- import "./AppWorkerLoader-CT875rYM.js";
3
- import "./AgentWorkerLoader-DG_hAClt.js";
4
- import "./index-CUPkUUOR.js";
5
- import { BaseHookClass } from "./base_hook_class-R8A8gm1s.js";
6
- import "./response-DlNYDj00.js";
7
- import "./types.plugin-C3D5I7VD.js";
8
- import "./IMessenger-C9g6ypSI.js";
9
- import "./CookieLimitExceedError-CAW0HYJw.js";
10
- import "./MessageUnhandledRejectionError-Lq5fWw24.js";
11
- import "./index-CkgLZdB4.js";
12
-
13
- //#region src/agent.d.ts
14
- declare class EggAgentHook extends BaseHookClass {
15
- configDidLoad(): void;
1
+ import { BaseHookClass } from './lib/core/base_hook_class.ts';
2
+ export default class EggAgentHook extends BaseHookClass {
3
+ configDidLoad(): void;
16
4
  }
17
- //#endregion
18
- export { EggAgentHook as default };
package/dist/agent.js CHANGED
@@ -1,11 +1,7 @@
1
- import { BaseHookClass } from "./base_hook_class-D0Gu2p8r.js";
2
-
3
- //#region src/agent.ts
4
- var EggAgentHook = class extends BaseHookClass {
5
- configDidLoad() {
6
- this.agent._wrapMessenger();
7
- }
8
- };
9
-
10
- //#endregion
11
- export { EggAgentHook as default };
1
+ import { BaseHookClass } from "./lib/core/base_hook_class.js";
2
+ export default class EggAgentHook extends BaseHookClass {
3
+ configDidLoad() {
4
+ this.agent._wrapMessenger();
5
+ }
6
+ }
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYWdlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRTlELE1BQU0sQ0FBQyxPQUFPLE9BQU8sWUFBYSxTQUFRLGFBQWE7SUFDckQsYUFBYTtRQUNYLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDOUIsQ0FBQztDQUNGIn0=
@@ -1,12 +1,180 @@
1
- import "../../EggApplicationLoader-PnIvd5oV.js";
2
- import "../../AppWorkerLoader-CT875rYM.js";
3
- import "../../AgentWorkerLoader-DG_hAClt.js";
4
- import "../../index-CUPkUUOR.js";
5
- import { Context } from "../../base_hook_class-R8A8gm1s.js";
6
- import "../../response-DlNYDj00.js";
7
- import "../../types.plugin-C3D5I7VD.js";
8
- import "../../IMessenger-C9g6ypSI.js";
9
- import "../../CookieLimitExceedError-CAW0HYJw.js";
10
- import "../../MessageUnhandledRejectionError-Lq5fWw24.js";
11
- import "../../index-CkgLZdB4.js";
12
- export { Context as default };
1
+ import { Context as EggCoreContext, Router } from '@eggjs/core';
2
+ import type { Cookies as ContextCookies } from '@eggjs/cookies';
3
+ import type { EggLogger } from 'egg-logger';
4
+ import type { Application } from '../../lib/application.ts';
5
+ import type { HttpClientRequestURL, HttpClientRequestOptions, HttpClient } from '../../lib/core/httpclient.ts';
6
+ import type { BaseContextClass } from '../../lib//core/base_context_class.ts';
7
+ import type Request from './request.ts';
8
+ import type Response from './response.ts';
9
+ import type Helper from './helper.ts';
10
+ interface Cookies extends ContextCookies {
11
+ request: any;
12
+ response: any;
13
+ }
14
+ export default class Context extends EggCoreContext {
15
+ app: Application;
16
+ request: Request;
17
+ response: Response;
18
+ service: BaseContextClass;
19
+ proxy: any;
20
+ /**
21
+ * Request start time
22
+ * @member {Number} Context#starttime
23
+ */
24
+ starttime: number;
25
+ /**
26
+ * Request start timer using `performance.now()`
27
+ * @member {Number} Context#performanceStarttime
28
+ */
29
+ performanceStarttime: number;
30
+ /**
31
+ * Get the current visitor's cookies.
32
+ */
33
+ get cookies(): Cookies;
34
+ /**
35
+ * Get a wrapper httpclient instance contain ctx in the hold request process
36
+ *
37
+ * @return {HttpClient} the wrapper httpclient instance
38
+ */
39
+ get httpclient(): HttpClient;
40
+ /**
41
+ * Alias to {@link Context#httpclient}
42
+ */
43
+ get httpClient(): HttpClient;
44
+ /**
45
+ * Shortcut for httpclient.curl
46
+ *
47
+ * @function Context#curl
48
+ * @param {String|Object} url - request url address.
49
+ * @param {Object} [options] - options for request.
50
+ * @return {Object} see {@link ContextHttpClient#curl}
51
+ */
52
+ curl(url: HttpClientRequestURL, options?: HttpClientRequestOptions): ReturnType<HttpClient['request']>;
53
+ /**
54
+ * Alias to {@link Application#router}
55
+ *
56
+ * @member {Router} Context#router
57
+ * @since 1.0.0
58
+ * @example
59
+ * ```js
60
+ * this.router.pathFor('post', { id: 12 });
61
+ * ```
62
+ */
63
+ get router(): Router;
64
+ /**
65
+ * Set router to Context, only use on EggRouter
66
+ * @param {Router} val router instance
67
+ */
68
+ set router(val: Router);
69
+ /**
70
+ * Get helper instance from {@link Application#Helper}
71
+ *
72
+ * @member {Helper} Context#helper
73
+ * @since 1.0.0
74
+ */
75
+ get helper(): Helper;
76
+ /**
77
+ * Wrap app.loggers with context information,
78
+ * if a custom logger is defined by naming aLogger, then you can `ctx.getLogger('aLogger')`
79
+ *
80
+ * @param {String} name - logger name
81
+ */
82
+ getLogger(name: string): EggLogger;
83
+ /**
84
+ * Logger for Application
85
+ *
86
+ * @member {Logger} Context#logger
87
+ * @since 1.0.0
88
+ * @example
89
+ * ```js
90
+ * this.logger.info('some request data: %j', this.request.body);
91
+ * this.logger.warn('WARNING!!!!');
92
+ * ```
93
+ */
94
+ get logger(): EggLogger;
95
+ /**
96
+ * Logger for frameworks and plugins
97
+ *
98
+ * @member {Logger} Context#coreLogger
99
+ * @since 1.0.0
100
+ */
101
+ get coreLogger(): EggLogger;
102
+ /**
103
+ * locals is an object for view, you can use `app.locals` and `ctx.locals` to set variables,
104
+ * which will be used as data when view is rendering.
105
+ * 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`.
106
+ *
107
+ * when you set locals, only object is available
108
+ *
109
+ * ```js
110
+ * this.locals = {
111
+ * a: 1
112
+ * };
113
+ * this.locals = {
114
+ * b: 1
115
+ * };
116
+ * this.locals.c = 1;
117
+ * console.log(this.locals);
118
+ * {
119
+ * a: 1,
120
+ * b: 1,
121
+ * c: 1,
122
+ * };
123
+ * ```
124
+ *
125
+ * `ctx.locals` has cache, it only merges `app.locals` once in one request.
126
+ *
127
+ * @member {Object} Context#locals
128
+ */
129
+ get locals(): Record<string, any>;
130
+ set locals(val: Record<string, any>);
131
+ /**
132
+ * alias to {@link Context#locals}, compatible with koa that use this variable
133
+ * @member {Object} state
134
+ * @see Context#locals
135
+ */
136
+ get state(): Record<string, any>;
137
+ set state(val: Record<string, any>);
138
+ /**
139
+ * Run async function in the background
140
+ * @param {Function} scope - the first args is ctx
141
+ * ```js
142
+ * this.body = 'hi';
143
+ *
144
+ * this.runInBackground(async ctx => {
145
+ * await ctx.mysql.query(sql);
146
+ * await ctx.curl(url);
147
+ * });
148
+ * ```
149
+ */
150
+ runInBackground(scope: (ctx: Context) => Promise<void>, taskName?: string): void;
151
+ _runInBackground(scope: (ctx: Context) => Promise<void>, taskName: string): Promise<void>;
152
+ /**
153
+ * @member {Boolean} Context#acceptJSON
154
+ * @see Request#acceptJSON
155
+ * @since 1.0.0
156
+ */
157
+ get acceptJSON(): boolean;
158
+ get query(): Record<string, string>;
159
+ /**
160
+ * @member {Array} Context#queries
161
+ * @see Request#queries
162
+ * @since 1.0.0
163
+ */
164
+ get queries(): Record<string, string[]>;
165
+ /**
166
+ * @member {string} Context#ip
167
+ * @see Request#ip
168
+ * @since 1.0.0
169
+ */
170
+ get ip(): string;
171
+ set ip(val: string);
172
+ /**
173
+ * @member {Number} Context#realStatus
174
+ * @see Response#realStatus
175
+ * @since 1.0.0
176
+ */
177
+ get realStatus(): number;
178
+ set realStatus(val: number);
179
+ }
180
+ export {};
@@ -1,3 +1,259 @@
1
- import { Context } from "../../context-D1Wg7CXs.js";
2
-
3
- export { Context as default };
1
+ import { assign } from 'utility';
2
+ import { now, diff } from 'performance-ms';
3
+ import { utils, Context as EggCoreContext, Router } from '@eggjs/core';
4
+ const HELPER = Symbol('ctx helper');
5
+ const LOCALS = Symbol('ctx locals');
6
+ const LOCALS_LIST = Symbol('ctx localsList');
7
+ const COOKIES = Symbol('ctx cookies');
8
+ const CONTEXT_HTTPCLIENT = Symbol('ctx httpclient');
9
+ const CONTEXT_ROUTER = Symbol('ctx router');
10
+ export default class Context extends EggCoreContext {
11
+ /**
12
+ * Request start time
13
+ * @member {Number} Context#starttime
14
+ */
15
+ starttime;
16
+ /**
17
+ * Request start timer using `performance.now()`
18
+ * @member {Number} Context#performanceStarttime
19
+ */
20
+ performanceStarttime;
21
+ /**
22
+ * Get the current visitor's cookies.
23
+ */
24
+ get cookies() {
25
+ let cookies = this[COOKIES];
26
+ if (!cookies) {
27
+ this[COOKIES] = cookies = new this.app.ContextCookies(this, this.app.keys, this.app.config.cookies);
28
+ }
29
+ return cookies;
30
+ }
31
+ /**
32
+ * Get a wrapper httpclient instance contain ctx in the hold request process
33
+ *
34
+ * @return {HttpClient} the wrapper httpclient instance
35
+ */
36
+ get httpclient() {
37
+ if (!this[CONTEXT_HTTPCLIENT]) {
38
+ this[CONTEXT_HTTPCLIENT] = new this.app.ContextHttpClient(this);
39
+ }
40
+ return this[CONTEXT_HTTPCLIENT];
41
+ }
42
+ /**
43
+ * Alias to {@link Context#httpclient}
44
+ */
45
+ get httpClient() {
46
+ return this.httpclient;
47
+ }
48
+ /**
49
+ * Shortcut for httpclient.curl
50
+ *
51
+ * @function Context#curl
52
+ * @param {String|Object} url - request url address.
53
+ * @param {Object} [options] - options for request.
54
+ * @return {Object} see {@link ContextHttpClient#curl}
55
+ */
56
+ async curl(url, options) {
57
+ return await this.httpclient.curl(url, options);
58
+ }
59
+ /**
60
+ * Alias to {@link Application#router}
61
+ *
62
+ * @member {Router} Context#router
63
+ * @since 1.0.0
64
+ * @example
65
+ * ```js
66
+ * this.router.pathFor('post', { id: 12 });
67
+ * ```
68
+ */
69
+ get router() {
70
+ if (this[CONTEXT_ROUTER]) {
71
+ return this[CONTEXT_ROUTER];
72
+ }
73
+ return this.app.router;
74
+ }
75
+ /**
76
+ * Set router to Context, only use on EggRouter
77
+ * @param {Router} val router instance
78
+ */
79
+ set router(val) {
80
+ this[CONTEXT_ROUTER] = val;
81
+ }
82
+ /**
83
+ * Get helper instance from {@link Application#Helper}
84
+ *
85
+ * @member {Helper} Context#helper
86
+ * @since 1.0.0
87
+ */
88
+ get helper() {
89
+ if (!this[HELPER]) {
90
+ this[HELPER] = new this.app.Helper(this);
91
+ }
92
+ return this[HELPER];
93
+ }
94
+ /**
95
+ * Wrap app.loggers with context information,
96
+ * if a custom logger is defined by naming aLogger, then you can `ctx.getLogger('aLogger')`
97
+ *
98
+ * @param {String} name - logger name
99
+ */
100
+ getLogger(name) {
101
+ return this.app.getLogger(name);
102
+ }
103
+ /**
104
+ * Logger for Application
105
+ *
106
+ * @member {Logger} Context#logger
107
+ * @since 1.0.0
108
+ * @example
109
+ * ```js
110
+ * this.logger.info('some request data: %j', this.request.body);
111
+ * this.logger.warn('WARNING!!!!');
112
+ * ```
113
+ */
114
+ get logger() {
115
+ return this.getLogger('logger');
116
+ }
117
+ /**
118
+ * Logger for frameworks and plugins
119
+ *
120
+ * @member {Logger} Context#coreLogger
121
+ * @since 1.0.0
122
+ */
123
+ get coreLogger() {
124
+ return this.getLogger('coreLogger');
125
+ }
126
+ /**
127
+ * locals is an object for view, you can use `app.locals` and `ctx.locals` to set variables,
128
+ * which will be used as data when view is rendering.
129
+ * 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`.
130
+ *
131
+ * when you set locals, only object is available
132
+ *
133
+ * ```js
134
+ * this.locals = {
135
+ * a: 1
136
+ * };
137
+ * this.locals = {
138
+ * b: 1
139
+ * };
140
+ * this.locals.c = 1;
141
+ * console.log(this.locals);
142
+ * {
143
+ * a: 1,
144
+ * b: 1,
145
+ * c: 1,
146
+ * };
147
+ * ```
148
+ *
149
+ * `ctx.locals` has cache, it only merges `app.locals` once in one request.
150
+ *
151
+ * @member {Object} Context#locals
152
+ */
153
+ get locals() {
154
+ if (!this[LOCALS]) {
155
+ this[LOCALS] = assign({}, this.app.locals);
156
+ }
157
+ if (Array.isArray(this[LOCALS_LIST]) && this[LOCALS_LIST].length > 0) {
158
+ assign(this[LOCALS], this[LOCALS_LIST]);
159
+ this[LOCALS_LIST] = null;
160
+ }
161
+ return this[LOCALS];
162
+ }
163
+ set locals(val) {
164
+ const localsList = this[LOCALS_LIST] ?? [];
165
+ localsList.push(val);
166
+ this[LOCALS_LIST] = localsList;
167
+ }
168
+ /**
169
+ * alias to {@link Context#locals}, compatible with koa that use this variable
170
+ * @member {Object} state
171
+ * @see Context#locals
172
+ */
173
+ get state() {
174
+ return this.locals;
175
+ }
176
+ set state(val) {
177
+ this.locals = val;
178
+ }
179
+ /**
180
+ * Run async function in the background
181
+ * @param {Function} scope - the first args is ctx
182
+ * ```js
183
+ * this.body = 'hi';
184
+ *
185
+ * this.runInBackground(async ctx => {
186
+ * await ctx.mysql.query(sql);
187
+ * await ctx.curl(url);
188
+ * });
189
+ * ```
190
+ */
191
+ runInBackground(scope, taskName) {
192
+ // try to use custom function name first
193
+ if (!taskName) {
194
+ taskName = Reflect.get(scope, '_name') || scope.name || utils.getCalleeFromStack(true);
195
+ }
196
+ // use setImmediate to ensure all sync logic will run async
197
+ setImmediate(() => {
198
+ this._runInBackground(scope, taskName);
199
+ });
200
+ }
201
+ // let plugins or frameworks to reuse _runInBackground in some cases.
202
+ // e.g.: https://github.com/eggjs/egg-mock/pull/78
203
+ async _runInBackground(scope, taskName) {
204
+ const startTime = now();
205
+ try {
206
+ await scope(this);
207
+ this.coreLogger.info('[egg:background] task:%s success (%dms)', taskName, diff(startTime));
208
+ }
209
+ catch (err) {
210
+ // background task process log
211
+ this.coreLogger.info('[egg:background] task:%s fail (%dms)', taskName, diff(startTime));
212
+ // emit error when promise catch, and set err.runInBackground flag
213
+ err.runInBackground = true;
214
+ this.app.emit('error', err, this);
215
+ }
216
+ }
217
+ /**
218
+ * @member {Boolean} Context#acceptJSON
219
+ * @see Request#acceptJSON
220
+ * @since 1.0.0
221
+ */
222
+ get acceptJSON() {
223
+ return this.request.acceptJSON;
224
+ }
225
+ get query() {
226
+ return this.request.query;
227
+ }
228
+ /**
229
+ * @member {Array} Context#queries
230
+ * @see Request#queries
231
+ * @since 1.0.0
232
+ */
233
+ get queries() {
234
+ return this.request.queries;
235
+ }
236
+ /**
237
+ * @member {string} Context#ip
238
+ * @see Request#ip
239
+ * @since 1.0.0
240
+ */
241
+ get ip() {
242
+ return this.request.ip;
243
+ }
244
+ set ip(val) {
245
+ this.request.ip = val;
246
+ }
247
+ /**
248
+ * @member {Number} Context#realStatus
249
+ * @see Response#realStatus
250
+ * @since 1.0.0
251
+ */
252
+ get realStatus() {
253
+ return this.response.realStatus;
254
+ }
255
+ set realStatus(val) {
256
+ this.response.realStatus = val;
257
+ }
258
+ }
259
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvZXh0ZW5kL2NvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNqQyxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxJQUFJLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFXdkUsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQ3BDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUNwQyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUM3QyxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDdEMsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUNwRCxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7QUFPNUMsTUFBTSxDQUFDLE9BQU8sT0FBTyxPQUFRLFNBQVEsY0FBYztJQU9qRDs7O09BR0c7SUFDSCxTQUFTLENBQVM7SUFDbEI7OztPQUdHO0lBQ0gsb0JBQW9CLENBQVM7SUFFN0I7O09BRUc7SUFDSCxJQUFJLE9BQU87UUFDVCxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLE9BQU8sR0FBRyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0RyxDQUFDO1FBQ0QsT0FBTyxPQUFrQixDQUFDO0lBQzVCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBSSxVQUFVO1FBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLElBQVcsQ0FBQyxDQUFDO1FBQ3pFLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBZSxDQUFDO0lBQ2hELENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBeUIsRUFBRSxPQUFrQztRQUN0RSxPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSCxJQUFJLE1BQU07UUFDUixJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO1lBQ3pCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBVyxDQUFDO1FBQ3hDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFJLE1BQU0sQ0FBQyxHQUFXO1FBQ3BCLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxHQUFHLENBQUM7SUFDN0IsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsSUFBSSxNQUFNO1FBQ1IsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQVcsQ0FBQyxDQUFDO1FBQ2xELENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQVcsQ0FBQztJQUNoQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxTQUFTLENBQUMsSUFBWTtRQUNwQixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0gsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BMEJHO0lBQ0gsSUFBSSxNQUFNO1FBQ1IsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0MsQ0FBQztRQUNELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3JFLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDeEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUMzQixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUF3QixDQUFDO0lBQzdDLENBQUM7SUFFRCxJQUFJLE1BQU0sQ0FBQyxHQUFHO1FBQ1osTUFBTSxVQUFVLEdBQUksSUFBSSxDQUFDLFdBQVcsQ0FBMkIsSUFBSSxFQUFFLENBQUM7UUFDdEUsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsVUFBVSxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUFJLEtBQUssQ0FBQyxHQUFHO1FBQ1gsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7SUFDcEIsQ0FBQztJQUVEOzs7Ozs7Ozs7OztPQVdHO0lBQ0gsZUFBZSxDQUFDLEtBQXNDLEVBQUUsUUFBaUI7UUFDdkUsd0NBQXdDO1FBQ3hDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNkLFFBQVEsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6RixDQUFDO1FBQ0QsMkRBQTJEO1FBQzNELFlBQVksQ0FBQyxHQUFHLEVBQUU7WUFDaEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxRQUFTLENBQUMsQ0FBQztRQUMxQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxxRUFBcUU7SUFDckUsa0RBQWtEO0lBQ2xELEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFzQyxFQUFFLFFBQWdCO1FBQzdFLE1BQU0sU0FBUyxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQztZQUNILE1BQU0sS0FBSyxDQUFDLElBQVcsQ0FBQyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLHlDQUF5QyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUM3RixDQUFDO1FBQUMsT0FBTyxHQUFRLEVBQUUsQ0FBQztZQUNsQiw4QkFBOEI7WUFDOUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsc0NBQXNDLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBRXhGLGtFQUFrRTtZQUNsRSxHQUFHLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztZQUMzQixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3BDLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7SUFDakMsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFDNUIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO0lBQzlCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBSSxFQUFFO1FBQ0osT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxFQUFFLENBQUMsR0FBVztRQUNoQixJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUM7SUFDeEIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxJQUFJLFVBQVUsQ0FBQyxHQUFXO1FBQ3hCLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQztJQUNqQyxDQUFDO0NBQ0YifQ==
@@ -1,12 +1,37 @@
1
- import "../../EggApplicationLoader-PnIvd5oV.js";
2
- import "../../AppWorkerLoader-CT875rYM.js";
3
- import "../../AgentWorkerLoader-DG_hAClt.js";
4
- import "../../index-CUPkUUOR.js";
5
- import { Helper } from "../../base_hook_class-R8A8gm1s.js";
6
- import "../../response-DlNYDj00.js";
7
- import "../../types.plugin-C3D5I7VD.js";
8
- import "../../IMessenger-C9g6ypSI.js";
9
- import "../../CookieLimitExceedError-CAW0HYJw.js";
10
- import "../../MessageUnhandledRejectionError-Lq5fWw24.js";
11
- import "../../index-CkgLZdB4.js";
12
- export { Helper as default };
1
+ import { BaseContextClass } from '../../lib/core/base_context_class.ts';
2
+ /**
3
+ * The Helper class which can be used as utility function.
4
+ * We support developers to extend Helper through ${baseDir}/app/extend/helper.js ,
5
+ * then you can use all method on `ctx.helper` that is a instance of Helper.
6
+ */
7
+ export default class Helper extends BaseContextClass {
8
+ /**
9
+ * Generate URL path(without host) for route. Takes the route name and a map of named params.
10
+ * @function Helper#pathFor
11
+ * @param {String} name - Router Name
12
+ * @param {Object} params - Other params
13
+ *
14
+ * @example
15
+ * ```js
16
+ * app.get('home', '/index.htm', 'home.index');
17
+ * ctx.helper.pathFor('home', { by: 'recent', limit: 20 })
18
+ * => /index.htm?by=recent&limit=20
19
+ * ```
20
+ * @return {String} url path(without host)
21
+ */
22
+ pathFor(name: string, params: Record<string, any>): string;
23
+ /**
24
+ * Generate full URL(with host) for route. Takes the route name and a map of named params.
25
+ * @function Helper#urlFor
26
+ * @param {String} name - Router name
27
+ * @param {Object} params - Other params
28
+ * @example
29
+ * ```js
30
+ * app.get('home', '/index.htm', 'home.index');
31
+ * ctx.helper.urlFor('home', { by: 'recent', limit: 20 })
32
+ * => http://127.0.0.1:7001/index.htm?by=recent&limit=20
33
+ * ```
34
+ * @return {String} full url(with host)
35
+ */
36
+ urlFor(name: string, params: Record<string, any>): string;
37
+ }
@@ -1,5 +1,43 @@
1
- import "../../base_context_logger-CZU59PGA.js";
2
- import "../../base_context_class-Xc1OZql9.js";
3
- import { Helper } from "../../helper-B3PKMPXq.js";
4
-
5
- export { Helper as default };
1
+ import url from 'node:url';
2
+ import { BaseContextClass } from "../../lib/core/base_context_class.js";
3
+ /**
4
+ * The Helper class which can be used as utility function.
5
+ * We support developers to extend Helper through ${baseDir}/app/extend/helper.js ,
6
+ * then you can use all method on `ctx.helper` that is a instance of Helper.
7
+ */
8
+ export default class Helper extends BaseContextClass {
9
+ /**
10
+ * Generate URL path(without host) for route. Takes the route name and a map of named params.
11
+ * @function Helper#pathFor
12
+ * @param {String} name - Router Name
13
+ * @param {Object} params - Other params
14
+ *
15
+ * @example
16
+ * ```js
17
+ * app.get('home', '/index.htm', 'home.index');
18
+ * ctx.helper.pathFor('home', { by: 'recent', limit: 20 })
19
+ * => /index.htm?by=recent&limit=20
20
+ * ```
21
+ * @return {String} url path(without host)
22
+ */
23
+ pathFor(name, params) {
24
+ return this.app.router.url(name, params);
25
+ }
26
+ /**
27
+ * Generate full URL(with host) for route. Takes the route name and a map of named params.
28
+ * @function Helper#urlFor
29
+ * @param {String} name - Router name
30
+ * @param {Object} params - Other params
31
+ * @example
32
+ * ```js
33
+ * app.get('home', '/index.htm', 'home.index');
34
+ * ctx.helper.urlFor('home', { by: 'recent', limit: 20 })
35
+ * => http://127.0.0.1:7001/index.htm?by=recent&limit=20
36
+ * ```
37
+ * @return {String} full url(with host)
38
+ */
39
+ urlFor(name, params) {
40
+ return this.ctx.protocol + '://' + this.ctx.host + url.resolve('/', this.pathFor(name, params));
41
+ }
42
+ }
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9leHRlbmQvaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sR0FBRyxNQUFNLFVBQVUsQ0FBQztBQUUzQixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUV4RTs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE9BQU8sT0FBTyxNQUFPLFNBQVEsZ0JBQWdCO0lBQ2xEOzs7Ozs7Ozs7Ozs7O09BYUc7SUFDSCxPQUFPLENBQUMsSUFBWSxFQUFFLE1BQTJCO1FBQy9DLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7OztPQVlHO0lBQ0gsTUFBTSxDQUFDLElBQVksRUFBRSxNQUEyQjtRQUM5QyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ2xHLENBQUM7Q0FDRiJ9