@eggjs/tegg-aop-runtime 4.0.0-beta.2 → 4.0.0-beta.4
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/package.json +11 -11
- package/src/AspectExecutor.d.ts +7 -2
- package/src/AspectExecutor.js +38 -16
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eggjs/tegg-aop-runtime",
|
|
3
|
-
"version": "4.0.0-beta.
|
|
3
|
+
"version": "4.0.0-beta.4",
|
|
4
4
|
"description": "tegg aop",
|
|
5
5
|
"eggModule": {
|
|
6
6
|
"name": "teggAopRuntime"
|
|
@@ -47,22 +47,22 @@
|
|
|
47
47
|
"access": "public"
|
|
48
48
|
},
|
|
49
49
|
"dependencies": {
|
|
50
|
-
"@eggjs/aop-decorator": "^4.0.0-beta.
|
|
51
|
-
"@eggjs/core-decorator": "^4.0.0-beta.
|
|
52
|
-
"@eggjs/tegg-common-util": "^4.0.0-beta.
|
|
53
|
-
"@eggjs/tegg-lifecycle": "^4.0.0-beta.
|
|
54
|
-
"@eggjs/tegg-metadata": "^4.0.0-beta.
|
|
55
|
-
"@eggjs/tegg-runtime": "^4.0.0-beta.
|
|
56
|
-
"@eggjs/tegg-types": "^4.0.0-beta.
|
|
50
|
+
"@eggjs/aop-decorator": "^4.0.0-beta.4",
|
|
51
|
+
"@eggjs/core-decorator": "^4.0.0-beta.4",
|
|
52
|
+
"@eggjs/tegg-common-util": "^4.0.0-beta.4",
|
|
53
|
+
"@eggjs/tegg-lifecycle": "^4.0.0-beta.4",
|
|
54
|
+
"@eggjs/tegg-metadata": "^4.0.0-beta.4",
|
|
55
|
+
"@eggjs/tegg-runtime": "^4.0.0-beta.4",
|
|
56
|
+
"@eggjs/tegg-types": "^4.0.0-beta.4",
|
|
57
57
|
"koa-compose": "^4.1.0"
|
|
58
58
|
},
|
|
59
59
|
"devDependencies": {
|
|
60
|
-
"@eggjs/module-test-util": "^4.0.0-beta.
|
|
61
|
-
"@eggjs/tegg-loader": "^4.0.0-beta.
|
|
60
|
+
"@eggjs/module-test-util": "^4.0.0-beta.4",
|
|
61
|
+
"@eggjs/tegg-loader": "^4.0.0-beta.4",
|
|
62
62
|
"@types/koa-compose": "3",
|
|
63
63
|
"@types/node": "22",
|
|
64
64
|
"ts-node": "10",
|
|
65
65
|
"typescript": "5"
|
|
66
66
|
},
|
|
67
|
-
"gitHead": "
|
|
67
|
+
"gitHead": "9ba90bed3ab9f641ceaa6a7db560095817b7e52c"
|
|
68
68
|
}
|
package/src/AspectExecutor.d.ts
CHANGED
|
@@ -1,8 +1,13 @@
|
|
|
1
|
-
import type { AspectAdvice, IAdvice } from '@eggjs/tegg-types';
|
|
2
|
-
|
|
1
|
+
import type { AdviceContext, AspectAdvice, IAdvice } from '@eggjs/tegg-types';
|
|
2
|
+
declare class InternalAdviceContext<T = Record<string, IAdvice>> {
|
|
3
|
+
private readonly state;
|
|
3
4
|
that: T;
|
|
4
5
|
method: PropertyKey;
|
|
5
6
|
args: any[];
|
|
7
|
+
constructor(that: T, method: PropertyKey, args: any[]);
|
|
8
|
+
get(key: PropertyKey): any;
|
|
9
|
+
set(key: PropertyKey, value: any): this;
|
|
10
|
+
createCallContext(adviceParams?: any): AdviceContext<T>;
|
|
6
11
|
}
|
|
7
12
|
export declare class AspectExecutor {
|
|
8
13
|
obj: object;
|
package/src/AspectExecutor.js
CHANGED
|
@@ -1,4 +1,30 @@
|
|
|
1
1
|
import compose from 'koa-compose';
|
|
2
|
+
class InternalAdviceContext {
|
|
3
|
+
state;
|
|
4
|
+
that;
|
|
5
|
+
method;
|
|
6
|
+
args;
|
|
7
|
+
constructor(that, method, args) {
|
|
8
|
+
this.state = new Map();
|
|
9
|
+
this.that = that;
|
|
10
|
+
this.method = method;
|
|
11
|
+
this.args = args;
|
|
12
|
+
}
|
|
13
|
+
get(key) {
|
|
14
|
+
return this.state.get(key);
|
|
15
|
+
}
|
|
16
|
+
set(key, value) {
|
|
17
|
+
this.state.set(key, value);
|
|
18
|
+
return this;
|
|
19
|
+
}
|
|
20
|
+
createCallContext(adviceParams) {
|
|
21
|
+
return Object.create(this, {
|
|
22
|
+
adviceParams: {
|
|
23
|
+
value: adviceParams,
|
|
24
|
+
},
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
}
|
|
2
28
|
export class AspectExecutor {
|
|
3
29
|
obj;
|
|
4
30
|
method;
|
|
@@ -9,11 +35,7 @@ export class AspectExecutor {
|
|
|
9
35
|
this.aspectAdviceList = aspectAdviceList;
|
|
10
36
|
}
|
|
11
37
|
async execute(...args) {
|
|
12
|
-
const ctx =
|
|
13
|
-
that: this.obj,
|
|
14
|
-
method: this.method,
|
|
15
|
-
args,
|
|
16
|
-
};
|
|
38
|
+
const ctx = new InternalAdviceContext(this.obj, this.method, args);
|
|
17
39
|
await this.beforeCall(ctx);
|
|
18
40
|
try {
|
|
19
41
|
const result = await this.doExecute(ctx);
|
|
@@ -39,9 +61,9 @@ export class AspectExecutor {
|
|
|
39
61
|
* 先保证args可以生效
|
|
40
62
|
* 不改动其余地方
|
|
41
63
|
*/
|
|
42
|
-
const
|
|
43
|
-
await advice.beforeCall(
|
|
44
|
-
ctx.args =
|
|
64
|
+
const fnCtx = ctx.createCallContext(aspectAdvice.adviceParams);
|
|
65
|
+
await advice.beforeCall(fnCtx);
|
|
66
|
+
ctx.args = fnCtx.args;
|
|
45
67
|
}
|
|
46
68
|
}
|
|
47
69
|
}
|
|
@@ -49,7 +71,8 @@ export class AspectExecutor {
|
|
|
49
71
|
for (const aspectAdvice of this.aspectAdviceList) {
|
|
50
72
|
const advice = ctx.that[aspectAdvice.name];
|
|
51
73
|
if (advice.afterReturn) {
|
|
52
|
-
|
|
74
|
+
const fnCtx = ctx.createCallContext(aspectAdvice.adviceParams);
|
|
75
|
+
await advice.afterReturn(fnCtx, result);
|
|
53
76
|
}
|
|
54
77
|
}
|
|
55
78
|
}
|
|
@@ -57,7 +80,8 @@ export class AspectExecutor {
|
|
|
57
80
|
for (const aspectAdvice of this.aspectAdviceList) {
|
|
58
81
|
const advice = ctx.that[aspectAdvice.name];
|
|
59
82
|
if (advice.afterThrow) {
|
|
60
|
-
|
|
83
|
+
const fnCtx = ctx.createCallContext(aspectAdvice.adviceParams);
|
|
84
|
+
await advice.afterThrow(fnCtx, error);
|
|
61
85
|
}
|
|
62
86
|
}
|
|
63
87
|
}
|
|
@@ -65,7 +89,8 @@ export class AspectExecutor {
|
|
|
65
89
|
for (const aspectAdvice of this.aspectAdviceList) {
|
|
66
90
|
const advice = ctx.that[aspectAdvice.name];
|
|
67
91
|
if (advice.afterFinally) {
|
|
68
|
-
|
|
92
|
+
const fnCtx = ctx.createCallContext(aspectAdvice.adviceParams);
|
|
93
|
+
await advice.afterFinally(fnCtx);
|
|
69
94
|
}
|
|
70
95
|
}
|
|
71
96
|
}
|
|
@@ -80,10 +105,7 @@ export class AspectExecutor {
|
|
|
80
105
|
const fn = advice.around;
|
|
81
106
|
if (fn) {
|
|
82
107
|
functions.push(async (ctx, next) => {
|
|
83
|
-
const fnCtx =
|
|
84
|
-
...ctx,
|
|
85
|
-
adviceParams: aspectAdvice.adviceParams,
|
|
86
|
-
};
|
|
108
|
+
const fnCtx = ctx.createCallContext(aspectAdvice.adviceParams);
|
|
87
109
|
return await fn.call(advice, fnCtx, next);
|
|
88
110
|
});
|
|
89
111
|
}
|
|
@@ -92,4 +114,4 @@ export class AspectExecutor {
|
|
|
92
114
|
return compose(functions)(ctx);
|
|
93
115
|
}
|
|
94
116
|
}
|
|
95
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
117
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXNwZWN0RXhlY3V0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJBc3BlY3RFeGVjdXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLE9BQU8sTUFBTSxhQUFhLENBQUM7QUFHbEMsTUFBTSxxQkFBcUI7SUFDUixLQUFLLENBQXdCO0lBQzlDLElBQUksQ0FBSTtJQUNSLE1BQU0sQ0FBYztJQUNwQixJQUFJLENBQVE7SUFFWixZQUNFLElBQU8sRUFDUCxNQUFtQixFQUNuQixJQUFXO1FBRVgsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFFRCxHQUFHLENBQUMsR0FBZ0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsR0FBRyxDQUFDLEdBQWdCLEVBQUUsS0FBVTtRQUM5QixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDM0IsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsWUFBa0I7UUFDbEMsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRTtZQUN6QixZQUFZLEVBQUU7Z0JBQ1osS0FBSyxFQUFFLFlBQVk7YUFDcEI7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sY0FBYztJQUN6QixHQUFHLENBQVM7SUFDWixNQUFNLENBQWM7SUFDcEIsZ0JBQWdCLENBQTBCO0lBRTFDLFlBQVksR0FBVyxFQUFFLE1BQW1CLEVBQUUsZ0JBQXlDO1FBQ3JGLElBQUksQ0FBQyxHQUFH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
|