@eggjs/controller-decorator 4.0.0-beta.8 → 4.0.1-beta.0

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 (94) hide show
  1. package/README.md +1 -1
  2. package/dist/builder/ControllerMetaBuilderFactory.d.ts +11 -0
  3. package/dist/builder/ControllerMetaBuilderFactory.js +37 -0
  4. package/dist/builder/index.d.ts +1 -0
  5. package/dist/builder/index.js +3 -0
  6. package/dist/decorator/Acl.d.ts +4 -0
  7. package/dist/decorator/Acl.js +24 -0
  8. package/dist/decorator/Context.d.ts +4 -0
  9. package/dist/decorator/Context.js +16 -0
  10. package/dist/decorator/Middleware.d.ts +6 -0
  11. package/dist/decorator/Middleware.js +56 -0
  12. package/dist/decorator/http/HTTPController.d.ts +6 -0
  13. package/dist/decorator/http/HTTPController.js +24 -0
  14. package/dist/decorator/http/HTTPMethod.d.ts +6 -0
  15. package/dist/decorator/http/HTTPMethod.js +22 -0
  16. package/dist/decorator/http/HTTPParam.d.ts +159 -0
  17. package/dist/decorator/http/HTTPParam.js +223 -0
  18. package/dist/decorator/http/Host.d.ts +6 -0
  19. package/dist/decorator/http/Host.js +27 -0
  20. package/dist/decorator/http/index.d.ts +5 -0
  21. package/dist/decorator/http/index.js +7 -0
  22. package/dist/decorator/index.d.ts +14 -0
  23. package/dist/decorator/index.js +16 -0
  24. package/dist/decorator/mcp/Extra.d.ts +4 -0
  25. package/dist/decorator/mcp/Extra.js +13 -0
  26. package/dist/decorator/mcp/MCPController.d.ts +6 -0
  27. package/dist/decorator/mcp/MCPController.js +24 -0
  28. package/dist/decorator/mcp/MCPPrompt.d.ts +8 -0
  29. package/dist/decorator/mcp/MCPPrompt.js +31 -0
  30. package/dist/decorator/mcp/MCPResource.d.ts +6 -0
  31. package/dist/decorator/mcp/MCPResource.js +21 -0
  32. package/dist/decorator/mcp/MCPTool.d.ts +8 -0
  33. package/dist/decorator/mcp/MCPTool.js +31 -0
  34. package/dist/decorator/mcp/index.d.ts +5 -0
  35. package/dist/decorator/mcp/index.js +7 -0
  36. package/dist/impl/http/HTTPControllerMetaBuilder.d.ts +14 -0
  37. package/dist/impl/http/HTTPControllerMetaBuilder.js +60 -0
  38. package/dist/impl/http/HTTPControllerMethodMetaBuilder.d.ts +16 -0
  39. package/dist/impl/http/HTTPControllerMethodMetaBuilder.js +81 -0
  40. package/dist/impl/http/index.d.ts +2 -0
  41. package/dist/impl/http/index.js +4 -0
  42. package/dist/impl/index.d.ts +8 -0
  43. package/dist/impl/index.js +10 -0
  44. package/dist/impl/mcp/MCPControllerMetaBuilder.d.ts +15 -0
  45. package/dist/impl/mcp/MCPControllerMetaBuilder.js +67 -0
  46. package/dist/impl/mcp/MCPControllerPromptMetaBuilder.d.ts +13 -0
  47. package/dist/impl/mcp/MCPControllerPromptMetaBuilder.js +37 -0
  48. package/dist/impl/mcp/MCPControllerResourceMetaBuilder.d.ts +13 -0
  49. package/dist/impl/mcp/MCPControllerResourceMetaBuilder.js +35 -0
  50. package/dist/impl/mcp/MCPControllerToolMetaBuilder.d.ts +13 -0
  51. package/dist/impl/mcp/MCPControllerToolMetaBuilder.js +37 -0
  52. package/dist/impl/mcp/index.d.ts +4 -0
  53. package/dist/impl/mcp/index.js +6 -0
  54. package/dist/index.d.ts +41 -247
  55. package/dist/index.js +41 -749
  56. package/dist/model/HTTPControllerMeta.d.ts +27 -0
  57. package/dist/model/HTTPControllerMeta.js +58 -0
  58. package/dist/model/HTTPCookies.d.ts +2 -0
  59. package/dist/model/HTTPCookies.js +3 -0
  60. package/dist/model/HTTPMethodMeta.d.ts +60 -0
  61. package/dist/model/HTTPMethodMeta.js +104 -0
  62. package/dist/model/HTTPResponse.d.ts +7 -0
  63. package/dist/model/HTTPResponse.js +6 -0
  64. package/dist/model/MCPControllerMeta.d.ts +29 -0
  65. package/dist/model/MCPControllerMeta.js +51 -0
  66. package/dist/model/MCPPromptMeta.d.ts +28 -0
  67. package/dist/model/MCPPromptMeta.js +26 -0
  68. package/dist/model/MCPResourceMeta.d.ts +28 -0
  69. package/dist/model/MCPResourceMeta.js +28 -0
  70. package/dist/model/MCPToolMeta.d.ts +26 -0
  71. package/dist/model/MCPToolMeta.js +24 -0
  72. package/dist/model/index.d.ts +8 -0
  73. package/dist/model/index.js +10 -0
  74. package/dist/util/ControllerInfoUtil.d.ts +22 -0
  75. package/dist/util/ControllerInfoUtil.js +54 -0
  76. package/dist/util/ControllerMetadataUtil.d.ts +9 -0
  77. package/dist/util/ControllerMetadataUtil.js +21 -0
  78. package/dist/util/HTTPInfoUtil.d.ts +20 -0
  79. package/dist/util/HTTPInfoUtil.js +53 -0
  80. package/dist/util/HTTPPriorityUtil.d.ts +23 -0
  81. package/dist/util/HTTPPriorityUtil.js +39 -0
  82. package/dist/util/MCPInfoUtil.d.ts +52 -0
  83. package/dist/util/MCPInfoUtil.js +87 -0
  84. package/dist/util/MethodInfoUtil.d.ts +25 -0
  85. package/dist/util/MethodInfoUtil.js +68 -0
  86. package/dist/util/index.d.ts +9 -0
  87. package/dist/util/index.js +11 -0
  88. package/dist/util/validator/ControllerValidator.d.ts +8 -0
  89. package/dist/util/validator/ControllerValidator.js +16 -0
  90. package/dist/util/validator/MethodValidator.d.ts +8 -0
  91. package/dist/util/validator/MethodValidator.js +31 -0
  92. package/dist/util/validator/index.d.ts +2 -0
  93. package/dist/util/validator/index.js +4 -0
  94. package/package.json +36 -39
@@ -0,0 +1,20 @@
1
+ import { EggProtoImplClass, HTTPMethodEnum, HTTPParamType } from "@eggjs/tegg-types";
2
+
3
+ //#region src/util/HTTPInfoUtil.d.ts
4
+ declare class HTTPInfoUtil {
5
+ static setHTTPPath(path: string, clazz: EggProtoImplClass): void;
6
+ static getHTTPPath(clazz: EggProtoImplClass): string | undefined;
7
+ static setHTTPMethodPath(path: string, clazz: EggProtoImplClass, methodName: string): void;
8
+ static getHTTPMethodPath(clazz: EggProtoImplClass, methodName: string): string | undefined;
9
+ static setHTTPMethodMethod(method: HTTPMethodEnum, clazz: EggProtoImplClass, methodName: string): void;
10
+ static getHTTPMethodMethod(clazz: EggProtoImplClass, methodName: string): HTTPMethodEnum | undefined;
11
+ static setHTTPMethodParamType(paramType: HTTPParamType, parameterIndex: number, clazz: EggProtoImplClass, methodName: string): void;
12
+ static getParamIndexList(clazz: EggProtoImplClass, methodName: string): number[];
13
+ static getHTTPMethodParamType(parameterIndex: number, clazz: EggProtoImplClass, methodName: string): HTTPParamType | undefined;
14
+ static setHTTPMethodParamName(paramName: string, parameterIndex: number, clazz: EggProtoImplClass, methodName: string): void;
15
+ static getHTTPMethodParamName(parameterIndex: number, clazz: EggProtoImplClass, methodName: string): string | undefined;
16
+ static getHTTPMethodPriority(clazz: EggProtoImplClass, methodName: string): number | undefined;
17
+ static setHTTPMethodPriority(priority: number, clazz: EggProtoImplClass, methodName: string): void;
18
+ }
19
+ //#endregion
20
+ export { HTTPInfoUtil };
@@ -0,0 +1,53 @@
1
+ import { MetadataUtil } from "@eggjs/core-decorator";
2
+ import { CONTROLLER_HTTP_PATH, CONTROLLER_METHOD_METHOD_MAP, CONTROLLER_METHOD_PARAM_NAME_MAP, CONTROLLER_METHOD_PARAM_TYPE_MAP, CONTROLLER_METHOD_PATH_MAP, CONTROLLER_METHOD_PRIORITY } from "@eggjs/tegg-types";
3
+ import { MapUtil } from "@eggjs/tegg-common-util";
4
+
5
+ //#region src/util/HTTPInfoUtil.ts
6
+ var HTTPInfoUtil = class {
7
+ static setHTTPPath(path, clazz) {
8
+ MetadataUtil.defineMetaData(CONTROLLER_HTTP_PATH, path, clazz);
9
+ }
10
+ static getHTTPPath(clazz) {
11
+ return MetadataUtil.getMetaData(CONTROLLER_HTTP_PATH, clazz);
12
+ }
13
+ static setHTTPMethodPath(path, clazz, methodName) {
14
+ MetadataUtil.initOwnMapMetaData(CONTROLLER_METHOD_PATH_MAP, clazz, /* @__PURE__ */ new Map()).set(methodName, path);
15
+ }
16
+ static getHTTPMethodPath(clazz, methodName) {
17
+ return MetadataUtil.getMetaData(CONTROLLER_METHOD_PATH_MAP, clazz)?.get(methodName);
18
+ }
19
+ static setHTTPMethodMethod(method, clazz, methodName) {
20
+ MetadataUtil.initOwnMapMetaData(CONTROLLER_METHOD_METHOD_MAP, clazz, /* @__PURE__ */ new Map()).set(methodName, method);
21
+ }
22
+ static getHTTPMethodMethod(clazz, methodName) {
23
+ return MetadataUtil.getMetaData(CONTROLLER_METHOD_METHOD_MAP, clazz)?.get(methodName);
24
+ }
25
+ static setHTTPMethodParamType(paramType, parameterIndex, clazz, methodName) {
26
+ const methodParamMap = MetadataUtil.initOwnMapMetaData(CONTROLLER_METHOD_PARAM_TYPE_MAP, clazz, /* @__PURE__ */ new Map());
27
+ MapUtil.getOrStore(methodParamMap, methodName, /* @__PURE__ */ new Map()).set(parameterIndex, paramType);
28
+ }
29
+ static getParamIndexList(clazz, methodName) {
30
+ const paramMap = MetadataUtil.getMetaData(CONTROLLER_METHOD_PARAM_TYPE_MAP, clazz)?.get(methodName);
31
+ if (!paramMap) return [];
32
+ return Array.from(paramMap.keys());
33
+ }
34
+ static getHTTPMethodParamType(parameterIndex, clazz, methodName) {
35
+ return (MetadataUtil.getMetaData(CONTROLLER_METHOD_PARAM_TYPE_MAP, clazz)?.get(methodName))?.get(parameterIndex);
36
+ }
37
+ static setHTTPMethodParamName(paramName, parameterIndex, clazz, methodName) {
38
+ const methodParamNameMap = MetadataUtil.initOwnMapMetaData(CONTROLLER_METHOD_PARAM_NAME_MAP, clazz, /* @__PURE__ */ new Map());
39
+ MapUtil.getOrStore(methodParamNameMap, methodName, /* @__PURE__ */ new Map()).set(parameterIndex, paramName);
40
+ }
41
+ static getHTTPMethodParamName(parameterIndex, clazz, methodName) {
42
+ return (MetadataUtil.getMetaData(CONTROLLER_METHOD_PARAM_NAME_MAP, clazz)?.get(methodName))?.get(parameterIndex);
43
+ }
44
+ static getHTTPMethodPriority(clazz, methodName) {
45
+ return MetadataUtil.getMetaData(CONTROLLER_METHOD_PRIORITY, clazz)?.get(methodName);
46
+ }
47
+ static setHTTPMethodPriority(priority, clazz, methodName) {
48
+ MetadataUtil.initOwnMapMetaData(CONTROLLER_METHOD_PRIORITY, clazz, /* @__PURE__ */ new Map()).set(methodName, priority);
49
+ }
50
+ };
51
+
52
+ //#endregion
53
+ export { HTTPInfoUtil };
@@ -0,0 +1,23 @@
1
+ //#region src/util/HTTPPriorityUtil.d.ts
2
+ declare class HTTPPriorityUtil {
3
+ static readonly DEFAULT_PRIORITY = 1e5;
4
+ private static readonly TOKEN_PRIORITY;
5
+ /**
6
+ * | Path | RegExp index | priority |
7
+ * | --- | --- | --- |
8
+ * | /* | [0] | 0 |
9
+ * | /hello/:name | [1] | 1000 |
10
+ * | /hello/world/message/:message | [3] | 3000 |
11
+ * | /hello/:name/message/:message | [1, 3] | 4000 |
12
+ * | /hello/world | [] | 100000/Infinity? |
13
+ *
14
+ * priority = hasRegExp
15
+ * : regexpIndex.reduce((p,c) => p + c * 1000, 0)
16
+ * : 100000;
17
+ * @param {string} path - path to calculate priority
18
+ * @returns {number} priority
19
+ */
20
+ static calcPathPriority(path: string): number;
21
+ }
22
+ //#endregion
23
+ export { HTTPPriorityUtil };
@@ -0,0 +1,39 @@
1
+ import { parse } from "path-to-regexp";
2
+
3
+ //#region src/util/HTTPPriorityUtil.ts
4
+ var HTTPPriorityUtil = class {
5
+ static DEFAULT_PRIORITY = 1e5;
6
+ static TOKEN_PRIORITY = 1e3;
7
+ /**
8
+ * | Path | RegExp index | priority |
9
+ * | --- | --- | --- |
10
+ * | /* | [0] | 0 |
11
+ * | /hello/:name | [1] | 1000 |
12
+ * | /hello/world/message/:message | [3] | 3000 |
13
+ * | /hello/:name/message/:message | [1, 3] | 4000 |
14
+ * | /hello/world | [] | 100000/Infinity? |
15
+ *
16
+ * priority = hasRegExp
17
+ * : regexpIndex.reduce((p,c) => p + c * 1000, 0)
18
+ * : 100000;
19
+ * @param {string} path - path to calculate priority
20
+ * @returns {number} priority
21
+ */
22
+ static calcPathPriority(path) {
23
+ const tokens = parse(path);
24
+ let priority = 0;
25
+ let hasRegExp = false;
26
+ let index = 0;
27
+ let token;
28
+ while (token = tokens.shift()) if (typeof token === "string") index += token.split("/").length - 1;
29
+ else {
30
+ hasRegExp = true;
31
+ priority += index++ * this.TOKEN_PRIORITY;
32
+ }
33
+ if (!hasRegExp) return this.DEFAULT_PRIORITY;
34
+ return priority;
35
+ }
36
+ };
37
+
38
+ //#endregion
39
+ export { HTTPPriorityUtil };
@@ -0,0 +1,52 @@
1
+ import { EggProtoImplClass, MCPControllerParams, MCPPromptParams, MCPResourceParams, MCPToolParams } from "@eggjs/tegg-types";
2
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
+
4
+ //#region src/util/MCPInfoUtil.d.ts
5
+ interface ToolArgsSchemaDetail {
6
+ argsSchema: Parameters<McpServer["tool"]>["2"];
7
+ index: number;
8
+ }
9
+ interface PromptArgsSchemaDetail {
10
+ argsSchema: Parameters<McpServer["prompt"]>["2"];
11
+ index: number;
12
+ }
13
+ declare class MCPInfoUtil {
14
+ static setMCPName(name: string, clazz: EggProtoImplClass): void;
15
+ static getMCPName(clazz: EggProtoImplClass): string | undefined;
16
+ static setMCPVersion(version: string, clazz: EggProtoImplClass): void;
17
+ static getMCPVersion(clazz: EggProtoImplClass): string | undefined;
18
+ static setMCPControllerParams(params: MCPControllerParams | undefined, clazz: EggProtoImplClass): void;
19
+ static getMCPControllerParams(clazz: EggProtoImplClass): MCPControllerParams | undefined;
20
+ static setMCPResource(clazz: EggProtoImplClass, methodName: string): void;
21
+ static getMCPResource(clazz: EggProtoImplClass): string[];
22
+ static setMCPResourceParams(params: MCPResourceParams & {
23
+ mcpName?: string;
24
+ }, clazz: EggProtoImplClass, resourceName: string): void;
25
+ static getMCPResourceParams(clazz: EggProtoImplClass, resourceName: string): (MCPResourceParams & {
26
+ mcpName?: string;
27
+ }) | undefined;
28
+ static setMCPTool(clazz: EggProtoImplClass, methodName: string): void;
29
+ static getMCPTool(clazz: EggProtoImplClass): string[];
30
+ static getMCPToolParams(clazz: EggProtoImplClass, resourceName: string): (MCPToolParams & {
31
+ mcpName?: string;
32
+ }) | undefined;
33
+ static setMCPToolParams(params: MCPToolParams & {
34
+ mcpName?: string;
35
+ }, clazz: EggProtoImplClass, resourceName: string): void;
36
+ static setMCPPrompt(clazz: EggProtoImplClass, methodName: string): void;
37
+ static getMCPPrompt(clazz: EggProtoImplClass): string[];
38
+ static setMCPPromptParams(params: MCPPromptParams & {
39
+ mcpName?: string;
40
+ }, clazz: EggProtoImplClass, resourceName: string): void;
41
+ static getMCPPromptParams(clazz: EggProtoImplClass, resourceName: string): (MCPPromptParams & {
42
+ mcpName?: string;
43
+ }) | undefined;
44
+ static setMCPToolArgsInArgs(detail: ToolArgsSchemaDetail, clazz: EggProtoImplClass, methodName: string): void;
45
+ static getMCPToolArgsIndex(clazz: EggProtoImplClass, methodName: string): ToolArgsSchemaDetail | undefined;
46
+ static setMCPExtra(index: number, clazz: EggProtoImplClass, methodName: string): void;
47
+ static getMCPExtra(clazz: EggProtoImplClass, methodName: string): number | undefined;
48
+ static setMCPPromptArgsInArgs(detail: PromptArgsSchemaDetail, clazz: EggProtoImplClass, methodName: string): void;
49
+ static getMCPPromptArgsIndex(clazz: EggProtoImplClass, methodName: string): PromptArgsSchemaDetail | undefined;
50
+ }
51
+ //#endregion
52
+ export { MCPInfoUtil, PromptArgsSchemaDetail, ToolArgsSchemaDetail };
@@ -0,0 +1,87 @@
1
+ import { MetadataUtil } from "@eggjs/core-decorator";
2
+ import { CONTROLLER_MCP_CONTROLLER_PARAMS_MAP, CONTROLLER_MCP_EXTRA_INDEX, CONTROLLER_MCP_NAME, CONTROLLER_MCP_PROMPT_ARGS_INDEX, CONTROLLER_MCP_PROMPT_MAP, CONTROLLER_MCP_PROMPT_PARAMS_MAP, CONTROLLER_MCP_RESOURCE_MAP, CONTROLLER_MCP_RESOURCE_PARAMS_MAP, CONTROLLER_MCP_TOOL_ARGS_INDEX, CONTROLLER_MCP_TOOL_MAP, CONTROLLER_MCP_TOOL_PARAMS_MAP, CONTROLLER_MCP_VERSION } from "@eggjs/tegg-types";
3
+
4
+ //#region src/util/MCPInfoUtil.ts
5
+ var MCPInfoUtil = class {
6
+ static setMCPName(name, clazz) {
7
+ MetadataUtil.defineMetaData(CONTROLLER_MCP_NAME, name, clazz);
8
+ }
9
+ static getMCPName(clazz) {
10
+ return MetadataUtil.getMetaData(CONTROLLER_MCP_NAME, clazz);
11
+ }
12
+ static setMCPVersion(version, clazz) {
13
+ MetadataUtil.defineMetaData(CONTROLLER_MCP_VERSION, version, clazz);
14
+ }
15
+ static getMCPVersion(clazz) {
16
+ return MetadataUtil.getMetaData(CONTROLLER_MCP_VERSION, clazz);
17
+ }
18
+ static setMCPControllerParams(params, clazz) {
19
+ MetadataUtil.defineMetaData(CONTROLLER_MCP_CONTROLLER_PARAMS_MAP, params, clazz);
20
+ }
21
+ static getMCPControllerParams(clazz) {
22
+ return MetadataUtil.getMetaData(CONTROLLER_MCP_CONTROLLER_PARAMS_MAP, clazz);
23
+ }
24
+ static setMCPResource(clazz, methodName) {
25
+ MetadataUtil.initOwnMapMetaData(CONTROLLER_MCP_RESOURCE_MAP, clazz, /* @__PURE__ */ new Map()).set(methodName, true);
26
+ }
27
+ static getMCPResource(clazz) {
28
+ const methodMap = MetadataUtil.getMetaData(CONTROLLER_MCP_RESOURCE_MAP, clazz);
29
+ if (!methodMap) return [];
30
+ return Array.from(methodMap.keys());
31
+ }
32
+ static setMCPResourceParams(params, clazz, resourceName) {
33
+ MetadataUtil.initOwnMapMetaData(CONTROLLER_MCP_RESOURCE_PARAMS_MAP, clazz, /* @__PURE__ */ new Map()).set(resourceName, params);
34
+ }
35
+ static getMCPResourceParams(clazz, resourceName) {
36
+ return MetadataUtil.getMetaData(CONTROLLER_MCP_RESOURCE_PARAMS_MAP, clazz)?.get(resourceName);
37
+ }
38
+ static setMCPTool(clazz, methodName) {
39
+ MetadataUtil.initOwnMapMetaData(CONTROLLER_MCP_TOOL_MAP, clazz, /* @__PURE__ */ new Map()).set(methodName, true);
40
+ }
41
+ static getMCPTool(clazz) {
42
+ const methodMap = MetadataUtil.getMetaData(CONTROLLER_MCP_TOOL_MAP, clazz);
43
+ if (!methodMap) return [];
44
+ return Array.from(methodMap.keys());
45
+ }
46
+ static getMCPToolParams(clazz, resourceName) {
47
+ return MetadataUtil.getMetaData(CONTROLLER_MCP_TOOL_PARAMS_MAP, clazz)?.get(resourceName);
48
+ }
49
+ static setMCPToolParams(params, clazz, resourceName) {
50
+ MetadataUtil.initOwnMapMetaData(CONTROLLER_MCP_TOOL_PARAMS_MAP, clazz, /* @__PURE__ */ new Map()).set(resourceName, params);
51
+ }
52
+ static setMCPPrompt(clazz, methodName) {
53
+ MetadataUtil.initOwnMapMetaData(CONTROLLER_MCP_PROMPT_MAP, clazz, /* @__PURE__ */ new Map()).set(methodName, true);
54
+ }
55
+ static getMCPPrompt(clazz) {
56
+ const methodMap = MetadataUtil.getMetaData(CONTROLLER_MCP_PROMPT_MAP, clazz);
57
+ if (!methodMap) return [];
58
+ return Array.from(methodMap.keys());
59
+ }
60
+ static setMCPPromptParams(params, clazz, resourceName) {
61
+ MetadataUtil.initOwnMapMetaData(CONTROLLER_MCP_PROMPT_PARAMS_MAP, clazz, /* @__PURE__ */ new Map()).set(resourceName, params);
62
+ }
63
+ static getMCPPromptParams(clazz, resourceName) {
64
+ return MetadataUtil.getMetaData(CONTROLLER_MCP_PROMPT_PARAMS_MAP, clazz)?.get(resourceName);
65
+ }
66
+ static setMCPToolArgsInArgs(detail, clazz, methodName) {
67
+ MetadataUtil.initOwnMapMetaData(CONTROLLER_MCP_TOOL_ARGS_INDEX, clazz, /* @__PURE__ */ new Map()).set(methodName, detail);
68
+ }
69
+ static getMCPToolArgsIndex(clazz, methodName) {
70
+ return MetadataUtil.getMetaData(CONTROLLER_MCP_TOOL_ARGS_INDEX, clazz)?.get(methodName);
71
+ }
72
+ static setMCPExtra(index, clazz, methodName) {
73
+ MetadataUtil.initOwnMapMetaData(CONTROLLER_MCP_EXTRA_INDEX, clazz, /* @__PURE__ */ new Map()).set(methodName, index);
74
+ }
75
+ static getMCPExtra(clazz, methodName) {
76
+ return MetadataUtil.getMetaData(CONTROLLER_MCP_EXTRA_INDEX, clazz)?.get(methodName);
77
+ }
78
+ static setMCPPromptArgsInArgs(detail, clazz, methodName) {
79
+ MetadataUtil.initOwnMapMetaData(CONTROLLER_MCP_PROMPT_ARGS_INDEX, clazz, /* @__PURE__ */ new Map()).set(methodName, detail);
80
+ }
81
+ static getMCPPromptArgsIndex(clazz, methodName) {
82
+ return MetadataUtil.getMetaData(CONTROLLER_MCP_PROMPT_ARGS_INDEX, clazz)?.get(methodName);
83
+ }
84
+ };
85
+
86
+ //#endregion
87
+ export { MCPInfoUtil };
@@ -0,0 +1,25 @@
1
+ import { ControllerTypeLike, EggProtoImplClass, IAdvice, MiddlewareFunc } from "@eggjs/tegg-types";
2
+
3
+ //#region src/util/MethodInfoUtil.d.ts
4
+ declare class MethodInfoUtil {
5
+ static setMethodControllerType(clazz: EggProtoImplClass, methodName: string, controllerType: ControllerTypeLike): void;
6
+ static getMethodControllerType(clazz: EggProtoImplClass, methodName: string): ControllerTypeLike | undefined;
7
+ static setMethodContextIndexInArgs(index: number, clazz: EggProtoImplClass, methodName: string): void;
8
+ static getMethodContextIndex(clazz: EggProtoImplClass, methodName: string): number | undefined;
9
+ static addMethodMiddleware(middleware: MiddlewareFunc, clazz: EggProtoImplClass, methodName: string): void;
10
+ static getMethodMiddlewares(clazz: EggProtoImplClass, methodName: string): MiddlewareFunc[];
11
+ static addMethodAopMiddleware(middleware: EggProtoImplClass<IAdvice>, clazz: EggProtoImplClass, methodName: string): void;
12
+ static getMethodAopMiddlewares(clazz: EggProtoImplClass, methodName: string): EggProtoImplClass<IAdvice>[];
13
+ static setMethodAcl(code: string | undefined, clazz: EggProtoImplClass, methodName: string): void;
14
+ static hasMethodAcl(clazz: EggProtoImplClass, methodName: string): boolean;
15
+ static getMethodAcl(clazz: EggProtoImplClass, methodName: string): string | undefined;
16
+ static setMethodHosts(hosts: string[], clazz: EggProtoImplClass, methodName: string): void;
17
+ static getMethodHosts(clazz: EggProtoImplClass, methodName: string): string[] | undefined;
18
+ static getMethods(clazz: EggProtoImplClass): string[];
19
+ static shouldRegisterAopMiddlewarePointCut(clazz: EggProtoImplClass, methodName: string): boolean;
20
+ static registerAopMiddlewarePointcut(clazz: EggProtoImplClass, methodName: string): void;
21
+ static setMethodTimeout(timeout: number, clazz: EggProtoImplClass, methodName: string): void;
22
+ static getMethodTimeout(clazz: EggProtoImplClass, methodName: string): number | undefined;
23
+ }
24
+ //#endregion
25
+ export { MethodInfoUtil };
@@ -0,0 +1,68 @@
1
+ import { MetadataUtil } from "@eggjs/core-decorator";
2
+ import { METHOD_ACL, METHOD_AOP_MIDDLEWARES, METHOD_AOP_REGISTER_MAP, METHOD_CONTEXT_INDEX, METHOD_CONTROLLER_HOST, METHOD_CONTROLLER_TYPE_MAP, METHOD_MIDDLEWARES, METHOD_TIMEOUT_METADATA } from "@eggjs/tegg-types";
3
+ import { MapUtil } from "@eggjs/tegg-common-util";
4
+
5
+ //#region src/util/MethodInfoUtil.ts
6
+ var MethodInfoUtil = class {
7
+ static setMethodControllerType(clazz, methodName, controllerType) {
8
+ MetadataUtil.initOwnMapMetaData(METHOD_CONTROLLER_TYPE_MAP, clazz, /* @__PURE__ */ new Map()).set(methodName, controllerType);
9
+ }
10
+ static getMethodControllerType(clazz, methodName) {
11
+ return MetadataUtil.getMetaData(METHOD_CONTROLLER_TYPE_MAP, clazz)?.get(methodName);
12
+ }
13
+ static setMethodContextIndexInArgs(index, clazz, methodName) {
14
+ MetadataUtil.initOwnMapMetaData(METHOD_CONTEXT_INDEX, clazz, /* @__PURE__ */ new Map()).set(methodName, index);
15
+ }
16
+ static getMethodContextIndex(clazz, methodName) {
17
+ return MetadataUtil.getMetaData(METHOD_CONTEXT_INDEX, clazz)?.get(methodName);
18
+ }
19
+ static addMethodMiddleware(middleware, clazz, methodName) {
20
+ const methodMiddlewareMap = MetadataUtil.initOwnMapMetaData(METHOD_MIDDLEWARES, clazz, /* @__PURE__ */ new Map());
21
+ MapUtil.getOrStore(methodMiddlewareMap, methodName, []).push(middleware);
22
+ }
23
+ static getMethodMiddlewares(clazz, methodName) {
24
+ return MetadataUtil.getMetaData(METHOD_MIDDLEWARES, clazz)?.get(methodName) || [];
25
+ }
26
+ static addMethodAopMiddleware(middleware, clazz, methodName) {
27
+ const methodMiddlewareMap = MetadataUtil.initOwnMapMetaData(METHOD_AOP_MIDDLEWARES, clazz, /* @__PURE__ */ new Map());
28
+ MapUtil.getOrStore(methodMiddlewareMap, methodName, []).push(middleware);
29
+ }
30
+ static getMethodAopMiddlewares(clazz, methodName) {
31
+ return MetadataUtil.getMetaData(METHOD_AOP_MIDDLEWARES, clazz)?.get(methodName) || [];
32
+ }
33
+ static setMethodAcl(code, clazz, methodName) {
34
+ MetadataUtil.initOwnMapMetaData(METHOD_ACL, clazz, /* @__PURE__ */ new Map()).set(methodName, code);
35
+ }
36
+ static hasMethodAcl(clazz, methodName) {
37
+ return !!MetadataUtil.getMetaData(METHOD_ACL, clazz)?.has(methodName);
38
+ }
39
+ static getMethodAcl(clazz, methodName) {
40
+ return MetadataUtil.getMetaData(METHOD_ACL, clazz)?.get(methodName);
41
+ }
42
+ static setMethodHosts(hosts, clazz, methodName) {
43
+ MetadataUtil.initOwnMapMetaData(METHOD_CONTROLLER_HOST, clazz, /* @__PURE__ */ new Map()).set(methodName, hosts);
44
+ }
45
+ static getMethodHosts(clazz, methodName) {
46
+ return MetadataUtil.getMetaData(METHOD_CONTROLLER_HOST, clazz)?.get(methodName);
47
+ }
48
+ static getMethods(clazz) {
49
+ const methodControllerMap = MetadataUtil.getMetaData(METHOD_CONTROLLER_TYPE_MAP, clazz);
50
+ return Array.from(methodControllerMap?.keys() || []);
51
+ }
52
+ static shouldRegisterAopMiddlewarePointCut(clazz, methodName) {
53
+ const methodControllerMap = MetadataUtil.getMetaData(METHOD_AOP_REGISTER_MAP, clazz);
54
+ return !(methodControllerMap && methodControllerMap.get(methodName));
55
+ }
56
+ static registerAopMiddlewarePointcut(clazz, methodName) {
57
+ MetadataUtil.initOwnMapMetaData(METHOD_AOP_REGISTER_MAP, clazz, /* @__PURE__ */ new Map()).set(methodName, true);
58
+ }
59
+ static setMethodTimeout(timeout, clazz, methodName) {
60
+ MetadataUtil.initOwnMapMetaData(METHOD_TIMEOUT_METADATA, clazz, /* @__PURE__ */ new Map()).set(methodName, timeout);
61
+ }
62
+ static getMethodTimeout(clazz, methodName) {
63
+ return MetadataUtil.getMetaData(METHOD_TIMEOUT_METADATA, clazz)?.get(methodName);
64
+ }
65
+ };
66
+
67
+ //#endregion
68
+ export { MethodInfoUtil };
@@ -0,0 +1,9 @@
1
+ import { MCPInfoUtil, PromptArgsSchemaDetail, ToolArgsSchemaDetail } from "./MCPInfoUtil.js";
2
+ import { ControllerValidator } from "./validator/ControllerValidator.js";
3
+ import { MethodValidator } from "./validator/MethodValidator.js";
4
+ import "./validator/index.js";
5
+ import { ControllerInfoUtil } from "./ControllerInfoUtil.js";
6
+ import { ControllerMetadataUtil } from "./ControllerMetadataUtil.js";
7
+ import { HTTPInfoUtil } from "./HTTPInfoUtil.js";
8
+ import { HTTPPriorityUtil } from "./HTTPPriorityUtil.js";
9
+ import { MethodInfoUtil } from "./MethodInfoUtil.js";
@@ -0,0 +1,11 @@
1
+ import { ControllerInfoUtil } from "./ControllerInfoUtil.js";
2
+ import { ControllerValidator } from "./validator/ControllerValidator.js";
3
+ import { MethodInfoUtil } from "./MethodInfoUtil.js";
4
+ import { MethodValidator } from "./validator/MethodValidator.js";
5
+ import "./validator/index.js";
6
+ import { ControllerMetadataUtil } from "./ControllerMetadataUtil.js";
7
+ import { HTTPInfoUtil } from "./HTTPInfoUtil.js";
8
+ import { HTTPPriorityUtil } from "./HTTPPriorityUtil.js";
9
+ import { MCPInfoUtil } from "./MCPInfoUtil.js";
10
+
11
+ export { };
@@ -0,0 +1,8 @@
1
+ import { EggProtoImplClass } from "@eggjs/tegg-types";
2
+
3
+ //#region src/util/validator/ControllerValidator.d.ts
4
+ declare class ControllerValidator {
5
+ static validate(clazz: EggProtoImplClass): void;
6
+ }
7
+ //#endregion
8
+ export { ControllerValidator };
@@ -0,0 +1,16 @@
1
+ import { ControllerInfoUtil } from "../ControllerInfoUtil.js";
2
+ import { ClassUtil } from "@eggjs/metadata";
3
+
4
+ //#region src/util/validator/ControllerValidator.ts
5
+ var ControllerValidator = class {
6
+ static validate(clazz) {
7
+ const controllerType = ControllerInfoUtil.getControllerType(clazz);
8
+ if (ControllerInfoUtil.getControllerMiddlewares(clazz).length && !controllerType) {
9
+ const desc = ClassUtil.classDescription(clazz);
10
+ throw new Error(`${desc} @Middleware should use with controller decorator`);
11
+ }
12
+ }
13
+ };
14
+
15
+ //#endregion
16
+ export { ControllerValidator };
@@ -0,0 +1,8 @@
1
+ import { EggProtoImplClass } from "@eggjs/tegg-types";
2
+
3
+ //#region src/util/validator/MethodValidator.d.ts
4
+ declare class MethodValidator {
5
+ static validate(clazz: EggProtoImplClass, methodName: string): void;
6
+ }
7
+ //#endregion
8
+ export { MethodValidator };
@@ -0,0 +1,31 @@
1
+ import { ControllerInfoUtil } from "../ControllerInfoUtil.js";
2
+ import { MethodInfoUtil } from "../MethodInfoUtil.js";
3
+ import { ClassUtil } from "@eggjs/metadata";
4
+
5
+ //#region src/util/validator/MethodValidator.ts
6
+ var MethodValidator = class {
7
+ static validate(clazz, methodName) {
8
+ const methodControllerType = MethodInfoUtil.getMethodControllerType(clazz, methodName);
9
+ const methodMiddlewares = MethodInfoUtil.getMethodMiddlewares(clazz, methodName);
10
+ const contextIndex = MethodInfoUtil.getMethodContextIndex(clazz, methodName);
11
+ if (!methodControllerType) {
12
+ if (methodMiddlewares.length) {
13
+ const desc = ClassUtil.classDescription(clazz);
14
+ throw new Error(`${desc}:${methodName} @Middleware should use with method decorator`);
15
+ }
16
+ if (contextIndex !== void 0) {
17
+ const desc = ClassUtil.classDescription(clazz);
18
+ throw new Error(`${desc}:${methodName} @Context should use with method decorator`);
19
+ }
20
+ return;
21
+ }
22
+ const controllerType = ControllerInfoUtil.getControllerType(clazz);
23
+ if (methodControllerType !== controllerType) {
24
+ const desc = ClassUtil.classDescription(clazz);
25
+ throw new Error(`${desc}:${methodName} method decorator ${methodControllerType} can not be used with ${controllerType}`);
26
+ }
27
+ }
28
+ };
29
+
30
+ //#endregion
31
+ export { MethodValidator };
@@ -0,0 +1,2 @@
1
+ import { ControllerValidator } from "./ControllerValidator.js";
2
+ import { MethodValidator } from "./MethodValidator.js";
@@ -0,0 +1,4 @@
1
+ import { ControllerValidator } from "./ControllerValidator.js";
2
+ import { MethodValidator } from "./MethodValidator.js";
3
+
4
+ export { };
package/package.json CHANGED
@@ -1,62 +1,59 @@
1
1
  {
2
2
  "name": "@eggjs/controller-decorator",
3
- "version": "4.0.0-beta.8",
3
+ "version": "4.0.1-beta.0",
4
4
  "description": "tegg controller decorator",
5
5
  "keywords": [
6
- "egg",
7
- "typescript",
8
- "decorator",
9
6
  "controller",
10
- "tegg"
11
- ],
12
- "type": "module",
13
- "exports": {
14
- ".": "./dist/index.js",
15
- "./package.json": "./package.json"
16
- },
17
- "files": [
18
- "dist"
7
+ "decorator",
8
+ "egg",
9
+ "tegg",
10
+ "typescript"
19
11
  ],
20
- "author": "killagu <killa123@126.com>",
21
- "license": "MIT",
22
- "homepage": "https://github.com/eggjs/tegg/tree/next/core/controller-decorator",
12
+ "homepage": "https://github.com/eggjs/egg/tree/next/tegg/core/controller-decorator",
23
13
  "bugs": {
24
- "url": "https://github.com/eggjs/tegg/issues"
14
+ "url": "https://github.com/eggjs/egg/issues"
25
15
  },
16
+ "license": "MIT",
17
+ "author": "killagu <killa123@126.com>",
26
18
  "repository": {
27
19
  "type": "git",
28
- "url": "git@github.com:eggjs/tegg.git",
29
- "directory": "core/controller-decorator"
20
+ "url": "git+https://github.com/eggjs/egg.git",
21
+ "directory": "tegg/core/controller-decorator"
30
22
  },
31
- "engines": {
32
- "node": ">=22.18.0"
23
+ "files": [
24
+ "dist"
25
+ ],
26
+ "type": "module",
27
+ "main": "./dist/index.js",
28
+ "module": "./dist/index.js",
29
+ "types": "./dist/index.d.ts",
30
+ "exports": {
31
+ ".": "./dist/index.js",
32
+ "./package.json": "./package.json"
33
+ },
34
+ "publishConfig": {
35
+ "access": "public"
33
36
  },
34
37
  "dependencies": {
35
- "@eggjs/cookies": "beta",
38
+ "@modelcontextprotocol/sdk": "^1.23.0",
36
39
  "is-type-of": "^2.2.0",
37
40
  "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"
41
+ "@eggjs/aop-decorator": "4.0.1-beta.0",
42
+ "@eggjs/cookies": "4.0.1-beta.0",
43
+ "@eggjs/core-decorator": "4.0.1-beta.0",
44
+ "@eggjs/metadata": "4.0.1-beta.0",
45
+ "@eggjs/tegg-types": "4.0.1-beta.0",
46
+ "@eggjs/tegg-common-util": "4.0.1-beta.0"
43
47
  },
44
48
  "devDependencies": {
45
- "@types/node": "^22.10.5",
46
- "egg": "beta",
49
+ "@types/node": "^24.10.2",
47
50
  "typescript": "^5.9.3",
48
- "tsdown": "^0.15.6",
49
- "unplugin-unused": "^0.5.3"
51
+ "egg": "4.1.1-beta.0"
50
52
  },
51
- "publishConfig": {
52
- "access": "public"
53
+ "engines": {
54
+ "node": ">=22.18.0"
53
55
  },
54
- "main": "./dist/index.js",
55
- "module": "./dist/index.js",
56
- "types": "./dist/index.d.ts",
57
56
  "scripts": {
58
- "clean": "rimraf dist",
59
- "build": "tsdown",
60
- "typecheck": "tsc --noEmit"
57
+ "typecheck": "tsgo --noEmit"
61
58
  }
62
59
  }