@eggjs/tegg-aop-plugin 4.0.0-beta.4 → 4.0.0-beta.5
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/dist/app.d.ts +17 -0
- package/dist/app.js +45 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +3 -0
- package/dist/lib/AopContextHook.d.ts +21 -0
- package/dist/lib/AopContextHook.js +35 -0
- package/dist/types.d.ts +1 -0
- package/dist/types.js +3 -0
- package/package.json +35 -33
- package/app.d.ts +0 -13
- package/app.js +0 -40
- package/lib/AopContextHook.d.ts +0 -17
- package/lib/AopContextHook.js +0 -45
- package/typings/index.d.ts +0 -2
package/README.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @eggjs/tegg-aop-plugin
|
|
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/tegg-aop-plugin.svg?style=flat-square
|
|
9
|
+
[npm-url]: https://npmjs.org/package/@eggjs/tegg-aop-plugin
|
|
10
|
+
[snyk-image]: https://snyk.io/test/npm/@eggjs/tegg-aop-plugin/badge.svg?style=flat-square
|
|
11
|
+
[snyk-url]: https://snyk.io/test/npm/@eggjs/tegg-aop-plugin
|
|
12
|
+
[download-image]: https://img.shields.io/npm/dm/@eggjs/tegg-aop-plugin.svg?style=flat-square
|
|
13
|
+
[download-url]: https://npmjs.org/package/@eggjs/tegg-aop-plugin
|
|
14
|
+
|
|
3
15
|
## Usage
|
|
4
16
|
|
|
5
17
|
```js
|
package/dist/app.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Application, ILifecycleBoot } from "egg";
|
|
2
|
+
|
|
3
|
+
//#region src/app.d.ts
|
|
4
|
+
declare class AopAppHook implements ILifecycleBoot {
|
|
5
|
+
private readonly app;
|
|
6
|
+
private readonly crosscutAdviceFactory;
|
|
7
|
+
private readonly loadUnitAopHook;
|
|
8
|
+
private readonly eggPrototypeCrossCutHook;
|
|
9
|
+
private readonly eggObjectAopHook;
|
|
10
|
+
private aopContextHook;
|
|
11
|
+
constructor(app: Application);
|
|
12
|
+
configDidLoad(): void;
|
|
13
|
+
didLoad(): Promise<void>;
|
|
14
|
+
beforeClose(): Promise<void>;
|
|
15
|
+
}
|
|
16
|
+
//#endregion
|
|
17
|
+
export { AopAppHook as default };
|
package/dist/app.js
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { AopContextHook } from "./lib/AopContextHook.js";
|
|
2
|
+
import assert from "node:assert";
|
|
3
|
+
import { Application } from "egg";
|
|
4
|
+
import { CrosscutAdviceFactory } from "@eggjs/tegg/aop";
|
|
5
|
+
import { EggObjectAopHook, EggPrototypeCrossCutHook, LoadUnitAopHook, crossCutGraphHook, pointCutGraphHook } from "@eggjs/tegg-aop-runtime";
|
|
6
|
+
import { GlobalGraph } from "@eggjs/tegg-metadata";
|
|
7
|
+
|
|
8
|
+
//#region src/app.ts
|
|
9
|
+
var AopAppHook = class {
|
|
10
|
+
app;
|
|
11
|
+
crosscutAdviceFactory;
|
|
12
|
+
loadUnitAopHook;
|
|
13
|
+
eggPrototypeCrossCutHook;
|
|
14
|
+
eggObjectAopHook;
|
|
15
|
+
aopContextHook;
|
|
16
|
+
constructor(app) {
|
|
17
|
+
this.app = app;
|
|
18
|
+
this.crosscutAdviceFactory = new CrosscutAdviceFactory();
|
|
19
|
+
this.loadUnitAopHook = new LoadUnitAopHook(this.crosscutAdviceFactory);
|
|
20
|
+
this.eggPrototypeCrossCutHook = new EggPrototypeCrossCutHook(this.crosscutAdviceFactory);
|
|
21
|
+
this.eggObjectAopHook = new EggObjectAopHook();
|
|
22
|
+
}
|
|
23
|
+
configDidLoad() {
|
|
24
|
+
this.app.eggPrototypeLifecycleUtil.registerLifecycle(this.eggPrototypeCrossCutHook);
|
|
25
|
+
this.app.loadUnitLifecycleUtil.registerLifecycle(this.loadUnitAopHook);
|
|
26
|
+
this.app.eggObjectLifecycleUtil.registerLifecycle(this.eggObjectAopHook);
|
|
27
|
+
}
|
|
28
|
+
async didLoad() {
|
|
29
|
+
await this.app.moduleHandler.ready();
|
|
30
|
+
assert(GlobalGraph.instance, "GlobalGraph.instance is not set");
|
|
31
|
+
GlobalGraph.instance.registerBuildHook(crossCutGraphHook);
|
|
32
|
+
GlobalGraph.instance.registerBuildHook(pointCutGraphHook);
|
|
33
|
+
this.aopContextHook = new AopContextHook(this.app.moduleHandler);
|
|
34
|
+
this.app.eggContextLifecycleUtil.registerLifecycle(this.aopContextHook);
|
|
35
|
+
}
|
|
36
|
+
async beforeClose() {
|
|
37
|
+
this.app.eggPrototypeLifecycleUtil.deleteLifecycle(this.eggPrototypeCrossCutHook);
|
|
38
|
+
this.app.loadUnitLifecycleUtil.deleteLifecycle(this.loadUnitAopHook);
|
|
39
|
+
this.app.eggObjectLifecycleUtil.deleteLifecycle(this.eggObjectAopHook);
|
|
40
|
+
this.app.eggContextLifecycleUtil.deleteLifecycle(this.aopContextHook);
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
//#endregion
|
|
45
|
+
export { AopAppHook as default };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Application } from "egg";
|
|
2
|
+
import { EggPrototype } from "@eggjs/tegg-metadata";
|
|
3
|
+
import { EggProtoImplClass, LifecycleHook } from "@eggjs/tegg";
|
|
4
|
+
import { EggContext, EggContextLifecycleContext } from "@eggjs/tegg-runtime";
|
|
5
|
+
|
|
6
|
+
//#region src/lib/AopContextHook.d.ts
|
|
7
|
+
interface EggPrototypeWithClazz extends EggPrototype {
|
|
8
|
+
clazz?: EggProtoImplClass;
|
|
9
|
+
}
|
|
10
|
+
interface ProtoToCreate {
|
|
11
|
+
name: string;
|
|
12
|
+
proto: EggPrototype;
|
|
13
|
+
}
|
|
14
|
+
declare class AopContextHook implements LifecycleHook<EggContextLifecycleContext, EggContext> {
|
|
15
|
+
private readonly moduleHandler;
|
|
16
|
+
private requestProtoList;
|
|
17
|
+
constructor(moduleHandler: Application['moduleHandler']);
|
|
18
|
+
preCreate(_: unknown, ctx: EggContext): Promise<void>;
|
|
19
|
+
}
|
|
20
|
+
//#endregion
|
|
21
|
+
export { AopContextHook, EggPrototypeWithClazz, ProtoToCreate };
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { TeggError } from "@eggjs/tegg-metadata";
|
|
2
|
+
import { ObjectInitType, PrototypeUtil } from "@eggjs/tegg";
|
|
3
|
+
import { AspectInfoUtil } from "@eggjs/aop-decorator";
|
|
4
|
+
import { ROOT_PROTO } from "@eggjs/egg-module-common";
|
|
5
|
+
|
|
6
|
+
//#region src/lib/AopContextHook.ts
|
|
7
|
+
var AopContextHook = class {
|
|
8
|
+
moduleHandler;
|
|
9
|
+
requestProtoList = [];
|
|
10
|
+
constructor(moduleHandler) {
|
|
11
|
+
this.moduleHandler = moduleHandler;
|
|
12
|
+
for (const loadUnitInstance of this.moduleHandler.loadUnitInstances) {
|
|
13
|
+
const iterator = loadUnitInstance.loadUnit.iterateEggPrototype();
|
|
14
|
+
for (const proto of iterator) {
|
|
15
|
+
const clazz = proto.clazz;
|
|
16
|
+
if (!clazz) continue;
|
|
17
|
+
const aspects = AspectInfoUtil.getAspectList(clazz);
|
|
18
|
+
for (const aspect of aspects) for (const advice of aspect.adviceList) {
|
|
19
|
+
const adviceProto = PrototypeUtil.getClazzProto(advice.clazz);
|
|
20
|
+
if (!adviceProto) throw TeggError.create(`Aop Advice(${advice.clazz.name}) not found in loadUnits`, "advice_not_found");
|
|
21
|
+
if (adviceProto.initType === ObjectInitType.CONTEXT) this.requestProtoList.push({
|
|
22
|
+
name: advice.name,
|
|
23
|
+
proto: adviceProto
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
async preCreate(_, ctx) {
|
|
30
|
+
if (!ctx.get(ROOT_PROTO)) for (const proto of this.requestProtoList) ctx.addProtoToCreate(proto.name, proto.proto);
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
//#endregion
|
|
35
|
+
export { AopContextHook };
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "@eggjs/tegg-plugin/types";
|
package/dist/types.js
ADDED
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eggjs/tegg-aop-plugin",
|
|
3
|
-
"version": "4.0.0-beta.
|
|
3
|
+
"version": "4.0.0-beta.5",
|
|
4
4
|
"eggPlugin": {
|
|
5
5
|
"name": "aopModule",
|
|
6
6
|
"dependencies": [
|
|
7
7
|
"tegg"
|
|
8
8
|
]
|
|
9
9
|
},
|
|
10
|
-
"types": "
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
11
|
"description": "tegg aop plugin",
|
|
12
12
|
"keywords": [
|
|
13
13
|
"egg",
|
|
@@ -17,25 +17,17 @@
|
|
|
17
17
|
"tegg"
|
|
18
18
|
],
|
|
19
19
|
"files": [
|
|
20
|
-
"
|
|
21
|
-
"app.d.ts",
|
|
22
|
-
"lib/**/*.js",
|
|
23
|
-
"lib/**/*.d.ts",
|
|
24
|
-
"typings/index.d.ts"
|
|
20
|
+
"dist"
|
|
25
21
|
],
|
|
26
22
|
"type": "module",
|
|
27
23
|
"exports": {
|
|
24
|
+
".": "./dist/index.js",
|
|
25
|
+
"./app": "./dist/app.js",
|
|
26
|
+
"./lib/AopContextHook": "./dist/lib/AopContextHook.js",
|
|
27
|
+
"./types": "./dist/types.js",
|
|
28
28
|
"./package.json": "./package.json"
|
|
29
29
|
},
|
|
30
|
-
"
|
|
31
|
-
"test": "egg-bin test",
|
|
32
|
-
"cov": "egg-bin cov",
|
|
33
|
-
"clean": "tsc --build --clean",
|
|
34
|
-
"tsc": "npm run clean && tsc -p ./tsconfig.pub.json",
|
|
35
|
-
"tsc:pub": "npm run tsc",
|
|
36
|
-
"prepublishOnly": "npm run tsc"
|
|
37
|
-
},
|
|
38
|
-
"homepage": "https://github.com/eggjs/tegg",
|
|
30
|
+
"homepage": "https://github.com/eggjs/tegg/tree/next/plugin/aop",
|
|
39
31
|
"bugs": {
|
|
40
32
|
"url": "https://github.com/eggjs/tegg/issues"
|
|
41
33
|
},
|
|
@@ -45,28 +37,38 @@
|
|
|
45
37
|
"directory": "plugin/aop"
|
|
46
38
|
},
|
|
47
39
|
"engines": {
|
|
48
|
-
"node": ">=
|
|
40
|
+
"node": ">=22.18.0"
|
|
49
41
|
},
|
|
50
42
|
"dependencies": {
|
|
51
|
-
"@eggjs/aop-decorator": "
|
|
52
|
-
"@eggjs/egg-module-common": "
|
|
53
|
-
"@eggjs/tegg": "
|
|
54
|
-
"@eggjs/tegg-aop-runtime": "
|
|
55
|
-
"@eggjs/tegg-metadata": "
|
|
43
|
+
"@eggjs/aop-decorator": "4.0.0-beta.5",
|
|
44
|
+
"@eggjs/egg-module-common": "4.0.0-beta.5",
|
|
45
|
+
"@eggjs/tegg": "4.0.0-beta.5",
|
|
46
|
+
"@eggjs/tegg-aop-runtime": "4.0.0-beta.5",
|
|
47
|
+
"@eggjs/tegg-metadata": "4.0.0-beta.5",
|
|
48
|
+
"@eggjs/tegg-runtime": "4.0.0-beta.5"
|
|
49
|
+
},
|
|
50
|
+
"peerDependencies": {
|
|
51
|
+
"egg": "beta",
|
|
52
|
+
"@eggjs/tegg-plugin": "4.0.0-beta.5"
|
|
56
53
|
},
|
|
57
54
|
"devDependencies": {
|
|
58
|
-
"@eggjs/
|
|
59
|
-
"@
|
|
60
|
-
"
|
|
61
|
-
"
|
|
62
|
-
"
|
|
63
|
-
"
|
|
64
|
-
"
|
|
65
|
-
"
|
|
66
|
-
"typescript": "5"
|
|
55
|
+
"@eggjs/mock": "beta",
|
|
56
|
+
"@types/node": "^22.10.5",
|
|
57
|
+
"egg": "beta",
|
|
58
|
+
"typescript": "^5.9.3",
|
|
59
|
+
"tsdown": "^0.15.6",
|
|
60
|
+
"unplugin-unused": "^0.5.3",
|
|
61
|
+
"@eggjs/tegg-config": "4.0.0-beta.5",
|
|
62
|
+
"@eggjs/tegg-plugin": "4.0.0-beta.5"
|
|
67
63
|
},
|
|
68
64
|
"publishConfig": {
|
|
69
65
|
"access": "public"
|
|
70
66
|
},
|
|
71
|
-
"
|
|
72
|
-
|
|
67
|
+
"main": "./dist/index.js",
|
|
68
|
+
"module": "./dist/index.js",
|
|
69
|
+
"scripts": {
|
|
70
|
+
"clean": "rimraf dist",
|
|
71
|
+
"build": "tsdown",
|
|
72
|
+
"typecheck": "tsc --noEmit"
|
|
73
|
+
}
|
|
74
|
+
}
|
package/app.d.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { Application, ILifecycleBoot } from 'egg';
|
|
2
|
-
export default class AopAppHook implements ILifecycleBoot {
|
|
3
|
-
private readonly app;
|
|
4
|
-
private readonly crosscutAdviceFactory;
|
|
5
|
-
private readonly loadUnitAopHook;
|
|
6
|
-
private readonly eggPrototypeCrossCutHook;
|
|
7
|
-
private readonly eggObjectAopHook;
|
|
8
|
-
private aopContextHook;
|
|
9
|
-
constructor(app: Application);
|
|
10
|
-
configDidLoad(): void;
|
|
11
|
-
didLoad(): Promise<void>;
|
|
12
|
-
beforeClose(): Promise<void>;
|
|
13
|
-
}
|
package/app.js
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import assert from 'node:assert';
|
|
2
|
-
import { CrosscutAdviceFactory } from '@eggjs/tegg/aop';
|
|
3
|
-
import { crossCutGraphHook, EggObjectAopHook, EggPrototypeCrossCutHook, LoadUnitAopHook, pointCutGraphHook, } from '@eggjs/tegg-aop-runtime';
|
|
4
|
-
import { AopContextHook } from './lib/AopContextHook.js';
|
|
5
|
-
import { GlobalGraph } from '@eggjs/tegg-metadata';
|
|
6
|
-
export default class AopAppHook {
|
|
7
|
-
app;
|
|
8
|
-
crosscutAdviceFactory;
|
|
9
|
-
loadUnitAopHook;
|
|
10
|
-
eggPrototypeCrossCutHook;
|
|
11
|
-
eggObjectAopHook;
|
|
12
|
-
aopContextHook;
|
|
13
|
-
constructor(app) {
|
|
14
|
-
this.app = app;
|
|
15
|
-
this.crosscutAdviceFactory = new CrosscutAdviceFactory();
|
|
16
|
-
this.loadUnitAopHook = new LoadUnitAopHook(this.crosscutAdviceFactory);
|
|
17
|
-
this.eggPrototypeCrossCutHook = new EggPrototypeCrossCutHook(this.crosscutAdviceFactory);
|
|
18
|
-
this.eggObjectAopHook = new EggObjectAopHook();
|
|
19
|
-
}
|
|
20
|
-
configDidLoad() {
|
|
21
|
-
this.app.eggPrototypeLifecycleUtil.registerLifecycle(this.eggPrototypeCrossCutHook);
|
|
22
|
-
this.app.loadUnitLifecycleUtil.registerLifecycle(this.loadUnitAopHook);
|
|
23
|
-
this.app.eggObjectLifecycleUtil.registerLifecycle(this.eggObjectAopHook);
|
|
24
|
-
}
|
|
25
|
-
async didLoad() {
|
|
26
|
-
await this.app.moduleHandler.ready();
|
|
27
|
-
assert(GlobalGraph.instance, 'GlobalGraph.instance is not set');
|
|
28
|
-
GlobalGraph.instance.registerBuildHook(crossCutGraphHook);
|
|
29
|
-
GlobalGraph.instance.registerBuildHook(pointCutGraphHook);
|
|
30
|
-
this.aopContextHook = new AopContextHook(this.app.moduleHandler);
|
|
31
|
-
this.app.eggContextLifecycleUtil.registerLifecycle(this.aopContextHook);
|
|
32
|
-
}
|
|
33
|
-
async beforeClose() {
|
|
34
|
-
this.app.eggPrototypeLifecycleUtil.deleteLifecycle(this.eggPrototypeCrossCutHook);
|
|
35
|
-
this.app.loadUnitLifecycleUtil.deleteLifecycle(this.loadUnitAopHook);
|
|
36
|
-
this.app.eggObjectLifecycleUtil.deleteLifecycle(this.eggObjectAopHook);
|
|
37
|
-
this.app.eggContextLifecycleUtil.deleteLifecycle(this.aopContextHook);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXBwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sTUFBTSxNQUFNLGFBQWEsQ0FBQztBQUVqQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RCxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLGdCQUFnQixFQUNoQix3QkFBd0IsRUFDeEIsZUFBZSxFQUNmLGlCQUFpQixHQUNsQixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFbkQsTUFBTSxDQUFDLE9BQU8sT0FBTyxVQUFVO0lBQ1osR0FBRyxDQUFjO0lBRWpCLHFCQUFxQixDQUF3QjtJQUM3QyxlQUFlLENBQWtCO0lBQ2pDLHdCQUF3QixDQUEyQjtJQUNuRCxnQkFBZ0IsQ0FBbUI7SUFDNUMsY0FBYyxDQUFpQjtJQUV2QyxZQUFZLEdBQWdCO1FBQzFCLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUkscUJBQXFCLEVBQUUsQ0FBQztRQUN6RCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3ZFLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLHdCQUF3QixDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3pGLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLGdCQUFnQixFQUFFLENBQUM7SUFDakQsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLENBQUMsR0FBRyxDQUFDLHlCQUF5QixDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ3BGLElBQUksQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxHQUFHLENBQUMsc0JBQXNCLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPO1FBQ1gsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNyQyxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxpQ0FBaUMsQ0FBQyxDQUFDO1FBQ2hFLFdBQVcsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMxRCxXQUFXLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2pFLElBQUksQ0FBQyxHQUFHLENBQUMsdUJBQXVCLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVztRQUNmLElBQUksQ0FBQyxHQUFHLENBQUMseUJBQXlCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ2xGLElBQUksQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNyRSxJQUFJLENBQUMsR0FBRyxDQUFDLHNCQUFzQixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN2RSxJQUFJLENBQUMsR0FBRyxDQUFDLHVCQUF1QixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDeEUsQ0FBQztDQUNGIn0=
|
package/lib/AopContextHook.d.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import type { Application } from 'egg';
|
|
2
|
-
import type { EggContext, EggContextLifecycleContext } from '@eggjs/tegg-runtime';
|
|
3
|
-
import type { EggProtoImplClass, LifecycleHook } from '@eggjs/tegg';
|
|
4
|
-
import { EggPrototype } from '@eggjs/tegg-metadata';
|
|
5
|
-
export interface EggPrototypeWithClazz extends EggPrototype {
|
|
6
|
-
clazz?: EggProtoImplClass;
|
|
7
|
-
}
|
|
8
|
-
export interface ProtoToCreate {
|
|
9
|
-
name: string;
|
|
10
|
-
proto: EggPrototype;
|
|
11
|
-
}
|
|
12
|
-
export declare class AopContextHook implements LifecycleHook<EggContextLifecycleContext, EggContext> {
|
|
13
|
-
private readonly moduleHandler;
|
|
14
|
-
private requestProtoList;
|
|
15
|
-
constructor(moduleHandler: Application['moduleHandler']);
|
|
16
|
-
preCreate(_: unknown, ctx: EggContext): Promise<void>;
|
|
17
|
-
}
|
package/lib/AopContextHook.js
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { PrototypeUtil, ObjectInitType } from '@eggjs/tegg';
|
|
2
|
-
import { AspectInfoUtil } from '@eggjs/aop-decorator';
|
|
3
|
-
import { TeggError } from '@eggjs/tegg-metadata';
|
|
4
|
-
import { ROOT_PROTO } from '@eggjs/egg-module-common';
|
|
5
|
-
export class AopContextHook {
|
|
6
|
-
moduleHandler;
|
|
7
|
-
requestProtoList = [];
|
|
8
|
-
constructor(moduleHandler) {
|
|
9
|
-
this.moduleHandler = moduleHandler;
|
|
10
|
-
for (const loadUnitInstance of this.moduleHandler.loadUnitInstances) {
|
|
11
|
-
const iterator = loadUnitInstance.loadUnit.iterateEggPrototype();
|
|
12
|
-
for (const proto of iterator) {
|
|
13
|
-
const protoWithClazz = proto;
|
|
14
|
-
const clazz = protoWithClazz.clazz;
|
|
15
|
-
if (!clazz)
|
|
16
|
-
continue;
|
|
17
|
-
const aspects = AspectInfoUtil.getAspectList(clazz);
|
|
18
|
-
for (const aspect of aspects) {
|
|
19
|
-
for (const advice of aspect.adviceList) {
|
|
20
|
-
const adviceProto = PrototypeUtil.getClazzProto(advice.clazz);
|
|
21
|
-
if (!adviceProto) {
|
|
22
|
-
throw TeggError.create(`Aop Advice(${advice.clazz.name}) not found in loadUnits`, 'advice_not_found');
|
|
23
|
-
}
|
|
24
|
-
if (adviceProto.initType === ObjectInitType.CONTEXT) {
|
|
25
|
-
this.requestProtoList.push({
|
|
26
|
-
name: advice.name,
|
|
27
|
-
proto: adviceProto,
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
async preCreate(_, ctx) {
|
|
36
|
-
// compatible with egg controller
|
|
37
|
-
// add context aspect to ctx
|
|
38
|
-
if (!ctx.get(ROOT_PROTO)) {
|
|
39
|
-
for (const proto of this.requestProtoList) {
|
|
40
|
-
ctx.addProtoToCreate(proto.name, proto.proto);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQW9wQ29udGV4dEhvb2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJBb3BDb250ZXh0SG9vay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFnQixTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFXdEQsTUFBTSxPQUFPLGNBQWM7SUFDUixhQUFhLENBQStCO0lBQ3JELGdCQUFnQixHQUF5QixFQUFFLENBQUM7SUFFcEQsWUFBWSxhQUEyQztRQUNyRCxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUNuQyxLQUFLLE1BQU0sZ0JBQWdCLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3BFLE1BQU0sUUFBUSxHQUFHLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQ2pFLEtBQUssTUFBTSxLQUFLLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQzdCLE1BQU0sY0FBYyxHQUFHLEtBQThCLENBQUM7Z0JBQ3RELE1BQU0sS0FBSyxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUM7Z0JBQ25DLElBQUksQ0FBQyxLQUFLO29CQUFFLFNBQVM7Z0JBQ3JCLE1BQU0sT0FBTyxHQUFHLGNBQWMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3BELEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxFQUFFLENBQUM7b0JBQzdCLEtBQUssTUFBTSxNQUFNLElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO3dCQUN2QyxNQUFNLFdBQVcsR0FBRyxhQUFhLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQTZCLENBQUM7d0JBQzFGLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQzs0QkFDakIsTUFBTSxTQUFTLENBQUMsTUFBTSxDQUFDLGNBQWMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLDBCQUEwQixFQUFFLGtCQUFrQixDQUFDLENBQUM7d0JBQ3hHLENBQUM7d0JBQ0QsSUFBSSxXQUFXLENBQUMsUUFBUSxLQUFLLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQzs0QkFDcEQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQztnQ0FDekIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO2dDQUNqQixLQUFLLEVBQUUsV0FBVzs2QkFDbkIsQ0FBQyxDQUFDO3dCQUNMLENBQUM7b0JBQ0gsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFVLEVBQUUsR0FBZTtRQUN6QyxpQ0FBaUM7UUFDakMsNEJBQTRCO1FBQzVCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDekIsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztnQkFDMUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hELENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztDQUNGIn0=
|
package/typings/index.d.ts
DELETED