@eggjs/controller-decorator 3.52.0 → 4.0.0-beta.1

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 (92) hide show
  1. package/{README.json → README.md} +1 -1
  2. package/package.json +26 -26
  3. package/src/builder/ControllerMetaBuilderFactory.js +41 -0
  4. package/src/builder/index.d.ts +1 -0
  5. package/src/builder/index.js +2 -0
  6. package/src/decorator/Acl.js +22 -0
  7. package/src/decorator/Context.js +11 -0
  8. package/src/decorator/Middleware.js +69 -0
  9. package/src/decorator/http/HTTPController.js +29 -0
  10. package/src/decorator/http/HTTPMethod.js +17 -0
  11. package/src/decorator/http/HTTPParam.js +75 -0
  12. package/src/decorator/http/Host.js +25 -0
  13. package/src/decorator/http/index.d.ts +4 -0
  14. package/src/decorator/http/index.js +5 -0
  15. package/src/decorator/index.d.ts +4 -0
  16. package/src/decorator/index.js +5 -0
  17. package/{dist/src → src}/impl/http/HTTPControllerMetaBuilder.d.ts +1 -1
  18. package/src/impl/http/HTTPControllerMetaBuilder.js +57 -0
  19. package/{dist/src → src}/impl/http/HTTPControllerMethodMetaBuilder.d.ts +1 -1
  20. package/src/impl/http/HTTPControllerMethodMetaBuilder.js +100 -0
  21. package/src/impl/http/index.d.ts +2 -0
  22. package/src/impl/http/index.js +3 -0
  23. package/src/impl/index.d.ts +1 -0
  24. package/src/impl/index.js +2 -0
  25. package/src/index.d.ts +6 -0
  26. package/src/index.js +7 -0
  27. package/{dist/src → src}/model/HTTPControllerMeta.d.ts +1 -1
  28. package/src/model/HTTPControllerMeta.js +59 -0
  29. package/src/model/HTTPCookies.js +4 -0
  30. package/{dist/src → src}/model/HTTPMethodMeta.d.ts +1 -1
  31. package/src/model/HTTPMethodMeta.js +124 -0
  32. package/src/model/HTTPRequest.d.ts +7 -0
  33. package/src/model/HTTPRequest.js +3 -0
  34. package/src/model/HTTPResponse.d.ts +10 -0
  35. package/src/model/HTTPResponse.js +3 -0
  36. package/src/model/index.d.ts +5 -0
  37. package/src/model/index.js +6 -0
  38. package/{dist/src → src}/util/ControllerInfoUtil.d.ts +2 -2
  39. package/src/util/ControllerInfoUtil.js +46 -0
  40. package/{dist/src → src}/util/ControllerMetadataUtil.d.ts +1 -1
  41. package/src/util/ControllerMetadataUtil.js +20 -0
  42. package/{dist/src → src}/util/HTTPInfoUtil.d.ts +1 -1
  43. package/src/util/HTTPInfoUtil.js +64 -0
  44. package/src/util/HTTPPriorityUtil.js +42 -0
  45. package/{dist/src → src}/util/MethodInfoUtil.d.ts +1 -1
  46. package/src/util/MethodInfoUtil.js +72 -0
  47. package/src/util/index.d.ts +6 -0
  48. package/src/util/index.js +7 -0
  49. package/src/util/validator/ControllerValidator.js +15 -0
  50. package/src/util/validator/MethodValidator.js +31 -0
  51. package/src/util/validator/index.d.ts +2 -0
  52. package/src/util/validator/index.js +3 -0
  53. package/dist/index.d.ts +0 -14
  54. package/dist/index.js +0 -36
  55. package/dist/src/builder/ControllerMetaBuilderFactory.js +0 -49
  56. package/dist/src/decorator/Acl.js +0 -29
  57. package/dist/src/decorator/Context.js +0 -17
  58. package/dist/src/decorator/Middleware.js +0 -76
  59. package/dist/src/decorator/http/HTTPController.js +0 -36
  60. package/dist/src/decorator/http/HTTPMethod.js +0 -24
  61. package/dist/src/decorator/http/HTTPParam.js +0 -87
  62. package/dist/src/decorator/http/Host.js +0 -32
  63. package/dist/src/impl/http/HTTPControllerMetaBuilder.js +0 -66
  64. package/dist/src/impl/http/HTTPControllerMethodMetaBuilder.js +0 -108
  65. package/dist/src/model/HTTPControllerMeta.js +0 -57
  66. package/dist/src/model/HTTPCookies.js +0 -8
  67. package/dist/src/model/HTTPMethodMeta.js +0 -138
  68. package/dist/src/model/HTTPRequest.d.ts +0 -4
  69. package/dist/src/model/HTTPRequest.js +0 -13
  70. package/dist/src/model/HTTPResponse.d.ts +0 -4
  71. package/dist/src/model/HTTPResponse.js +0 -13
  72. package/dist/src/model/index.d.ts +0 -5
  73. package/dist/src/model/index.js +0 -22
  74. package/dist/src/util/ControllerInfoUtil.js +0 -49
  75. package/dist/src/util/ControllerMetadataUtil.js +0 -24
  76. package/dist/src/util/HTTPInfoUtil.js +0 -67
  77. package/dist/src/util/HTTPPriorityUtil.js +0 -46
  78. package/dist/src/util/MethodInfoUtil.js +0 -75
  79. package/dist/src/util/validator/ControllerValidator.js +0 -22
  80. package/dist/src/util/validator/MethodValidator.js +0 -38
  81. /package/{dist/src → src}/builder/ControllerMetaBuilderFactory.d.ts +0 -0
  82. /package/{dist/src → src}/decorator/Acl.d.ts +0 -0
  83. /package/{dist/src → src}/decorator/Context.d.ts +0 -0
  84. /package/{dist/src → src}/decorator/Middleware.d.ts +0 -0
  85. /package/{dist/src → src}/decorator/http/HTTPController.d.ts +0 -0
  86. /package/{dist/src → src}/decorator/http/HTTPMethod.d.ts +0 -0
  87. /package/{dist/src → src}/decorator/http/HTTPParam.d.ts +0 -0
  88. /package/{dist/src → src}/decorator/http/Host.d.ts +0 -0
  89. /package/{dist/src → src}/model/HTTPCookies.d.ts +0 -0
  90. /package/{dist/src → src}/util/HTTPPriorityUtil.d.ts +0 -0
  91. /package/{dist/src → src}/util/validator/ControllerValidator.d.ts +0 -0
  92. /package/{dist/src → src}/util/validator/MethodValidator.d.ts +0 -0
@@ -1,5 +1,5 @@
1
1
  # @eggjs/controller-decorator
2
2
 
3
- # Usage
3
+ ## Usage
4
4
 
5
5
  Please read [@eggjs/tegg-controller-plugin](../../plugin/controller/README.md)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eggjs/controller-decorator",
3
- "version": "3.52.0",
3
+ "version": "4.0.0-beta.1",
4
4
  "description": "tegg controller decorator",
5
5
  "keywords": [
6
6
  "egg",
@@ -9,17 +9,21 @@
9
9
  "controller",
10
10
  "tegg"
11
11
  ],
12
- "main": "dist/index.js",
12
+ "type": "module",
13
+ "exports": {
14
+ ".": {
15
+ "types": "./src/index.d.ts",
16
+ "default": "./src/index.js"
17
+ }
18
+ },
13
19
  "files": [
14
- "dist/**/*.js",
15
- "dist/**/*.d.ts"
20
+ "src/**/*.js",
21
+ "src/**/*.d.ts"
16
22
  ],
17
- "typings": "dist/index.d.ts",
18
23
  "scripts": {
19
- "test": "cross-env NODE_ENV=test NODE_OPTIONS='--no-deprecation' mocha",
20
24
  "clean": "tsc -b --clean",
21
25
  "tsc": "npm run clean && tsc -p ./tsconfig.json",
22
- "tsc:pub": "npm run clean && tsc -p ./tsconfig.pub.json",
26
+ "tsc:pub": "npm run tsc",
23
27
  "prepublishOnly": "npm run tsc:pub"
24
28
  },
25
29
  "author": "killagu <killa123@126.com>",
@@ -34,31 +38,27 @@
34
38
  "directory": "core/controller-decorator"
35
39
  },
36
40
  "engines": {
37
- "node": ">=14.0.0"
41
+ "node": ">=20.0.0"
38
42
  },
39
43
  "dependencies": {
40
- "@eggjs/aop-decorator": "^3.52.0",
41
- "@eggjs/cookies": "^3.0.1",
42
- "@eggjs/core-decorator": "^3.52.0",
43
- "@eggjs/tegg-common-util": "^3.52.0",
44
- "@eggjs/tegg-metadata": "^3.52.0",
45
- "@eggjs/tegg-types": "^3.52.0",
46
- "is-type-of": "^1.2.1",
47
- "path-to-regexp": "^1.8.0",
48
- "reflect-metadata": "^0.1.13",
49
- "undici": "^5.26.5"
44
+ "@eggjs/aop-decorator": "^4.0.0-beta.1",
45
+ "@eggjs/cookies": "^3.1.0",
46
+ "@eggjs/core-decorator": "^4.0.0-beta.1",
47
+ "@eggjs/tegg-common-util": "^4.0.0-beta.1",
48
+ "@eggjs/tegg-metadata": "^4.0.0-beta.1",
49
+ "@eggjs/tegg-types": "^4.0.0-beta.1",
50
+ "is-type-of": "^2.2.0",
51
+ "path-to-regexp": "^1.9.0",
52
+ "reflect-metadata": "^0.2.2"
50
53
  },
51
54
  "devDependencies": {
52
- "@types/mocha": "^10.0.1",
53
- "@types/node": "^20.2.4",
54
- "cross-env": "^7.0.3",
55
- "egg": "^3.9.1",
56
- "mocha": "^10.2.0",
57
- "ts-node": "^10.9.1",
58
- "typescript": "^5.0.4"
55
+ "@types/node": "22",
56
+ "egg": "4",
57
+ "ts-node": "10",
58
+ "typescript": "5"
59
59
  },
60
60
  "publishConfig": {
61
61
  "access": "public"
62
62
  },
63
- "gitHead": "35ed34855041dd8898046c9f3834d09a39da8ada"
63
+ "gitHead": "79a22905272d6de7fe06152231dff65d213d9166"
64
64
  }
@@ -0,0 +1,41 @@
1
+ import { ControllerInfoUtil, MethodInfoUtil } from '../util/index.js';
2
+ import { Pointcut } from '@eggjs/aop-decorator';
3
+ export class ControllerMetaBuilderFactory {
4
+ static builderCreatorMap = new Map();
5
+ static registerControllerMetaBuilder(controllerType, controllerBuilderCreator) {
6
+ this.builderCreatorMap.set(controllerType, controllerBuilderCreator);
7
+ }
8
+ static createControllerMetaBuilder(clazz, controllerType) {
9
+ if (!controllerType) {
10
+ controllerType = ControllerInfoUtil.getControllerType(clazz);
11
+ }
12
+ if (!controllerType) {
13
+ return;
14
+ }
15
+ const creator = this.builderCreatorMap.get(controllerType);
16
+ if (!creator) {
17
+ throw new Error(`not found controller meta builder for type ${controllerType}`);
18
+ }
19
+ return creator(clazz);
20
+ }
21
+ static build(clazz, controllerType) {
22
+ const builder = ControllerMetaBuilderFactory.createControllerMetaBuilder(clazz, controllerType);
23
+ if (!builder)
24
+ return;
25
+ const metadata = builder.build();
26
+ if (!metadata)
27
+ return;
28
+ const controllerAopMws = ControllerInfoUtil.getControllerAopMiddlewares(clazz);
29
+ for (const { name } of metadata.methods) {
30
+ const methodAopMws = MethodInfoUtil.getMethodAopMiddlewares(clazz, name);
31
+ if (MethodInfoUtil.shouldRegisterAopMiddlewarePointCut(clazz, name)) {
32
+ for (const mw of [...methodAopMws, ...controllerAopMws].reverse()) {
33
+ Pointcut(mw)(clazz.prototype, name);
34
+ }
35
+ MethodInfoUtil.registerAopMiddlewarePointcut(clazz, name);
36
+ }
37
+ }
38
+ return metadata;
39
+ }
40
+ }
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udHJvbGxlck1ldGFCdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkNvbnRyb2xsZXJNZXRhQnVpbGRlckZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVoRCxNQUFNLE9BQU8sNEJBQTRCO0lBQy9CLE1BQU0sQ0FBQyxpQkFBaUIsR0FBMEQsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUVwRyxNQUFNLENBQUMsNkJBQTZCLENBQUMsY0FBa0MsRUFBRSx3QkFBc0Q7UUFDN0gsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsd0JBQXdCLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQsTUFBTSxDQUFDLDJCQUEyQixDQUFDLEtBQXdCLEVBQUUsY0FBbUM7UUFDOUYsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3BCLGNBQWMsR0FBRyxrQkFBa0IsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvRCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3BCLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDYixNQUFNLElBQUksS0FBSyxDQUFDLDhDQUE4QyxjQUFjLEVBQUUsQ0FBQyxDQUFDO1FBQ2xGLENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUF3QixFQUFFLGNBQW1DO1FBQ3hFLE1BQU0sT0FBTyxHQUFHLDRCQUE0QixDQUFDLDJCQUEyQixDQUFDLEtBQUssRUFBRSxjQUFjLENBQUMsQ0FBQztRQUNoRyxJQUFJLENBQUMsT0FBTztZQUFFLE9BQU87UUFDckIsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTztRQUN0QixNQUFNLGdCQUFnQixHQUFHLGtCQUFrQixDQUFDLDJCQUEyQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9FLEtBQUssTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN4QyxNQUFNLFlBQVksR0FBRyxjQUFjLENBQUMsdUJBQXVCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3pFLElBQUksY0FBYyxDQUFDLG1DQUFtQyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUNwRSxLQUFLLE1BQU0sRUFBRSxJQUFJLENBQUUsR0FBRyxZQUFZLEVBQUUsR0FBRyxnQkFBZ0IsQ0FBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7b0JBQ3BFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUN0QyxDQUFDO2dCQUNELGNBQWMsQ0FBQyw2QkFBNkIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDNUQsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDIn0=
@@ -0,0 +1 @@
1
+ export * from './ControllerMetaBuilderFactory.js';
@@ -0,0 +1,2 @@
1
+ export * from './ControllerMetaBuilderFactory.js';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1DQUFtQyxDQUFDIn0=
@@ -0,0 +1,22 @@
1
+ import assert from 'node:assert';
2
+ import { ControllerInfoUtil, MethodInfoUtil } from '../util/index.js';
3
+ export function Acl(code) {
4
+ function classAcl(constructor) {
5
+ ControllerInfoUtil.setControllerAcl(code, constructor);
6
+ }
7
+ function methodAcl(target, propertyKey) {
8
+ assert(typeof propertyKey === 'string', `[controller/${target.name}] expect method name be typeof string, but now is ${String(propertyKey)}`);
9
+ const controllerClazz = target.constructor;
10
+ const methodName = propertyKey;
11
+ MethodInfoUtil.setMethodAcl(code, controllerClazz, methodName);
12
+ }
13
+ return function (target, propertyKey) {
14
+ if (propertyKey === undefined) {
15
+ classAcl(target);
16
+ }
17
+ else {
18
+ methodAcl(target, propertyKey);
19
+ }
20
+ };
21
+ }
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWNsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiQWNsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sTUFBTSxNQUFNLGFBQWEsQ0FBQztBQUVqQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFdEUsTUFBTSxVQUFVLEdBQUcsQ0FBQyxJQUFhO0lBQy9CLFNBQVMsUUFBUSxDQUFDLFdBQThCO1FBQzlDLGtCQUFrQixDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsU0FBUyxTQUFTLENBQUMsTUFBVyxFQUFFLFdBQXdCO1FBQ3RELE1BQU0sQ0FBQyxPQUFPLFdBQVcsS0FBSyxRQUFRLEVBQ3BDLGVBQWUsTUFBTSxDQUFDLElBQUkscURBQXFELE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDeEcsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLFdBQWdDLENBQUM7UUFDaEUsTUFBTSxVQUFVLEdBQUcsV0FBcUIsQ0FBQztRQUN6QyxjQUFjLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxlQUFlLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELE9BQU8sVUFBUyxNQUFXLEVBQUUsV0FBeUI7UUFDcEQsSUFBSSxXQUFXLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDOUIsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25CLENBQUM7YUFBTSxDQUFDO1lBQ04sU0FBUyxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztRQUNqQyxDQUFDO0lBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQyJ9
@@ -0,0 +1,11 @@
1
+ import assert from 'node:assert';
2
+ import { MethodInfoUtil } from '../util/index.js';
3
+ export function Context() {
4
+ return function (target, propertyKey, parameterIndex) {
5
+ assert(typeof propertyKey === 'string', `[controller/${target.name}] expect method name be typeof string, but now is ${String(propertyKey)}`);
6
+ const methodName = propertyKey;
7
+ const controllerClazz = target.constructor;
8
+ MethodInfoUtil.setMethodContextIndexInArgs(parameterIndex, controllerClazz, methodName);
9
+ };
10
+ }
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkNvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxNQUFNLE1BQU0sYUFBYSxDQUFDO0FBRWpDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVsRCxNQUFNLFVBQVUsT0FBTztJQUNyQixPQUFPLFVBQVMsTUFBVyxFQUFFLFdBQXdCLEVBQUUsY0FBc0I7UUFDM0UsTUFBTSxDQUFDLE9BQU8sV0FBVyxLQUFLLFFBQVEsRUFDcEMsZUFBZSxNQUFNLENBQUMsSUFBSSxxREFBcUQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN4RyxNQUFNLFVBQVUsR0FBRyxXQUFxQixDQUFDO1FBQ3pDLE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxXQUFnQyxDQUFDO1FBQ2hFLGNBQWMsQ0FBQywyQkFBMkIsQ0FBQyxjQUFjLEVBQUUsZUFBZSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQzFGLENBQUMsQ0FBQztBQUNKLENBQUMifQ==
@@ -0,0 +1,69 @@
1
+ import assert from 'node:assert';
2
+ import { isClass } from 'is-type-of';
3
+ import { AdviceInfoUtil } from '@eggjs/aop-decorator';
4
+ import { ControllerInfoUtil, MethodInfoUtil } from '../util/index.js';
5
+ var MiddlewareType;
6
+ (function (MiddlewareType) {
7
+ MiddlewareType["AOP"] = "AOP";
8
+ MiddlewareType["MiddlewareFunc"] = "MiddlewareFunc";
9
+ })(MiddlewareType || (MiddlewareType = {}));
10
+ function isAop(mw) {
11
+ return isClass(mw) && AdviceInfoUtil.isAdvice(mw);
12
+ }
13
+ function isAopTypeOrMiddlewareType(middlewares) {
14
+ const adviceCount = middlewares.filter(t => isAop(t)).length;
15
+ if (adviceCount) {
16
+ if (adviceCount === middlewares.length) {
17
+ return MiddlewareType.AOP;
18
+ }
19
+ throw new Error('AOP and MiddlewareFunc can not be mixed');
20
+ }
21
+ return MiddlewareType.MiddlewareFunc;
22
+ }
23
+ export function Middleware(...middlewares) {
24
+ function functionTypeClassMiddleware(constructor) {
25
+ middlewares.forEach(mid => {
26
+ ControllerInfoUtil.addControllerMiddleware(mid, constructor);
27
+ });
28
+ }
29
+ function aopTypeClassMiddleware(constructor) {
30
+ for (const aopAdvice of middlewares) {
31
+ ControllerInfoUtil.addControllerAopMiddleware(aopAdvice, constructor);
32
+ }
33
+ }
34
+ function functionTypeMethodMiddleware(target, propertyKey) {
35
+ assert(typeof propertyKey === 'string', `[controller/${target.name}] expect method name be typeof string, but now is ${String(propertyKey)}`);
36
+ const controllerClazz = target.constructor;
37
+ const methodName = propertyKey;
38
+ middlewares.forEach(mid => {
39
+ MethodInfoUtil.addMethodMiddleware(mid, controllerClazz, methodName);
40
+ });
41
+ }
42
+ function aopTypeMethodMiddleware(target, propertyKey) {
43
+ const controllerClazz = target.constructor;
44
+ const methodName = propertyKey;
45
+ for (const aopAdvice of middlewares) {
46
+ MethodInfoUtil.addMethodAopMiddleware(aopAdvice, controllerClazz, methodName);
47
+ }
48
+ }
49
+ return function (target, propertyKey) {
50
+ const type = isAopTypeOrMiddlewareType(middlewares);
51
+ if (propertyKey === undefined) {
52
+ if (type === MiddlewareType.AOP) {
53
+ aopTypeClassMiddleware(target);
54
+ }
55
+ else {
56
+ functionTypeClassMiddleware(target);
57
+ }
58
+ }
59
+ else {
60
+ if (type === MiddlewareType.AOP) {
61
+ aopTypeMethodMiddleware(target, propertyKey);
62
+ }
63
+ else {
64
+ functionTypeMethodMiddleware(target, propertyKey);
65
+ }
66
+ }
67
+ };
68
+ }
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlkZGxld2FyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIk1pZGRsZXdhcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxNQUFNLE1BQU0sYUFBYSxDQUFDO0FBRWpDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDckMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUV0RSxJQUFLLGNBR0o7QUFIRCxXQUFLLGNBQWM7SUFDakIsNkJBQVcsQ0FBQTtJQUNYLG1EQUFpQyxDQUFBO0FBQ25DLENBQUMsRUFISSxjQUFjLEtBQWQsY0FBYyxRQUdsQjtBQUVELFNBQVMsS0FBSyxDQUFDLEVBQStDO0lBQzVELE9BQU8sT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxRQUFRLENBQUMsRUFBZ0MsQ0FBQyxDQUFDO0FBQ2xGLENBQUM7QUFFRCxTQUFTLHlCQUF5QixDQUFDLFdBQXNFO0lBQ3ZHLE1BQU0sV0FBVyxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDN0QsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUNoQixJQUFJLFdBQVcsS0FBSyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDdkMsT0FBTyxjQUFjLENBQUMsR0FBRyxDQUFDO1FBQzVCLENBQUM7UUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLHlDQUF5QyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUNELE9BQU8sY0FBYyxDQUFDLGNBQWMsQ0FBQztBQUN2QyxDQUFDO0FBRUQsTUFBTSxVQUFVLFVBQVUsQ0FBQyxHQUFHLFdBQXNFO0lBQ2xHLFNBQVMsMkJBQTJCLENBQUMsV0FBOEI7UUFDakUsV0FBVyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUN4QixrQkFBa0IsQ0FBQyx1QkFBdUIsQ0FBQyxHQUFxQixFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ2pGLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFNBQVMsc0JBQXNCLENBQUMsV0FBOEI7UUFDNUQsS0FBSyxNQUFNLFNBQVMsSUFBSSxXQUEyQyxFQUFFLENBQUM7WUFDcEUsa0JBQWtCLENBQUMsMEJBQTBCLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7SUFDSCxDQUFDO0lBRUQsU0FBUyw0QkFBNEIsQ0FBQyxNQUFXLEVBQUUsV0FBd0I7UUFDekUsTUFBTSxDQUFDLE9BQU8sV0FBVyxLQUFLLFFBQVEsRUFDcEMsZUFBZSxNQUFNLENBQUMsSUFBSSxxREFBcUQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN4RyxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsV0FBZ0MsQ0FBQztRQUNoRSxNQUFNLFVBQVUsR0FBRyxXQUFxQixDQUFDO1FBQ3pDLFdBQVcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDeEIsY0FBYyxDQUFDLG1CQUFtQixDQUFDLEdBQXFCLEVBQUUsZUFBZSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3pGLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFNBQVMsdUJBQXVCLENBQUMsTUFBVyxFQUFFLFdBQXdCO1FBQ3BFLE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxXQUFnQyxDQUFDO1FBQ2hFLE1BQU0sVUFBVSxHQUFHLFdBQXFCLENBQUM7UUFDekMsS0FBSyxNQUFNLFNBQVMsSUFBSSxXQUEyQyxFQUFFLENBQUM7WUFDcEUsY0FBYyxDQUFDLHNCQUFzQixDQUFDLFNBQVMsRUFBRSxlQUFlLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDaEYsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLFVBQVMsTUFBVyxFQUFFLFdBQXlCO1FBQ3BELE1BQU0sSUFBSSxHQUFHLHlCQUF5QixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3BELElBQUksV0FBVyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzlCLElBQUksSUFBSSxLQUFLLGNBQWMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDaEMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDakMsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLDJCQUEyQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3RDLENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksSUFBSSxLQUFLLGNBQWMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDaEMsdUJBQXVCLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1lBQy9DLENBQUM7aUJBQU0sQ0FBQztnQkFDTiw0QkFBNEIsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFDcEQsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDLENBQUM7QUFDSixDQUFDIn0=
@@ -0,0 +1,29 @@
1
+ import { PrototypeUtil, SingletonProto } from '@eggjs/core-decorator';
2
+ import { StackUtil } from '@eggjs/tegg-common-util';
3
+ import { AccessLevel, ControllerType } from '@eggjs/tegg-types';
4
+ import { ControllerInfoUtil, HTTPInfoUtil } from '../../util/index.js';
5
+ export function HTTPController(param) {
6
+ return function (constructor) {
7
+ ControllerInfoUtil.setControllerType(constructor, ControllerType.HTTP);
8
+ if (param?.controllerName) {
9
+ ControllerInfoUtil.setControllerName(constructor, param.controllerName);
10
+ }
11
+ if (param?.path) {
12
+ HTTPInfoUtil.setHTTPPath(param.path, constructor);
13
+ }
14
+ // TODO elegant?
15
+ const func = SingletonProto({
16
+ accessLevel: AccessLevel.PUBLIC,
17
+ name: param?.protoName,
18
+ });
19
+ func(constructor);
20
+ // './tegg/core/common-util/src/StackUtil.ts',
21
+ // './tegg/core/core-decorator/src/decorator/Prototype.ts',
22
+ // './tegg/core/controller-decorator/src/decorator/http/HTTPController.ts',
23
+ // './tegg/core/core-decorator/node_modules/_reflect-metadata@0.1.13@reflect-metadata/Reflect.js',
24
+ // './tegg/core/core-decorator/node_modules/_reflect-metadata@0.1.13@reflect-metadata/Reflect.js',
25
+ // './tegg/core/controller-decorator/test/fixtures/TRFooController.ts',
26
+ PrototypeUtil.setFilePath(constructor, StackUtil.getCalleeFromStack(false, 5));
27
+ };
28
+ }
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSFRUUENvbnRyb2xsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJIVFRQQ29udHJvbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVwRCxPQUFPLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV2RSxNQUFNLFVBQVUsY0FBYyxDQUFDLEtBQTRCO0lBQ3pELE9BQU8sVUFBUyxXQUE4QjtRQUM1QyxrQkFBa0IsQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZFLElBQUksS0FBSyxFQUFFLGNBQWMsRUFBRSxDQUFDO1lBQzFCLGtCQUFrQixDQUFDLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDMUUsQ0FBQztRQUNELElBQUksS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDO1lBQ2hCLFlBQVksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztRQUNwRCxDQUFDO1FBQ0QsZ0JBQWdCO1FBQ2hCLE1BQU0sSUFBSSxHQUFHLGNBQWMsQ0FBQztZQUMxQixXQUFXLEVBQUUsV0FBVyxDQUFDLE1BQU07WUFDL0IsSUFBSSxFQUFFLEtBQUssRUFBRSxTQUFTO1NBQ3ZCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUVsQiw4Q0FBOEM7UUFDOUMsMkRBQTJEO1FBQzNELDJFQUEyRTtRQUMzRSxrR0FBa0c7UUFDbEcsa0dBQWtHO1FBQ2xHLHVFQUF1RTtRQUN2RSxhQUFhLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakYsQ0FBQyxDQUFDO0FBQ0osQ0FBQyJ9
@@ -0,0 +1,17 @@
1
+ import assert from 'node:assert';
2
+ import { ControllerType } from '@eggjs/tegg-types';
3
+ import { HTTPInfoUtil, MethodInfoUtil } from '../../util/index.js';
4
+ export function HTTPMethod(param) {
5
+ return function (target, propertyKey) {
6
+ assert(typeof propertyKey === 'string', `[controller/${target.name}] expect method name be typeof string, but now is ${String(propertyKey)}`);
7
+ const controllerClazz = target.constructor;
8
+ const methodName = propertyKey;
9
+ MethodInfoUtil.setMethodControllerType(controllerClazz, methodName, ControllerType.HTTP);
10
+ HTTPInfoUtil.setHTTPMethodPath(param.path, controllerClazz, methodName);
11
+ HTTPInfoUtil.setHTTPMethodMethod(param.method, controllerClazz, methodName);
12
+ if (param.priority !== undefined) {
13
+ HTTPInfoUtil.setHTTPMethodPriority(param.priority, controllerClazz, methodName);
14
+ }
15
+ };
16
+ }
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSFRUUE1ldGhvZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkhUVFBNZXRob2QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxNQUFNLE1BQU0sYUFBYSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVuRCxPQUFPLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRW5FLE1BQU0sVUFBVSxVQUFVLENBQUMsS0FBdUI7SUFDaEQsT0FBTyxVQUFTLE1BQVcsRUFBRSxXQUF3QjtRQUNuRCxNQUFNLENBQUMsT0FBTyxXQUFXLEtBQUssUUFBUSxFQUNwQyxlQUFlLE1BQU0sQ0FBQyxJQUFJLHFEQUFxRCxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3hHLE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxXQUFnQyxDQUFDO1FBQ2hFLE1BQU0sVUFBVSxHQUFHLFdBQXFCLENBQUM7UUFDekMsY0FBYyxDQUFDLHVCQUF1QixDQUFDLGVBQWUsRUFBRSxVQUFVLEVBQUUsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pGLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLGVBQWUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUN4RSxZQUFZLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxlQUFlLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDNUUsSUFBSSxLQUFLLENBQUMsUUFBUSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ2pDLFlBQVksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLGVBQWUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNsRixDQUFDO0lBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQyJ9
@@ -0,0 +1,75 @@
1
+ import assert from 'node:assert';
2
+ import { HTTPParamType } from '@eggjs/tegg-types';
3
+ import { ObjectUtils } from '@eggjs/tegg-common-util';
4
+ import { HTTPInfoUtil } from '../../util/index.js';
5
+ // TODO url params
6
+ // /foo/:id
7
+ // refactor HTTPQuery, HTTPBody, HTTPParam
8
+ export function HTTPBody() {
9
+ return function (target, propertyKey, parameterIndex) {
10
+ assert(typeof propertyKey === 'string', `[controller/${target.name}] expect method name be typeof string, but now is ${String(propertyKey)}`);
11
+ const methodName = propertyKey;
12
+ const controllerClazz = target.constructor;
13
+ HTTPInfoUtil.setHTTPMethodParamType(HTTPParamType.BODY, parameterIndex, controllerClazz, methodName);
14
+ };
15
+ }
16
+ export function HTTPHeaders() {
17
+ return function (target, propertyKey, parameterIndex) {
18
+ assert(typeof propertyKey === 'string', `[controller/${target.name}] expect method name be typeof string, but now is ${String(propertyKey)}`);
19
+ const methodName = propertyKey;
20
+ const controllerClazz = target.constructor;
21
+ HTTPInfoUtil.setHTTPMethodParamType(HTTPParamType.HEADERS, parameterIndex, controllerClazz, methodName);
22
+ };
23
+ }
24
+ export function HTTPQuery(param) {
25
+ return function (target, propertyKey, parameterIndex) {
26
+ assert(typeof propertyKey === 'string', `[controller/${target.name}] expect method name be typeof string, but now is ${String(propertyKey)}`);
27
+ const methodName = propertyKey;
28
+ const controllerClazz = target.constructor;
29
+ const argNames = ObjectUtils.getFunctionArgNameList(target[propertyKey]);
30
+ const name = param?.name || argNames[parameterIndex];
31
+ HTTPInfoUtil.setHTTPMethodParamType(HTTPParamType.QUERY, parameterIndex, controllerClazz, methodName);
32
+ HTTPInfoUtil.setHTTPMethodParamName(name, parameterIndex, controllerClazz, methodName);
33
+ };
34
+ }
35
+ export function HTTPQueries(param) {
36
+ return function (target, propertyKey, parameterIndex) {
37
+ assert(typeof propertyKey === 'string', `[controller/${target.name}] expect method name be typeof string, but now is ${String(propertyKey)}`);
38
+ const methodName = propertyKey;
39
+ const controllerClazz = target.constructor;
40
+ const argNames = ObjectUtils.getFunctionArgNameList(target[propertyKey]);
41
+ const name = param?.name || argNames[parameterIndex];
42
+ HTTPInfoUtil.setHTTPMethodParamType(HTTPParamType.QUERIES, parameterIndex, controllerClazz, methodName);
43
+ HTTPInfoUtil.setHTTPMethodParamName(name, parameterIndex, controllerClazz, methodName);
44
+ };
45
+ }
46
+ export function HTTPParam(param) {
47
+ return function (target, propertyKey, parameterIndex) {
48
+ assert(typeof propertyKey === 'string', `[controller/${target.name}] expect method name be typeof string, but now is ${String(propertyKey)}`);
49
+ const methodName = propertyKey;
50
+ const controllerClazz = target.constructor;
51
+ const argNames = ObjectUtils.getFunctionArgNameList(target[propertyKey]);
52
+ const name = param?.name || argNames[parameterIndex];
53
+ HTTPInfoUtil.setHTTPMethodParamType(HTTPParamType.PARAM, parameterIndex, controllerClazz, methodName);
54
+ HTTPInfoUtil.setHTTPMethodParamName(name, parameterIndex, controllerClazz, methodName);
55
+ };
56
+ }
57
+ export function Request() {
58
+ return function (target, propertyKey, parameterIndex) {
59
+ const [nodeMajor] = process.versions.node.split('.').map(v => Number(v));
60
+ assert(nodeMajor >= 16, `[controller/${target.name}] expect node version >=16, but now is ${nodeMajor}`);
61
+ assert(typeof propertyKey === 'string', `[controller/${target.name}] expect method name be typeof string, but now is ${String(propertyKey)}`);
62
+ const methodName = propertyKey;
63
+ const controllerClazz = target.constructor;
64
+ HTTPInfoUtil.setHTTPMethodParamType(HTTPParamType.REQUEST, parameterIndex, controllerClazz, methodName);
65
+ };
66
+ }
67
+ export function Cookies() {
68
+ return function (target, propertyKey, parameterIndex) {
69
+ assert(typeof propertyKey === 'string', `[controller/${target.name}] expect method name be typeof string, but now is ${String(propertyKey)}`);
70
+ const methodName = propertyKey;
71
+ const controllerClazz = target.constructor;
72
+ HTTPInfoUtil.setHTTPMethodParamType(HTTPParamType.COOKIES, parameterIndex, controllerClazz, methodName);
73
+ };
74
+ }
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSFRUUFBhcmFtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiSFRUUFBhcmFtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sTUFBTSxNQUFNLGFBQWEsQ0FBQztBQUNqQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVuRCxrQkFBa0I7QUFDbEIsV0FBVztBQUNYLDBDQUEwQztBQUUxQyxNQUFNLFVBQVUsUUFBUTtJQUN0QixPQUFPLFVBQVMsTUFBVyxFQUFFLFdBQXdCLEVBQUUsY0FBc0I7UUFDM0UsTUFBTSxDQUFDLE9BQU8sV0FBVyxLQUFLLFFBQVEsRUFDcEMsZUFBZSxNQUFNLENBQUMsSUFBSSxxREFBcUQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN4RyxNQUFNLFVBQVUsR0FBRyxXQUFxQixDQUFDO1FBQ3pDLE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxXQUFnQyxDQUFDO1FBQ2hFLFlBQVksQ0FBQyxzQkFBc0IsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDdkcsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXO0lBQ3pCLE9BQU8sVUFBUyxNQUFXLEVBQUUsV0FBd0IsRUFBRSxjQUFzQjtRQUMzRSxNQUFNLENBQUMsT0FBTyxXQUFXLEtBQUssUUFBUSxFQUNwQyxlQUFlLE1BQU0sQ0FBQyxJQUFJLHFEQUFxRCxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3hHLE1BQU0sVUFBVSxHQUFHLFdBQXFCLENBQUM7UUFDekMsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLFdBQWdDLENBQUM7UUFDaEUsWUFBWSxD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
@@ -0,0 +1,25 @@
1
+ import assert from 'node:assert';
2
+ import { ControllerInfoUtil, MethodInfoUtil } from '../../util/index.js';
3
+ export function Host(host) {
4
+ function parseHost() {
5
+ return Array.isArray(host) ? host : [host];
6
+ }
7
+ function classHost(constructor) {
8
+ ControllerInfoUtil.addControllerHosts(parseHost(), constructor);
9
+ }
10
+ function methodHost(target, propertyKey) {
11
+ assert(typeof propertyKey === 'string', `[controller/${target.name}] expect method name be typeof string, but now is ${String(propertyKey)}`);
12
+ const controllerClazz = target.constructor;
13
+ const methodName = propertyKey;
14
+ MethodInfoUtil.setMethodHosts(parseHost(), controllerClazz, methodName);
15
+ }
16
+ return function (target, propertyKey) {
17
+ if (propertyKey === undefined) {
18
+ classHost(target);
19
+ }
20
+ else {
21
+ methodHost(target, propertyKey);
22
+ }
23
+ };
24
+ }
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSG9zdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkhvc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxNQUFNLE1BQU0sYUFBYSxDQUFDO0FBRWpDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV6RSxNQUFNLFVBQVUsSUFBSSxDQUFDLElBQWM7SUFFakMsU0FBUyxTQUFTO1FBQ2hCLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFFLElBQUksQ0FBRSxDQUFDO0lBQy9DLENBQUM7SUFFRCxTQUFTLFNBQVMsQ0FBQyxXQUE4QjtRQUMvQyxrQkFBa0IsQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsU0FBUyxVQUFVLENBQUMsTUFBVyxFQUFFLFdBQXdCO1FBQ3ZELE1BQU0sQ0FBQyxPQUFPLFdBQVcsS0FBSyxRQUFRLEVBQ3BDLGVBQWUsTUFBTSxDQUFDLElBQUkscURBQXFELE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDeEcsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLFdBQWdDLENBQUM7UUFDaEUsTUFBTSxVQUFVLEdBQUcsV0FBcUIsQ0FBQztRQUN6QyxjQUFjLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxFQUFFLGVBQWUsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRUQsT0FBTyxVQUFTLE1BQVcsRUFBRSxXQUF5QjtRQUNwRCxJQUFJLFdBQVcsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUM5QixTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEIsQ0FBQzthQUFNLENBQUM7WUFDTixVQUFVLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ2xDLENBQUM7SUFDSCxDQUFDLENBQUM7QUFDSixDQUFDIn0=
@@ -0,0 +1,4 @@
1
+ export * from './Host.js';
2
+ export * from './HTTPController.js';
3
+ export * from './HTTPMethod.js';
4
+ export * from './HTTPParam.js';
@@ -0,0 +1,5 @@
1
+ export * from './Host.js';
2
+ export * from './HTTPController.js';
3
+ export * from './HTTPMethod.js';
4
+ export * from './HTTPParam.js';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxnQkFBZ0IsQ0FBQyJ9
@@ -0,0 +1,4 @@
1
+ export * from './http/index.js';
2
+ export * from './Acl.js';
3
+ export * from './Context.js';
4
+ export * from './Middleware.js';
@@ -0,0 +1,5 @@
1
+ export * from './http/index.js';
2
+ export * from './Acl.js';
3
+ export * from './Context.js';
4
+ export * from './Middleware.js';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsaUJBQWlCLENBQUMifQ==
@@ -1,5 +1,5 @@
1
1
  import type { EggProtoImplClass } from '@eggjs/tegg-types';
2
- import { HTTPControllerMeta } from '../../model';
2
+ import { HTTPControllerMeta } from '../../model/index.js';
3
3
  export declare class HTTPControllerMetaBuilder {
4
4
  private readonly clazz;
5
5
  constructor(clazz: EggProtoImplClass);
@@ -0,0 +1,57 @@
1
+ import assert from 'node:assert';
2
+ import { PrototypeUtil } from '@eggjs/core-decorator';
3
+ import { ObjectUtils } from '@eggjs/tegg-common-util';
4
+ import { ClassUtil } from '@eggjs/tegg-metadata';
5
+ import { ControllerType } from '@eggjs/tegg-types';
6
+ import { ControllerMetaBuilderFactory } from '../../builder/index.js';
7
+ import { HTTPControllerMeta } from '../../model/index.js';
8
+ import { ControllerInfoUtil, ControllerMetadataUtil, HTTPInfoUtil, ControllerValidator } from '../../util/index.js';
9
+ import { HTTPControllerMethodMetaBuilder } from './HTTPControllerMethodMetaBuilder.js';
10
+ export class HTTPControllerMetaBuilder {
11
+ clazz;
12
+ constructor(clazz) {
13
+ this.clazz = clazz;
14
+ }
15
+ buildMethod() {
16
+ const methodNames = ObjectUtils.getProperties(this.clazz.prototype);
17
+ const methods = [];
18
+ for (const methodName of methodNames) {
19
+ const builder = new HTTPControllerMethodMetaBuilder(this.clazz, methodName);
20
+ const methodMeta = builder.build();
21
+ if (methodMeta) {
22
+ methods.push(methodMeta);
23
+ }
24
+ }
25
+ return methods;
26
+ }
27
+ build() {
28
+ ControllerValidator.validate(this.clazz);
29
+ const controllerType = ControllerInfoUtil.getControllerType(this.clazz);
30
+ assert(controllerType === ControllerType.HTTP, 'invalidate controller type');
31
+ const httpPath = HTTPInfoUtil.getHTTPPath(this.clazz);
32
+ const httpMiddlewares = ControllerInfoUtil.getControllerMiddlewares(this.clazz);
33
+ const methods = this.buildMethod();
34
+ const clazzName = this.clazz.name;
35
+ const controllerName = ControllerInfoUtil.getControllerName(this.clazz) || clazzName;
36
+ const property = PrototypeUtil.getProperty(this.clazz);
37
+ const protoName = property.name;
38
+ const needAcl = ControllerInfoUtil.hasControllerAcl(this.clazz);
39
+ const aclCode = ControllerInfoUtil.getControllerAcl(this.clazz);
40
+ const hosts = ControllerInfoUtil.getControllerHosts(this.clazz);
41
+ const metadata = new HTTPControllerMeta(clazzName, protoName, controllerName, httpPath, httpMiddlewares, methods, needAcl, aclCode, hosts);
42
+ ControllerMetadataUtil.setControllerMetadata(this.clazz, metadata);
43
+ for (const method of metadata.methods) {
44
+ const realPath = metadata.getMethodRealPath(method);
45
+ if (!realPath.startsWith('/')) {
46
+ const desc = ClassUtil.classDescription(this.clazz);
47
+ throw new Error(`class ${desc} method ${method.name} path ${realPath} not start with /`);
48
+ }
49
+ }
50
+ return metadata;
51
+ }
52
+ static create(clazz) {
53
+ return new HTTPControllerMetaBuilder(clazz);
54
+ }
55
+ }
56
+ ControllerMetaBuilderFactory.registerControllerMetaBuilder(ControllerType.HTTP, HTTPControllerMetaBuilder.create);
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSFRUUENvbnRyb2xsZXJNZXRhQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkhUVFBDb250cm9sbGVyTWV0YUJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxNQUFNLE1BQU0sYUFBYSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWpELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsa0JBQWtCLEVBQWtCLE1BQU0sc0JBQXNCLENBQUM7QUFDMUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLHNCQUFzQixFQUFFLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3BILE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRXZGLE1BQU0sT0FBTyx5QkFBeUI7SUFDbkIsS0FBSyxDQUFvQjtJQUUxQyxZQUFZLEtBQXdCO1FBQ2xDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLENBQUM7SUFFTyxXQUFXO1FBQ2pCLE1BQU0sV0FBVyxHQUFHLFdBQVcsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNwRSxNQUFNLE9BQU8sR0FBcUIsRUFBRSxDQUFDO1FBQ3JDLEtBQUssTUFBTSxVQUFVLElBQUksV0FBVyxFQUFFLENBQUM7WUFDckMsTUFBTSxPQUFPLEdBQUcsSUFBSSwrQkFBK0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQzVFLE1BQU0sVUFB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
@@ -1,5 +1,5 @@
1
1
  import type { EggProtoImplClass } from '@eggjs/tegg-types';
2
- import { HTTPMethodMeta } from '../../model';
2
+ import { HTTPMethodMeta } from '../../model/index.js';
3
3
  export declare class HTTPControllerMethodMetaBuilder {
4
4
  private readonly clazz;
5
5
  private readonly methodName;