egg 4.0.0-beta.5 → 4.0.0-beta.7
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 +154 -2
- package/dist/commonjs/app/extend/context.js +82 -84
- package/dist/commonjs/app/extend/context.types.d.ts +16 -0
- package/dist/commonjs/app/extend/context.types.js +3 -0
- 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 +4 -2
- package/dist/commonjs/app/middleware/site_file.js +2 -3
- package/dist/commonjs/config/config.default.js +3 -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/IMessenger.d.ts +2 -2
- package/dist/commonjs/lib/core/messenger/index.js +2 -2
- package/dist/commonjs/lib/core/messenger/ipc.d.ts +5 -3
- package/dist/commonjs/lib/core/messenger/ipc.js +23 -17
- package/dist/commonjs/lib/core/messenger/local.d.ts +2 -2
- package/dist/commonjs/lib/core/messenger/local.js +14 -11
- package/dist/commonjs/lib/egg.d.ts +20 -15
- package/dist/commonjs/lib/egg.js +15 -11
- package/dist/commonjs/lib/egg.types.d.ts +6 -0
- package/dist/commonjs/lib/egg.types.js +3 -0
- 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 +154 -2
- package/dist/esm/app/extend/context.js +82 -85
- package/dist/esm/app/extend/context.types.d.ts +16 -0
- package/dist/esm/app/extend/context.types.js +2 -0
- 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 +4 -2
- package/dist/esm/app/middleware/site_file.js +2 -3
- package/dist/esm/config/config.default.js +3 -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/IMessenger.d.ts +2 -2
- package/dist/esm/lib/core/messenger/index.js +2 -2
- package/dist/esm/lib/core/messenger/ipc.d.ts +5 -3
- package/dist/esm/lib/core/messenger/ipc.js +23 -17
- package/dist/esm/lib/core/messenger/local.d.ts +2 -2
- package/dist/esm/lib/core/messenger/local.js +14 -11
- package/dist/esm/lib/egg.d.ts +20 -15
- package/dist/esm/lib/egg.js +13 -12
- package/dist/esm/lib/egg.types.d.ts +6 -0
- package/dist/esm/lib/egg.types.js +2 -0
- 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 +16 -13
- package/src/app/extend/context.ts +124 -102
- package/src/app/extend/context.types.ts +24 -0
- 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 +4 -6
- package/src/config/config.default.ts +2 -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/IMessenger.ts +2 -2
- package/src/lib/core/messenger/index.ts +1 -1
- package/src/lib/core/messenger/ipc.ts +23 -17
- package/src/lib/core/messenger/local.ts +12 -10
- package/src/lib/egg.ts +47 -24
- package/src/lib/egg.types.ts +6 -0
- package/src/lib/type.ts +6 -13
- package/src/lib/utils.ts +16 -0
- package/src/app/extend/response.js +0 -101
|
@@ -1,24 +1,35 @@
|
|
|
1
|
-
import { performance } from 'node:perf_hooks';
|
|
2
1
|
import delegate from 'delegates';
|
|
3
2
|
import { assign } from 'utility';
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const
|
|
3
|
+
import { now, diff } from 'performance-ms';
|
|
4
|
+
import { utils, Context as EggCoreContext, } from '@eggjs/core';
|
|
5
|
+
import './context.types.js';
|
|
6
|
+
const HELPER = Symbol('ctx helper');
|
|
7
|
+
const LOCALS = Symbol('ctx locals');
|
|
8
|
+
const LOCALS_LIST = Symbol('ctx localsList');
|
|
9
|
+
const COOKIES = Symbol('ctx cookies');
|
|
10
|
+
const CONTEXT_HTTPCLIENT = Symbol('ctx httpclient');
|
|
11
|
+
const CONTEXT_ROUTER = Symbol('ctx router');
|
|
12
|
+
export default class Context extends EggCoreContext {
|
|
13
|
+
/**
|
|
14
|
+
* Request start time
|
|
15
|
+
* @member {Number} Context#starttime
|
|
16
|
+
*/
|
|
17
|
+
starttime;
|
|
18
|
+
/**
|
|
19
|
+
* Request start timer using `performance.now()`
|
|
20
|
+
* @member {Number} Context#performanceStarttime
|
|
21
|
+
*/
|
|
22
|
+
performanceStarttime;
|
|
13
23
|
/**
|
|
14
24
|
* Get the current visitor's cookies.
|
|
15
25
|
*/
|
|
16
26
|
get cookies() {
|
|
17
|
-
|
|
18
|
-
|
|
27
|
+
let cookies = this[COOKIES];
|
|
28
|
+
if (!cookies) {
|
|
29
|
+
this[COOKIES] = cookies = new this.app.ContextCookies(this, this.app.keys, this.app.config.cookies);
|
|
19
30
|
}
|
|
20
|
-
return
|
|
21
|
-
}
|
|
31
|
+
return cookies;
|
|
32
|
+
}
|
|
22
33
|
/**
|
|
23
34
|
* Get a wrapper httpclient instance contain ctx in the hold request process
|
|
24
35
|
*
|
|
@@ -29,7 +40,13 @@ const Context = {
|
|
|
29
40
|
this[CONTEXT_HTTPCLIENT] = new this.app.ContextHttpClient(this);
|
|
30
41
|
}
|
|
31
42
|
return this[CONTEXT_HTTPCLIENT];
|
|
32
|
-
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Alias to {@link Context#httpclient}
|
|
46
|
+
*/
|
|
47
|
+
get httpClient() {
|
|
48
|
+
return this.httpclient;
|
|
49
|
+
}
|
|
33
50
|
/**
|
|
34
51
|
* Shortcut for httpclient.curl
|
|
35
52
|
*
|
|
@@ -38,9 +55,9 @@ const Context = {
|
|
|
38
55
|
* @param {Object} [options] - options for request.
|
|
39
56
|
* @return {Object} see {@link ContextHttpClient#curl}
|
|
40
57
|
*/
|
|
41
|
-
curl(url, options) {
|
|
42
|
-
return this.httpclient.curl(url, options);
|
|
43
|
-
}
|
|
58
|
+
async curl(url, options) {
|
|
59
|
+
return await this.httpclient.curl(url, options);
|
|
60
|
+
}
|
|
44
61
|
/**
|
|
45
62
|
* Alias to {@link Application#router}
|
|
46
63
|
*
|
|
@@ -52,18 +69,18 @@ const Context = {
|
|
|
52
69
|
* ```
|
|
53
70
|
*/
|
|
54
71
|
get router() {
|
|
55
|
-
if (
|
|
56
|
-
this[CONTEXT_ROUTER]
|
|
72
|
+
if (this[CONTEXT_ROUTER]) {
|
|
73
|
+
return this[CONTEXT_ROUTER];
|
|
57
74
|
}
|
|
58
|
-
return this
|
|
59
|
-
}
|
|
75
|
+
return this.app.router;
|
|
76
|
+
}
|
|
60
77
|
/**
|
|
61
78
|
* Set router to Context, only use on EggRouter
|
|
62
|
-
* @param {
|
|
79
|
+
* @param {Router} val router instance
|
|
63
80
|
*/
|
|
64
81
|
set router(val) {
|
|
65
82
|
this[CONTEXT_ROUTER] = val;
|
|
66
|
-
}
|
|
83
|
+
}
|
|
67
84
|
/**
|
|
68
85
|
* Get helper instance from {@link Application#Helper}
|
|
69
86
|
*
|
|
@@ -75,37 +92,20 @@ const Context = {
|
|
|
75
92
|
this[HELPER] = new this.app.Helper(this);
|
|
76
93
|
}
|
|
77
94
|
return this[HELPER];
|
|
78
|
-
}
|
|
95
|
+
}
|
|
79
96
|
/**
|
|
80
97
|
* Wrap app.loggers with context information,
|
|
81
98
|
* if a custom logger is defined by naming aLogger, then you can `ctx.getLogger('aLogger')`
|
|
82
99
|
*
|
|
83
100
|
* @param {String} name - logger name
|
|
84
|
-
* @return {Logger} logger
|
|
85
101
|
*/
|
|
86
102
|
getLogger(name) {
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
}
|
|
90
|
-
let cache = this[CONTEXT_LOGGERS];
|
|
91
|
-
if (!cache) {
|
|
92
|
-
cache = this[CONTEXT_LOGGERS] = {};
|
|
93
|
-
}
|
|
94
|
-
// read from cache
|
|
95
|
-
if (cache[name])
|
|
96
|
-
return cache[name];
|
|
97
|
-
// get no exist logger
|
|
98
|
-
const appLogger = this.app.getLogger(name);
|
|
99
|
-
if (!appLogger)
|
|
100
|
-
return null;
|
|
101
|
-
// write to cache
|
|
102
|
-
cache[name] = new this.app.ContextLogger(this, appLogger);
|
|
103
|
-
return cache[name];
|
|
104
|
-
},
|
|
103
|
+
return this.app.getLogger(name);
|
|
104
|
+
}
|
|
105
105
|
/**
|
|
106
|
-
* Logger for Application
|
|
106
|
+
* Logger for Application
|
|
107
107
|
*
|
|
108
|
-
* @member {
|
|
108
|
+
* @member {Logger} Context#logger
|
|
109
109
|
* @since 1.0.0
|
|
110
110
|
* @example
|
|
111
111
|
* ```js
|
|
@@ -115,17 +115,16 @@ const Context = {
|
|
|
115
115
|
*/
|
|
116
116
|
get logger() {
|
|
117
117
|
return this.getLogger('logger');
|
|
118
|
-
}
|
|
118
|
+
}
|
|
119
119
|
/**
|
|
120
|
-
* Logger for frameworks and plugins
|
|
121
|
-
* wrapping app.coreLogger with context infomation
|
|
120
|
+
* Logger for frameworks and plugins
|
|
122
121
|
*
|
|
123
|
-
* @member {
|
|
122
|
+
* @member {Logger} Context#coreLogger
|
|
124
123
|
* @since 1.0.0
|
|
125
124
|
*/
|
|
126
125
|
get coreLogger() {
|
|
127
126
|
return this.getLogger('coreLogger');
|
|
128
|
-
}
|
|
127
|
+
}
|
|
129
128
|
/**
|
|
130
129
|
* locals is an object for view, you can use `app.locals` and `ctx.locals` to set variables,
|
|
131
130
|
* which will be used as data when view is rendering.
|
|
@@ -157,18 +156,17 @@ const Context = {
|
|
|
157
156
|
if (!this[LOCALS]) {
|
|
158
157
|
this[LOCALS] = assign({}, this.app.locals);
|
|
159
158
|
}
|
|
160
|
-
if (this[LOCALS_LIST] && this[LOCALS_LIST].length) {
|
|
159
|
+
if (Array.isArray(this[LOCALS_LIST]) && this[LOCALS_LIST].length > 0) {
|
|
161
160
|
assign(this[LOCALS], this[LOCALS_LIST]);
|
|
162
161
|
this[LOCALS_LIST] = null;
|
|
163
162
|
}
|
|
164
163
|
return this[LOCALS];
|
|
165
|
-
}
|
|
164
|
+
}
|
|
166
165
|
set locals(val) {
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
},
|
|
166
|
+
const localsList = this[LOCALS_LIST] ?? [];
|
|
167
|
+
localsList.push(val);
|
|
168
|
+
this[LOCALS_LIST] = localsList;
|
|
169
|
+
}
|
|
172
170
|
/**
|
|
173
171
|
* alias to {@link Context#locals}, compatible with koa that use this variable
|
|
174
172
|
* @member {Object} state
|
|
@@ -176,10 +174,10 @@ const Context = {
|
|
|
176
174
|
*/
|
|
177
175
|
get state() {
|
|
178
176
|
return this.locals;
|
|
179
|
-
}
|
|
177
|
+
}
|
|
180
178
|
set state(val) {
|
|
181
179
|
this.locals = val;
|
|
182
|
-
}
|
|
180
|
+
}
|
|
183
181
|
/**
|
|
184
182
|
* Run async function in the background
|
|
185
183
|
* @param {Function} scope - the first args is ctx
|
|
@@ -192,37 +190,37 @@ const Context = {
|
|
|
192
190
|
* });
|
|
193
191
|
* ```
|
|
194
192
|
*/
|
|
195
|
-
runInBackground(scope) {
|
|
193
|
+
runInBackground(scope, taskName) {
|
|
196
194
|
// try to use custom function name first
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
195
|
+
if (!taskName) {
|
|
196
|
+
taskName = Reflect.get(scope, '_name') || scope.name || utils.getCalleeFromStack(true);
|
|
197
|
+
}
|
|
198
|
+
// use setImmediate to ensure all sync logic will run async
|
|
199
|
+
setImmediate(() => {
|
|
200
|
+
this._runInBackground(scope, taskName);
|
|
201
|
+
});
|
|
202
|
+
}
|
|
201
203
|
// let plugins or frameworks to reuse _runInBackground in some cases.
|
|
202
204
|
// e.g.: https://github.com/eggjs/egg-mock/pull/78
|
|
203
|
-
_runInBackground(scope, taskName) {
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
.then(() => {
|
|
211
|
-
ctx.coreLogger.info('[egg:background] task:%s success (%dms)', taskName, Math.floor((performance.now() - start) * 1000) / 1000);
|
|
212
|
-
})
|
|
213
|
-
.catch(err => {
|
|
205
|
+
async _runInBackground(scope, taskName) {
|
|
206
|
+
const startTime = now();
|
|
207
|
+
try {
|
|
208
|
+
await scope(this);
|
|
209
|
+
this.coreLogger.info('[egg:background] task:%s success (%dms)', taskName, diff(startTime));
|
|
210
|
+
}
|
|
211
|
+
catch (err) {
|
|
214
212
|
// background task process log
|
|
215
|
-
|
|
213
|
+
this.coreLogger.info('[egg:background] task:%s fail (%dms)', taskName, diff(startTime));
|
|
216
214
|
// emit error when promise catch, and set err.runInBackground flag
|
|
217
215
|
err.runInBackground = true;
|
|
218
|
-
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
}
|
|
216
|
+
this.app.emit('error', err, this);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}
|
|
222
220
|
/**
|
|
223
221
|
* Context delegation.
|
|
224
222
|
*/
|
|
225
|
-
delegate(Context, 'request')
|
|
223
|
+
delegate(Context.prototype, 'request')
|
|
226
224
|
/**
|
|
227
225
|
* @member {Boolean} Context#acceptJSON
|
|
228
226
|
* @see Request#acceptJSON
|
|
@@ -247,12 +245,11 @@ delegate(Context, 'request')
|
|
|
247
245
|
* @since 1.0.0
|
|
248
246
|
*/
|
|
249
247
|
.access('ip');
|
|
250
|
-
delegate(Context, 'response')
|
|
248
|
+
delegate(Context.prototype, 'response')
|
|
251
249
|
/**
|
|
252
250
|
* @member {Number} Context#realStatus
|
|
253
251
|
* @see Response#realStatus
|
|
254
252
|
* @since 1.0.0
|
|
255
253
|
*/
|
|
256
254
|
.access('realStatus');
|
|
257
|
-
|
|
258
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvZXh0ZW5kL2NvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sUUFBUSxNQUFNLFdBQVcsQ0FBQztBQUNqQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFcEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDeEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDeEMsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7QUFDakQsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFDMUMsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDakQsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztBQUN4RCxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUVoRCxNQUFNLE9BQU8sR0FBRztJQUNkOztPQUVHO0lBQ0gsSUFBSSxPQUFPO1FBQ1QsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM1RixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUFJLFVBQVU7UUFDWixJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEUsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxJQUFJLENBQUMsR0FBVyxFQUFFLE9BQWdCO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSCxJQUFJLE1BQU07UUFDUixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDO1FBQ3pDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSSxNQUFNLENBQUMsR0FBRztRQUNaLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxHQUFHLENBQUM7SUFDN0IsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsSUFBSSxNQUFNO1FBQ1IsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsU0FBUyxDQUFDLElBQVk7UUFDcEIsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztZQUNuRCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xDLENBQUM7UUFDRCxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDckMsQ0FBQztRQUVELGtCQUFrQjtRQUNsQixJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUM7WUFBRSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVwQyxzQkFBc0I7UUFDdEIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLFNBQVM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUU1QixpQkFBaUI7UUFDakIsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQzFELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0gsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQTBCRztJQUNILElBQUksTUFBTTtRQUNSLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdDLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbEQsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztZQUN4QyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQzNCLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBSSxNQUFNLENBQUMsR0FBRztRQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLENBQUM7UUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUFJLEtBQUssQ0FBQyxHQUFHO1FBQ1gsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7SUFDcEIsQ0FBQztJQUVEOzs7Ozs7Ozs7OztPQVdHO0lBQ0gsZUFBZSxDQUFDLEtBQWtDO1FBQ2hELHdDQUF3QztRQUN4QywwQkFBMEI7UUFDMUIsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLElBQUksS0FBSyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0YsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQscUVBQXFFO0lBQ3JFLGtEQUFrRDtJQUNsRCxnQkFBZ0IsQ0FBQyxLQUFrQyxFQUFFLFFBQWdCO1FBQ25FLDREQUE0RDtRQUM1RCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUM7UUFDakIsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2hDLDJEQUEyRDtRQUMzRCxPQUFPLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ2pELElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDdEIsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNULEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLHlDQUF5QyxFQUMzRCxRQUFRLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNyRSxDQUFDLENBQUM7YUFDRCxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDWCw4QkFBOEI7WUFDOUIsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsc0NBQXNDLEVBQ3hELFFBQVEsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxHQUFHLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1lBRW5FLGtFQUFrRTtZQUNsRSxHQUFHLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztZQUMzQixHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2xDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztDQUNLLENBQUM7QUFFVDs7R0FFRztBQUVILFFBQVEsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDO0lBQzFCOzs7O09BSUc7S0FDRixNQUFNLENBQUMsWUFBWSxDQUFDO0lBQ3JCOzs7O09BSUc7S0FDRixNQUFNLENBQUMsU0FBUyxDQUFDO0lBQ2xCOzs7O09BSUc7S0FDRixNQUFNLENBQUMsUUFBUSxDQUFDO0lBQ2pCOzs7O09BSUc7S0FDRixNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFaEIsUUFBUSxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUM7SUFDM0I7Ozs7T0FJRztLQUNGLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUV4QixlQUFlLE9BQU8sQ0FBQyJ9
|
|
255
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvZXh0ZW5kL2NvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxRQUFRLE1BQU0sV0FBVyxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDakMsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQ0wsS0FBSyxFQUFFLE9BQU8sSUFBSSxjQUFjLEdBRWpDLE1BQU0sYUFBYSxDQUFDO0FBYXJCLE9BQU8sb0JBQW9CLENBQUM7QUFFNUIsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQ3BDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUNwQyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUM3QyxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDdEMsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUNwRCxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7QUFPNUMsTUFBTSxDQUFDLE9BQU8sT0FBTyxPQUFRLFNBQVEsY0FBYztJQUtqRDs7O09BR0c7SUFDSCxTQUFTLENBQVM7SUFDbEI7OztPQUdHO0lBQ0gsb0JBQW9CLENBQVM7SUFFN0I7O09BRUc7SUFDSCxJQUFJLE9BQU87UUFDVCxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLE9BQU8sR0FBRyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLElBQUksRUFB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
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Router } from '@eggjs/core';
|
|
2
|
+
import type { HttpClientRequestURL, HttpClientRequestOptions, HttpClient } from '../../lib/core/httpclient.js';
|
|
3
|
+
import type { ContextHttpClient } from '../../lib/core/context_httpclient.js';
|
|
4
|
+
import type Helper from './helper.js';
|
|
5
|
+
import type { EggLogger } from 'egg-logger';
|
|
6
|
+
declare module '@eggjs/core' {
|
|
7
|
+
interface Context {
|
|
8
|
+
curl(url: HttpClientRequestURL, options?: HttpClientRequestOptions): ReturnType<HttpClient['request']>;
|
|
9
|
+
get router(): Router;
|
|
10
|
+
set router(val: Router);
|
|
11
|
+
get helper(): Helper;
|
|
12
|
+
get httpclient(): ContextHttpClient;
|
|
13
|
+
get httpClient(): ContextHttpClient;
|
|
14
|
+
getLogger(name: string): EggLogger;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -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,43 @@
|
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9leHRlbmQvaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sR0FBRyxNQUFNLFVBQVUsQ0FBQztBQUMzQixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUV4RTs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE9BQU8sT0FBTyxNQUFPLFNBQVEsZ0JBQWdCO0lBQ2xEOzs7Ozs7Ozs7Ozs7O09BYUc7SUFDSCxPQUFPLENBQUMsSUFBWSxFQUFFLE1BQTJCO1FBQy9DLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7OztPQVlHO0lBQ0gsTUFBTSxDQUFDLElBQVksRUFBRSxNQUEyQjtRQUM5QyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ2xHLENBQUM7Q0FDRiJ9
|
|
@@ -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
|
+
}
|