egg 4.0.0-beta.4 → 4.0.0-beta.6
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.
- package/dist/commonjs/app/extend/context.d.ts +151 -2
- package/dist/commonjs/app/extend/context.js +81 -84
- package/dist/commonjs/app/extend/helper.d.ts +37 -0
- package/dist/commonjs/app/extend/helper.js +49 -0
- package/dist/commonjs/app/extend/request.d.ts +128 -0
- package/dist/commonjs/app/extend/request.js +270 -0
- package/dist/commonjs/app/extend/response.d.ts +25 -0
- package/dist/commonjs/app/extend/response.js +37 -0
- package/dist/commonjs/app/middleware/meta.d.ts +2 -3
- package/dist/commonjs/app/middleware/meta.js +1 -1
- package/dist/commonjs/app/middleware/notfound.d.ts +2 -3
- package/dist/commonjs/app/middleware/notfound.js +1 -1
- package/dist/commonjs/app/middleware/site_file.d.ts +2 -2
- package/dist/commonjs/app/middleware/site_file.js +1 -2
- package/dist/commonjs/config/config.default.js +3 -2
- package/dist/commonjs/config/plugin.js +2 -2
- package/dist/commonjs/lib/application.d.ts +5 -12
- package/dist/commonjs/lib/application.js +9 -20
- package/dist/commonjs/lib/core/base_context_class.d.ts +2 -2
- package/dist/commonjs/lib/core/context_httpclient.d.ts +3 -3
- package/dist/commonjs/lib/core/context_httpclient.js +1 -1
- package/dist/commonjs/lib/core/httpclient.d.ts +2 -3
- package/dist/commonjs/lib/core/httpclient.js +3 -6
- package/dist/commonjs/lib/core/messenger/ipc.js +1 -2
- package/dist/commonjs/lib/egg.d.ts +19 -15
- package/dist/commonjs/lib/egg.js +14 -11
- package/dist/commonjs/lib/type.d.ts +4 -7
- package/dist/commonjs/lib/utils.d.ts +2 -0
- package/dist/commonjs/lib/utils.js +21 -0
- package/dist/esm/app/extend/context.d.ts +151 -2
- package/dist/esm/app/extend/context.js +81 -85
- package/dist/esm/app/extend/helper.d.ts +37 -0
- package/dist/esm/app/extend/helper.js +43 -0
- package/dist/esm/app/extend/request.d.ts +128 -0
- package/dist/esm/app/extend/request.js +264 -0
- package/dist/esm/app/extend/response.d.ts +25 -0
- package/dist/esm/app/extend/response.js +34 -0
- package/dist/esm/app/middleware/meta.d.ts +2 -3
- package/dist/esm/app/middleware/meta.js +1 -1
- package/dist/esm/app/middleware/notfound.d.ts +2 -3
- package/dist/esm/app/middleware/notfound.js +1 -1
- package/dist/esm/app/middleware/site_file.d.ts +2 -2
- package/dist/esm/app/middleware/site_file.js +1 -2
- package/dist/esm/config/config.default.js +3 -2
- package/dist/esm/config/plugin.js +2 -2
- package/dist/esm/lib/application.d.ts +5 -12
- package/dist/esm/lib/application.js +9 -20
- package/dist/esm/lib/core/base_context_class.d.ts +2 -2
- package/dist/esm/lib/core/context_httpclient.d.ts +3 -3
- package/dist/esm/lib/core/context_httpclient.js +1 -1
- package/dist/esm/lib/core/httpclient.d.ts +2 -3
- package/dist/esm/lib/core/httpclient.js +2 -2
- package/dist/esm/lib/core/messenger/ipc.js +1 -2
- package/dist/esm/lib/egg.d.ts +19 -15
- package/dist/esm/lib/egg.js +12 -12
- package/dist/esm/lib/type.d.ts +4 -7
- package/dist/esm/lib/utils.d.ts +2 -0
- package/dist/esm/lib/utils.js +14 -0
- package/dist/package.json +1 -1
- package/package.json +7 -10
- package/src/app/extend/context.ts +116 -100
- package/src/app/extend/{helper.js → helper.ts} +14 -13
- package/src/app/extend/{request.js → request.ts} +81 -79
- package/src/app/extend/response.ts +36 -0
- package/src/app/middleware/meta.ts +2 -3
- package/src/app/middleware/notfound.ts +2 -3
- package/src/app/middleware/site_file.ts +3 -5
- package/src/config/config.default.ts +2 -1
- package/src/config/plugin.ts +1 -1
- package/src/lib/application.ts +14 -21
- package/src/lib/core/base_context_class.ts +2 -2
- package/src/lib/core/context_httpclient.ts +3 -3
- package/src/lib/core/httpclient.ts +4 -5
- package/src/lib/core/messenger/ipc.ts +0 -1
- package/src/lib/egg.ts +45 -24
- package/src/lib/type.ts +3 -13
- package/src/lib/utils.ts +16 -0
- package/src/app/extend/response.js +0 -101
|
@@ -1,2 +1,151 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { Context as EggCoreContext, Router, type ContextDelegation as EggCoreContextDelegation } from '@eggjs/core';
|
|
2
|
+
import type { Cookies as ContextCookies } from '@eggjs/cookies';
|
|
3
|
+
import type { Application } from '../../lib/application.js';
|
|
4
|
+
import type { ContextHttpClient } from '../../lib/core/context_httpclient.js';
|
|
5
|
+
import type { BaseContextClass } from '../../lib//core/base_context_class.js';
|
|
6
|
+
import Request from './request.js';
|
|
7
|
+
import Response from './response.js';
|
|
8
|
+
import { EggLogger } from 'egg-logger';
|
|
9
|
+
interface Cookies extends ContextCookies {
|
|
10
|
+
request: any;
|
|
11
|
+
response: any;
|
|
12
|
+
}
|
|
13
|
+
export default class Context extends EggCoreContext {
|
|
14
|
+
app: Application;
|
|
15
|
+
request: Request;
|
|
16
|
+
service: BaseContextClass;
|
|
17
|
+
/**
|
|
18
|
+
* Request start time
|
|
19
|
+
* @member {Number} Context#starttime
|
|
20
|
+
*/
|
|
21
|
+
starttime: number;
|
|
22
|
+
/**
|
|
23
|
+
* Request start timer using `performance.now()`
|
|
24
|
+
* @member {Number} Context#performanceStarttime
|
|
25
|
+
*/
|
|
26
|
+
performanceStarttime: number;
|
|
27
|
+
/**
|
|
28
|
+
* Get the current visitor's cookies.
|
|
29
|
+
*/
|
|
30
|
+
get cookies(): Cookies;
|
|
31
|
+
/**
|
|
32
|
+
* Get a wrapper httpclient instance contain ctx in the hold request process
|
|
33
|
+
*
|
|
34
|
+
* @return {ContextHttpClient} the wrapper httpclient instance
|
|
35
|
+
*/
|
|
36
|
+
get httpclient(): ContextHttpClient;
|
|
37
|
+
/**
|
|
38
|
+
* Alias to {@link Context#httpclient}
|
|
39
|
+
*/
|
|
40
|
+
get httpClient(): ContextHttpClient;
|
|
41
|
+
/**
|
|
42
|
+
* Shortcut for httpclient.curl
|
|
43
|
+
*
|
|
44
|
+
* @function Context#curl
|
|
45
|
+
* @param {String|Object} url - request url address.
|
|
46
|
+
* @param {Object} [options] - options for request.
|
|
47
|
+
* @return {Object} see {@link ContextHttpClient#curl}
|
|
48
|
+
*/
|
|
49
|
+
curl(url: string, options?: object): ReturnType<ContextHttpClient['curl']>;
|
|
50
|
+
/**
|
|
51
|
+
* Alias to {@link Application#router}
|
|
52
|
+
*
|
|
53
|
+
* @member {Router} Context#router
|
|
54
|
+
* @since 1.0.0
|
|
55
|
+
* @example
|
|
56
|
+
* ```js
|
|
57
|
+
* this.router.pathFor('post', { id: 12 });
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
60
|
+
get router(): Router;
|
|
61
|
+
/**
|
|
62
|
+
* Set router to Context, only use on EggRouter
|
|
63
|
+
* @param {Router} val router instance
|
|
64
|
+
*/
|
|
65
|
+
set router(val: Router);
|
|
66
|
+
/**
|
|
67
|
+
* Get helper instance from {@link Application#Helper}
|
|
68
|
+
*
|
|
69
|
+
* @member {Helper} Context#helper
|
|
70
|
+
* @since 1.0.0
|
|
71
|
+
*/
|
|
72
|
+
get helper(): unknown;
|
|
73
|
+
/**
|
|
74
|
+
* Wrap app.loggers with context information,
|
|
75
|
+
* if a custom logger is defined by naming aLogger, then you can `ctx.getLogger('aLogger')`
|
|
76
|
+
*
|
|
77
|
+
* @param {String} name - logger name
|
|
78
|
+
*/
|
|
79
|
+
getLogger(name: string): EggLogger;
|
|
80
|
+
/**
|
|
81
|
+
* Logger for Application
|
|
82
|
+
*
|
|
83
|
+
* @member {Logger} Context#logger
|
|
84
|
+
* @since 1.0.0
|
|
85
|
+
* @example
|
|
86
|
+
* ```js
|
|
87
|
+
* this.logger.info('some request data: %j', this.request.body);
|
|
88
|
+
* this.logger.warn('WARNING!!!!');
|
|
89
|
+
* ```
|
|
90
|
+
*/
|
|
91
|
+
get logger(): EggLogger;
|
|
92
|
+
/**
|
|
93
|
+
* Logger for frameworks and plugins
|
|
94
|
+
*
|
|
95
|
+
* @member {Logger} Context#coreLogger
|
|
96
|
+
* @since 1.0.0
|
|
97
|
+
*/
|
|
98
|
+
get coreLogger(): EggLogger;
|
|
99
|
+
/**
|
|
100
|
+
* locals is an object for view, you can use `app.locals` and `ctx.locals` to set variables,
|
|
101
|
+
* which will be used as data when view is rendering.
|
|
102
|
+
* 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`.
|
|
103
|
+
*
|
|
104
|
+
* when you set locals, only object is available
|
|
105
|
+
*
|
|
106
|
+
* ```js
|
|
107
|
+
* this.locals = {
|
|
108
|
+
* a: 1
|
|
109
|
+
* };
|
|
110
|
+
* this.locals = {
|
|
111
|
+
* b: 1
|
|
112
|
+
* };
|
|
113
|
+
* this.locals.c = 1;
|
|
114
|
+
* console.log(this.locals);
|
|
115
|
+
* {
|
|
116
|
+
* a: 1,
|
|
117
|
+
* b: 1,
|
|
118
|
+
* c: 1,
|
|
119
|
+
* };
|
|
120
|
+
* ```
|
|
121
|
+
*
|
|
122
|
+
* `ctx.locals` has cache, it only merges `app.locals` once in one request.
|
|
123
|
+
*
|
|
124
|
+
* @member {Object} Context#locals
|
|
125
|
+
*/
|
|
126
|
+
get locals(): Record<string, any>;
|
|
127
|
+
set locals(val: Record<string, any>);
|
|
128
|
+
/**
|
|
129
|
+
* alias to {@link Context#locals}, compatible with koa that use this variable
|
|
130
|
+
* @member {Object} state
|
|
131
|
+
* @see Context#locals
|
|
132
|
+
*/
|
|
133
|
+
get state(): Record<string, any>;
|
|
134
|
+
set state(val: Record<string, any>);
|
|
135
|
+
/**
|
|
136
|
+
* Run async function in the background
|
|
137
|
+
* @param {Function} scope - the first args is ctx
|
|
138
|
+
* ```js
|
|
139
|
+
* this.body = 'hi';
|
|
140
|
+
*
|
|
141
|
+
* this.runInBackground(async ctx => {
|
|
142
|
+
* await ctx.mysql.query(sql);
|
|
143
|
+
* await ctx.curl(url);
|
|
144
|
+
* });
|
|
145
|
+
* ```
|
|
146
|
+
*/
|
|
147
|
+
runInBackground(scope: (ctx: ContextDelegation) => Promise<void>, taskName?: string): void;
|
|
148
|
+
_runInBackground(scope: (ctx: ContextDelegation) => Promise<void>, taskName: string): Promise<void>;
|
|
149
|
+
}
|
|
150
|
+
export type ContextDelegation = EggCoreContextDelegation & Context & Pick<Request, 'acceptJSON' | 'queries' | 'accept' | 'ip'> & Pick<Response, 'realStatus'>;
|
|
151
|
+
export {};
|
|
@@ -3,27 +3,37 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const node_perf_hooks_1 = require("node:perf_hooks");
|
|
7
6
|
const delegates_1 = __importDefault(require("delegates"));
|
|
8
7
|
const utility_1 = require("utility");
|
|
8
|
+
const performance_ms_1 = require("performance-ms");
|
|
9
9
|
const core_1 = require("@eggjs/core");
|
|
10
|
-
const HELPER = Symbol('
|
|
11
|
-
const LOCALS = Symbol('
|
|
12
|
-
const LOCALS_LIST = Symbol('
|
|
13
|
-
const COOKIES = Symbol('
|
|
14
|
-
const
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
|
|
10
|
+
const HELPER = Symbol('ctx helper');
|
|
11
|
+
const LOCALS = Symbol('ctx locals');
|
|
12
|
+
const LOCALS_LIST = Symbol('ctx localsList');
|
|
13
|
+
const COOKIES = Symbol('ctx cookies');
|
|
14
|
+
const CONTEXT_HTTPCLIENT = Symbol('ctx httpclient');
|
|
15
|
+
const CONTEXT_ROUTER = Symbol('ctx router');
|
|
16
|
+
class Context extends core_1.Context {
|
|
17
|
+
/**
|
|
18
|
+
* Request start time
|
|
19
|
+
* @member {Number} Context#starttime
|
|
20
|
+
*/
|
|
21
|
+
starttime;
|
|
22
|
+
/**
|
|
23
|
+
* Request start timer using `performance.now()`
|
|
24
|
+
* @member {Number} Context#performanceStarttime
|
|
25
|
+
*/
|
|
26
|
+
performanceStarttime;
|
|
18
27
|
/**
|
|
19
28
|
* Get the current visitor's cookies.
|
|
20
29
|
*/
|
|
21
30
|
get cookies() {
|
|
22
|
-
|
|
23
|
-
|
|
31
|
+
let cookies = this[COOKIES];
|
|
32
|
+
if (!cookies) {
|
|
33
|
+
this[COOKIES] = cookies = new this.app.ContextCookies(this, this.app.keys, this.app.config.cookies);
|
|
24
34
|
}
|
|
25
|
-
return
|
|
26
|
-
}
|
|
35
|
+
return cookies;
|
|
36
|
+
}
|
|
27
37
|
/**
|
|
28
38
|
* Get a wrapper httpclient instance contain ctx in the hold request process
|
|
29
39
|
*
|
|
@@ -34,7 +44,13 @@ const Context = {
|
|
|
34
44
|
this[CONTEXT_HTTPCLIENT] = new this.app.ContextHttpClient(this);
|
|
35
45
|
}
|
|
36
46
|
return this[CONTEXT_HTTPCLIENT];
|
|
37
|
-
}
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Alias to {@link Context#httpclient}
|
|
50
|
+
*/
|
|
51
|
+
get httpClient() {
|
|
52
|
+
return this.httpclient;
|
|
53
|
+
}
|
|
38
54
|
/**
|
|
39
55
|
* Shortcut for httpclient.curl
|
|
40
56
|
*
|
|
@@ -43,9 +59,9 @@ const Context = {
|
|
|
43
59
|
* @param {Object} [options] - options for request.
|
|
44
60
|
* @return {Object} see {@link ContextHttpClient#curl}
|
|
45
61
|
*/
|
|
46
|
-
curl(url, options) {
|
|
47
|
-
return this.httpclient.curl(url, options);
|
|
48
|
-
}
|
|
62
|
+
async curl(url, options) {
|
|
63
|
+
return await this.httpclient.curl(url, options);
|
|
64
|
+
}
|
|
49
65
|
/**
|
|
50
66
|
* Alias to {@link Application#router}
|
|
51
67
|
*
|
|
@@ -57,18 +73,18 @@ const Context = {
|
|
|
57
73
|
* ```
|
|
58
74
|
*/
|
|
59
75
|
get router() {
|
|
60
|
-
if (
|
|
61
|
-
this[CONTEXT_ROUTER]
|
|
76
|
+
if (this[CONTEXT_ROUTER]) {
|
|
77
|
+
return this[CONTEXT_ROUTER];
|
|
62
78
|
}
|
|
63
|
-
return this
|
|
64
|
-
}
|
|
79
|
+
return this.app.router;
|
|
80
|
+
}
|
|
65
81
|
/**
|
|
66
82
|
* Set router to Context, only use on EggRouter
|
|
67
|
-
* @param {
|
|
83
|
+
* @param {Router} val router instance
|
|
68
84
|
*/
|
|
69
85
|
set router(val) {
|
|
70
86
|
this[CONTEXT_ROUTER] = val;
|
|
71
|
-
}
|
|
87
|
+
}
|
|
72
88
|
/**
|
|
73
89
|
* Get helper instance from {@link Application#Helper}
|
|
74
90
|
*
|
|
@@ -80,37 +96,20 @@ const Context = {
|
|
|
80
96
|
this[HELPER] = new this.app.Helper(this);
|
|
81
97
|
}
|
|
82
98
|
return this[HELPER];
|
|
83
|
-
}
|
|
99
|
+
}
|
|
84
100
|
/**
|
|
85
101
|
* Wrap app.loggers with context information,
|
|
86
102
|
* if a custom logger is defined by naming aLogger, then you can `ctx.getLogger('aLogger')`
|
|
87
103
|
*
|
|
88
104
|
* @param {String} name - logger name
|
|
89
|
-
* @return {Logger} logger
|
|
90
105
|
*/
|
|
91
106
|
getLogger(name) {
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
}
|
|
95
|
-
let cache = this[CONTEXT_LOGGERS];
|
|
96
|
-
if (!cache) {
|
|
97
|
-
cache = this[CONTEXT_LOGGERS] = {};
|
|
98
|
-
}
|
|
99
|
-
// read from cache
|
|
100
|
-
if (cache[name])
|
|
101
|
-
return cache[name];
|
|
102
|
-
// get no exist logger
|
|
103
|
-
const appLogger = this.app.getLogger(name);
|
|
104
|
-
if (!appLogger)
|
|
105
|
-
return null;
|
|
106
|
-
// write to cache
|
|
107
|
-
cache[name] = new this.app.ContextLogger(this, appLogger);
|
|
108
|
-
return cache[name];
|
|
109
|
-
},
|
|
107
|
+
return this.app.getLogger(name);
|
|
108
|
+
}
|
|
110
109
|
/**
|
|
111
|
-
* Logger for Application
|
|
110
|
+
* Logger for Application
|
|
112
111
|
*
|
|
113
|
-
* @member {
|
|
112
|
+
* @member {Logger} Context#logger
|
|
114
113
|
* @since 1.0.0
|
|
115
114
|
* @example
|
|
116
115
|
* ```js
|
|
@@ -120,17 +119,16 @@ const Context = {
|
|
|
120
119
|
*/
|
|
121
120
|
get logger() {
|
|
122
121
|
return this.getLogger('logger');
|
|
123
|
-
}
|
|
122
|
+
}
|
|
124
123
|
/**
|
|
125
|
-
* Logger for frameworks and plugins
|
|
126
|
-
* wrapping app.coreLogger with context infomation
|
|
124
|
+
* Logger for frameworks and plugins
|
|
127
125
|
*
|
|
128
|
-
* @member {
|
|
126
|
+
* @member {Logger} Context#coreLogger
|
|
129
127
|
* @since 1.0.0
|
|
130
128
|
*/
|
|
131
129
|
get coreLogger() {
|
|
132
130
|
return this.getLogger('coreLogger');
|
|
133
|
-
}
|
|
131
|
+
}
|
|
134
132
|
/**
|
|
135
133
|
* locals is an object for view, you can use `app.locals` and `ctx.locals` to set variables,
|
|
136
134
|
* which will be used as data when view is rendering.
|
|
@@ -162,18 +160,17 @@ const Context = {
|
|
|
162
160
|
if (!this[LOCALS]) {
|
|
163
161
|
this[LOCALS] = (0, utility_1.assign)({}, this.app.locals);
|
|
164
162
|
}
|
|
165
|
-
if (this[LOCALS_LIST] && this[LOCALS_LIST].length) {
|
|
163
|
+
if (Array.isArray(this[LOCALS_LIST]) && this[LOCALS_LIST].length > 0) {
|
|
166
164
|
(0, utility_1.assign)(this[LOCALS], this[LOCALS_LIST]);
|
|
167
165
|
this[LOCALS_LIST] = null;
|
|
168
166
|
}
|
|
169
167
|
return this[LOCALS];
|
|
170
|
-
}
|
|
168
|
+
}
|
|
171
169
|
set locals(val) {
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
},
|
|
170
|
+
const localsList = this[LOCALS_LIST] ?? [];
|
|
171
|
+
localsList.push(val);
|
|
172
|
+
this[LOCALS_LIST] = localsList;
|
|
173
|
+
}
|
|
177
174
|
/**
|
|
178
175
|
* alias to {@link Context#locals}, compatible with koa that use this variable
|
|
179
176
|
* @member {Object} state
|
|
@@ -181,10 +178,10 @@ const Context = {
|
|
|
181
178
|
*/
|
|
182
179
|
get state() {
|
|
183
180
|
return this.locals;
|
|
184
|
-
}
|
|
181
|
+
}
|
|
185
182
|
set state(val) {
|
|
186
183
|
this.locals = val;
|
|
187
|
-
}
|
|
184
|
+
}
|
|
188
185
|
/**
|
|
189
186
|
* Run async function in the background
|
|
190
187
|
* @param {Function} scope - the first args is ctx
|
|
@@ -197,37 +194,38 @@ const Context = {
|
|
|
197
194
|
* });
|
|
198
195
|
* ```
|
|
199
196
|
*/
|
|
200
|
-
runInBackground(scope) {
|
|
197
|
+
runInBackground(scope, taskName) {
|
|
201
198
|
// try to use custom function name first
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
199
|
+
if (!taskName) {
|
|
200
|
+
taskName = Reflect.get(scope, '_name') || scope.name || core_1.utils.getCalleeFromStack(true);
|
|
201
|
+
}
|
|
202
|
+
// use setImmediate to ensure all sync logic will run async
|
|
203
|
+
setImmediate(() => {
|
|
204
|
+
this._runInBackground(scope, taskName);
|
|
205
|
+
});
|
|
206
|
+
}
|
|
206
207
|
// let plugins or frameworks to reuse _runInBackground in some cases.
|
|
207
208
|
// e.g.: https://github.com/eggjs/egg-mock/pull/78
|
|
208
|
-
_runInBackground(scope, taskName) {
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
.then(() => {
|
|
216
|
-
ctx.coreLogger.info('[egg:background] task:%s success (%dms)', taskName, Math.floor((node_perf_hooks_1.performance.now() - start) * 1000) / 1000);
|
|
217
|
-
})
|
|
218
|
-
.catch(err => {
|
|
209
|
+
async _runInBackground(scope, taskName) {
|
|
210
|
+
const startTime = (0, performance_ms_1.now)();
|
|
211
|
+
try {
|
|
212
|
+
await scope(this);
|
|
213
|
+
this.coreLogger.info('[egg:background] task:%s success (%dms)', taskName, (0, performance_ms_1.diff)(startTime));
|
|
214
|
+
}
|
|
215
|
+
catch (err) {
|
|
219
216
|
// background task process log
|
|
220
|
-
|
|
217
|
+
this.coreLogger.info('[egg:background] task:%s fail (%dms)', taskName, (0, performance_ms_1.diff)(startTime));
|
|
221
218
|
// emit error when promise catch, and set err.runInBackground flag
|
|
222
219
|
err.runInBackground = true;
|
|
223
|
-
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
}
|
|
220
|
+
this.app.emit('error', err, this);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
exports.default = Context;
|
|
227
225
|
/**
|
|
228
226
|
* Context delegation.
|
|
229
227
|
*/
|
|
230
|
-
(0, delegates_1.default)(Context, 'request')
|
|
228
|
+
(0, delegates_1.default)(Context.prototype, 'request')
|
|
231
229
|
/**
|
|
232
230
|
* @member {Boolean} Context#acceptJSON
|
|
233
231
|
* @see Request#acceptJSON
|
|
@@ -252,12 +250,11 @@ const Context = {
|
|
|
252
250
|
* @since 1.0.0
|
|
253
251
|
*/
|
|
254
252
|
.access('ip');
|
|
255
|
-
(0, delegates_1.default)(Context, 'response')
|
|
253
|
+
(0, delegates_1.default)(Context.prototype, 'response')
|
|
256
254
|
/**
|
|
257
255
|
* @member {Number} Context#realStatus
|
|
258
256
|
* @see Response#realStatus
|
|
259
257
|
* @since 1.0.0
|
|
260
258
|
*/
|
|
261
259
|
.access('realStatus');
|
|
262
|
-
|
|
263
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvZXh0ZW5kL2NvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxxREFBOEM7QUFDOUMsMERBQWlDO0FBQ2pDLHFDQUFpQztBQUNqQyxzQ0FBb0M7QUFFcEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDeEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDeEMsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7QUFDakQsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFDMUMsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDakQsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztBQUN4RCxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUVoRCxNQUFNLE9BQU8sR0FBRztJQUNkOztPQUVHO0lBQ0gsSUFBSSxPQUFPO1FBQ1QsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM1RixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUFJLFVBQVU7UUFDWixJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQztZQUM5QixJ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
|
|
260
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvZXh0ZW5kL2NvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwwREFBaUM7QUFDakMscUNBQWlDO0FBQ2pDLG1EQUEyQztBQUMzQyxzQ0FHcUI7QUFTckIsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQ3BDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUNwQyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUM3QyxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDdEMsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUNwRCxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7QUFPNUMsTUFBcUIsT0FBUSxTQUFRLGNBQWM7SUFLakQ7OztPQUdHO0lBQ0gsU0FBUyxDQUFTO0lBQ2xCOzs7T0FHRztJQUNILG9CQUFvQixDQUFTO0lBRTdCOztPQUVHO0lBQ0gsSUFBSSxPQUFPO1FBQ1QsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNiLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxPQUFPLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEcsQ0FBQztRQUNELE9BQU8sT0FBa0IsQ0FBQztJQUM1QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQUksVUFBVTtRQUNaLElBQUksQ0FBQyxJQUFJ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
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { BaseContextClass } from '../../lib/core/base_context_class.js';
|
|
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
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const node_url_1 = __importDefault(require("node:url"));
|
|
7
|
+
const base_context_class_js_1 = require("../../lib/core/base_context_class.js");
|
|
8
|
+
/**
|
|
9
|
+
* The Helper class which can be used as utility function.
|
|
10
|
+
* We support developers to extend Helper through ${baseDir}/app/extend/helper.js ,
|
|
11
|
+
* then you can use all method on `ctx.helper` that is a instance of Helper.
|
|
12
|
+
*/
|
|
13
|
+
class Helper extends base_context_class_js_1.BaseContextClass {
|
|
14
|
+
/**
|
|
15
|
+
* Generate URL path(without host) for route. Takes the route name and a map of named params.
|
|
16
|
+
* @function Helper#pathFor
|
|
17
|
+
* @param {String} name - Router Name
|
|
18
|
+
* @param {Object} params - Other params
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```js
|
|
22
|
+
* app.get('home', '/index.htm', 'home.index');
|
|
23
|
+
* ctx.helper.pathFor('home', { by: 'recent', limit: 20 })
|
|
24
|
+
* => /index.htm?by=recent&limit=20
|
|
25
|
+
* ```
|
|
26
|
+
* @return {String} url path(without host)
|
|
27
|
+
*/
|
|
28
|
+
pathFor(name, params) {
|
|
29
|
+
return this.app.router.url(name, params);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Generate full URL(with host) for route. Takes the route name and a map of named params.
|
|
33
|
+
* @function Helper#urlFor
|
|
34
|
+
* @param {String} name - Router name
|
|
35
|
+
* @param {Object} params - Other params
|
|
36
|
+
* @example
|
|
37
|
+
* ```js
|
|
38
|
+
* app.get('home', '/index.htm', 'home.index');
|
|
39
|
+
* ctx.helper.urlFor('home', { by: 'recent', limit: 20 })
|
|
40
|
+
* => http://127.0.0.1:7001/index.htm?by=recent&limit=20
|
|
41
|
+
* ```
|
|
42
|
+
* @return {String} full url(with host)
|
|
43
|
+
*/
|
|
44
|
+
urlFor(name, params) {
|
|
45
|
+
return this.ctx.protocol + '://' + this.ctx.host + node_url_1.default.resolve('/', this.pathFor(name, params));
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
exports.default = Helper;
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9leHRlbmQvaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsd0RBQTJCO0FBQzNCLGdGQUF3RTtBQUV4RTs7OztHQUlHO0FBQ0gsTUFBcUIsTUFBTyxTQUFRLHdDQUFnQjtJQUNsRDs7Ozs7Ozs7Ozs7OztPQWFHO0lBQ0gsT0FBTyxDQUFDLElBQVksRUFBRSxNQUEyQjtRQUMvQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7T0FZRztJQUNILE1BQU0sQ0FBQyxJQUFZLEVBQUUsTUFBMkI7UUFDOUMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsa0JBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDbEcsQ0FBQztDQUNGO0FBbkNELHlCQW1DQyJ9
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { Request as EggCoreRequest } from '@eggjs/core';
|
|
2
|
+
import type { Application } from '../../lib/application.js';
|
|
3
|
+
import type { ContextDelegation } from './context.js';
|
|
4
|
+
import Response from './response.js';
|
|
5
|
+
export default class Request extends EggCoreRequest {
|
|
6
|
+
app: Application;
|
|
7
|
+
ctx: ContextDelegation;
|
|
8
|
+
response: Response;
|
|
9
|
+
/**
|
|
10
|
+
* Parse the "Host" header field host
|
|
11
|
+
* and support X-Forwarded-Host when a
|
|
12
|
+
* proxy is enabled.
|
|
13
|
+
* @member {String} Request#host
|
|
14
|
+
* @example
|
|
15
|
+
* ip + port
|
|
16
|
+
* ```js
|
|
17
|
+
* this.request.host
|
|
18
|
+
* => '127.0.0.1:7001'
|
|
19
|
+
* ```
|
|
20
|
+
* or domain
|
|
21
|
+
* ```js
|
|
22
|
+
* this.request.host
|
|
23
|
+
* => 'demo.eggjs.org'
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
get host(): string;
|
|
27
|
+
/**
|
|
28
|
+
* @member {String} Request#protocol
|
|
29
|
+
* @example
|
|
30
|
+
* ```js
|
|
31
|
+
* this.request.protocol
|
|
32
|
+
* => 'https'
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
get protocol(): string;
|
|
36
|
+
/**
|
|
37
|
+
* Get all pass through ip addresses from the request.
|
|
38
|
+
* Enable only on `app.config.proxy = true`
|
|
39
|
+
*
|
|
40
|
+
* @member {Array} Request#ips
|
|
41
|
+
* @example
|
|
42
|
+
* ```js
|
|
43
|
+
* this.request.ips
|
|
44
|
+
* => ['100.23.1.2', '201.10.10.2']
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
get ips(): string[];
|
|
48
|
+
/**
|
|
49
|
+
* Get the request remote IPv4 address
|
|
50
|
+
* @member {String} Request#ip
|
|
51
|
+
* @return {String} IPv4 address
|
|
52
|
+
* @example
|
|
53
|
+
* ```js
|
|
54
|
+
* this.request.ip
|
|
55
|
+
* => '127.0.0.1'
|
|
56
|
+
* => '111.10.2.1'
|
|
57
|
+
* ```
|
|
58
|
+
*/
|
|
59
|
+
get ip(): string;
|
|
60
|
+
/**
|
|
61
|
+
* Set the request remote IPv4 address
|
|
62
|
+
* @member {String} Request#ip
|
|
63
|
+
* @param {String} ip - IPv4 address
|
|
64
|
+
* @example
|
|
65
|
+
* ```js
|
|
66
|
+
* this.request.ip
|
|
67
|
+
* => '127.0.0.1'
|
|
68
|
+
* => '111.10.2.1'
|
|
69
|
+
* ```
|
|
70
|
+
*/
|
|
71
|
+
set ip(ip: string);
|
|
72
|
+
/**
|
|
73
|
+
* detect if response should be json
|
|
74
|
+
* 1. url path ends with `.json`
|
|
75
|
+
* 2. response type is set to json
|
|
76
|
+
* 3. detect by request accept header
|
|
77
|
+
*
|
|
78
|
+
* @member {Boolean} Request#acceptJSON
|
|
79
|
+
* @since 1.0.0
|
|
80
|
+
*/
|
|
81
|
+
get acceptJSON(): boolean;
|
|
82
|
+
_customQuery(cacheName: symbol, filter: (value: string | string[]) => string | string[]): Record<string, string | string[]>;
|
|
83
|
+
/**
|
|
84
|
+
* get params pass by querystring, all values are of string type.
|
|
85
|
+
* @member {Object} Request#query
|
|
86
|
+
* @example
|
|
87
|
+
* ```js
|
|
88
|
+
* GET http://127.0.0.1:7001?name=Foo&age=20&age=21
|
|
89
|
+
* this.query
|
|
90
|
+
* => { 'name': 'Foo', 'age': '20' }
|
|
91
|
+
*
|
|
92
|
+
* GET http://127.0.0.1:7001?a=b&a=c&o[foo]=bar&b[]=1&b[]=2&e=val
|
|
93
|
+
* this.query
|
|
94
|
+
* =>
|
|
95
|
+
* {
|
|
96
|
+
* "a": "b",
|
|
97
|
+
* "o[foo]": "bar",
|
|
98
|
+
* "b[]": "1",
|
|
99
|
+
* "e": "val"
|
|
100
|
+
* }
|
|
101
|
+
* ```
|
|
102
|
+
*/
|
|
103
|
+
get query(): Record<string, string>;
|
|
104
|
+
/**
|
|
105
|
+
* get params pass by querystring, all value are Array type. {@link Request#query}
|
|
106
|
+
* @member {Array} Request#queries
|
|
107
|
+
* @example
|
|
108
|
+
* ```js
|
|
109
|
+
* GET http://127.0.0.1:7001?a=b&a=c&o[foo]=bar&b[]=1&b[]=2&e=val
|
|
110
|
+
* this.queries
|
|
111
|
+
* =>
|
|
112
|
+
* {
|
|
113
|
+
* "a": ["b", "c"],
|
|
114
|
+
* "o[foo]": ["bar"],
|
|
115
|
+
* "b[]": ["1", "2"],
|
|
116
|
+
* "e": ["val"]
|
|
117
|
+
* }
|
|
118
|
+
* ```
|
|
119
|
+
*/
|
|
120
|
+
get queries(): Record<string, string[]>;
|
|
121
|
+
/**
|
|
122
|
+
* Set query-string as an object.
|
|
123
|
+
*
|
|
124
|
+
* @function Request#query
|
|
125
|
+
* @param {Object} obj set querystring and query object for request.
|
|
126
|
+
*/
|
|
127
|
+
set query(obj: Record<string, string>);
|
|
128
|
+
}
|