@eggjs/controller-decorator 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 (63) hide show
  1. package/dist/builder/ControllerMetaBuilderFactory.d.ts +7 -0
  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.d.ts +1 -0
  6. package/dist/decorator/Acl.js +22 -0
  7. package/dist/decorator/Context.d.ts +1 -0
  8. package/dist/decorator/Context.js +11 -0
  9. package/dist/decorator/Middleware.d.ts +2 -0
  10. package/dist/decorator/Middleware.js +69 -0
  11. package/dist/decorator/http/HTTPController.d.ts +2 -0
  12. package/dist/decorator/http/HTTPController.js +29 -0
  13. package/dist/decorator/http/HTTPMethod.d.ts +2 -0
  14. package/dist/decorator/http/HTTPMethod.js +17 -0
  15. package/dist/decorator/http/HTTPParam.d.ts +8 -0
  16. package/dist/decorator/http/HTTPParam.js +75 -0
  17. package/dist/decorator/http/Host.d.ts +2 -0
  18. package/dist/decorator/http/Host.js +25 -0
  19. package/dist/decorator/http/index.d.ts +4 -0
  20. package/dist/decorator/http/index.js +5 -0
  21. package/dist/decorator/index.d.ts +4 -0
  22. package/dist/decorator/index.js +5 -0
  23. package/dist/impl/http/HTTPControllerMetaBuilder.d.ts +9 -0
  24. package/dist/impl/http/HTTPControllerMetaBuilder.js +57 -0
  25. package/dist/impl/http/HTTPControllerMethodMetaBuilder.d.ts +11 -0
  26. package/dist/impl/http/HTTPControllerMethodMetaBuilder.js +100 -0
  27. package/dist/impl/http/index.d.ts +2 -0
  28. package/dist/impl/http/index.js +3 -0
  29. package/dist/impl/index.d.ts +1 -0
  30. package/dist/impl/index.js +2 -0
  31. package/dist/index.d.ts +6 -248
  32. package/dist/index.js +7 -752
  33. package/dist/model/HTTPControllerMeta.d.ts +22 -0
  34. package/dist/model/HTTPControllerMeta.js +60 -0
  35. package/dist/model/HTTPCookies.d.ts +3 -0
  36. package/dist/model/HTTPCookies.js +4 -0
  37. package/dist/model/HTTPMethodMeta.d.ts +56 -0
  38. package/dist/model/HTTPMethodMeta.js +124 -0
  39. package/dist/model/HTTPRequest.d.ts +7 -0
  40. package/dist/model/HTTPRequest.js +3 -0
  41. package/dist/model/HTTPResponse.d.ts +10 -0
  42. package/dist/model/HTTPResponse.js +3 -0
  43. package/dist/model/index.d.ts +5 -0
  44. package/dist/model/index.js +6 -0
  45. package/dist/util/ControllerInfoUtil.d.ts +17 -0
  46. package/dist/util/ControllerInfoUtil.js +46 -0
  47. package/dist/util/ControllerMetadataUtil.d.ts +5 -0
  48. package/dist/util/ControllerMetadataUtil.js +20 -0
  49. package/dist/util/HTTPInfoUtil.d.ts +16 -0
  50. package/dist/util/HTTPInfoUtil.js +64 -0
  51. package/dist/util/HTTPPriorityUtil.d.ts +19 -0
  52. package/dist/util/HTTPPriorityUtil.js +42 -0
  53. package/dist/util/MethodInfoUtil.d.ts +20 -0
  54. package/dist/util/MethodInfoUtil.js +72 -0
  55. package/dist/util/index.d.ts +6 -0
  56. package/dist/util/index.js +7 -0
  57. package/dist/util/validator/ControllerValidator.d.ts +4 -0
  58. package/dist/util/validator/ControllerValidator.js +15 -0
  59. package/dist/util/validator/MethodValidator.d.ts +4 -0
  60. package/dist/util/validator/MethodValidator.js +31 -0
  61. package/dist/util/validator/index.d.ts +2 -0
  62. package/dist/util/validator/index.js +3 -0
  63. package/package.json +7 -7
@@ -0,0 +1,72 @@
1
+ import { MetadataUtil } from '@eggjs/core-decorator';
2
+ import { MapUtil } from '@eggjs/tegg-common-util';
3
+ import { METHOD_ACL, METHOD_AOP_MIDDLEWARES, METHOD_AOP_REGISTER_MAP, METHOD_CONTEXT_INDEX, METHOD_CONTROLLER_HOST, METHOD_CONTROLLER_TYPE_MAP, METHOD_MIDDLEWARES, } from '@eggjs/tegg-types';
4
+ export class MethodInfoUtil {
5
+ static setMethodControllerType(clazz, methodName, controllerType) {
6
+ const methodControllerMap = MetadataUtil.initOwnMapMetaData(METHOD_CONTROLLER_TYPE_MAP, clazz, new Map());
7
+ methodControllerMap.set(methodName, controllerType);
8
+ }
9
+ static getMethodControllerType(clazz, methodName) {
10
+ const methodControllerMap = MetadataUtil.getMetaData(METHOD_CONTROLLER_TYPE_MAP, clazz);
11
+ return methodControllerMap?.get(methodName);
12
+ }
13
+ static setMethodContextIndexInArgs(index, clazz, methodName) {
14
+ const methodContextIndexMap = MetadataUtil.initOwnMapMetaData(METHOD_CONTEXT_INDEX, clazz, new Map());
15
+ methodContextIndexMap.set(methodName, index);
16
+ }
17
+ static getMethodContextIndex(clazz, methodName) {
18
+ const methodContextIndexMap = MetadataUtil.getMetaData(METHOD_CONTEXT_INDEX, clazz);
19
+ return methodContextIndexMap?.get(methodName);
20
+ }
21
+ static addMethodMiddleware(middleware, clazz, methodName) {
22
+ const methodMiddlewareMap = MetadataUtil.initOwnMapMetaData(METHOD_MIDDLEWARES, clazz, new Map());
23
+ const methodMiddlewares = MapUtil.getOrStore(methodMiddlewareMap, methodName, []);
24
+ methodMiddlewares.push(middleware);
25
+ }
26
+ static getMethodMiddlewares(clazz, methodName) {
27
+ const methodMiddlewareMap = MetadataUtil.getMetaData(METHOD_MIDDLEWARES, clazz);
28
+ return methodMiddlewareMap?.get(methodName) || [];
29
+ }
30
+ static addMethodAopMiddleware(middleware, clazz, methodName) {
31
+ const methodMiddlewareMap = MetadataUtil.initOwnMapMetaData(METHOD_AOP_MIDDLEWARES, clazz, new Map());
32
+ const methodMiddlewares = MapUtil.getOrStore(methodMiddlewareMap, methodName, []);
33
+ methodMiddlewares.push(middleware);
34
+ }
35
+ static getMethodAopMiddlewares(clazz, methodName) {
36
+ const methodMiddlewareMap = MetadataUtil.getMetaData(METHOD_AOP_MIDDLEWARES, clazz);
37
+ return methodMiddlewareMap?.get(methodName) || [];
38
+ }
39
+ static setMethodAcl(code, clazz, methodName) {
40
+ const methodAclMap = MetadataUtil.initOwnMapMetaData(METHOD_ACL, clazz, new Map());
41
+ methodAclMap.set(methodName, code);
42
+ }
43
+ static hasMethodAcl(clazz, methodName) {
44
+ const methodAclMap = MetadataUtil.getMetaData(METHOD_ACL, clazz);
45
+ return !!methodAclMap?.has(methodName);
46
+ }
47
+ static getMethodAcl(clazz, methodName) {
48
+ const methodAclMap = MetadataUtil.getMetaData(METHOD_ACL, clazz);
49
+ return methodAclMap?.get(methodName);
50
+ }
51
+ static setMethodHosts(hosts, clazz, methodName) {
52
+ const methodControllerMap = MetadataUtil.initOwnMapMetaData(METHOD_CONTROLLER_HOST, clazz, new Map());
53
+ methodControllerMap.set(methodName, hosts);
54
+ }
55
+ static getMethodHosts(clazz, methodName) {
56
+ const methodControllerMap = MetadataUtil.getMetaData(METHOD_CONTROLLER_HOST, clazz);
57
+ return methodControllerMap?.get(methodName);
58
+ }
59
+ static getMethods(clazz) {
60
+ const methodControllerMap = MetadataUtil.getMetaData(METHOD_CONTROLLER_TYPE_MAP, clazz);
61
+ return Array.from(methodControllerMap?.keys() || []);
62
+ }
63
+ static shouldRegisterAopMiddlewarePointCut(clazz, methodName) {
64
+ const methodControllerMap = MetadataUtil.getMetaData(METHOD_AOP_REGISTER_MAP, clazz);
65
+ return !(methodControllerMap && methodControllerMap.get(methodName));
66
+ }
67
+ static registerAopMiddlewarePointcut(clazz, methodName) {
68
+ const methodControllerMap = MetadataUtil.initOwnMapMetaData(METHOD_AOP_REGISTER_MAP, clazz, new Map());
69
+ methodControllerMap.set(methodName, true);
70
+ }
71
+ }
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWV0aG9kSW5mb1V0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbC9NZXRob2RJbmZvVXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2xELE9BQU8sRUFFTCxVQUFVLEVBQUUsc0JBQXNCLEVBQUUsdUJBQXVCLEVBQzNELG9CQUFvQixFQUNwQixzQkFBc0IsRUFDdEIsMEJBQTBCLEVBQzFCLGtCQUFrQixHQUNuQixNQUFNLG1CQUFtQixDQUFDO0FBVTNCLE1BQU0sT0FBTyxjQUFjO0lBQ3pCLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxLQUF3QixFQUFFLFVBQWtCLEVBQUUsY0FBa0M7UUFDN0csTUFBTSxtQkFBbUIsR0FBZSxZQUFZLENBQUMsa0JBQWtCLENBQUMsMEJBQTBCLEVBQUUsS0FBSyxFQUFFLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQztRQUN0SCxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxNQUFNLENBQUMsdUJBQXVCLENBQUMsS0FBd0IsRUFBRSxVQUFrQjtRQUN6RSxNQUFNLG1CQUFtQixHQUEyQixZQUFZLENBQUMsV0FBVyxDQUFDLDBCQUEwQixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2hILE9BQU8sbUJBQW1CLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBbUMsQ0FBQztJQUNoRixDQUFDO0lBRUQsTUFBTSxDQUFDLDJCQUEyQixDQUFDLEtBQWEsRUFBRSxLQUF3QixFQUFFLFVBQWtCO1FBQzVGLE1BQU0scUJBQXFCLEdBQTBCLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxvQkFBb0IsRUFBRSxLQUFLLEVBQUUsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQzdILHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxLQUF3QixFQUFFLFVBQWtCO1FBQ3ZFLE1BQU0scUJBQXFCLEdBQXNDLFlBQVksQ0FBQyxXQUFXLENBQUMsb0JBQW9CLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdkgsT0FBTyxxQkFBcUIsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxVQUEwQixFQUFFLEtBQXdCLEVBQUUsVUFBa0I7UUFDakcsTUFBTSxtQkFBbUIsR0FBd0IsWUFBWSxDQUFDLGtCQUFrQixDQUFDLGtCQUFrQixFQUFFLEtBQUssRUFBRSxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDdkgsTUFBTSxpQkFBaUIsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNsRixpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxLQUF3QixFQUFFLFVBQWtCO1FBQ3RFLE1BQU0sbUJBQW1CLEdBQW9DLFlBQVksQ0FBQyxXQUFXLENBQUMsa0JBQWtCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDakgsT0FBTyxtQkFBbUIsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3BELENBQUM7SUFFRCxNQUFNLENBQUMsc0JBQXNCLENBQUMsVUFBc0MsRUFBRSxLQUF3QixFQUFFLFVBQWtCO1FBQ2hILE1BQU0sbUJBQW1CLEdBQTJCLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxzQkFBc0IsRUFBRSxLQUFLLEVBQUUsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQzlILE1BQU0saUJBQWlCLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsRUFBRSxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDbEYsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxNQUFNLENBQUMsdUJBQXVCLENBQUMsS0FBd0IsRUFBRSxVQUFrQjtRQUN6RSxNQUFNLG1CQUFtQixHQUF1QyxZQUFZLENBQUMsV0FBVyxDQUFDLHNCQUFzQixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3hILE9BQU8sbUJBQW1CLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNwRCxDQUFDO0lBRUQsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUF3QixFQUFFLEtBQXdCLEVBQUUsVUFBa0I7UUFDeEYsTUFBTSxZQUFZLEdBQWlCLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFFLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQztRQUNqRyxZQUFZLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUF3QixFQUFFLFVBQWtCO1FBQzlELE1BQU0sWUFBWSxHQUE2QixZQUFZLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMzRixPQUFPLENBQUMsQ0FBQyxZQUFZLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQXdCLEVBQUUsVUFBa0I7UUFDOUQsTUFBTSxZQUFZLEdBQTZCLFlBQVksQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzNGLE9BQU8sWUFBWSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFlLEVBQUUsS0FBd0IsRUFBRSxVQUFrQjtRQUNqRixNQUFNLG1CQUFtQixHQUFlLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxzQkFBc0IsRUFBRSxLQUFLLEVBQUUsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ2xILG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBd0IsRUFBRSxVQUFrQjtRQUNoRSxNQUFNLG1CQUFtQixHQUEyQixZQUFZLENBQUMsV0FBVyxDQUFDLHNCQUFzQixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVHLE9BQU8sbUJBQW1CLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBeUIsQ0FBQztJQUN0RSxDQUFDO0lBRUQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUF3QjtRQUN4QyxNQUFNLG1CQUFtQixHQUEyQixZQUFZLENBQUMsV0FBVyxDQUFDLDBCQUEwQixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2hILE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsTUFBTSxDQUFDLG1DQUFtQyxDQUFDLEtBQXdCLEVBQUUsVUFBa0I7UUFDckYsTUFBTSxtQkFBbUIsR0FBcUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyx1QkFBdUIsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN2SCxPQUFPLENBQUMsQ0FBQyxtQkFBbUIsSUFBSSxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQsTUFBTSxDQUFDLDZCQUE2QixDQUFDLEtBQXdCLEVBQUUsVUFBa0I7UUFDL0UsTUFBTSxtQkFBbUIsR0FBeUIsWUFBWSxDQUFDLGtCQUFrQixDQUFDLHVCQUF1QixFQUFFLEtBQUssRUFBRSxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDN0gsbUJBQW1CLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM1QyxDQUFDO0NBQ0YifQ==
@@ -0,0 +1,6 @@
1
+ export * from './validator/index.ts';
2
+ export * from './ControllerInfoUtil.ts';
3
+ export * from './ControllerMetadataUtil.ts';
4
+ export * from './HTTPInfoUtil.ts';
5
+ export * from './HTTPPriorityUtil.ts';
6
+ export * from './MethodInfoUtil.ts';
@@ -0,0 +1,7 @@
1
+ export * from "./validator/index.js";
2
+ export * from "./ControllerInfoUtil.js";
3
+ export * from "./ControllerMetadataUtil.js";
4
+ export * from "./HTTPInfoUtil.js";
5
+ export * from "./HTTPPriorityUtil.js";
6
+ export * from "./MethodInfoUtil.js";
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxxQkFBcUIsQ0FBQyJ9
@@ -0,0 +1,4 @@
1
+ import type { EggProtoImplClass } from '@eggjs/tegg-types';
2
+ export declare class ControllerValidator {
3
+ static validate(clazz: EggProtoImplClass): void;
4
+ }
@@ -0,0 +1,15 @@
1
+ import { ClassUtil } from '@eggjs/tegg-metadata';
2
+ import { ControllerInfoUtil } from "../ControllerInfoUtil.js";
3
+ export class ControllerValidator {
4
+ // should throw error
5
+ // 1. use controller middleware but not has controller decorator
6
+ static validate(clazz) {
7
+ const controllerType = ControllerInfoUtil.getControllerType(clazz);
8
+ const middlewares = ControllerInfoUtil.getControllerMiddlewares(clazz);
9
+ if (middlewares.length && !controllerType) {
10
+ const desc = ClassUtil.classDescription(clazz);
11
+ throw new Error(`${desc} @Middleware should use with controller decorator`);
12
+ }
13
+ }
14
+ }
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udHJvbGxlclZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlsL3ZhbGlkYXRvci9Db250cm9sbGVyVmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUU5RCxNQUFNLE9BQU8sbUJBQW1CO0lBQzlCLHFCQUFxQjtJQUNyQixnRUFBZ0U7SUFDaEUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUF3QjtRQUN0QyxNQUFNLGNBQWMsR0FBRyxrQkFBa0IsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuRSxNQUFNLFdBQVcsR0FBRyxrQkFBa0IsQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2RSxJQUFJLFdBQVcsQ0FBQyxNQUFNLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUMxQyxNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDL0MsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLElBQUksbURBQW1ELENBQUMsQ0FBQztRQUM5RSxDQUFDO0lBQ0gsQ0FBQztDQUNGIn0=
@@ -0,0 +1,4 @@
1
+ import type { EggProtoImplClass } from '@eggjs/tegg-types';
2
+ export declare class MethodValidator {
3
+ static validate(clazz: EggProtoImplClass, methodName: string): void;
4
+ }
@@ -0,0 +1,31 @@
1
+ import { ClassUtil } from '@eggjs/tegg-metadata';
2
+ import { MethodInfoUtil } from "../MethodInfoUtil.js";
3
+ import { ControllerInfoUtil } from "../ControllerInfoUtil.js";
4
+ export class MethodValidator {
5
+ // should throw error
6
+ // 1. use method middleware but not has method decorator
7
+ // 2. use context decorator but not has method decorator
8
+ // 3. method decorator type is not same as controller decorator type
9
+ static validate(clazz, methodName) {
10
+ const methodControllerType = MethodInfoUtil.getMethodControllerType(clazz, methodName);
11
+ const methodMiddlewares = MethodInfoUtil.getMethodMiddlewares(clazz, methodName);
12
+ const contextIndex = MethodInfoUtil.getMethodContextIndex(clazz, methodName);
13
+ if (!methodControllerType) {
14
+ if (methodMiddlewares.length) {
15
+ const desc = ClassUtil.classDescription(clazz);
16
+ throw new Error(`${desc}:${methodName} @Middleware should use with method decorator`);
17
+ }
18
+ if (contextIndex !== undefined) {
19
+ const desc = ClassUtil.classDescription(clazz);
20
+ throw new Error(`${desc}:${methodName} @Context should use with method decorator`);
21
+ }
22
+ return;
23
+ }
24
+ const controllerType = ControllerInfoUtil.getControllerType(clazz);
25
+ if (methodControllerType !== controllerType) {
26
+ const desc = ClassUtil.classDescription(clazz);
27
+ throw new Error(`${desc}:${methodName} method decorator ${methodControllerType} can not be used with ${controllerType}`);
28
+ }
29
+ }
30
+ }
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWV0aG9kVmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWwvdmFsaWRhdG9yL01ldGhvZFZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFakQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTlELE1BQU0sT0FBTyxlQUFlO0lBQzFCLHFCQUFxQjtJQUNyQix3REFBd0Q7SUFDeEQsd0RBQXdEO0lBQ3hELG9FQUFvRTtJQUNwRSxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQXdCLEVBQUUsVUFBa0I7UUFDMUQsTUFBTSxvQkFBb0IsR0FBRyxjQUFjLENBQUMsdUJBQXVCLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3ZGLE1BQU0saUJBQWlCLEdBQUcsY0FBYyxDQUFDLG9CQUFvQixDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNqRixNQUFNLFlBQVksR0FBRyxjQUFjLENBQUMscUJBQXFCLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzdFLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzFCLElBQUksaUJBQWlCLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQzdCLE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDL0MsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLElBQUksSUFBSSxVQUFVLCtDQUErQyxDQUFDLENBQUM7WUFDeEYsQ0FBQztZQUNELElBQUksWUFBWSxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUMvQixNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQy9DLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxJQUFJLElBQUksVUFBVSw0Q0FBNEMsQ0FBQyxDQUFDO1lBQ3JGLENBQUM7WUFDRCxPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sY0FBYyxHQUFHLGtCQUFrQixDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25FLElBQUksb0JBQW9CLEtBQUssY0FBYyxFQUFFLENBQUM7WUFDNUMsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQy9DLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxJQUFJLElBQUksVUFBVSxxQkFBcUIsb0JBQW9CLHlCQUF5QixjQUFjLEVBQUUsQ0FBQyxDQUFDO1FBQzNILENBQUM7SUFDSCxDQUFDO0NBQ0YifQ==
@@ -0,0 +1,2 @@
1
+ export * from './ControllerValidator.ts';
2
+ export * from './MethodValidator.ts';
@@ -0,0 +1,3 @@
1
+ export * from "./ControllerValidator.js";
2
+ export * from "./MethodValidator.js";
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbC92YWxpZGF0b3IvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLHNCQUFzQixDQUFDIn0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eggjs/controller-decorator",
3
- "version": "4.0.0-beta.8",
3
+ "version": "4.0.0-beta.9",
4
4
  "description": "tegg controller decorator",
5
5
  "keywords": [
6
6
  "egg",
@@ -35,11 +35,11 @@
35
35
  "@eggjs/cookies": "beta",
36
36
  "is-type-of": "^2.2.0",
37
37
  "path-to-regexp": "^1.9.0",
38
- "@eggjs/aop-decorator": "4.0.0-beta.8",
39
- "@eggjs/tegg-common-util": "4.0.0-beta.8",
40
- "@eggjs/tegg-metadata": "4.0.0-beta.8",
41
- "@eggjs/core-decorator": "4.0.0-beta.8",
42
- "@eggjs/tegg-types": "4.0.0-beta.8"
38
+ "@eggjs/aop-decorator": "4.0.0-beta.9",
39
+ "@eggjs/core-decorator": "4.0.0-beta.9",
40
+ "@eggjs/tegg-common-util": "4.0.0-beta.9",
41
+ "@eggjs/tegg-metadata": "4.0.0-beta.9",
42
+ "@eggjs/tegg-types": "4.0.0-beta.9"
43
43
  },
44
44
  "devDependencies": {
45
45
  "@types/node": "^22.10.5",
@@ -56,7 +56,7 @@
56
56
  "types": "./dist/index.d.ts",
57
57
  "scripts": {
58
58
  "clean": "rimraf dist",
59
- "build": "tsdown",
59
+ "build": "tsdown && rimraf dist && tsc -b --clean && tsc",
60
60
  "typecheck": "tsc --noEmit"
61
61
  }
62
62
  }