@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.
- package/README.md +12 -0
- package/{src → dist}/AspectMetaBuilder.d.ts +2 -2
- package/dist/AspectMetaBuilder.js +54 -0
- package/dist/CrosscutAdviceFactory.js +22 -0
- package/dist/decorator/Advice.js +20 -0
- package/dist/decorator/Crosscut.js +44 -0
- package/dist/decorator/Pointcut.js +18 -0
- package/dist/decorator/index.d.ts +3 -0
- package/dist/decorator/index.js +4 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +7 -0
- package/dist/model/Aspect.js +38 -0
- package/dist/model/PointcutInfo.js +40 -0
- package/dist/model/index.d.ts +2 -0
- package/dist/model/index.js +3 -0
- package/dist/util/AdviceInfoUtil.js +11 -0
- package/{src → dist}/util/AspectInfoUtil.d.ts +1 -1
- package/dist/util/AspectInfoUtil.js +12 -0
- package/dist/util/CrosscutInfoUtil.js +18 -0
- package/dist/util/PointcutAdviceInfoUtil.js +17 -0
- package/dist/util/index.d.ts +4 -0
- package/dist/util/index.js +5 -0
- package/package.json +23 -25
- package/src/AspectMetaBuilder.js +0 -53
- package/src/CrosscutAdviceFactory.js +0 -22
- package/src/decorator/Advice.js +0 -20
- package/src/decorator/Crosscut.js +0 -44
- package/src/decorator/Pointcut.js +0 -18
- package/src/decorator/index.d.ts +0 -3
- package/src/decorator/index.js +0 -4
- package/src/index.d.ts +0 -6
- package/src/index.js +0 -7
- package/src/model/Aspect.js +0 -38
- package/src/model/PointcutInfo.js +0 -40
- package/src/model/index.d.ts +0 -2
- package/src/model/index.js +0 -3
- package/src/util/AdviceInfoUtil.js +0 -11
- package/src/util/AspectInfoUtil.js +0 -11
- package/src/util/CrosscutInfoUtil.js +0 -18
- package/src/util/PointcutAdviceInfoUtil.js +0 -17
- package/src/util/index.d.ts +0 -4
- package/src/util/index.js +0 -5
- /package/{src → dist}/CrosscutAdviceFactory.d.ts +0 -0
- /package/{src → dist}/decorator/Advice.d.ts +0 -0
- /package/{src → dist}/decorator/Crosscut.d.ts +0 -0
- /package/{src → dist}/decorator/Pointcut.d.ts +0 -0
- /package/{src → dist}/model/Aspect.d.ts +0 -0
- /package/{src → dist}/model/PointcutInfo.d.ts +0 -0
- /package/{src → dist}/util/AdviceInfoUtil.d.ts +0 -0
- /package/{src → dist}/util/CrosscutInfoUtil.d.ts +0 -0
- /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
|
+
[](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.
|
|
3
|
-
import { Aspect } from './model/index.
|
|
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,4 @@
|
|
|
1
|
+
export * from "./Advice.js";
|
|
2
|
+
export * from "./Crosscut.js";
|
|
3
|
+
export * from "./Pointcut.js";
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGVjb3JhdG9yL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsZUFBZSxDQUFDIn0=
|
package/dist/index.d.ts
ADDED
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,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.
|
|
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,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.
|
|
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": "
|
|
20
|
-
"@eggjs/tegg-common-util": "
|
|
21
|
-
"@eggjs/tegg-
|
|
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": ">=
|
|
27
|
+
"node": ">=22.18.0"
|
|
35
28
|
},
|
|
36
29
|
"license": "MIT",
|
|
37
30
|
"type": "module",
|
|
38
31
|
"exports": {
|
|
39
|
-
".":
|
|
40
|
-
|
|
41
|
-
"default": "./src/index.js"
|
|
42
|
-
}
|
|
32
|
+
".": "./dist/index.js",
|
|
33
|
+
"./package.json": "./package.json"
|
|
43
34
|
},
|
|
44
35
|
"files": [
|
|
45
|
-
"
|
|
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
|
-
"
|
|
54
|
-
"
|
|
55
|
-
|
|
56
|
-
|
|
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
|
+
}
|
package/src/AspectMetaBuilder.js
DELETED
|
@@ -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==
|
package/src/decorator/Advice.js
DELETED
|
@@ -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
|
package/src/decorator/index.d.ts
DELETED
package/src/decorator/index.js
DELETED
|
@@ -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
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
|
package/src/model/Aspect.js
DELETED
|
@@ -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=
|
package/src/model/index.d.ts
DELETED
package/src/model/index.js
DELETED
|
@@ -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==
|
package/src/util/index.d.ts
DELETED
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
|