@eggjs/aop-decorator 4.0.0-beta.1 → 4.0.0-beta.10

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 (51) hide show
  1. package/README.md +12 -0
  2. package/{src → dist}/AspectMetaBuilder.d.ts +2 -2
  3. package/dist/AspectMetaBuilder.js +54 -0
  4. package/dist/CrosscutAdviceFactory.js +22 -0
  5. package/dist/decorator/Advice.js +20 -0
  6. package/dist/decorator/Crosscut.js +44 -0
  7. package/dist/decorator/Pointcut.js +18 -0
  8. package/dist/decorator/index.d.ts +3 -0
  9. package/dist/decorator/index.js +4 -0
  10. package/dist/index.d.ts +6 -0
  11. package/dist/index.js +7 -0
  12. package/dist/model/Aspect.js +38 -0
  13. package/dist/model/PointcutInfo.js +40 -0
  14. package/dist/model/index.d.ts +2 -0
  15. package/dist/model/index.js +3 -0
  16. package/dist/util/AdviceInfoUtil.js +11 -0
  17. package/{src → dist}/util/AspectInfoUtil.d.ts +1 -1
  18. package/dist/util/AspectInfoUtil.js +12 -0
  19. package/dist/util/CrosscutInfoUtil.js +18 -0
  20. package/dist/util/PointcutAdviceInfoUtil.js +17 -0
  21. package/dist/util/index.d.ts +4 -0
  22. package/dist/util/index.js +5 -0
  23. package/package.json +23 -25
  24. package/src/AspectMetaBuilder.js +0 -53
  25. package/src/CrosscutAdviceFactory.js +0 -22
  26. package/src/decorator/Advice.js +0 -20
  27. package/src/decorator/Crosscut.js +0 -44
  28. package/src/decorator/Pointcut.js +0 -18
  29. package/src/decorator/index.d.ts +0 -3
  30. package/src/decorator/index.js +0 -4
  31. package/src/index.d.ts +0 -6
  32. package/src/index.js +0 -7
  33. package/src/model/Aspect.js +0 -38
  34. package/src/model/PointcutInfo.js +0 -40
  35. package/src/model/index.d.ts +0 -2
  36. package/src/model/index.js +0 -3
  37. package/src/util/AdviceInfoUtil.js +0 -11
  38. package/src/util/AspectInfoUtil.js +0 -11
  39. package/src/util/CrosscutInfoUtil.js +0 -18
  40. package/src/util/PointcutAdviceInfoUtil.js +0 -17
  41. package/src/util/index.d.ts +0 -4
  42. package/src/util/index.js +0 -5
  43. /package/{src → dist}/CrosscutAdviceFactory.d.ts +0 -0
  44. /package/{src → dist}/decorator/Advice.d.ts +0 -0
  45. /package/{src → dist}/decorator/Crosscut.d.ts +0 -0
  46. /package/{src → dist}/decorator/Pointcut.d.ts +0 -0
  47. /package/{src → dist}/model/Aspect.d.ts +0 -0
  48. /package/{src → dist}/model/PointcutInfo.d.ts +0 -0
  49. /package/{src → dist}/util/AdviceInfoUtil.d.ts +0 -0
  50. /package/{src → dist}/util/CrosscutInfoUtil.d.ts +0 -0
  51. /package/{src → dist}/util/PointcutAdviceInfoUtil.d.ts +0 -0
package/README.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # `@eggjs/aop-decorator`
2
2
 
3
+ [![NPM version][npm-image]][npm-url]
4
+ [![Known Vulnerabilities][snyk-image]][snyk-url]
5
+ [![npm download][download-image]][download-url]
6
+ [![Node.js Version](https://img.shields.io/node/v/@eggjs/aop-decorator.svg?style=flat)](https://nodejs.org/en/download/)
7
+
8
+ [npm-image]: https://img.shields.io/npm/v/@eggjs/aop-decorator.svg?style=flat-square
9
+ [npm-url]: https://npmjs.org/package/@eggjs/aop-decorator
10
+ [snyk-image]: https://snyk.io/test/npm/@eggjs/aop-decorator/badge.svg?style=flat-square
11
+ [snyk-url]: https://snyk.io/test/npm/@eggjs/aop-decorator
12
+ [download-image]: https://img.shields.io/npm/dm/@eggjs/aop-decorator.svg?style=flat-square
13
+ [download-url]: https://npmjs.org/package/@eggjs/aop-decorator
14
+
3
15
  # Usage
4
16
 
5
17
  Please read [@eggjs/tegg-aop-plugin](../../plugin/aop/README.md)
@@ -1,6 +1,6 @@
1
1
  import type { EggProtoImplClass } from '@eggjs/tegg-types';
2
- import { CrosscutAdviceFactory } from './CrosscutAdviceFactory.js';
3
- import { Aspect } from './model/index.js';
2
+ import { CrosscutAdviceFactory } from './CrosscutAdviceFactory.ts';
3
+ import { Aspect } from './model/index.ts';
4
4
  export declare class AspectMetaBuilder {
5
5
  private readonly clazz;
6
6
  private readonly crosscutAdviceFactory;
@@ -0,0 +1,54 @@
1
+ import { CrosscutAdviceFactory } from "./CrosscutAdviceFactory.js";
2
+ import { Aspect, AspectBuilder } from "./model/index.js";
3
+ import { PointcutAdviceInfoUtil } from "./util/index.js";
4
+ export class AspectMetaBuilder {
5
+ clazz;
6
+ crosscutAdviceFactory;
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.getPointcutAdviceInfoList(this.clazz, method);
42
+ if (!crosscutAdviceList.length && !pointcutAdviceList.length)
43
+ return;
44
+ const aspectBuilder = new 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
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXNwZWN0TWV0YUJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvQXNwZWN0TWV0YUJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbkUsT0FBTyxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV6RCxNQUFNLE9BQU8saUJBQWlCO0lBQ1gsS0FBSyxDQUFvQjtJQUN6QixxQkFBcUIsQ0FBd0I7SUFFOUQsWUFBWSxLQUF3QixFQUFFLE9BRXJDO1FBQ0MsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLHFCQUFxQixHQUFHLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQztJQUM3RCxDQUFDO0lBRUQsS0FBSztRQUNILE1BQU0sVUFBVSxHQUFrQixFQUFFLENBQUM7UUFDckMsTUFBTSxPQUFPLEdBQUcsaUJBQWlCLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1RCxLQUFLLE1BQU0sTUFBTSxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQzdCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNoRCxJQUFJLE1BQU0sRUFBRSxDQUFDO2dCQUNYLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDMUIsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBRUQsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUF3QjtRQUMzQyxNQUFNLFNBQVMsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO1FBQ3BDLFNBQVMsVUFBVSxDQUFDLEdBQVE7WUFDMUIsSUFBSSxHQUFHLEVBQUUsQ0FBQztnQkFDUixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMseUJBQXlCLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3hELEtBQUssTUFBTSxDQUFFLElBQUksRUFBRSxJQUFJLENBQUUsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7b0JBQ3ZELElBQUksSUFBSSxDQUFDLEtBQUssWUFBWSxRQUFRLEVBQUUsQ0FBQzt3QkFDbkMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDdEIsQ0FBQztnQkFDSCxDQUFDO2dCQUNELFVBQVUsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDekMsQ0FBQztRQUNILENBQUM7UUFFRCxVQUFVLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRTVCLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRU8sbUJBQW1CLENBQUMsTUFBbUI7UUFDN0MsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDcEYscUNBQXFDO1FBQ3JDLE1BQU0sa0JBQWtCLEdBQUcsc0JBQXNCLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNoRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTTtZQUFFLE9BQU87UUFDckUsTUFBTSxhQUFhLEdBQUcsSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM1RCxLQUFLLE1BQU0sTUFBTSxJQUFJLGtCQUFrQixFQUFFLENBQUM7WUFDeEMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsQyxDQUFDO1FBQ0QsS0FBSyxNQUFNLE1BQU0sSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1lBQ3hDLGFBQWEsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEMsQ0FBQztRQUNELE9BQU8sYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQy9CLENBQUM7Q0FDRiJ9
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3Jvc3NjdXRBZHZpY2VGYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0Nyb3NzY3V0QWR2aWNlRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE1BQU0sTUFBTSxhQUFhLENBQUM7QUFHakMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFbkQsTUFBTSxPQUFPLHFCQUFxQjtJQUNmLHVCQUF1QixHQUFzQyxFQUFFLENBQUM7SUFFakYsd0JBQXdCLENBQUMsS0FBaUM7UUFDeEQsTUFBTSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxFQUFFLFNBQVMsS0FBSyxDQUFDLElBQUkseUJBQXlCLENBQUMsQ0FBQztRQUMvRixJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBd0IsRUFBRSxNQUFtQjtRQUNyRCxNQUFNLE1BQU0sR0FBc0IsRUFBRSxDQUFDO1FBQ3JDLEtBQUssTUFBTSxtQkFBbUIsSUFBSSxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztZQUMvRCxNQUFNLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDLG1CQUFtQixDQUFDLG1CQUFtQixDQUFDLENBQUM7WUFDbkYsS0FBSyxNQUFNLFlBQVksSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO2dCQUM1QyxJQUFJLFlBQVksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDO29CQUNuRCxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDdkMsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztDQUNGIn0=
@@ -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.SINGLETON,
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWR2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RlY29yYXRvci9BZHZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUdoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFbEQsTUFBTSxrQkFBa0IsR0FBRztJQUN6QixXQUFXLEVBQUUsV0FBVyxDQUFDLE1BQU07SUFDL0IsUUFBUSxFQUFFLGNBQWMsQ0FBQyxTQUFTO0NBQ25DLENBQUM7QUFFRixNQUFNLFVBQVUsTUFBTSxDQUFDLEtBQXVCO0lBQzVDLE9BQU8sVUFBUyxXQUF1QztRQUNyRCxjQUFjLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztRQUM5QyxNQUFNLElBQUksR0FBRyxTQUFTLENBQUM7WUFDckIsR0FBRyxrQkFBa0I7WUFDckIsR0FBRyxLQUFLO1NBQ1QsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2xCLGFBQWEsQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqRixDQUFDLENBQUM7QUFDSixDQUFDIn0=
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3Jvc3NjdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGVjb3JhdG9yL0Nyb3NzY3V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUdqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVuRixNQUFNLG1CQUFtQixHQUFHO0lBQzFCLEtBQUssRUFBRSxHQUFHO0NBQ1gsQ0FBQztBQUVGLE1BQU0sVUFBVSxRQUFRLENBQUMsS0FBb0IsRUFBRSxPQUF5QjtJQUN0RSxPQUFPLFVBQVMsV0FBdUM7UUFDckQsSUFBSSxZQUEwQixDQUFDO1FBQy9CLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDdEMsWUFBWSxHQUFHO2dCQUNiLFlBQVksRUFBRSxJQUFJLGNBQWMsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUM7Z0JBQy9ELFVBQVUsRUFBRTtvQkFDVixLQUFLLEVBQUUsV0FBVztvQkFDbEIsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLElBQUksbUJBQW1CLENBQUMsS0FBSztvQkFDbEQsWUFBWSxFQUFFLE9BQU8sRUFBRSxZQUFZO2lCQUNwQzthQUNGLENBQUM7UUFDSixDQUFDO2FBQU0sSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUM1QyxZQUFZLEdBQUc7Z0JBQ2IsWUFBWSxFQUFFLElBQUksYUFBYSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQztnQkFDbEUsVUFBVSxFQUFFO29CQUNWLEtBQUssRUFBRSxXQUFXO29CQUNsQixLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssSUFBSSxtQkFBbUIsQ0FBQyxLQUFLO29CQUNsRCxZQUFZLEVBQUUsT0FBTyxFQUFFLFlBQVk7aUJBQ3BDO2FBQ0YsQ0FBQztRQUNKLENBQUM7YUFBTSxDQUFDO1lBQ04sWUFBWSxHQUFHO2dCQUNiLFlBQVksRUFBRSxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO2dCQUNqRCxVQUFVLEVBQUU7b0JBQ1YsS0FBSyxFQUFFLFdBQVc7b0JBQ2xCLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxJQUFJLG1CQUFtQixDQUFDLEtBQUs7b0JBQ2xELFlBQVksRUFBRSxPQUFPLEVBQUUsWUFBWTtpQkFDcEM7YUFDRixDQUFDO1FBQ0osQ0FBQztRQUNELGdCQUFnQixDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztRQUN4RCxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzlELENBQUMsQ0FBQztBQUNKLENBQUMifQ==
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUG9pbnRjdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGVjb3JhdG9yL1BvaW50Y3V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sTUFBTSxNQUFNLGFBQWEsQ0FBQztBQUdqQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFMUUsTUFBTSxzQkFBc0IsR0FBRztJQUM3QixLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUM7QUFFRixNQUFNLFVBQVUsUUFBUSxDQUE0QixXQUE2QyxFQUFFLE9BQTRCO0lBQzdILE9BQU8sVUFBUyxNQUFXLEVBQUUsV0FBd0I7UUFDbkQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEVBQUUsU0FBUyxXQUFXLDJCQUEyQixDQUFDLENBQUM7UUFDOUYsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLFdBQWdDLENBQUM7UUFDNUQsTUFBTSxVQUFVLEdBQUcsV0FBcUIsQ0FBQztRQUN6QyxzQkFBc0IsQ0FBQyxxQkFBcUIsQ0FBQztZQUMzQyxLQUFLLEVBQUUsV0FBVztZQUNsQixLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssSUFBSSxzQkFBc0IsQ0FBQyxLQUFLO1lBQ3JELFlBQVksRUFBRSxPQUFPLEVBQUUsWUFBWTtTQUNwQyxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUM5QixDQUFDLENBQUM7QUFDSixDQUFDIn0=
@@ -0,0 +1,3 @@
1
+ export * from './Advice.ts';
2
+ export * from './Crosscut.ts';
3
+ export * from './Pointcut.ts';
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGVjb3JhdG9yL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsZUFBZSxDQUFDIn0=
@@ -0,0 +1,6 @@
1
+ export * from '@eggjs/tegg-types/aop';
2
+ export * from './decorator/index.ts';
3
+ export * from './model/index.ts';
4
+ export * from './util/index.ts';
5
+ export * from './AspectMetaBuilder.ts';
6
+ export * from './CrosscutAdviceFactory.ts';
package/dist/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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx1QkFBdUIsQ0FBQztBQUV0QyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsNEJBQTRCLENBQUMifQ==
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXNwZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZGVsL0FzcGVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQU8sTUFBTTtJQUNSLEtBQUssQ0FBb0I7SUFDekIsTUFBTSxDQUFjO0lBQ3BCLFVBQVUsQ0FBMEI7SUFFN0MsWUFBWSxLQUF3QixFQUFFLE1BQW1CLEVBQUUsVUFBbUM7UUFDNUYsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7SUFDL0IsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLGFBQWE7SUFDZixLQUFLLENBQW9CO0lBQ3pCLE1BQU0sQ0FBYztJQUNaLFVBQVUsQ0FBb0I7SUFFL0MsWUFBWSxLQUF3QixFQUFFLE1BQW1CO1FBQ3ZELElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxTQUFTLENBQUMsVUFBc0I7UUFDOUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDcEQsT0FBTztnQkFDTCxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUs7Z0JBQ2QsSUFBSSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7Z0JBQ2pDLFlBQVksRUFBRSxDQUFDLENBQUMsWUFBWTthQUM3QixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFTyxVQUFVLENBQUMsTUFBa0MsRUFBRSxLQUFhO1FBQ2xFLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7SUFDN0UsQ0FBQztDQUNGIn0=
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUG9pbnRjdXRJbmZvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZGVsL1BvaW50Y3V0SW5mby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHakQsTUFBTSxPQUFPLGNBQWM7SUFDaEIsSUFBSSxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUM7SUFDMUIsS0FBSyxDQUFvQjtJQUN6QixNQUFNLENBQWM7SUFFN0IsWUFBWSxLQUF3QixFQUFFLE1BQW1CO1FBQ3ZELElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxLQUFLLENBQUMsS0FBd0IsRUFBRSxNQUFtQjtRQUNqRCxPQUFPO1FBQ0wsYUFBYTtRQUNiLElBQUksQ0FBQyxLQUFLLEtBQUssS0FBSztZQUNwQixlQUFlO1lBQ2YsS0FBSyxDQUFDLFNBQVMsWUFBWSxJQUFJLENBQUMsS0FBSyxDQUN0QyxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssTUFBTSxDQUFDO0lBQzlCLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxhQUFhO0lBQ2YsSUFBSSxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUM7SUFDekIsU0FBUyxDQUFTO0lBQ2xCLFVBQVUsQ0FBUztJQUU1QixZQUFZLFNBQWlCLEVBQUUsVUFBa0I7UUFDL0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7SUFDL0IsQ0FBQztJQUVELEtBQUssQ0FBQyxLQUF3QixFQUFFLE1BQW1CO1FBQ2pELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxlQUFlO0lBQ2pCLElBQUksR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDO0lBQzNCLEVBQUUsQ0FBeUI7SUFFcEMsWUFBWSxFQUEwQjtRQUNwQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUNmLENBQUM7SUFFRCxLQUFLLENBQUMsS0FBd0IsRUFBRSxNQUFtQjtRQUNqRCxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7Q0FDRiJ9
@@ -0,0 +1,2 @@
1
+ export * from './Aspect.ts';
2
+ export * from './PointcutInfo.ts';
@@ -0,0 +1,3 @@
1
+ export * from "./Aspect.js";
2
+ export * from "./PointcutInfo.js";
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kZWwvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxtQkFBbUIsQ0FBQyJ9
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWR2aWNlSW5mb1V0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbC9BZHZpY2VJbmZvVXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFHckQsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLENBQUMsQ0FBQztBQUU3RCxNQUFNLE9BQU8sY0FBYztJQUN6QixNQUFNLENBQUMsV0FBVyxDQUFDLFFBQWlCLEVBQUUsS0FBaUM7UUFDckUsWUFBWSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQWlDO1FBQy9DLE9BQU8sQ0FBQyxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3RELENBQUM7Q0FDRiJ9
@@ -1,5 +1,5 @@
1
1
  import type { EggProtoImplClass, IAdvice } from '@eggjs/tegg-types';
2
- import { Aspect } from '../model/index.js';
2
+ import { Aspect } from '../model/index.ts';
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,12 @@
1
+ import { MetadataUtil } from '@eggjs/core-decorator';
2
+ import { ASPECT_LIST } from '@eggjs/tegg-types';
3
+ import { Aspect } from "../model/index.js";
4
+ export class AspectInfoUtil {
5
+ static setAspectList(aspectList, clazz) {
6
+ MetadataUtil.defineMetaData(ASPECT_LIST, aspectList, clazz);
7
+ }
8
+ static getAspectList(clazz) {
9
+ return MetadataUtil.getMetaData(ASPECT_LIST, clazz) || [];
10
+ }
11
+ }
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXNwZWN0SW5mb1V0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbC9Bc3BlY3RJbmZvVXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBR2hELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUUzQyxNQUFNLE9BQU8sY0FBYztJQUN6QixNQUFNLENBQUMsYUFBYSxDQUFDLFVBQXlCLEVBQUUsS0FBaUM7UUFDL0UsWUFBWSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxNQUFNLENBQUMsYUFBYSxDQUFDLEtBQWlDO1FBQ3BELE9BQU8sWUFBWSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzVELENBQUM7Q0FDRiJ9
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3Jvc3NjdXRJbmZvVXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL0Nyb3NzY3V0SW5mb1V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRzNFLE1BQU0sT0FBTyxnQkFBZ0I7SUFDM0IsTUFBTSxDQUFDLG1CQUFtQixDQUFDLGdCQUF5QixFQUFFLEtBQWlDO1FBQ3JGLFlBQVksQ0FBQyxjQUFjLENBQUMsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFpQztRQUN2RCxPQUFPLENBQUMsQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCxNQUFNLENBQUMsZUFBZSxDQUFDLFlBQTBCLEVBQUUsS0FBaUM7UUFDbEYsTUFBTSxnQkFBZ0IsR0FBRyxZQUFZLENBQUMsb0JBQW9CLENBQWUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3hHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsTUFBTSxDQUFDLG1CQUFtQixDQUFDLEtBQWlDO1FBQzFELE9BQU8sWUFBWSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN4RSxDQUFDO0NBQ0YifQ==
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUG9pbnRjdXRBZHZpY2VJbmZvVXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL1BvaW50Y3V0QWR2aWNlSW5mb1V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBUTlELE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLFVBQXNCLEVBQUUsS0FBd0IsRUFBRSxNQUFtQjtRQUNoRyxNQUFNLHNCQUFzQixHQUFHLFlBQVksQ0FBQyxvQkFBb0IsQ0FBcUIseUJBQXlCLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzNILCtDQUErQztRQUMvQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUM7WUFDN0IsTUFBTTtZQUNOLFVBQVU7U0FDWCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTSxDQUFDLHlCQUF5QixDQUFDLEtBQXdCLEVBQUUsTUFBbUI7UUFDNUUsTUFBTSxzQkFBc0IsR0FBMEMsWUFBWSxDQUFDLFdBQVcsQ0FBQyx5QkFBeUIsRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdkksT0FBTyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN4RixDQUFDO0NBQ0YifQ==
@@ -0,0 +1,4 @@
1
+ export * from './AdviceInfoUtil.ts';
2
+ export * from './AspectInfoUtil.ts';
3
+ export * from './CrosscutInfoUtil.ts';
4
+ export * from './PointcutAdviceInfoUtil.ts';
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLDZCQUE2QixDQUFDIn0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eggjs/aop-decorator",
3
- "version": "4.0.0-beta.1",
3
+ "version": "4.0.0-beta.10",
4
4
  "description": "tegg aop decorator",
5
5
  "keywords": [
6
6
  "tegg",
@@ -9,49 +9,47 @@
9
9
  "egg"
10
10
  ],
11
11
  "author": "killagu <killa123@126.com>",
12
- "homepage": "https://github.com/eggjs/tegg",
12
+ "homepage": "https://github.com/eggjs/tegg/tree/next/core/aop-decorator",
13
13
  "repository": {
14
14
  "type": "git",
15
15
  "url": "git@github.com:eggjs/tegg.git",
16
16
  "directory": "core/aop-decorator"
17
17
  },
18
18
  "dependencies": {
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
- },
24
- "scripts": {
25
- "clean": "tsc -b --clean",
26
- "tsc": "npm run clean && tsc -p ./tsconfig.json",
27
- "tsc:pub": "npm run tsc",
28
- "prepublishOnly": "npm run tsc"
19
+ "@eggjs/core-decorator": "4.0.0-beta.10",
20
+ "@eggjs/tegg-common-util": "4.0.0-beta.10",
21
+ "@eggjs/tegg-types": "4.0.0-beta.10"
29
22
  },
30
23
  "publishConfig": {
31
24
  "access": "public"
32
25
  },
33
26
  "engines": {
34
- "node": ">=20.0.0"
27
+ "node": ">=22.18.0"
35
28
  },
36
29
  "license": "MIT",
37
30
  "type": "module",
38
31
  "exports": {
39
- ".": {
40
- "types": "./src/index.d.ts",
41
- "default": "./src/index.js"
42
- }
32
+ ".": "./dist/index.js",
33
+ "./package.json": "./package.json"
43
34
  },
44
35
  "files": [
45
- "src/**/*.js",
46
- "src/**/*.d.ts"
36
+ "dist"
47
37
  ],
48
38
  "bugs": {
49
39
  "url": "https://github.com/eggjs/tegg/issues"
50
40
  },
51
41
  "devDependencies": {
52
- "@types/node": "22",
53
- "ts-node": "10",
54
- "typescript": "5"
55
- },
56
- "gitHead": "79a22905272d6de7fe06152231dff65d213d9166"
57
- }
42
+ "@types/node": "^22.10.5",
43
+ "typescript": "^5.9.3",
44
+ "tsdown": "^0.15.6",
45
+ "unplugin-unused": "^0.5.3"
46
+ },
47
+ "main": "./dist/index.js",
48
+ "module": "./dist/index.js",
49
+ "types": "./dist/index.d.ts",
50
+ "scripts": {
51
+ "clean": "rimraf dist",
52
+ "build": "tsdown && rimraf dist && tsc -b --clean && tsc",
53
+ "typecheck": "tsc --noEmit"
54
+ }
55
+ }
@@ -1,53 +0,0 @@
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==
@@ -1,22 +0,0 @@
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==
@@ -1,20 +0,0 @@
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
@@ -1,44 +0,0 @@
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=
@@ -1,18 +0,0 @@
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
@@ -1,3 +0,0 @@
1
- export * from './Advice.js';
2
- export * from './Crosscut.js';
3
- export * from './Pointcut.js';
@@ -1,4 +0,0 @@
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 DELETED
@@ -1,6 +0,0 @@
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 DELETED
@@ -1,7 +0,0 @@
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
@@ -1,38 +0,0 @@
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==
@@ -1,40 +0,0 @@
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=
@@ -1,2 +0,0 @@
1
- export * from './Aspect.js';
2
- export * from './PointcutInfo.js';
@@ -1,3 +0,0 @@
1
- export * from './Aspect.js';
2
- export * from './PointcutInfo.js';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLG1CQUFtQixDQUFDIn0=
@@ -1,11 +0,0 @@
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,11 +0,0 @@
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=
@@ -1,18 +0,0 @@
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==
@@ -1,17 +0,0 @@
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==
@@ -1,4 +0,0 @@
1
- export * from './AdviceInfoUtil.js';
2
- export * from './AspectInfoUtil.js';
3
- export * from './CrosscutInfoUtil.js';
4
- export * from './PointcutAdviceInfoUtil.js';
package/src/util/index.js DELETED
@@ -1,5 +0,0 @@
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=
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