@eggjs/tegg-controller-plugin 4.0.0-beta.8 → 4.0.0-beta.9
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/app/middleware/tegg_root_proto.d.ts +2 -5
- package/dist/app/middleware/tegg_root_proto.js +7 -11
- package/dist/app.d.ts +23 -5
- package/dist/app.js +76 -17
- package/dist/index.d.ts +1 -5
- package/dist/index.js +2 -18
- package/dist/lib/AppLoadUnitControllerHook.d.ts +9 -14
- package/dist/lib/AppLoadUnitControllerHook.js +29 -7
- package/dist/lib/ControllerLoadUnit.d.ts +20 -24
- package/dist/lib/ControllerLoadUnit.js +72 -3
- package/dist/lib/ControllerLoadUnitHandler.d.ts +11 -15
- package/dist/lib/ControllerLoadUnitHandler.js +29 -4
- package/dist/lib/ControllerLoadUnitInstance.d.ts +16 -20
- package/dist/lib/ControllerLoadUnitInstance.js +36 -40
- package/dist/lib/ControllerMetadataManager.d.ts +7 -11
- package/dist/lib/ControllerMetadataManager.js +27 -3
- package/dist/lib/ControllerRegister.d.ts +5 -3
- package/dist/lib/ControllerRegister.js +3 -4
- package/dist/lib/ControllerRegisterFactory.d.ts +12 -4
- package/dist/lib/ControllerRegisterFactory.js +22 -5
- package/dist/lib/EggControllerLoader.d.ts +6 -10
- package/dist/lib/EggControllerLoader.js +31 -3
- package/dist/lib/EggControllerPrototypeHook.d.ts +4 -8
- package/dist/lib/EggControllerPrototypeHook.js +11 -3
- package/dist/lib/RootProtoManager.d.ts +8 -2
- package/dist/lib/RootProtoManager.js +34 -3
- package/dist/lib/errors.d.ts +3 -7
- package/dist/lib/errors.js +12 -3
- package/dist/lib/impl/http/Acl.d.ts +2 -6
- package/dist/lib/impl/http/Acl.js +33 -3
- package/dist/lib/impl/http/HTTPControllerRegister.d.ts +17 -21
- package/dist/lib/impl/http/HTTPControllerRegister.js +64 -9
- package/dist/lib/impl/http/HTTPMethodRegister.d.ts +18 -22
- package/dist/lib/impl/http/HTTPMethodRegister.js +165 -7
- package/dist/lib/impl/http/Req.d.ts +4 -8
- package/dist/lib/impl/http/Req.js +13 -3
- package/dist/types.d.ts +2 -5
- package/dist/types.js +3 -18
- package/package.json +12 -12
- package/dist/Acl-BF8dxD8f.js +0 -29
- package/dist/AppLoadUnitControllerHook-C3F2NtiE.js +0 -27
- package/dist/ControllerLoadUnit-DWgcQuC0.js +0 -63
- package/dist/ControllerLoadUnitHandler-BiPlOVSN.js +0 -29
- package/dist/ControllerMetadataManager-CC5nmTlv.js +0 -23
- package/dist/ControllerRegister-DDwsWz5F.d.ts +0 -9
- package/dist/ControllerRegister-DPqM08MF.js +0 -3
- package/dist/ControllerRegisterFactory-Bz7bulBg.js +0 -23
- package/dist/ControllerRegisterFactory-DCPVkM4E.d.ts +0 -16
- package/dist/EggControllerLoader-iohfFKpj.js +0 -29
- package/dist/EggControllerPrototypeHook-Djf4Mwvw.js +0 -13
- package/dist/HTTPControllerRegister-CZQJslUT.js +0 -58
- package/dist/HTTPMethodRegister-CHHFV-eT.js +0 -138
- package/dist/Req-D3i-7606.js +0 -16
- package/dist/RootProtoManager-CbLm-PD1.js +0 -28
- package/dist/RootProtoManager-DkqD47oc.d.ts +0 -12
- package/dist/app-CZQLJgoQ.d.ts +0 -27
- package/dist/app-Dq89t2rF.js +0 -67
- package/dist/errors-CnXI09lf.js +0 -16
- package/dist/types-D9vieyYE.d.ts +0 -1
- package/dist/types-DkvgFpN4.js +0 -3
|
@@ -1,12 +1,8 @@
|
|
|
1
|
-
import { ROOT_PROTO } from
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
return next();
|
|
8
|
-
};
|
|
1
|
+
import { ROOT_PROTO } from '@eggjs/egg-module-common';
|
|
2
|
+
export default () => {
|
|
3
|
+
return async function teggRootProto(ctx, next) {
|
|
4
|
+
ctx[ROOT_PROTO] = ctx.app.rootProtoManager.getRootProto(ctx);
|
|
5
|
+
return next();
|
|
6
|
+
};
|
|
9
7
|
};
|
|
10
|
-
|
|
11
|
-
//#endregion
|
|
12
|
-
export { tegg_root_proto_default as default };
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVnZ19yb290X3Byb3RvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9taWRkbGV3YXJlL3RlZ2dfcm9vdF9wcm90by50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFdEQsZUFBZSxHQUFtQixFQUFFO0lBQ2xDLE9BQU8sS0FBSyxVQUFVLGFBQWEsQ0FBQyxHQUFHLEVBQUUsSUFBSTtRQUMzQyxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDN0QsT0FBTyxJQUFJLEVBQUUsQ0FBQztJQUNoQixDQUFDLENBQUM7QUFDSixDQUFDLENBQUEifQ==
|
package/dist/app.d.ts
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
export
|
|
1
|
+
import type { Application, ILifecycleBoot } from 'egg';
|
|
2
|
+
import { ControllerMetaBuilderFactory } from '@eggjs/tegg';
|
|
3
|
+
import { ControllerRegisterFactory } from './lib/ControllerRegisterFactory.ts';
|
|
4
|
+
import { RootProtoManager } from './lib/RootProtoManager.ts';
|
|
5
|
+
export default class ControllerAppBootHook implements ILifecycleBoot {
|
|
6
|
+
private readonly app;
|
|
7
|
+
private readonly loadUnitHook;
|
|
8
|
+
private readonly controllerRegisterFactory;
|
|
9
|
+
private controllerLoadUnitHandler;
|
|
10
|
+
private readonly controllerPrototypeHook;
|
|
11
|
+
constructor(app: Application);
|
|
12
|
+
configWillLoad(): void;
|
|
13
|
+
prepareMiddleware(middlewareNames: string[]): string[];
|
|
14
|
+
didLoad(): Promise<void>;
|
|
15
|
+
beforeClose(): Promise<void>;
|
|
16
|
+
}
|
|
17
|
+
declare module 'egg' {
|
|
18
|
+
interface Application {
|
|
19
|
+
rootProtoManager: RootProtoManager;
|
|
20
|
+
controllerRegisterFactory: ControllerRegisterFactory;
|
|
21
|
+
controllerMetaBuilderFactory: typeof ControllerMetaBuilderFactory;
|
|
22
|
+
}
|
|
23
|
+
}
|
package/dist/app.js
CHANGED
|
@@ -1,17 +1,76 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import "./
|
|
5
|
-
import "./
|
|
6
|
-
import "./
|
|
7
|
-
import "./
|
|
8
|
-
import "./
|
|
9
|
-
import "./
|
|
10
|
-
import "./
|
|
11
|
-
import "./
|
|
12
|
-
import "./
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
export
|
|
1
|
+
import {} from '@eggjs/tegg-metadata';
|
|
2
|
+
import { ControllerMetaBuilderFactory, ControllerType } from '@eggjs/tegg';
|
|
3
|
+
import { ModuleLoadUnitInstance } from '@eggjs/tegg-runtime';
|
|
4
|
+
import { CONTROLLER_LOAD_UNIT, ControllerLoadUnit } from "./lib/ControllerLoadUnit.js";
|
|
5
|
+
import { AppLoadUnitControllerHook } from "./lib/AppLoadUnitControllerHook.js";
|
|
6
|
+
import { HTTPControllerRegister } from "./lib/impl/http/HTTPControllerRegister.js";
|
|
7
|
+
import { ControllerRegisterFactory } from "./lib/ControllerRegisterFactory.js";
|
|
8
|
+
import { ControllerLoadUnitHandler } from "./lib/ControllerLoadUnitHandler.js";
|
|
9
|
+
import { ControllerMetadataManager } from "./lib/ControllerMetadataManager.js";
|
|
10
|
+
import { EggControllerPrototypeHook } from "./lib/EggControllerPrototypeHook.js";
|
|
11
|
+
import { RootProtoManager } from "./lib/RootProtoManager.js";
|
|
12
|
+
import { EggControllerLoader } from "./lib/EggControllerLoader.js";
|
|
13
|
+
// Load Controller process
|
|
14
|
+
// 1. await add load unit is ready, controller may depend other load unit
|
|
15
|
+
// 2. load ${app_base_dir}app/controller file
|
|
16
|
+
// 3. ControllerRegister register controller implement
|
|
17
|
+
export default class ControllerAppBootHook {
|
|
18
|
+
app;
|
|
19
|
+
loadUnitHook;
|
|
20
|
+
controllerRegisterFactory;
|
|
21
|
+
controllerLoadUnitHandler;
|
|
22
|
+
controllerPrototypeHook;
|
|
23
|
+
constructor(app) {
|
|
24
|
+
this.app = app;
|
|
25
|
+
this.controllerRegisterFactory = new ControllerRegisterFactory(this.app);
|
|
26
|
+
this.app.rootProtoManager = new RootProtoManager();
|
|
27
|
+
this.app.controllerRegisterFactory = this.controllerRegisterFactory;
|
|
28
|
+
this.app.controllerMetaBuilderFactory = ControllerMetaBuilderFactory;
|
|
29
|
+
this.loadUnitHook = new AppLoadUnitControllerHook(this.controllerRegisterFactory, this.app.rootProtoManager);
|
|
30
|
+
this.controllerPrototypeHook = new EggControllerPrototypeHook();
|
|
31
|
+
}
|
|
32
|
+
configWillLoad() {
|
|
33
|
+
this.app.loadUnitLifecycleUtil.registerLifecycle(this.loadUnitHook);
|
|
34
|
+
this.app.eggPrototypeLifecycleUtil.registerLifecycle(this.controllerPrototypeHook);
|
|
35
|
+
this.app.loaderFactory.registerLoader(CONTROLLER_LOAD_UNIT, unitPath => {
|
|
36
|
+
return new EggControllerLoader(unitPath);
|
|
37
|
+
});
|
|
38
|
+
this.controllerRegisterFactory.registerControllerRegister(ControllerType.HTTP, HTTPControllerRegister.create);
|
|
39
|
+
this.app.loadUnitFactory.registerLoadUnitCreator(CONTROLLER_LOAD_UNIT, (ctx) => {
|
|
40
|
+
return new ControllerLoadUnit(`tegg-app-controller:${ctx.unitPath}`, ctx.unitPath, ctx.loader, this.app.eggPrototypeFactory, this.app.eggPrototypeCreatorFactory);
|
|
41
|
+
});
|
|
42
|
+
this.app.loadUnitInstanceFactory.registerLoadUnitInstanceClass(CONTROLLER_LOAD_UNIT, (ctx) => {
|
|
43
|
+
return new ModuleLoadUnitInstance(ctx.loadUnit);
|
|
44
|
+
});
|
|
45
|
+
// init http root proto middleware
|
|
46
|
+
this.prepareMiddleware(this.app.config.coreMiddleware);
|
|
47
|
+
}
|
|
48
|
+
prepareMiddleware(middlewareNames) {
|
|
49
|
+
if (!middlewareNames.includes('teggCtxLifecycleMiddleware')) {
|
|
50
|
+
middlewareNames.unshift('teggCtxLifecycleMiddleware');
|
|
51
|
+
}
|
|
52
|
+
const index = middlewareNames.indexOf('teggCtxLifecycleMiddleware');
|
|
53
|
+
middlewareNames.splice(index, 0, 'teggRootProto');
|
|
54
|
+
return middlewareNames;
|
|
55
|
+
}
|
|
56
|
+
async didLoad() {
|
|
57
|
+
await this.app.moduleHandler.ready();
|
|
58
|
+
this.controllerLoadUnitHandler = new ControllerLoadUnitHandler(this.app);
|
|
59
|
+
await this.controllerLoadUnitHandler.ready();
|
|
60
|
+
// The real register HTTP controller/method.
|
|
61
|
+
// HTTP method should sort by priority
|
|
62
|
+
// The HTTPControllerRegister will collect all the methods
|
|
63
|
+
// and register methods after collect is done.
|
|
64
|
+
HTTPControllerRegister.instance?.doRegister(this.app.rootProtoManager);
|
|
65
|
+
}
|
|
66
|
+
async beforeClose() {
|
|
67
|
+
if (this.controllerLoadUnitHandler) {
|
|
68
|
+
await this.controllerLoadUnitHandler.destroy();
|
|
69
|
+
}
|
|
70
|
+
this.app.loadUnitLifecycleUtil.deleteLifecycle(this.loadUnitHook);
|
|
71
|
+
this.app.eggPrototypeLifecycleUtil.deleteLifecycle(this.controllerPrototypeHook);
|
|
72
|
+
ControllerMetadataManager.instance.clear();
|
|
73
|
+
HTTPControllerRegister.clean();
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FwcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQWlDLE1BQU0sc0JBQXNCLENBQUM7QUFDckUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMzRSxPQUFPLEVBQXlDLHNCQUFzQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFcEcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdkYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDL0UsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbkYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDL0UsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDL0UsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDL0UsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDakYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFbkUsMEJBQTBCO0FBQzFCLHlFQUF5RTtBQUN6RSw2Q0FBNkM7QUFDN0Msc0RBQXNEO0FBRXRELE1BQU0sQ0FBQyxPQUFPLE9BQU8scUJBQXFCO0lBQ3ZCLEdBQUcsQ0FBYztJQUNqQixZQUFZLENBQTRCO0lBQ3hDLHlCQUF5QixDQUE0QjtJQUM5RCx5QkFBeUIsQ0FBNEI7SUFDNUMsdUJBQXVCLENBQTZCO0lBRXJFLFlBQVksR0FBZ0I7UUFDMUIsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDZixJQUFJLENBQUMseUJBQXlCLEdBQUcs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
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -1,18 +1,2 @@
|
|
|
1
|
-
import "./
|
|
2
|
-
|
|
3
|
-
import "./ControllerRegister-DPqM08MF.js";
|
|
4
|
-
import "./ControllerRegisterFactory-Bz7bulBg.js";
|
|
5
|
-
import "./ControllerMetadataManager-CC5nmTlv.js";
|
|
6
|
-
import "./AppLoadUnitControllerHook-C3F2NtiE.js";
|
|
7
|
-
import "./Acl-BF8dxD8f.js";
|
|
8
|
-
import "./Req-D3i-7606.js";
|
|
9
|
-
import "./errors-CnXI09lf.js";
|
|
10
|
-
import "./HTTPMethodRegister-CHHFV-eT.js";
|
|
11
|
-
import "./HTTPControllerRegister-CZQJslUT.js";
|
|
12
|
-
import "./ControllerLoadUnitHandler-BiPlOVSN.js";
|
|
13
|
-
import "./EggControllerPrototypeHook-Djf4Mwvw.js";
|
|
14
|
-
import "./EggControllerLoader-iohfFKpj.js";
|
|
15
|
-
import "./app-Dq89t2rF.js";
|
|
16
|
-
import "./types-DkvgFpN4.js";
|
|
17
|
-
|
|
18
|
-
export { };
|
|
1
|
+
import "./types.js";
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxZQUFZLENBQUMifQ==
|
|
@@ -1,15 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
import { ControllerRegisterFactory } from
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
private readonly rootProtoManager;
|
|
11
|
-
constructor(controllerRegisterFactory: ControllerRegisterFactory, rootProtoManager: RootProtoManager);
|
|
12
|
-
postCreate(_: LoadUnitLifecycleContext, obj: LoadUnit): Promise<void>;
|
|
1
|
+
import { type LoadUnit, type LoadUnitLifecycleContext } from '@eggjs/tegg-metadata';
|
|
2
|
+
import { type LifecycleHook } from '@eggjs/tegg';
|
|
3
|
+
import { ControllerRegisterFactory } from './ControllerRegisterFactory.ts';
|
|
4
|
+
import { RootProtoManager } from './RootProtoManager.ts';
|
|
5
|
+
export declare class AppLoadUnitControllerHook implements LifecycleHook<LoadUnitLifecycleContext, LoadUnit> {
|
|
6
|
+
private readonly controllerRegisterFactory;
|
|
7
|
+
private readonly rootProtoManager;
|
|
8
|
+
constructor(controllerRegisterFactory: ControllerRegisterFactory, rootProtoManager: RootProtoManager);
|
|
9
|
+
postCreate(_: LoadUnitLifecycleContext, obj: LoadUnit): Promise<void>;
|
|
13
10
|
}
|
|
14
|
-
//#endregion
|
|
15
|
-
export { AppLoadUnitControllerHook };
|
|
@@ -1,7 +1,29 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import "
|
|
4
|
-
import "
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import {} from '@eggjs/tegg-metadata';
|
|
2
|
+
import { CONTROLLER_META_DATA } from '@eggjs/tegg';
|
|
3
|
+
import { ControllerRegisterFactory } from "./ControllerRegisterFactory.js";
|
|
4
|
+
import { ControllerMetadataManager } from "./ControllerMetadataManager.js";
|
|
5
|
+
import { RootProtoManager } from "./RootProtoManager.js";
|
|
6
|
+
export class AppLoadUnitControllerHook {
|
|
7
|
+
controllerRegisterFactory;
|
|
8
|
+
rootProtoManager;
|
|
9
|
+
constructor(controllerRegisterFactory, rootProtoManager) {
|
|
10
|
+
this.controllerRegisterFactory = controllerRegisterFactory;
|
|
11
|
+
this.rootProtoManager = rootProtoManager;
|
|
12
|
+
}
|
|
13
|
+
async postCreate(_, obj) {
|
|
14
|
+
const iterator = obj.iterateEggPrototype();
|
|
15
|
+
for (const proto of iterator) {
|
|
16
|
+
const metadata = proto.getMetaData(CONTROLLER_META_DATA);
|
|
17
|
+
if (!metadata) {
|
|
18
|
+
continue;
|
|
19
|
+
}
|
|
20
|
+
const register = this.controllerRegisterFactory.getControllerRegister(proto, metadata);
|
|
21
|
+
if (!register) {
|
|
22
|
+
throw new Error(`not find controller implement for ${String(proto.name)} which type is ${metadata.type}`);
|
|
23
|
+
}
|
|
24
|
+
ControllerMetadataManager.instance.addController(metadata);
|
|
25
|
+
await register.register(this.rootProtoManager, obj);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBwTG9hZFVuaXRDb250cm9sbGVySG9vay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvQXBwTG9hZFVuaXRDb250cm9sbGVySG9vay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdELE1BQU0sc0JBQXNCLENBQUM7QUFDcEYsT0FBTyxFQUFFLG9CQUFvQixFQUErQyxNQUFNLGFBQWEsQ0FBQztBQUVoRyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV6RCxNQUFNLE9BQU8seUJBQXlCO0lBQ25CLHlCQUF5QixDQUE0QjtJQUNyRCxnQkFBZ0IsQ0FBbUI7SUFFcEQsWUFBWSx5QkFBb0QsRUFBRSxnQkFBa0M7UUFDbEcsSUFBSSxDQUFDLHlCQUF5QixHQUFHLHlCQUF5QixDQUFDO1FBQzNELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztJQUMzQyxDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUEyQixFQUFFLEdBQWE7UUFDekQsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDM0MsS0FBSyxNQUFNLEtBQUssSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUM3QixNQUFNLFFBQVEsR0FBbUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBQ3pGLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDZCxTQUFTO1lBQ1gsQ0FBQztZQUNELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDdkYsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMscUNBQXFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGtCQUFrQixRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUM1RyxDQUFDO1lBQ0QseUJBQXlCLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMzRCxNQUFNLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3RELENBQUM7SUFDSCxDQUFDO0NBQ0YifQ==
|
|
@@ -1,25 +1,21 @@
|
|
|
1
|
-
import { EggPrototype,
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
destroy(): Promise<void>;
|
|
22
|
-
iterateEggPrototype(): IterableIterator<EggPrototype>;
|
|
1
|
+
import { type EggPrototype, EggPrototypeFactory, type Loader, type LoadUnit, type EggPrototypeCreatorFactory } from '@eggjs/tegg-metadata';
|
|
2
|
+
import { type QualifierInfo, type Id } from '@eggjs/tegg';
|
|
3
|
+
export declare const CONTROLLER_LOAD_UNIT = "app#controller";
|
|
4
|
+
export declare class ControllerLoadUnit implements LoadUnit {
|
|
5
|
+
private readonly loader;
|
|
6
|
+
id: Id;
|
|
7
|
+
readonly name: string;
|
|
8
|
+
readonly type = "app#controller";
|
|
9
|
+
readonly unitPath: string;
|
|
10
|
+
private eggPrototypeFactory;
|
|
11
|
+
private eggPrototypeCreatorFactory;
|
|
12
|
+
private protoMap;
|
|
13
|
+
constructor(name: string, unitPath: string, loader: Loader, eggPrototypeFactory: EggPrototypeFactory, eggPrototypeCreatorFactory: typeof EggPrototypeCreatorFactory);
|
|
14
|
+
init(): Promise<void>;
|
|
15
|
+
containPrototype(proto: EggPrototype): boolean;
|
|
16
|
+
getEggPrototype(name: string, qualifiers: QualifierInfo[]): EggPrototype[];
|
|
17
|
+
registerEggPrototype(proto: EggPrototype): void;
|
|
18
|
+
deletePrototype(proto: EggPrototype): void;
|
|
19
|
+
destroy(): Promise<void>;
|
|
20
|
+
iterateEggPrototype(): IterableIterator<EggPrototype>;
|
|
23
21
|
}
|
|
24
|
-
//#endregion
|
|
25
|
-
export { CONTROLLER_LOAD_UNIT, ControllerLoadUnit };
|
|
@@ -1,3 +1,72 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { EggPrototypeFactory, } from '@eggjs/tegg-metadata';
|
|
2
|
+
import { IdenticalUtil, } from '@eggjs/tegg';
|
|
3
|
+
import { MapUtil } from '@eggjs/tegg-common-util';
|
|
4
|
+
export const CONTROLLER_LOAD_UNIT = 'app#controller';
|
|
5
|
+
// ControllerLoadUnit is responsible for manage controller proto
|
|
6
|
+
export class ControllerLoadUnit {
|
|
7
|
+
loader;
|
|
8
|
+
id;
|
|
9
|
+
name;
|
|
10
|
+
type = CONTROLLER_LOAD_UNIT;
|
|
11
|
+
unitPath;
|
|
12
|
+
eggPrototypeFactory;
|
|
13
|
+
eggPrototypeCreatorFactory;
|
|
14
|
+
protoMap = new Map();
|
|
15
|
+
constructor(name, unitPath, loader, eggPrototypeFactory, eggPrototypeCreatorFactory) {
|
|
16
|
+
this.id = IdenticalUtil.createLoadUnitId(name);
|
|
17
|
+
this.name = name;
|
|
18
|
+
this.unitPath = unitPath;
|
|
19
|
+
this.loader = loader;
|
|
20
|
+
this.eggPrototypeFactory = eggPrototypeFactory;
|
|
21
|
+
this.eggPrototypeCreatorFactory = eggPrototypeCreatorFactory;
|
|
22
|
+
}
|
|
23
|
+
async init() {
|
|
24
|
+
const clazzList = await this.loader.load();
|
|
25
|
+
for (const clazz of clazzList) {
|
|
26
|
+
const protos = await this.eggPrototypeCreatorFactory.createProto(clazz, this);
|
|
27
|
+
for (const proto of protos) {
|
|
28
|
+
this.eggPrototypeFactory.registerPrototype(proto, this);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
containPrototype(proto) {
|
|
33
|
+
return !!(this.protoMap.get(proto.name)?.find(t => t === proto));
|
|
34
|
+
}
|
|
35
|
+
getEggPrototype(name, qualifiers) {
|
|
36
|
+
const protos = this.protoMap.get(name);
|
|
37
|
+
return protos?.filter(proto => proto.verifyQualifiers(qualifiers)) || [];
|
|
38
|
+
}
|
|
39
|
+
registerEggPrototype(proto) {
|
|
40
|
+
const protoList = MapUtil.getOrStore(this.protoMap, proto.name, []);
|
|
41
|
+
protoList.push(proto);
|
|
42
|
+
}
|
|
43
|
+
deletePrototype(proto) {
|
|
44
|
+
const protos = this.protoMap.get(proto.name);
|
|
45
|
+
if (protos) {
|
|
46
|
+
const index = protos.indexOf(proto);
|
|
47
|
+
if (index !== -1) {
|
|
48
|
+
protos.splice(index, 1);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
async destroy() {
|
|
53
|
+
for (const namedProtos of this.protoMap.values()) {
|
|
54
|
+
// Delete prototype will delete item
|
|
55
|
+
// array iterator is not safe
|
|
56
|
+
const protos = namedProtos.slice();
|
|
57
|
+
for (const proto of protos) {
|
|
58
|
+
EggPrototypeFactory.instance.deletePrototype(proto, this);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
this.protoMap.clear();
|
|
62
|
+
}
|
|
63
|
+
iterateEggPrototype() {
|
|
64
|
+
const protos = Array.from(this.protoMap.values())
|
|
65
|
+
.reduce((p, c) => {
|
|
66
|
+
p = p.concat(c);
|
|
67
|
+
return p;
|
|
68
|
+
}, []);
|
|
69
|
+
return protos.values();
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udHJvbGxlckxvYWRVbml0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9Db250cm9sbGVyTG9hZFVuaXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLG1CQUFtQixHQUlwQixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFJTCxhQUFhLEdBQ2QsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRWxELE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLGdCQUFnQixDQUFDO0FBRXJELGdFQUFnRTtBQUNoRSxNQUFNLE9BQU8sa0JBQWtCO0lBQ1osTUFBTSxDQUFTO0lBQ2hDLEVBQUUsQ0FBSztJQUNFLElBQUksQ0FBUztJQUNiLElBQUksR0FBRyxvQkFBb0IsQ0FBQztJQUM1QixRQUFRLENBQVM7SUFDbEIsbUJBQW1CLENBQXNCO0lBQ3pDLDBCQUEwQixDQUFvQztJQUM5RCxRQUFRLEdBQTBDLElBQUksR0FBRyxFQUFFLENBQUM7SUFFcEUsWUFDRSxJQUFZLEVBQ1osUUFBZ0IsRUFDaEIsTUFBYyxFQUNkLG1CQUF3QyxFQUN4QywwQkFBNkQ7UUFFN0QsSUFBSSxDQUFDLEVBQUUsR0FBRyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLG1CQUFtQixDQUFDO1FBQy9DLElBQUksQ0FBQywwQkFBMEIsR0FBRywwQkFBMEIsQ0FBQztJQUMvRCxDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUk7UUFDUixNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsSUFB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
|
|
@@ -1,16 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
_init(): Promise<void>;
|
|
13
|
-
destroy(): Promise<void>;
|
|
1
|
+
import { Base } from 'sdk-base';
|
|
2
|
+
import type { Application } from 'egg';
|
|
3
|
+
import { type LoadUnit } from '@eggjs/tegg-metadata';
|
|
4
|
+
import { type LoadUnitInstance } from '@eggjs/tegg-runtime';
|
|
5
|
+
export declare class ControllerLoadUnitHandler extends Base {
|
|
6
|
+
private readonly app;
|
|
7
|
+
controllerLoadUnit: LoadUnit;
|
|
8
|
+
controllerLoadUnitInstance: LoadUnitInstance;
|
|
9
|
+
constructor(app: Application);
|
|
10
|
+
_init(): Promise<void>;
|
|
11
|
+
destroy(): Promise<void>;
|
|
14
12
|
}
|
|
15
|
-
//#endregion
|
|
16
|
-
export { ControllerLoadUnitHandler };
|
|
@@ -1,4 +1,29 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { Base } from 'sdk-base';
|
|
3
|
+
import { EggLoadUnitType } from '@eggjs/tegg-metadata';
|
|
4
|
+
import {} from '@eggjs/tegg-runtime';
|
|
5
|
+
import { CONTROLLER_LOAD_UNIT } from "./ControllerLoadUnit.js";
|
|
6
|
+
export class ControllerLoadUnitHandler extends Base {
|
|
7
|
+
app;
|
|
8
|
+
controllerLoadUnit;
|
|
9
|
+
controllerLoadUnitInstance;
|
|
10
|
+
constructor(app) {
|
|
11
|
+
super({ initMethod: '_init' });
|
|
12
|
+
this.app = app;
|
|
13
|
+
}
|
|
14
|
+
async _init() {
|
|
15
|
+
const controllerDir = path.join(this.app.config.baseDir, 'app/controller');
|
|
16
|
+
const loader = this.app.loaderFactory.createLoader(controllerDir, CONTROLLER_LOAD_UNIT);
|
|
17
|
+
this.controllerLoadUnit = await this.app.loadUnitFactory.createLoadUnit(controllerDir, CONTROLLER_LOAD_UNIT, loader);
|
|
18
|
+
this.controllerLoadUnitInstance = await this.app.loadUnitInstanceFactory.createLoadUnitInstance(this.controllerLoadUnit);
|
|
19
|
+
}
|
|
20
|
+
async destroy() {
|
|
21
|
+
if (this.controllerLoadUnit) {
|
|
22
|
+
await this.app.loadUnitFactory.destroyLoadUnit(this.controllerLoadUnit);
|
|
23
|
+
}
|
|
24
|
+
if (this.controllerLoadUnitInstance) {
|
|
25
|
+
await this.app.loadUnitInstanceFactory.destroyLoadUnitInstance(this.controllerLoadUnitInstance);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udHJvbGxlckxvYWRVbml0SGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvQ29udHJvbGxlckxvYWRVbml0SGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLElBQUksTUFBTSxXQUFXLENBQUM7QUFFN0IsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVoQyxPQUFPLEVBQUUsZUFBZSxFQUFpQixNQUFNLHNCQUFzQixDQUFDO0FBQ3RFLE9BQU8sRUFBeUIsTUFBTSxxQkFBcUIsQ0FBQztBQUU1RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUUvRCxNQUFNLE9BQU8seUJBQTBCLFNBQVEsSUFBSTtJQUNoQyxHQUFHLENBQWM7SUFDbEMsa0JBQWtCLENBQVc7SUFDN0IsMEJBQTBCLENBQW1CO0lBRTdDLFlBQVksR0FBZ0I7UUFDMUIsS0FBSyxDQUFDLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7SUFDakIsQ0FBQztJQUVELEtBQUssQ0FBQyxLQUFLO1FBQ1QsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUMzRSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLG9CQUF1QyxDQUFDLENBQUM7UUFDM0csSUFBSSxDQUFDLGtCQUFrQixHQUFHLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNySCxJQUFJLENBQUMsMEJBQTBCLEdBQUcsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLHVCQUF1QixDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQzNILENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTztRQUNYLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDNUIsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDMUUsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7WUFDcEMsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLHVCQUF1QixDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBQ2xHLENBQUM7SUFDSCxDQUFDO0NBQ0YifQ==
|
|
@@ -1,21 +1,17 @@
|
|
|
1
|
-
import { EggPrototype, LoadUnit } from
|
|
2
|
-
import { EggObjectName } from
|
|
3
|
-
import { EggObject, LoadUnitInstance, LoadUnitInstanceLifecycleContext, LoadUnitInstanceLifecycleUtil } from
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
getOrCreateEggObject(): Promise<EggObject>;
|
|
18
|
-
getEggObject(): EggObject;
|
|
1
|
+
import { type EggPrototype, type LoadUnit } from '@eggjs/tegg-metadata';
|
|
2
|
+
import { type EggObjectName } from '@eggjs/tegg';
|
|
3
|
+
import { type EggObject, type LoadUnitInstance, type LoadUnitInstanceLifecycleContext, LoadUnitInstanceLifecycleUtil } from '@eggjs/tegg-runtime';
|
|
4
|
+
export declare class ControllerLoadUnitInstance implements LoadUnitInstance {
|
|
5
|
+
readonly loadUnit: LoadUnit;
|
|
6
|
+
readonly id: string;
|
|
7
|
+
readonly name: string;
|
|
8
|
+
private protoToCreateMap;
|
|
9
|
+
private loadUnitInstanceLifecycleUtil;
|
|
10
|
+
constructor(loadUnit: LoadUnit, loadUnitInstanceLifecycleUtil: typeof LoadUnitInstanceLifecycleUtil);
|
|
11
|
+
iterateProtoToCreate(): IterableIterator<[EggObjectName, EggPrototype]>;
|
|
12
|
+
addProtoToCreate(): void;
|
|
13
|
+
deleteProtoToCreate(): void;
|
|
14
|
+
init(ctx: LoadUnitInstanceLifecycleContext): Promise<void>;
|
|
15
|
+
getOrCreateEggObject(): Promise<EggObject>;
|
|
16
|
+
getEggObject(): EggObject;
|
|
19
17
|
}
|
|
20
|
-
//#endregion
|
|
21
|
-
export { ControllerLoadUnitInstance };
|
|
@@ -1,40 +1,36 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { IdenticalUtil } from
|
|
3
|
-
import { LoadUnitInstanceLifecycleUtil } from
|
|
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
|
-
//#endregion
|
|
40
|
-
export { ControllerLoadUnitInstance };
|
|
1
|
+
import {} from '@eggjs/tegg-metadata';
|
|
2
|
+
import { IdenticalUtil } from '@eggjs/tegg';
|
|
3
|
+
import { LoadUnitInstanceLifecycleUtil, } from '@eggjs/tegg-runtime';
|
|
4
|
+
export class ControllerLoadUnitInstance {
|
|
5
|
+
loadUnit;
|
|
6
|
+
id;
|
|
7
|
+
name;
|
|
8
|
+
protoToCreateMap = new Map();
|
|
9
|
+
loadUnitInstanceLifecycleUtil;
|
|
10
|
+
constructor(loadUnit, loadUnitInstanceLifecycleUtil) {
|
|
11
|
+
this.loadUnit = loadUnit;
|
|
12
|
+
this.name = loadUnit.name;
|
|
13
|
+
this.id = IdenticalUtil.createLoadUnitInstanceId(loadUnit.id);
|
|
14
|
+
this.loadUnitInstanceLifecycleUtil = loadUnitInstanceLifecycleUtil;
|
|
15
|
+
}
|
|
16
|
+
iterateProtoToCreate() {
|
|
17
|
+
return this.protoToCreateMap.entries();
|
|
18
|
+
}
|
|
19
|
+
addProtoToCreate() {
|
|
20
|
+
throw new Error('controller load unit not allow have singleton proto');
|
|
21
|
+
}
|
|
22
|
+
deleteProtoToCreate() {
|
|
23
|
+
throw new Error('controller load unit not allow have singleton proto');
|
|
24
|
+
}
|
|
25
|
+
async init(ctx) {
|
|
26
|
+
await this.loadUnitInstanceLifecycleUtil.objectPreCreate(ctx, this);
|
|
27
|
+
await this.loadUnitInstanceLifecycleUtil.objectPostCreate(ctx, this);
|
|
28
|
+
}
|
|
29
|
+
async getOrCreateEggObject() {
|
|
30
|
+
throw new Error('controller load unit not allow have singleton proto');
|
|
31
|
+
}
|
|
32
|
+
getEggObject() {
|
|
33
|
+
throw new Error('controller load unit not allow have singleton proto');
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udHJvbGxlckxvYWRVbml0SW5zdGFuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL0NvbnRyb2xsZXJMb2FkVW5pdEluc3RhbmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBb0MsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RSxPQUFPLEVBQTZDLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2RixPQUFPLEVBR2tDLDZCQUE2QixHQUNyRSxNQUFNLHFCQUFxQixDQUFDO0FBRTdCLE1BQU0sT0FBTywwQkFBMEI7SUFDNUIsUUFBUSxDQUFXO0lBQ25CLEVBQUUsQ0FBUztJQUNYLElBQUksQ0FBUztJQUNkLGdCQUFnQixHQUF3QyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ2xFLDZCQUE2QixDQUF1QztJQUU1RSxZQUFZLFFBQWtCLEVBQUUsNkJBQW1FO1FBQ2pHLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQztRQUMxQixJQUFJLENBQUMsRUFBRSxHQUFHLGFBQWEsQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLDZCQUE2QixHQUFHLDZCQUE2QixDQUFDO0lBQ3JFLENBQUM7SUFFRCxvQkFBb0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDekMsQ0FBQztJQUVELGdCQUFnQjtRQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMscURBQXFELENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsbUJBQW1CO1FBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMscURBQXFELENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFxQztRQUM5QyxNQUFNLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxlQUFlLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sSUFBSSxDQUFDLDZCQUE2QixDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQsS0FBSyxDQUFDLG9CQUFvQjtRQUN4QixNQUFNLElBQUksS0FBSyxDQUFDLHFEQUFxRCxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVELFlBQVk7UUFDVixNQUFNLElBQUksS0FBSyxDQUFDLHFEQUFxRCxDQUFDLENBQUM7SUFDekUsQ0FBQztDQUNGIn0=
|
|
@@ -1,12 +1,8 @@
|
|
|
1
|
-
import { ControllerMetadata } from
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
addController(metadata: ControllerMetadata): void;
|
|
9
|
-
clear(): void;
|
|
1
|
+
import { type ControllerMetadata } from '@eggjs/tegg';
|
|
2
|
+
export declare class ControllerMetadataManager {
|
|
3
|
+
private readonly controllers;
|
|
4
|
+
static instance: ControllerMetadataManager;
|
|
5
|
+
constructor();
|
|
6
|
+
addController(metadata: ControllerMetadata): void;
|
|
7
|
+
clear(): void;
|
|
10
8
|
}
|
|
11
|
-
//#endregion
|
|
12
|
-
export { ControllerMetadataManager };
|
|
@@ -1,3 +1,27 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
export
|
|
1
|
+
import {} from '@eggjs/tegg';
|
|
2
|
+
import { MapUtil } from '@eggjs/tegg-common-util';
|
|
3
|
+
export class ControllerMetadataManager {
|
|
4
|
+
controllers = new Map();
|
|
5
|
+
static instance = new ControllerMetadataManager();
|
|
6
|
+
constructor() {
|
|
7
|
+
this.controllers = new Map();
|
|
8
|
+
}
|
|
9
|
+
addController(metadata) {
|
|
10
|
+
const typeControllers = MapUtil.getOrStore(this.controllers, metadata.type, []);
|
|
11
|
+
// 1.check controller name
|
|
12
|
+
// 2.check proto name
|
|
13
|
+
const sameNameControllers = typeControllers.filter(c => c.controllerName === metadata.controllerName);
|
|
14
|
+
if (sameNameControllers.length) {
|
|
15
|
+
throw new Error(`duplicate controller name ${metadata.controllerName}`);
|
|
16
|
+
}
|
|
17
|
+
const sameProtoControllers = typeControllers.filter(c => c.protoName === metadata.protoName);
|
|
18
|
+
if (sameProtoControllers.length) {
|
|
19
|
+
throw new Error(`duplicate proto name ${String(metadata.protoName)}`);
|
|
20
|
+
}
|
|
21
|
+
typeControllers.push(metadata);
|
|
22
|
+
}
|
|
23
|
+
clear() {
|
|
24
|
+
this.controllers.clear();
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udHJvbGxlck1ldGFkYXRhTWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvQ29udHJvbGxlck1ldGFkYXRhTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9ELE1BQU0sYUFBYSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVsRCxNQUFNLE9BQU8seUJBQXlCO0lBQ25CLFdBQVcsR0FBRyxJQUFJLEdBQUcsRUFBNEMsQ0FBQztJQUVuRixNQUFNLENBQUMsUUFBUSxHQUFHLElBQUkseUJBQXlCLEVBQUUsQ0FBQztJQUVsRDtRQUNFLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsYUFBYSxDQUFDLFFBQTRCO1FBQ3hDLE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2hGLDBCQUEwQjtRQUMxQixxQkFBcUI7UUFDckIsTUFBTSxtQkFBbUIsR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGNBQWMsS0FBSyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDdEcsSUFBSSxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMvQixNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixRQUFRLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztRQUMxRSxDQUFDO1FBQ0QsTUFBTSxvQkFBb0IsR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsS0FBSyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDN0YsSUFBSSxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoQyxNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixNQUFNLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN4RSxDQUFDO1FBQ0QsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDM0IsQ0FBQyJ9
|