@samanhappy/mcphub 0.8.5 → 0.8.7

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 (40) hide show
  1. package/dist/config/index.js +5 -4
  2. package/dist/config/index.js.map +1 -1
  3. package/dist/controllers/authController.js +27 -5
  4. package/dist/controllers/authController.js.map +1 -1
  5. package/dist/controllers/configController.js +12 -0
  6. package/dist/controllers/configController.js.map +1 -1
  7. package/dist/controllers/groupController.js +125 -3
  8. package/dist/controllers/groupController.js.map +1 -1
  9. package/dist/controllers/serverController.js +2 -1
  10. package/dist/controllers/serverController.js.map +1 -1
  11. package/dist/controllers/userController.js +5 -0
  12. package/dist/controllers/userController.js.map +1 -1
  13. package/dist/middlewares/auth.js +18 -0
  14. package/dist/middlewares/auth.js.map +1 -1
  15. package/dist/middlewares/i18n.js +36 -0
  16. package/dist/middlewares/i18n.js.map +1 -0
  17. package/dist/middlewares/index.js +3 -0
  18. package/dist/middlewares/index.js.map +1 -1
  19. package/dist/routes/index.js +5 -1
  20. package/dist/routes/index.js.map +1 -1
  21. package/dist/server.js +4 -0
  22. package/dist/server.js.map +1 -1
  23. package/dist/services/dataService.js +3 -3
  24. package/dist/services/dataService.js.map +1 -1
  25. package/dist/services/groupService.js +81 -10
  26. package/dist/services/groupService.js.map +1 -1
  27. package/dist/services/mcpService.js +26 -8
  28. package/dist/services/mcpService.js.map +1 -1
  29. package/dist/services/registry.js +26 -10
  30. package/dist/services/registry.js.map +1 -1
  31. package/dist/utils/i18n.js +34 -0
  32. package/dist/utils/i18n.js.map +1 -0
  33. package/frontend/dist/assets/index-BgZVsrAO.js +202 -0
  34. package/frontend/dist/assets/index-BgZVsrAO.js.map +1 -0
  35. package/frontend/dist/assets/index-CjT98mwq.css +1 -0
  36. package/frontend/dist/index.html +2 -2
  37. package/package.json +2 -1
  38. package/frontend/dist/assets/index-C-F1zr8n.js +0 -197
  39. package/frontend/dist/assets/index-C-F1zr8n.js.map +0 -1
  40. package/frontend/dist/assets/index-DVMEgEIO.css +0 -1
@@ -4,18 +4,34 @@ const registry = new Map();
4
4
  const instances = new Map();
5
5
  export function registerService(key, entry) {
6
6
  // Try to load override immediately during registration
7
- const overridePath = join(process.cwd(), 'src', 'services', key + 'x.ts');
8
- try {
9
- const require = createRequire(process.cwd());
10
- const mod = require(overridePath);
11
- const override = mod[key.charAt(0).toUpperCase() + key.slice(1) + 'x'];
12
- if (typeof override === 'function') {
13
- entry.override = override;
7
+ // Try multiple paths and file extensions in order
8
+ const serviceDirs = ['src/services', 'dist/services'];
9
+ const fileExts = ['.ts', '.js'];
10
+ const overrideFileName = key + 'x';
11
+ for (const serviceDir of serviceDirs) {
12
+ for (const fileExt of fileExts) {
13
+ const overridePath = join(process.cwd(), serviceDir, overrideFileName + fileExt);
14
+ try {
15
+ // Use createRequire with a stable path reference
16
+ const require = createRequire(join(process.cwd(), 'package.json'));
17
+ const mod = require(overridePath);
18
+ const override = mod[key.charAt(0).toUpperCase() + key.slice(1) + 'x'];
19
+ if (typeof override === 'function') {
20
+ entry.override = override;
21
+ break; // Found override, exit both loops
22
+ }
23
+ }
24
+ catch (error) {
25
+ // Continue trying next path/extension combination
26
+ continue;
27
+ }
28
+ }
29
+ // If override was found, break out of outer loop too
30
+ if (entry.override) {
31
+ break;
14
32
  }
15
33
  }
16
- catch (error) {
17
- // Silently ignore if override doesn't exist
18
- }
34
+ console.log(`Service registered: ${key} with entry:`, entry);
19
35
  registry.set(key, entry);
20
36
  }
21
37
  export function getService(key) {
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/services/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAS5B,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAwB,CAAC;AACjD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAmB,CAAC;AAE7C,MAAM,UAAU,eAAe,CAAI,GAAW,EAAE,KAAiB;IAC/D,uDAAuD;IACvD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,GAAG,MAAM,CAAC,CAAC;IAC1E,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAC7C,MAAM,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;QAClC,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;QACvE,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE,CAAC;YACnC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC5B,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,4CAA4C;IAC9C,CAAC;IAED,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,UAAU,CAAI,GAAW;IACvC,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,SAAS,CAAC,GAAG,CAAC,GAAG,CAAM,CAAC;IACjC,CAAC;IAED,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAEjF,mDAAmD;IACnD,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,WAAW,CAAC;IAEjD,MAAM,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC;IAC5B,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAC7B,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/services/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAS5B,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAwB,CAAC;AACjD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAmB,CAAC;AAE7C,MAAM,UAAU,eAAe,CAAI,GAAW,EAAE,KAAiB;IAC/D,uDAAuD;IACvD,kDAAkD;IAClD,MAAM,WAAW,GAAG,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAChC,MAAM,gBAAgB,GAAG,GAAG,GAAG,GAAG,CAAC;IAEnC,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,gBAAgB,GAAG,OAAO,CAAC,CAAC;YAEjF,IAAI,CAAC;gBACH,iDAAiD;gBACjD,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC;gBACnE,MAAM,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;gBAClC,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;gBACvE,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE,CAAC;oBACnC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;oBAC1B,MAAM,CAAC,kCAAkC;gBAC3C,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,kDAAkD;gBAClD,SAAS;YACX,CAAC;QACH,CAAC;QAED,qDAAqD;QACrD,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnB,MAAM;QACR,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,uBAAuB,GAAG,cAAc,EAAE,KAAK,CAAC,CAAC;IAC7D,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,UAAU,CAAI,GAAW;IACvC,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,SAAS,CAAC,GAAG,CAAC,GAAG,CAAM,CAAC;IACjC,CAAC;IAED,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAEjF,mDAAmD;IACnD,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,WAAW,CAAC;IAEjD,MAAM,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC;IAC5B,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAC7B,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,34 @@
1
+ import i18n from 'i18next';
2
+ import Backend from 'i18next-fs-backend';
3
+ import path from 'path';
4
+ // Initialize i18n for backend
5
+ const initI18n = async () => {
6
+ return i18n.use(Backend).init({
7
+ lng: 'en', // default language
8
+ fallbackLng: 'en',
9
+ backend: {
10
+ // Path to translation files
11
+ loadPath: path.join(process.cwd(), 'locales', '{{lng}}.json'),
12
+ },
13
+ interpolation: {
14
+ escapeValue: false, // not needed for server side
15
+ },
16
+ // Enable debug mode for development
17
+ debug: false,
18
+ // Preload languages
19
+ preload: ['en', 'zh'],
20
+ // Use sync mode for server
21
+ initImmediate: false,
22
+ });
23
+ };
24
+ // Get translation function for a specific language
25
+ export const getT = (language) => {
26
+ if (language && language !== i18n.language) {
27
+ i18n.changeLanguage(language);
28
+ }
29
+ return i18n.t.bind(i18n);
30
+ };
31
+ // Initialize and export
32
+ export { initI18n };
33
+ export default i18n;
34
+ //# sourceMappingURL=i18n.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n.js","sourceRoot":"","sources":["../../src/utils/i18n.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,OAAO,MAAM,oBAAoB,CAAC;AACzC,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,8BAA8B;AAC9B,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE;IAC1B,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;QAC5B,GAAG,EAAE,IAAI,EAAE,mBAAmB;QAC9B,WAAW,EAAE,IAAI;QAEjB,OAAO,EAAE;YACP,4BAA4B;YAC5B,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,cAAc,CAAC;SAC9D;QAED,aAAa,EAAE;YACb,WAAW,EAAE,KAAK,EAAE,6BAA6B;SAClD;QAED,oCAAoC;QACpC,KAAK,EAAE,KAAK;QAEZ,oBAAoB;QACpB,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;QAErB,2BAA2B;QAC3B,aAAa,EAAE,KAAK;KACrB,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,mDAAmD;AACnD,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,QAAiB,EAAE,EAAE;IACxC,IAAI,QAAQ,IAAI,QAAQ,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC3C,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC,CAAC;AAEF,wBAAwB;AACxB,OAAO,EAAE,QAAQ,EAAE,CAAC;AACpB,eAAe,IAAI,CAAC"}