@eggjs/tegg-aop-runtime 3.1.0 → 3.2.2
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 +14 -13
- package/dist/aop-runtime/index.d.ts +0 -3
- package/dist/aop-runtime/index.js +0 -20
- package/dist/aop-runtime/src/AspectExecutor.d.ts +0 -13
- package/dist/aop-runtime/src/AspectExecutor.js +0 -84
- package/dist/aop-runtime/src/EggObjectAopHook.d.ts +0 -6
- package/dist/aop-runtime/src/EggObjectAopHook.js +0 -39
- package/dist/aop-runtime/src/EggPrototypeCrossCutHook.d.ts +0 -8
- package/dist/aop-runtime/src/EggPrototypeCrossCutHook.js +0 -16
- package/dist/aop-runtime/src/LoadUnitAopHook.d.ts +0 -12
- package/dist/aop-runtime/src/LoadUnitAopHook.js +0 -40
- package/dist/aop-runtime/test/aop-runtime.test.d.ts +0 -1
- package/dist/aop-runtime/test/aop-runtime.test.js +0 -132
- package/dist/aop-runtime/test/fixtures/modules/hello_succeed/Hello.d.ts +0 -30
- package/dist/aop-runtime/test/fixtures/modules/hello_succeed/Hello.js +0 -131
- package/dist/aop-runtime/test/fixtures/modules/should_throw/Hello.d.ts +0 -4
- package/dist/aop-runtime/test/fixtures/modules/should_throw/Hello.js +0 -41
- package/dist/test-util/CoreTestHelper.d.ts +0 -14
- package/dist/test-util/CoreTestHelper.js +0 -43
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eggjs/tegg-aop-runtime",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.2.2",
|
|
4
4
|
"description": "tegg aop",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"eggModule": {
|
|
@@ -19,11 +19,11 @@
|
|
|
19
19
|
"aop"
|
|
20
20
|
],
|
|
21
21
|
"scripts": {
|
|
22
|
-
"
|
|
22
|
+
"test": "cross-env NODE_ENV=test NODE_OPTIONS='--no-deprecation' mocha",
|
|
23
|
+
"clean": "tsc -b --clean && rm -rf dist",
|
|
23
24
|
"tsc": "npm run clean && tsc -p ./tsconfig.json",
|
|
24
25
|
"tsc:pub": "npm run clean && tsc -p ./tsconfig.pub.json",
|
|
25
|
-
"prepublishOnly": "npm run tsc:pub"
|
|
26
|
-
"autod": "autod"
|
|
26
|
+
"prepublishOnly": "npm run tsc:pub"
|
|
27
27
|
},
|
|
28
28
|
"author": "killagu <killa123@126.com>",
|
|
29
29
|
"license": "MIT",
|
|
@@ -43,17 +43,18 @@
|
|
|
43
43
|
"access": "public"
|
|
44
44
|
},
|
|
45
45
|
"dependencies": {
|
|
46
|
-
"@eggjs/aop-decorator": "^3.
|
|
47
|
-
"@eggjs/core-decorator": "^3.
|
|
48
|
-
"@eggjs/tegg-common-util": "^
|
|
49
|
-
"@eggjs/tegg-lifecycle": "^
|
|
50
|
-
"@eggjs/tegg-metadata": "^3.
|
|
51
|
-
"@eggjs/tegg-runtime": "^3.
|
|
46
|
+
"@eggjs/aop-decorator": "^3.2.2",
|
|
47
|
+
"@eggjs/core-decorator": "^3.2.2",
|
|
48
|
+
"@eggjs/tegg-common-util": "^3.2.2",
|
|
49
|
+
"@eggjs/tegg-lifecycle": "^3.2.2",
|
|
50
|
+
"@eggjs/tegg-metadata": "^3.2.2",
|
|
51
|
+
"@eggjs/tegg-runtime": "^3.2.2",
|
|
52
52
|
"koa-compose": "^4.1.0"
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
55
|
-
"@eggjs/module-test-util": "^3.
|
|
56
|
-
"@eggjs/tegg-loader": "^3.
|
|
55
|
+
"@eggjs/module-test-util": "^3.2.2",
|
|
56
|
+
"@eggjs/tegg-loader": "^3.2.2",
|
|
57
|
+
"mm": "^3.2.1"
|
|
57
58
|
},
|
|
58
|
-
"gitHead": "
|
|
59
|
+
"gitHead": "1db4e5320a0ea19b450df7d99ab7939f3ad48f6e"
|
|
59
60
|
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./src/EggPrototypeCrossCutHook"), exports);
|
|
18
|
-
__exportStar(require("./src/EggObjectAopHook"), exports);
|
|
19
|
-
__exportStar(require("./src/LoadUnitAopHook"), exports);
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaUVBQStDO0FBQy9DLHlEQUF1QztBQUN2Qyx3REFBc0MifQ==
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { AdviceContext, AspectAdvice } from '@eggjs/aop-decorator';
|
|
2
|
-
export declare class AspectExecutor {
|
|
3
|
-
obj: Object;
|
|
4
|
-
method: PropertyKey;
|
|
5
|
-
aspectAdviceList: readonly AspectAdvice[];
|
|
6
|
-
constructor(obj: object, method: PropertyKey, aspectAdviceList: readonly AspectAdvice[]);
|
|
7
|
-
execute(...args: any[]): Promise<void>;
|
|
8
|
-
beforeCall(ctx: AdviceContext): Promise<void>;
|
|
9
|
-
afterReturn(ctx: AdviceContext, result: any): Promise<void>;
|
|
10
|
-
afterThrow(ctx: AdviceContext, error: Error): Promise<void>;
|
|
11
|
-
afterFinally(ctx: AdviceContext): Promise<void>;
|
|
12
|
-
doExecute(ctx: AdviceContext): Promise<void>;
|
|
13
|
-
}
|
|
@@ -1,84 +0,0 @@
|
|
|
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
|
-
exports.AspectExecutor = void 0;
|
|
7
|
-
const koa_compose_1 = __importDefault(require("koa-compose"));
|
|
8
|
-
class AspectExecutor {
|
|
9
|
-
constructor(obj, method, aspectAdviceList) {
|
|
10
|
-
this.obj = obj;
|
|
11
|
-
this.method = method;
|
|
12
|
-
this.aspectAdviceList = aspectAdviceList;
|
|
13
|
-
}
|
|
14
|
-
async execute(...args) {
|
|
15
|
-
const ctx = {
|
|
16
|
-
that: this.obj,
|
|
17
|
-
method: this.method,
|
|
18
|
-
args,
|
|
19
|
-
};
|
|
20
|
-
await this.beforeCall(ctx);
|
|
21
|
-
try {
|
|
22
|
-
const result = await this.doExecute(ctx);
|
|
23
|
-
await this.afterReturn(ctx, result);
|
|
24
|
-
return result;
|
|
25
|
-
}
|
|
26
|
-
catch (e) {
|
|
27
|
-
await this.afterThrow(ctx, e);
|
|
28
|
-
throw e;
|
|
29
|
-
}
|
|
30
|
-
finally {
|
|
31
|
-
await this.afterFinally(ctx);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
async beforeCall(ctx) {
|
|
35
|
-
for (const aspectAdvice of this.aspectAdviceList) {
|
|
36
|
-
const advice = ctx.that[aspectAdvice.name];
|
|
37
|
-
if (advice.beforeCall) {
|
|
38
|
-
await advice.beforeCall(ctx);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
async afterReturn(ctx, result) {
|
|
43
|
-
for (const aspectAdvice of this.aspectAdviceList) {
|
|
44
|
-
const advice = ctx.that[aspectAdvice.name];
|
|
45
|
-
if (advice.afterReturn) {
|
|
46
|
-
await advice.afterReturn(ctx, result);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
async afterThrow(ctx, error) {
|
|
51
|
-
for (const aspectAdvice of this.aspectAdviceList) {
|
|
52
|
-
const advice = ctx.that[aspectAdvice.name];
|
|
53
|
-
if (advice.afterThrow) {
|
|
54
|
-
await advice.afterThrow(ctx, error);
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
async afterFinally(ctx) {
|
|
59
|
-
for (const aspectAdvice of this.aspectAdviceList) {
|
|
60
|
-
const advice = ctx.that[aspectAdvice.name];
|
|
61
|
-
if (advice.afterFinally) {
|
|
62
|
-
await advice.afterFinally(ctx);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
async doExecute(ctx) {
|
|
67
|
-
const lastCall = () => {
|
|
68
|
-
const originMethod = Object.getPrototypeOf(this.obj)[this.method];
|
|
69
|
-
return Reflect.apply(originMethod, ctx.that, ctx.args);
|
|
70
|
-
};
|
|
71
|
-
const functions = [];
|
|
72
|
-
for (const aspectAdvice of this.aspectAdviceList) {
|
|
73
|
-
const advice = ctx.that[aspectAdvice.name];
|
|
74
|
-
const fn = advice.around;
|
|
75
|
-
if (fn) {
|
|
76
|
-
functions.push(fn.bind(advice));
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
functions.push(lastCall);
|
|
80
|
-
return (0, koa_compose_1.default)(functions)(ctx);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
exports.AspectExecutor = AspectExecutor;
|
|
84
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXNwZWN0RXhlY3V0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvQXNwZWN0RXhlY3V0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsOERBQWtDO0FBR2xDLE1BQWEsY0FBYztJQUt6QixZQUFZLEdBQVcsRUFBRSxNQUFtQixFQUFFLGdCQUF5QztRQUNyRixJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNmLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztJQUMzQyxDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQVc7UUFDMUIsTUFBTSxHQUFHLEdBQWtCO1lBQ3pCLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRztZQUNkLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNuQixJQUFJO1NBQ0wsQ0FBQztRQUNGLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzQixJQUFJO1lBQ0YsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3pDLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDcEMsT0FBTyxNQUFNLENBQUM7U0FDZjtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM5QixNQUFNLENBQUMsQ0FBQztTQUNUO2dCQUFTO1lBQ1IsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQzlCO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBa0I7UUFDakMsS0FBSyxNQUFNLFlBQVksSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVB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
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { LifecycleHook } from '@eggjs/tegg-lifecycle';
|
|
2
|
-
import { EggObject, EggObjectLifeCycleContext } from '@eggjs/tegg-runtime';
|
|
3
|
-
export declare class EggObjectAopHook implements LifecycleHook<EggObjectLifeCycleContext, EggObject> {
|
|
4
|
-
private hijackMethods;
|
|
5
|
-
postCreate(_: EggObjectLifeCycleContext, eggObject: EggObject): Promise<void>;
|
|
6
|
-
}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.EggObjectAopHook = void 0;
|
|
4
|
-
const aop_decorator_1 = require("@eggjs/aop-decorator");
|
|
5
|
-
const AspectExecutor_1 = require("./AspectExecutor");
|
|
6
|
-
class EggObjectAopHook {
|
|
7
|
-
hijackMethods(obj, aspectList) {
|
|
8
|
-
for (const aspect of aspectList) {
|
|
9
|
-
const newExecutor = new AspectExecutor_1.AspectExecutor(obj, aspect.method, aspect.adviceList);
|
|
10
|
-
obj[aspect.method] = newExecutor.execute.bind(newExecutor);
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
async postCreate(_, eggObject) {
|
|
14
|
-
const aspectList = eggObject.proto.getMetaData(aop_decorator_1.ASPECT_LIST);
|
|
15
|
-
if (!aspectList || !aspectList.length)
|
|
16
|
-
return;
|
|
17
|
-
const propertyDesc = eggObject.constructor && Reflect.getOwnPropertyDescriptor(eggObject.constructor.prototype, 'obj');
|
|
18
|
-
// process the lazy getter
|
|
19
|
-
if (propertyDesc === null || propertyDesc === void 0 ? void 0 : propertyDesc.get) {
|
|
20
|
-
let obj;
|
|
21
|
-
const self = this;
|
|
22
|
-
Object.defineProperty(eggObject, 'obj', {
|
|
23
|
-
...propertyDesc,
|
|
24
|
-
get() {
|
|
25
|
-
if (!obj) {
|
|
26
|
-
obj = Reflect.apply(propertyDesc.get, eggObject, []);
|
|
27
|
-
self.hijackMethods(obj, aspectList);
|
|
28
|
-
}
|
|
29
|
-
return obj;
|
|
30
|
-
},
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
else {
|
|
34
|
-
this.hijackMethods(eggObject.obj, aspectList);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
exports.EggObjectAopHook = EggObjectAopHook;
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWdnT2JqZWN0QW9wSG9vay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9FZ2dPYmplY3RBb3BIb29rLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLHdEQUEyRDtBQUMzRCxxREFBa0Q7QUFFbEQsTUFBYSxnQkFBZ0I7SUFDbkIsYUFBYSxDQUFDLEdBQVEsRUFBRSxVQUF5QjtRQUN2RCxLQUFLLE1BQU0sTUFBTSxJQUFJLFVBQVUsRUFBRTtZQUMvQixNQUFNLFdBQVcsR0FBRyxJQUFJLCtCQUFjLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzlFLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDNUQ7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUE0QixFQUFFLFNBQW9CO1FBQ2pFLE1BQU0sVUFBVSxHQUE4QixTQUFTLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQywyQkFBVyxDQUFDLENBQUM7UUFDdkYsSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNO1lBQUUsT0FBTztRQUM5QyxNQUFNLFlBQVksR0FBRyxTQUFTLENBQUMsV0FBVyxJQUFJLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUUsQ0FBQztRQUN4SCwwQkFBMEI7UUFDMUIsSUFBSSxZQUFZLGFBQVosWUFBWSx1QkFBWixZQUFZLENBQUUsR0FBRyxFQUFFO1lBQ3JCLElBQUksR0FBRyxDQUFDO1lBQ1IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDO1lBQ2xCLE1BQU0sQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRTtnQkFDdEMsR0FBRyxZQUFZO2dCQUNmLEdBQUc7b0JBQ0QsSUFBSSxDQUFDLEdBQUcsRUFBRTt3QkFDUixHQUFHLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBSSxFQUFFLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQzt3QkFDdEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7cUJBQ3JDO29CQUNELE9BQU8sR0FBRyxDQUFDO2dCQUNiLENBQUM7YUFDRixDQUFDLENBQUM7U0FDSjthQUFNO1lBQ0wsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1NBQy9DO0lBQ0gsQ0FBQztDQUNGO0FBOUJELDRDQThCQyJ9
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { LifecycleHook } from '@eggjs/tegg-lifecycle';
|
|
2
|
-
import { CrosscutAdviceFactory } from '@eggjs/aop-decorator';
|
|
3
|
-
import { EggPrototype, EggPrototypeLifecycleContext } from '@eggjs/tegg-metadata';
|
|
4
|
-
export declare class EggPrototypeCrossCutHook implements LifecycleHook<EggPrototypeLifecycleContext, EggPrototype> {
|
|
5
|
-
private readonly crosscutAdviceFactory;
|
|
6
|
-
constructor(crosscutAdviceFactory: CrosscutAdviceFactory);
|
|
7
|
-
preCreate(ctx: EggPrototypeLifecycleContext): Promise<void>;
|
|
8
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.EggPrototypeCrossCutHook = void 0;
|
|
4
|
-
const aop_decorator_1 = require("@eggjs/aop-decorator");
|
|
5
|
-
class EggPrototypeCrossCutHook {
|
|
6
|
-
constructor(crosscutAdviceFactory) {
|
|
7
|
-
this.crosscutAdviceFactory = crosscutAdviceFactory;
|
|
8
|
-
}
|
|
9
|
-
async preCreate(ctx) {
|
|
10
|
-
if (aop_decorator_1.CrosscutInfoUtil.isCrosscutAdvice(ctx.clazz)) {
|
|
11
|
-
this.crosscutAdviceFactory.registerCrossAdviceClazz(ctx.clazz);
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
exports.EggPrototypeCrossCutHook = EggPrototypeCrossCutHook;
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWdnUHJvdG90eXBlQ3Jvc3NDdXRIb29rLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL0VnZ1Byb3RvdHlwZUNyb3NzQ3V0SG9vay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSx3REFBK0U7QUFHL0UsTUFBYSx3QkFBd0I7SUFHbkMsWUFBWSxxQkFBNEM7UUFDdEQsSUFBSSxDQUFDLHFCQUFxQixHQUFHLHFCQUFxQixDQUFDO0lBQ3JELENBQUM7SUFFRCxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQWlDO1FBQy9DLElBQUksZ0NBQWdCLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2hELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDaEU7SUFDSCxDQUFDO0NBQ0Y7QUFaRCw0REFZQyJ9
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { LifecycleHook } from '@eggjs/tegg-lifecycle';
|
|
2
|
-
import { CrosscutAdviceFactory } from '@eggjs/aop-decorator';
|
|
3
|
-
import { EggProtoImplClass } from '@eggjs/core-decorator';
|
|
4
|
-
import { EggPrototype, LoadUnit, LoadUnitLifecycleContext } from '@eggjs/tegg-metadata';
|
|
5
|
-
export interface EggPrototypeWithClazz extends EggPrototype {
|
|
6
|
-
clazz?: EggProtoImplClass;
|
|
7
|
-
}
|
|
8
|
-
export declare class LoadUnitAopHook implements LifecycleHook<LoadUnitLifecycleContext, LoadUnit> {
|
|
9
|
-
private readonly crosscutAdviceFactory;
|
|
10
|
-
constructor(crosscutAdviceFactory: CrosscutAdviceFactory);
|
|
11
|
-
postCreate(_: LoadUnitLifecycleContext, loadUnit: LoadUnit): Promise<void>;
|
|
12
|
-
}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.LoadUnitAopHook = void 0;
|
|
4
|
-
const aop_decorator_1 = require("@eggjs/aop-decorator");
|
|
5
|
-
const core_decorator_1 = require("@eggjs/core-decorator");
|
|
6
|
-
const tegg_metadata_1 = require("@eggjs/tegg-metadata");
|
|
7
|
-
class LoadUnitAopHook {
|
|
8
|
-
constructor(crosscutAdviceFactory) {
|
|
9
|
-
this.crosscutAdviceFactory = crosscutAdviceFactory;
|
|
10
|
-
}
|
|
11
|
-
async postCreate(_, loadUnit) {
|
|
12
|
-
for (const proto of loadUnit.iterateEggPrototype()) {
|
|
13
|
-
const protoWithClazz = proto;
|
|
14
|
-
const clazz = protoWithClazz.clazz;
|
|
15
|
-
if (!clazz)
|
|
16
|
-
continue;
|
|
17
|
-
const builder = new aop_decorator_1.AspectMetaBuilder(clazz, {
|
|
18
|
-
crosscutAdviceFactory: this.crosscutAdviceFactory,
|
|
19
|
-
});
|
|
20
|
-
const aspectList = builder.build();
|
|
21
|
-
for (const aspect of aspectList) {
|
|
22
|
-
aop_decorator_1.AspectInfoUtil.setAspectList(aspectList, clazz);
|
|
23
|
-
for (const advice of aspect.adviceList) {
|
|
24
|
-
const adviceProto = core_decorator_1.PrototypeUtil.getClazzProto(advice.clazz);
|
|
25
|
-
if (!adviceProto) {
|
|
26
|
-
throw tegg_metadata_1.TeggError.create(`Aop Advice(${advice.clazz.name}) not found in loadUnits`, 'advice_not_found');
|
|
27
|
-
}
|
|
28
|
-
proto.injectObjects.push({
|
|
29
|
-
refName: advice.name,
|
|
30
|
-
objName: advice.name,
|
|
31
|
-
qualifiers: [],
|
|
32
|
-
proto: adviceProto,
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
exports.LoadUnitAopHook = LoadUnitAopHook;
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9hZFVuaXRBb3BIb29rLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL0xvYWRVbml0QW9wSG9vay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSx3REFBZ0c7QUFDaEcsMERBQXlFO0FBQ3pFLHdEQUFtRztBQU1uRyxNQUFhLGVBQWU7SUFHMUIsWUFBWSxxQkFBNEM7UUFDdEQsSUFBSSxDQUFDLHFCQUFxQixHQUFHLHFCQUFxQixDQUFDO0lBQ3JELENBQUM7SUFFRCxLQUFLLENBQUMsVUFBVSxDQUFDLENBQTJCLEVBQUUsUUFBa0I7UUFDOUQsS0FBSyxNQUFNLEtBQUssSUFBSSxRQUFRLENBQUMsbUJBQW1CLEVBQUUsRUFBRTtZQUNsRCxNQUFNLGNBQWMsR0FBRyxLQUE4QixDQUFDO1lBQ3RELE1BQU0sS0FBSyxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUM7WUFDbkMsSUFBSSxDQUFDLEtBQUs7Z0JBQUUsU0FBUztZQUVyQixNQUFNLE9BQU8sR0FBRyxJQUFJLGlDQUFpQixDQUFDLEtBQUssRUFBRTtnQkFDM0MscUJBQXFCLEVBQUUsSUFBSSxDQUFDLHFCQUFxQjthQUNsRCxDQUFDLENBQUM7WUFDSCxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDbkMsS0FBSyxNQUFNLE1BQU0sSUFBSSxVQUFVLEVBQUU7Z0JBQy9CLDhCQUFjLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDaEQsS0FBSyxNQUFNLE1BQU0sSUFBSSxNQUFNLENBQUMsVUFBVSxFQUFFO29CQUN0QyxNQUFNLFdBQVcsR0FBRyw4QkFBYSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQzlELElBQUksQ0FBQyxXQUFXLEVBQUU7d0JBQ2hCLE1BQU0seUJBQVMsQ0FBQyxNQUFNLENBQUMsY0FBYyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksMEJBQTBCLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztxQkFDdkc7b0JBRUQsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUM7d0JBQ3ZCLE9BQU8sRUFBRSxNQUFNLENBQUMsSUFBSTt3QkFDcEIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxJQUFJO3dCQUNwQixVQUFVLEVBQUUsRUFBRTt3QkFDZCxLQUFLLEVBQUUsV0FBMkI7cUJBQ25DLENBQUMsQ0FBQztpQkFDSjthQUNGO1NBQ0Y7SUFDSCxDQUFDO0NBQ0Y7QUFuQ0QsMENBbUNDIn0=
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,132 +0,0 @@
|
|
|
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 path_1 = __importDefault(require("path"));
|
|
7
|
-
const mm_1 = __importDefault(require("mm"));
|
|
8
|
-
const assert_1 = __importDefault(require("assert"));
|
|
9
|
-
const tegg_runtime_1 = require("@eggjs/tegg-runtime");
|
|
10
|
-
const tegg_metadata_1 = require("@eggjs/tegg-metadata");
|
|
11
|
-
const aop_decorator_1 = require("@eggjs/aop-decorator");
|
|
12
|
-
const test_util_1 = require("../../test-util");
|
|
13
|
-
const Hello_1 = require("./fixtures/modules/hello_succeed/Hello");
|
|
14
|
-
const CoreTestHelper_1 = require("../../test-util/CoreTestHelper");
|
|
15
|
-
const EggObjectAopHook_1 = require("../src/EggObjectAopHook");
|
|
16
|
-
const LoadUnitAopHook_1 = require("../src/LoadUnitAopHook");
|
|
17
|
-
const EggPrototypeCrossCutHook_1 = require("../src/EggPrototypeCrossCutHook");
|
|
18
|
-
describe('test/aop-runtime.test.ts', () => {
|
|
19
|
-
describe('succeed call', () => {
|
|
20
|
-
let modules;
|
|
21
|
-
let crosscutAdviceFactory;
|
|
22
|
-
let eggObjectAopHook;
|
|
23
|
-
let loadUnitAopHook;
|
|
24
|
-
let eggPrototypeCrossCutHook;
|
|
25
|
-
beforeEach(async () => {
|
|
26
|
-
crosscutAdviceFactory = new aop_decorator_1.CrosscutAdviceFactory();
|
|
27
|
-
eggObjectAopHook = new EggObjectAopHook_1.EggObjectAopHook();
|
|
28
|
-
loadUnitAopHook = new LoadUnitAopHook_1.LoadUnitAopHook(crosscutAdviceFactory);
|
|
29
|
-
eggPrototypeCrossCutHook = new EggPrototypeCrossCutHook_1.EggPrototypeCrossCutHook(crosscutAdviceFactory);
|
|
30
|
-
tegg_metadata_1.EggPrototypeLifecycleUtil.registerLifecycle(eggPrototypeCrossCutHook);
|
|
31
|
-
tegg_metadata_1.LoadUnitLifecycleUtil.registerLifecycle(loadUnitAopHook);
|
|
32
|
-
tegg_runtime_1.EggObjectLifecycleUtil.registerLifecycle(eggObjectAopHook);
|
|
33
|
-
modules = await CoreTestHelper_1.CoreTestHelper.prepareModules([
|
|
34
|
-
path_1.default.join(__dirname, '..'),
|
|
35
|
-
path_1.default.join(__dirname, 'fixtures/modules/hello_succeed'),
|
|
36
|
-
]);
|
|
37
|
-
});
|
|
38
|
-
afterEach(async () => {
|
|
39
|
-
for (const module of modules) {
|
|
40
|
-
await tegg_metadata_1.LoadUnitFactory.destroyLoadUnit(module.loadUnit);
|
|
41
|
-
await tegg_runtime_1.LoadUnitInstanceFactory.destroyLoadUnitInstance(module);
|
|
42
|
-
}
|
|
43
|
-
tegg_metadata_1.EggPrototypeLifecycleUtil.deleteLifecycle(eggPrototypeCrossCutHook);
|
|
44
|
-
tegg_metadata_1.LoadUnitLifecycleUtil.deleteLifecycle(loadUnitAopHook);
|
|
45
|
-
tegg_runtime_1.EggObjectLifecycleUtil.deleteLifecycle(eggObjectAopHook);
|
|
46
|
-
});
|
|
47
|
-
it('should work', async () => {
|
|
48
|
-
await test_util_1.EggTestContext.mockContext(async () => {
|
|
49
|
-
const hello = await CoreTestHelper_1.CoreTestHelper.getObject(Hello_1.Hello);
|
|
50
|
-
const callTrace = await CoreTestHelper_1.CoreTestHelper.getObject(Hello_1.CallTrace);
|
|
51
|
-
const msg = await hello.hello('aop');
|
|
52
|
-
const traceMsg = callTrace.msgs;
|
|
53
|
-
(0, assert_1.default)(msg === 'withCrossAroundResult(withPointAroundResult(hello withPointAroundParam(withCrosscutAroundParam(aop))))');
|
|
54
|
-
assert_1.default.deepStrictEqual(traceMsg, [
|
|
55
|
-
{
|
|
56
|
-
className: 'CrosscutAdvice',
|
|
57
|
-
methodName: 'beforeCall',
|
|
58
|
-
id: 233,
|
|
59
|
-
name: 'aop',
|
|
60
|
-
},
|
|
61
|
-
{
|
|
62
|
-
className: 'PointcutAdvice',
|
|
63
|
-
methodName: 'beforeCall',
|
|
64
|
-
id: 233,
|
|
65
|
-
name: 'aop',
|
|
66
|
-
},
|
|
67
|
-
{
|
|
68
|
-
className: 'CrosscutAdvice',
|
|
69
|
-
methodName: 'afterReturn',
|
|
70
|
-
id: 233,
|
|
71
|
-
name: 'withPointAroundParam(withCrosscutAroundParam(aop))',
|
|
72
|
-
result: 'withCrossAroundResult(withPointAroundResult(hello withPointAroundParam(withCrosscutAroundParam(aop))))',
|
|
73
|
-
},
|
|
74
|
-
{
|
|
75
|
-
className: 'PointcutAdvice',
|
|
76
|
-
methodName: 'afterReturn',
|
|
77
|
-
id: 233,
|
|
78
|
-
name: 'withPointAroundParam(withCrosscutAroundParam(aop))',
|
|
79
|
-
result: 'withCrossAroundResult(withPointAroundResult(hello withPointAroundParam(withCrosscutAroundParam(aop))))',
|
|
80
|
-
},
|
|
81
|
-
{
|
|
82
|
-
className: 'CrosscutAdvice',
|
|
83
|
-
methodName: 'afterFinally',
|
|
84
|
-
id: 233,
|
|
85
|
-
name: 'withPointAroundParam(withCrosscutAroundParam(aop))',
|
|
86
|
-
},
|
|
87
|
-
{
|
|
88
|
-
className: 'PointcutAdvice',
|
|
89
|
-
methodName: 'afterFinally',
|
|
90
|
-
id: 233,
|
|
91
|
-
name: 'withPointAroundParam(withCrosscutAroundParam(aop))',
|
|
92
|
-
},
|
|
93
|
-
]);
|
|
94
|
-
});
|
|
95
|
-
});
|
|
96
|
-
it('mock should work', async () => {
|
|
97
|
-
await test_util_1.EggTestContext.mockContext(async () => {
|
|
98
|
-
const hello = await CoreTestHelper_1.CoreTestHelper.getObject(Hello_1.Hello);
|
|
99
|
-
let helloMocked = false;
|
|
100
|
-
(0, mm_1.default)(Hello_1.Hello.prototype, 'hello', async () => {
|
|
101
|
-
helloMocked = true;
|
|
102
|
-
});
|
|
103
|
-
await hello.hello('aop');
|
|
104
|
-
(0, assert_1.default)(helloMocked === true);
|
|
105
|
-
});
|
|
106
|
-
});
|
|
107
|
-
});
|
|
108
|
-
describe('should failed', () => {
|
|
109
|
-
let crosscutAdviceFactory;
|
|
110
|
-
let eggObjectAopHook;
|
|
111
|
-
let loadUnitAopHook;
|
|
112
|
-
let eggPrototypeCrossCutHook;
|
|
113
|
-
beforeEach(async () => {
|
|
114
|
-
crosscutAdviceFactory = new aop_decorator_1.CrosscutAdviceFactory();
|
|
115
|
-
eggObjectAopHook = new EggObjectAopHook_1.EggObjectAopHook();
|
|
116
|
-
loadUnitAopHook = new LoadUnitAopHook_1.LoadUnitAopHook(crosscutAdviceFactory);
|
|
117
|
-
eggPrototypeCrossCutHook = new EggPrototypeCrossCutHook_1.EggPrototypeCrossCutHook(crosscutAdviceFactory);
|
|
118
|
-
tegg_metadata_1.EggPrototypeLifecycleUtil.registerLifecycle(eggPrototypeCrossCutHook);
|
|
119
|
-
tegg_metadata_1.LoadUnitLifecycleUtil.registerLifecycle(loadUnitAopHook);
|
|
120
|
-
tegg_runtime_1.EggObjectLifecycleUtil.registerLifecycle(eggObjectAopHook);
|
|
121
|
-
});
|
|
122
|
-
it('should throw', async () => {
|
|
123
|
-
await assert_1.default.rejects(async () => {
|
|
124
|
-
await CoreTestHelper_1.CoreTestHelper.prepareModules([
|
|
125
|
-
path_1.default.join(__dirname, '..'),
|
|
126
|
-
path_1.default.join(__dirname, 'fixtures/modules/should_throw'),
|
|
127
|
-
]);
|
|
128
|
-
}, /Aop Advice\(PointcutAdvice\) not found in loadUnits/);
|
|
129
|
-
});
|
|
130
|
-
});
|
|
131
|
-
});
|
|
132
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW9wLXJ1bnRpbWUudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3QvYW9wLXJ1bnRpbWUudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGdEQUF3QjtBQUN4Qiw0Q0FBb0I7QUFDcEIsb0RBQTRCO0FBQzVCLHNEQUF3RztBQUN4Ryx3REFBeUc7QUFDekcsd0RBQTZEO0FBQzdELCtDQUFpRDtBQUNqRCxrRUFBMEU7QUFDMUUsbUVBQWdFO0FBQ2hFLDhEQUEyRDtBQUMzRCw0REFBeUQ7QUFDekQsOEVBQTJFO0FBRTNFLFFBQVEsQ0FBQywwQkFBMEIsRUFBRSxHQUFHLEVBQUU7SUFDeEMsUUFBUSxDQUFDLGNBQWMsRUFBRSxHQUFHLEVBQUU7UUFDNUIsSUFBSSxPQUFnQyxDQUFDO1FBQ3JDLElBQUkscUJBQTRDLENBQUM7UUFDakQsSUFBSSxnQkFBa0MsQ0FBQztRQUN2QyxJQUFJLGVBQWdDLENBQUM7UUFDckMsSUFBSSx3QkFBa0QsQ0FBQztRQUV2RCxVQUFVLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDcEIscUJBQXFCLEdBQUcsSUFBSSxxQ0FBcUIsRUFBRSxDQUFDO1lBQ3BELGdCQUFnQixHQUFHLElBQUksbUNBQWdCLEVBQUUsQ0FBQztZQUMxQyxlQUFlLEdBQUcsSUFBSSxpQ0FBZSxDQUFDLHFCQUFxQixDQUFDLENBQUM7WUFDN0Qsd0JBQXdCLEdBQUcsSUFBSSxtREFBd0IsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1lBQy9FLHlDQUF5QixDQUFDLGlCQUFpQixDQUFDLHdCQUF3QixDQUFDLENBQUM7WUFDdEUscUNBQXFCLENBQUMsaUJBQWlCLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDekQscUNBQXNCLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUUzRCxPQUFPLEdBQUcsTUFBTSwrQkFBYyxDQUFDLGNBQWMsQ0FBQztnQkFDNUMsY0FBSSxDQUFDLElBQUksQ0FBQyxTQUFT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
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { AdviceContext, IAdvice } from '@eggjs/aop-decorator';
|
|
2
|
-
export interface CallTraceMsg {
|
|
3
|
-
className: string;
|
|
4
|
-
methodName: string;
|
|
5
|
-
id: number;
|
|
6
|
-
name: string;
|
|
7
|
-
result?: string;
|
|
8
|
-
}
|
|
9
|
-
export declare class CallTrace {
|
|
10
|
-
msgs: Array<CallTraceMsg>;
|
|
11
|
-
addMsg(msg: CallTraceMsg): void;
|
|
12
|
-
}
|
|
13
|
-
export declare class PointcutAdvice implements IAdvice<Hello> {
|
|
14
|
-
callTrace: CallTrace;
|
|
15
|
-
beforeCall(ctx: AdviceContext<Hello>): Promise<void>;
|
|
16
|
-
afterReturn(ctx: AdviceContext<Hello>, result: any): Promise<void>;
|
|
17
|
-
afterFinally(ctx: AdviceContext<Hello>): Promise<void>;
|
|
18
|
-
around(ctx: AdviceContext<Hello>, next: () => Promise<any>): Promise<any>;
|
|
19
|
-
}
|
|
20
|
-
export declare class Hello {
|
|
21
|
-
id: number;
|
|
22
|
-
hello(name: string): Promise<string>;
|
|
23
|
-
}
|
|
24
|
-
export declare class CrosscutAdvice implements IAdvice<Hello> {
|
|
25
|
-
callTrace: CallTrace;
|
|
26
|
-
beforeCall(ctx: AdviceContext<Hello>): Promise<void>;
|
|
27
|
-
afterReturn(ctx: AdviceContext<Hello>, result: any): Promise<void>;
|
|
28
|
-
afterFinally(ctx: AdviceContext<Hello>): Promise<void>;
|
|
29
|
-
around(ctx: AdviceContext<Hello>, next: () => Promise<any>): Promise<any>;
|
|
30
|
-
}
|
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
-
};
|
|
8
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
-
};
|
|
11
|
-
var PointcutAdvice_1, CrosscutAdvice_1;
|
|
12
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
exports.CrosscutAdvice = exports.Hello = exports.PointcutAdvice = exports.CallTrace = void 0;
|
|
14
|
-
const core_decorator_1 = require("@eggjs/core-decorator");
|
|
15
|
-
const aop_decorator_1 = require("@eggjs/aop-decorator");
|
|
16
|
-
let CallTrace = class CallTrace {
|
|
17
|
-
constructor() {
|
|
18
|
-
this.msgs = [];
|
|
19
|
-
}
|
|
20
|
-
addMsg(msg) {
|
|
21
|
-
this.msgs.push(msg);
|
|
22
|
-
}
|
|
23
|
-
};
|
|
24
|
-
CallTrace = __decorate([
|
|
25
|
-
(0, core_decorator_1.SingletonProto)()
|
|
26
|
-
], CallTrace);
|
|
27
|
-
exports.CallTrace = CallTrace;
|
|
28
|
-
let PointcutAdvice = PointcutAdvice_1 = class PointcutAdvice {
|
|
29
|
-
async beforeCall(ctx) {
|
|
30
|
-
this.callTrace.addMsg({
|
|
31
|
-
className: PointcutAdvice_1.name,
|
|
32
|
-
methodName: 'beforeCall',
|
|
33
|
-
id: ctx.that.id,
|
|
34
|
-
name: ctx.args[0],
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
async afterReturn(ctx, result) {
|
|
38
|
-
this.callTrace.addMsg({
|
|
39
|
-
className: PointcutAdvice_1.name,
|
|
40
|
-
methodName: 'afterReturn',
|
|
41
|
-
id: ctx.that.id,
|
|
42
|
-
name: ctx.args[0],
|
|
43
|
-
result,
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
async afterFinally(ctx) {
|
|
47
|
-
this.callTrace.addMsg({
|
|
48
|
-
className: PointcutAdvice_1.name,
|
|
49
|
-
methodName: 'afterFinally',
|
|
50
|
-
id: ctx.that.id,
|
|
51
|
-
name: ctx.args[0],
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
async around(ctx, next) {
|
|
55
|
-
ctx.args[0] = `withPointAroundParam(${ctx.args[0]})`;
|
|
56
|
-
const result = await next();
|
|
57
|
-
return `withPointAroundResult(${result})`;
|
|
58
|
-
}
|
|
59
|
-
};
|
|
60
|
-
__decorate([
|
|
61
|
-
(0, core_decorator_1.Inject)(),
|
|
62
|
-
__metadata("design:type", CallTrace)
|
|
63
|
-
], PointcutAdvice.prototype, "callTrace", void 0);
|
|
64
|
-
PointcutAdvice = PointcutAdvice_1 = __decorate([
|
|
65
|
-
(0, aop_decorator_1.Advice)()
|
|
66
|
-
], PointcutAdvice);
|
|
67
|
-
exports.PointcutAdvice = PointcutAdvice;
|
|
68
|
-
let Hello = class Hello {
|
|
69
|
-
constructor() {
|
|
70
|
-
this.id = 233;
|
|
71
|
-
}
|
|
72
|
-
async hello(name) {
|
|
73
|
-
return `hello ${name}`;
|
|
74
|
-
}
|
|
75
|
-
};
|
|
76
|
-
__decorate([
|
|
77
|
-
(0, aop_decorator_1.Pointcut)(PointcutAdvice),
|
|
78
|
-
__metadata("design:type", Function),
|
|
79
|
-
__metadata("design:paramtypes", [String]),
|
|
80
|
-
__metadata("design:returntype", Promise)
|
|
81
|
-
], Hello.prototype, "hello", null);
|
|
82
|
-
Hello = __decorate([
|
|
83
|
-
(0, core_decorator_1.ContextProto)()
|
|
84
|
-
], Hello);
|
|
85
|
-
exports.Hello = Hello;
|
|
86
|
-
let CrosscutAdvice = CrosscutAdvice_1 = class CrosscutAdvice {
|
|
87
|
-
async beforeCall(ctx) {
|
|
88
|
-
this.callTrace.addMsg({
|
|
89
|
-
className: CrosscutAdvice_1.name,
|
|
90
|
-
methodName: 'beforeCall',
|
|
91
|
-
id: ctx.that.id,
|
|
92
|
-
name: ctx.args[0],
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
async afterReturn(ctx, result) {
|
|
96
|
-
this.callTrace.addMsg({
|
|
97
|
-
className: CrosscutAdvice_1.name,
|
|
98
|
-
methodName: 'afterReturn',
|
|
99
|
-
id: ctx.that.id,
|
|
100
|
-
name: ctx.args[0],
|
|
101
|
-
result,
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
async afterFinally(ctx) {
|
|
105
|
-
this.callTrace.addMsg({
|
|
106
|
-
className: CrosscutAdvice_1.name,
|
|
107
|
-
methodName: 'afterFinally',
|
|
108
|
-
id: ctx.that.id,
|
|
109
|
-
name: ctx.args[0],
|
|
110
|
-
});
|
|
111
|
-
}
|
|
112
|
-
async around(ctx, next) {
|
|
113
|
-
ctx.args[0] = `withCrosscutAroundParam(${ctx.args[0]})`;
|
|
114
|
-
const result = await next();
|
|
115
|
-
return `withCrossAroundResult(${result})`;
|
|
116
|
-
}
|
|
117
|
-
};
|
|
118
|
-
__decorate([
|
|
119
|
-
(0, core_decorator_1.Inject)(),
|
|
120
|
-
__metadata("design:type", CallTrace)
|
|
121
|
-
], CrosscutAdvice.prototype, "callTrace", void 0);
|
|
122
|
-
CrosscutAdvice = CrosscutAdvice_1 = __decorate([
|
|
123
|
-
(0, aop_decorator_1.Crosscut)({
|
|
124
|
-
type: aop_decorator_1.PointcutType.CLASS,
|
|
125
|
-
clazz: Hello,
|
|
126
|
-
methodName: 'hello',
|
|
127
|
-
}),
|
|
128
|
-
(0, aop_decorator_1.Advice)()
|
|
129
|
-
], CrosscutAdvice);
|
|
130
|
-
exports.CrosscutAdvice = CrosscutAdvice;
|
|
131
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSGVsbG8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90ZXN0L2ZpeHR1cmVzL21vZHVsZXMvaGVsbG9fc3VjY2VlZC9IZWxsby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUEsMERBQTZFO0FBQzdFLHdEQUF3RztBQVdqRyxJQUFNLFNBQVMsR0FBZixNQUFNLFNBQVM7SUFBZjtRQUNMLFNBQUksR0FBd0IsRUFBRSxDQUFDO0lBS2pDLENBQUM7SUFIQyxNQUFNLENBQUMsR0FBaUI7UUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEIsQ0FBQztDQUNGLENBQUE7QUFOWSxTQUFTO0lBRHJCLElBQUEsK0JBQWMsR0FBRTtHQUNKLFNBQVMsQ0FNckI7QUFOWSw4QkFBUztBQVNmLElBQU0sY0FBYyxzQkFBcEIsTUFBTSxjQUFjO0lBSXpCLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBeUI7UUFDeEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7WUFDcEIsU0FBUyxFQUFFLGdCQUFjLENBQUMsSUFBSTtZQUM5QixVQUFVLEVBQUUsWUFBWTtZQUN4QixFQUFFLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2YsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQ2xCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVyxDQUFDLEdBQXlCLEVBQUUsTUFBVztRQUN0RCxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztZQUNwQixTQUFTLEVBQUUsZ0JBQWMsQ0FBQyxJQUFJO1lBQzlCLFVBQVUsRUFBRSxhQUFhO1lBQ3pCLEVBQUUsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDZixJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDakIsTUFB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
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
-
};
|
|
8
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.Hello = void 0;
|
|
13
|
-
const core_decorator_1 = require("@eggjs/core-decorator");
|
|
14
|
-
const aop_decorator_1 = require("@eggjs/aop-decorator");
|
|
15
|
-
let PointcutAdvice = class PointcutAdvice {
|
|
16
|
-
async beforeCall(ctx) {
|
|
17
|
-
console.info(ctx);
|
|
18
|
-
}
|
|
19
|
-
};
|
|
20
|
-
PointcutAdvice = __decorate([
|
|
21
|
-
(0, aop_decorator_1.Advice)()
|
|
22
|
-
], PointcutAdvice);
|
|
23
|
-
let Hello = class Hello {
|
|
24
|
-
constructor() {
|
|
25
|
-
this.id = 233;
|
|
26
|
-
}
|
|
27
|
-
async hello(name) {
|
|
28
|
-
return `hello ${name}`;
|
|
29
|
-
}
|
|
30
|
-
};
|
|
31
|
-
__decorate([
|
|
32
|
-
(0, aop_decorator_1.Pointcut)(PointcutAdvice),
|
|
33
|
-
__metadata("design:type", Function),
|
|
34
|
-
__metadata("design:paramtypes", [String]),
|
|
35
|
-
__metadata("design:returntype", Promise)
|
|
36
|
-
], Hello.prototype, "hello", null);
|
|
37
|
-
Hello = __decorate([
|
|
38
|
-
(0, core_decorator_1.ContextProto)()
|
|
39
|
-
], Hello);
|
|
40
|
-
exports.Hello = Hello;
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSGVsbG8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90ZXN0L2ZpeHR1cmVzL21vZHVsZXMvc2hvdWxkX3Rocm93L0hlbGxvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLDBEQUFxRDtBQUNyRCx3REFBZ0Y7QUFHaEYsSUFBTSxjQUFjLEdBQXBCLE1BQU0sY0FBYztJQUNsQixLQUFLLENBQUMsVUFBVSxDQUFDLEdBQXlCO1FBQ3hDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEIsQ0FBQztDQUNGLENBQUE7QUFKSyxjQUFjO0lBRG5CLElBQUEsc0JBQU0sR0FBRTtHQUNILGNBQWMsQ0FJbkI7QUFHTSxJQUFNLEtBQUssR0FBWCxNQUFNLEtBQUs7SUFBWDtRQUNMLE9BQUUsR0FBRyxHQUFHLENBQUM7SUFNWCxDQUFDO0lBSE8sQUFBTixLQUFLLENBQUMsS0FBSyxDQUFDLElBQVk7UUFDdEIsT0FBTyxTQUFTLElBQUksRUFBRSxDQUFDO0lBQ3pCLENBQUM7Q0FDRixDQUFBO0FBSE87SUFETCxJQUFBLHdCQUFRLEVBQUMsY0FBYyxDQUFDOzs7O2tDQUd4QjtBQU5VLEtBQUs7SUFEakIsSUFBQSw2QkFBWSxHQUFFO0dBQ0YsS0FBSyxDQU9qQjtBQVBZLHNCQUFLIn0=
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
import { EggContext, LoadUnitInstance } from '@eggjs/tegg-runtime';
|
|
3
|
-
import { EggProtoImplClass } from '@eggjs/core-decorator';
|
|
4
|
-
import { AsyncLocalStorage } from 'async_hooks';
|
|
5
|
-
export declare class EggContextStorage {
|
|
6
|
-
static storage: AsyncLocalStorage<EggContext>;
|
|
7
|
-
static register(): void;
|
|
8
|
-
}
|
|
9
|
-
export declare class CoreTestHelper {
|
|
10
|
-
static contextStorage: AsyncLocalStorage<unknown>;
|
|
11
|
-
static getLoadUnitInstance(moduleDir: string): Promise<LoadUnitInstance>;
|
|
12
|
-
static prepareModules(moduleDirs: string[]): Promise<Array<LoadUnitInstance>>;
|
|
13
|
-
static getObject<T>(clazz: EggProtoImplClass<T>): Promise<T>;
|
|
14
|
-
}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CoreTestHelper = exports.EggContextStorage = void 0;
|
|
4
|
-
const tegg_runtime_1 = require("@eggjs/tegg-runtime");
|
|
5
|
-
const tegg_metadata_1 = require("@eggjs/tegg-metadata");
|
|
6
|
-
const tegg_loader_1 = require("@eggjs/tegg-loader");
|
|
7
|
-
const core_decorator_1 = require("@eggjs/core-decorator");
|
|
8
|
-
const async_hooks_1 = require("async_hooks");
|
|
9
|
-
class EggContextStorage {
|
|
10
|
-
static register() {
|
|
11
|
-
tegg_runtime_1.ContextHandler.getContextCallback = () => {
|
|
12
|
-
return EggContextStorage.storage.getStore();
|
|
13
|
-
};
|
|
14
|
-
tegg_runtime_1.ContextHandler.runInContextCallback = (context, fn) => {
|
|
15
|
-
return EggContextStorage.storage.run(context, fn);
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
exports.EggContextStorage = EggContextStorage;
|
|
20
|
-
EggContextStorage.storage = new async_hooks_1.AsyncLocalStorage();
|
|
21
|
-
class CoreTestHelper {
|
|
22
|
-
static async getLoadUnitInstance(moduleDir) {
|
|
23
|
-
const loader = tegg_loader_1.LoaderFactory.createLoader(moduleDir, tegg_metadata_1.EggLoadUnitType.MODULE);
|
|
24
|
-
const loadUnit = await tegg_metadata_1.LoadUnitFactory.createLoadUnit(moduleDir, tegg_metadata_1.EggLoadUnitType.MODULE, loader);
|
|
25
|
-
return await tegg_runtime_1.LoadUnitInstanceFactory.createLoadUnitInstance(loadUnit);
|
|
26
|
-
}
|
|
27
|
-
static async prepareModules(moduleDirs) {
|
|
28
|
-
EggContextStorage.register();
|
|
29
|
-
const instances = [];
|
|
30
|
-
for (const moduleDir of moduleDirs) {
|
|
31
|
-
instances.push(await CoreTestHelper.getLoadUnitInstance(moduleDir));
|
|
32
|
-
}
|
|
33
|
-
return instances;
|
|
34
|
-
}
|
|
35
|
-
static async getObject(clazz) {
|
|
36
|
-
const proto = core_decorator_1.PrototypeUtil.getClazzProto(clazz);
|
|
37
|
-
const eggObj = await tegg_runtime_1.EggContainerFactory.getOrCreateEggObject(proto, proto.name);
|
|
38
|
-
return eggObj.obj;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
exports.CoreTestHelper = CoreTestHelper;
|
|
42
|
-
CoreTestHelper.contextStorage = new async_hooks_1.AsyncLocalStorage();
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29yZVRlc3RIZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0LXV0aWwvQ29yZVRlc3RIZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsc0RBTTZCO0FBQzdCLHdEQUFzRjtBQUN0RixvREFBbUQ7QUFDbkQsMERBQXlFO0FBQ3pFLDZDQUFnRDtBQUVoRCxNQUFhLGlCQUFpQjtJQUc1QixNQUFNLENBQUMsUUFBUTtRQUNiLDZCQUFjLENBQUMsa0JBQWtCLEdBQUcsR0FBRyxFQUFFO1lBQ3ZDLE9BQU8saUJBQWlCLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzlDLENBQUMsQ0FBQztRQUNGLDZCQUFjLENBQUMsb0JBQW9CLEdBQUcsQ0FBQyxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUU7WUFDcEQsT0FBTyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNwRCxDQUFDLENBQUM7SUFDSixDQUFDOztBQVZILDhDQVdDO0FBVlEseUJBQU8sR0FBRyxJQUFJLCtCQUFpQixFQUFjLENBQUM7QUFZdkQsTUFBYSxjQUFjO0lBR3pCLE1BQU0sQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsU0FBaUI7UUFDaEQsTUFBTSxNQUFNLEdBQUcsMkJBQWEsQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLCtCQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0UsTUFBTSxRQUFRLEdBQUcsTUFBTSwrQkFBZSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsK0JBQWUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDakcsT0FBTyxNQUFNLHNDQUF1QixDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFDRCxNQUFNLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxVQUFvQjtRQUM5QyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM3QixNQUFNLFNBQVMsR0FBNEIsRUFBRSxDQUFDO1FBQzlDLEtBQUssTUFBTSxTQUFTLElBQUksVUFBVSxFQUFFO1lBQ2xDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxjQUFjLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztTQUNyRTtRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFDRCxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBSSxLQUEyQjtRQUNuRCxNQUFNLEtBQUssR0FBRyw4QkFBYSxDQUFDLGFBQWEsQ0FBQyxLQUFZLENBQWlCLENBQUM7UUFDeEUsTUFBTSxNQUFNLEdBQUcsTUFBTSxrQ0FBbUIsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pGLE9BQU8sTUFBTSxDQUFDLEdBQW1CLENBQUM7SUFDcEMsQ0FBQzs7QUFwQkgsd0NBcUJDO0FBcEJRLDZCQUFjLEdBQUcsSUFBSSwrQkFBaUIsRUFBRSxDQUFDIn0=
|