@eggjs/aop-decorator 4.0.0-beta.35 → 4.0.0-beta.36
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/dist/AspectMetaBuilder.d.ts +17 -12
- package/dist/AspectMetaBuilder.js +48 -54
- package/dist/CrosscutAdviceFactory.d.ts +9 -5
- package/dist/CrosscutAdviceFactory.js +23 -22
- package/dist/decorator/Advice.d.ts +6 -2
- package/dist/decorator/Advice.js +21 -17
- package/dist/decorator/Crosscut.d.ts +6 -2
- package/dist/decorator/Crosscut.js +41 -43
- package/dist/decorator/Pointcut.d.ts +6 -2
- package/dist/decorator/Pointcut.js +21 -17
- package/dist/decorator/index.d.ts +3 -3
- package/dist/decorator/index.js +5 -4
- package/dist/index.d.ts +16 -6
- package/dist/index.js +18 -7
- package/dist/model/Aspect.d.ts +18 -14
- package/dist/model/Aspect.js +41 -38
- package/dist/model/PointcutInfo.d.ts +22 -19
- package/dist/model/PointcutInfo.js +40 -41
- package/dist/model/index.d.ts +2 -2
- package/dist/model/index.js +4 -3
- package/dist/util/AdviceInfoUtil.d.ts +9 -5
- package/dist/util/AdviceInfoUtil.js +15 -11
- package/dist/util/AspectInfoUtil.d.ts +10 -5
- package/dist/util/AspectInfoUtil.js +16 -12
- package/dist/util/CrosscutInfoUtil.d.ts +10 -6
- package/dist/util/CrosscutInfoUtil.js +21 -18
- package/dist/util/PointcutAdviceInfoUtil.d.ts +8 -4
- package/dist/util/PointcutAdviceInfoUtil.js +18 -17
- package/dist/util/index.d.ts +4 -4
- package/dist/util/index.js +6 -5
- package/package.json +29 -33
|
@@ -1,13 +1,18 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
1
|
+
import { Aspect } from "./model/Aspect.js";
|
|
2
|
+
import "./model/index.js";
|
|
3
|
+
import { CrosscutAdviceFactory } from "./CrosscutAdviceFactory.js";
|
|
4
|
+
import { EggProtoImplClass } from "@eggjs/tegg-types";
|
|
5
|
+
|
|
6
|
+
//#region src/AspectMetaBuilder.d.ts
|
|
7
|
+
declare class AspectMetaBuilder {
|
|
8
|
+
private readonly clazz;
|
|
9
|
+
private readonly crosscutAdviceFactory;
|
|
10
|
+
constructor(clazz: EggProtoImplClass, options: {
|
|
11
|
+
crosscutAdviceFactory: CrosscutAdviceFactory;
|
|
12
|
+
});
|
|
13
|
+
build(): Array<Aspect>;
|
|
14
|
+
static getAllMethods(clazz: EggProtoImplClass): PropertyKey[];
|
|
15
|
+
private doBuildMethodAspect;
|
|
13
16
|
}
|
|
17
|
+
//#endregion
|
|
18
|
+
export { AspectMetaBuilder };
|
|
@@ -1,54 +1,48 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
import { PointcutAdviceInfoUtil } from "./util/
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
aspectBuilder.addAdvice(advice);
|
|
50
|
-
}
|
|
51
|
-
return aspectBuilder.build();
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXNwZWN0TWV0YUJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvQXNwZWN0TWV0YUJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbkUsT0FBTyxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV6RCxNQUFNLE9BQU8saUJBQWlCO0lBQ1gsS0FBSyxDQUFvQjtJQUN6QixxQkFBcUIsQ0FBd0I7SUFFOUQsWUFDRSxLQUF3QixFQUN4QixPQUVDO1FBRUQsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLHFCQUFxQixHQUFHLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQztJQUM3RCxDQUFDO0lBRUQsS0FBSztRQUNILE1BQU0sVUFBVSxHQUFrQixFQUFFLENBQUM7UUFDckMsTUFBTSxPQUFPLEdBQUcsaUJBQWlCLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1RCxLQUFLLE1BQU0sTUFBTSxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQzdCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNoRCxJQUFJLE1BQU0sRUFBRSxDQUFDO2dCQUNYLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDMUIsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBRUQsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUF3QjtRQUMzQyxNQUFNLFNBQVMsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO1FBQ3BDLFNBQVMsVUFBVSxDQUFDLEdBQVE7WUFDMUIsSUFBSSxHQUFHLEVBQUUsQ0FBQztnQkFDUixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMseUJBQXlCLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3hELEtBQUssTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7b0JBQ3JELElBQUksSUFBSSxDQUFDLEtBQUssWUFBWSxRQUFRLEVBQUUsQ0FBQzt3QkFDbkMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDdEIsQ0FBQztnQkFDSCxDQUFDO2dCQUNELFVBQVUsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDekMsQ0FBQztRQUNILENBQUM7UUFFRCxVQUFVLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRTVCLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRU8sbUJBQW1CLENBQUMsTUFBbUI7UUFDN0MsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDcEYscUNBQXFDO1FBQ3JDLE1BQU0sa0JBQWtCLEdBQUcsc0JBQXNCLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNoRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTTtZQUFFLE9BQU87UUFDckUsTUFBTSxhQUFhLEdBQUcsSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM1RCxLQUFLLE1BQU0sTUFBTSxJQUFJLGtCQUFrQixFQUFFLENBQUM7WUFDeEMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsQyxDQUFDO1FBQ0QsS0FBSyxNQUFNLE1BQU0sSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1lBQ3hDLGFBQWEsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEMsQ0FBQztRQUNELE9BQU8sYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQy9CLENBQUM7Q0FDRiJ9
|
|
1
|
+
import { AspectBuilder } from "./model/Aspect.js";
|
|
2
|
+
import "./model/index.js";
|
|
3
|
+
import { PointcutAdviceInfoUtil } from "./util/PointcutAdviceInfoUtil.js";
|
|
4
|
+
import "./util/index.js";
|
|
5
|
+
import "./CrosscutAdviceFactory.js";
|
|
6
|
+
|
|
7
|
+
//#region src/AspectMetaBuilder.ts
|
|
8
|
+
var AspectMetaBuilder = class AspectMetaBuilder {
|
|
9
|
+
clazz;
|
|
10
|
+
crosscutAdviceFactory;
|
|
11
|
+
constructor(clazz, options) {
|
|
12
|
+
this.clazz = clazz;
|
|
13
|
+
this.crosscutAdviceFactory = options.crosscutAdviceFactory;
|
|
14
|
+
}
|
|
15
|
+
build() {
|
|
16
|
+
const aspectList = [];
|
|
17
|
+
const methods = AspectMetaBuilder.getAllMethods(this.clazz);
|
|
18
|
+
for (const method of methods) {
|
|
19
|
+
const aspect = this.doBuildMethodAspect(method);
|
|
20
|
+
if (aspect) aspectList.push(aspect);
|
|
21
|
+
}
|
|
22
|
+
return aspectList;
|
|
23
|
+
}
|
|
24
|
+
static getAllMethods(clazz) {
|
|
25
|
+
const methodSet = /* @__PURE__ */ new Set();
|
|
26
|
+
function getMethods(obj) {
|
|
27
|
+
if (obj) {
|
|
28
|
+
const propDescs = Object.getOwnPropertyDescriptors(obj);
|
|
29
|
+
for (const [name, desc] of Object.entries(propDescs)) if (desc.value instanceof Function) methodSet.add(name);
|
|
30
|
+
getMethods(Object.getPrototypeOf(obj));
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
getMethods(clazz.prototype);
|
|
34
|
+
return Array.from(methodSet);
|
|
35
|
+
}
|
|
36
|
+
doBuildMethodAspect(method) {
|
|
37
|
+
const crosscutAdviceList = this.crosscutAdviceFactory.getAdvice(this.clazz, method);
|
|
38
|
+
const pointcutAdviceList = PointcutAdviceInfoUtil.getPointcutAdviceInfoList(this.clazz, method);
|
|
39
|
+
if (!crosscutAdviceList.length && !pointcutAdviceList.length) return;
|
|
40
|
+
const aspectBuilder = new AspectBuilder(this.clazz, method);
|
|
41
|
+
for (const advice of crosscutAdviceList) aspectBuilder.addAdvice(advice);
|
|
42
|
+
for (const advice of pointcutAdviceList) aspectBuilder.addAdvice(advice);
|
|
43
|
+
return aspectBuilder.build();
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
//#endregion
|
|
48
|
+
export { AspectMetaBuilder };
|
|
@@ -1,6 +1,10 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import { AdviceInfo, EggProtoImplClass, IAdvice } from "@eggjs/tegg-types";
|
|
2
|
+
|
|
3
|
+
//#region src/CrosscutAdviceFactory.d.ts
|
|
4
|
+
declare class CrosscutAdviceFactory {
|
|
5
|
+
private readonly crosscutAdviceClazzList;
|
|
6
|
+
registerCrossAdviceClazz(clazz: EggProtoImplClass<IAdvice>): void;
|
|
7
|
+
getAdvice(clazz: EggProtoImplClass, method: PropertyKey): Array<AdviceInfo>;
|
|
6
8
|
}
|
|
9
|
+
//#endregion
|
|
10
|
+
export { CrosscutAdviceFactory };
|
|
@@ -1,22 +1,23 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
//#
|
|
1
|
+
import { CrosscutInfoUtil } from "./util/CrosscutInfoUtil.js";
|
|
2
|
+
import "./util/index.js";
|
|
3
|
+
import assert from "node:assert";
|
|
4
|
+
|
|
5
|
+
//#region src/CrosscutAdviceFactory.ts
|
|
6
|
+
var CrosscutAdviceFactory = class {
|
|
7
|
+
crosscutAdviceClazzList = [];
|
|
8
|
+
registerCrossAdviceClazz(clazz) {
|
|
9
|
+
assert(CrosscutInfoUtil.isCrosscutAdvice(clazz), `clazz ${clazz.name} is not crosscut advice`);
|
|
10
|
+
this.crosscutAdviceClazzList.push(clazz);
|
|
11
|
+
}
|
|
12
|
+
getAdvice(clazz, method) {
|
|
13
|
+
const result = [];
|
|
14
|
+
for (const crosscutAdviceClazz of this.crosscutAdviceClazzList) {
|
|
15
|
+
const crosscutInfoList = CrosscutInfoUtil.getCrosscutInfoList(crosscutAdviceClazz);
|
|
16
|
+
for (const crosscutInfo of crosscutInfoList) if (crosscutInfo.pointcutInfo.match(clazz, method)) result.push(crosscutInfo.adviceInfo);
|
|
17
|
+
}
|
|
18
|
+
return result;
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
//#endregion
|
|
23
|
+
export { CrosscutAdviceFactory };
|
|
@@ -1,2 +1,6 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
1
|
+
import { EggProtoImplClass, IAdvice, PrototypeParams } from "@eggjs/tegg-types";
|
|
2
|
+
|
|
3
|
+
//#region src/decorator/Advice.d.ts
|
|
4
|
+
declare function Advice(param?: PrototypeParams): (constructor: EggProtoImplClass<IAdvice>) => void;
|
|
5
|
+
//#endregion
|
|
6
|
+
export { Advice };
|
package/dist/decorator/Advice.js
CHANGED
|
@@ -1,20 +1,24 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
1
|
+
import { AdviceInfoUtil } from "../util/AdviceInfoUtil.js";
|
|
2
|
+
import "../util/index.js";
|
|
3
|
+
import { Prototype, PrototypeUtil } from "@eggjs/core-decorator";
|
|
4
|
+
import { StackUtil } from "@eggjs/tegg-common-util";
|
|
5
|
+
import { AccessLevel, ObjectInitType } from "@eggjs/tegg-types";
|
|
6
|
+
|
|
7
|
+
//#region src/decorator/Advice.ts
|
|
5
8
|
const defaultAdviceParam = {
|
|
6
|
-
|
|
7
|
-
|
|
9
|
+
accessLevel: AccessLevel.PUBLIC,
|
|
10
|
+
initType: ObjectInitType.SINGLETON
|
|
8
11
|
};
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
};
|
|
12
|
+
function Advice(param) {
|
|
13
|
+
return function(constructor) {
|
|
14
|
+
AdviceInfoUtil.setIsAdvice(true, constructor);
|
|
15
|
+
Prototype({
|
|
16
|
+
...defaultAdviceParam,
|
|
17
|
+
...param
|
|
18
|
+
})(constructor);
|
|
19
|
+
PrototypeUtil.setFilePath(constructor, StackUtil.getCalleeFromStack(false, 5));
|
|
20
|
+
};
|
|
19
21
|
}
|
|
20
|
-
|
|
22
|
+
|
|
23
|
+
//#endregion
|
|
24
|
+
export { Advice };
|
|
@@ -1,2 +1,6 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
1
|
+
import { CrosscutOptions, CrosscutParam, EggProtoImplClass, IAdvice } from "@eggjs/tegg-types";
|
|
2
|
+
|
|
3
|
+
//#region src/decorator/Crosscut.d.ts
|
|
4
|
+
declare function Crosscut(param: CrosscutParam, options?: CrosscutOptions): (constructor: EggProtoImplClass<IAdvice>) => void;
|
|
5
|
+
//#endregion
|
|
6
|
+
export { Crosscut };
|
|
@@ -1,44 +1,42 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
import { CrosscutInfoUtil } from "../util/
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
}
|
|
40
|
-
CrosscutInfoUtil.setIsCrosscutAdvice(true, constructor);
|
|
41
|
-
CrosscutInfoUtil.addCrosscutInfo(crosscutInfo, constructor);
|
|
42
|
-
};
|
|
1
|
+
import { ClassPointInfo, CustomPointInfo, NamePointInfo } from "../model/PointcutInfo.js";
|
|
2
|
+
import "../model/index.js";
|
|
3
|
+
import { CrosscutInfoUtil } from "../util/CrosscutInfoUtil.js";
|
|
4
|
+
import "../util/index.js";
|
|
5
|
+
import { PointcutType } from "@eggjs/tegg-types";
|
|
6
|
+
|
|
7
|
+
//#region src/decorator/Crosscut.ts
|
|
8
|
+
const defaultCrossOptions = { order: 100 };
|
|
9
|
+
function Crosscut(param, options) {
|
|
10
|
+
return function(constructor) {
|
|
11
|
+
let crosscutInfo;
|
|
12
|
+
if (param.type === PointcutType.CLASS) crosscutInfo = {
|
|
13
|
+
pointcutInfo: new ClassPointInfo(param.clazz, param.methodName),
|
|
14
|
+
adviceInfo: {
|
|
15
|
+
clazz: constructor,
|
|
16
|
+
order: options?.order ?? defaultCrossOptions.order,
|
|
17
|
+
adviceParams: options?.adviceParams
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
else if (param.type === PointcutType.NAME) crosscutInfo = {
|
|
21
|
+
pointcutInfo: new NamePointInfo(param.className, param.methodName),
|
|
22
|
+
adviceInfo: {
|
|
23
|
+
clazz: constructor,
|
|
24
|
+
order: options?.order ?? defaultCrossOptions.order,
|
|
25
|
+
adviceParams: options?.adviceParams
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
else crosscutInfo = {
|
|
29
|
+
pointcutInfo: new CustomPointInfo(param.callback),
|
|
30
|
+
adviceInfo: {
|
|
31
|
+
clazz: constructor,
|
|
32
|
+
order: options?.order ?? defaultCrossOptions.order,
|
|
33
|
+
adviceParams: options?.adviceParams
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
CrosscutInfoUtil.setIsCrosscutAdvice(true, constructor);
|
|
37
|
+
CrosscutInfoUtil.addCrosscutInfo(crosscutInfo, constructor);
|
|
38
|
+
};
|
|
43
39
|
}
|
|
44
|
-
|
|
40
|
+
|
|
41
|
+
//#endregion
|
|
42
|
+
export { Crosscut };
|
|
@@ -1,2 +1,6 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
1
|
+
import { EggProtoImplClass, IAdvice, PointcutOptions } from "@eggjs/tegg-types";
|
|
2
|
+
|
|
3
|
+
//#region src/decorator/Pointcut.d.ts
|
|
4
|
+
declare function Pointcut<T extends object, K = any>(adviceClazz: EggProtoImplClass<IAdvice<T, K>>, options?: PointcutOptions<K>): (target: any, propertyKey: PropertyKey) => void;
|
|
5
|
+
//#endregion
|
|
6
|
+
export { Pointcut };
|
|
@@ -1,18 +1,22 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { PointcutAdviceInfoUtil
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
1
|
+
import { AdviceInfoUtil } from "../util/AdviceInfoUtil.js";
|
|
2
|
+
import { PointcutAdviceInfoUtil } from "../util/PointcutAdviceInfoUtil.js";
|
|
3
|
+
import "../util/index.js";
|
|
4
|
+
import assert from "node:assert";
|
|
5
|
+
|
|
6
|
+
//#region src/decorator/Pointcut.ts
|
|
7
|
+
const defaultPointcutOptions = { order: 1e3 };
|
|
8
|
+
function Pointcut(adviceClazz, options) {
|
|
9
|
+
return function(target, propertyKey) {
|
|
10
|
+
assert(AdviceInfoUtil.isAdvice(adviceClazz), `class ${adviceClazz} has no @Advice decorator`);
|
|
11
|
+
const targetClazz = target.constructor;
|
|
12
|
+
const methodName = propertyKey;
|
|
13
|
+
PointcutAdviceInfoUtil.addPointcutAdviceInfo({
|
|
14
|
+
clazz: adviceClazz,
|
|
15
|
+
order: options?.order ?? defaultPointcutOptions.order,
|
|
16
|
+
adviceParams: options?.adviceParams
|
|
17
|
+
}, targetClazz, methodName);
|
|
18
|
+
};
|
|
17
19
|
}
|
|
18
|
-
|
|
20
|
+
|
|
21
|
+
//#endregion
|
|
22
|
+
export { Pointcut };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { Advice } from "./Advice.js";
|
|
2
|
+
import { Crosscut } from "./Crosscut.js";
|
|
3
|
+
import { Pointcut } from "./Pointcut.js";
|
package/dist/decorator/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { Advice } from "./Advice.js";
|
|
2
|
+
import { Crosscut } from "./Crosscut.js";
|
|
3
|
+
import { Pointcut } from "./Pointcut.js";
|
|
4
|
+
|
|
5
|
+
export { };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import { Advice } from "./decorator/Advice.js";
|
|
2
|
+
import { Crosscut } from "./decorator/Crosscut.js";
|
|
3
|
+
import { Pointcut } from "./decorator/Pointcut.js";
|
|
4
|
+
import "./decorator/index.js";
|
|
5
|
+
import { Aspect, AspectBuilder } from "./model/Aspect.js";
|
|
6
|
+
import { ClassPointInfo, CustomPointInfo, NamePointInfo } from "./model/PointcutInfo.js";
|
|
7
|
+
import "./model/index.js";
|
|
8
|
+
import { AdviceInfoUtil, IS_ADVICE } from "./util/AdviceInfoUtil.js";
|
|
9
|
+
import { AspectInfoUtil } from "./util/AspectInfoUtil.js";
|
|
10
|
+
import { CrosscutInfoUtil } from "./util/CrosscutInfoUtil.js";
|
|
11
|
+
import { PointcutAdviceInfoUtil } from "./util/PointcutAdviceInfoUtil.js";
|
|
12
|
+
import "./util/index.js";
|
|
13
|
+
import { CrosscutAdviceFactory } from "./CrosscutAdviceFactory.js";
|
|
14
|
+
import { AspectMetaBuilder } from "./AspectMetaBuilder.js";
|
|
15
|
+
export * from "@eggjs/tegg-types/aop";
|
|
16
|
+
export { Advice, AdviceInfoUtil, Aspect, AspectBuilder, AspectInfoUtil, AspectMetaBuilder, ClassPointInfo, Crosscut, CrosscutAdviceFactory, CrosscutInfoUtil, CustomPointInfo, IS_ADVICE, NamePointInfo, Pointcut, PointcutAdviceInfoUtil };
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import { AdviceInfoUtil, IS_ADVICE } from "./util/AdviceInfoUtil.js";
|
|
2
|
+
import { Aspect, AspectBuilder } from "./model/Aspect.js";
|
|
3
|
+
import { ClassPointInfo, CustomPointInfo, NamePointInfo } from "./model/PointcutInfo.js";
|
|
4
|
+
import "./model/index.js";
|
|
5
|
+
import { AspectInfoUtil } from "./util/AspectInfoUtil.js";
|
|
6
|
+
import { CrosscutInfoUtil } from "./util/CrosscutInfoUtil.js";
|
|
7
|
+
import { PointcutAdviceInfoUtil } from "./util/PointcutAdviceInfoUtil.js";
|
|
8
|
+
import "./util/index.js";
|
|
9
|
+
import { Advice } from "./decorator/Advice.js";
|
|
10
|
+
import { Crosscut } from "./decorator/Crosscut.js";
|
|
11
|
+
import { Pointcut } from "./decorator/Pointcut.js";
|
|
12
|
+
import "./decorator/index.js";
|
|
13
|
+
import { CrosscutAdviceFactory } from "./CrosscutAdviceFactory.js";
|
|
14
|
+
import { AspectMetaBuilder } from "./AspectMetaBuilder.js";
|
|
15
|
+
|
|
16
|
+
export * from "@eggjs/tegg-types/aop"
|
|
17
|
+
|
|
18
|
+
export { Advice, AdviceInfoUtil, Aspect, AspectBuilder, AspectInfoUtil, AspectMetaBuilder, ClassPointInfo, Crosscut, CrosscutAdviceFactory, CrosscutInfoUtil, CustomPointInfo, IS_ADVICE, NamePointInfo, Pointcut, PointcutAdviceInfoUtil };
|
package/dist/model/Aspect.d.ts
CHANGED
|
@@ -1,16 +1,20 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import { AdviceInfo, AspectAdvice, EggProtoImplClass } from "@eggjs/tegg-types";
|
|
2
|
+
|
|
3
|
+
//#region src/model/Aspect.d.ts
|
|
4
|
+
declare class Aspect {
|
|
5
|
+
readonly clazz: EggProtoImplClass;
|
|
6
|
+
readonly method: PropertyKey;
|
|
7
|
+
readonly adviceList: readonly AspectAdvice[];
|
|
8
|
+
constructor(clazz: EggProtoImplClass, method: PropertyKey, adviceList: readonly AspectAdvice[]);
|
|
7
9
|
}
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
10
|
+
declare class AspectBuilder {
|
|
11
|
+
readonly clazz: EggProtoImplClass;
|
|
12
|
+
readonly method: PropertyKey;
|
|
13
|
+
private readonly adviceList;
|
|
14
|
+
constructor(clazz: EggProtoImplClass, method: PropertyKey);
|
|
15
|
+
addAdvice(adviceInfo: AdviceInfo): void;
|
|
16
|
+
build(): Aspect;
|
|
17
|
+
private adviceName;
|
|
16
18
|
}
|
|
19
|
+
//#endregion
|
|
20
|
+
export { Aspect, AspectBuilder };
|
package/dist/model/Aspect.js
CHANGED
|
@@ -1,38 +1,41 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
}
|
|
38
|
-
|
|
1
|
+
//#region src/model/Aspect.ts
|
|
2
|
+
var Aspect = class {
|
|
3
|
+
clazz;
|
|
4
|
+
method;
|
|
5
|
+
adviceList;
|
|
6
|
+
constructor(clazz, method, adviceList) {
|
|
7
|
+
this.clazz = clazz;
|
|
8
|
+
this.method = method;
|
|
9
|
+
this.adviceList = adviceList;
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
var AspectBuilder = class {
|
|
13
|
+
clazz;
|
|
14
|
+
method;
|
|
15
|
+
adviceList;
|
|
16
|
+
constructor(clazz, method) {
|
|
17
|
+
this.clazz = clazz;
|
|
18
|
+
this.method = method;
|
|
19
|
+
this.adviceList = [];
|
|
20
|
+
}
|
|
21
|
+
addAdvice(adviceInfo) {
|
|
22
|
+
this.adviceList.push(adviceInfo);
|
|
23
|
+
}
|
|
24
|
+
build() {
|
|
25
|
+
this.adviceList.sort((a, b) => a.order - b.order);
|
|
26
|
+
const aspectAdviceList = this.adviceList.map((t, i) => {
|
|
27
|
+
return {
|
|
28
|
+
clazz: t.clazz,
|
|
29
|
+
name: this.adviceName(t.clazz, i),
|
|
30
|
+
adviceParams: t.adviceParams
|
|
31
|
+
};
|
|
32
|
+
});
|
|
33
|
+
return new Aspect(this.clazz, this.method, aspectAdviceList);
|
|
34
|
+
}
|
|
35
|
+
adviceName(advice, index) {
|
|
36
|
+
return `${this.clazz.name}#${String(this.method)}#${advice.name}#${index}`;
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
//#endregion
|
|
41
|
+
export { Aspect, AspectBuilder };
|
|
@@ -1,22 +1,25 @@
|
|
|
1
|
-
import { PointcutType } from
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
import { CustomPointcutCallback, EggProtoImplClass, PointcutInfo, PointcutType } from "@eggjs/tegg-types";
|
|
2
|
+
|
|
3
|
+
//#region src/model/PointcutInfo.d.ts
|
|
4
|
+
declare class ClassPointInfo implements PointcutInfo {
|
|
5
|
+
readonly type: PointcutType;
|
|
6
|
+
readonly clazz: EggProtoImplClass;
|
|
7
|
+
readonly method: PropertyKey;
|
|
8
|
+
constructor(clazz: EggProtoImplClass, method: PropertyKey);
|
|
9
|
+
match(clazz: EggProtoImplClass, method: PropertyKey): boolean;
|
|
9
10
|
}
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
declare class NamePointInfo implements PointcutInfo {
|
|
12
|
+
readonly type: PointcutType;
|
|
13
|
+
readonly className: RegExp;
|
|
14
|
+
readonly methodName: RegExp;
|
|
15
|
+
constructor(className: RegExp, methodName: RegExp);
|
|
16
|
+
match(clazz: EggProtoImplClass, method: PropertyKey): boolean;
|
|
16
17
|
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
18
|
+
declare class CustomPointInfo implements PointcutInfo {
|
|
19
|
+
readonly type: PointcutType;
|
|
20
|
+
readonly cb: CustomPointcutCallback;
|
|
21
|
+
constructor(cb: CustomPointcutCallback);
|
|
22
|
+
match(clazz: EggProtoImplClass, method: PropertyKey): boolean;
|
|
22
23
|
}
|
|
24
|
+
//#endregion
|
|
25
|
+
export { ClassPointInfo, CustomPointInfo, NamePointInfo };
|
|
@@ -1,41 +1,40 @@
|
|
|
1
|
-
import { PointcutType } from
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
}
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUG9pbnRjdXRJbmZvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZGVsL1BvaW50Y3V0SW5mby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHakQsTUFBTSxPQUFPLGNBQWM7SUFDaEIsSUFBSSxHQUFpQixZQUFZLENBQUMsS0FBSyxDQUFDO0lBQ3hDLEtBQUssQ0FBb0I7SUFDekIsTUFBTSxDQUFjO0lBRTdCLFlBQVksS0FBd0IsRUFBRSxNQUFtQjtRQUN2RCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQXdCLEVBQUUsTUFBbUI7UUFDakQsT0FBTztRQUNMLGFBQWE7UUFDYixDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssS0FBSztZQUNuQixlQUFlO1lBQ2YsS0FBSyxDQUFDLFNBQVMsWUFBWSxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQ3hDLElBQUksQ0FBQyxNQUFNLEtBQUssTUFBTSxDQUN2QixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLGFBQWE7SUFDZixJQUFJLEdBQWlCLFlBQVksQ0FBQyxJQUFJLENBQUM7SUFDdkMsU0FBUyxDQUFTO0lBQ2xCLFVBQVUsQ0FBUztJQUU1QixZQUFZLFNBQWlCLEVBQUUsVUFBa0I7UUFDL0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7SUFDL0IsQ0FBQztJQUVELEtBQUssQ0FBQyxLQUF3QixFQUFFLE1BQW1CO1FBQ2pELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxlQUFlO0lBQ2pCLElBQUksR0FBaUIsWUFBWSxDQUFDLE1BQU0sQ0FBQztJQUN6QyxFQUFFLENBQXlCO0lBRXBDLFlBQVksRUFBMEI7UUFDcEMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDZixDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQXdCLEVBQUUsTUFBbUI7UUFDakQsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDO0NBQ0YifQ==
|
|
1
|
+
import { PointcutType } from "@eggjs/tegg-types";
|
|
2
|
+
|
|
3
|
+
//#region src/model/PointcutInfo.ts
|
|
4
|
+
var ClassPointInfo = class {
|
|
5
|
+
type = PointcutType.CLASS;
|
|
6
|
+
clazz;
|
|
7
|
+
method;
|
|
8
|
+
constructor(clazz, method) {
|
|
9
|
+
this.clazz = clazz;
|
|
10
|
+
this.method = method;
|
|
11
|
+
}
|
|
12
|
+
match(clazz, method) {
|
|
13
|
+
return (this.clazz === clazz || clazz.prototype instanceof this.clazz) && this.method === method;
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
var NamePointInfo = class {
|
|
17
|
+
type = PointcutType.NAME;
|
|
18
|
+
className;
|
|
19
|
+
methodName;
|
|
20
|
+
constructor(className, methodName) {
|
|
21
|
+
this.className = className;
|
|
22
|
+
this.methodName = methodName;
|
|
23
|
+
}
|
|
24
|
+
match(clazz, method) {
|
|
25
|
+
return this.className.test(clazz.name) && this.methodName.test(String(method));
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
var CustomPointInfo = class {
|
|
29
|
+
type = PointcutType.CUSTOM;
|
|
30
|
+
cb;
|
|
31
|
+
constructor(cb) {
|
|
32
|
+
this.cb = cb;
|
|
33
|
+
}
|
|
34
|
+
match(clazz, method) {
|
|
35
|
+
return this.cb(clazz, method);
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
//#endregion
|
|
40
|
+
export { ClassPointInfo, CustomPointInfo, NamePointInfo };
|
package/dist/model/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { Aspect, AspectBuilder } from "./Aspect.js";
|
|
2
|
+
import { ClassPointInfo, CustomPointInfo, NamePointInfo } from "./PointcutInfo.js";
|
package/dist/model/index.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { Aspect, AspectBuilder } from "./Aspect.js";
|
|
2
|
+
import { ClassPointInfo, CustomPointInfo, NamePointInfo } from "./PointcutInfo.js";
|
|
3
|
+
|
|
4
|
+
export { };
|
|
@@ -1,6 +1,10 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import { EggProtoImplClass, IAdvice } from "@eggjs/tegg-types";
|
|
2
|
+
|
|
3
|
+
//#region src/util/AdviceInfoUtil.d.ts
|
|
4
|
+
declare const IS_ADVICE: symbol;
|
|
5
|
+
declare class AdviceInfoUtil {
|
|
6
|
+
static setIsAdvice(isAdvice: boolean, clazz: EggProtoImplClass<IAdvice>): void;
|
|
7
|
+
static isAdvice(clazz: EggProtoImplClass<IAdvice>): boolean;
|
|
6
8
|
}
|
|
9
|
+
//#endregion
|
|
10
|
+
export { AdviceInfoUtil, IS_ADVICE };
|
|
@@ -1,11 +1,15 @@
|
|
|
1
|
-
import { MetadataUtil } from
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
1
|
+
import { MetadataUtil } from "@eggjs/core-decorator";
|
|
2
|
+
|
|
3
|
+
//#region src/util/AdviceInfoUtil.ts
|
|
4
|
+
const IS_ADVICE = Symbol.for("EggPrototype#isAdvice");
|
|
5
|
+
var AdviceInfoUtil = class {
|
|
6
|
+
static setIsAdvice(isAdvice, clazz) {
|
|
7
|
+
MetadataUtil.defineMetaData(IS_ADVICE, isAdvice, clazz);
|
|
8
|
+
}
|
|
9
|
+
static isAdvice(clazz) {
|
|
10
|
+
return !!MetadataUtil.getMetaData(IS_ADVICE, clazz);
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
//#endregion
|
|
15
|
+
export { AdviceInfoUtil, IS_ADVICE };
|
|
@@ -1,6 +1,11 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import { Aspect } from "../model/Aspect.js";
|
|
2
|
+
import "../model/index.js";
|
|
3
|
+
import { EggProtoImplClass, IAdvice } from "@eggjs/tegg-types";
|
|
4
|
+
|
|
5
|
+
//#region src/util/AspectInfoUtil.d.ts
|
|
6
|
+
declare class AspectInfoUtil {
|
|
7
|
+
static setAspectList(aspectList: Array<Aspect>, clazz: EggProtoImplClass<IAdvice>): void;
|
|
8
|
+
static getAspectList(clazz: EggProtoImplClass<IAdvice>): Array<Aspect>;
|
|
6
9
|
}
|
|
10
|
+
//#endregion
|
|
11
|
+
export { AspectInfoUtil };
|
|
@@ -1,12 +1,16 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
1
|
+
import "../model/index.js";
|
|
2
|
+
import { MetadataUtil } from "@eggjs/core-decorator";
|
|
3
|
+
import { ASPECT_LIST } from "@eggjs/tegg-types";
|
|
4
|
+
|
|
5
|
+
//#region src/util/AspectInfoUtil.ts
|
|
6
|
+
var AspectInfoUtil = class {
|
|
7
|
+
static setAspectList(aspectList, clazz) {
|
|
8
|
+
MetadataUtil.defineMetaData(ASPECT_LIST, aspectList, clazz);
|
|
9
|
+
}
|
|
10
|
+
static getAspectList(clazz) {
|
|
11
|
+
return MetadataUtil.getMetaData(ASPECT_LIST, clazz) || [];
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
//#endregion
|
|
16
|
+
export { AspectInfoUtil };
|
|
@@ -1,7 +1,11 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import { CrosscutInfo, EggProtoImplClass, IAdvice } from "@eggjs/tegg-types";
|
|
2
|
+
|
|
3
|
+
//#region src/util/CrosscutInfoUtil.d.ts
|
|
4
|
+
declare class CrosscutInfoUtil {
|
|
5
|
+
static setIsCrosscutAdvice(isCrosscutAdvice: boolean, clazz: EggProtoImplClass<IAdvice>): void;
|
|
6
|
+
static isCrosscutAdvice(clazz: EggProtoImplClass<IAdvice>): boolean;
|
|
7
|
+
static addCrosscutInfo(crosscutInfo: CrosscutInfo, clazz: EggProtoImplClass<IAdvice>): void;
|
|
8
|
+
static getCrosscutInfoList(clazz: EggProtoImplClass<IAdvice>): Array<CrosscutInfo>;
|
|
7
9
|
}
|
|
10
|
+
//#endregion
|
|
11
|
+
export { CrosscutInfoUtil };
|
|
@@ -1,18 +1,21 @@
|
|
|
1
|
-
import { MetadataUtil } from
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
}
|
|
18
|
-
|
|
1
|
+
import { MetadataUtil } from "@eggjs/core-decorator";
|
|
2
|
+
import { CROSSCUT_INFO_LIST, IS_CROSSCUT_ADVICE } from "@eggjs/tegg-types";
|
|
3
|
+
|
|
4
|
+
//#region src/util/CrosscutInfoUtil.ts
|
|
5
|
+
var CrosscutInfoUtil = class {
|
|
6
|
+
static setIsCrosscutAdvice(isCrosscutAdvice, clazz) {
|
|
7
|
+
MetadataUtil.defineMetaData(IS_CROSSCUT_ADVICE, isCrosscutAdvice, clazz);
|
|
8
|
+
}
|
|
9
|
+
static isCrosscutAdvice(clazz) {
|
|
10
|
+
return !!MetadataUtil.getMetaData(IS_CROSSCUT_ADVICE, clazz);
|
|
11
|
+
}
|
|
12
|
+
static addCrosscutInfo(crosscutInfo, clazz) {
|
|
13
|
+
MetadataUtil.initOwnArrayMetaData(CROSSCUT_INFO_LIST, clazz, []).push(crosscutInfo);
|
|
14
|
+
}
|
|
15
|
+
static getCrosscutInfoList(clazz) {
|
|
16
|
+
return MetadataUtil.getArrayMetaData(CROSSCUT_INFO_LIST, clazz) || [];
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
//#endregion
|
|
21
|
+
export { CrosscutInfoUtil };
|
|
@@ -1,5 +1,9 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { AdviceInfo, EggProtoImplClass } from "@eggjs/tegg-types";
|
|
2
|
+
|
|
3
|
+
//#region src/util/PointcutAdviceInfoUtil.d.ts
|
|
4
|
+
declare class PointcutAdviceInfoUtil {
|
|
5
|
+
static addPointcutAdviceInfo(adviceInfo: AdviceInfo, clazz: EggProtoImplClass, method: PropertyKey): void;
|
|
6
|
+
static getPointcutAdviceInfoList(clazz: EggProtoImplClass, method: PropertyKey): Array<AdviceInfo>;
|
|
5
7
|
}
|
|
8
|
+
//#endregion
|
|
9
|
+
export { PointcutAdviceInfoUtil };
|
|
@@ -1,17 +1,18 @@
|
|
|
1
|
-
import { MetadataUtil } from
|
|
2
|
-
import { POINTCUT_ADVICE_INFO_LIAR } from
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
//#
|
|
1
|
+
import { MetadataUtil } from "@eggjs/core-decorator";
|
|
2
|
+
import { POINTCUT_ADVICE_INFO_LIAR } from "@eggjs/tegg-types";
|
|
3
|
+
|
|
4
|
+
//#region src/util/PointcutAdviceInfoUtil.ts
|
|
5
|
+
var PointcutAdviceInfoUtil = class {
|
|
6
|
+
static addPointcutAdviceInfo(adviceInfo, clazz, method) {
|
|
7
|
+
MetadataUtil.initOwnArrayMetaData(POINTCUT_ADVICE_INFO_LIAR, clazz, []).unshift({
|
|
8
|
+
method,
|
|
9
|
+
adviceInfo
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
static getPointcutAdviceInfoList(clazz, method) {
|
|
13
|
+
return (MetadataUtil.getMetaData(POINTCUT_ADVICE_INFO_LIAR, clazz) || []).filter((t) => t.method === method).map((t) => t.adviceInfo);
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
//#endregion
|
|
18
|
+
export { PointcutAdviceInfoUtil };
|
package/dist/util/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { AdviceInfoUtil, IS_ADVICE } from "./AdviceInfoUtil.js";
|
|
2
|
+
import { AspectInfoUtil } from "./AspectInfoUtil.js";
|
|
3
|
+
import { CrosscutInfoUtil } from "./CrosscutInfoUtil.js";
|
|
4
|
+
import { PointcutAdviceInfoUtil } from "./PointcutAdviceInfoUtil.js";
|
package/dist/util/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import { AdviceInfoUtil, IS_ADVICE } from "./AdviceInfoUtil.js";
|
|
2
|
+
import { AspectInfoUtil } from "./AspectInfoUtil.js";
|
|
3
|
+
import { CrosscutInfoUtil } from "./CrosscutInfoUtil.js";
|
|
4
|
+
import { PointcutAdviceInfoUtil } from "./PointcutAdviceInfoUtil.js";
|
|
5
|
+
|
|
6
|
+
export { };
|
package/package.json
CHANGED
|
@@ -1,55 +1,51 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eggjs/aop-decorator",
|
|
3
|
-
"version": "4.0.0-beta.
|
|
3
|
+
"version": "4.0.0-beta.36",
|
|
4
4
|
"description": "tegg aop decorator",
|
|
5
5
|
"keywords": [
|
|
6
|
-
"tegg",
|
|
7
6
|
"aop",
|
|
8
|
-
"
|
|
9
|
-
"
|
|
7
|
+
"egg",
|
|
8
|
+
"tegg",
|
|
9
|
+
"typescript"
|
|
10
10
|
],
|
|
11
|
-
"author": "killagu <killa123@126.com>",
|
|
12
11
|
"homepage": "https://github.com/eggjs/egg/tree/next/tegg/core/aop-decorator",
|
|
12
|
+
"bugs": {
|
|
13
|
+
"url": "https://github.com/eggjs/egg/issues"
|
|
14
|
+
},
|
|
15
|
+
"license": "MIT",
|
|
16
|
+
"author": "killagu <killa123@126.com>",
|
|
13
17
|
"repository": {
|
|
14
18
|
"type": "git",
|
|
15
19
|
"url": "git+https://github.com/eggjs/egg.git",
|
|
16
20
|
"directory": "tegg/core/aop-decorator"
|
|
17
21
|
},
|
|
18
|
-
"
|
|
19
|
-
"
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
"
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
"
|
|
27
|
-
"
|
|
22
|
+
"files": [
|
|
23
|
+
"dist"
|
|
24
|
+
],
|
|
25
|
+
"type": "module",
|
|
26
|
+
"main": "./dist/index.js",
|
|
27
|
+
"module": "./dist/index.js",
|
|
28
|
+
"types": "./dist/index.d.ts",
|
|
29
|
+
"exports": {
|
|
30
|
+
".": "./dist/index.js",
|
|
31
|
+
"./package.json": "./package.json"
|
|
28
32
|
},
|
|
29
33
|
"publishConfig": {
|
|
30
34
|
"access": "public"
|
|
31
35
|
},
|
|
32
|
-
"
|
|
33
|
-
"
|
|
36
|
+
"dependencies": {
|
|
37
|
+
"@eggjs/tegg-common-util": "4.0.0-beta.36",
|
|
38
|
+
"@eggjs/tegg-types": "4.0.0-beta.36",
|
|
39
|
+
"@eggjs/core-decorator": "4.0.0-beta.36"
|
|
34
40
|
},
|
|
35
|
-
"
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
".": "./dist/index.js",
|
|
39
|
-
"./package.json": "./package.json"
|
|
41
|
+
"devDependencies": {
|
|
42
|
+
"@types/node": "^24.10.2",
|
|
43
|
+
"typescript": "^5.9.3"
|
|
40
44
|
},
|
|
41
|
-
"
|
|
42
|
-
"
|
|
43
|
-
],
|
|
44
|
-
"bugs": {
|
|
45
|
-
"url": "https://github.com/eggjs/egg/issues"
|
|
45
|
+
"engines": {
|
|
46
|
+
"node": ">=22.18.0"
|
|
46
47
|
},
|
|
47
|
-
"main": "./dist/index.js",
|
|
48
|
-
"module": "./dist/index.js",
|
|
49
|
-
"types": "./dist/index.d.ts",
|
|
50
48
|
"scripts": {
|
|
51
|
-
"
|
|
52
|
-
"build": "tsdown && npm run clean && tsc -p tsconfig.build.json",
|
|
53
|
-
"typecheck": "tsc --noEmit"
|
|
49
|
+
"typecheck": "tsgo --noEmit"
|
|
54
50
|
}
|
|
55
51
|
}
|