@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,7 +1,165 @@
1
- import "../../../RootProtoManager-CbLm-PD1.js";
2
- import "../../../Acl-BF8dxD8f.js";
3
- import "../../../Req-D3i-7606.js";
4
- import "../../../errors-CnXI09lf.js";
5
- import { HTTPMethodRegister } from "../../../HTTPMethodRegister-CHHFV-eT.js";
6
-
7
- export { HTTPMethodRegister };
1
+ import assert from 'node:assert';
2
+ import { Context, Router } from 'egg';
3
+ import { HTTPControllerMeta, HTTPMethodMeta, HTTPParamType, PathParamMeta, QueriesParamMeta, QueryParamMeta, HTTPCookies, } from '@eggjs/tegg';
4
+ import { EggContainerFactory } from '@eggjs/tegg-runtime';
5
+ import {} from '@eggjs/tegg-metadata';
6
+ import pathToRegexp from 'path-to-regexp';
7
+ import { EggRouter } from '@eggjs/router';
8
+ import { FrameworkErrorFormater } from 'egg-errors';
9
+ import { RootProtoManager } from "../../RootProtoManager.js";
10
+ import { aclMiddlewareFactory } from "./Acl.js";
11
+ import { HTTPRequest } from "./Req.js";
12
+ import { RouterConflictError } from "../../errors.js";
13
+ const noop = () => {
14
+ // ...
15
+ };
16
+ export class HTTPMethodRegister {
17
+ router;
18
+ checkRouters;
19
+ controllerMeta;
20
+ methodMeta;
21
+ proto;
22
+ eggContainerFactory;
23
+ constructor(proto, controllerMeta, methodMeta, router, checkRouters, eggContainerFactory) {
24
+ this.proto = proto;
25
+ this.controllerMeta = controllerMeta;
26
+ this.router = router;
27
+ this.methodMeta = methodMeta;
28
+ this.checkRouters = checkRouters;
29
+ this.eggContainerFactory = eggContainerFactory;
30
+ }
31
+ createHandler(methodMeta, host) {
32
+ const argsLength = methodMeta.paramMap.size;
33
+ const hasContext = methodMeta.contextParamIndex !== undefined;
34
+ const contextIndex = methodMeta.contextParamIndex;
35
+ const methodArgsLength = argsLength + (hasContext ? 1 : 0);
36
+ // eslint-disable-next-line
37
+ const self = this;
38
+ return async function (ctx, next) {
39
+ // if hosts is not empty and host is not matched, not execute
40
+ if (host && host !== ctx.host) {
41
+ return await next();
42
+ }
43
+ // HTTP decorator core implement
44
+ // use controller metadata map http request to function arguments
45
+ const eggObj = await self.eggContainerFactory.getOrCreateEggObject(self.proto, self.proto.name);
46
+ const realObj = eggObj.obj;
47
+ const realMethod = realObj[methodMeta.name];
48
+ const args = Array.from({ length: methodArgsLength });
49
+ if (hasContext) {
50
+ args[contextIndex] = ctx;
51
+ }
52
+ for (const [index, param] of methodMeta.paramMap) {
53
+ switch (param.type) {
54
+ case HTTPParamType.BODY: {
55
+ args[index] = ctx.request.body;
56
+ break;
57
+ }
58
+ case HTTPParamType.PARAM: {
59
+ const pathParam = param;
60
+ args[index] = ctx.params[pathParam.name];
61
+ break;
62
+ }
63
+ case HTTPParamType.QUERY: {
64
+ const queryParam = param;
65
+ args[index] = ctx.query[queryParam.name];
66
+ break;
67
+ }
68
+ case HTTPParamType.QUERIES: {
69
+ const queryParam = param;
70
+ args[index] = ctx.queries[queryParam.name];
71
+ break;
72
+ }
73
+ case HTTPParamType.HEADERS: {
74
+ args[index] = ctx.request.headers;
75
+ break;
76
+ }
77
+ case HTTPParamType.REQUEST: {
78
+ args[index] = new HTTPRequest(ctx);
79
+ break;
80
+ }
81
+ case HTTPParamType.COOKIES: {
82
+ args[index] = new HTTPCookies(ctx, []);
83
+ break;
84
+ }
85
+ default:
86
+ assert.fail('never arrive');
87
+ }
88
+ }
89
+ const body = await Reflect.apply(realMethod, realObj, args);
90
+ // https://github.com/koajs/koa/blob/master/lib/response.js#L88
91
+ // ctx.status is set
92
+ const explicitStatus = ctx.response._explicitStatus;
93
+ if (
94
+ // has body
95
+ (body !== null && body !== undefined) ||
96
+ // status is not set and has no body
97
+ // code should by 204
98
+ // https://github.com/koajs/koa/blob/master/lib/response.js#L140
99
+ !explicitStatus) {
100
+ ctx.body = body;
101
+ }
102
+ };
103
+ }
104
+ checkDuplicate() {
105
+ // 1. check duplicate with egg controller
106
+ this.checkDuplicateInRouter(this.router);
107
+ // 2. check duplicate with host tegg controller
108
+ let hostRouter;
109
+ const hosts = this.controllerMeta.getMethodHosts(this.methodMeta) || [];
110
+ hosts.forEach(h => {
111
+ if (h) {
112
+ hostRouter = this.checkRouters.get(h);
113
+ if (!hostRouter) {
114
+ hostRouter = new EggRouter({ sensitive: true }, this.router.app);
115
+ this.checkRouters.set(h, hostRouter);
116
+ }
117
+ }
118
+ if (hostRouter) {
119
+ this.checkDuplicateInRouter(hostRouter);
120
+ this.registerToRouter(hostRouter);
121
+ }
122
+ });
123
+ }
124
+ registerToRouter(router) {
125
+ const routerFunc = router[this.methodMeta.method.toLowerCase()];
126
+ const methodRealPath = this.controllerMeta.getMethodRealPath(this.methodMeta);
127
+ const methodName = this.controllerMeta.getMethodName(this.methodMeta);
128
+ Reflect.apply(routerFunc, router, [methodName, methodRealPath, noop]);
129
+ }
130
+ checkDuplicateInRouter(router) {
131
+ const methodRealPath = this.controllerMeta.getMethodRealPath(this.methodMeta);
132
+ const matched = router.match(methodRealPath, this.methodMeta.method);
133
+ const methodName = this.controllerMeta.getMethodName(this.methodMeta);
134
+ if (matched.route) {
135
+ const [layer] = matched.path;
136
+ const err = new RouterConflictError(`register http controller ${methodName} failed, ${this.methodMeta.method} ${methodRealPath} is conflict with exists rule ${layer.path}`);
137
+ throw FrameworkErrorFormater.format(err);
138
+ }
139
+ }
140
+ register(rootProtoManager) {
141
+ const methodRealPath = this.controllerMeta.getMethodRealPath(this.methodMeta);
142
+ const methodName = this.controllerMeta.getMethodName(this.methodMeta);
143
+ const routerFunc = this.router[this.methodMeta.method.toLowerCase()];
144
+ const methodMiddlewares = this.controllerMeta.getMethodMiddlewares(this.methodMeta);
145
+ const aclMiddleware = aclMiddlewareFactory(this.controllerMeta, this.methodMeta);
146
+ if (aclMiddleware) {
147
+ methodMiddlewares.push(aclMiddleware);
148
+ }
149
+ const hosts = this.controllerMeta.getMethodHosts(this.methodMeta) || [undefined];
150
+ hosts.forEach(h => {
151
+ const handler = this.createHandler(this.methodMeta, h);
152
+ Reflect.apply(routerFunc, this.router, [methodName, methodRealPath, ...methodMiddlewares, handler]);
153
+ // https://github.com/eggjs/egg-core/blob/0af6178022e7734c4a8b17bb56d592b315207883/lib/egg.js#L279
154
+ const regExp = pathToRegexp(methodRealPath, {
155
+ sensitive: true,
156
+ });
157
+ rootProtoManager.registerRootProto(this.methodMeta.method, (ctx) => {
158
+ if (regExp.test(ctx.path)) {
159
+ return this.proto;
160
+ }
161
+ }, h || '');
162
+ });
163
+ }
164
+ }
165
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSFRUUE1ldGhvZFJlZ2lzdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9pbXBsL2h0dHAvSFRUUE1ldGhvZFJlZ2lzdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sTUFBTSxNQUFNLGFBQWEsQ0FBQztBQUVqQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEtBQUssQ0FBQztBQUN0QyxPQUFPLEVBRUwsa0JBQWtCLEVBQ2xCLGNBQWMsRUFDZCxhQUFhLEVBRWIsYUFBYSxFQUNiLGdCQUFnQixFQUNoQixjQUFjLEVBQ2QsV0FBVyxHQUNaLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFELE9BQU8sRUFBcUIsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLFlBQVksTUFBTSxnQkFBZ0IsQ0FBQztBQUMxQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDaEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV0RCxNQUFNLElBQUksR0FBRyxHQUFHLEVBQUU7SUFDaEIsTUFBTTtBQUNSLENBQUMsQ0FBQztBQUVGLE1BQU0sT0FBTyxrQkFBa0I7SUFDWixNQUFNLENBQVM7SUFDZixZQUFZLENBQXNCO0lBQ2xDLGNBQWMsQ0FBcUI7SUFDbkMsVUFBVSxDQUFpQjtJQUMzQixLQUFLLENBQWU7SUFDcEIsbUJBQW1CLENBQTZCO0lBRWpFLFlBQ0UsS0FB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
@@ -1,9 +1,5 @@
1
- import { HTTPRequest as HTTPRequest$1 } from "@eggjs/tegg";
2
- import { Context } from "egg";
3
-
4
- //#region src/lib/impl/http/Req.d.ts
5
- declare class HTTPRequest extends HTTPRequest$1 {
6
- constructor(ctx: Context);
1
+ import type { Context } from 'egg';
2
+ import { HTTPRequest as BaseHTTPRequest } from '@eggjs/tegg';
3
+ export declare class HTTPRequest extends BaseHTTPRequest {
4
+ constructor(ctx: Context);
7
5
  }
8
- //#endregion
9
- export { HTTPRequest };
@@ -1,3 +1,13 @@
1
- import { HTTPRequest } from "../../../Req-D3i-7606.js";
2
-
3
- export { HTTPRequest };
1
+ import { HTTPRequest as BaseHTTPRequest } from '@eggjs/tegg';
2
+ export class HTTPRequest extends BaseHTTPRequest {
3
+ constructor(ctx) {
4
+ const request = ctx.request;
5
+ // href: https://github.com/eggjs/koa/blob/master/src/request.ts#L90C1-L98C4
6
+ super(request.href, {
7
+ method: request.method,
8
+ headers: request.headers,
9
+ body: ctx.request.rawBody,
10
+ });
11
+ }
12
+ }
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVxLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9pbXBsL2h0dHAvUmVxLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxXQUFXLElBQUksZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTdELE1BQU0sT0FBTyxXQUFZLFNBQVEsZUFBZTtJQUM5QyxZQUFZLEdBQVk7UUFDdEIsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQztRQUM1Qiw0RUFBNEU7UUFDNUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUU7WUFDbEIsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO1lBQ3RCLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBaUM7WUFDbEQsSUFBSSxFQUFHLEdBQUcsQ0FBQyxPQUFlLENBQUMsT0FBTztTQUNuQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YifQ==
package/dist/types.d.ts CHANGED
@@ -1,5 +1,2 @@
1
- import "./RootProtoManager-DkqD47oc.js";
2
- import "./ControllerRegister-DDwsWz5F.js";
3
- import "./ControllerRegisterFactory-DCPVkM4E.js";
4
- import "./app-CZQLJgoQ.js";
5
- import "./types-D9vieyYE.js";
1
+ import '@eggjs/tegg-plugin/types';
2
+ import './app.ts';
package/dist/types.js CHANGED
@@ -1,18 +1,3 @@
1
- import "./ControllerLoadUnit-DWgcQuC0.js";
2
- import "./RootProtoManager-CbLm-PD1.js";
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 '@eggjs/tegg-plugin/types';
2
+ import "./app.js";
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTywwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLFVBQVUsQ0FBQyJ9
package/package.json CHANGED
@@ -7,7 +7,7 @@
7
7
  "tegg"
8
8
  ]
9
9
  },
10
- "version": "4.0.0-beta.8",
10
+ "version": "4.0.0-beta.9",
11
11
  "description": "controller decorator for egg",
12
12
  "keywords": [
13
13
  "egg",
@@ -60,17 +60,17 @@
60
60
  "globby": "^14.1.0",
61
61
  "path-to-regexp": "^1.9.0",
62
62
  "sdk-base": "^5.0.1",
63
- "@eggjs/egg-module-common": "4.0.0-beta.8",
64
- "@eggjs/tegg-common-util": "4.0.0-beta.8",
65
- "@eggjs/tegg": "4.0.0-beta.8",
66
- "@eggjs/tegg-metadata": "4.0.0-beta.8",
67
- "@eggjs/tegg-loader": "4.0.0-beta.8",
68
- "@eggjs/tegg-runtime": "4.0.0-beta.8",
69
- "@eggjs/tegg-types": "4.0.0-beta.8"
63
+ "@eggjs/tegg": "4.0.0-beta.9",
64
+ "@eggjs/egg-module-common": "4.0.0-beta.9",
65
+ "@eggjs/tegg-common-util": "4.0.0-beta.9",
66
+ "@eggjs/tegg-loader": "4.0.0-beta.9",
67
+ "@eggjs/tegg-metadata": "4.0.0-beta.9",
68
+ "@eggjs/tegg-runtime": "4.0.0-beta.9",
69
+ "@eggjs/tegg-types": "4.0.0-beta.9"
70
70
  },
71
71
  "peerDependencies": {
72
72
  "egg": "beta",
73
- "@eggjs/tegg-plugin": "4.0.0-beta.8"
73
+ "@eggjs/tegg-plugin": "4.0.0-beta.9"
74
74
  },
75
75
  "devDependencies": {
76
76
  "@eggjs/mock": "beta",
@@ -81,8 +81,8 @@
81
81
  "tsdown": "^0.15.6",
82
82
  "unplugin-unused": "^0.5.3",
83
83
  "@eggjs/module-test-util": "4.0.0-beta.4",
84
- "@eggjs/tegg-config": "4.0.0-beta.8",
85
- "@eggjs/tegg-plugin": "4.0.0-beta.8"
84
+ "@eggjs/tegg-config": "4.0.0-beta.9",
85
+ "@eggjs/tegg-plugin": "4.0.0-beta.9"
86
86
  },
87
87
  "publishConfig": {
88
88
  "access": "public"
@@ -92,7 +92,7 @@
92
92
  "types": "./dist/index.d.ts",
93
93
  "scripts": {
94
94
  "clean": "rimraf dist",
95
- "build": "tsdown",
95
+ "build": "tsdown && rimraf dist && tsc -b --clean && tsc",
96
96
  "typecheck": "tsc --noEmit"
97
97
  }
98
98
  }
@@ -1,29 +0,0 @@
1
- import "@eggjs/tegg";
2
-
3
- //#region src/lib/impl/http/Acl.ts
4
- function aclMiddlewareFactory(controllerMeta, methodMeta) {
5
- if (!controllerMeta.hasMethodAcl(methodMeta)) return;
6
- const code = controllerMeta.getMethodAcl(methodMeta);
7
- return async function aclMiddleware(ctx, next) {
8
- try {
9
- await ctx.acl(code);
10
- } catch (e) {
11
- const { redirectUrl, status } = e.data || {};
12
- if (!redirectUrl) throw e;
13
- if (ctx.acceptJSON) {
14
- ctx.body = {
15
- target: redirectUrl,
16
- stat: "deny"
17
- };
18
- return;
19
- }
20
- if (status) ctx.realStatus = status;
21
- ctx.redirect(redirectUrl);
22
- return;
23
- }
24
- return next();
25
- };
26
- }
27
-
28
- //#endregion
29
- export { aclMiddlewareFactory };
@@ -1,27 +0,0 @@
1
- import { ControllerMetadataManager } from "./ControllerMetadataManager-CC5nmTlv.js";
2
- import "@eggjs/tegg-metadata";
3
- import { CONTROLLER_META_DATA } from "@eggjs/tegg";
4
-
5
- //#region src/lib/AppLoadUnitControllerHook.ts
6
- var AppLoadUnitControllerHook = class {
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) continue;
18
- const register = this.controllerRegisterFactory.getControllerRegister(proto, metadata);
19
- if (!register) throw new Error(`not find controller implement for ${String(proto.name)} which type is ${metadata.type}`);
20
- ControllerMetadataManager.instance.addController(metadata);
21
- await register.register(this.rootProtoManager, obj);
22
- }
23
- }
24
- };
25
-
26
- //#endregion
27
- export { AppLoadUnitControllerHook };
@@ -1,63 +0,0 @@
1
- import { EggPrototypeFactory } from "@eggjs/tegg-metadata";
2
- import { IdenticalUtil } from "@eggjs/tegg";
3
- import { MapUtil } from "@eggjs/tegg-common-util";
4
-
5
- //#region src/lib/ControllerLoadUnit.ts
6
- const CONTROLLER_LOAD_UNIT = "app#controller";
7
- var ControllerLoadUnit = class {
8
- loader;
9
- id;
10
- name;
11
- type = CONTROLLER_LOAD_UNIT;
12
- unitPath;
13
- eggPrototypeFactory;
14
- eggPrototypeCreatorFactory;
15
- protoMap = /* @__PURE__ */ new Map();
16
- constructor(name, unitPath, loader, eggPrototypeFactory, eggPrototypeCreatorFactory) {
17
- this.id = IdenticalUtil.createLoadUnitId(name);
18
- this.name = name;
19
- this.unitPath = unitPath;
20
- this.loader = loader;
21
- this.eggPrototypeFactory = eggPrototypeFactory;
22
- this.eggPrototypeCreatorFactory = eggPrototypeCreatorFactory;
23
- }
24
- async init() {
25
- const clazzList = await this.loader.load();
26
- for (const clazz of clazzList) {
27
- const protos = await this.eggPrototypeCreatorFactory.createProto(clazz, this);
28
- for (const proto of protos) this.eggPrototypeFactory.registerPrototype(proto, this);
29
- }
30
- }
31
- containPrototype(proto) {
32
- return !!this.protoMap.get(proto.name)?.find((t) => t === proto);
33
- }
34
- getEggPrototype(name, qualifiers) {
35
- return this.protoMap.get(name)?.filter((proto) => proto.verifyQualifiers(qualifiers)) || [];
36
- }
37
- registerEggPrototype(proto) {
38
- MapUtil.getOrStore(this.protoMap, proto.name, []).push(proto);
39
- }
40
- deletePrototype(proto) {
41
- const protos = this.protoMap.get(proto.name);
42
- if (protos) {
43
- const index = protos.indexOf(proto);
44
- if (index !== -1) protos.splice(index, 1);
45
- }
46
- }
47
- async destroy() {
48
- for (const namedProtos of this.protoMap.values()) {
49
- const protos = namedProtos.slice();
50
- for (const proto of protos) EggPrototypeFactory.instance.deletePrototype(proto, this);
51
- }
52
- this.protoMap.clear();
53
- }
54
- iterateEggPrototype() {
55
- return Array.from(this.protoMap.values()).reduce((p, c) => {
56
- p = p.concat(c);
57
- return p;
58
- }, []).values();
59
- }
60
- };
61
-
62
- //#endregion
63
- export { CONTROLLER_LOAD_UNIT, ControllerLoadUnit };
@@ -1,29 +0,0 @@
1
- import { CONTROLLER_LOAD_UNIT } from "./ControllerLoadUnit-DWgcQuC0.js";
2
- import "@eggjs/tegg-metadata";
3
- import "@eggjs/tegg-runtime";
4
- import path from "node:path";
5
- import { Base } from "sdk-base";
6
-
7
- //#region src/lib/ControllerLoadUnitHandler.ts
8
- var ControllerLoadUnitHandler = class extends Base {
9
- app;
10
- controllerLoadUnit;
11
- controllerLoadUnitInstance;
12
- constructor(app) {
13
- super({ initMethod: "_init" });
14
- this.app = app;
15
- }
16
- async _init() {
17
- const controllerDir = path.join(this.app.config.baseDir, "app/controller");
18
- const loader = this.app.loaderFactory.createLoader(controllerDir, CONTROLLER_LOAD_UNIT);
19
- this.controllerLoadUnit = await this.app.loadUnitFactory.createLoadUnit(controllerDir, CONTROLLER_LOAD_UNIT, loader);
20
- this.controllerLoadUnitInstance = await this.app.loadUnitInstanceFactory.createLoadUnitInstance(this.controllerLoadUnit);
21
- }
22
- async destroy() {
23
- if (this.controllerLoadUnit) await this.app.loadUnitFactory.destroyLoadUnit(this.controllerLoadUnit);
24
- if (this.controllerLoadUnitInstance) await this.app.loadUnitInstanceFactory.destroyLoadUnitInstance(this.controllerLoadUnitInstance);
25
- }
26
- };
27
-
28
- //#endregion
29
- export { ControllerLoadUnitHandler };
@@ -1,23 +0,0 @@
1
- import "@eggjs/tegg";
2
- import { MapUtil } from "@eggjs/tegg-common-util";
3
-
4
- //#region src/lib/ControllerMetadataManager.ts
5
- var ControllerMetadataManager = class ControllerMetadataManager {
6
- controllers = /* @__PURE__ */ new Map();
7
- static instance = new ControllerMetadataManager();
8
- constructor() {
9
- this.controllers = /* @__PURE__ */ new Map();
10
- }
11
- addController(metadata) {
12
- const typeControllers = MapUtil.getOrStore(this.controllers, metadata.type, []);
13
- if (typeControllers.filter((c) => c.controllerName === metadata.controllerName).length) throw new Error(`duplicate controller name ${metadata.controllerName}`);
14
- if (typeControllers.filter((c) => c.protoName === metadata.protoName).length) throw new Error(`duplicate proto name ${String(metadata.protoName)}`);
15
- typeControllers.push(metadata);
16
- }
17
- clear() {
18
- this.controllers.clear();
19
- }
20
- };
21
-
22
- //#endregion
23
- export { ControllerMetadataManager };
@@ -1,9 +0,0 @@
1
- import { RootProtoManager } from "./RootProtoManager-DkqD47oc.js";
2
- import { LoadUnit } from "@eggjs/tegg-metadata";
3
-
4
- //#region src/lib/ControllerRegister.d.ts
5
- interface ControllerRegister {
6
- register(rootProtoManager: RootProtoManager, loadUnit?: LoadUnit): Promise<void>;
7
- }
8
- //#endregion
9
- export { ControllerRegister };
@@ -1,3 +0,0 @@
1
- import "@eggjs/tegg-metadata";
2
-
3
- export { };
@@ -1,23 +0,0 @@
1
- import "@eggjs/tegg-metadata";
2
- import "@eggjs/tegg";
3
-
4
- //#region src/lib/ControllerRegisterFactory.ts
5
- var ControllerRegisterFactory = class {
6
- app;
7
- registerCreatorMap;
8
- constructor(app) {
9
- this.app = app;
10
- this.registerCreatorMap = /* @__PURE__ */ new Map();
11
- }
12
- registerControllerRegister(type, creator) {
13
- this.registerCreatorMap.set(type, creator);
14
- }
15
- getControllerRegister(proto, metadata) {
16
- const creator = this.registerCreatorMap.get(metadata.type);
17
- if (!creator) return;
18
- return creator(proto, metadata, this.app);
19
- }
20
- };
21
-
22
- //#endregion
23
- export { ControllerRegisterFactory };
@@ -1,16 +0,0 @@
1
- import { ControllerRegister } from "./ControllerRegister-DDwsWz5F.js";
2
- import { EggPrototype } from "@eggjs/tegg-metadata";
3
- import { ControllerMetadata, ControllerTypeLike } from "@eggjs/tegg";
4
- import { Application } from "egg";
5
-
6
- //#region src/lib/ControllerRegisterFactory.d.ts
7
- type RegisterCreator = (proto: EggPrototype, controllerMeta: ControllerMetadata, app: Application) => ControllerRegister;
8
- declare class ControllerRegisterFactory {
9
- private readonly app;
10
- private registerCreatorMap;
11
- constructor(app: Application);
12
- registerControllerRegister(type: ControllerTypeLike, creator: RegisterCreator): void;
13
- getControllerRegister(proto: EggPrototype, metadata: ControllerMetadata): ControllerRegister | undefined;
14
- }
15
- //#endregion
16
- export { ControllerRegisterFactory, RegisterCreator };
@@ -1,29 +0,0 @@
1
- import path from "node:path";
2
- import { globby } from "globby";
3
- import { LoaderUtil } from "@eggjs/tegg-loader";
4
-
5
- //#region src/lib/EggControllerLoader.ts
6
- var EggControllerLoader = class {
7
- controllerDir;
8
- constructor(controllerDir) {
9
- this.controllerDir = controllerDir;
10
- }
11
- async load() {
12
- const filePattern = LoaderUtil.filePattern();
13
- let files;
14
- try {
15
- files = (await globby(filePattern, { cwd: this.controllerDir })).map((file) => path.join(this.controllerDir, file));
16
- } catch {
17
- files = [];
18
- }
19
- const protoClassList = [];
20
- for (const file of files) {
21
- const fileClazzList = await LoaderUtil.loadFile(file);
22
- for (const clazz of fileClazzList) protoClassList.push(clazz);
23
- }
24
- return protoClassList;
25
- }
26
- };
27
-
28
- //#endregion
29
- export { EggControllerLoader };
@@ -1,13 +0,0 @@
1
- import "@eggjs/tegg-metadata";
2
- import { ControllerMetaBuilderFactory, ControllerMetadataUtil } from "@eggjs/tegg";
3
-
4
- //#region src/lib/EggControllerPrototypeHook.ts
5
- var EggControllerPrototypeHook = class {
6
- async postCreate(ctx) {
7
- const metadata = ControllerMetaBuilderFactory.build(ctx.clazz);
8
- if (metadata) ControllerMetadataUtil.setControllerMetadata(ctx.clazz, metadata);
9
- }
10
- };
11
-
12
- //#endregion
13
- export { EggControllerPrototypeHook };
@@ -1,58 +0,0 @@
1
- import { HTTPMethodRegister } from "./HTTPMethodRegister-CHHFV-eT.js";
2
- import "@eggjs/tegg-metadata";
3
- import { CONTROLLER_META_DATA, ControllerType, HTTPControllerMeta, HTTPMethodMeta } from "@eggjs/tegg";
4
- import { EggContainerFactory } from "@eggjs/tegg-runtime";
5
- import assert from "node:assert/strict";
6
- import { Application, Router } from "egg";
7
-
8
- //#region src/lib/impl/http/HTTPControllerRegister.ts
9
- var HTTPControllerRegister = class HTTPControllerRegister {
10
- static instance;
11
- router;
12
- checkRouters;
13
- eggContainerFactory;
14
- controllerProtos = [];
15
- static create(proto, controllerMeta, app) {
16
- assert(controllerMeta.type === ControllerType.HTTP, "controller meta type is not HTTP");
17
- if (!HTTPControllerRegister.instance) HTTPControllerRegister.instance = new HTTPControllerRegister(app.router, app.eggContainerFactory);
18
- HTTPControllerRegister.instance.controllerProtos.push(proto);
19
- return HTTPControllerRegister.instance;
20
- }
21
- constructor(router, eggContainerFactory) {
22
- this.router = router;
23
- this.checkRouters = /* @__PURE__ */ new Map();
24
- this.checkRouters.set("default", router);
25
- this.eggContainerFactory = eggContainerFactory;
26
- }
27
- register() {
28
- return Promise.resolve();
29
- }
30
- static clean() {
31
- if (this.instance) {
32
- this.instance.controllerProtos = [];
33
- this.instance.checkRouters.clear();
34
- }
35
- this.instance = void 0;
36
- }
37
- doRegister(rootProtoManager) {
38
- const methodMap = /* @__PURE__ */ new Map();
39
- for (const proto of this.controllerProtos) {
40
- const metadata = proto.getMetaData(CONTROLLER_META_DATA);
41
- for (const method of metadata.methods) methodMap.set(method, proto);
42
- }
43
- const allMethods = Array.from(methodMap.keys()).sort((a, b) => b.priority - a.priority);
44
- for (const method of allMethods) {
45
- const controllerProto = methodMap.get(method);
46
- const controllerMeta = controllerProto.getMetaData(CONTROLLER_META_DATA);
47
- new HTTPMethodRegister(controllerProto, controllerMeta, method, this.router, this.checkRouters, this.eggContainerFactory).checkDuplicate();
48
- }
49
- for (const method of allMethods) {
50
- const controllerProto = methodMap.get(method);
51
- const controllerMeta = controllerProto.getMetaData(CONTROLLER_META_DATA);
52
- new HTTPMethodRegister(controllerProto, controllerMeta, method, this.router, this.checkRouters, this.eggContainerFactory).register(rootProtoManager);
53
- }
54
- }
55
- };
56
-
57
- //#endregion
58
- export { HTTPControllerRegister };