@eggjs/controller-decorator 4.0.0-beta.3 → 4.0.0-beta.30

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 (103) hide show
  1. package/README.md +13 -1
  2. package/dist/builder/ControllerMetaBuilderFactory.js +41 -0
  3. package/dist/builder/index.d.ts +1 -0
  4. package/dist/builder/index.js +2 -0
  5. package/dist/decorator/Acl.js +22 -0
  6. package/dist/decorator/Context.d.ts +1 -0
  7. package/dist/decorator/Context.js +11 -0
  8. package/dist/decorator/Middleware.js +68 -0
  9. package/{src → dist}/decorator/http/HTTPController.js +2 -2
  10. package/dist/decorator/http/HTTPMethod.js +17 -0
  11. package/dist/decorator/http/HTTPParam.d.ts +173 -0
  12. package/dist/decorator/http/HTTPParam.js +241 -0
  13. package/dist/decorator/http/Host.js +25 -0
  14. package/dist/decorator/http/index.d.ts +4 -0
  15. package/dist/decorator/http/index.js +5 -0
  16. package/dist/decorator/index.d.ts +4 -0
  17. package/dist/decorator/index.js +5 -0
  18. package/{src → dist}/impl/http/HTTPControllerMetaBuilder.d.ts +1 -1
  19. package/dist/impl/http/HTTPControllerMetaBuilder.js +57 -0
  20. package/{src → dist}/impl/http/HTTPControllerMethodMetaBuilder.d.ts +1 -1
  21. package/dist/impl/http/HTTPControllerMethodMetaBuilder.js +96 -0
  22. package/dist/impl/http/index.d.ts +2 -0
  23. package/dist/impl/http/index.js +3 -0
  24. package/dist/impl/index.d.ts +1 -0
  25. package/dist/impl/index.js +2 -0
  26. package/dist/index.d.ts +6 -0
  27. package/dist/index.js +7 -0
  28. package/{src → dist}/model/HTTPControllerMeta.d.ts +2 -2
  29. package/dist/model/HTTPControllerMeta.js +57 -0
  30. package/dist/model/HTTPCookies.d.ts +1 -0
  31. package/dist/model/HTTPCookies.js +2 -0
  32. package/{src → dist}/model/HTTPMethodMeta.d.ts +1 -1
  33. package/dist/model/HTTPMethodMeta.js +124 -0
  34. package/dist/model/index.d.ts +3 -0
  35. package/dist/model/index.js +4 -0
  36. package/{src → dist}/util/ControllerInfoUtil.d.ts +1 -1
  37. package/dist/util/ControllerInfoUtil.js +46 -0
  38. package/dist/util/ControllerMetadataUtil.js +20 -0
  39. package/dist/util/HTTPInfoUtil.js +64 -0
  40. package/{src → dist}/util/HTTPPriorityUtil.d.ts +2 -1
  41. package/{src → dist}/util/HTTPPriorityUtil.js +4 -3
  42. package/{src → dist}/util/MethodInfoUtil.d.ts +1 -1
  43. package/dist/util/MethodInfoUtil.js +72 -0
  44. package/dist/util/index.d.ts +6 -0
  45. package/dist/util/index.js +7 -0
  46. package/dist/util/validator/ControllerValidator.js +15 -0
  47. package/dist/util/validator/MethodValidator.js +31 -0
  48. package/dist/util/validator/index.d.ts +2 -0
  49. package/dist/util/validator/index.js +3 -0
  50. package/package.json +29 -31
  51. package/src/builder/ControllerMetaBuilderFactory.js +0 -41
  52. package/src/builder/index.d.ts +0 -1
  53. package/src/builder/index.js +0 -2
  54. package/src/decorator/Acl.js +0 -22
  55. package/src/decorator/Context.d.ts +0 -1
  56. package/src/decorator/Context.js +0 -11
  57. package/src/decorator/Middleware.js +0 -69
  58. package/src/decorator/http/HTTPMethod.js +0 -17
  59. package/src/decorator/http/HTTPParam.d.ts +0 -8
  60. package/src/decorator/http/HTTPParam.js +0 -75
  61. package/src/decorator/http/Host.js +0 -25
  62. package/src/decorator/http/index.d.ts +0 -4
  63. package/src/decorator/http/index.js +0 -5
  64. package/src/decorator/index.d.ts +0 -4
  65. package/src/decorator/index.js +0 -5
  66. package/src/impl/http/HTTPControllerMetaBuilder.js +0 -57
  67. package/src/impl/http/HTTPControllerMethodMetaBuilder.js +0 -100
  68. package/src/impl/http/index.d.ts +0 -2
  69. package/src/impl/http/index.js +0 -3
  70. package/src/impl/index.d.ts +0 -1
  71. package/src/impl/index.js +0 -2
  72. package/src/index.d.ts +0 -6
  73. package/src/index.js +0 -7
  74. package/src/model/HTTPControllerMeta.js +0 -59
  75. package/src/model/HTTPCookies.d.ts +0 -3
  76. package/src/model/HTTPCookies.js +0 -4
  77. package/src/model/HTTPMethodMeta.js +0 -124
  78. package/src/model/HTTPRequest.d.ts +0 -7
  79. package/src/model/HTTPRequest.js +0 -3
  80. package/src/model/HTTPResponse.d.ts +0 -10
  81. package/src/model/HTTPResponse.js +0 -3
  82. package/src/model/index.d.ts +0 -5
  83. package/src/model/index.js +0 -6
  84. package/src/util/ControllerInfoUtil.js +0 -46
  85. package/src/util/ControllerMetadataUtil.js +0 -20
  86. package/src/util/HTTPInfoUtil.js +0 -64
  87. package/src/util/MethodInfoUtil.js +0 -72
  88. package/src/util/index.d.ts +0 -6
  89. package/src/util/index.js +0 -7
  90. package/src/util/validator/ControllerValidator.js +0 -15
  91. package/src/util/validator/MethodValidator.js +0 -31
  92. package/src/util/validator/index.d.ts +0 -2
  93. package/src/util/validator/index.js +0 -3
  94. /package/{src → dist}/builder/ControllerMetaBuilderFactory.d.ts +0 -0
  95. /package/{src → dist}/decorator/Acl.d.ts +0 -0
  96. /package/{src → dist}/decorator/Middleware.d.ts +0 -0
  97. /package/{src → dist}/decorator/http/HTTPController.d.ts +0 -0
  98. /package/{src → dist}/decorator/http/HTTPMethod.d.ts +0 -0
  99. /package/{src → dist}/decorator/http/Host.d.ts +0 -0
  100. /package/{src → dist}/util/ControllerMetadataUtil.d.ts +0 -0
  101. /package/{src → dist}/util/HTTPInfoUtil.d.ts +0 -0
  102. /package/{src → dist}/util/validator/ControllerValidator.d.ts +0 -0
  103. /package/{src → dist}/util/validator/MethodValidator.d.ts +0 -0
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSG9zdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kZWNvcmF0b3IvaHR0cC9Ib3N0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sTUFBTSxNQUFNLGFBQWEsQ0FBQztBQUlqQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFekUsTUFBTSxVQUFVLElBQUksQ0FBQyxJQUFjO0lBQ2pDLFNBQVMsU0FBUztRQUNoQixPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsU0FBUyxTQUFTLENBQUMsV0FBOEI7UUFDL0Msa0JBQWtCLENBQUMsa0JBQWtCLENBQUMsU0FBUyxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVELFNBQVMsVUFBVSxDQUFDLE1BQVcsRUFBRSxXQUF3QjtRQUN2RCxNQUFNLENBQ0osT0FBTyxXQUFXLEtBQUssUUFBUSxFQUMvQixlQUFlLE1BQU0sQ0FBQyxJQUFJLHFEQUFxRCxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FDckcsQ0FBQztRQUNGLE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxXQUFnQyxDQUFDO1FBQ2hFLE1BQU0sVUFBVSxHQUFHLFdBQXFCLENBQUM7UUFDekMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxlQUFlLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVELE9BQU8sVUFBVSxNQUFXLEVBQUUsV0FBeUI7UUFDckQsSUFBSSxXQUFXLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDOUIsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3BCLENBQUM7YUFBTSxDQUFDO1lBQ04sVUFBVSxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztRQUNsQyxDQUFDO0lBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQyJ9
@@ -0,0 +1,4 @@
1
+ export * from './Host.ts';
2
+ export * from './HTTPController.ts';
3
+ export * from './HTTPMethod.ts';
4
+ export * from './HTTPParam.ts';
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGVjb3JhdG9yL2h0dHAvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsZ0JBQWdCLENBQUMifQ==
@@ -0,0 +1,4 @@
1
+ export * from './http/index.ts';
2
+ export * from './Acl.ts';
3
+ export * from './Context.ts';
4
+ export * from './Middleware.ts';
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGVjb3JhdG9yL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxpQkFBaUIsQ0FBQyJ9
@@ -1,5 +1,5 @@
1
1
  import type { EggProtoImplClass } from '@eggjs/tegg-types';
2
- import { HTTPControllerMeta } from '../../model/index.js';
2
+ import { HTTPControllerMeta } from '../../model/index.ts';
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/metadata';
5
+ import { ControllerType } from '@eggjs/tegg-types';
6
+ import { ControllerMetaBuilderFactory } from "../../builder/index.js";
7
+ import { HTTPControllerMeta, HTTPMethodMeta } 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.equal(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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSFRUUENvbnRyb2xsZXJNZXRhQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pbXBsL2h0dHAvSFRUUENvbnRyb2xsZXJNZXRhQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE1BQU0sTUFBTSxhQUFhLENBQUM7QUFFakMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFNUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRW5ELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsc0JBQXNCLEVBQUUsWUFBWSxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEgsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFdkYsTUFBTSxPQUFPLHlCQUF5QjtJQUNuQixLQUFLLENBQW9CO0lBRTFDLFlBQVksS0FBd0I7UUFDbEMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUVPLFdBQVc7UUFDakIsTUFBTSxXQUFXLEdBQUcsV0FBVyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sT0FBTyxHQUFxQixFQUFFLENBQUM7UUFDckMsS0FBSyxNQUFNLFVBQVUsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNyQyxNQUFNLE9BQU8sR0FBRyxJQUFJLCtCQUErQixDQUFDLElBQUksQ0FBQyxLQUFLLEVB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
@@ -1,5 +1,5 @@
1
1
  import type { EggProtoImplClass } from '@eggjs/tegg-types';
2
- import { HTTPMethodMeta } from '../../model/index.js';
2
+ import { HTTPMethodMeta } from '../../model/index.ts';
3
3
  export declare class HTTPControllerMethodMetaBuilder {
4
4
  private readonly clazz;
5
5
  private readonly methodName;
@@ -0,0 +1,96 @@
1
+ import path from 'node:path';
2
+ import { ClassUtil } from '@eggjs/metadata';
3
+ import { HTTPMethodMeta, ParamMeta, ParamMetaUtil } from "../../model/index.js";
4
+ import { MethodValidator, HTTPInfoUtil, MethodInfoUtil, HTTPPriorityUtil } from "../../util/index.js";
5
+ export class HTTPControllerMethodMetaBuilder {
6
+ clazz;
7
+ methodName;
8
+ constructor(clazz, methodName) {
9
+ this.clazz = clazz;
10
+ this.methodName = methodName;
11
+ }
12
+ // 检查 HTTP 方法上参数是否都加上了注解
13
+ // foo(a, b=233, c); foo.length = 2;
14
+ // 由于这种情况的存在, 所以需要对 function 参数检查进行特殊处理
15
+ // 如果有注解的参数比 function.length 长, 长度应该取有注解参数总数(包括 @Context)
16
+ //
17
+ // 但是有两种特殊情况无法处理
18
+ // foo(@Context() ctx, @HTTPParam() id1, id2 = 233)
19
+ // foo(@Context() ctx, @HTTPParam() id1, id2 = 233, id3)
20
+ // 这两种情况均为默认值参数在
21
+ checkParamDecorators() {
22
+ const method = this.clazz.prototype[this.methodName];
23
+ // 获取函数参数长度
24
+ const functionLength = method.length;
25
+ // 计算带注解参数
26
+ const paramIndexList = HTTPInfoUtil.getParamIndexList(this.clazz, this.methodName);
27
+ const contextIndex = MethodInfoUtil.getMethodContextIndex(this.clazz, this.methodName);
28
+ const hasAnnotationParamCount = typeof contextIndex === 'undefined' ? paramIndexList.length : paramIndexList.length + 1;
29
+ const maxParamCount = Math.max(functionLength, hasAnnotationParamCount);
30
+ for (let i = 0; i < maxParamCount; ++i) {
31
+ // 上下文参数, 跳过检查
32
+ if (i === contextIndex) {
33
+ continue;
34
+ }
35
+ const paramType = HTTPInfoUtil.getHTTPMethodParamType(i, this.clazz, this.methodName);
36
+ if (!paramType) {
37
+ const classDesc = ClassUtil.classDescription(this.clazz);
38
+ throw new Error(`${classDesc}:${this.methodName} param ${i} has no http param type, Please add @HTTPBody, @HTTPParam, @HTTPQuery, @HTTPQueries`);
39
+ }
40
+ }
41
+ }
42
+ buildParamType(httpPath) {
43
+ this.checkParamDecorators();
44
+ const paramTypeMap = new Map();
45
+ const paramIndexList = HTTPInfoUtil.getParamIndexList(this.clazz, this.methodName);
46
+ for (const paramIndex of paramIndexList) {
47
+ const paramType = HTTPInfoUtil.getHTTPMethodParamType(paramIndex, this.clazz, this.methodName);
48
+ const paramName = HTTPInfoUtil.getHTTPMethodParamName(paramIndex, this.clazz, this.methodName);
49
+ const paramMeta = ParamMetaUtil.createParam(paramType, paramName);
50
+ try {
51
+ paramMeta.validate(httpPath);
52
+ }
53
+ catch (e) {
54
+ const classDesc = ClassUtil.classDescription(this.clazz);
55
+ e.message = `build controller ${classDesc} method ${this.methodName} param ${paramName} failed: ${e.message}`;
56
+ throw e;
57
+ }
58
+ paramTypeMap.set(paramIndex, paramMeta);
59
+ }
60
+ return paramTypeMap;
61
+ }
62
+ getPriority() {
63
+ const priority = HTTPInfoUtil.getHTTPMethodPriority(this.clazz, this.methodName);
64
+ if (priority !== undefined) {
65
+ return priority;
66
+ }
67
+ const controllerPath = HTTPInfoUtil.getHTTPPath(this.clazz);
68
+ const methodPath = HTTPInfoUtil.getHTTPMethodPath(this.clazz, this.methodName);
69
+ const realPath = controllerPath ? path.posix.join(controllerPath, methodPath) : methodPath;
70
+ const defaultPriority = HTTPPriorityUtil.calcPathPriority(realPath);
71
+ if (defaultPriority > HTTPPriorityUtil.DEFAULT_PRIORITY) {
72
+ throw new Error(`path ${realPath} is too long, should set priority manually`);
73
+ }
74
+ return defaultPriority;
75
+ }
76
+ build() {
77
+ MethodValidator.validate(this.clazz, this.methodName);
78
+ const controllerType = MethodInfoUtil.getMethodControllerType(this.clazz, this.methodName);
79
+ if (!controllerType) {
80
+ return undefined;
81
+ }
82
+ const httpMethod = HTTPInfoUtil.getHTTPMethodMethod(this.clazz, this.methodName);
83
+ const parentPath = HTTPInfoUtil.getHTTPPath(this.clazz);
84
+ const httpPath = HTTPInfoUtil.getHTTPMethodPath(this.clazz, this.methodName);
85
+ const contextIndex = MethodInfoUtil.getMethodContextIndex(this.clazz, this.methodName);
86
+ const middlewares = MethodInfoUtil.getMethodMiddlewares(this.clazz, this.methodName);
87
+ const needAcl = MethodInfoUtil.hasMethodAcl(this.clazz, this.methodName);
88
+ const aclCode = MethodInfoUtil.getMethodAcl(this.clazz, this.methodName);
89
+ const hosts = MethodInfoUtil.getMethodHosts(this.clazz, this.methodName);
90
+ const realPath = parentPath ? path.posix.join(parentPath, httpPath) : httpPath;
91
+ const paramTypeMap = this.buildParamType(realPath);
92
+ const priority = this.getPriority();
93
+ return new HTTPMethodMeta(this.methodName, httpPath, httpMethod, middlewares, contextIndex, paramTypeMap, priority, needAcl, aclCode, hosts);
94
+ }
95
+ }
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSFRUUENvbnRyb2xsZXJNZXRob2RNZXRhQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pbXBsL2h0dHAvSFRUUENvbnRyb2xsZXJNZXRob2RNZXRhQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLElBQUksTUFBTSxXQUFXLENBQUM7QUFFN0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRzVDLE9BQU8sRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXRHLE1BQU0sT0FBTywrQkFBK0I7SUFDekIsS0FBSyxDQUFvQjtJQUN6QixVQUFVLENBQVM7SUFFcEMsWUFBWSxLQUF3QixFQUFFLFVBQWtCO1FBQ3RELElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0lBQy9CLENBQUM7SUFFRCx3QkFBd0I7SUFDeEIsb0NBQW9DO0lBQ3BDLHVDQUF1QztJQUN2Qyx5REFBeUQ7SUFDekQsRUFBRTtJQUNGLGdCQUFnQjtJQUNoQixtREFBbUQ7SUFDbkQsd0RBQXdEO0lBQ3hELGdCQUFnQjtJQUNSLG9CQUFvQjtRQUMxQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFckQsV0FBVztRQUNYLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFFckMsVUFBVTtRQUNWLE1BQU0sY0FBYyxHQUFHLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNu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
@@ -0,0 +1,2 @@
1
+ export * from './HTTPControllerMetaBuilder.ts';
2
+ export * from './HTTPControllerMethodMetaBuilder.ts';
@@ -0,0 +1,3 @@
1
+ export * from "./HTTPControllerMetaBuilder.js";
2
+ export * from "./HTTPControllerMethodMetaBuilder.js";
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW1wbC9odHRwL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyxzQ0FBc0MsQ0FBQyJ9
@@ -0,0 +1 @@
1
+ export * from './http/index.ts';
@@ -0,0 +1,2 @@
1
+ export * from "./http/index.js";
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW1wbC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGlCQUFpQixDQUFDIn0=
@@ -0,0 +1,6 @@
1
+ export * from '@eggjs/tegg-types/controller-decorator';
2
+ export * from './builder/index.ts';
3
+ export * from './decorator/index.ts';
4
+ export * from './impl/index.ts';
5
+ export * from './model/index.ts';
6
+ export * from './util/index.ts';
package/dist/index.js ADDED
@@ -0,0 +1,7 @@
1
+ export * from '@eggjs/tegg-types/controller-decorator';
2
+ export * from "./builder/index.js";
3
+ export * from "./decorator/index.js";
4
+ export * from "./impl/index.js";
5
+ export * from "./model/index.js";
6
+ export * from "./util/index.js";
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx3Q0FBd0MsQ0FBQztBQUV2RCxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsaUJBQWlCLENBQUMifQ==
@@ -1,11 +1,11 @@
1
1
  import type { ControllerMetadata, EggPrototypeName, MiddlewareFunc } from '@eggjs/tegg-types';
2
2
  import { ControllerType } from '@eggjs/tegg-types';
3
- import { HTTPMethodMeta } from './HTTPMethodMeta.js';
3
+ import { HTTPMethodMeta } from './HTTPMethodMeta.ts';
4
4
  export declare class HTTPControllerMeta implements ControllerMetadata {
5
5
  readonly protoName: EggPrototypeName;
6
6
  readonly controllerName: string;
7
7
  readonly className: string;
8
- readonly type = ControllerType.HTTP;
8
+ readonly type: ControllerType;
9
9
  readonly path?: string;
10
10
  readonly middlewares: readonly MiddlewareFunc[];
11
11
  readonly methods: readonly HTTPMethodMeta[];
@@ -0,0 +1,57 @@
1
+ import path from 'node:path';
2
+ import { ControllerType } from '@eggjs/tegg-types';
3
+ import { HTTPMethodMeta } from "./HTTPMethodMeta.js";
4
+ export class HTTPControllerMeta {
5
+ protoName;
6
+ controllerName;
7
+ className;
8
+ type = ControllerType.HTTP;
9
+ path;
10
+ middlewares;
11
+ methods;
12
+ needAcl;
13
+ aclCode;
14
+ hosts;
15
+ constructor(className, protoName, controllerName, path, middlewares, methods, needAcl, aclCode, hosts) {
16
+ this.protoName = protoName;
17
+ this.controllerName = controllerName;
18
+ this.className = className;
19
+ this.path = path;
20
+ this.middlewares = middlewares;
21
+ this.methods = methods;
22
+ this.needAcl = needAcl;
23
+ this.aclCode = aclCode;
24
+ this.hosts = hosts;
25
+ }
26
+ getMethodRealPath(method) {
27
+ if (this.path) {
28
+ return path.posix.join(this.path, method.path);
29
+ }
30
+ return method.path;
31
+ }
32
+ getMethodHosts(method) {
33
+ if (this.hosts) {
34
+ return this.hosts;
35
+ }
36
+ return method.hosts;
37
+ }
38
+ getMethodName(method) {
39
+ return `${method.method} ${this.controllerName}.${method.name}`;
40
+ }
41
+ getMethodMiddlewares(method) {
42
+ if (this.middlewares.length) {
43
+ return [...this.middlewares, ...method.middlewares];
44
+ }
45
+ return [...method.middlewares];
46
+ }
47
+ hasMethodAcl(method) {
48
+ return method.needAcl || this.needAcl;
49
+ }
50
+ getMethodAcl(method) {
51
+ if (method.aclCode) {
52
+ return method.aclCode;
53
+ }
54
+ return this.aclCode;
55
+ }
56
+ }
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSFRUUENvbnRyb2xsZXJNZXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZGVsL0hUVFBDb250cm9sbGVyTWV0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLElBQUksTUFBTSxXQUFXLENBQUM7QUFHN0IsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRW5ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVyRCxNQUFNLE9BQU8sa0JBQWtCO0lBQ3BCLFNBQVMsQ0FBbUI7SUFDNUIsY0FBYyxDQUFTO0lBQ3ZCLFNBQVMsQ0FBUztJQUNYLElBQUksR0FBbUIsY0FBYyxDQUFDLElBQUksQ0FBQztJQUMzQyxJQUFJLENBQVU7SUFDZCxXQUFXLENBQTRCO0lBQ3ZDLE9BQU8sQ0FBNEI7SUFDbkMsT0FBTyxDQUFVO0lBQ2pCLE9BQU8sQ0FBVTtJQUNqQixLQUFLLENBQVk7SUFFakMsWUFDRSxTQUFpQixFQUNqQixTQUEyQixFQUMzQixjQUFzQixFQUN0QixJQUF3QixFQUN4QixXQUE2QixFQUM3QixPQUF5QixFQUN6QixPQUFnQixFQUNoQixPQUEyQixFQUMzQixLQUEyQjtRQUUzQixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztRQUNyQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUMvQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNyQixDQUFDO0lBRUQsaUJBQWlCLENBQUMsTUFBc0I7UUFDdEMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDZCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pELENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQUVELGNBQWMsQ0FBQyxNQUFzQjtRQUNuQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNwQixDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxhQUFhLENBQUMsTUFBc0I7UUFDbEMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLGNBQWMsSUFBSSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbEUsQ0FBQztJQUVELG9CQUFvQixDQUFDLE1BQXNCO1FBQ3pDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUM1QixPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3RELENBQUM7UUFDRCxPQUFPLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELFlBQVksQ0FBQyxNQUFzQjtRQUNqQyxPQUFPLE1BQU0sQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QyxDQUFDO0lBRUQsWUFBWSxDQUFDLE1BQXNCO1FBQ2pDLElBQUksTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ25CLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQztRQUN4QixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7Q0FDRiJ9
@@ -0,0 +1 @@
1
+ export { Cookies } from '@eggjs/cookies';
@@ -0,0 +1,2 @@
1
+ export { Cookies } from '@eggjs/cookies';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSFRUUENvb2tpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kZWwvSFRUUENvb2tpZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDIn0=
@@ -52,5 +52,5 @@ export declare class HTTPMethodMeta implements MethodMeta {
52
52
  constructor(name: string, path: string, method: HTTPMethodEnum, middlewares: MiddlewareFunc[], contextParamIndex: number | undefined, paramTypeMap: Map<number, ParamMeta>, priority: number, needAcl: boolean, aclCode: string | undefined, hosts: string[] | undefined);
53
53
  }
54
54
  export declare class ParamMetaUtil {
55
- static createParam(type: HTTPParamType, name?: string): RequestParamMeta | BodyParamMeta | HeadersParamMeta | QueryParamMeta | QueriesParamMeta | PathParamMeta | CookiesParamMeta;
55
+ static createParam(type: HTTPParamType, name?: string): ParamMeta;
56
56
  }
@@ -0,0 +1,124 @@
1
+ import assert from 'node:assert';
2
+ import pathToRegexp, {} from 'path-to-regexp';
3
+ import { HTTPParamType } from '@eggjs/tegg-types';
4
+ export class ParamMeta {
5
+ type;
6
+ }
7
+ export class RequestParamMeta extends ParamMeta {
8
+ type = HTTPParamType.REQUEST;
9
+ validate() {
10
+ return;
11
+ }
12
+ }
13
+ export class BodyParamMeta extends ParamMeta {
14
+ type = HTTPParamType.BODY;
15
+ validate() {
16
+ return;
17
+ }
18
+ }
19
+ export class HeadersParamMeta extends ParamMeta {
20
+ type = HTTPParamType.HEADERS;
21
+ validate() {
22
+ return;
23
+ }
24
+ }
25
+ export class QueryParamMeta extends ParamMeta {
26
+ type = HTTPParamType.QUERY;
27
+ name;
28
+ constructor(name) {
29
+ super();
30
+ this.name = name;
31
+ }
32
+ validate() {
33
+ return;
34
+ }
35
+ }
36
+ export class QueriesParamMeta extends ParamMeta {
37
+ type = HTTPParamType.QUERIES;
38
+ name;
39
+ constructor(name) {
40
+ super();
41
+ this.name = name;
42
+ }
43
+ validate() {
44
+ return;
45
+ }
46
+ }
47
+ export class PathParamMeta extends ParamMeta {
48
+ type = HTTPParamType.PARAM;
49
+ name;
50
+ constructor(name) {
51
+ super();
52
+ this.name = name;
53
+ }
54
+ validate(httpPath) {
55
+ const names = [];
56
+ pathToRegexp(httpPath, names);
57
+ if (!names.find((name) => String(name.name) === this.name)) {
58
+ throw new Error(`can not find param ${this.name} in path ${httpPath}`);
59
+ }
60
+ }
61
+ }
62
+ export class CookiesParamMeta extends ParamMeta {
63
+ type = HTTPParamType.COOKIES;
64
+ validate() {
65
+ return;
66
+ }
67
+ }
68
+ export class HTTPMethodMeta {
69
+ name;
70
+ path;
71
+ method;
72
+ middlewares;
73
+ contextParamIndex;
74
+ paramMap;
75
+ priority;
76
+ needAcl;
77
+ aclCode;
78
+ hosts;
79
+ constructor(name, path, method, middlewares, contextParamIndex, paramTypeMap, priority, needAcl, aclCode, hosts) {
80
+ this.name = name;
81
+ this.path = path;
82
+ this.method = method;
83
+ this.middlewares = middlewares;
84
+ this.contextParamIndex = contextParamIndex;
85
+ this.paramMap = paramTypeMap;
86
+ this.priority = priority;
87
+ this.needAcl = needAcl;
88
+ this.aclCode = aclCode;
89
+ this.hosts = hosts;
90
+ }
91
+ }
92
+ export class ParamMetaUtil {
93
+ static createParam(type, name) {
94
+ switch (type) {
95
+ case HTTPParamType.PARAM: {
96
+ assert(name, 'path param must has name');
97
+ return new PathParamMeta(name);
98
+ }
99
+ case HTTPParamType.BODY: {
100
+ return new BodyParamMeta();
101
+ }
102
+ case HTTPParamType.HEADERS: {
103
+ return new HeadersParamMeta();
104
+ }
105
+ case HTTPParamType.QUERIES: {
106
+ assert(name, 'queries param must has name');
107
+ return new QueriesParamMeta(name);
108
+ }
109
+ case HTTPParamType.QUERY: {
110
+ assert(name, 'query param must has name');
111
+ return new QueryParamMeta(name);
112
+ }
113
+ case HTTPParamType.REQUEST: {
114
+ return new RequestParamMeta();
115
+ }
116
+ case HTTPParamType.COOKIES: {
117
+ return new CookiesParamMeta();
118
+ }
119
+ default:
120
+ assert.fail('never arrive');
121
+ }
122
+ }
123
+ }
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSFRUUE1ldGhvZE1ldGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kZWwvSFRUUE1ldGhvZE1ldGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxNQUFNLE1BQU0sYUFBYSxDQUFDO0FBRWpDLE9BQU8sWUFBWSxFQUFFLEVBQStCLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBR2xELE1BQU0sT0FBZ0IsU0FBUztJQUM3QixJQUFJLENBQWdCO0NBR3JCO0FBRUQsTUFBTSxPQUFPLGdCQUFpQixTQUFRLFNBQVM7SUFDN0MsSUFBSSxHQUFrQixhQUFhLENBQUMsT0FBTyxDQUFDO0lBRTVDLFFBQVE7UUFDTixPQUFPO0lBQ1QsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLGFBQWMsU0FBUSxTQUFTO0lBQzFDLElBQUksR0FBa0IsYUFBYSxDQUFDLElBQUksQ0FBQztJQUV6QyxRQUFRO1FBQ04sT0FBTztJQUNULENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxTQUFTO0lBQzdDLElBQUksR0FBa0IsYUFBYSxDQUFDLE9BQU8sQ0FBQztJQUU1QyxRQUFRO1FBQ04sT0FBTztJQUNULENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxjQUFlLFNBQVEsU0FBUztJQUMzQyxJQUFJLEdBQWtCLGFBQWEsQ0FBQyxLQUFLLENBQUM7SUFDMUMsSUFBSSxDQUFTO0lBRWIsWUFBWSxJQUFZO1FBQ3RCLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPO0lBQ1QsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLGdCQUFpQixTQUFRLFNBQVM7SUFDN0MsSUFBSSxHQUFrQixhQUFhLENBQUMsT0FBTyxDQUFDO0lBQzVDLElBQUksQ0FBUztJQUViLFlBQVksSUFB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
@@ -0,0 +1,3 @@
1
+ export * from './HTTPControllerMeta.ts';
2
+ export * from './HTTPCookies.ts';
3
+ export * from './HTTPMethodMeta.ts';
@@ -0,0 +1,4 @@
1
+ export * from "./HTTPControllerMeta.js";
2
+ export * from "./HTTPCookies.js";
3
+ export * from "./HTTPMethodMeta.js";
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kZWwvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMscUJBQXFCLENBQUMifQ==
@@ -1,4 +1,4 @@
1
- import { IAdvice } from '@eggjs/tegg-types';
1
+ import { type IAdvice } from '@eggjs/tegg-types';
2
2
  import type { ControllerTypeLike, EggProtoImplClass, MiddlewareFunc } from '@eggjs/tegg-types';
3
3
  export declare class ControllerInfoUtil {
4
4
  static addControllerMiddleware(middleware: MiddlewareFunc, clazz: EggProtoImplClass): void;
@@ -0,0 +1,46 @@
1
+ import { CONTROLLER_ACL, CONTROLLER_AOP_MIDDLEWARES, CONTROLLER_HOST, CONTROLLER_MIDDLEWARES, CONTROLLER_NAME, CONTROLLER_TYPE, } from '@eggjs/tegg-types';
2
+ import { MetadataUtil } from '@eggjs/core-decorator';
3
+ export class ControllerInfoUtil {
4
+ static addControllerMiddleware(middleware, clazz) {
5
+ const middlewares = MetadataUtil.initOwnArrayMetaData(CONTROLLER_MIDDLEWARES, clazz, []);
6
+ middlewares.push(middleware);
7
+ }
8
+ static addControllerAopMiddleware(middleware, clazz) {
9
+ const middlewares = MetadataUtil.initOwnArrayMetaData(CONTROLLER_AOP_MIDDLEWARES, clazz, []);
10
+ middlewares.push(middleware);
11
+ }
12
+ static getControllerMiddlewares(clazz) {
13
+ return MetadataUtil.getMetaData(CONTROLLER_MIDDLEWARES, clazz) || [];
14
+ }
15
+ static getControllerAopMiddlewares(clazz) {
16
+ return MetadataUtil.getMetaData(CONTROLLER_AOP_MIDDLEWARES, clazz) || [];
17
+ }
18
+ static setControllerType(clazz, controllerType) {
19
+ MetadataUtil.defineMetaData(CONTROLLER_TYPE, controllerType, clazz);
20
+ }
21
+ static setControllerName(clazz, controllerName) {
22
+ MetadataUtil.defineMetaData(CONTROLLER_NAME, controllerName, clazz);
23
+ }
24
+ static getControllerName(clazz) {
25
+ return MetadataUtil.getMetaData(CONTROLLER_NAME, clazz);
26
+ }
27
+ static getControllerType(clazz) {
28
+ return MetadataUtil.getMetaData(CONTROLLER_TYPE, clazz);
29
+ }
30
+ static setControllerAcl(code, clazz) {
31
+ MetadataUtil.defineMetaData(CONTROLLER_ACL, code, clazz);
32
+ }
33
+ static hasControllerAcl(clazz) {
34
+ return MetadataUtil.hasMetaData(CONTROLLER_ACL, clazz);
35
+ }
36
+ static getControllerAcl(clazz) {
37
+ return MetadataUtil.getMetaData(CONTROLLER_ACL, clazz);
38
+ }
39
+ static addControllerHosts(hosts, clazz) {
40
+ MetadataUtil.defineMetaData(CONTROLLER_HOST, hosts, clazz);
41
+ }
42
+ static getControllerHosts(clazz) {
43
+ return MetadataUtil.getMetaData(CONTROLLER_HOST, clazz);
44
+ }
45
+ }
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udHJvbGxlckluZm9VdGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWwvQ29udHJvbGxlckluZm9VdGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxjQUFjLEVBQ2QsMEJBQTBCLEVBQzFCLGVBQWUsRUFDZixzQkFBc0IsRUFDdEIsZUFBZSxFQUNmLGVBQWUsR0FFaEIsTUFBTSxtQkFBbUIsQ0FBQztBQUUzQixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFckQsTUFBTSxPQUFPLGtCQUFrQjtJQUM3QixNQUFNLENBQUMsdUJBQXVCLENBQUMsVUFBMEIsRUFBRSxLQUF3QjtRQUNqRixNQUFNLFdBQVcsR0FBRyxZQUFZLENBQUMsb0JBQW9CLENBQWlCLHNCQUFzQixFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN6RyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxNQUFNLENBQUMsMEJBQTBCLENBQUMsVUFBc0MsRUFBRSxLQUF3QjtRQUNoRyxNQUFNLFdBQVcsR0FBRyxZQUFZLENBQUMsb0JBQW9CLENBQ25ELDBCQUEwQixFQUMxQixLQUFLLEVBQ0wsRUFBRSxDQUNILENBQUM7UUFDRixXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxNQUFNLENBQUMsd0JBQXdCLENBQUMsS0FBd0I7UUFDdEQsT0FBTyxZQUFZLENBQUMsV0FBVyxDQUFDLHNCQUFzQixFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN2RSxDQUFDO0lBRUQsTUFBTSxDQUFDLDJCQUEyQixDQUFDLEtBQXdCO1FBQ3pELE9BQU8sWUFBWSxDQUFDLFdBQVcsQ0FBQywwQkFBMEIsRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDM0UsQ0FBQztJQUVELE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxLQUF3QixFQUFFLGNBQWtDO1FBQ25GLFlBQVksQ0FBQyxjQUFjLENBQUMsZUFBZSxFQUFFLGNBQWMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEtBQXdCLEVBQUUsY0FBc0I7UUFDdkUsWUFBWSxDQUFDLGNBQWMsQ0FBQyxlQUFlLEVBQUUsY0FBYyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRCxNQUFNLENBQUMsaUJBQWlCLENBQUMsS0FBd0I7UUFDL0MsT0FBTyxZQUFZLENBQUMsV0FBVyxDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEtBQXdCO1FBQy9DLE9BQU8sWUFBWSxDQUFDLFdBQVcsQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUF3QixFQUFFLEtBQXdCO1FBQ3hFLFlBQVksQ0FBQyxjQUFjLENBQUMsY0FBYyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEtBQXdCO1FBQzlDLE9BQU8sWUFBWSxDQUFDLFdBQVcsQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUF3QjtRQUM5QyxPQUFPLFlBQVksQ0FBQyxXQUFXLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxNQUFNLENBQUMsa0JBQWtCLENBQUMsS0FBZSxFQUFFLEtBQXdCO1FBQ2pFLFlBQVksQ0FBQyxjQUFjLENBQUMsZUFBZSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsTUFBTSxDQUFDLGtCQUFrQixDQUFDLEtBQXdCO1FBQ2hELE9BQU8sWUFBWSxDQUFDLFdBQVcsQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDMUQsQ0FBQztDQUNGIn0=
@@ -0,0 +1,20 @@
1
+ import { CONTROLLER_META_DATA } from '@eggjs/tegg-types';
2
+ import { MetadataUtil } from '@eggjs/core-decorator';
3
+ import { ControllerMetaBuilderFactory } from "../builder/index.js";
4
+ export class ControllerMetadataUtil {
5
+ static setControllerMetadata(clazz, metaData) {
6
+ MetadataUtil.defineMetaData(CONTROLLER_META_DATA, metaData, clazz);
7
+ }
8
+ static getControllerMetadata(clazz) {
9
+ let metadata = MetadataUtil.getOwnMetaData(CONTROLLER_META_DATA, clazz);
10
+ if (metadata) {
11
+ return metadata;
12
+ }
13
+ metadata = ControllerMetaBuilderFactory.build(clazz);
14
+ if (metadata) {
15
+ ControllerMetadataUtil.setControllerMetadata(clazz, metadata);
16
+ }
17
+ return metadata;
18
+ }
19
+ }
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udHJvbGxlck1ldGFkYXRhVXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL0NvbnRyb2xsZXJNZXRhZGF0YVV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXJELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRW5FLE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLEtBQXdCLEVBQUUsUUFBNEI7UUFDakYsWUFBWSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxLQUF3QjtRQUNuRCxJQUFJLFFBQVEsR0FBbUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN4RyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2IsT0FBTyxRQUFRLENBQUM7UUFDbEIsQ0FBQztRQUNELFFBQVEsR0FBRyw0QkFBNEIsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckQsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLHNCQUFzQixDQUFDLHFCQUFxQixDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNoRSxDQUFDO1FBQ0QsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztDQUNGIn0=