@eggjs/aop-decorator 3.51.2 → 4.0.0-beta.1
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 +22 -20
- package/{dist/src → src}/AspectMetaBuilder.d.ts +3 -3
- package/src/AspectMetaBuilder.js +53 -0
- package/src/CrosscutAdviceFactory.js +22 -0
- package/src/decorator/Advice.js +20 -0
- package/src/decorator/Crosscut.js +44 -0
- package/src/decorator/Pointcut.js +18 -0
- package/src/decorator/index.d.ts +3 -0
- package/src/decorator/index.js +4 -0
- package/src/index.d.ts +6 -0
- package/src/index.js +7 -0
- package/src/model/Aspect.js +38 -0
- package/src/model/PointcutInfo.js +40 -0
- package/src/model/index.d.ts +2 -0
- package/src/model/index.js +3 -0
- package/src/util/AdviceInfoUtil.js +11 -0
- package/{dist/src → src}/util/AspectInfoUtil.d.ts +1 -1
- package/src/util/AspectInfoUtil.js +11 -0
- package/src/util/CrosscutInfoUtil.js +18 -0
- package/src/util/PointcutAdviceInfoUtil.js +17 -0
- package/src/util/index.d.ts +4 -0
- package/src/util/index.js +5 -0
- package/dist/index.d.ts +0 -12
- package/dist/index.js +0 -29
- package/dist/src/AspectMetaBuilder.js +0 -55
- package/dist/src/CrosscutAdviceFactory.js +0 -31
- package/dist/src/decorator/Advice.js +0 -23
- package/dist/src/decorator/Crosscut.js +0 -48
- package/dist/src/decorator/Pointcut.js +0 -26
- package/dist/src/model/Aspect.js +0 -37
- package/dist/src/model/PointcutInfo.js +0 -41
- package/dist/src/util/AdviceInfoUtil.js +0 -15
- package/dist/src/util/AspectInfoUtil.js +0 -15
- package/dist/src/util/CrosscutInfoUtil.js +0 -22
- package/dist/src/util/PointcutAdviceInfoUtil.js +0 -21
- /package/{dist/src → src}/CrosscutAdviceFactory.d.ts +0 -0
- /package/{dist/src → src}/decorator/Advice.d.ts +0 -0
- /package/{dist/src → src}/decorator/Crosscut.d.ts +0 -0
- /package/{dist/src → src}/decorator/Pointcut.d.ts +0 -0
- /package/{dist/src → src}/model/Aspect.d.ts +0 -0
- /package/{dist/src → src}/model/PointcutInfo.d.ts +0 -0
- /package/{dist/src → src}/util/AdviceInfoUtil.d.ts +0 -0
- /package/{dist/src → src}/util/CrosscutInfoUtil.d.ts +0 -0
- /package/{dist/src → src}/util/PointcutAdviceInfoUtil.d.ts +0 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eggjs/aop-decorator",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.0.0-beta.1",
|
|
4
4
|
"description": "tegg aop decorator",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"tegg",
|
|
@@ -16,40 +16,42 @@
|
|
|
16
16
|
"directory": "core/aop-decorator"
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@eggjs/core-decorator": "^
|
|
20
|
-
"@eggjs/tegg-common-util": "^
|
|
21
|
-
"@eggjs/tegg-metadata": "^
|
|
22
|
-
"@eggjs/tegg-types": "^
|
|
19
|
+
"@eggjs/core-decorator": "^4.0.0-beta.1",
|
|
20
|
+
"@eggjs/tegg-common-util": "^4.0.0-beta.1",
|
|
21
|
+
"@eggjs/tegg-metadata": "^4.0.0-beta.1",
|
|
22
|
+
"@eggjs/tegg-types": "^4.0.0-beta.1"
|
|
23
23
|
},
|
|
24
24
|
"scripts": {
|
|
25
|
-
"test": "cross-env NODE_ENV=test NODE_OPTIONS='--no-deprecation' mocha",
|
|
26
25
|
"clean": "tsc -b --clean",
|
|
27
26
|
"tsc": "npm run clean && tsc -p ./tsconfig.json",
|
|
28
|
-
"tsc:pub": "npm run
|
|
29
|
-
"prepublishOnly": "npm run tsc
|
|
27
|
+
"tsc:pub": "npm run tsc",
|
|
28
|
+
"prepublishOnly": "npm run tsc"
|
|
30
29
|
},
|
|
31
30
|
"publishConfig": {
|
|
32
31
|
"access": "public"
|
|
33
32
|
},
|
|
34
33
|
"engines": {
|
|
35
|
-
"node": ">=
|
|
34
|
+
"node": ">=20.0.0"
|
|
36
35
|
},
|
|
37
36
|
"license": "MIT",
|
|
38
|
-
"
|
|
37
|
+
"type": "module",
|
|
38
|
+
"exports": {
|
|
39
|
+
".": {
|
|
40
|
+
"types": "./src/index.d.ts",
|
|
41
|
+
"default": "./src/index.js"
|
|
42
|
+
}
|
|
43
|
+
},
|
|
39
44
|
"files": [
|
|
40
|
-
"
|
|
41
|
-
"
|
|
45
|
+
"src/**/*.js",
|
|
46
|
+
"src/**/*.d.ts"
|
|
42
47
|
],
|
|
43
48
|
"bugs": {
|
|
44
49
|
"url": "https://github.com/eggjs/tegg/issues"
|
|
45
50
|
},
|
|
46
51
|
"devDependencies": {
|
|
47
|
-
"@types/
|
|
48
|
-
"
|
|
49
|
-
"
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
"typescript": "^5.0.4"
|
|
53
|
-
},
|
|
54
|
-
"gitHead": "b310ec3c772067b98b4f91342d877bebcee4e673"
|
|
52
|
+
"@types/node": "22",
|
|
53
|
+
"ts-node": "10",
|
|
54
|
+
"typescript": "5"
|
|
55
|
+
},
|
|
56
|
+
"gitHead": "79a22905272d6de7fe06152231dff65d213d9166"
|
|
55
57
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { EggProtoImplClass } from '@eggjs/tegg-types';
|
|
2
|
-
import { CrosscutAdviceFactory } from './CrosscutAdviceFactory';
|
|
3
|
-
import { Aspect } from './model/
|
|
2
|
+
import { CrosscutAdviceFactory } from './CrosscutAdviceFactory.js';
|
|
3
|
+
import { Aspect } from './model/index.js';
|
|
4
4
|
export declare class AspectMetaBuilder {
|
|
5
5
|
private readonly clazz;
|
|
6
6
|
private readonly crosscutAdviceFactory;
|
|
@@ -8,6 +8,6 @@ export declare class AspectMetaBuilder {
|
|
|
8
8
|
crosscutAdviceFactory: CrosscutAdviceFactory;
|
|
9
9
|
});
|
|
10
10
|
build(): Array<Aspect>;
|
|
11
|
-
static getAllMethods(clazz:
|
|
11
|
+
static getAllMethods(clazz: EggProtoImplClass): PropertyKey[];
|
|
12
12
|
private doBuildMethodAspect;
|
|
13
13
|
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { AspectBuilder } from './model/index.js';
|
|
2
|
+
import { PointcutAdviceInfoUtil } from './util/index.js';
|
|
3
|
+
export class AspectMetaBuilder {
|
|
4
|
+
clazz;
|
|
5
|
+
crosscutAdviceFactory;
|
|
6
|
+
constructor(clazz, options) {
|
|
7
|
+
this.clazz = clazz;
|
|
8
|
+
this.crosscutAdviceFactory = options.crosscutAdviceFactory;
|
|
9
|
+
}
|
|
10
|
+
build() {
|
|
11
|
+
const aspectList = [];
|
|
12
|
+
const methods = AspectMetaBuilder.getAllMethods(this.clazz);
|
|
13
|
+
for (const method of methods) {
|
|
14
|
+
const aspect = this.doBuildMethodAspect(method);
|
|
15
|
+
if (aspect) {
|
|
16
|
+
aspectList.push(aspect);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return aspectList;
|
|
20
|
+
}
|
|
21
|
+
static getAllMethods(clazz) {
|
|
22
|
+
const methodSet = new Set();
|
|
23
|
+
function getMethods(obj) {
|
|
24
|
+
if (obj) {
|
|
25
|
+
const propDescs = Object.getOwnPropertyDescriptors(obj);
|
|
26
|
+
for (const [name, desc] of Object.entries(propDescs)) {
|
|
27
|
+
if (desc.value instanceof Function) {
|
|
28
|
+
methodSet.add(name);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
getMethods(Object.getPrototypeOf(obj));
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
getMethods(clazz.prototype);
|
|
35
|
+
return Array.from(methodSet);
|
|
36
|
+
}
|
|
37
|
+
doBuildMethodAspect(method) {
|
|
38
|
+
const crosscutAdviceList = this.crosscutAdviceFactory.getAdvice(this.clazz, method);
|
|
39
|
+
// decorator execute in reverse order
|
|
40
|
+
const pointcutAdviceList = PointcutAdviceInfoUtil.getPointcutAdviceInfoList(this.clazz, method);
|
|
41
|
+
if (!crosscutAdviceList.length && !pointcutAdviceList.length)
|
|
42
|
+
return;
|
|
43
|
+
const aspectBuilder = new AspectBuilder(this.clazz, method);
|
|
44
|
+
for (const advice of crosscutAdviceList) {
|
|
45
|
+
aspectBuilder.addAdvice(advice);
|
|
46
|
+
}
|
|
47
|
+
for (const advice of pointcutAdviceList) {
|
|
48
|
+
aspectBuilder.addAdvice(advice);
|
|
49
|
+
}
|
|
50
|
+
return aspectBuilder.build();
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXNwZWN0TWV0YUJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJBc3BlY3RNZXRhQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQVUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDekQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekQsTUFBTSxPQUFPLGlCQUFpQjtJQUNYLEtBQUssQ0FBb0I7SUFDekIscUJBQXFCLENBQXdCO0lBRTlELFlBQVksS0FBd0IsRUFBRSxPQUVyQztRQUNDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxPQUFPLENBQUMscUJBQXFCLENBQUM7SUFDN0QsQ0FBQztJQUVELEtBQUs7UUFDSCxNQUFNLFVBQVUsR0FBa0IsRUFBRSxDQUFDO1FBQ3JDLE1BQU0sT0FBTyxHQUFHLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUQsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUM3QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDaEQsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDWCxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzFCLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVELE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBd0I7UUFDM0MsTUFBTSxTQUFTLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztRQUNwQyxTQUFTLFVBQVUsQ0FBQyxHQUFRO1lBQzFCLElBQUksR0FBRyxFQUFFLENBQUM7Z0JBQ1IsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLHlCQUF5QixDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN4RCxLQUFLLE1BQU0sQ0FBRSxJQUFJLEVBQUUsSUFBSSxDQUFFLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO29CQUN2RCxJQUFJLElBQUksQ0FBQyxLQUFLLFlBQVksUUFBUSxFQUFFLENBQUM7d0JBQ25DLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3RCLENBQUM7Z0JBQ0gsQ0FBQztnQkFDRCxVQUFVLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3pDLENBQUM7UUFDSCxDQUFDO1FBRUQsVUFBVSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUU1QixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVPLG1CQUFtQixDQUFDLE1BQW1CO1FBQzdDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3BGLHFDQUFxQztRQUNyQyxNQUFNLGtCQUFrQixHQUFHLHNCQUFzQixDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDaEcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU07WUFBRSxPQUFPO1FBQ3JFLE1BQU0sYUFBYSxHQUFHLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDNUQsS0FBSyxNQUFNLE1BQU0sSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1lBQ3hDLGFBQWEsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEMsQ0FBQztRQUNELEtBQUssTUFBTSxNQUFNLElBQUksa0JBQWtCLEVBQUUsQ0FBQztZQUN4QyxhQUFhLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xDLENBQUM7UUFDRCxPQUFPLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMvQixDQUFDO0NBQ0YifQ==
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import assert from 'node:assert';
|
|
2
|
+
import { CrosscutInfoUtil } from './util/index.js';
|
|
3
|
+
export class CrosscutAdviceFactory {
|
|
4
|
+
crosscutAdviceClazzList = [];
|
|
5
|
+
registerCrossAdviceClazz(clazz) {
|
|
6
|
+
assert(CrosscutInfoUtil.isCrosscutAdvice(clazz), `clazz ${clazz.name} is not crosscut advice`);
|
|
7
|
+
this.crosscutAdviceClazzList.push(clazz);
|
|
8
|
+
}
|
|
9
|
+
getAdvice(clazz, method) {
|
|
10
|
+
const result = [];
|
|
11
|
+
for (const crosscutAdviceClazz of this.crosscutAdviceClazzList) {
|
|
12
|
+
const crosscutInfoList = CrosscutInfoUtil.getCrosscutInfoList(crosscutAdviceClazz);
|
|
13
|
+
for (const crosscutInfo of crosscutInfoList) {
|
|
14
|
+
if (crosscutInfo.pointcutInfo.match(clazz, method)) {
|
|
15
|
+
result.push(crosscutInfo.adviceInfo);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return result;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3Jvc3NjdXRBZHZpY2VGYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiQ3Jvc3NjdXRBZHZpY2VGYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sTUFBTSxNQUFNLGFBQWEsQ0FBQztBQUVqQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVuRCxNQUFNLE9BQU8scUJBQXFCO0lBQ2YsdUJBQXVCLEdBQXNDLEVBQUUsQ0FBQztJQUVqRix3QkFBd0IsQ0FBQyxLQUFpQztRQUN4RCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLEVBQUUsU0FBUyxLQUFLLENBQUMsSUFBSSx5QkFBeUIsQ0FBQyxDQUFDO1FBQy9GLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUF3QixFQUFFLE1BQW1CO1FBQ3JELE1BQU0sTUFBTSxHQUFzQixFQUFFLENBQUM7UUFDckMsS0FBSyxNQUFNLG1CQUFtQixJQUFJLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1lBQy9ELE1BQU0sZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUMsbUJBQW1CLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUNuRixLQUFLLE1BQU0sWUFBWSxJQUFJLGdCQUFnQixFQUFFLENBQUM7Z0JBQzVDLElBQUksWUFBWSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUM7b0JBQ25ELE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUN2QyxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0NBQ0YifQ==
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Prototype, PrototypeUtil } from '@eggjs/core-decorator';
|
|
2
|
+
import { StackUtil } from '@eggjs/tegg-common-util';
|
|
3
|
+
import { AccessLevel, ObjectInitType } from '@eggjs/tegg-types';
|
|
4
|
+
import { AdviceInfoUtil } from '../util/index.js';
|
|
5
|
+
const defaultAdviceParam = {
|
|
6
|
+
accessLevel: AccessLevel.PUBLIC,
|
|
7
|
+
initType: ObjectInitType.CONTEXT,
|
|
8
|
+
};
|
|
9
|
+
export function Advice(param) {
|
|
10
|
+
return function (constructor) {
|
|
11
|
+
AdviceInfoUtil.setIsAdvice(true, constructor);
|
|
12
|
+
const func = Prototype({
|
|
13
|
+
...defaultAdviceParam,
|
|
14
|
+
...param,
|
|
15
|
+
});
|
|
16
|
+
func(constructor);
|
|
17
|
+
PrototypeUtil.setFilePath(constructor, StackUtil.getCalleeFromStack(false, 5));
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWR2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiQWR2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWxELE1BQU0sa0JBQWtCLEdBQUc7SUFDekIsV0FBVyxFQUFFLFdBQVcsQ0FBQyxNQUFNO0lBQy9CLFFBQVEsRUFBRSxjQUFjLENBQUMsT0FBTztDQUNqQyxDQUFDO0FBRUYsTUFBTSxVQUFVLE1BQU0sQ0FBQyxLQUF1QjtJQUM1QyxPQUFPLFVBQVMsV0FBdUM7UUFDckQsY0FBYyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDOUMsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDO1lBQ3JCLEdBQUcsa0JBQWtCO1lBQ3JCLEdBQUcsS0FBSztTQUNULENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNsQixhQUFhLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakYsQ0FBQyxDQUFDO0FBQ0osQ0FBQyJ9
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { PointcutType } from '@eggjs/tegg-types';
|
|
2
|
+
import { CrosscutInfoUtil } from '../util/index.js';
|
|
3
|
+
import { ClassPointInfo, CustomPointInfo, NamePointInfo } from '../model/index.js';
|
|
4
|
+
const defaultCrossOptions = {
|
|
5
|
+
order: 100,
|
|
6
|
+
};
|
|
7
|
+
export function Crosscut(param, options) {
|
|
8
|
+
return function (constructor) {
|
|
9
|
+
let crosscutInfo;
|
|
10
|
+
if (param.type === PointcutType.CLASS) {
|
|
11
|
+
crosscutInfo = {
|
|
12
|
+
pointcutInfo: new ClassPointInfo(param.clazz, param.methodName),
|
|
13
|
+
adviceInfo: {
|
|
14
|
+
clazz: constructor,
|
|
15
|
+
order: options?.order ?? defaultCrossOptions.order,
|
|
16
|
+
adviceParams: options?.adviceParams,
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
else if (param.type === PointcutType.NAME) {
|
|
21
|
+
crosscutInfo = {
|
|
22
|
+
pointcutInfo: new NamePointInfo(param.className, param.methodName),
|
|
23
|
+
adviceInfo: {
|
|
24
|
+
clazz: constructor,
|
|
25
|
+
order: options?.order ?? defaultCrossOptions.order,
|
|
26
|
+
adviceParams: options?.adviceParams,
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
crosscutInfo = {
|
|
32
|
+
pointcutInfo: new CustomPointInfo(param.callback),
|
|
33
|
+
adviceInfo: {
|
|
34
|
+
clazz: constructor,
|
|
35
|
+
order: options?.order ?? defaultCrossOptions.order,
|
|
36
|
+
adviceParams: options?.adviceParams,
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
CrosscutInfoUtil.setIsCrosscutAdvice(true, constructor);
|
|
41
|
+
CrosscutInfoUtil.addCrosscutInfo(crosscutInfo, constructor);
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3Jvc3NjdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJDcm9zc2N1dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFakQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFbkYsTUFBTSxtQkFBbUIsR0FBRztJQUMxQixLQUFLLEVBQUUsR0FBRztDQUNYLENBQUM7QUFFRixNQUFNLFVBQVUsUUFBUSxDQUFDLEtBQW9CLEVBQUUsT0FBeUI7SUFDdEUsT0FBTyxVQUFTLFdBQXVDO1FBQ3JELElBQUksWUFBMEIsQ0FBQztRQUMvQixJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3RDLFlBQVksR0FBRztnQkFDYixZQUFZLEVBQUUsSUFBSSxjQUFjLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDO2dCQUMvRCxVQUFVLEVBQUU7b0JBQ1YsS0FBSyxFQUFFLFdBQVc7b0JBQ2xCLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxJQUFJLG1CQUFtQixDQUFDLEtBQUs7b0JBQ2xELFlBQVksRUFBRSxPQUFPLEVBQUUsWUFBWTtpQkFDcEM7YUFDRixDQUFDO1FBQ0osQ0FBQzthQUFNLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDNUMsWUFBWSxHQUFHO2dCQUNiLFlBQVksRUFBRSxJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUM7Z0JBQ2xFLFVBQVUsRUFBRTtvQkFDVixLQUFLLEVBQUUsV0FBVztvQkFDbEIsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLElBQUksbUJBQW1CLENBQUMsS0FBSztvQkFDbEQsWUFBWSxFQUFFLE9BQU8sRUFBRSxZQUFZO2lCQUNwQzthQUNGLENBQUM7UUFDSixDQUFDO2FBQU0sQ0FBQztZQUNOLFlBQVksR0FBRztnQkFDYixZQUFZLEVBQUUsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQztnQkFDakQsVUFBVSxFQUFFO29CQUNWLEtBQUssRUFBRSxXQUFXO29CQUNsQixLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssSUFBSSxtQkFBbUIsQ0FBQyxLQUFLO29CQUNsRCxZQUFZLEVBQUUsT0FBTyxFQUFFLFlBQVk7aUJBQ3BDO2FBQ0YsQ0FBQztRQUNKLENBQUM7UUFDRCxnQkFBZ0IsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDeEQsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxXQUFXLENBQUMsQ0FBQztJQUM5RCxDQUFDLENBQUM7QUFDSixDQUFDIn0=
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import assert from 'node:assert';
|
|
2
|
+
import { PointcutAdviceInfoUtil, AdviceInfoUtil } from '../util/index.js';
|
|
3
|
+
const defaultPointcutOptions = {
|
|
4
|
+
order: 1000,
|
|
5
|
+
};
|
|
6
|
+
export function Pointcut(adviceClazz, options) {
|
|
7
|
+
return function (target, propertyKey) {
|
|
8
|
+
assert(AdviceInfoUtil.isAdvice(adviceClazz), `class ${adviceClazz} has no @Advice decorator`);
|
|
9
|
+
const targetClazz = target.constructor;
|
|
10
|
+
const methodName = propertyKey;
|
|
11
|
+
PointcutAdviceInfoUtil.addPointcutAdviceInfo({
|
|
12
|
+
clazz: adviceClazz,
|
|
13
|
+
order: options?.order ?? defaultPointcutOptions.order,
|
|
14
|
+
adviceParams: options?.adviceParams,
|
|
15
|
+
}, targetClazz, methodName);
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUG9pbnRjdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJQb2ludGN1dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE1BQU0sTUFBTSxhQUFhLENBQUM7QUFFakMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTFFLE1BQU0sc0JBQXNCLEdBQUc7SUFDN0IsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDO0FBRUYsTUFBTSxVQUFVLFFBQVEsQ0FBNEIsV0FBNkMsRUFBRSxPQUE0QjtJQUM3SCxPQUFPLFVBQVMsTUFBVyxFQUFFLFdBQXdCO1FBQ25ELE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFLFNBQVMsV0FBVywyQkFBMkIsQ0FBQyxDQUFDO1FBQzlGLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFnQyxDQUFDO1FBQzVELE1BQU0sVUFBVSxHQUFHLFdBQXFCLENBQUM7UUFDekMsc0JBQXNCLENBQUMscUJBQXFCLENBQUM7WUFDM0MsS0FBSyxFQUFFLFdBQVc7WUFDbEIsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLElBQUksc0JBQXNCLENBQUMsS0FBSztZQUNyRCxZQUFZLEVBQUUsT0FBTyxFQUFFLFlBQVk7U0FDcEMsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDOUIsQ0FBQyxDQUFDO0FBQ0osQ0FBQyJ9
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export * from './Advice.js';
|
|
2
|
+
export * from './Crosscut.js';
|
|
3
|
+
export * from './Pointcut.js';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGVBQWUsQ0FBQyJ9
|
package/src/index.d.ts
ADDED
package/src/index.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export * from '@eggjs/tegg-types/aop';
|
|
2
|
+
export * from './decorator/index.js';
|
|
3
|
+
export * from './model/index.js';
|
|
4
|
+
export * from './util/index.js';
|
|
5
|
+
export * from './AspectMetaBuilder.js';
|
|
6
|
+
export * from './CrosscutAdviceFactory.js';
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyw0QkFBNEIsQ0FBQyJ9
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
export class Aspect {
|
|
2
|
+
clazz;
|
|
3
|
+
method;
|
|
4
|
+
adviceList;
|
|
5
|
+
constructor(clazz, method, adviceList) {
|
|
6
|
+
this.clazz = clazz;
|
|
7
|
+
this.method = method;
|
|
8
|
+
this.adviceList = adviceList;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export class AspectBuilder {
|
|
12
|
+
clazz;
|
|
13
|
+
method;
|
|
14
|
+
adviceList;
|
|
15
|
+
constructor(clazz, method) {
|
|
16
|
+
this.clazz = clazz;
|
|
17
|
+
this.method = method;
|
|
18
|
+
this.adviceList = [];
|
|
19
|
+
}
|
|
20
|
+
addAdvice(adviceInfo) {
|
|
21
|
+
this.adviceList.push(adviceInfo);
|
|
22
|
+
}
|
|
23
|
+
build() {
|
|
24
|
+
this.adviceList.sort((a, b) => a.order - b.order);
|
|
25
|
+
const aspectAdviceList = this.adviceList.map((t, i) => {
|
|
26
|
+
return {
|
|
27
|
+
clazz: t.clazz,
|
|
28
|
+
name: this.adviceName(t.clazz, i),
|
|
29
|
+
adviceParams: t.adviceParams,
|
|
30
|
+
};
|
|
31
|
+
});
|
|
32
|
+
return new Aspect(this.clazz, this.method, aspectAdviceList);
|
|
33
|
+
}
|
|
34
|
+
adviceName(advice, index) {
|
|
35
|
+
return `${this.clazz.name}#${String(this.method)}#${advice.name}#${index}`;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXNwZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiQXNwZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyxNQUFNO0lBQ1IsS0FBSyxDQUFvQjtJQUN6QixNQUFNLENBQWM7SUFDcEIsVUFBVSxDQUEwQjtJQUU3QyxZQUFZLEtBQXdCLEVBQUUsTUFBbUIsRUFBRSxVQUFtQztRQUM1RixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztJQUMvQixDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sYUFBYTtJQUNmLEtBQUssQ0FBb0I7SUFDekIsTUFBTSxDQUFjO0lBQ1osVUFBVSxDQUFvQjtJQUUvQyxZQUFZLEtBQXdCLEVBQUUsTUFBbUI7UUFDdkQsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELFNBQVMsQ0FBQyxVQUFzQjtRQUM5QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEQsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNwRCxPQUFPO2dCQUNMLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSztnQkFDZCxJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztnQkFDakMsWUFBWSxFQUFFLENBQUMsQ0FBQyxZQUFZO2FBQzdCLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLGdCQUFnQixDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVPLFVBQVUsQ0FBQyxNQUFrQyxFQUFFLEtBQWE7UUFDbEUsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksTUFBTSxDQUFDLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztJQUM3RSxDQUFDO0NBQ0YifQ==
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { PointcutType } from '@eggjs/tegg-types';
|
|
2
|
+
export class ClassPointInfo {
|
|
3
|
+
type = PointcutType.CLASS;
|
|
4
|
+
clazz;
|
|
5
|
+
method;
|
|
6
|
+
constructor(clazz, method) {
|
|
7
|
+
this.clazz = clazz;
|
|
8
|
+
this.method = method;
|
|
9
|
+
}
|
|
10
|
+
match(clazz, method) {
|
|
11
|
+
return (
|
|
12
|
+
// self class
|
|
13
|
+
this.clazz === clazz ||
|
|
14
|
+
// inherit case
|
|
15
|
+
clazz.prototype instanceof this.clazz) && this.method === method;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
export class NamePointInfo {
|
|
19
|
+
type = PointcutType.NAME;
|
|
20
|
+
className;
|
|
21
|
+
methodName;
|
|
22
|
+
constructor(className, methodName) {
|
|
23
|
+
this.className = className;
|
|
24
|
+
this.methodName = methodName;
|
|
25
|
+
}
|
|
26
|
+
match(clazz, method) {
|
|
27
|
+
return this.className.test(clazz.name) && this.methodName.test(String(method));
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
export class CustomPointInfo {
|
|
31
|
+
type = PointcutType.CUSTOM;
|
|
32
|
+
cb;
|
|
33
|
+
constructor(cb) {
|
|
34
|
+
this.cb = cb;
|
|
35
|
+
}
|
|
36
|
+
match(clazz, method) {
|
|
37
|
+
return this.cb(clazz, method);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUG9pbnRjdXRJbmZvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiUG9pbnRjdXRJbmZvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUdqRCxNQUFNLE9BQU8sY0FBYztJQUNoQixJQUFJLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQztJQUMxQixLQUFLLENBQW9CO0lBQ3pCLE1BQU0sQ0FBYztJQUU3QixZQUFZLEtBQXdCLEVBQUUsTUFBbUI7UUFDdkQsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVELEtBQUssQ0FBQyxLQUF3QixFQUFFLE1BQW1CO1FBQ2pELE9BQU87UUFDTCxhQUFhO1FBQ2IsSUFBSSxDQUFDLEtBQUssS0FBSyxLQUFLO1lBQ3BCLGVBQWU7WUFDZixLQUFLLENBQUMsU0FBUyxZQUFZLElBQUksQ0FBQyxLQUFLLENBQ3RDLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUM7SUFDOUIsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLGFBQWE7SUFDZixJQUFJLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQztJQUN6QixTQUFTLENBQVM7SUFDbEIsVUFBVSxDQUFTO0lBRTVCLFlBQVksU0FBaUIsRUFBRSxVQUFrQjtRQUMvQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztJQUMvQixDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQXdCLEVBQUUsTUFBbUI7UUFDakQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDakYsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLGVBQWU7SUFDakIsSUFBSSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUM7SUFDM0IsRUFBRSxDQUF5QjtJQUVwQyxZQUFZLEVBQTBCO1FBQ3BDLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ2YsQ0FBQztJQUVELEtBQUssQ0FBQyxLQUF3QixFQUFFLE1BQW1CO1FBQ2pELE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDaEMsQ0FBQztDQUNGIn0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from './Aspect.js';
|
|
2
|
+
export * from './PointcutInfo.js';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLG1CQUFtQixDQUFDIn0=
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { MetadataUtil } from '@eggjs/core-decorator';
|
|
2
|
+
export const IS_ADVICE = Symbol.for('EggPrototype#isAdvice');
|
|
3
|
+
export class AdviceInfoUtil {
|
|
4
|
+
static setIsAdvice(isAdvice, clazz) {
|
|
5
|
+
MetadataUtil.defineMetaData(IS_ADVICE, isAdvice, clazz);
|
|
6
|
+
}
|
|
7
|
+
static isAdvice(clazz) {
|
|
8
|
+
return !!MetadataUtil.getMetaData(IS_ADVICE, clazz);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWR2aWNlSW5mb1V0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJBZHZpY2VJbmZvVXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFHckQsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLENBQUMsQ0FBQztBQUU3RCxNQUFNLE9BQU8sY0FBYztJQUN6QixNQUFNLENBQUMsV0FBVyxDQUFDLFFBQWlCLEVBQUUsS0FBaUM7UUFDckUsWUFBWSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQWlDO1FBQy9DLE9BQU8sQ0FBQyxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3RELENBQUM7Q0FDRiJ9
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { EggProtoImplClass, IAdvice } from '@eggjs/tegg-types';
|
|
2
|
-
import { Aspect } from '../model/
|
|
2
|
+
import { Aspect } from '../model/index.js';
|
|
3
3
|
export declare class AspectInfoUtil {
|
|
4
4
|
static setAspectList(aspectList: Array<Aspect>, clazz: EggProtoImplClass<IAdvice>): void;
|
|
5
5
|
static getAspectList(clazz: EggProtoImplClass<IAdvice>): Array<Aspect>;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { MetadataUtil } from '@eggjs/core-decorator';
|
|
2
|
+
import { ASPECT_LIST } from '@eggjs/tegg-types';
|
|
3
|
+
export class AspectInfoUtil {
|
|
4
|
+
static setAspectList(aspectList, clazz) {
|
|
5
|
+
MetadataUtil.defineMetaData(ASPECT_LIST, aspectList, clazz);
|
|
6
|
+
}
|
|
7
|
+
static getAspectList(clazz) {
|
|
8
|
+
return MetadataUtil.getMetaData(ASPECT_LIST, clazz) || [];
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXNwZWN0SW5mb1V0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJBc3BlY3RJbmZvVXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBSWhELE1BQU0sT0FBTyxjQUFjO0lBQ3pCLE1BQU0sQ0FBQyxhQUFhLENBQUMsVUFBeUIsRUFBRSxLQUFpQztRQUMvRSxZQUFZLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBaUM7UUFDcEQsT0FBTyxZQUFZLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDNUQsQ0FBQztDQUNGIn0=
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { MetadataUtil } from '@eggjs/core-decorator';
|
|
2
|
+
import { IS_CROSSCUT_ADVICE, CROSSCUT_INFO_LIST } from '@eggjs/tegg-types';
|
|
3
|
+
export class CrosscutInfoUtil {
|
|
4
|
+
static setIsCrosscutAdvice(isCrosscutAdvice, clazz) {
|
|
5
|
+
MetadataUtil.defineMetaData(IS_CROSSCUT_ADVICE, isCrosscutAdvice, clazz);
|
|
6
|
+
}
|
|
7
|
+
static isCrosscutAdvice(clazz) {
|
|
8
|
+
return !!MetadataUtil.getMetaData(IS_CROSSCUT_ADVICE, clazz);
|
|
9
|
+
}
|
|
10
|
+
static addCrosscutInfo(crosscutInfo, clazz) {
|
|
11
|
+
const crosscutInfoList = MetadataUtil.initOwnArrayMetaData(CROSSCUT_INFO_LIST, clazz, []);
|
|
12
|
+
crosscutInfoList.push(crosscutInfo);
|
|
13
|
+
}
|
|
14
|
+
static getCrosscutInfoList(clazz) {
|
|
15
|
+
return MetadataUtil.getArrayMetaData(CROSSCUT_INFO_LIST, clazz) || [];
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3Jvc3NjdXRJbmZvVXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkNyb3NzY3V0SW5mb1V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRzNFLE1BQU0sT0FBTyxnQkFBZ0I7SUFDM0IsTUFBTSxDQUFDLG1CQUFtQixDQUFDLGdCQUF5QixFQUFFLEtBQWlDO1FBQ3JGLFlBQVksQ0FBQyxjQUFjLENBQUMsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFpQztRQUN2RCxPQUFPLENBQUMsQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCxNQUFNLENBQUMsZUFBZSxDQUFDLFlBQTBCLEVBQUUsS0FBaUM7UUFDbEYsTUFBTSxnQkFBZ0IsR0FBRyxZQUFZLENBQUMsb0JBQW9CLENBQWUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3hHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsTUFBTSxDQUFDLG1CQUFtQixDQUFDLEtBQWlDO1FBQzFELE9BQU8sWUFBWSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN4RSxDQUFDO0NBQ0YifQ==
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { MetadataUtil } from '@eggjs/core-decorator';
|
|
2
|
+
import { POINTCUT_ADVICE_INFO_LIAR } from '@eggjs/tegg-types';
|
|
3
|
+
export class PointcutAdviceInfoUtil {
|
|
4
|
+
static addPointcutAdviceInfo(adviceInfo, clazz, method) {
|
|
5
|
+
const pointcutAdviceInfoList = MetadataUtil.initOwnArrayMetaData(POINTCUT_ADVICE_INFO_LIAR, clazz, []);
|
|
6
|
+
// FIXME: parent/child should has correct order
|
|
7
|
+
pointcutAdviceInfoList.unshift({
|
|
8
|
+
method,
|
|
9
|
+
adviceInfo,
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
static getPointcutAdviceInfoList(clazz, method) {
|
|
13
|
+
const pointcutAdviceInfoList = MetadataUtil.getMetaData(POINTCUT_ADVICE_INFO_LIAR, clazz) || [];
|
|
14
|
+
return pointcutAdviceInfoList.filter(t => t.method === method).map(t => t.adviceInfo);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUG9pbnRjdXRBZHZpY2VJbmZvVXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIlBvaW50Y3V0QWR2aWNlSW5mb1V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBUTlELE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLFVBQXNCLEVBQUUsS0FBd0IsRUFBRSxNQUFtQjtRQUNoRyxNQUFNLHNCQUFzQixHQUFHLFlBQVksQ0FBQyxvQkFBb0IsQ0FBcUIseUJBQXlCLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzNILCtDQUErQztRQUMvQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUM7WUFDN0IsTUFBTTtZQUNOLFVBQVU7U0FDWCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTSxDQUFDLHlCQUF5QixDQUFDLEtBQXdCLEVBQUUsTUFBbUI7UUFDNUUsTUFBTSxzQkFBc0IsR0FBMEMsWUFBWSxDQUFDLFdBQVcsQ0FBQyx5QkFBeUIsRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdkksT0FBTyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN4RixDQUFDO0NBQ0YifQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export * from './AdviceInfoUtil.js';
|
|
2
|
+
export * from './AspectInfoUtil.js';
|
|
3
|
+
export * from './CrosscutInfoUtil.js';
|
|
4
|
+
export * from './PointcutAdviceInfoUtil.js';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLDZCQUE2QixDQUFDIn0=
|
package/dist/index.d.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export * from '@eggjs/tegg-types/aop';
|
|
2
|
-
export * from './src/decorator/Advice';
|
|
3
|
-
export * from './src/decorator/Pointcut';
|
|
4
|
-
export * from './src/decorator/Crosscut';
|
|
5
|
-
export * from './src/model/Aspect';
|
|
6
|
-
export * from './src/model/PointcutInfo';
|
|
7
|
-
export * from './src/util/AdviceInfoUtil';
|
|
8
|
-
export * from './src/util/CrosscutInfoUtil';
|
|
9
|
-
export * from './src/util/PointcutAdviceInfoUtil';
|
|
10
|
-
export * from './src/util/AspectInfoUtil';
|
|
11
|
-
export * from './src/AspectMetaBuilder';
|
|
12
|
-
export * from './src/CrosscutAdviceFactory';
|
package/dist/index.js
DELETED
|
@@ -1,29 +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("@eggjs/tegg-types/aop"), exports);
|
|
18
|
-
__exportStar(require("./src/decorator/Advice"), exports);
|
|
19
|
-
__exportStar(require("./src/decorator/Pointcut"), exports);
|
|
20
|
-
__exportStar(require("./src/decorator/Crosscut"), exports);
|
|
21
|
-
__exportStar(require("./src/model/Aspect"), exports);
|
|
22
|
-
__exportStar(require("./src/model/PointcutInfo"), exports);
|
|
23
|
-
__exportStar(require("./src/util/AdviceInfoUtil"), exports);
|
|
24
|
-
__exportStar(require("./src/util/CrosscutInfoUtil"), exports);
|
|
25
|
-
__exportStar(require("./src/util/PointcutAdviceInfoUtil"), exports);
|
|
26
|
-
__exportStar(require("./src/util/AspectInfoUtil"), exports);
|
|
27
|
-
__exportStar(require("./src/AspectMetaBuilder"), exports);
|
|
28
|
-
__exportStar(require("./src/CrosscutAdviceFactory"), exports);
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsd0RBQXNDO0FBQ3RDLHlEQUF1QztBQUN2QywyREFBeUM7QUFDekMsMkRBQXlDO0FBQ3pDLHFEQUFtQztBQUNuQywyREFBeUM7QUFDekMsNERBQTBDO0FBQzFDLDhEQUE0QztBQUM1QyxvRUFBa0Q7QUFDbEQsNERBQTBDO0FBQzFDLDBEQUF3QztBQUN4Qyw4REFBNEMifQ==
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AspectMetaBuilder = void 0;
|
|
4
|
-
const Aspect_1 = require("./model/Aspect");
|
|
5
|
-
const PointcutAdviceInfoUtil_1 = require("./util/PointcutAdviceInfoUtil");
|
|
6
|
-
class AspectMetaBuilder {
|
|
7
|
-
constructor(clazz, options) {
|
|
8
|
-
this.clazz = clazz;
|
|
9
|
-
this.crosscutAdviceFactory = options.crosscutAdviceFactory;
|
|
10
|
-
}
|
|
11
|
-
build() {
|
|
12
|
-
const aspectList = [];
|
|
13
|
-
const methods = AspectMetaBuilder.getAllMethods(this.clazz);
|
|
14
|
-
for (const method of methods) {
|
|
15
|
-
const aspect = this.doBuildMethodAspect(method);
|
|
16
|
-
if (aspect) {
|
|
17
|
-
aspectList.push(aspect);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
return aspectList;
|
|
21
|
-
}
|
|
22
|
-
static getAllMethods(clazz) {
|
|
23
|
-
const methodSet = new Set();
|
|
24
|
-
function getMethods(obj) {
|
|
25
|
-
if (obj) {
|
|
26
|
-
const propDescs = Object.getOwnPropertyDescriptors(obj);
|
|
27
|
-
for (const [name, desc] of Object.entries(propDescs)) {
|
|
28
|
-
if (desc.value instanceof Function) {
|
|
29
|
-
methodSet.add(name);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
getMethods(Object.getPrototypeOf(obj));
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
getMethods(clazz.prototype);
|
|
36
|
-
return Array.from(methodSet);
|
|
37
|
-
}
|
|
38
|
-
doBuildMethodAspect(method) {
|
|
39
|
-
const crosscutAdviceList = this.crosscutAdviceFactory.getAdvice(this.clazz, method);
|
|
40
|
-
// decorator execute in reverse order
|
|
41
|
-
const pointcutAdviceList = PointcutAdviceInfoUtil_1.PointcutAdviceInfoUtil.getPointcutAdviceInfoList(this.clazz, method);
|
|
42
|
-
if (!crosscutAdviceList.length && !pointcutAdviceList.length)
|
|
43
|
-
return;
|
|
44
|
-
const aspectBuilder = new Aspect_1.AspectBuilder(this.clazz, method);
|
|
45
|
-
for (const advice of crosscutAdviceList) {
|
|
46
|
-
aspectBuilder.addAdvice(advice);
|
|
47
|
-
}
|
|
48
|
-
for (const advice of pointcutAdviceList) {
|
|
49
|
-
aspectBuilder.addAdvice(advice);
|
|
50
|
-
}
|
|
51
|
-
return aspectBuilder.build();
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
exports.AspectMetaBuilder = AspectMetaBuilder;
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXNwZWN0TWV0YUJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvQXNwZWN0TWV0YUJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsMkNBQXVEO0FBQ3ZELDBFQUF1RTtBQUV2RSxNQUFhLGlCQUFpQjtJQUk1QixZQUFZLEtBQXdCLEVBQUUsT0FFckM7UUFDQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMscUJBQXFCLEdBQUcsT0FBTyxDQUFDLHFCQUFxQixDQUFDO0lBQzdELENBQUM7SUFFRCxLQUFLO1FBQ0gsTUFBTSxVQUFVLEdBQWtCLEVBQUUsQ0FBQztRQUNyQyxNQUFNLE9BQU8sR0FBRyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVELEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxFQUFFLENBQUM7WUFDN0IsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2hELElBQUksTUFBTSxFQUFFLENBQUM7Z0JBQ1gsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMxQixDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxNQUFNLENBQUMsYUFBYSxDQUFDLEtBQUs7UUFDeEIsTUFBTSxTQUFTLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztRQUNwQyxTQUFTLFVBQVUsQ0FBQyxHQUFHO1lBQ3JCLElBQUksR0FBRyxFQUFFLENBQUM7Z0JBQ1IsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLHlCQUF5QixDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN4RCxLQUFLLE1BQU0sQ0FBRSxJQUFJLEVBQUUsSUFBSSxDQUFFLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO29CQUN2RCxJQUFJLElBQUksQ0FBQyxLQUFLLFlBQVksUUFBUSxFQUFFLENBQUM7d0JBQ25DLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3RCLENBQUM7Z0JBQ0gsQ0FBQztnQkFDRCxVQUFVLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3pDLENBQUM7UUFDSCxDQUFDO1FBRUQsVUFBVSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUU1QixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVPLG1CQUFtQixDQUFDLE1BQW1CO1FBQzdDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3BGLHFDQUFxQztRQUNyQyxNQUFNLGtCQUFrQixHQUFHLCtDQUFzQixDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDaEcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU07WUFBRSxPQUFPO1FBQ3JFLE1BQU0sYUFBYSxHQUFHLElBQUksc0JBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzVELEtBQUssTUFBTSxNQUFNLElBQUksa0JBQWtCLEVBQUUsQ0FBQztZQUN4QyxhQUFhLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xDLENBQUM7UUFDRCxLQUFLLE1BQU0sTUFBTSxJQUFJLGtCQUFrQixFQUFFLENBQUM7WUFDeEMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsQyxDQUFDO1FBQ0QsT0FBTyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDL0IsQ0FBQztDQUNGO0FBeERELDhDQXdEQyJ9
|
|
@@ -1,31 +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.CrosscutAdviceFactory = void 0;
|
|
7
|
-
const node_assert_1 = __importDefault(require("node:assert"));
|
|
8
|
-
const CrosscutInfoUtil_1 = require("./util/CrosscutInfoUtil");
|
|
9
|
-
class CrosscutAdviceFactory {
|
|
10
|
-
constructor() {
|
|
11
|
-
this.crosscutAdviceClazzList = [];
|
|
12
|
-
}
|
|
13
|
-
registerCrossAdviceClazz(clazz) {
|
|
14
|
-
(0, node_assert_1.default)(CrosscutInfoUtil_1.CrosscutInfoUtil.isCrosscutAdvice(clazz), `clazz ${clazz.name} is not crosscut advice`);
|
|
15
|
-
this.crosscutAdviceClazzList.push(clazz);
|
|
16
|
-
}
|
|
17
|
-
getAdvice(clazz, method) {
|
|
18
|
-
const result = [];
|
|
19
|
-
for (const crosscutAdviceClazz of this.crosscutAdviceClazzList) {
|
|
20
|
-
const crosscutInfoList = CrosscutInfoUtil_1.CrosscutInfoUtil.getCrosscutInfoList(crosscutAdviceClazz);
|
|
21
|
-
for (const crosscutInfo of crosscutInfoList) {
|
|
22
|
-
if (crosscutInfo.pointcutInfo.match(clazz, method)) {
|
|
23
|
-
result.push(crosscutInfo.adviceInfo);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
return result;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
exports.CrosscutAdviceFactory = CrosscutAdviceFactory;
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3Jvc3NjdXRBZHZpY2VGYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL0Nyb3NzY3V0QWR2aWNlRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSw4REFBaUM7QUFFakMsOERBQTJEO0FBRTNELE1BQWEscUJBQXFCO0lBQWxDO1FBQ21CLDRCQUF1QixHQUFzQyxFQUFFLENBQUM7SUFtQm5GLENBQUM7SUFqQkMsd0JBQXdCLENBQUMsS0FBaUM7UUFDeEQsSUFBQSxxQkFBTSxFQUFDLG1DQUFnQixDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxFQUFFLFNBQVMsS0FBSyxDQUFDLElBQUkseUJBQXlCLENBQUMsQ0FBQztRQUMvRixJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBd0IsRUFBRSxNQUFtQjtRQUNyRCxNQUFNLE1BQU0sR0FBc0IsRUFBRSxDQUFDO1FBQ3JDLEtBQUssTUFBTSxtQkFBbUIsSUFBSSxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztZQUMvRCxNQUFNLGdCQUFnQixHQUFHLG1DQUFnQixDQUFDLG1CQUFtQixDQUFDLG1CQUFtQixDQUFDLENBQUM7WUFDbkYsS0FBSyxNQUFNLFlBQVksSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO2dCQUM1QyxJQUFJLFlBQVksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDO29CQUNuRCxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDdkMsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztDQUNGO0FBcEJELHNEQW9CQyJ9
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Advice = Advice;
|
|
4
|
-
const core_decorator_1 = require("@eggjs/core-decorator");
|
|
5
|
-
const tegg_common_util_1 = require("@eggjs/tegg-common-util");
|
|
6
|
-
const tegg_types_1 = require("@eggjs/tegg-types");
|
|
7
|
-
const AdviceInfoUtil_1 = require("../util/AdviceInfoUtil");
|
|
8
|
-
const defaultAdviceParam = {
|
|
9
|
-
accessLevel: tegg_types_1.AccessLevel.PUBLIC,
|
|
10
|
-
initType: tegg_types_1.ObjectInitType.CONTEXT,
|
|
11
|
-
};
|
|
12
|
-
function Advice(param) {
|
|
13
|
-
return function (constructor) {
|
|
14
|
-
AdviceInfoUtil_1.AdviceInfoUtil.setIsAdvice(true, constructor);
|
|
15
|
-
const func = (0, core_decorator_1.Prototype)({
|
|
16
|
-
...defaultAdviceParam,
|
|
17
|
-
...param,
|
|
18
|
-
});
|
|
19
|
-
func(constructor);
|
|
20
|
-
core_decorator_1.PrototypeUtil.setFilePath(constructor, tegg_common_util_1.StackUtil.getCalleeFromStack(false, 5));
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWR2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2RlY29yYXRvci9BZHZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFXQSx3QkFVQztBQXJCRCwwREFBaUU7QUFDakUsOERBQW9EO0FBQ3BELGtEQUFnRTtBQUVoRSwyREFBd0Q7QUFFeEQsTUFBTSxrQkFBa0IsR0FBRztJQUN6QixXQUFXLEVBQUUsd0JBQVcsQ0FBQyxNQUFNO0lBQy9CLFFBQVEsRUFBRSwyQkFBYyxDQUFDLE9BQU87Q0FDakMsQ0FBQztBQUVGLFNBQWdCLE1BQU0sQ0FBQyxLQUF1QjtJQUM1QyxPQUFPLFVBQVMsV0FBdUM7UUFDckQsK0JBQWMsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQzlDLE1BQU0sSUFBSSxHQUFHLElBQUEsMEJBQVMsRUFBQztZQUNyQixHQUFHLGtCQUFrQjtZQUNyQixHQUFHLEtBQUs7U0FDVCxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbEIsOEJBQWEsQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLDRCQUFTLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakYsQ0FBQyxDQUFDO0FBQ0osQ0FBQyJ9
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Crosscut = Crosscut;
|
|
4
|
-
const tegg_types_1 = require("@eggjs/tegg-types");
|
|
5
|
-
const CrosscutInfoUtil_1 = require("../util/CrosscutInfoUtil");
|
|
6
|
-
const PointcutInfo_1 = require("../model/PointcutInfo");
|
|
7
|
-
const defaultCrossOptions = {
|
|
8
|
-
order: 100,
|
|
9
|
-
};
|
|
10
|
-
function Crosscut(param, options) {
|
|
11
|
-
return function (constructor) {
|
|
12
|
-
var _a, _b, _c;
|
|
13
|
-
let crosscutInfo;
|
|
14
|
-
if (param.type === tegg_types_1.PointcutType.CLASS) {
|
|
15
|
-
crosscutInfo = {
|
|
16
|
-
pointcutInfo: new PointcutInfo_1.ClassPointInfo(param.clazz, param.methodName),
|
|
17
|
-
adviceInfo: {
|
|
18
|
-
clazz: constructor,
|
|
19
|
-
order: (_a = options === null || options === void 0 ? void 0 : options.order) !== null && _a !== void 0 ? _a : defaultCrossOptions.order,
|
|
20
|
-
adviceParams: options === null || options === void 0 ? void 0 : options.adviceParams,
|
|
21
|
-
},
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
else if (param.type === tegg_types_1.PointcutType.NAME) {
|
|
25
|
-
crosscutInfo = {
|
|
26
|
-
pointcutInfo: new PointcutInfo_1.NamePointInfo(param.className, param.methodName),
|
|
27
|
-
adviceInfo: {
|
|
28
|
-
clazz: constructor,
|
|
29
|
-
order: (_b = options === null || options === void 0 ? void 0 : options.order) !== null && _b !== void 0 ? _b : defaultCrossOptions.order,
|
|
30
|
-
adviceParams: options === null || options === void 0 ? void 0 : options.adviceParams,
|
|
31
|
-
},
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
else {
|
|
35
|
-
crosscutInfo = {
|
|
36
|
-
pointcutInfo: new PointcutInfo_1.CustomPointInfo(param.callback),
|
|
37
|
-
adviceInfo: {
|
|
38
|
-
clazz: constructor,
|
|
39
|
-
order: (_c = options === null || options === void 0 ? void 0 : options.order) !== null && _c !== void 0 ? _c : defaultCrossOptions.order,
|
|
40
|
-
adviceParams: options === null || options === void 0 ? void 0 : options.adviceParams,
|
|
41
|
-
},
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
CrosscutInfoUtil_1.CrosscutInfoUtil.setIsCrosscutAdvice(true, constructor);
|
|
45
|
-
CrosscutInfoUtil_1.CrosscutInfoUtil.addCrosscutInfo(crosscutInfo, constructor);
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3Jvc3NjdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGVjb3JhdG9yL0Nyb3NzY3V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBU0EsNEJBa0NDO0FBM0NELGtEQUFpRDtBQUVqRCwrREFBNEQ7QUFDNUQsd0RBQXVGO0FBRXZGLE1BQU0sbUJBQW1CLEdBQUc7SUFDMUIsS0FBSyxFQUFFLEdBQUc7Q0FDWCxDQUFDO0FBRUYsU0FBZ0IsUUFBUSxDQUFDLEtBQW9CLEVBQUUsT0FBeUI7SUFDdEUsT0FBTyxVQUFTLFdBQXVDOztRQUNyRCxJQUFJLFlBQTBCLENBQUM7UUFDL0IsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLHlCQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDdEMsWUFBWSxHQUFHO2dCQUNiLFlBQVksRUFBRSxJQUFJLDZCQUFjLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDO2dCQUMvRCxVQUFVLEVBQUU7b0JBQ1YsS0FBSyxFQUFFLFdBQVc7b0JBQ2xCLEtBQUssRUFBRSxNQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxLQUFLLG1DQUFJLG1CQUFtQixDQUFDLEtBQUs7b0JBQ2xELFlBQVksRUFBRSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsWUFBWTtpQkFDcEM7YUFDRixDQUFDO1FBQ0osQ0FBQzthQUFNLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyx5QkFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzVDLFlBQVksR0FBRztnQkFDYixZQUFZLEVBQUUsSUFBSSw0QkFBYSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQztnQkFDbEUsVUFBVSxFQUFFO29CQUNWLEtBQUssRUFBRSxXQUFXO29CQUNsQixLQUFLLEVBQUUsTUFBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsS0FBSyxtQ0FBSSxtQkFBbUIsQ0FBQyxLQUFLO29CQUNsRCxZQUFZLEVBQUUsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLFlBQVk7aUJBQ3BDO2FBQ0YsQ0FBQztRQUNKLENBQUM7YUFBTSxDQUFDO1lBQ04sWUFBWSxHQUFHO2dCQUNiLFlBQVksRUFBRSxJQUFJLDhCQUFlLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQztnQkFDakQsVUFBVSxFQUFFO29CQUNWLEtBQUssRUFBRSxXQUFXO29CQUNsQixLQUFLLEVBQUUsTUFBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsS0FBSyxtQ0FBSSxtQkFBbUIsQ0FBQyxLQUFLO29CQUNsRCxZQUFZLEVBQUUsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLFlBQVk7aUJBQ3BDO2FBQ0YsQ0FBQztRQUNKLENBQUM7UUFDRCxtQ0FBZ0IsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDeEQsbUNBQWdCLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxXQUFXLENBQUMsQ0FBQztJQUM5RCxDQUFDLENBQUM7QUFDSixDQUFDIn0=
|
|
@@ -1,26 +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.Pointcut = Pointcut;
|
|
7
|
-
const PointcutAdviceInfoUtil_1 = require("../util/PointcutAdviceInfoUtil");
|
|
8
|
-
const assert_1 = __importDefault(require("assert"));
|
|
9
|
-
const AdviceInfoUtil_1 = require("../util/AdviceInfoUtil");
|
|
10
|
-
const defaultPointcutOptions = {
|
|
11
|
-
order: 1000,
|
|
12
|
-
};
|
|
13
|
-
function Pointcut(adviceClazz, options) {
|
|
14
|
-
return function (target, propertyKey) {
|
|
15
|
-
var _a;
|
|
16
|
-
(0, assert_1.default)(AdviceInfoUtil_1.AdviceInfoUtil.isAdvice(adviceClazz), `class ${adviceClazz} has no @Advice decorator`);
|
|
17
|
-
const targetClazz = target.constructor;
|
|
18
|
-
const methodName = propertyKey;
|
|
19
|
-
PointcutAdviceInfoUtil_1.PointcutAdviceInfoUtil.addPointcutAdviceInfo({
|
|
20
|
-
clazz: adviceClazz,
|
|
21
|
-
order: (_a = options === null || options === void 0 ? void 0 : options.order) !== null && _a !== void 0 ? _a : defaultPointcutOptions.order,
|
|
22
|
-
adviceParams: options === null || options === void 0 ? void 0 : options.adviceParams,
|
|
23
|
-
}, targetClazz, methodName);
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUG9pbnRjdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGVjb3JhdG9yL1BvaW50Y3V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBU0EsNEJBV0M7QUFuQkQsMkVBQXdFO0FBQ3hFLG9EQUE0QjtBQUM1QiwyREFBd0Q7QUFFeEQsTUFBTSxzQkFBc0IsR0FBRztJQUM3QixLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUM7QUFFRixTQUFnQixRQUFRLENBQTRCLFdBQTZDLEVBQUUsT0FBNEI7SUFDN0gsT0FBTyxVQUFTLE1BQVcsRUFBRSxXQUF3Qjs7UUFDbkQsSUFBQSxnQkFBTSxFQUFDLCtCQUFjLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFLFNBQVMsV0FBVywyQkFBMkIsQ0FBQyxDQUFDO1FBQzlGLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFnQyxDQUFDO1FBQzVELE1BQU0sVUFBVSxHQUFHLFdBQXFCLENBQUM7UUFDekMsK0NBQXNCLENBQUMscUJBQXFCLENBQUM7WUFDM0MsS0FBSyxFQUFFLFdBQVc7WUFDbEIsS0FBSyxFQUFFLE1BQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLEtBQUssbUNBQUksc0JBQXNCLENBQUMsS0FBSztZQUNyRCxZQUFZLEVBQUUsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLFlBQVk7U0FDcEMsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDOUIsQ0FBQyxDQUFDO0FBQ0osQ0FBQyJ9
|
package/dist/src/model/Aspect.js
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AspectBuilder = exports.Aspect = void 0;
|
|
4
|
-
class Aspect {
|
|
5
|
-
constructor(clazz, method, adviceList) {
|
|
6
|
-
this.clazz = clazz;
|
|
7
|
-
this.method = method;
|
|
8
|
-
this.adviceList = adviceList;
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
exports.Aspect = Aspect;
|
|
12
|
-
class AspectBuilder {
|
|
13
|
-
constructor(clazz, method) {
|
|
14
|
-
this.clazz = clazz;
|
|
15
|
-
this.method = method;
|
|
16
|
-
this.adviceList = [];
|
|
17
|
-
}
|
|
18
|
-
addAdvice(adviceInfo) {
|
|
19
|
-
this.adviceList.push(adviceInfo);
|
|
20
|
-
}
|
|
21
|
-
build() {
|
|
22
|
-
this.adviceList.sort((a, b) => a.order - b.order);
|
|
23
|
-
const aspectAdviceList = this.adviceList.map((t, i) => {
|
|
24
|
-
return {
|
|
25
|
-
clazz: t.clazz,
|
|
26
|
-
name: this.adviceName(t.clazz, i),
|
|
27
|
-
adviceParams: t.adviceParams,
|
|
28
|
-
};
|
|
29
|
-
});
|
|
30
|
-
return new Aspect(this.clazz, this.method, aspectAdviceList);
|
|
31
|
-
}
|
|
32
|
-
adviceName(advice, index) {
|
|
33
|
-
return `${this.clazz.name}#${String(this.method)}#${advice.name}#${index}`;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
exports.AspectBuilder = AspectBuilder;
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXNwZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21vZGVsL0FzcGVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxNQUFhLE1BQU07SUFLakIsWUFBWSxLQUF3QixFQUFFLE1BQW1CLEVBQUUsVUFBbUM7UUFDNUYsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7SUFDL0IsQ0FBQztDQUNGO0FBVkQsd0JBVUM7QUFFRCxNQUFhLGFBQWE7SUFLeEIsWUFBWSxLQUF3QixFQUFFLE1BQW1CO1FBQ3ZELElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxTQUFTLENBQUMsVUFBc0I7UUFDOUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDcEQsT0FBTztnQkFDTCxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUs7Z0JBQ2QsSUFBSSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7Z0JBQ2pDLFlBQVksRUFBRSxDQUFDLENBQUMsWUFBWTthQUM3QixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFTyxVQUFVLENBQUMsTUFBa0MsRUFBRSxLQUFhO1FBQ2xFLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7SUFDN0UsQ0FBQztDQUNGO0FBOUJELHNDQThCQyJ9
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CustomPointInfo = exports.NamePointInfo = exports.ClassPointInfo = void 0;
|
|
4
|
-
const tegg_types_1 = require("@eggjs/tegg-types");
|
|
5
|
-
class ClassPointInfo {
|
|
6
|
-
constructor(clazz, method) {
|
|
7
|
-
this.type = tegg_types_1.PointcutType.CLASS;
|
|
8
|
-
this.clazz = clazz;
|
|
9
|
-
this.method = method;
|
|
10
|
-
}
|
|
11
|
-
match(clazz, method) {
|
|
12
|
-
return (
|
|
13
|
-
// self class
|
|
14
|
-
this.clazz === clazz ||
|
|
15
|
-
// inherit case
|
|
16
|
-
clazz.prototype instanceof this.clazz) && this.method === method;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
exports.ClassPointInfo = ClassPointInfo;
|
|
20
|
-
class NamePointInfo {
|
|
21
|
-
constructor(className, methodName) {
|
|
22
|
-
this.type = tegg_types_1.PointcutType.NAME;
|
|
23
|
-
this.className = className;
|
|
24
|
-
this.methodName = methodName;
|
|
25
|
-
}
|
|
26
|
-
match(clazz, method) {
|
|
27
|
-
return this.className.test(clazz.name) && this.methodName.test(String(method));
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
exports.NamePointInfo = NamePointInfo;
|
|
31
|
-
class CustomPointInfo {
|
|
32
|
-
constructor(cb) {
|
|
33
|
-
this.type = tegg_types_1.PointcutType.CUSTOM;
|
|
34
|
-
this.cb = cb;
|
|
35
|
-
}
|
|
36
|
-
match(clazz, method) {
|
|
37
|
-
return this.cb(clazz, method);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
exports.CustomPointInfo = CustomPointInfo;
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUG9pbnRjdXRJbmZvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21vZGVsL1BvaW50Y3V0SW5mby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxrREFBaUQ7QUFHakQsTUFBYSxjQUFjO0lBS3pCLFlBQVksS0FBd0IsRUFBRSxNQUFtQjtRQUpoRCxTQUFJLEdBQUcseUJBQVksQ0FBQyxLQUFLLENBQUM7UUFLakMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVELEtBQUssQ0FBQyxLQUF3QixFQUFFLE1BQW1CO1FBQ2pELE9BQU87UUFDTCxhQUFhO1FBQ2IsSUFBSSxDQUFDLEtBQUssS0FBSyxLQUFLO1lBQ3BCLGVBQWU7WUFDZixLQUFLLENBQUMsU0FBUyxZQUFZLElBQUksQ0FBQyxLQUFLLENBQ3RDLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUM7SUFDOUIsQ0FBQztDQUNGO0FBbEJELHdDQWtCQztBQUVELE1BQWEsYUFBYTtJQUt4QixZQUFZLFNBQWlCLEVBQUUsVUFBa0I7UUFKeEMsU0FBSSxHQUFHLHlCQUFZLENBQUMsSUFBSSxDQUFDO1FBS2hDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0lBQy9CLENBQUM7SUFFRCxLQUFLLENBQUMsS0FBd0IsRUFBRSxNQUFtQjtRQUNqRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNqRixDQUFDO0NBQ0Y7QUFiRCxzQ0FhQztBQUVELE1BQWEsZUFBZTtJQUkxQixZQUFZLEVBQTBCO1FBSDdCLFNBQUksR0FBRyx5QkFBWSxDQUFDLE1BQU0sQ0FBQztRQUlsQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUNmLENBQUM7SUFFRCxLQUFLLENBQUMsS0FBd0IsRUFBRSxNQUFtQjtRQUNqRCxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7Q0FDRjtBQVhELDBDQVdDIn0=
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AdviceInfoUtil = exports.IS_ADVICE = void 0;
|
|
4
|
-
const core_decorator_1 = require("@eggjs/core-decorator");
|
|
5
|
-
exports.IS_ADVICE = Symbol.for('EggPrototype#isAdvice');
|
|
6
|
-
class AdviceInfoUtil {
|
|
7
|
-
static setIsAdvice(isAdvice, clazz) {
|
|
8
|
-
core_decorator_1.MetadataUtil.defineMetaData(exports.IS_ADVICE, isAdvice, clazz);
|
|
9
|
-
}
|
|
10
|
-
static isAdvice(clazz) {
|
|
11
|
-
return !!core_decorator_1.MetadataUtil.getMetaData(exports.IS_ADVICE, clazz);
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
exports.AdviceInfoUtil = AdviceInfoUtil;
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWR2aWNlSW5mb1V0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbC9BZHZpY2VJbmZvVXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwwREFBcUQ7QUFHeEMsUUFBQSxTQUFTLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0FBRTdELE1BQWEsY0FBYztJQUN6QixNQUFNLENBQUMsV0FBVyxDQUFDLFFBQWlCLEVBQUUsS0FBaUM7UUFDckUsNkJBQVksQ0FBQyxjQUFjLENBQUMsaUJBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBaUM7UUFDL0MsT0FBTyxDQUFDLENBQUMsNkJBQVksQ0FBQyxXQUFXLENBQUMsaUJBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN0RCxDQUFDO0NBQ0Y7QUFSRCx3Q0FRQyJ9
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AspectInfoUtil = void 0;
|
|
4
|
-
const core_decorator_1 = require("@eggjs/core-decorator");
|
|
5
|
-
const tegg_types_1 = require("@eggjs/tegg-types");
|
|
6
|
-
class AspectInfoUtil {
|
|
7
|
-
static setAspectList(aspectList, clazz) {
|
|
8
|
-
core_decorator_1.MetadataUtil.defineMetaData(tegg_types_1.ASPECT_LIST, aspectList, clazz);
|
|
9
|
-
}
|
|
10
|
-
static getAspectList(clazz) {
|
|
11
|
-
return core_decorator_1.MetadataUtil.getMetaData(tegg_types_1.ASPECT_LIST, clazz) || [];
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
exports.AspectInfoUtil = AspectInfoUtil;
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXNwZWN0SW5mb1V0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbC9Bc3BlY3RJbmZvVXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwwREFBcUQ7QUFDckQsa0RBQWdEO0FBSWhELE1BQWEsY0FBYztJQUN6QixNQUFNLENBQUMsYUFBYSxDQUFDLFVBQXlCLEVBQUUsS0FBaUM7UUFDL0UsNkJBQVksQ0FBQyxjQUFjLENBQUMsd0JBQVcsRUFBRSxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBaUM7UUFDcEQsT0FBTyw2QkFBWSxDQUFDLFdBQVcsQ0FBQyx3QkFBVyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM1RCxDQUFDO0NBQ0Y7QUFSRCx3Q0FRQyJ9
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CrosscutInfoUtil = void 0;
|
|
4
|
-
const core_decorator_1 = require("@eggjs/core-decorator");
|
|
5
|
-
const tegg_types_1 = require("@eggjs/tegg-types");
|
|
6
|
-
class CrosscutInfoUtil {
|
|
7
|
-
static setIsCrosscutAdvice(isCrosscutAdvice, clazz) {
|
|
8
|
-
core_decorator_1.MetadataUtil.defineMetaData(tegg_types_1.IS_CROSSCUT_ADVICE, isCrosscutAdvice, clazz);
|
|
9
|
-
}
|
|
10
|
-
static isCrosscutAdvice(clazz) {
|
|
11
|
-
return !!core_decorator_1.MetadataUtil.getMetaData(tegg_types_1.IS_CROSSCUT_ADVICE, clazz);
|
|
12
|
-
}
|
|
13
|
-
static addCrosscutInfo(crosscutInfo, clazz) {
|
|
14
|
-
const crosscutInfoList = core_decorator_1.MetadataUtil.initOwnArrayMetaData(tegg_types_1.CROSSCUT_INFO_LIST, clazz, []);
|
|
15
|
-
crosscutInfoList.push(crosscutInfo);
|
|
16
|
-
}
|
|
17
|
-
static getCrosscutInfoList(clazz) {
|
|
18
|
-
return core_decorator_1.MetadataUtil.getArrayMetaData(tegg_types_1.CROSSCUT_INFO_LIST, clazz) || [];
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
exports.CrosscutInfoUtil = CrosscutInfoUtil;
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3Jvc3NjdXRJbmZvVXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlsL0Nyb3NzY3V0SW5mb1V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMERBQXFEO0FBQ3JELGtEQUEyRTtBQUczRSxNQUFhLGdCQUFnQjtJQUMzQixNQUFNLENBQUMsbUJBQW1CLENBQUMsZ0JBQXlCLEVBQUUsS0FBaUM7UUFDckYsNkJBQVksQ0FBQyxjQUFjLENBQUMsK0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFpQztRQUN2RCxPQUFPLENBQUMsQ0FBQyw2QkFBWSxDQUFDLFdBQVcsQ0FBQywrQkFBa0IsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsTUFBTSxDQUFDLGVBQWUsQ0FBQyxZQUEwQixFQUFFLEtBQWlDO1FBQ2xGLE1BQU0sZ0JBQWdCLEdBQUcsNkJBQVksQ0FBQyxvQkFBb0IsQ0FBZSwrQkFBa0IsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDeEcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxNQUFNLENBQUMsbUJBQW1CLENBQUMsS0FBaUM7UUFDMUQsT0FBTyw2QkFBWSxDQUFDLGdCQUFnQixDQUFDLCtCQUFrQixFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN4RSxDQUFDO0NBQ0Y7QUFqQkQsNENBaUJDIn0=
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PointcutAdviceInfoUtil = void 0;
|
|
4
|
-
const core_decorator_1 = require("@eggjs/core-decorator");
|
|
5
|
-
const tegg_types_1 = require("@eggjs/tegg-types");
|
|
6
|
-
class PointcutAdviceInfoUtil {
|
|
7
|
-
static addPointcutAdviceInfo(adviceInfo, clazz, method) {
|
|
8
|
-
const pointcutAdviceInfoList = core_decorator_1.MetadataUtil.initOwnArrayMetaData(tegg_types_1.POINTCUT_ADVICE_INFO_LIAR, clazz, []);
|
|
9
|
-
// FIXME: parent/child should has correct order
|
|
10
|
-
pointcutAdviceInfoList.unshift({
|
|
11
|
-
method,
|
|
12
|
-
adviceInfo,
|
|
13
|
-
});
|
|
14
|
-
}
|
|
15
|
-
static getPointcutAdviceInfoList(clazz, method) {
|
|
16
|
-
const pointcutAdviceInfoList = core_decorator_1.MetadataUtil.getMetaData(tegg_types_1.POINTCUT_ADVICE_INFO_LIAR, clazz) || [];
|
|
17
|
-
return pointcutAdviceInfoList.filter(t => t.method === method).map(t => t.adviceInfo);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
exports.PointcutAdviceInfoUtil = PointcutAdviceInfoUtil;
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUG9pbnRjdXRBZHZpY2VJbmZvVXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlsL1BvaW50Y3V0QWR2aWNlSW5mb1V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMERBQXFEO0FBQ3JELGtEQUE4RDtBQVE5RCxNQUFhLHNCQUFzQjtJQUNqQyxNQUFNLENBQUMscUJBQXFCLENBQUMsVUFBc0IsRUFBRSxLQUF3QixFQUFFLE1BQW1CO1FBQ2hHLE1BQU0sc0JBQXNCLEdBQUcsNkJBQVksQ0FBQyxvQkFBb0IsQ0FBcUIsc0NBQXlCLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzNILCtDQUErQztRQUMvQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUM7WUFDN0IsTUFBTTtZQUNOLFVBQVU7U0FDWCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTSxDQUFDLHlCQUF5QixDQUFDLEtBQXdCLEVBQUUsTUFBbUI7UUFDNUUsTUFBTSxzQkFBc0IsR0FBMEMsNkJBQVksQ0FBQyxXQUFXLENBQUMsc0NBQXlCLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZJLE9BQU8sc0JBQXNCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDeEYsQ0FBQztDQUNGO0FBZEQsd0RBY0MifQ==
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|