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,2 +1,154 @@
|
|
|
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 { EggLogger } from 'egg-logger';
|
|
4
|
+
import type { Application } from '../../lib/application.js';
|
|
5
|
+
import type { HttpClientRequestURL, HttpClientRequestOptions, HttpClient } from '../../lib/core/httpclient.js';
|
|
6
|
+
import type { ContextHttpClient } from '../../lib/core/context_httpclient.js';
|
|
7
|
+
import type { BaseContextClass } from '../../lib//core/base_context_class.js';
|
|
8
|
+
import Request from './request.js';
|
|
9
|
+
import Response from './response.js';
|
|
10
|
+
import type Helper from './helper.js';
|
|
11
|
+
import './context.types.js';
|
|
12
|
+
interface Cookies extends ContextCookies {
|
|
13
|
+
request: any;
|
|
14
|
+
response: any;
|
|
15
|
+
}
|
|
16
|
+
export default class Context extends EggCoreContext {
|
|
17
|
+
app: Application;
|
|
18
|
+
request: Request;
|
|
19
|
+
service: BaseContextClass;
|
|
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 {ContextHttpClient} the wrapper httpclient instance
|
|
38
|
+
*/
|
|
39
|
+
get httpclient(): ContextHttpClient;
|
|
40
|
+
/**
|
|
41
|
+
* Alias to {@link Context#httpclient}
|
|
42
|
+
*/
|
|
43
|
+
get httpClient(): ContextHttpClient;
|
|
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: ContextDelegation) => Promise<void>, taskName?: string): void;
|
|
151
|
+
_runInBackground(scope: (ctx: ContextDelegation) => Promise<void>, taskName: string): Promise<void>;
|
|
152
|
+
}
|
|
153
|
+
export type ContextDelegation = EggCoreContextDelegation & Context & Pick<Request, 'acceptJSON' | 'queries' | 'accept' | 'ip'> & Pick<Response, 'realStatus'>;
|
|
154
|
+
export {};
|
|
@@ -3,27 +3,38 @@ 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
|
-
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
const CONTEXT_HTTPCLIENT = Symbol('
|
|
16
|
-
const CONTEXT_ROUTER = Symbol('
|
|
17
|
-
|
|
10
|
+
require("./context.types.js");
|
|
11
|
+
const HELPER = Symbol('ctx helper');
|
|
12
|
+
const LOCALS = Symbol('ctx locals');
|
|
13
|
+
const LOCALS_LIST = Symbol('ctx localsList');
|
|
14
|
+
const COOKIES = Symbol('ctx cookies');
|
|
15
|
+
const CONTEXT_HTTPCLIENT = Symbol('ctx httpclient');
|
|
16
|
+
const CONTEXT_ROUTER = Symbol('ctx router');
|
|
17
|
+
class Context extends core_1.Context {
|
|
18
|
+
/**
|
|
19
|
+
* Request start time
|
|
20
|
+
* @member {Number} Context#starttime
|
|
21
|
+
*/
|
|
22
|
+
starttime;
|
|
23
|
+
/**
|
|
24
|
+
* Request start timer using `performance.now()`
|
|
25
|
+
* @member {Number} Context#performanceStarttime
|
|
26
|
+
*/
|
|
27
|
+
performanceStarttime;
|
|
18
28
|
/**
|
|
19
29
|
* Get the current visitor's cookies.
|
|
20
30
|
*/
|
|
21
31
|
get cookies() {
|
|
22
|
-
|
|
23
|
-
|
|
32
|
+
let cookies = this[COOKIES];
|
|
33
|
+
if (!cookies) {
|
|
34
|
+
this[COOKIES] = cookies = new this.app.ContextCookies(this, this.app.keys, this.app.config.cookies);
|
|
24
35
|
}
|
|
25
|
-
return
|
|
26
|
-
}
|
|
36
|
+
return cookies;
|
|
37
|
+
}
|
|
27
38
|
/**
|
|
28
39
|
* Get a wrapper httpclient instance contain ctx in the hold request process
|
|
29
40
|
*
|
|
@@ -34,7 +45,13 @@ const Context = {
|
|
|
34
45
|
this[CONTEXT_HTTPCLIENT] = new this.app.ContextHttpClient(this);
|
|
35
46
|
}
|
|
36
47
|
return this[CONTEXT_HTTPCLIENT];
|
|
37
|
-
}
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Alias to {@link Context#httpclient}
|
|
51
|
+
*/
|
|
52
|
+
get httpClient() {
|
|
53
|
+
return this.httpclient;
|
|
54
|
+
}
|
|
38
55
|
/**
|
|
39
56
|
* Shortcut for httpclient.curl
|
|
40
57
|
*
|
|
@@ -43,9 +60,9 @@ const Context = {
|
|
|
43
60
|
* @param {Object} [options] - options for request.
|
|
44
61
|
* @return {Object} see {@link ContextHttpClient#curl}
|
|
45
62
|
*/
|
|
46
|
-
curl(url, options) {
|
|
47
|
-
return this.httpclient.curl(url, options);
|
|
48
|
-
}
|
|
63
|
+
async curl(url, options) {
|
|
64
|
+
return await this.httpclient.curl(url, options);
|
|
65
|
+
}
|
|
49
66
|
/**
|
|
50
67
|
* Alias to {@link Application#router}
|
|
51
68
|
*
|
|
@@ -57,18 +74,18 @@ const Context = {
|
|
|
57
74
|
* ```
|
|
58
75
|
*/
|
|
59
76
|
get router() {
|
|
60
|
-
if (
|
|
61
|
-
this[CONTEXT_ROUTER]
|
|
77
|
+
if (this[CONTEXT_ROUTER]) {
|
|
78
|
+
return this[CONTEXT_ROUTER];
|
|
62
79
|
}
|
|
63
|
-
return this
|
|
64
|
-
}
|
|
80
|
+
return this.app.router;
|
|
81
|
+
}
|
|
65
82
|
/**
|
|
66
83
|
* Set router to Context, only use on EggRouter
|
|
67
|
-
* @param {
|
|
84
|
+
* @param {Router} val router instance
|
|
68
85
|
*/
|
|
69
86
|
set router(val) {
|
|
70
87
|
this[CONTEXT_ROUTER] = val;
|
|
71
|
-
}
|
|
88
|
+
}
|
|
72
89
|
/**
|
|
73
90
|
* Get helper instance from {@link Application#Helper}
|
|
74
91
|
*
|
|
@@ -80,37 +97,20 @@ const Context = {
|
|
|
80
97
|
this[HELPER] = new this.app.Helper(this);
|
|
81
98
|
}
|
|
82
99
|
return this[HELPER];
|
|
83
|
-
}
|
|
100
|
+
}
|
|
84
101
|
/**
|
|
85
102
|
* Wrap app.loggers with context information,
|
|
86
103
|
* if a custom logger is defined by naming aLogger, then you can `ctx.getLogger('aLogger')`
|
|
87
104
|
*
|
|
88
105
|
* @param {String} name - logger name
|
|
89
|
-
* @return {Logger} logger
|
|
90
106
|
*/
|
|
91
107
|
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
|
-
},
|
|
108
|
+
return this.app.getLogger(name);
|
|
109
|
+
}
|
|
110
110
|
/**
|
|
111
|
-
* Logger for Application
|
|
111
|
+
* Logger for Application
|
|
112
112
|
*
|
|
113
|
-
* @member {
|
|
113
|
+
* @member {Logger} Context#logger
|
|
114
114
|
* @since 1.0.0
|
|
115
115
|
* @example
|
|
116
116
|
* ```js
|
|
@@ -120,17 +120,16 @@ const Context = {
|
|
|
120
120
|
*/
|
|
121
121
|
get logger() {
|
|
122
122
|
return this.getLogger('logger');
|
|
123
|
-
}
|
|
123
|
+
}
|
|
124
124
|
/**
|
|
125
|
-
* Logger for frameworks and plugins
|
|
126
|
-
* wrapping app.coreLogger with context infomation
|
|
125
|
+
* Logger for frameworks and plugins
|
|
127
126
|
*
|
|
128
|
-
* @member {
|
|
127
|
+
* @member {Logger} Context#coreLogger
|
|
129
128
|
* @since 1.0.0
|
|
130
129
|
*/
|
|
131
130
|
get coreLogger() {
|
|
132
131
|
return this.getLogger('coreLogger');
|
|
133
|
-
}
|
|
132
|
+
}
|
|
134
133
|
/**
|
|
135
134
|
* locals is an object for view, you can use `app.locals` and `ctx.locals` to set variables,
|
|
136
135
|
* which will be used as data when view is rendering.
|
|
@@ -162,18 +161,17 @@ const Context = {
|
|
|
162
161
|
if (!this[LOCALS]) {
|
|
163
162
|
this[LOCALS] = (0, utility_1.assign)({}, this.app.locals);
|
|
164
163
|
}
|
|
165
|
-
if (this[LOCALS_LIST] && this[LOCALS_LIST].length) {
|
|
164
|
+
if (Array.isArray(this[LOCALS_LIST]) && this[LOCALS_LIST].length > 0) {
|
|
166
165
|
(0, utility_1.assign)(this[LOCALS], this[LOCALS_LIST]);
|
|
167
166
|
this[LOCALS_LIST] = null;
|
|
168
167
|
}
|
|
169
168
|
return this[LOCALS];
|
|
170
|
-
}
|
|
169
|
+
}
|
|
171
170
|
set locals(val) {
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
},
|
|
171
|
+
const localsList = this[LOCALS_LIST] ?? [];
|
|
172
|
+
localsList.push(val);
|
|
173
|
+
this[LOCALS_LIST] = localsList;
|
|
174
|
+
}
|
|
177
175
|
/**
|
|
178
176
|
* alias to {@link Context#locals}, compatible with koa that use this variable
|
|
179
177
|
* @member {Object} state
|
|
@@ -181,10 +179,10 @@ const Context = {
|
|
|
181
179
|
*/
|
|
182
180
|
get state() {
|
|
183
181
|
return this.locals;
|
|
184
|
-
}
|
|
182
|
+
}
|
|
185
183
|
set state(val) {
|
|
186
184
|
this.locals = val;
|
|
187
|
-
}
|
|
185
|
+
}
|
|
188
186
|
/**
|
|
189
187
|
* Run async function in the background
|
|
190
188
|
* @param {Function} scope - the first args is ctx
|
|
@@ -197,37 +195,38 @@ const Context = {
|
|
|
197
195
|
* });
|
|
198
196
|
* ```
|
|
199
197
|
*/
|
|
200
|
-
runInBackground(scope) {
|
|
198
|
+
runInBackground(scope, taskName) {
|
|
201
199
|
// try to use custom function name first
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
200
|
+
if (!taskName) {
|
|
201
|
+
taskName = Reflect.get(scope, '_name') || scope.name || core_1.utils.getCalleeFromStack(true);
|
|
202
|
+
}
|
|
203
|
+
// use setImmediate to ensure all sync logic will run async
|
|
204
|
+
setImmediate(() => {
|
|
205
|
+
this._runInBackground(scope, taskName);
|
|
206
|
+
});
|
|
207
|
+
}
|
|
206
208
|
// let plugins or frameworks to reuse _runInBackground in some cases.
|
|
207
209
|
// 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 => {
|
|
210
|
+
async _runInBackground(scope, taskName) {
|
|
211
|
+
const startTime = (0, performance_ms_1.now)();
|
|
212
|
+
try {
|
|
213
|
+
await scope(this);
|
|
214
|
+
this.coreLogger.info('[egg:background] task:%s success (%dms)', taskName, (0, performance_ms_1.diff)(startTime));
|
|
215
|
+
}
|
|
216
|
+
catch (err) {
|
|
219
217
|
// background task process log
|
|
220
|
-
|
|
218
|
+
this.coreLogger.info('[egg:background] task:%s fail (%dms)', taskName, (0, performance_ms_1.diff)(startTime));
|
|
221
219
|
// emit error when promise catch, and set err.runInBackground flag
|
|
222
220
|
err.runInBackground = true;
|
|
223
|
-
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
}
|
|
221
|
+
this.app.emit('error', err, this);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
exports.default = Context;
|
|
227
226
|
/**
|
|
228
227
|
* Context delegation.
|
|
229
228
|
*/
|
|
230
|
-
(0, delegates_1.default)(Context, 'request')
|
|
229
|
+
(0, delegates_1.default)(Context.prototype, 'request')
|
|
231
230
|
/**
|
|
232
231
|
* @member {Boolean} Context#acceptJSON
|
|
233
232
|
* @see Request#acceptJSON
|
|
@@ -252,12 +251,11 @@ const Context = {
|
|
|
252
251
|
* @since 1.0.0
|
|
253
252
|
*/
|
|
254
253
|
.access('ip');
|
|
255
|
-
(0, delegates_1.default)(Context, 'response')
|
|
254
|
+
(0, delegates_1.default)(Context.prototype, 'response')
|
|
256
255
|
/**
|
|
257
256
|
* @member {Number} Context#realStatus
|
|
258
257
|
* @see Response#realStatus
|
|
259
258
|
* @since 1.0.0
|
|
260
259
|
*/
|
|
261
260
|
.access('realStatus');
|
|
262
|
-
|
|
263
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvZXh0ZW5kL2NvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxxREFBOEM7QUFDOUMsMERBQWlDO0FBQ2pDLHFDQUFpQztBQUNqQyxzQ0FBb0M7QUFFcEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDeEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDeEMsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7QUFDakQsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFDMUMsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDakQsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztBQUN4RCxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUVoRCxNQUFNLE9BQU8sR0FBRztJQUNkOztPQUVHO0lBQ0gsSUFBSSxPQUFPO1FBQ1QsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM1RixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUFJLFVBQVU7UUFDWixJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQztZQUM5QixJ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
|
|
261
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvZXh0ZW5kL2NvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwwREFBaUM7QUFDakMscUNBQWlDO0FBQ2pDLG1EQUEyQztBQUMzQyxzQ0FHcUI7QUFhckIsOEJBQTRCO0FBRTVCLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUNwQyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDcEMsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDN0MsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQ3RDLE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDcEQsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBTzVDLE1BQXFCLE9BQVEsU0FBUSxjQUFjO0lBS2pEOzs7T0FHRztJQUNILFNBQVMsQ0FBUztJQUNsQjs7O09BR0c7SUFDSCxvQkFBb0IsQ0FBUztJQUU3Qjs7T0FFRztJQUNILElBQUksT0FBTztRQUNULElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsT0FBTyxHQUFHLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3RHLENBQUM7UUFDRCxPQUFPLE9BQWtCLENBQUM7SUFDNUIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUFJLFVBQVU7UUFDWixJ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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,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvZXh0ZW5kL2NvbnRleHQudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
|
|
@@ -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
|