@eggjs/tegg-aop-plugin 3.14.1 → 3.14.3

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/app.d.ts CHANGED
@@ -4,7 +4,9 @@ export default class AopAppHook {
4
4
  private readonly loadUnitAopHook;
5
5
  private readonly eggPrototypeCrossCutHook;
6
6
  private readonly eggObjectAopHook;
7
+ private aopContextHook;
7
8
  constructor(app: any);
8
9
  configDidLoad(): void;
10
+ didLoad(): Promise<void>;
9
11
  beforeClose(): void;
10
12
  }
package/app.js CHANGED
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const aop_1 = require("@eggjs/tegg/aop");
4
4
  const tegg_aop_runtime_1 = require("@eggjs/tegg-aop-runtime");
5
+ const AopContextHook_1 = require("./lib/AopContextHook");
5
6
  class AopAppHook {
6
7
  constructor(app) {
7
8
  this.app = app;
@@ -15,11 +16,17 @@ class AopAppHook {
15
16
  this.app.loadUnitLifecycleUtil.registerLifecycle(this.loadUnitAopHook);
16
17
  this.app.eggObjectLifecycleUtil.registerLifecycle(this.eggObjectAopHook);
17
18
  }
19
+ async didLoad() {
20
+ await this.app.moduleHandler.ready();
21
+ this.aopContextHook = new AopContextHook_1.AopContextHook(this.app.moduleHandler);
22
+ this.app.eggContextLifecycleUtil.registerLifecycle(this.aopContextHook);
23
+ }
18
24
  beforeClose() {
19
25
  this.app.eggPrototypeLifecycleUtil.deleteLifecycle(this.eggPrototypeCrossCutHook);
20
26
  this.app.loadUnitLifecycleUtil.deleteLifecycle(this.loadUnitAopHook);
21
27
  this.app.eggObjectLifecycleUtil.deleteLifecycle(this.eggObjectAopHook);
28
+ this.app.eggContextLifecycleUtil.deleteLifecycle(this.aopContextHook);
22
29
  }
23
30
  }
24
31
  exports.default = AopAppHook;
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXBwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0EseUNBQXdEO0FBQ3hELDhEQUFzRztBQUV0RyxNQUFxQixVQUFVO0lBUTdCLFlBQVksR0FBRztRQUNiLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksMkJBQXFCLEVBQUUsQ0FBQztRQUN6RCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksa0NBQWUsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUN2RSxJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSwyQ0FBd0IsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUN6RixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxtQ0FBZ0IsRUFBRSxDQUFDO0lBQ2pELENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUNwRixJQUFJLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN2RSxJQUFJLENBQUMsR0FBRyxDQUFDLHNCQUFzQixDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDbEYsSUFBSSxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxHQUFHLENBQUMsc0JBQXNCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7Q0FDRjtBQTNCRCw2QkEyQkMifQ==
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXBwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0EseUNBQXdEO0FBQ3hELDhEQUFzRztBQUN0Ryx5REFBc0Q7QUFFdEQsTUFBcUIsVUFBVTtJQVM3QixZQUFZLEdBQUc7UUFDYixJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNmLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLDJCQUFxQixFQUFFLENBQUM7UUFDekQsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLGtDQUFlLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDdkUsSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksMkNBQXdCLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDekYsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksbUNBQWdCLEVBQUUsQ0FBQztJQUNqRCxDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxHQUFHLENBQUMseUJBQXlCLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDcEYsSUFBSSxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDdkUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU87UUFDWCxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSwrQkFBYyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsR0FBRyxDQUFDLHlCQUF5QixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUNsRixJQUFJLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDckUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDdkUsSUFBSSxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7Q0FDRjtBQW5DRCw2QkFtQ0MifQ==
@@ -0,0 +1,17 @@
1
+ import { Application } from 'egg';
2
+ import { EggProtoImplClass, LifecycleHook } from '@eggjs/tegg';
3
+ import { EggContext, EggContextLifecycleContext } from '@eggjs/tegg-runtime';
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(_: any, ctx: EggContext): Promise<void>;
17
+ }
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AopContextHook = void 0;
4
+ const tegg_1 = require("@eggjs/tegg");
5
+ const aop_decorator_1 = require("@eggjs/aop-decorator");
6
+ const tegg_metadata_1 = require("@eggjs/tegg-metadata");
7
+ const egg_module_common_1 = require("@eggjs/egg-module-common");
8
+ class AopContextHook {
9
+ constructor(moduleHandler) {
10
+ this.requestProtoList = [];
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 protoWithClazz = proto;
16
+ const clazz = protoWithClazz.clazz;
17
+ if (!clazz)
18
+ continue;
19
+ const aspects = aop_decorator_1.AspectInfoUtil.getAspectList(clazz);
20
+ for (const aspect of aspects) {
21
+ for (const advice of aspect.adviceList) {
22
+ const adviceProto = tegg_1.PrototypeUtil.getClazzProto(advice.clazz);
23
+ if (!adviceProto) {
24
+ throw tegg_metadata_1.TeggError.create(`Aop Advice(${advice.clazz.name}) not found in loadUnits`, 'advice_not_found');
25
+ }
26
+ if (adviceProto.initType === tegg_1.ObjectInitType.CONTEXT) {
27
+ this.requestProtoList.push({
28
+ name: advice.name,
29
+ proto: adviceProto,
30
+ });
31
+ }
32
+ }
33
+ }
34
+ }
35
+ }
36
+ }
37
+ async preCreate(_, ctx) {
38
+ // compatible with egg controller
39
+ // add context aspect to ctx
40
+ if (!ctx.get(egg_module_common_1.ROOT_PROTO)) {
41
+ for (const proto of this.requestProtoList) {
42
+ ctx.addProtoToCreate(proto.name, proto.proto);
43
+ }
44
+ }
45
+ }
46
+ }
47
+ exports.AopContextHook = AopContextHook;
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQW9wQ29udGV4dEhvb2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJBb3BDb250ZXh0SG9vay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxzQ0FBOEY7QUFFOUYsd0RBQXNEO0FBQ3RELHdEQUErRDtBQUMvRCxnRUFBc0Q7QUFXdEQsTUFBYSxjQUFjO0lBSXpCLFlBQVksYUFBMkM7UUFGL0MscUJBQWdCLEdBQXlCLEVBQUUsQ0FBQztRQUdsRCxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUNuQyxLQUFLLE1BQU0sZ0JBQWdCLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsRUFBRTtZQUNuRSxNQUFNLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUNqRSxLQUFLLE1BQU0sS0FBSyxJQUFJLFFBQVEsRUFBRTtnQkFDNUIsTUFBTSxjQUFjLEdBQUcsS0FBOEIsQ0FBQztnQkFDdEQsTUFBTSxLQUFLLEdBQUcsY0FBYyxDQUFDLEtBQUssQ0FBQztnQkFDbkMsSUFBSSxDQUFDLEtBQUs7b0JBQUUsU0FBUztnQkFDckIsTUFBTSxPQUFPLEdBQUcsOEJBQWMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3BELEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxFQUFFO29CQUM1QixLQUFLLE1BQU0sTUFBTSxJQUFJLE1BQU0sQ0FBQyxVQUFVLEVBQUU7d0JBQ3RDLE1BQU0sV0FBVyxHQUFHLG9CQUFhLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQTZCLENBQUM7d0JBQzFGLElBQUksQ0FBQyxXQUFXLEVBQUU7NEJBQ2hCLE1BQU0seUJBQVMsQ0FBQyxNQUFNLENBQUMsY0FBYyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksMEJBQTBCLEVBQUUsa0JBQWtCLENBQUMsQ0FBQzt5QkFDdkc7d0JBQ0QsSUFBSSxXQUFXLENBQUMsUUFBUSxLQUFLLHFCQUFjLENBQUMsT0FBTyxFQUFFOzRCQUNuRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDO2dDQUN6QixJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7Z0NBQ2pCLEtBQUssRUFBRSxXQUFXOzZCQUNuQixDQUFDLENBQUM7eUJBQ0o7cUJBQ0Y7aUJBQ0Y7YUFDRjtTQUNGO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEdBQWU7UUFDaEMsaUNBQWlDO1FBQ2pDLDRCQUE0QjtRQUM1QixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyw4QkFBVSxDQUFDLEVBQUU7WUFDeEIsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7Z0JBQ3pDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUMvQztTQUNGO0lBQ0gsQ0FBQztDQUNGO0FBeENELHdDQXdDQyJ9
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eggjs/tegg-aop-plugin",
3
- "version": "3.14.1",
3
+ "version": "3.14.3",
4
4
  "eggPlugin": {
5
5
  "name": "aopModule",
6
6
  "dependencies": [
@@ -18,7 +18,9 @@
18
18
  ],
19
19
  "files": [
20
20
  "app.js",
21
- "app.d.ts"
21
+ "app.d.ts",
22
+ "lib/**/*.js",
23
+ "lib/**/*.d.ts"
22
24
  ],
23
25
  "scripts": {
24
26
  "test": "cross-env NODE_ENV=test NODE_OPTIONS='--no-deprecation' mocha",
@@ -40,12 +42,12 @@
40
42
  "node": ">=14.0.0"
41
43
  },
42
44
  "dependencies": {
43
- "@eggjs/tegg": "^3.14.1",
44
- "@eggjs/tegg-aop-runtime": "^3.14.1"
45
+ "@eggjs/tegg": "^3.14.3",
46
+ "@eggjs/tegg-aop-runtime": "^3.14.3"
45
47
  },
46
48
  "devDependencies": {
47
- "@eggjs/tegg-config": "^3.14.1",
48
- "@eggjs/tegg-plugin": "^3.14.1",
49
+ "@eggjs/tegg-config": "^3.14.3",
50
+ "@eggjs/tegg-plugin": "^3.14.3",
49
51
  "@types/mocha": "^10.0.1",
50
52
  "@types/node": "^20.2.4",
51
53
  "cross-env": "^7.0.3",
@@ -58,5 +60,5 @@
58
60
  "publishConfig": {
59
61
  "access": "public"
60
62
  },
61
- "gitHead": "40d6627b827130ce3c963b05499ef8c9fd4ccbcb"
63
+ "gitHead": "467cbb2ff77708529b7402510bd69da71d206264"
62
64
  }