@eggjs/aop-decorator 3.52.0 → 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.
Files changed (44) hide show
  1. package/package.json +22 -20
  2. package/{dist/src → src}/AspectMetaBuilder.d.ts +3 -3
  3. package/src/AspectMetaBuilder.js +53 -0
  4. package/src/CrosscutAdviceFactory.js +22 -0
  5. package/src/decorator/Advice.js +20 -0
  6. package/src/decorator/Crosscut.js +44 -0
  7. package/src/decorator/Pointcut.js +18 -0
  8. package/src/decorator/index.d.ts +3 -0
  9. package/src/decorator/index.js +4 -0
  10. package/src/index.d.ts +6 -0
  11. package/src/index.js +7 -0
  12. package/src/model/Aspect.js +38 -0
  13. package/src/model/PointcutInfo.js +40 -0
  14. package/src/model/index.d.ts +2 -0
  15. package/src/model/index.js +3 -0
  16. package/src/util/AdviceInfoUtil.js +11 -0
  17. package/{dist/src → src}/util/AspectInfoUtil.d.ts +1 -1
  18. package/src/util/AspectInfoUtil.js +11 -0
  19. package/src/util/CrosscutInfoUtil.js +18 -0
  20. package/src/util/PointcutAdviceInfoUtil.js +17 -0
  21. package/src/util/index.d.ts +4 -0
  22. package/src/util/index.js +5 -0
  23. package/dist/index.d.ts +0 -12
  24. package/dist/index.js +0 -29
  25. package/dist/src/AspectMetaBuilder.js +0 -55
  26. package/dist/src/CrosscutAdviceFactory.js +0 -31
  27. package/dist/src/decorator/Advice.js +0 -23
  28. package/dist/src/decorator/Crosscut.js +0 -48
  29. package/dist/src/decorator/Pointcut.js +0 -26
  30. package/dist/src/model/Aspect.js +0 -37
  31. package/dist/src/model/PointcutInfo.js +0 -41
  32. package/dist/src/util/AdviceInfoUtil.js +0 -15
  33. package/dist/src/util/AspectInfoUtil.js +0 -15
  34. package/dist/src/util/CrosscutInfoUtil.js +0 -22
  35. package/dist/src/util/PointcutAdviceInfoUtil.js +0 -21
  36. /package/{dist/src → src}/CrosscutAdviceFactory.d.ts +0 -0
  37. /package/{dist/src → src}/decorator/Advice.d.ts +0 -0
  38. /package/{dist/src → src}/decorator/Crosscut.d.ts +0 -0
  39. /package/{dist/src → src}/decorator/Pointcut.d.ts +0 -0
  40. /package/{dist/src → src}/model/Aspect.d.ts +0 -0
  41. /package/{dist/src → src}/model/PointcutInfo.d.ts +0 -0
  42. /package/{dist/src → src}/util/AdviceInfoUtil.d.ts +0 -0
  43. /package/{dist/src → src}/util/CrosscutInfoUtil.d.ts +0 -0
  44. /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.52.0",
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": "^3.52.0",
20
- "@eggjs/tegg-common-util": "^3.52.0",
21
- "@eggjs/tegg-metadata": "^3.52.0",
22
- "@eggjs/tegg-types": "^3.52.0"
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 clean && tsc -p ./tsconfig.pub.json",
29
- "prepublishOnly": "npm run tsc:pub"
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": ">=14.0.0"
34
+ "node": ">=20.0.0"
36
35
  },
37
36
  "license": "MIT",
38
- "main": "dist/index.js",
37
+ "type": "module",
38
+ "exports": {
39
+ ".": {
40
+ "types": "./src/index.d.ts",
41
+ "default": "./src/index.js"
42
+ }
43
+ },
39
44
  "files": [
40
- "dist/**/*.js",
41
- "dist/**/*.d.ts"
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/mocha": "^10.0.1",
48
- "@types/node": "^20.2.4",
49
- "cross-env": "^7.0.3",
50
- "mocha": "^10.2.0",
51
- "ts-node": "^10.9.1",
52
- "typescript": "^5.0.4"
53
- },
54
- "gitHead": "35ed34855041dd8898046c9f3834d09a39da8ada"
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/Aspect';
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: any): PropertyKey[];
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,3 @@
1
+ export * from './Advice.js';
2
+ export * from './Crosscut.js';
3
+ export * from './Pointcut.js';
@@ -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
@@ -0,0 +1,6 @@
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';
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,2 @@
1
+ export * from './Aspect.js';
2
+ export * from './PointcutInfo.js';
@@ -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/Aspect';
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,4 @@
1
+ export * from './AdviceInfoUtil.js';
2
+ export * from './AspectInfoUtil.js';
3
+ export * from './CrosscutInfoUtil.js';
4
+ export * from './PointcutAdviceInfoUtil.js';
@@ -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
@@ -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