@samanhappy/mcphub 1.0.31 → 1.0.33

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 (311) hide show
  1. package/README.md +11 -1
  2. package/README.zh.md +12 -2
  3. package/dist/betterAuth.js +13 -5
  4. package/dist/betterAuth.js.map +1 -1
  5. package/dist/cli/commands/cache.js.map +1 -1
  6. package/dist/cli/commands/call.js +2 -2
  7. package/dist/cli/commands/call.js.map +1 -1
  8. package/dist/cli/commands/config.js.map +1 -1
  9. package/dist/cli/commands/discover.js.map +1 -1
  10. package/dist/cli/commands/export.js.map +1 -1
  11. package/dist/cli/commands/groups.js.map +1 -1
  12. package/dist/cli/commands/install.js +1 -1
  13. package/dist/cli/commands/install.js.map +1 -1
  14. package/dist/cli/commands/keys.js.map +1 -1
  15. package/dist/cli/commands/login.js.map +1 -1
  16. package/dist/cli/commands/servers.js.map +1 -1
  17. package/dist/cli/commands/tools.js +2 -2
  18. package/dist/cli/commands/tools.js.map +1 -1
  19. package/dist/cli/context.js +1 -1
  20. package/dist/cli/context.js.map +1 -1
  21. package/dist/cli/http.js +3 -1
  22. package/dist/cli/http.js.map +1 -1
  23. package/dist/clients/openapi.js +498 -76
  24. package/dist/clients/openapi.js.map +1 -1
  25. package/dist/config/DaoConfigService.js +3 -2
  26. package/dist/config/DaoConfigService.js.map +1 -1
  27. package/dist/config/configManager.js +9 -8
  28. package/dist/config/configManager.js.map +1 -1
  29. package/dist/config/index.js +54 -8
  30. package/dist/config/index.js.map +1 -1
  31. package/dist/config/jwt.js +2 -1
  32. package/dist/config/jwt.js.map +1 -1
  33. package/dist/config/migrationUtils.js +46 -45
  34. package/dist/config/migrationUtils.js.map +1 -1
  35. package/dist/constants/oauthServerDefaults.js +5 -0
  36. package/dist/constants/oauthServerDefaults.js.map +1 -1
  37. package/dist/controllers/activityController.js +6 -5
  38. package/dist/controllers/activityController.js.map +1 -1
  39. package/dist/controllers/authController.js +5 -4
  40. package/dist/controllers/authController.js.map +1 -1
  41. package/dist/controllers/bearerKeyController.js +7 -6
  42. package/dist/controllers/bearerKeyController.js.map +1 -1
  43. package/dist/controllers/betterAuthController.js +2 -1
  44. package/dist/controllers/betterAuthController.js.map +1 -1
  45. package/dist/controllers/builtinPromptController.js +13 -5
  46. package/dist/controllers/builtinPromptController.js.map +1 -1
  47. package/dist/controllers/builtinResourceController.js +14 -6
  48. package/dist/controllers/builtinResourceController.js.map +1 -1
  49. package/dist/controllers/changelogController.js +5 -2
  50. package/dist/controllers/changelogController.js.map +1 -1
  51. package/dist/controllers/cloudController.js +11 -10
  52. package/dist/controllers/cloudController.js.map +1 -1
  53. package/dist/controllers/configController.js +4 -3
  54. package/dist/controllers/configController.js.map +1 -1
  55. package/dist/controllers/contextCostController.js +3 -2
  56. package/dist/controllers/contextCostController.js.map +1 -1
  57. package/dist/controllers/groupController.js +2 -1
  58. package/dist/controllers/groupController.js.map +1 -1
  59. package/dist/controllers/healthController.js +2 -1
  60. package/dist/controllers/healthController.js.map +1 -1
  61. package/dist/controllers/hostedInternalController.js +2 -1
  62. package/dist/controllers/hostedInternalController.js.map +1 -1
  63. package/dist/controllers/logController.js +5 -4
  64. package/dist/controllers/logController.js.map +1 -1
  65. package/dist/controllers/mcpbController.js +23 -20
  66. package/dist/controllers/mcpbController.js.map +1 -1
  67. package/dist/controllers/oauthCallbackController.js +54 -27
  68. package/dist/controllers/oauthCallbackController.js.map +1 -1
  69. package/dist/controllers/oauthClientController.js +7 -6
  70. package/dist/controllers/oauthClientController.js.map +1 -1
  71. package/dist/controllers/oauthDynamicRegistrationController.js +22 -4
  72. package/dist/controllers/oauthDynamicRegistrationController.js.map +1 -1
  73. package/dist/controllers/oauthServerController.js +62 -15
  74. package/dist/controllers/oauthServerController.js.map +1 -1
  75. package/dist/controllers/openApiController.js +7 -6
  76. package/dist/controllers/openApiController.js.map +1 -1
  77. package/dist/controllers/promptController.js +2 -1
  78. package/dist/controllers/promptController.js.map +1 -1
  79. package/dist/controllers/registryController.js +4 -3
  80. package/dist/controllers/registryController.js.map +1 -1
  81. package/dist/controllers/serverController.js +154 -65
  82. package/dist/controllers/serverController.js.map +1 -1
  83. package/dist/controllers/templateController.js +3 -2
  84. package/dist/controllers/templateController.js.map +1 -1
  85. package/dist/controllers/toolController.js +2 -1
  86. package/dist/controllers/toolController.js.map +1 -1
  87. package/dist/dao/DaoFactory.js +3 -2
  88. package/dist/dao/DaoFactory.js.map +1 -1
  89. package/dist/dao/ServerDao.js.map +1 -1
  90. package/dist/dao/UserConfigDaoDbImpl.js.map +1 -1
  91. package/dist/dao/UserDao.js.map +1 -1
  92. package/dist/dao/base/JsonFileBaseDao.js +3 -2
  93. package/dist/dao/base/JsonFileBaseDao.js.map +1 -1
  94. package/dist/dao/examples.js +35 -34
  95. package/dist/dao/examples.js.map +1 -1
  96. package/dist/db/connection.js +59 -58
  97. package/dist/db/connection.js.map +1 -1
  98. package/dist/db/index.js +2 -1
  99. package/dist/db/index.js.map +1 -1
  100. package/dist/db/repositories/ServerRepository.js +3 -3
  101. package/dist/db/repositories/ServerRepository.js.map +1 -1
  102. package/dist/db/repositories/SystemConfigRepository.js +2 -1
  103. package/dist/db/repositories/SystemConfigRepository.js.map +1 -1
  104. package/dist/db/repositories/UserConfigRepository.js.map +1 -1
  105. package/dist/db/repositories/VectorEmbeddingRepository.js +6 -5
  106. package/dist/db/repositories/VectorEmbeddingRepository.js.map +1 -1
  107. package/dist/index.js +28 -19
  108. package/dist/index.js.map +1 -1
  109. package/dist/middlewares/auth.js +4 -3
  110. package/dist/middlewares/auth.js.map +1 -1
  111. package/dist/middlewares/index.js +2 -1
  112. package/dist/middlewares/index.js.map +1 -1
  113. package/dist/middlewares/userContext.js +7 -6
  114. package/dist/middlewares/userContext.js.map +1 -1
  115. package/dist/models/OAuth.js +7 -6
  116. package/dist/models/OAuth.js.map +1 -1
  117. package/dist/models/User.js +13 -12
  118. package/dist/models/User.js.map +1 -1
  119. package/dist/routes/index.js +11 -10
  120. package/dist/routes/index.js.map +1 -1
  121. package/dist/scripts/dao-demo.js +28 -27
  122. package/dist/scripts/dao-demo.js.map +1 -1
  123. package/dist/server.js +36 -30
  124. package/dist/server.js.map +1 -1
  125. package/dist/services/activityLoggingService.js +3 -2
  126. package/dist/services/activityLoggingService.js.map +1 -1
  127. package/dist/services/authorizationService.js +28 -0
  128. package/dist/services/authorizationService.js.map +1 -0
  129. package/dist/services/betterAuthConfig.js +1 -4
  130. package/dist/services/betterAuthConfig.js.map +1 -1
  131. package/dist/services/betterAuthSession.js +8 -7
  132. package/dist/services/betterAuthSession.js.map +1 -1
  133. package/dist/services/changelogService.js +5 -2
  134. package/dist/services/changelogService.js.map +1 -1
  135. package/dist/services/cimdClientService.js +195 -0
  136. package/dist/services/cimdClientService.js.map +1 -0
  137. package/dist/services/cloudService.js +10 -9
  138. package/dist/services/cloudService.js.map +1 -1
  139. package/dist/services/contextCostService.js +6 -2
  140. package/dist/services/contextCostService.js.map +1 -1
  141. package/dist/services/groupService.js +8 -7
  142. package/dist/services/groupService.js.map +1 -1
  143. package/dist/services/hostedAuthService.js +3 -2
  144. package/dist/services/hostedAuthService.js.map +1 -1
  145. package/dist/services/hostedControlPlaneClient.js.map +1 -1
  146. package/dist/services/hostedEventSubscriber.js +9 -8
  147. package/dist/services/hostedEventSubscriber.js.map +1 -1
  148. package/dist/services/hostedRuntimeCatalogNames.js +1 -3
  149. package/dist/services/hostedRuntimeCatalogNames.js.map +1 -1
  150. package/dist/services/keepAliveService.js +7 -6
  151. package/dist/services/keepAliveService.js.map +1 -1
  152. package/dist/services/marketService.js +2 -1
  153. package/dist/services/marketService.js.map +1 -1
  154. package/dist/services/mcpOAuthProvider.js +22 -21
  155. package/dist/services/mcpOAuthProvider.js.map +1 -1
  156. package/dist/services/mcpService.js +239 -130
  157. package/dist/services/mcpService.js.map +1 -1
  158. package/dist/services/oauthClientRegistration.js +30 -29
  159. package/dist/services/oauthClientRegistration.js.map +1 -1
  160. package/dist/services/oauthServerService.js +39 -18
  161. package/dist/services/oauthServerService.js.map +1 -1
  162. package/dist/services/oauthService.js +16 -15
  163. package/dist/services/oauthService.js.map +1 -1
  164. package/dist/services/oauthSettingsStore.js +4 -3
  165. package/dist/services/oauthSettingsStore.js.map +1 -1
  166. package/dist/services/openApiGeneratorService.js +1 -3
  167. package/dist/services/openApiGeneratorService.js.map +1 -1
  168. package/dist/services/openApiToolStatsService.js +37 -0
  169. package/dist/services/openApiToolStatsService.js.map +1 -0
  170. package/dist/services/registry.js +2 -1
  171. package/dist/services/registry.js.map +1 -1
  172. package/dist/services/requestContextService.js.map +1 -1
  173. package/dist/services/serverConfigPresenter.js +85 -0
  174. package/dist/services/serverConfigPresenter.js.map +1 -0
  175. package/dist/services/smartRoutingService.js +6 -5
  176. package/dist/services/smartRoutingService.js.map +1 -1
  177. package/dist/services/sseService.js +52 -51
  178. package/dist/services/sseService.js.map +1 -1
  179. package/dist/services/templateService.js +105 -23
  180. package/dist/services/templateService.js.map +1 -1
  181. package/dist/services/toolResultCompressionService.js +8 -5
  182. package/dist/services/toolResultCompressionService.js.map +1 -1
  183. package/dist/services/upstreamOAuthDisconnectService.js +9 -6
  184. package/dist/services/upstreamOAuthDisconnectService.js.map +1 -1
  185. package/dist/services/userService.js +5 -4
  186. package/dist/services/userService.js.map +1 -1
  187. package/dist/services/vectorSearchService.js +126 -112
  188. package/dist/services/vectorSearchService.js.map +1 -1
  189. package/dist/utils/cacheUtils.js +5 -4
  190. package/dist/utils/cacheUtils.js.map +1 -1
  191. package/dist/utils/corsOrigin.js +42 -0
  192. package/dist/utils/corsOrigin.js.map +1 -0
  193. package/dist/utils/dbRetry.js +2 -5
  194. package/dist/utils/dbRetry.js.map +1 -1
  195. package/dist/utils/frontendShell.js +2 -1
  196. package/dist/utils/frontendShell.js.map +1 -1
  197. package/dist/utils/i18n.js.map +1 -1
  198. package/dist/utils/logger.js +170 -0
  199. package/dist/utils/logger.js.map +1 -0
  200. package/dist/utils/migration.js +51 -50
  201. package/dist/utils/migration.js.map +1 -1
  202. package/dist/utils/oauthIssuer.js +57 -0
  203. package/dist/utils/oauthIssuer.js.map +1 -0
  204. package/dist/utils/openApiRequestBody.js +220 -0
  205. package/dist/utils/openApiRequestBody.js.map +1 -0
  206. package/dist/utils/parameterConversion.js +2 -1
  207. package/dist/utils/parameterConversion.js.map +1 -1
  208. package/dist/utils/path.js +9 -8
  209. package/dist/utils/path.js.map +1 -1
  210. package/dist/utils/processTree.js +47 -0
  211. package/dist/utils/processTree.js.map +1 -0
  212. package/dist/utils/proxyTrust.js.map +1 -1
  213. package/dist/utils/rateLimit.js +8 -0
  214. package/dist/utils/rateLimit.js.map +1 -1
  215. package/dist/utils/requireAdmin.js +15 -0
  216. package/dist/utils/requireAdmin.js.map +1 -0
  217. package/dist/utils/serverConfigPersistence.js +3 -0
  218. package/dist/utils/serverConfigPersistence.js.map +1 -1
  219. package/dist/utils/serverConfigValidation.js +13 -0
  220. package/dist/utils/serverConfigValidation.js.map +1 -0
  221. package/dist/utils/serverNameValidation.js +56 -0
  222. package/dist/utils/serverNameValidation.js.map +1 -0
  223. package/dist/utils/serverShutdown.js +3 -2
  224. package/dist/utils/serverShutdown.js.map +1 -1
  225. package/dist/utils/smartRouting.js +4 -3
  226. package/dist/utils/smartRouting.js.map +1 -1
  227. package/dist/utils/ssrf.js +23 -10
  228. package/dist/utils/ssrf.js.map +1 -1
  229. package/dist/utils/systemConfigCache.js +40 -2
  230. package/dist/utils/systemConfigCache.js.map +1 -1
  231. package/dist/utils/tokenCost.js.map +1 -1
  232. package/dist/utils/tokenTruncation.js +9 -4
  233. package/dist/utils/tokenTruncation.js.map +1 -1
  234. package/dist/utils/version.js +3 -2
  235. package/dist/utils/version.js.map +1 -1
  236. package/frontend/dist/assets/{ActivityPage-Dx53zxEM.js → ActivityPage-Du9Nh-Jy.js} +2 -2
  237. package/frontend/dist/assets/{ActivityPage-Dx53zxEM.js.map → ActivityPage-Du9Nh-Jy.js.map} +1 -1
  238. package/frontend/dist/assets/ConfirmDialog-3APts2Y9.js +2 -0
  239. package/frontend/dist/assets/ConfirmDialog-3APts2Y9.js.map +1 -0
  240. package/frontend/dist/assets/Dashboard-J4G-AZkI.js +2 -0
  241. package/frontend/dist/assets/{Dashboard-ZYVsSvOw.js.map → Dashboard-J4G-AZkI.js.map} +1 -1
  242. package/frontend/dist/assets/{DeleteDialog-DNe-zTEl.js → DeleteDialog-D9ycSRvn.js} +2 -2
  243. package/frontend/dist/assets/{DeleteDialog-DNe-zTEl.js.map → DeleteDialog-D9ycSRvn.js.map} +1 -1
  244. package/frontend/dist/assets/{EndpointCopy-ngxLPeDF.js → EndpointCopy-DFeLcU9A.js} +2 -2
  245. package/frontend/dist/assets/{EndpointCopy-ngxLPeDF.js.map → EndpointCopy-DFeLcU9A.js.map} +1 -1
  246. package/frontend/dist/assets/GroupsPage-CGMZBiXd.js +33 -0
  247. package/frontend/dist/assets/{GroupsPage-JPtupGpI.js.map → GroupsPage-CGMZBiXd.js.map} +1 -1
  248. package/frontend/dist/assets/{LoginPage-B6rU3Ugr.js → LoginPage-g5pJLBk0.js} +2 -2
  249. package/frontend/dist/assets/{LoginPage-B6rU3Ugr.js.map → LoginPage-g5pJLBk0.js.map} +1 -1
  250. package/frontend/dist/assets/{LogsPage-CXq382fb.js → LogsPage-Bkv7xhNf.js} +2 -2
  251. package/frontend/dist/assets/{LogsPage-CXq382fb.js.map → LogsPage-Bkv7xhNf.js.map} +1 -1
  252. package/frontend/dist/assets/MarketPage-WkLrckIr.js +3 -0
  253. package/frontend/dist/assets/MarketPage-WkLrckIr.js.map +1 -0
  254. package/frontend/dist/assets/{OAuthConsentPage-C-n6tv3-.js → OAuthConsentPage-CA35XoBK.js} +2 -2
  255. package/frontend/dist/assets/{OAuthConsentPage-C-n6tv3-.js.map → OAuthConsentPage-CA35XoBK.js.map} +1 -1
  256. package/frontend/dist/assets/{Pagination-DLSuQ8hw.js → Pagination-Dwko3g48.js} +2 -2
  257. package/frontend/dist/assets/{Pagination-DLSuQ8hw.js.map → Pagination-Dwko3g48.js.map} +1 -1
  258. package/frontend/dist/assets/{PromptsPage-BLpy76K4.js → PromptsPage-BuDdW69R.js} +2 -2
  259. package/frontend/dist/assets/{PromptsPage-BLpy76K4.js.map → PromptsPage-BuDdW69R.js.map} +1 -1
  260. package/frontend/dist/assets/{ResourcesPage-C5nynRqE.js → ResourcesPage-Cu-eD5e2.js} +2 -2
  261. package/frontend/dist/assets/{ResourcesPage-C5nynRqE.js.map → ResourcesPage-Cu-eD5e2.js.map} +1 -1
  262. package/frontend/dist/assets/{ServersPage-Ca5W9cPW.js → ServersPage-B1Np5x3N.js} +8 -8
  263. package/frontend/dist/assets/ServersPage-B1Np5x3N.js.map +1 -0
  264. package/frontend/dist/assets/{SettingsPage-DgFBjp_O.js → SettingsPage-BQN8-ZQh.js} +4 -4
  265. package/frontend/dist/assets/SettingsPage-BQN8-ZQh.js.map +1 -0
  266. package/frontend/dist/assets/{StatusDot-CmSkukx0.js → StatusDot-WyvgqplP.js} +2 -2
  267. package/frontend/dist/assets/{StatusDot-CmSkukx0.js.map → StatusDot-WyvgqplP.js.map} +1 -1
  268. package/frontend/dist/assets/{ToggleGroup-sG_2LQom.js → ToggleGroup-CmeedsZU.js} +2 -2
  269. package/frontend/dist/assets/{ToggleGroup-sG_2LQom.js.map → ToggleGroup-CmeedsZU.js.map} +1 -1
  270. package/frontend/dist/assets/UsersPage-DqDFrIIW.js +2 -0
  271. package/frontend/dist/assets/UsersPage-DqDFrIIW.js.map +1 -0
  272. package/frontend/dist/assets/contextCost-CilWqGWT.js +2 -0
  273. package/frontend/dist/assets/contextCost-CilWqGWT.js.map +1 -0
  274. package/frontend/dist/assets/{framework-vendor-I9Y6AgD5.js → framework-vendor-BHAQX05P.js} +3 -3
  275. package/frontend/dist/assets/{framework-vendor-I9Y6AgD5.js.map → framework-vendor-BHAQX05P.js.map} +1 -1
  276. package/frontend/dist/assets/{i18n-vendor-y9bLzIeh.js → i18n-vendor-CMcB7XUR.js} +2 -2
  277. package/frontend/dist/assets/{i18n-vendor-y9bLzIeh.js.map → i18n-vendor-CMcB7XUR.js.map} +1 -1
  278. package/frontend/dist/assets/{icons-vendor-BFl4A9fq.js → icons-vendor-HZHHWeTa.js} +2 -2
  279. package/frontend/dist/assets/{icons-vendor-BFl4A9fq.js.map → icons-vendor-HZHHWeTa.js.map} +1 -1
  280. package/frontend/dist/assets/index-BvU2-VT8.js +3 -0
  281. package/frontend/dist/assets/{index-CLugsCsy.js.map → index-BvU2-VT8.js.map} +1 -1
  282. package/frontend/dist/assets/index-DtrCVU1h.css +1 -0
  283. package/frontend/dist/assets/passwordValidation-DTLWgUy9.js +2 -0
  284. package/frontend/dist/assets/passwordValidation-DTLWgUy9.js.map +1 -0
  285. package/frontend/dist/assets/{resourceService-33rS8QGJ.js → resourceService-BFH4w47h.js} +2 -2
  286. package/frontend/dist/assets/{resourceService-33rS8QGJ.js.map → resourceService-BFH4w47h.js.map} +1 -1
  287. package/frontend/dist/assets/useCostData-CoM1SxdS.js +2 -0
  288. package/frontend/dist/assets/useCostData-CoM1SxdS.js.map +1 -0
  289. package/frontend/dist/assets/useSettingsData-DKrECrG1.js +2 -0
  290. package/frontend/dist/assets/{useSettingsData-fK2bv9oN.js.map → useSettingsData-DKrECrG1.js.map} +1 -1
  291. package/frontend/dist/assets/variableDetection-CIrYDjrq.js +16 -0
  292. package/frontend/dist/assets/variableDetection-CIrYDjrq.js.map +1 -0
  293. package/frontend/dist/index.html +5 -5
  294. package/package.json +2 -2
  295. package/frontend/dist/assets/ConfirmDialog-CYfXEuyU.js +0 -2
  296. package/frontend/dist/assets/ConfirmDialog-CYfXEuyU.js.map +0 -1
  297. package/frontend/dist/assets/Dashboard-ZYVsSvOw.js +0 -2
  298. package/frontend/dist/assets/GroupsPage-JPtupGpI.js +0 -33
  299. package/frontend/dist/assets/MarketPage-BGnQQyXK.js +0 -3
  300. package/frontend/dist/assets/MarketPage-BGnQQyXK.js.map +0 -1
  301. package/frontend/dist/assets/ServersPage-Ca5W9cPW.js.map +0 -1
  302. package/frontend/dist/assets/SettingsPage-DgFBjp_O.js.map +0 -1
  303. package/frontend/dist/assets/UsersPage-PHkFXLL8.js +0 -2
  304. package/frontend/dist/assets/UsersPage-PHkFXLL8.js.map +0 -1
  305. package/frontend/dist/assets/contextCost-D_iNNbhX.js +0 -2
  306. package/frontend/dist/assets/contextCost-D_iNNbhX.js.map +0 -1
  307. package/frontend/dist/assets/index-CGvImZ3F.css +0 -1
  308. package/frontend/dist/assets/index-CLugsCsy.js +0 -3
  309. package/frontend/dist/assets/useSettingsData-fK2bv9oN.js +0 -2
  310. package/frontend/dist/assets/variableDetection-ByJ_cnxa.js +0 -16
  311. package/frontend/dist/assets/variableDetection-ByJ_cnxa.js.map +0 -1
@@ -12,18 +12,19 @@ import { OAuthTokenRepository } from '../db/repositories/OAuthTokenRepository.js
12
12
  import { BearerKeyRepository } from '../db/repositories/BearerKeyRepository.js';
13
13
  import { BuiltinPromptRepository } from '../db/repositories/BuiltinPromptRepository.js';
14
14
  import { BuiltinResourceRepository } from '../db/repositories/BuiltinResourceRepository.js';
15
+ import { logger } from './logger.js';
15
16
  /**
16
17
  * Migrate from file-based configuration to database
17
18
  */
18
19
  export async function migrateToDatabase() {
19
20
  try {
20
- console.log('Starting migration from file to database...');
21
+ logger.log('Starting migration from file to database...');
21
22
  // Initialize database connection
22
23
  await initializeDatabase();
23
- console.log('Database connection established');
24
+ logger.log('Database connection established');
24
25
  // Load current settings from file
25
26
  const settings = loadOriginalSettings();
26
- console.log('Loaded settings from file');
27
+ logger.log('Loaded settings from file');
27
28
  // Create repositories
28
29
  const userRepo = new UserRepository();
29
30
  const serverRepo = new ServerRepository();
@@ -37,7 +38,7 @@ export async function migrateToDatabase() {
37
38
  const builtinResourceRepo = new BuiltinResourceRepository();
38
39
  // Migrate users
39
40
  if (settings.users && settings.users.length > 0) {
40
- console.log(`Migrating ${settings.users.length} users...`);
41
+ logger.log(`Migrating ${settings.users.length} users...`);
41
42
  for (const user of settings.users) {
42
43
  const exists = await userRepo.exists(user.username);
43
44
  if (!exists) {
@@ -48,17 +49,17 @@ export async function migrateToDatabase() {
48
49
  email: user.email ?? null,
49
50
  ssoUserId: user.ssoUserId ?? null,
50
51
  });
51
- console.log(` - Created user: ${user.username}`);
52
+ logger.log(` - Created user: ${user.username}`);
52
53
  }
53
54
  else {
54
- console.log(` - User already exists: ${user.username}`);
55
+ logger.log(` - User already exists: ${user.username}`);
55
56
  }
56
57
  }
57
58
  }
58
59
  // Migrate servers
59
60
  if (settings.mcpServers) {
60
61
  const serverNames = Object.keys(settings.mcpServers);
61
- console.log(`Migrating ${serverNames.length} servers...`);
62
+ logger.log(`Migrating ${serverNames.length} servers...`);
62
63
  for (const [name, config] of Object.entries(settings.mcpServers)) {
63
64
  const exists = await serverRepo.exists(name);
64
65
  if (!exists) {
@@ -86,16 +87,16 @@ export async function migrateToDatabase() {
86
87
  passthroughHeaders: config.passthroughHeaders,
87
88
  perSessionClient: config.perSessionClient,
88
89
  });
89
- console.log(` - Created server: ${name}`);
90
+ logger.log(` - Created server: ${name}`);
90
91
  }
91
92
  else {
92
- console.log(` - Server already exists: ${name}`);
93
+ logger.log(` - Server already exists: ${name}`);
93
94
  }
94
95
  }
95
96
  }
96
97
  // Migrate groups
97
98
  if (settings.groups && settings.groups.length > 0) {
98
- console.log(`Migrating ${settings.groups.length} groups...`);
99
+ logger.log(`Migrating ${settings.groups.length} groups...`);
99
100
  for (const group of settings.groups) {
100
101
  const exists = await groupRepo.existsByName(group.name);
101
102
  if (!exists) {
@@ -105,16 +106,16 @@ export async function migrateToDatabase() {
105
106
  servers: Array.isArray(group.servers) ? group.servers : [],
106
107
  owner: group.owner,
107
108
  });
108
- console.log(` - Created group: ${group.name}`);
109
+ logger.log(` - Created group: ${group.name}`);
109
110
  }
110
111
  else {
111
- console.log(` - Group already exists: ${group.name}`);
112
+ logger.log(` - Group already exists: ${group.name}`);
112
113
  }
113
114
  }
114
115
  }
115
116
  // Migrate system config
116
117
  if (settings.systemConfig) {
117
- console.log('Migrating system configuration...');
118
+ logger.log('Migrating system configuration...');
118
119
  const systemConfig = {
119
120
  routing: settings.systemConfig.routing || {},
120
121
  install: settings.systemConfig.install || {},
@@ -129,10 +130,10 @@ export async function migrateToDatabase() {
129
130
  discovery: settings.systemConfig.discovery || {},
130
131
  };
131
132
  await systemConfigRepo.update(systemConfig);
132
- console.log(' - System configuration updated');
133
+ logger.log(' - System configuration updated');
133
134
  }
134
135
  // Migrate bearer auth keys
135
- console.log('Migrating bearer authentication keys...');
136
+ logger.log('Migrating bearer authentication keys...');
136
137
  // Prefer explicit bearerKeys if present in settings
137
138
  if (Array.isArray(settings.bearerKeys) && settings.bearerKeys.length > 0) {
138
139
  for (const key of settings.bearerKeys) {
@@ -146,7 +147,7 @@ export async function migrateToDatabase() {
146
147
  allowedGroups: key.allowedGroups ?? [],
147
148
  allowedServers: key.allowedServers ?? [],
148
149
  });
149
- console.log(` - Migrated bearer key: ${key.name} (${key.id ?? 'no-id'})`);
150
+ logger.log(` - Migrated bearer key: ${key.name} (${key.id ?? 'no-id'})`);
150
151
  }
151
152
  }
152
153
  else if (settings.systemConfig?.routing) {
@@ -169,31 +170,31 @@ export async function migrateToDatabase() {
169
170
  allowedGroups: [],
170
171
  allowedServers: [],
171
172
  });
172
- console.log(` - Migrated legacy bearer auth config to key: default (enabled=${enableBearerAuth})`);
173
+ logger.log(` - Migrated legacy bearer auth config to key: default (enabled=${enableBearerAuth})`);
173
174
  }
174
175
  else {
175
- console.log(' - No legacy bearer auth key found, skipping bearer key migration');
176
+ logger.log(' - No legacy bearer auth key found, skipping bearer key migration');
176
177
  }
177
178
  }
178
179
  else {
179
- console.log(' - No bearer auth configuration found, skipping bearer key migration');
180
+ logger.log(' - No bearer auth configuration found, skipping bearer key migration');
180
181
  }
181
182
  // Migrate user configs
182
183
  if (settings.userConfigs) {
183
184
  const usernames = Object.keys(settings.userConfigs);
184
- console.log(`Migrating ${usernames.length} user configurations...`);
185
+ logger.log(`Migrating ${usernames.length} user configurations...`);
185
186
  for (const [username, config] of Object.entries(settings.userConfigs)) {
186
187
  const userConfig = {
187
188
  routing: config.routing || {},
188
189
  additionalConfig: config,
189
190
  };
190
191
  await userConfigRepo.update(username, userConfig);
191
- console.log(` - Updated configuration for user: ${username}`);
192
+ logger.log(` - Updated configuration for user: ${username}`);
192
193
  }
193
194
  }
194
195
  // Migrate OAuth clients
195
196
  if (settings.oauthClients && settings.oauthClients.length > 0) {
196
- console.log(`Migrating ${settings.oauthClients.length} OAuth clients...`);
197
+ logger.log(`Migrating ${settings.oauthClients.length} OAuth clients...`);
197
198
  for (const client of settings.oauthClients) {
198
199
  const exists = await oauthClientRepo.exists(client.clientId);
199
200
  if (!exists) {
@@ -207,16 +208,16 @@ export async function migrateToDatabase() {
207
208
  owner: client.owner,
208
209
  metadata: client.metadata,
209
210
  });
210
- console.log(` - Created OAuth client: ${client.clientId}`);
211
+ logger.log(` - Created OAuth client: ${client.clientId}`);
211
212
  }
212
213
  else {
213
- console.log(` - OAuth client already exists: ${client.clientId}`);
214
+ logger.log(` - OAuth client already exists: ${client.clientId}`);
214
215
  }
215
216
  }
216
217
  }
217
218
  // Migrate OAuth tokens
218
219
  if (settings.oauthTokens && settings.oauthTokens.length > 0) {
219
- console.log(`Migrating ${settings.oauthTokens.length} OAuth tokens...`);
220
+ logger.log(`Migrating ${settings.oauthTokens.length} OAuth tokens...`);
220
221
  for (const token of settings.oauthTokens) {
221
222
  const exists = await oauthTokenRepo.exists(token.accessToken);
222
223
  if (!exists) {
@@ -231,16 +232,16 @@ export async function migrateToDatabase() {
231
232
  clientId: token.clientId,
232
233
  username: token.username,
233
234
  });
234
- console.log(` - Created OAuth token for client: ${token.clientId}`);
235
+ logger.log(` - Created OAuth token for client: ${token.clientId}`);
235
236
  }
236
237
  else {
237
- console.log(` - OAuth token already exists: ${token.accessToken.substring(0, 8)}...`);
238
+ logger.log(` - OAuth token already exists: ${token.accessToken.substring(0, 8)}...`);
238
239
  }
239
240
  }
240
241
  }
241
242
  // Migrate built-in prompts
242
243
  if (settings.prompts && settings.prompts.length > 0) {
243
- console.log(`Migrating ${settings.prompts.length} built-in prompts...`);
244
+ logger.log(`Migrating ${settings.prompts.length} built-in prompts...`);
244
245
  for (const prompt of settings.prompts) {
245
246
  const exists = await builtinPromptRepo.findByName(prompt.name);
246
247
  if (!exists) {
@@ -252,16 +253,16 @@ export async function migrateToDatabase() {
252
253
  arguments: prompt.arguments,
253
254
  enabled: prompt.enabled !== false,
254
255
  });
255
- console.log(` - Created built-in prompt: ${prompt.name}`);
256
+ logger.log(` - Created built-in prompt: ${prompt.name}`);
256
257
  }
257
258
  else {
258
- console.log(` - Built-in prompt already exists: ${prompt.name}`);
259
+ logger.log(` - Built-in prompt already exists: ${prompt.name}`);
259
260
  }
260
261
  }
261
262
  }
262
263
  // Migrate built-in resources
263
264
  if (settings.resources && settings.resources.length > 0) {
264
- console.log(`Migrating ${settings.resources.length} built-in resources...`);
265
+ logger.log(`Migrating ${settings.resources.length} built-in resources...`);
265
266
  for (const resource of settings.resources) {
266
267
  const exists = await builtinResourceRepo.findByUri(resource.uri);
267
268
  if (!exists) {
@@ -273,18 +274,18 @@ export async function migrateToDatabase() {
273
274
  content: resource.content,
274
275
  enabled: resource.enabled !== false,
275
276
  });
276
- console.log(` - Created built-in resource: ${resource.uri}`);
277
+ logger.log(` - Created built-in resource: ${resource.uri}`);
277
278
  }
278
279
  else {
279
- console.log(` - Built-in resource already exists: ${resource.uri}`);
280
+ logger.log(` - Built-in resource already exists: ${resource.uri}`);
280
281
  }
281
282
  }
282
283
  }
283
- console.log('✅ Migration completed successfully');
284
+ logger.log('✅ Migration completed successfully');
284
285
  return true;
285
286
  }
286
287
  catch (error) {
287
- console.error('❌ Migration failed:', error);
288
+ logger.error('❌ Migration failed:', error);
288
289
  return false;
289
290
  }
290
291
  }
@@ -294,32 +295,32 @@ export async function migrateToDatabase() {
294
295
  */
295
296
  export async function initializeDatabaseMode() {
296
297
  try {
297
- console.log('Initializing database mode...');
298
+ logger.log('Initializing database mode...');
298
299
  // Initialize database connection
299
300
  await initializeDatabase();
300
- console.log('Database connection established');
301
+ logger.log('Database connection established');
301
302
  // Switch to database factory
302
303
  setDaoFactory(DatabaseDaoFactory.getInstance());
303
- console.log('Switched to database-backed DAO implementations');
304
+ logger.log('Switched to database-backed DAO implementations');
304
305
  // Check if migration is needed
305
306
  const userRepo = new UserRepository();
306
307
  const bearerKeyRepo = new BearerKeyRepository();
307
308
  const systemConfigRepo = new SystemConfigRepository();
308
309
  const userCount = await userRepo.count();
309
310
  if (userCount === 0) {
310
- console.log('No users found in database, running migration...');
311
+ logger.log('No users found in database, running migration...');
311
312
  const migrated = await migrateToDatabase();
312
313
  if (!migrated) {
313
314
  throw new Error('Migration failed');
314
315
  }
315
316
  }
316
317
  else {
317
- console.log(`Database already contains ${userCount} users, skipping migration`);
318
+ logger.log(`Database already contains ${userCount} users, skipping migration`);
318
319
  // One-time migration for legacy bearer auth config stored inside DB routing settings.
319
320
  // If bearerKeys table already has data, do nothing.
320
321
  const bearerKeyCount = await bearerKeyRepo.count();
321
322
  if (bearerKeyCount > 0) {
322
- console.log(`Bearer keys table already contains ${bearerKeyCount} keys, skipping legacy bearer auth migration`);
323
+ logger.log(`Bearer keys table already contains ${bearerKeyCount} keys, skipping legacy bearer auth migration`);
323
324
  }
324
325
  else {
325
326
  const systemConfig = await systemConfigRepo.get();
@@ -336,18 +337,18 @@ export async function initializeDatabaseMode() {
336
337
  allowedGroups: [],
337
338
  allowedServers: [],
338
339
  });
339
- console.log(` - Migrated legacy DB routing bearer auth config to key: default (enabled=${enableBearerAuth})`);
340
+ logger.log(` - Migrated legacy DB routing bearer auth config to key: default (enabled=${enableBearerAuth})`);
340
341
  }
341
342
  else {
342
- console.log('No legacy DB routing bearer auth key found, skipping bearer key migration');
343
+ logger.log('No legacy DB routing bearer auth key found, skipping bearer key migration');
343
344
  }
344
345
  }
345
346
  }
346
- console.log('✅ Database mode initialized successfully');
347
+ logger.log('✅ Database mode initialized successfully');
347
348
  return true;
348
349
  }
349
350
  catch (error) {
350
- console.error('❌ Failed to initialize database mode:', error);
351
+ logger.error('❌ Failed to initialize database mode:', error);
351
352
  return false;
352
353
  }
353
354
  }
@@ -355,16 +356,16 @@ export async function initializeDatabaseMode() {
355
356
  * CLI tool for migration
356
357
  */
357
358
  export async function runMigrationCli() {
358
- console.log('MCPHub Configuration Migration Tool');
359
- console.log('====================================\n');
359
+ logger.log('MCPHub Configuration Migration Tool');
360
+ logger.log('====================================\n');
360
361
  const success = await migrateToDatabase();
361
362
  if (success) {
362
- console.log('\n✅ Migration completed successfully!');
363
- console.log('You can now set USE_DB=true to use database-backed configuration');
363
+ logger.log('\n✅ Migration completed successfully!');
364
+ logger.log('You can now set USE_DB=true to use database-backed configuration');
364
365
  process.exit(0);
365
366
  }
366
367
  else {
367
- console.log('\n❌ Migration failed!');
368
+ logger.log('\n❌ Migration failed!');
368
369
  process.exit(1);
369
370
  }
370
371
  }
@@ -1 +1 @@
1
- {"version":3,"file":"migration.js","sourceRoot":"","sources":["../../src/utils/migration.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migration.js","sourceRoot":"","sources":["../../src/utils/migration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * RFC 9207 (OAuth 2.0 Authorization Server Issuer Identification) helpers.
3
+ *
4
+ * When MCPHub acts as an OAuth *client* toward upstream MCP servers, the
5
+ * authorization response redirect may carry an `iss` parameter. Per RFC 9207 /
6
+ * SEP-2468 the client must validate it against the issuer it sent the
7
+ * authorization request to before redeeming the code — this closes the
8
+ * authorization-server mix-up attack where a malicious AS's code is replayed
9
+ * at another AS's token endpoint under the same redirect URI.
10
+ */
11
+ const originOf = (url) => {
12
+ if (!url) {
13
+ return undefined;
14
+ }
15
+ try {
16
+ return new URL(url).origin;
17
+ }
18
+ catch {
19
+ return undefined;
20
+ }
21
+ };
22
+ /**
23
+ * Expected `iss` values for an upstream authorization flow: the explicitly
24
+ * configured issuer plus the origin of the authorization endpoint actually used.
25
+ */
26
+ export const expectedIssValues = (ctx) => {
27
+ const candidates = [ctx.configuredIssuer, originOf(ctx.authorizationUrl)];
28
+ return [...new Set(candidates.filter((c) => Boolean(c)))];
29
+ };
30
+ /**
31
+ * Validate the `iss` authorization-response parameter.
32
+ *
33
+ * - Absent `iss` → valid but unchecked (older servers do not send it).
34
+ * - Present `iss` with nothing to compare against → unchecked fail-safe pass,
35
+ * since we cannot establish what the client expected (no mix-up possible
36
+ * when only one AS is involved in a flow keyed by our own state parameter).
37
+ * - Present `iss` → must exactly match one of the expected values.
38
+ */
39
+ export const validateAuthorizationIss = (ctx) => {
40
+ const { iss } = ctx;
41
+ if (!iss) {
42
+ return { valid: true, checked: false };
43
+ }
44
+ const expected = expectedIssValues(ctx);
45
+ if (expected.length === 0) {
46
+ return { valid: true, checked: false };
47
+ }
48
+ if (expected.includes(iss)) {
49
+ return { valid: true, checked: true };
50
+ }
51
+ return {
52
+ valid: false,
53
+ checked: true,
54
+ reason: 'iss parameter does not match the expected authorization server issuer',
55
+ };
56
+ };
57
+ //# sourceMappingURL=oauthIssuer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauthIssuer.js","sourceRoot":"","sources":["../../src/utils/oauthIssuer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAgBH,MAAM,QAAQ,GAAG,CAAC,GAAuB,EAAsB,EAAE;IAC/D,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,CAAC;QACH,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,GAAoC,EAAY,EAAE;IAClF,MAAM,UAAU,GAAG,CAAC,GAAG,CAAC,gBAAgB,EAAE,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC1E,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzE,CAAC,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CACtC,GAAoC,EACf,EAAE;IACvB,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC;IAEpB,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IACzC,CAAC;IAED,MAAM,QAAQ,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IACzC,CAAC;IAED,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACxC,CAAC;IAED,OAAO;QACL,KAAK,EAAE,KAAK;QACZ,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,uEAAuE;KAChF,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,220 @@
1
+ /**
2
+ * Request-body handling for OpenAPI tool operations: resolving an operation's
3
+ * declared body content type, advertising it in a model-friendly tool schema,
4
+ * and serializing outgoing bodies per content type (#1078).
5
+ *
6
+ * Schema advertisement (OpenAPIClient.generateInputSchema) and outgoing
7
+ * serialization (OpenAPIClient.callTool) both resolve the operation's body
8
+ * through selectRequestBodyContent so they can never drift apart.
9
+ */
10
+ // Request-body content types the hub can advertise and serialize, in the order
11
+ // they are preferred when an operation declares several.
12
+ const REQUEST_BODY_CONTENT_TYPE_PRIORITY = [
13
+ 'application/json',
14
+ 'application/x-www-form-urlencoded',
15
+ 'multipart/form-data',
16
+ ];
17
+ // Media type keys may carry parameters ('application/json; charset=utf-8');
18
+ // compare on the bare type so those declarations still match.
19
+ function normalizeMediaTypeKey(key) {
20
+ return key.split(';')[0].trim().toLowerCase();
21
+ }
22
+ export function selectRequestBodyContent(requestBody) {
23
+ const content = requestBody?.content;
24
+ if (!content) {
25
+ return null;
26
+ }
27
+ for (const contentType of REQUEST_BODY_CONTENT_TYPE_PRIORITY) {
28
+ const key = Object.keys(content).find((k) => normalizeMediaTypeKey(k) === contentType);
29
+ if (!key) {
30
+ continue;
31
+ }
32
+ const mediaType = content[key];
33
+ if (mediaType) {
34
+ return { contentType, mediaType };
35
+ }
36
+ }
37
+ return null;
38
+ }
39
+ // Rewrites a multipart/form-data body schema for model consumption. Binary
40
+ // fields (`type: string, format: binary`) become plain strings carrying
41
+ // base64-encoded contents, because tool arguments arrive as JSON — a model
42
+ // cannot produce raw bytes. The rewrite must tolerate the circular references
43
+ // SwaggerParser.dereference leaves behind (#959), hence the memoized walk.
44
+ const MULTIPART_BINARY_FIELD_HINT = 'Provide base64-encoded file contents; MCPHub decodes them and uploads the bytes as this file part. An object {content, filename, contentType} may be supplied instead of a bare string to control the uploaded filename and MIME type.';
45
+ export function makeMultipartBodySchemaModelFriendly(schema) {
46
+ const cache = new Map();
47
+ const transform = (node) => {
48
+ if (!node || typeof node !== 'object' || Array.isArray(node)) {
49
+ return node;
50
+ }
51
+ const cached = cache.get(node);
52
+ if (cached !== undefined) {
53
+ return cached;
54
+ }
55
+ const source = node;
56
+ const clone = { ...source };
57
+ cache.set(node, clone);
58
+ if (source.type === 'string' && source.format === 'binary') {
59
+ delete clone.format;
60
+ const ownDescription = typeof source.description === 'string' ? `${source.description.trim()} ` : '';
61
+ clone.description = `${ownDescription}${MULTIPART_BINARY_FIELD_HINT}`;
62
+ }
63
+ if (clone.items) {
64
+ clone.items = transform(clone.items);
65
+ }
66
+ if (clone.additionalProperties && typeof clone.additionalProperties === 'object') {
67
+ clone.additionalProperties = transform(clone.additionalProperties);
68
+ }
69
+ for (const keyword of ['properties', 'patternProperties']) {
70
+ const nested = clone[keyword];
71
+ if (nested && typeof nested === 'object') {
72
+ const transformed = {};
73
+ for (const [key, value] of Object.entries(nested)) {
74
+ transformed[key] = transform(value);
75
+ }
76
+ clone[keyword] = transformed;
77
+ }
78
+ }
79
+ for (const keyword of ['anyOf', 'oneOf', 'allOf', 'prefixItems']) {
80
+ if (Array.isArray(clone[keyword])) {
81
+ clone[keyword] = clone[keyword].map(transform);
82
+ }
83
+ }
84
+ return clone;
85
+ };
86
+ return transform(schema);
87
+ }
88
+ const DEFAULT_UPLOAD_FILENAME = 'upload';
89
+ const DEFAULT_UPLOAD_CONTENT_TYPE = 'application/octet-stream';
90
+ const MULTIPART_FILE_DESCRIPTOR_KEYS = new Set(['content', 'filename', 'contentType']);
91
+ // base64 (standard or URL-safe alphabet), whitespace allowed around the value
92
+ const BASE64_PATTERN = /^[A-Za-z0-9+/\-_]+={0,2}$/;
93
+ function decodeBase64FileContents(fieldName, value) {
94
+ const compact = value.replace(/\s+/g, '');
95
+ if (!BASE64_PATTERN.test(compact)) {
96
+ throw new Error(`Multipart field '${fieldName}' must be a base64-encoded string of the file contents`);
97
+ }
98
+ const buffer = Buffer.from(compact, 'base64');
99
+ if (buffer.length === 0) {
100
+ throw new Error(`Multipart field '${fieldName}' does not contain any decodable base64 file contents`);
101
+ }
102
+ return buffer;
103
+ }
104
+ function appendMultipartField(parts, name, value, isBinaryField) {
105
+ if (value === undefined || value === null) {
106
+ return;
107
+ }
108
+ // Arrays expand into repeated parts, matching how form fields repeat keys.
109
+ if (Array.isArray(value)) {
110
+ for (const item of value) {
111
+ appendMultipartField(parts, name, item, isBinaryField);
112
+ }
113
+ return;
114
+ }
115
+ if (isBinaryField) {
116
+ let contents;
117
+ let filename;
118
+ let contentType;
119
+ if (typeof value === 'string') {
120
+ contents = value;
121
+ }
122
+ else if (typeof value === 'object' &&
123
+ typeof value.content === 'string') {
124
+ const descriptor = value;
125
+ contents = descriptor.content;
126
+ if (typeof descriptor.filename === 'string') {
127
+ filename = descriptor.filename;
128
+ }
129
+ if (typeof descriptor.contentType === 'string') {
130
+ contentType = descriptor.contentType;
131
+ }
132
+ }
133
+ else {
134
+ throw new Error(`Multipart field '${name}' expects a base64-encoded string or an object {content, filename, contentType}`);
135
+ }
136
+ parts.push({
137
+ name,
138
+ value: decodeBase64FileContents(name, contents),
139
+ filename: filename ?? DEFAULT_UPLOAD_FILENAME,
140
+ contentType: contentType ?? DEFAULT_UPLOAD_CONTENT_TYPE,
141
+ });
142
+ return;
143
+ }
144
+ // Defensive: honor explicit file descriptors even when the spec did not mark
145
+ // the field binary, then fall back to text serialization.
146
+ if (typeof value === 'object') {
147
+ const record = value;
148
+ if (typeof record.content === 'string' &&
149
+ Object.keys(record).every((key) => MULTIPART_FILE_DESCRIPTOR_KEYS.has(key))) {
150
+ appendMultipartField(parts, name, value, true);
151
+ return;
152
+ }
153
+ parts.push({ name, value: JSON.stringify(record) });
154
+ return;
155
+ }
156
+ parts.push({ name, value: String(value) });
157
+ }
158
+ export function buildMultipartParts(bodyValue, schema) {
159
+ if (!bodyValue || typeof bodyValue !== 'object' || Array.isArray(bodyValue)) {
160
+ throw new Error('multipart/form-data request body must be provided as an object of form fields');
161
+ }
162
+ const properties = schema?.properties;
163
+ const isBinaryField = (name) => {
164
+ const propertySchema = properties?.[name];
165
+ return !!propertySchema && propertySchema.type === 'string' && propertySchema.format === 'binary';
166
+ };
167
+ const parts = [];
168
+ for (const [name, value] of Object.entries(bodyValue)) {
169
+ appendMultipartField(parts, name, value, isBinaryField(name));
170
+ }
171
+ return parts;
172
+ }
173
+ // Quotes/newlines in part names or filenames would corrupt the multipart
174
+ // framing; replace them rather than trusting upstream spec names.
175
+ function sanitizeHeaderToken(token) {
176
+ return token.replace(/[\r\n"]/g, '_');
177
+ }
178
+ export function serializeMultipartBody(parts, boundary) {
179
+ const chunks = [];
180
+ for (const part of parts) {
181
+ chunks.push(Buffer.from(`--${boundary}\r\n`, 'utf8'));
182
+ if (part.filename !== undefined) {
183
+ chunks.push(Buffer.from(`Content-Disposition: form-data; name="${sanitizeHeaderToken(part.name)}"; filename="${sanitizeHeaderToken(part.filename)}"\r\n`, 'utf8'));
184
+ chunks.push(Buffer.from(`Content-Type: ${part.contentType ?? DEFAULT_UPLOAD_CONTENT_TYPE}\r\n\r\n`, 'utf8'));
185
+ chunks.push(part.value);
186
+ }
187
+ else {
188
+ chunks.push(Buffer.from(`Content-Disposition: form-data; name="${sanitizeHeaderToken(part.name)}"\r\n\r\n`, 'utf8'));
189
+ chunks.push(Buffer.from(String(part.value), 'utf8'));
190
+ }
191
+ chunks.push(Buffer.from('\r\n', 'utf8'));
192
+ }
193
+ chunks.push(Buffer.from(`--${boundary}--\r\n`, 'utf8'));
194
+ return Buffer.concat(chunks);
195
+ }
196
+ // Serializes an application/x-www-form-urlencoded body: arrays become repeated
197
+ // keys, nested objects are JSON-stringified, primitives use their string form.
198
+ export function encodeFormUrlEncoded(bodyValue) {
199
+ if (!bodyValue || typeof bodyValue !== 'object' || Array.isArray(bodyValue)) {
200
+ throw new Error('application/x-www-form-urlencoded request body must be provided as an object of form fields');
201
+ }
202
+ const params = new URLSearchParams();
203
+ const append = (key, value) => {
204
+ if (value === undefined || value === null) {
205
+ return;
206
+ }
207
+ if (Array.isArray(value)) {
208
+ for (const item of value) {
209
+ append(key, item);
210
+ }
211
+ return;
212
+ }
213
+ params.append(key, typeof value === 'object' ? JSON.stringify(value) : String(value));
214
+ };
215
+ for (const [key, value] of Object.entries(bodyValue)) {
216
+ append(key, value);
217
+ }
218
+ return params.toString();
219
+ }
220
+ //# sourceMappingURL=openApiRequestBody.js.map