@eggjs/tegg-controller-plugin 3.62.0 → 4.0.0-beta.10

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 (72) hide show
  1. package/README.md +15 -126
  2. package/dist/app/middleware/tegg_root_proto.d.ts +3 -0
  3. package/dist/app/middleware/tegg_root_proto.js +8 -0
  4. package/dist/app.d.ts +23 -0
  5. package/dist/app.js +76 -0
  6. package/dist/index.d.ts +1 -0
  7. package/dist/index.js +2 -0
  8. package/{lib → dist/lib}/AppLoadUnitControllerHook.d.ts +4 -4
  9. package/dist/lib/AppLoadUnitControllerHook.js +29 -0
  10. package/{lib → dist/lib}/ControllerLoadUnit.d.ts +2 -2
  11. package/dist/lib/ControllerLoadUnit.js +72 -0
  12. package/{lib → dist/lib}/ControllerLoadUnitHandler.d.ts +4 -4
  13. package/dist/lib/ControllerLoadUnitHandler.js +29 -0
  14. package/{lib → dist/lib}/ControllerLoadUnitInstance.d.ts +3 -3
  15. package/dist/lib/ControllerLoadUnitInstance.js +36 -0
  16. package/{lib → dist/lib}/ControllerMetadataManager.d.ts +1 -1
  17. package/dist/lib/ControllerMetadataManager.js +27 -0
  18. package/{lib → dist/lib}/ControllerRegister.d.ts +2 -2
  19. package/dist/lib/ControllerRegister.js +3 -0
  20. package/{lib → dist/lib}/ControllerRegisterFactory.d.ts +4 -4
  21. package/dist/lib/ControllerRegisterFactory.js +22 -0
  22. package/dist/lib/EggControllerLoader.d.ts +7 -0
  23. package/dist/lib/EggControllerLoader.js +31 -0
  24. package/{lib → dist/lib}/EggControllerPrototypeHook.d.ts +2 -2
  25. package/dist/lib/EggControllerPrototypeHook.js +11 -0
  26. package/{lib → dist/lib}/RootProtoManager.d.ts +2 -2
  27. package/dist/lib/RootProtoManager.js +34 -0
  28. package/dist/lib/errors.js +12 -0
  29. package/dist/lib/impl/http/Acl.d.ts +2 -0
  30. package/dist/lib/impl/http/Acl.js +33 -0
  31. package/{lib → dist/lib}/impl/http/HTTPControllerRegister.d.ts +4 -4
  32. package/dist/lib/impl/http/HTTPControllerRegister.js +64 -0
  33. package/{lib → dist/lib}/impl/http/HTTPMethodRegister.d.ts +2 -2
  34. package/dist/lib/impl/http/HTTPMethodRegister.js +165 -0
  35. package/dist/lib/impl/http/Req.js +13 -0
  36. package/dist/types.d.ts +2 -0
  37. package/dist/types.js +3 -0
  38. package/package.json +60 -50
  39. package/app/middleware/mcp_body_middleware.d.ts +0 -3
  40. package/app/middleware/mcp_body_middleware.js +0 -48
  41. package/app/middleware/tegg_root_proto.d.ts +0 -3
  42. package/app/middleware/tegg_root_proto.js +0 -11
  43. package/app.d.ts +0 -15
  44. package/app.js +0 -143
  45. package/config/config.default.d.ts +0 -11
  46. package/config/config.default.js +0 -16
  47. package/lib/AppLoadUnitControllerHook.js +0 -28
  48. package/lib/ControllerLoadUnit.js +0 -71
  49. package/lib/ControllerLoadUnitHandler.js +0 -31
  50. package/lib/ControllerLoadUnitInstance.js +0 -34
  51. package/lib/ControllerMetadataManager.js +0 -30
  52. package/lib/ControllerRegister.js +0 -3
  53. package/lib/ControllerRegisterFactory.js +0 -21
  54. package/lib/EggControllerLoader.d.ts +0 -6
  55. package/lib/EggControllerLoader.js +0 -37
  56. package/lib/EggControllerPrototypeHook.js +0 -14
  57. package/lib/RootProtoManager.js +0 -38
  58. package/lib/errors.js +0 -16
  59. package/lib/impl/http/Acl.d.ts +0 -2
  60. package/lib/impl/http/Acl.js +0 -34
  61. package/lib/impl/http/HTTPControllerRegister.js +0 -62
  62. package/lib/impl/http/HTTPMethodRegister.js +0 -173
  63. package/lib/impl/http/Req.js +0 -17
  64. package/lib/impl/mcp/MCPConfig.d.ts +0 -32
  65. package/lib/impl/mcp/MCPConfig.js +0 -107
  66. package/lib/impl/mcp/MCPControllerRegister.d.ts +0 -67
  67. package/lib/impl/mcp/MCPControllerRegister.js +0 -541
  68. package/lib/impl/mcp/MCPServerHelper.d.ts +0 -17
  69. package/lib/impl/mcp/MCPServerHelper.js +0 -122
  70. package/typings/index.d.ts +0 -17
  71. /package/{lib → dist/lib}/errors.d.ts +0 -0
  72. /package/{lib → dist/lib}/impl/http/Req.d.ts +0 -0
@@ -1,2 +0,0 @@
1
- import { Next, EggContext, HTTPControllerMeta, HTTPMethodMeta } from '@eggjs/tegg';
2
- export declare function aclMiddlewareFactory(controllerMeta: HTTPControllerMeta, methodMeta: HTTPMethodMeta): ((ctx: EggContext, next: Next) => Promise<void>) | undefined;
@@ -1,34 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.aclMiddlewareFactory = aclMiddlewareFactory;
4
- function aclMiddlewareFactory(controllerMeta, methodMeta) {
5
- if (!controllerMeta.hasMethodAcl(methodMeta)) {
6
- return;
7
- }
8
- const code = controllerMeta.getMethodAcl(methodMeta);
9
- return async function aclMiddleware(ctx, next) {
10
- try {
11
- await ctx.acl(code);
12
- }
13
- catch (e) {
14
- const { redirectUrl, status } = e.data || {};
15
- if (!redirectUrl) {
16
- throw e;
17
- }
18
- if (ctx.acceptJSON) {
19
- ctx.body = {
20
- target: redirectUrl,
21
- stat: 'deny',
22
- };
23
- return;
24
- }
25
- if (status) {
26
- ctx.realStatus = status;
27
- }
28
- ctx.redirect(redirectUrl);
29
- return;
30
- }
31
- return next();
32
- };
33
- }
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWNsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiQWNsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBRUEsb0RBNkJDO0FBN0JELFNBQWdCLG9CQUFvQixDQUFDLGNBQWtDLEVBQUUsVUFBMEI7SUFDakcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztRQUM3QyxPQUFPO0lBQ1QsQ0FBQztJQUNELE1BQU0sSUFBSSxHQUFHLGNBQWMsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDckQsT0FBTyxLQUFLLFVBQVUsYUFBYSxDQUFDLEdBQWUsRUFBRSxJQUFVO1FBQzdELElBQUksQ0FBQztZQUNILE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0QixDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7WUFDN0MsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNqQixNQUFNLENBQUMsQ0FBQztZQUNWLENBQUM7WUFDRCxJQUFJLEdBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDbkIsR0FBRyxDQUFDLElBQUksR0FBRztvQkFDVCxNQUFNLEVBQUUsV0FBVztvQkFDbkIsSUFBSSxFQUFFLE1BQU07aUJBQ2IsQ0FBQztnQkFDRixPQUFPO1lBQ1QsQ0FBQztZQUNELElBQUksTUFBTSxFQUFFLENBQUM7Z0JBQ1gsR0FBRyxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUM7WUFDMUIsQ0FBQztZQUNELEdBQUcsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDMUIsT0FBTztRQUVULENBQUM7UUFDRCxPQUFPLElBQUksRUFBRSxDQUFDO0lBQ2hCLENBQUMsQ0FBQztBQUNKLENBQUMifQ==
@@ -1,62 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.HTTPControllerRegister = void 0;
7
- const assert_1 = __importDefault(require("assert"));
8
- const tegg_1 = require("@eggjs/tegg");
9
- const HTTPMethodRegister_1 = require("./HTTPMethodRegister");
10
- class HTTPControllerRegister {
11
- static create(proto, controllerMeta, app) {
12
- (0, assert_1.default)(controllerMeta.type === tegg_1.ControllerType.HTTP, 'controller meta type is not HTTP');
13
- if (!HTTPControllerRegister.instance) {
14
- HTTPControllerRegister.instance = new HTTPControllerRegister(app.router, app.eggContainerFactory);
15
- }
16
- HTTPControllerRegister.instance.controllerProtos.push(proto);
17
- return HTTPControllerRegister.instance;
18
- }
19
- constructor(router, eggContainerFactory) {
20
- this.controllerProtos = [];
21
- this.router = router;
22
- this.checkRouters = new Map();
23
- this.checkRouters.set('default', router);
24
- this.eggContainerFactory = eggContainerFactory;
25
- }
26
- register() {
27
- // do noting
28
- return Promise.resolve();
29
- }
30
- static clean() {
31
- if (this.instance) {
32
- this.instance.controllerProtos = [];
33
- this.instance.checkRouters.clear();
34
- }
35
- this.instance = undefined;
36
- }
37
- doRegister(rootProtoManager) {
38
- const methodMap = new Map();
39
- for (const proto of this.controllerProtos) {
40
- const metadata = proto.getMetaData(tegg_1.CONTROLLER_META_DATA);
41
- for (const method of metadata.methods) {
42
- methodMap.set(method, proto);
43
- }
44
- }
45
- const allMethods = Array.from(methodMap.keys())
46
- .sort((a, b) => b.priority - a.priority);
47
- for (const method of allMethods) {
48
- const controllerProto = methodMap.get(method);
49
- const controllerMeta = controllerProto.getMetaData(tegg_1.CONTROLLER_META_DATA);
50
- const methodRegister = new HTTPMethodRegister_1.HTTPMethodRegister(controllerProto, controllerMeta, method, this.router, this.checkRouters, this.eggContainerFactory);
51
- methodRegister.checkDuplicate();
52
- }
53
- for (const method of allMethods) {
54
- const controllerProto = methodMap.get(method);
55
- const controllerMeta = controllerProto.getMetaData(tegg_1.CONTROLLER_META_DATA);
56
- const methodRegister = new HTTPMethodRegister_1.HTTPMethodRegister(controllerProto, controllerMeta, method, this.router, this.checkRouters, this.eggContainerFactory);
57
- methodRegister.register(rootProtoManager);
58
- }
59
- }
60
- }
61
- exports.HTTPControllerRegister = HTTPControllerRegister;
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSFRUUENvbnRyb2xsZXJSZWdpc3Rlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkhUVFBDb250cm9sbGVyUmVnaXN0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsb0RBQTRCO0FBRTVCLHNDQU1xQjtBQUdyQiw2REFBMEQ7QUFJMUQsTUFBYSxzQkFBc0I7SUFRakMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFtQixFQUFFLGNBQWtDLEVBQUUsR0FBZ0I7UUFDckYsSUFBQSxnQkFBTSxFQUFDLGNBQWMsQ0FBQyxJQUFJLEtBQUsscUJBQWMsQ0FBQyxJQUFJLEVBQUUsa0NBQWtDLENBQUMsQ0FBQztRQUN4RixJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDckMsc0JBQXNCLENBQUMsUUFBUSxHQUFHLElBQUksc0JBQXNCLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNwRyxDQUFDO1FBQ0Qsc0JBQXNCLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3RCxPQUFPLHNCQUFzQixDQUFDLFFBQVEsQ0FBQztJQUN6QyxDQUFDO0lBRUQsWUFBWSxNQUFjLEVBQUUsbUJBQStDO1FBWG5FLHFCQUFnQixHQUFtQixFQUFFLENBQUM7UUFZNUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsbUJBQW1CLENBQUM7SUFDakQsQ0FBQztJQUVELFFBQVE7UUFDTixZQUFZO1FBQ1osT0FBTyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLO1FBQ1YsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDckMsQ0FBQztRQUNELElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDO0lBQzVCLENBQUM7SUFFRCxVQUFVLENBQUMsZ0JBQWtDO1FBQzNDLE1BQU0sU0FBUyxHQUFHLElBQUksR0FBRyxFQUFnQyxDQUFDO1FBQzFELEtBQUssTUFBTSxLQUFLLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDMUMsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQywyQkFBb0IsQ0FBdUIsQ0FBQztZQUMvRSxLQUFLLE1BQU0sTUFBTSxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDdEMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDL0IsQ0FBQztRQUNILENBQUM7UUFDRCxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUM1QyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUUzQyxLQUFLLE1BQU0sTUFBTSxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sZUFBZSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFFLENBQUM7WUFDL0MsTUFBTSxjQUFjLEdBQUcsZUFBZSxDQUFDLFdBQVcsQ0FBQywyQkFBb0IsQ0FBdUIsQ0FBQztZQUMvRixNQUFNLGNBQWMsR0FBRyxJQUFJLHVDQUFrQixDQUMzQyxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7WUFDckcsY0FBYyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ2xDLENBQUM7UUFFRCxLQUFLLE1BQU0sTUFBTSxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sZUFBZSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFFLENBQUM7WUFDL0MsTUFBTSxjQUFjLEdBQUcsZUFBZSxDQUFDLFdBQVcsQ0FBQywyQkFBb0IsQ0FBdUIsQ0FBQztZQUMvRixNQUFNLGNBQWMsR0FBRyxJQUFJLHVDQUFrQixDQUMzQyxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7WUFDckcsY0FBYyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzVDLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUFoRUQsd0RBZ0VDIn0=
@@ -1,173 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.HTTPMethodRegister = void 0;
7
- const assert_1 = __importDefault(require("assert"));
8
- const path_to_regexp_1 = __importDefault(require("path-to-regexp"));
9
- const router_1 = require("@eggjs/router");
10
- const egg_errors_1 = require("egg-errors");
11
- const tegg_1 = require("@eggjs/tegg");
12
- const tegg_common_util_1 = require("@eggjs/tegg-common-util");
13
- const Acl_1 = require("./Acl");
14
- const Req_1 = require("./Req");
15
- const errors_1 = require("../../errors");
16
- const noop = () => {
17
- // ...
18
- };
19
- class HTTPMethodRegister {
20
- constructor(proto, controllerMeta, methodMeta, router, checkRouters, eggContainerFactory) {
21
- this.proto = proto;
22
- this.controllerMeta = controllerMeta;
23
- this.router = router;
24
- this.methodMeta = methodMeta;
25
- this.checkRouters = checkRouters;
26
- this.eggContainerFactory = eggContainerFactory;
27
- }
28
- createHandler(methodMeta, host) {
29
- const argsLength = methodMeta.paramMap.size;
30
- const hasContext = methodMeta.contextParamIndex !== undefined;
31
- const contextIndex = methodMeta.contextParamIndex;
32
- const methodArgsLength = argsLength + (hasContext ? 1 : 0);
33
- const timeout = this.controllerMeta.getMethodTimeout(methodMeta);
34
- const self = this;
35
- return async function (ctx, next) {
36
- // if hosts is not empty and host is not matched, not execute
37
- if (host && host !== ctx.host) {
38
- return await next();
39
- }
40
- // HTTP decorator core implement
41
- // use controller metadata map http request to function arguments
42
- const eggObj = await self.eggContainerFactory.getOrCreateEggObject(self.proto, self.proto.name);
43
- const realObj = eggObj.obj;
44
- const realMethod = realObj[methodMeta.name];
45
- const args = new Array(methodArgsLength);
46
- if (hasContext) {
47
- args[contextIndex] = ctx;
48
- }
49
- for (const [index, param] of methodMeta.paramMap) {
50
- switch (param.type) {
51
- case tegg_1.HTTPParamType.BODY: {
52
- args[index] = ctx.request.body;
53
- break;
54
- }
55
- case tegg_1.HTTPParamType.PARAM: {
56
- const pathParam = param;
57
- args[index] = ctx.params[pathParam.name];
58
- break;
59
- }
60
- case tegg_1.HTTPParamType.QUERY: {
61
- const queryParam = param;
62
- args[index] = ctx.query[queryParam.name];
63
- break;
64
- }
65
- case tegg_1.HTTPParamType.QUERIES: {
66
- const queryParam = param;
67
- args[index] = ctx.queries[queryParam.name];
68
- break;
69
- }
70
- case tegg_1.HTTPParamType.HEADERS: {
71
- args[index] = ctx.request.headers;
72
- break;
73
- }
74
- case tegg_1.HTTPParamType.REQUEST: {
75
- args[index] = new Req_1.HTTPRequest(ctx);
76
- break;
77
- }
78
- case tegg_1.HTTPParamType.COOKIES: {
79
- args[index] = new tegg_1.HTTPCookies(ctx, []);
80
- break;
81
- }
82
- default:
83
- assert_1.default.fail('never arrive');
84
- }
85
- }
86
- let body;
87
- try {
88
- body = await tegg_common_util_1.TimerUtil.timeout(() => Reflect.apply(realMethod, realObj, args), timeout);
89
- }
90
- catch (e) {
91
- if (e instanceof tegg_common_util_1.TimerUtil.TimeoutError) {
92
- ctx.logger.error(`timeout after ${timeout}ms`);
93
- ctx.throw(500, 'timeout');
94
- }
95
- throw e;
96
- }
97
- // https://github.com/koajs/koa/blob/master/lib/response.js#L88
98
- // ctx.status is set
99
- const explicitStatus = ctx.response._explicitStatus;
100
- if (
101
- // has body
102
- body != null ||
103
- // status is not set and has no body
104
- // code should by 204
105
- // https://github.com/koajs/koa/blob/master/lib/response.js#L140
106
- !explicitStatus) {
107
- ctx.body = body;
108
- }
109
- };
110
- }
111
- checkDuplicate() {
112
- // 1. check duplicate with egg controller
113
- this.checkDuplicateInRouter(this.router);
114
- // 2. check duplicate with host tegg controller
115
- let hostRouter;
116
- const hosts = this.controllerMeta.getMethodHosts(this.methodMeta) || [];
117
- hosts.forEach(h => {
118
- if (h) {
119
- hostRouter = this.checkRouters.get(h);
120
- if (!hostRouter) {
121
- hostRouter = new router_1.EggRouter({ sensitive: true }, {});
122
- this.checkRouters.set(h, hostRouter);
123
- }
124
- }
125
- if (hostRouter) {
126
- this.checkDuplicateInRouter(hostRouter);
127
- this.registerToRouter(hostRouter);
128
- }
129
- });
130
- }
131
- registerToRouter(router) {
132
- const routerFunc = router[this.methodMeta.method.toLowerCase()];
133
- const methodRealPath = this.controllerMeta.getMethodRealPath(this.methodMeta);
134
- const methodName = this.controllerMeta.getMethodName(this.methodMeta);
135
- Reflect.apply(routerFunc, router, [methodName, methodRealPath, noop]);
136
- }
137
- checkDuplicateInRouter(router) {
138
- const methodRealPath = this.controllerMeta.getMethodRealPath(this.methodMeta);
139
- const matched = router.match(methodRealPath, this.methodMeta.method);
140
- const methodName = this.controllerMeta.getMethodName(this.methodMeta);
141
- if (matched.route) {
142
- const [layer] = matched.path;
143
- const err = new errors_1.RouterConflictError(`register http controller ${methodName} failed, ${this.methodMeta.method} ${methodRealPath} is conflict with exists rule ${layer.path}`);
144
- throw egg_errors_1.FrameworkErrorFormater.format(err);
145
- }
146
- }
147
- register(rootProtoManager) {
148
- const methodRealPath = this.controllerMeta.getMethodRealPath(this.methodMeta);
149
- const methodName = this.controllerMeta.getMethodName(this.methodMeta);
150
- const routerFunc = this.router[this.methodMeta.method.toLowerCase()];
151
- const methodMiddlewares = this.controllerMeta.getMethodMiddlewares(this.methodMeta);
152
- const aclMiddleware = (0, Acl_1.aclMiddlewareFactory)(this.controllerMeta, this.methodMeta);
153
- if (aclMiddleware) {
154
- methodMiddlewares.push(aclMiddleware);
155
- }
156
- const hosts = this.controllerMeta.getMethodHosts(this.methodMeta) || [undefined];
157
- hosts.forEach(h => {
158
- const handler = this.createHandler(this.methodMeta, h);
159
- Reflect.apply(routerFunc, this.router, [methodName, methodRealPath, ...methodMiddlewares, handler]);
160
- // https://github.com/eggjs/egg-core/blob/0af6178022e7734c4a8b17bb56d592b315207883/lib/egg.js#L279
161
- const regExp = (0, path_to_regexp_1.default)(methodRealPath, {
162
- sensitive: true,
163
- });
164
- rootProtoManager.registerRootProto(this.methodMeta.method, (ctx) => {
165
- if (regExp.test(ctx.path)) {
166
- return this.proto;
167
- }
168
- }, h || '');
169
- });
170
- }
171
- }
172
- exports.HTTPMethodRegister = HTTPMethodRegister;
173
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSFRUUE1ldGhvZFJlZ2lzdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiSFRUUE1ldGhvZFJlZ2lzdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG9EQUE0QjtBQUM1QixvRUFBMEM7QUFDMUMsMENBQTBDO0FBRTFDLDJDQUFvRDtBQUNwRCxzQ0FVcUI7QUFDckIsOERBQW9EO0FBSXBELCtCQUE2QztBQUM3QywrQkFBb0M7QUFDcEMseUNBQW1EO0FBRW5ELE1BQU0sSUFBSSxHQUFHLEdBQUcsRUFBRTtJQUNoQixNQUFNO0FBQ1IsQ0FBQyxDQUFDO0FBRUYsTUFBYSxrQkFBa0I7SUFRN0IsWUFDRSxLQUFtQixFQUNuQixjQUFrQyxFQUNsQyxVQUEwQixFQUMxQixNQUFjLEVBQ2QsWUFBaUMsRUFDakMsbUJBQStDO1FBRS9DLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxtQkFBbUIsQ0FBQztJQUNqRCxDQUFDO0lBRU8sYUFBYSxDQUFDLFVBQTBCLEVBQUUsSUFBd0I7UUFDeEUsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDNUMsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLGlCQUFpQixLQUFLLFNBQVMsQ0FBQztRQUM5RCxNQUFNLFlBQVksR0FBRyxVQUFVLENBQUMsaUJBQWlCLENBQUM7UUFDbEQsTUFBTSxnQkFBZ0IsR0FBRyxVQUFVLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0Qs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
@@ -1,17 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.HTTPRequest = void 0;
4
- const tegg_1 = require("@eggjs/tegg");
5
- class HTTPRequest extends tegg_1.HTTPRequest {
6
- constructor(ctx) {
7
- const request = ctx.request;
8
- // href: https://github.com/eggjs/koa/blob/master/src/request.ts#L90C1-L98C4
9
- super(request.href, {
10
- method: request.method,
11
- headers: request.headers,
12
- body: ctx.request.rawBody,
13
- });
14
- }
15
- }
16
- exports.HTTPRequest = HTTPRequest;
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVxLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiUmVxLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHNDQUE2RDtBQUM3RCxNQUFhLFdBQVksU0FBUSxrQkFBZTtJQUM5QyxZQUFZLEdBQVc7UUFDckIsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQztRQUM1Qiw0RUFBNEU7UUFDNUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUU7WUFDbEIsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO1lBQ3RCLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBNEM7WUFDN0QsSUFBSSxFQUFHLEdBQUcsQ0FBQyxPQUFlLENBQUMsT0FBTztTQUNuQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFWRCxrQ0FVQyJ9
@@ -1,32 +0,0 @@
1
- import type { Application, Context } from 'egg';
2
- import { EventStore } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
3
- export interface MCPConfigOptions {
4
- sseInitPath: string;
5
- sseMessagePath: string;
6
- streamPath: string;
7
- statelessStreamPath: string;
8
- sessionIdGenerator?: (ctx: Context) => string;
9
- eventStore?: EventStore;
10
- sseHeartTime?: number;
11
- multipleServer?: Record<string, Partial<MCPConfigOptions>>;
12
- }
13
- export declare class MCPConfig {
14
- private _sseInitPath;
15
- private _sseMessagePath;
16
- private _streamPath;
17
- private _statelessStreamPath;
18
- private _sessionIdGenerator;
19
- private _eventStore;
20
- private _sseHeartTime;
21
- private _multipleServer;
22
- constructor(options: MCPConfigOptions);
23
- getSseInitPath(name?: string): string;
24
- getSseMessagePath(name?: string): string;
25
- getStreamPath(name?: string): string;
26
- getStatelessStreamPath(name?: string): string;
27
- getSessionIdGenerator(name?: string): (ctx: Context) => string;
28
- getEventStore(name?: string): EventStore;
29
- getSseHeartTime(name?: string): number;
30
- getMultipleServerNames(): string[];
31
- setMultipleServerPath(app: Application, name: string): void;
32
- }
@@ -1,107 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MCPConfig = void 0;
4
- const node_crypto_1 = require("node:crypto");
5
- const inMemoryEventStore_js_1 = require("@modelcontextprotocol/sdk/examples/shared/inMemoryEventStore.js");
6
- class MCPConfig {
7
- constructor(options) {
8
- var _a, _b, _c, _d;
9
- this._sessionIdGenerator =
10
- (_a = options.sessionIdGenerator) !== null && _a !== void 0 ? _a : (() => (0, node_crypto_1.randomUUID)());
11
- this._sseInitPath = options.sseInitPath;
12
- this._sseMessagePath = options.sseMessagePath;
13
- this._streamPath = options.streamPath;
14
- this._statelessStreamPath = options.statelessStreamPath;
15
- this._eventStore = (_b = options.eventStore) !== null && _b !== void 0 ? _b : new inMemoryEventStore_js_1.InMemoryEventStore();
16
- this._sseHeartTime = (_c = options.sseHeartTime) !== null && _c !== void 0 ? _c : 25000;
17
- this._multipleServer = (_d = options.multipleServer) !== null && _d !== void 0 ? _d : {};
18
- }
19
- getSseInitPath(name) {
20
- if (name) {
21
- const config = this._multipleServer[name];
22
- if (config === null || config === void 0 ? void 0 : config.sseInitPath) {
23
- return config.sseInitPath;
24
- }
25
- return `/mcp/${name}/sse`;
26
- }
27
- return this._sseInitPath;
28
- }
29
- getSseMessagePath(name) {
30
- if (name) {
31
- const config = this._multipleServer[name];
32
- if (config === null || config === void 0 ? void 0 : config.sseMessagePath) {
33
- return config.sseMessagePath;
34
- }
35
- return `/mcp/${name}/message`;
36
- }
37
- return this._sseMessagePath;
38
- }
39
- getStreamPath(name) {
40
- if (name) {
41
- const config = this._multipleServer[name];
42
- if (config === null || config === void 0 ? void 0 : config.streamPath) {
43
- return config.streamPath;
44
- }
45
- return `/mcp/${name}/stream`;
46
- }
47
- return this._streamPath;
48
- }
49
- getStatelessStreamPath(name) {
50
- if (name) {
51
- const config = this._multipleServer[name];
52
- if (config === null || config === void 0 ? void 0 : config.statelessStreamPath) {
53
- return config.statelessStreamPath;
54
- }
55
- return `/mcp/${name}/stateless/stream`;
56
- }
57
- return this._statelessStreamPath;
58
- }
59
- getSessionIdGenerator(name) {
60
- if (name) {
61
- const config = this._multipleServer[name];
62
- if (config === null || config === void 0 ? void 0 : config.sessionIdGenerator) {
63
- return config.sessionIdGenerator;
64
- }
65
- return () => (0, node_crypto_1.randomUUID)();
66
- }
67
- return this._sessionIdGenerator;
68
- }
69
- getEventStore(name) {
70
- if (name) {
71
- const config = this._multipleServer[name];
72
- if (config === null || config === void 0 ? void 0 : config.eventStore) {
73
- return config.eventStore;
74
- }
75
- return new inMemoryEventStore_js_1.InMemoryEventStore();
76
- }
77
- return this._eventStore;
78
- }
79
- getSseHeartTime(name) {
80
- if (name) {
81
- const config = this._multipleServer[name];
82
- if (config === null || config === void 0 ? void 0 : config.sseHeartTime) {
83
- return config.sseHeartTime;
84
- }
85
- return 25000;
86
- }
87
- return this._sseHeartTime;
88
- }
89
- getMultipleServerNames() {
90
- return Object.keys(this._multipleServer);
91
- }
92
- setMultipleServerPath(app, name) {
93
- var _a;
94
- if (!app.config.mcp.multipleServer) {
95
- app.config.mcp.multipleServer = {};
96
- }
97
- app.config.mcp.multipleServer[name] = {
98
- sseInitPath: `/mcp/${name}/sse`,
99
- sseMessagePath: `/mcp/${name}/message`,
100
- streamPath: `/mcp/${name}/stream`,
101
- statelessStreamPath: `/mcp/${name}/stateless/stream`,
102
- ...(_a = app.config.mcp.multipleServer) === null || _a === void 0 ? void 0 : _a[name],
103
- };
104
- }
105
- }
106
- exports.MCPConfig = MCPConfig;
107
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTUNQQ29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiTUNQQ29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLDZDQUF5QztBQUV6QywyR0FBcUc7QUFhckcsTUFBYSxTQUFTO0lBV3BCLFlBQVksT0FBeUI7O1FBQ25DLElBQUksQ0FBQyxtQkFBbUI7WUFDdEIsTUFBQSxPQUFPLENBQUMsa0JBQWtCLG1DQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBQSx3QkFBVSxHQUFFLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUM7UUFDeEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDO1FBQzlDLElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQztRQUN0QyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsT0FBTyxDQUFDLG1CQUFtQixDQUFDO1FBQ3hELElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBQSxPQUFPLENBQUMsVUFBVSxtQ0FBSSxJQUFJLDBDQUFrQixFQUFFLENBQUM7UUFDbEUsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFBLE9BQU8sQ0FBQyxZQUFZLG1DQUFJLEtBQUssQ0FBQztRQUVuRCxJQUFJLENBQUMsZUFBZSxHQUFHLE1BQUEsT0FBTyxDQUFDLGNBQWMsbUNBQUksRUFBRSxDQUFDO0lBQ3RELENBQUM7SUFFRCxjQUFjLENBQUMsSUFBYTtRQUMxQixJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMxQyxJQUFJLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxXQUFXLEVBQUUsQ0FBQztnQkFDeEIsT0FBTyxNQUFNLENBQUMsV0FBVyxDQUFDO1lBQzVCLENBQUM7WUFDRCxPQUFPLFFBQVEsSUFBSSxNQUFNLENBQUM7UUFDNUIs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
@@ -1,67 +0,0 @@
1
- import type { Application, Context } from 'egg';
2
- import http, { ServerResponse } from 'node:http';
3
- import { ControllerMetadata, MCPControllerMeta, MCPPromptMeta, MCPToolMeta, EggContext } from '@eggjs/tegg';
4
- import { EggPrototype } from '@eggjs/tegg-metadata';
5
- import { EggContainerFactory } from '@eggjs/tegg-runtime';
6
- import { ControllerRegister } from '../../ControllerRegister';
7
- import { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js';
8
- import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
9
- import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
10
- import { JSONRPCMessage } from '@modelcontextprotocol/sdk/types.js';
11
- import { MCPProtocols } from '@eggjs/mcp-proxy/types';
12
- import compose from 'koa-compose';
13
- import { MCPConfig } from './MCPConfig';
14
- import { MCPServerHelper } from './MCPServerHelper';
15
- export interface MCPControllerHook {
16
- preSSEInitHandle?: (ctx: Context, transport: SSEServerTransport, register: MCPControllerRegister) => Promise<void>;
17
- preHandleInitHandle?: (ctx: Context) => Promise<void>;
18
- preHandle?: (ctx: Context) => Promise<void>;
19
- onStreamSessionInitialized?: (ctx: Context, transport: StreamableHTTPServerTransport, register: MCPControllerRegister) => Promise<void>;
20
- preProxy?: (ctx: Context, proxyReq: http.IncomingMessage, proxyResp: http.ServerResponse) => Promise<void>;
21
- schemaLoader?: (controllerMeta: MCPControllerMeta, meta: MCPPromptMeta | MCPToolMeta) => Promise<Parameters<McpServer['tool']>['2'] | Parameters<McpServer['prompt']>['2']>;
22
- checkAndRunProxy?: (ctx: Context, type: MCPProtocols, sessionId: string) => Promise<boolean>;
23
- middlewareStart?: (ctx: Context) => Promise<void>;
24
- middlewareEnd?: (ctx: Context) => Promise<void>;
25
- middlewareError?: (ctx: Context, e: Error) => Promise<void>;
26
- }
27
- declare class InnerSSEServerTransport extends SSEServerTransport {
28
- send(message: JSONRPCMessage): Promise<void>;
29
- }
30
- export declare class MCPControllerRegister implements ControllerRegister {
31
- static instance?: MCPControllerRegister;
32
- readonly app: Application;
33
- readonly eggContainerFactory: typeof EggContainerFactory;
34
- private readonly router;
35
- private controllerProtos;
36
- private registeredControllerProtos;
37
- transports: Record<string, InnerSSEServerTransport>;
38
- sseConnections: Map<string, {
39
- res: ServerResponse;
40
- intervalId: NodeJS.Timeout;
41
- }>;
42
- mcpServerHelperMap: Record<string, MCPServerHelper>;
43
- statelessMcpServerHelperMap: Record<string, MCPServerHelper>;
44
- private controllerMeta;
45
- mcpConfig: MCPConfig;
46
- statelessTransportMap: Record<string, StreamableHTTPServerTransport>;
47
- streamTransports: Record<string, StreamableHTTPServerTransport>;
48
- sseTransportsRequestMap: Map<InnerSSEServerTransport, Record<string, {
49
- resolve: (value: PromiseLike<null> | null) => void;
50
- reject: (reason?: any) => void;
51
- }>>;
52
- static hooks: MCPControllerHook[];
53
- globalMiddlewares: compose.ComposedMiddleware<EggContext>;
54
- static create(proto: EggPrototype, controllerMeta: ControllerMetadata, app: Application): MCPControllerRegister;
55
- constructor(_proto: EggPrototype, controllerMeta: MCPControllerMeta, app: Application);
56
- static addHook(hook: MCPControllerHook): void;
57
- static connectStatelessStreamTransport(name?: string): Promise<void>;
58
- static clean(): void;
59
- mcpStatelessStreamServerInit(name?: string): void;
60
- mcpStreamServerInit(name?: string): void;
61
- mcpServerInit(name?: string): void;
62
- sseCtxStorageRun(ctx: Context, transport: SSEServerTransport, name?: string): void;
63
- mcpServerRegister(name?: string): void;
64
- getGlobalMiddleware(): void;
65
- register(): Promise<void>;
66
- }
67
- export {};