@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.
Files changed (60) hide show
  1. package/dist/app/middleware/tegg_root_proto.d.ts +2 -5
  2. package/dist/app/middleware/tegg_root_proto.js +7 -11
  3. package/dist/app.d.ts +23 -5
  4. package/dist/app.js +76 -17
  5. package/dist/index.d.ts +1 -5
  6. package/dist/index.js +2 -18
  7. package/dist/lib/AppLoadUnitControllerHook.d.ts +9 -14
  8. package/dist/lib/AppLoadUnitControllerHook.js +29 -7
  9. package/dist/lib/ControllerLoadUnit.d.ts +20 -24
  10. package/dist/lib/ControllerLoadUnit.js +72 -3
  11. package/dist/lib/ControllerLoadUnitHandler.d.ts +11 -15
  12. package/dist/lib/ControllerLoadUnitHandler.js +29 -4
  13. package/dist/lib/ControllerLoadUnitInstance.d.ts +16 -20
  14. package/dist/lib/ControllerLoadUnitInstance.js +36 -40
  15. package/dist/lib/ControllerMetadataManager.d.ts +7 -11
  16. package/dist/lib/ControllerMetadataManager.js +27 -3
  17. package/dist/lib/ControllerRegister.d.ts +5 -3
  18. package/dist/lib/ControllerRegister.js +3 -4
  19. package/dist/lib/ControllerRegisterFactory.d.ts +12 -4
  20. package/dist/lib/ControllerRegisterFactory.js +22 -5
  21. package/dist/lib/EggControllerLoader.d.ts +6 -10
  22. package/dist/lib/EggControllerLoader.js +31 -3
  23. package/dist/lib/EggControllerPrototypeHook.d.ts +4 -8
  24. package/dist/lib/EggControllerPrototypeHook.js +11 -3
  25. package/dist/lib/RootProtoManager.d.ts +8 -2
  26. package/dist/lib/RootProtoManager.js +34 -3
  27. package/dist/lib/errors.d.ts +3 -7
  28. package/dist/lib/errors.js +12 -3
  29. package/dist/lib/impl/http/Acl.d.ts +2 -6
  30. package/dist/lib/impl/http/Acl.js +33 -3
  31. package/dist/lib/impl/http/HTTPControllerRegister.d.ts +17 -21
  32. package/dist/lib/impl/http/HTTPControllerRegister.js +64 -9
  33. package/dist/lib/impl/http/HTTPMethodRegister.d.ts +18 -22
  34. package/dist/lib/impl/http/HTTPMethodRegister.js +165 -7
  35. package/dist/lib/impl/http/Req.d.ts +4 -8
  36. package/dist/lib/impl/http/Req.js +13 -3
  37. package/dist/types.d.ts +2 -5
  38. package/dist/types.js +3 -18
  39. package/package.json +12 -12
  40. package/dist/Acl-BF8dxD8f.js +0 -29
  41. package/dist/AppLoadUnitControllerHook-C3F2NtiE.js +0 -27
  42. package/dist/ControllerLoadUnit-DWgcQuC0.js +0 -63
  43. package/dist/ControllerLoadUnitHandler-BiPlOVSN.js +0 -29
  44. package/dist/ControllerMetadataManager-CC5nmTlv.js +0 -23
  45. package/dist/ControllerRegister-DDwsWz5F.d.ts +0 -9
  46. package/dist/ControllerRegister-DPqM08MF.js +0 -3
  47. package/dist/ControllerRegisterFactory-Bz7bulBg.js +0 -23
  48. package/dist/ControllerRegisterFactory-DCPVkM4E.d.ts +0 -16
  49. package/dist/EggControllerLoader-iohfFKpj.js +0 -29
  50. package/dist/EggControllerPrototypeHook-Djf4Mwvw.js +0 -13
  51. package/dist/HTTPControllerRegister-CZQJslUT.js +0 -58
  52. package/dist/HTTPMethodRegister-CHHFV-eT.js +0 -138
  53. package/dist/Req-D3i-7606.js +0 -16
  54. package/dist/RootProtoManager-CbLm-PD1.js +0 -28
  55. package/dist/RootProtoManager-DkqD47oc.d.ts +0 -12
  56. package/dist/app-CZQLJgoQ.d.ts +0 -27
  57. package/dist/app-Dq89t2rF.js +0 -67
  58. package/dist/errors-CnXI09lf.js +0 -16
  59. package/dist/types-D9vieyYE.d.ts +0 -1
  60. package/dist/types-DkvgFpN4.js +0 -3
@@ -1,138 +0,0 @@
1
- import { aclMiddlewareFactory } from "./Acl-BF8dxD8f.js";
2
- import { HTTPRequest as HTTPRequest$1 } from "./Req-D3i-7606.js";
3
- import { RouterConflictError } from "./errors-CnXI09lf.js";
4
- import "@eggjs/tegg-metadata";
5
- import { HTTPControllerMeta, HTTPCookies, HTTPMethodMeta, HTTPParamType } from "@eggjs/tegg";
6
- import { EggContainerFactory } from "@eggjs/tegg-runtime";
7
- import { Context, Router } from "egg";
8
- import assert from "node:assert";
9
- import pathToRegexp from "path-to-regexp";
10
- import { EggRouter } from "@eggjs/router";
11
- import { FrameworkErrorFormater } from "egg-errors";
12
-
13
- //#region src/lib/impl/http/HTTPMethodRegister.ts
14
- const noop = () => {};
15
- var HTTPMethodRegister = class {
16
- router;
17
- checkRouters;
18
- controllerMeta;
19
- methodMeta;
20
- proto;
21
- eggContainerFactory;
22
- constructor(proto, controllerMeta, methodMeta, router, checkRouters, eggContainerFactory) {
23
- this.proto = proto;
24
- this.controllerMeta = controllerMeta;
25
- this.router = router;
26
- this.methodMeta = methodMeta;
27
- this.checkRouters = checkRouters;
28
- this.eggContainerFactory = eggContainerFactory;
29
- }
30
- createHandler(methodMeta, host) {
31
- const argsLength = methodMeta.paramMap.size;
32
- const hasContext = methodMeta.contextParamIndex !== void 0;
33
- const contextIndex = methodMeta.contextParamIndex;
34
- const methodArgsLength = argsLength + (hasContext ? 1 : 0);
35
- const self = this;
36
- return async function(ctx, next) {
37
- if (host && host !== ctx.host) return await next();
38
- const realObj = (await self.eggContainerFactory.getOrCreateEggObject(self.proto, self.proto.name)).obj;
39
- const realMethod = realObj[methodMeta.name];
40
- const args = Array.from({ length: methodArgsLength });
41
- if (hasContext) args[contextIndex] = ctx;
42
- for (const [index, param] of methodMeta.paramMap) switch (param.type) {
43
- case HTTPParamType.BODY:
44
- args[index] = ctx.request.body;
45
- break;
46
- case HTTPParamType.PARAM: {
47
- const pathParam = param;
48
- args[index] = ctx.params[pathParam.name];
49
- break;
50
- }
51
- case HTTPParamType.QUERY: {
52
- const queryParam = param;
53
- args[index] = ctx.query[queryParam.name];
54
- break;
55
- }
56
- case HTTPParamType.QUERIES: {
57
- const queryParam = param;
58
- args[index] = ctx.queries[queryParam.name];
59
- break;
60
- }
61
- case HTTPParamType.HEADERS:
62
- args[index] = ctx.request.headers;
63
- break;
64
- case HTTPParamType.REQUEST:
65
- args[index] = new HTTPRequest$1(ctx);
66
- break;
67
- case HTTPParamType.COOKIES:
68
- args[index] = new HTTPCookies(ctx, []);
69
- break;
70
- default: assert.fail("never arrive");
71
- }
72
- const body = await Reflect.apply(realMethod, realObj, args);
73
- const explicitStatus = ctx.response._explicitStatus;
74
- if (body !== null && body !== void 0 || !explicitStatus) ctx.body = body;
75
- };
76
- }
77
- checkDuplicate() {
78
- this.checkDuplicateInRouter(this.router);
79
- let hostRouter;
80
- (this.controllerMeta.getMethodHosts(this.methodMeta) || []).forEach((h) => {
81
- if (h) {
82
- hostRouter = this.checkRouters.get(h);
83
- if (!hostRouter) {
84
- hostRouter = new EggRouter({ sensitive: true }, this.router.app);
85
- this.checkRouters.set(h, hostRouter);
86
- }
87
- }
88
- if (hostRouter) {
89
- this.checkDuplicateInRouter(hostRouter);
90
- this.registerToRouter(hostRouter);
91
- }
92
- });
93
- }
94
- registerToRouter(router) {
95
- const routerFunc = router[this.methodMeta.method.toLowerCase()];
96
- const methodRealPath = this.controllerMeta.getMethodRealPath(this.methodMeta);
97
- const methodName = this.controllerMeta.getMethodName(this.methodMeta);
98
- Reflect.apply(routerFunc, router, [
99
- methodName,
100
- methodRealPath,
101
- noop
102
- ]);
103
- }
104
- checkDuplicateInRouter(router) {
105
- const methodRealPath = this.controllerMeta.getMethodRealPath(this.methodMeta);
106
- const matched = router.match(methodRealPath, this.methodMeta.method);
107
- const methodName = this.controllerMeta.getMethodName(this.methodMeta);
108
- if (matched.route) {
109
- const [layer] = matched.path;
110
- const err = new RouterConflictError(`register http controller ${methodName} failed, ${this.methodMeta.method} ${methodRealPath} is conflict with exists rule ${layer.path}`);
111
- throw FrameworkErrorFormater.format(err);
112
- }
113
- }
114
- register(rootProtoManager) {
115
- const methodRealPath = this.controllerMeta.getMethodRealPath(this.methodMeta);
116
- const methodName = this.controllerMeta.getMethodName(this.methodMeta);
117
- const routerFunc = this.router[this.methodMeta.method.toLowerCase()];
118
- const methodMiddlewares = this.controllerMeta.getMethodMiddlewares(this.methodMeta);
119
- const aclMiddleware = aclMiddlewareFactory(this.controllerMeta, this.methodMeta);
120
- if (aclMiddleware) methodMiddlewares.push(aclMiddleware);
121
- (this.controllerMeta.getMethodHosts(this.methodMeta) || [void 0]).forEach((h) => {
122
- const handler = this.createHandler(this.methodMeta, h);
123
- Reflect.apply(routerFunc, this.router, [
124
- methodName,
125
- methodRealPath,
126
- ...methodMiddlewares,
127
- handler
128
- ]);
129
- const regExp = pathToRegexp(methodRealPath, { sensitive: true });
130
- rootProtoManager.registerRootProto(this.methodMeta.method, (ctx) => {
131
- if (regExp.test(ctx.path)) return this.proto;
132
- }, h || "");
133
- });
134
- }
135
- };
136
-
137
- //#endregion
138
- export { HTTPMethodRegister };
@@ -1,16 +0,0 @@
1
- import { HTTPRequest } from "@eggjs/tegg";
2
-
3
- //#region src/lib/impl/http/Req.ts
4
- var HTTPRequest$1 = class extends HTTPRequest {
5
- constructor(ctx) {
6
- const request = ctx.request;
7
- super(request.href, {
8
- method: request.method,
9
- headers: request.headers,
10
- body: ctx.request.rawBody
11
- });
12
- }
13
- };
14
-
15
- //#endregion
16
- export { HTTPRequest$1 as HTTPRequest };
@@ -1,28 +0,0 @@
1
- import "@eggjs/tegg-metadata";
2
- import "@eggjs/tegg";
3
- import { MapUtil } from "@eggjs/tegg-common-util";
4
-
5
- //#region src/lib/RootProtoManager.ts
6
- var RootProtoManager = class {
7
- protoMap = /* @__PURE__ */ new Map();
8
- registerRootProto(method, cb, host) {
9
- host = host || "";
10
- MapUtil.getOrStore(this.protoMap, method + host, []).push(cb);
11
- }
12
- getRootProto(ctx) {
13
- const hostCbList = this.protoMap.get(ctx.method + ctx.host);
14
- if (hostCbList) for (const cb of hostCbList) {
15
- const proto = cb(ctx);
16
- if (proto) return proto;
17
- }
18
- const cbList = this.protoMap.get(ctx.method);
19
- if (!cbList) return;
20
- for (const cb of cbList) {
21
- const proto = cb(ctx);
22
- if (proto) return proto;
23
- }
24
- }
25
- };
26
-
27
- //#endregion
28
- export { RootProtoManager };
@@ -1,12 +0,0 @@
1
- import { EggPrototype } from "@eggjs/tegg-metadata";
2
- import { EggContext } from "@eggjs/tegg";
3
-
4
- //#region src/lib/RootProtoManager.d.ts
5
- type GetRootProtoCallback = (ctx: EggContext) => EggPrototype | undefined;
6
- declare class RootProtoManager {
7
- protoMap: Map<string, GetRootProtoCallback[]>;
8
- registerRootProto(method: string, cb: GetRootProtoCallback, host: string): void;
9
- getRootProto(ctx: EggContext): EggPrototype | undefined;
10
- }
11
- //#endregion
12
- export { GetRootProtoCallback, RootProtoManager };
@@ -1,27 +0,0 @@
1
- import { RootProtoManager } from "./RootProtoManager-DkqD47oc.js";
2
- import { ControllerRegisterFactory } from "./ControllerRegisterFactory-DCPVkM4E.js";
3
- import { ControllerMetaBuilderFactory } from "@eggjs/tegg";
4
- import { Application, ILifecycleBoot } from "egg";
5
-
6
- //#region src/app.d.ts
7
- declare class ControllerAppBootHook implements ILifecycleBoot {
8
- private readonly app;
9
- private readonly loadUnitHook;
10
- private readonly controllerRegisterFactory;
11
- private controllerLoadUnitHandler;
12
- private readonly controllerPrototypeHook;
13
- constructor(app: Application);
14
- configWillLoad(): void;
15
- prepareMiddleware(middlewareNames: string[]): string[];
16
- didLoad(): Promise<void>;
17
- beforeClose(): Promise<void>;
18
- }
19
- declare module 'egg' {
20
- interface Application {
21
- rootProtoManager: RootProtoManager;
22
- controllerRegisterFactory: ControllerRegisterFactory;
23
- controllerMetaBuilderFactory: typeof ControllerMetaBuilderFactory;
24
- }
25
- }
26
- //#endregion
27
- export { ControllerAppBootHook };
@@ -1,67 +0,0 @@
1
- import { CONTROLLER_LOAD_UNIT, ControllerLoadUnit } from "./ControllerLoadUnit-DWgcQuC0.js";
2
- import { RootProtoManager } from "./RootProtoManager-CbLm-PD1.js";
3
- import { ControllerRegisterFactory } from "./ControllerRegisterFactory-Bz7bulBg.js";
4
- import { ControllerMetadataManager } from "./ControllerMetadataManager-CC5nmTlv.js";
5
- import { AppLoadUnitControllerHook } from "./AppLoadUnitControllerHook-C3F2NtiE.js";
6
- import { HTTPControllerRegister } from "./HTTPControllerRegister-CZQJslUT.js";
7
- import { ControllerLoadUnitHandler } from "./ControllerLoadUnitHandler-BiPlOVSN.js";
8
- import { EggControllerPrototypeHook } from "./EggControllerPrototypeHook-Djf4Mwvw.js";
9
- import { EggControllerLoader } from "./EggControllerLoader-iohfFKpj.js";
10
- import "@eggjs/tegg-metadata";
11
- import { ControllerMetaBuilderFactory, ControllerType } from "@eggjs/tegg";
12
- import { ModuleLoadUnitInstance } from "@eggjs/tegg-runtime";
13
-
14
- //#region src/app.ts
15
- var ControllerAppBootHook = class {
16
- app;
17
- loadUnitHook;
18
- controllerRegisterFactory;
19
- controllerLoadUnitHandler;
20
- controllerPrototypeHook;
21
- constructor(app) {
22
- this.app = app;
23
- this.controllerRegisterFactory = new ControllerRegisterFactory(this.app);
24
- this.app.rootProtoManager = new RootProtoManager();
25
- this.app.controllerRegisterFactory = this.controllerRegisterFactory;
26
- this.app.controllerMetaBuilderFactory = ControllerMetaBuilderFactory;
27
- this.loadUnitHook = new AppLoadUnitControllerHook(this.controllerRegisterFactory, this.app.rootProtoManager);
28
- this.controllerPrototypeHook = new EggControllerPrototypeHook();
29
- }
30
- configWillLoad() {
31
- this.app.loadUnitLifecycleUtil.registerLifecycle(this.loadUnitHook);
32
- this.app.eggPrototypeLifecycleUtil.registerLifecycle(this.controllerPrototypeHook);
33
- this.app.loaderFactory.registerLoader(CONTROLLER_LOAD_UNIT, (unitPath) => {
34
- return new EggControllerLoader(unitPath);
35
- });
36
- this.controllerRegisterFactory.registerControllerRegister(ControllerType.HTTP, HTTPControllerRegister.create);
37
- this.app.loadUnitFactory.registerLoadUnitCreator(CONTROLLER_LOAD_UNIT, (ctx) => {
38
- return new ControllerLoadUnit(`tegg-app-controller:${ctx.unitPath}`, ctx.unitPath, ctx.loader, this.app.eggPrototypeFactory, this.app.eggPrototypeCreatorFactory);
39
- });
40
- this.app.loadUnitInstanceFactory.registerLoadUnitInstanceClass(CONTROLLER_LOAD_UNIT, (ctx) => {
41
- return new ModuleLoadUnitInstance(ctx.loadUnit);
42
- });
43
- this.prepareMiddleware(this.app.config.coreMiddleware);
44
- }
45
- prepareMiddleware(middlewareNames) {
46
- if (!middlewareNames.includes("teggCtxLifecycleMiddleware")) middlewareNames.unshift("teggCtxLifecycleMiddleware");
47
- const index = middlewareNames.indexOf("teggCtxLifecycleMiddleware");
48
- middlewareNames.splice(index, 0, "teggRootProto");
49
- return middlewareNames;
50
- }
51
- async didLoad() {
52
- await this.app.moduleHandler.ready();
53
- this.controllerLoadUnitHandler = new ControllerLoadUnitHandler(this.app);
54
- await this.controllerLoadUnitHandler.ready();
55
- HTTPControllerRegister.instance?.doRegister(this.app.rootProtoManager);
56
- }
57
- async beforeClose() {
58
- if (this.controllerLoadUnitHandler) await this.controllerLoadUnitHandler.destroy();
59
- this.app.loadUnitLifecycleUtil.deleteLifecycle(this.loadUnitHook);
60
- this.app.eggPrototypeLifecycleUtil.deleteLifecycle(this.controllerPrototypeHook);
61
- ControllerMetadataManager.instance.clear();
62
- HTTPControllerRegister.clean();
63
- }
64
- };
65
-
66
- //#endregion
67
- export { ControllerAppBootHook };
@@ -1,16 +0,0 @@
1
- import { TeggError } from "@eggjs/tegg-metadata";
2
-
3
- //#region src/lib/errors.ts
4
- var ErrorCodes = /* @__PURE__ */ function(ErrorCodes$1) {
5
- ErrorCodes$1["ROUTER_CONFLICT"] = "ROUTER_CONFLICT";
6
- return ErrorCodes$1;
7
- }(ErrorCodes || {});
8
- /** 路由冲突错误 */
9
- var RouterConflictError = class extends TeggError {
10
- constructor(msg) {
11
- super(msg, ErrorCodes.ROUTER_CONFLICT);
12
- }
13
- };
14
-
15
- //#endregion
16
- export { RouterConflictError };
@@ -1 +0,0 @@
1
- import "@eggjs/tegg-plugin/types";
@@ -1,3 +0,0 @@
1
- import "@eggjs/tegg-plugin/types";
2
-
3
- export { };