@redocly/realm 0.129.2 → 0.130.0-custom.2

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 (464) hide show
  1. package/CHANGELOG.md +392 -83
  2. package/dist/bin.d.ts +1 -0
  3. package/dist/bin.js +1 -1
  4. package/dist/cli/develop.js +1 -1
  5. package/dist/cli/eject/resolveEjectParams.js +1 -1
  6. package/dist/cli/prepare/copy-env-files.js +1 -1
  7. package/dist/cli/prepare/index.js +1 -1
  8. package/dist/cli/stats/collectors/openapi.d.ts +3 -0
  9. package/dist/cli/stats/collectors/openapi.js +1 -0
  10. package/dist/cli/stats/index.d.ts +7 -0
  11. package/dist/cli/stats/index.js +1 -0
  12. package/dist/cli/stats/options.d.ts +3 -0
  13. package/dist/cli/stats/options.js +1 -0
  14. package/dist/cli/telemetry/index.d.ts +2 -2
  15. package/dist/cli/telemetry/index.js +1 -1
  16. package/dist/client/App.js +1 -1
  17. package/dist/client/ErrorBoundary.js +1 -1
  18. package/dist/client/app/Sidebar/RequestAccessButton.js +2 -2
  19. package/dist/client/app/Sidebar/Sidebar.js +2 -2
  20. package/dist/client/app/Sidebar/helpers/filter-out-versioned-items.d.ts +23 -0
  21. package/dist/client/app/Sidebar/helpers/filter-out-versioned-items.js +1 -0
  22. package/dist/client/app/Sidebar/useSidebarItems.d.ts +2 -2
  23. package/dist/client/app/Sidebar/useSidebarItems.js +1 -1
  24. package/dist/client/app/hooks/catalog/useCatalogClassic.d.ts +1 -1
  25. package/dist/client/app/hooks/catalog/useCatalogClassic.js +1 -1
  26. package/dist/client/app/hooks/catalog/useCatalogFilter.js +1 -1
  27. package/dist/client/app/hooks/catalog/useCatalogViewMode.js +1 -1
  28. package/dist/client/app/hooks/catalog/useSearchTracker.js +1 -1
  29. package/dist/client/app/hooks/codeHighlight/useCodeHighlight.js +1 -1
  30. package/dist/client/app/hooks/usePageTimeTracker.js +1 -1
  31. package/dist/client/app/hooks/useRouteChangeTracker.js +1 -1
  32. package/dist/client/app/hooks/useTelemetry.d.ts +2 -2
  33. package/dist/client/app/pages/DevLogin/DevLogin.js +1 -1
  34. package/dist/client/app/search/message-handlers.d.ts +29 -0
  35. package/dist/client/app/search/message-handlers.js +1 -0
  36. package/dist/client/app/search/sse-parser.d.ts +10 -0
  37. package/dist/client/app/search/sse-parser.js +2 -0
  38. package/dist/client/app/search/useAiSearch.d.ts +9 -11
  39. package/dist/client/app/search/useAiSearch.js +1 -1
  40. package/dist/client/app/search/useSearch.js +1 -1
  41. package/dist/client/app/telemetry/index.d.ts +11 -1
  42. package/dist/client/app/telemetry/index.js +1 -1
  43. package/dist/client/browser-entry.js +5 -5
  44. package/dist/client/constants/ai-search.d.ts +30 -0
  45. package/dist/client/constants/ai-search.js +1 -0
  46. package/dist/client/constants/index.d.ts +2 -0
  47. package/dist/client/constants/index.js +1 -0
  48. package/dist/client/providers/hooks.js +1 -1
  49. package/dist/client/runtime/loader.js +1 -1
  50. package/dist/client/types/ai-search.d.ts +73 -0
  51. package/dist/client/types/ai-search.js +0 -0
  52. package/dist/client/types/index.d.ts +1 -0
  53. package/dist/config/env-config.d.ts +17 -0
  54. package/dist/config/env-config.js +1 -0
  55. package/dist/config/env-schema.d.ts +242 -0
  56. package/dist/config/env-schema.js +3 -0
  57. package/dist/config/env-schemas/api-urls.d.ts +24 -0
  58. package/dist/config/env-schemas/api-urls.js +1 -0
  59. package/dist/config/env-schemas/auth.d.ts +42 -0
  60. package/dist/config/env-schemas/auth.js +1 -0
  61. package/dist/config/env-schemas/catalog.d.ts +12 -0
  62. package/dist/config/env-schemas/catalog.js +1 -0
  63. package/dist/config/env-schemas/database.d.ts +15 -0
  64. package/dist/config/env-schemas/database.js +1 -0
  65. package/dist/config/env-schemas/environment-detection.d.ts +24 -0
  66. package/dist/config/env-schemas/environment-detection.js +1 -0
  67. package/dist/config/env-schemas/feature-flags.d.ts +24 -0
  68. package/dist/config/env-schemas/feature-flags.js +1 -0
  69. package/dist/config/env-schemas/organization-project.d.ts +27 -0
  70. package/dist/config/env-schemas/organization-project.js +1 -0
  71. package/dist/config/env-schemas/scorecards.d.ts +12 -0
  72. package/dist/config/env-schemas/scorecards.js +1 -0
  73. package/dist/config/env-schemas/search.d.ts +21 -0
  74. package/dist/config/env-schemas/search.js +1 -0
  75. package/dist/config/env-schemas/server-config.d.ts +51 -0
  76. package/dist/config/env-schemas/server-config.js +1 -0
  77. package/dist/config/env-schemas/site.d.ts +12 -0
  78. package/dist/config/env-schemas/site.js +1 -0
  79. package/dist/config/env-schemas/ssr.d.ts +18 -0
  80. package/dist/config/env-schemas/ssr.js +1 -0
  81. package/dist/config/env-schemas/telemetry.d.ts +15 -0
  82. package/dist/config/env-schemas/telemetry.js +1 -0
  83. package/dist/config/env-schemas/test.d.ts +22 -0
  84. package/dist/config/env-schemas/test.js +1 -0
  85. package/dist/constants/common.d.ts +4 -2
  86. package/dist/constants/common.js +1 -1
  87. package/dist/constants/l10n/langs/ar.js +1 -1
  88. package/dist/constants/l10n/langs/de.js +1 -1
  89. package/dist/constants/l10n/langs/en.js +1 -1
  90. package/dist/constants/l10n/langs/es.js +1 -1
  91. package/dist/constants/l10n/langs/fr.js +1 -1
  92. package/dist/constants/l10n/langs/hi.js +1 -1
  93. package/dist/constants/l10n/langs/it.js +1 -1
  94. package/dist/constants/l10n/langs/ja.js +1 -1
  95. package/dist/constants/l10n/langs/ko.js +1 -1
  96. package/dist/constants/l10n/langs/pl.js +1 -1
  97. package/dist/constants/l10n/langs/pt-BR.js +1 -1
  98. package/dist/constants/l10n/langs/pt.js +1 -1
  99. package/dist/constants/l10n/langs/ru.js +1 -1
  100. package/dist/constants/l10n/langs/uk.js +1 -1
  101. package/dist/constants/l10n/langs/zh.js +1 -1
  102. package/dist/server/api-routes/execute-api-route.js +1 -1
  103. package/dist/server/api-routes/import-api-routes-handlers.js +1 -1
  104. package/dist/server/api-routes/run-api-routes-worker.js +1 -1
  105. package/dist/server/constants/common.js +1 -1
  106. package/dist/server/constants/plugins/catalog-entities.d.ts +1 -0
  107. package/dist/server/constants/plugins/catalog-entities.js +1 -1
  108. package/dist/server/entitlements/entitlements-provider.js +1 -1
  109. package/dist/server/esbuild/esbuild-logger.js +2 -2
  110. package/dist/server/esbuild/esbuild.js +3 -3
  111. package/dist/server/esbuild/plugins/assets-resolver.js +1 -1
  112. package/dist/server/esbuild/plugins/esbuild-compile-resolver.js +1 -1
  113. package/dist/server/esbuild/plugins/styled-components-ssr.js +1 -1
  114. package/dist/server/fs/cache.js +1 -1
  115. package/dist/server/fs/content-fs.d.ts +1 -0
  116. package/dist/server/fs/content-fs.js +1 -1
  117. package/dist/server/fs/last-modified-tracker.js +1 -1
  118. package/dist/server/fs/utils/is-loader-cache-enabled.js +1 -1
  119. package/dist/server/node-bundle-entry.js +1 -1
  120. package/dist/server/persistence/kv/repositories/kv-remote-repository.d.ts +1 -0
  121. package/dist/server/persistence/kv/repositories/kv-remote-repository.js +2 -1
  122. package/dist/server/persistence/kv/services/kv-service.js +1 -1
  123. package/dist/server/plugins/analytics/adobe/index.js +1 -1
  124. package/dist/server/plugins/analytics/amplitude/index.js +1 -1
  125. package/dist/server/plugins/analytics/fullstory/index.js +1 -1
  126. package/dist/server/plugins/analytics/ga/index.js +1 -1
  127. package/dist/server/plugins/analytics/gtm/browser-hooks.js +1 -1
  128. package/dist/server/plugins/analytics/gtm/index.js +1 -1
  129. package/dist/server/plugins/analytics/heap/index.js +1 -1
  130. package/dist/server/plugins/analytics/rudderstack/index.js +1 -1
  131. package/dist/server/plugins/analytics/segment/index.js +1 -1
  132. package/dist/server/plugins/asyncapi-docs/asyncapi-doc-loader.js +3 -3
  133. package/dist/server/plugins/asyncapi-docs/get-server-props.js +1 -1
  134. package/dist/server/plugins/asyncapi-docs/index.js +1 -1
  135. package/dist/server/plugins/asyncapi-docs/search/schema-processor.js +1 -1
  136. package/dist/server/plugins/asyncapi-docs/search/search-resolver.js +1 -1
  137. package/dist/server/plugins/asyncapi-docs/store-definition-bundles.js +1 -1
  138. package/dist/server/plugins/asyncapi-docs/template/AsyncApiDocs.d.ts +2 -1
  139. package/dist/server/plugins/asyncapi-docs/template/AsyncApiDocs.js +9 -3
  140. package/dist/server/plugins/catalog-classic/get-server-props.d.ts +8 -3
  141. package/dist/server/plugins/catalog-classic/get-server-props.js +1 -1
  142. package/dist/server/plugins/catalog-entities/database/catalog-entities-service.d.ts +38 -64
  143. package/dist/server/plugins/catalog-entities/database/catalog-entities-service.js +1 -1
  144. package/dist/server/plugins/catalog-entities/database/mappers/create-entity-attributes-db-record.d.ts +8 -0
  145. package/dist/server/plugins/catalog-entities/database/mappers/create-entity-attributes-db-record.js +1 -0
  146. package/dist/server/plugins/catalog-entities/database/mappers/create-entity-db-record.d.ts +2 -1
  147. package/dist/server/plugins/catalog-entities/database/mappers/create-entity-read-model.js +1 -1
  148. package/dist/server/plugins/catalog-entities/database/mappers/{create-entity-relation.d.ts → create-entity-relation-read-model.d.ts} +2 -2
  149. package/dist/server/plugins/catalog-entities/database/mappers/create-entity-relation-read-model.js +1 -0
  150. package/dist/server/plugins/catalog-entities/database/mappers/map-entity-relation-row.js +1 -1
  151. package/dist/server/plugins/catalog-entities/database/repositories/common/revision-repository.d.ts +27 -0
  152. package/dist/server/plugins/catalog-entities/database/repositories/common/revision-repository.js +1 -0
  153. package/dist/server/plugins/catalog-entities/database/repositories/common/version-repository.d.ts +36 -0
  154. package/dist/server/plugins/catalog-entities/database/repositories/common/version-repository.js +1 -0
  155. package/dist/server/plugins/catalog-entities/database/repositories/local/catalog-entities-bff-repository.d.ts +15 -4
  156. package/dist/server/plugins/catalog-entities/database/repositories/local/catalog-entities-bff-repository.js +38 -27
  157. package/dist/server/plugins/catalog-entities/database/repositories/local/catalog-entities-local-read-repository.d.ts +36 -9
  158. package/dist/server/plugins/catalog-entities/database/repositories/local/catalog-entities-local-read-repository.js +37 -21
  159. package/dist/server/plugins/catalog-entities/database/repositories/local/catalog-entities-local-repository.d.ts +41 -42
  160. package/dist/server/plugins/catalog-entities/database/repositories/local/catalog-entities-local-repository.js +1 -1
  161. package/dist/server/plugins/catalog-entities/database/repositories/local/catalog-entities-local-write-repository.d.ts +3 -1
  162. package/dist/server/plugins/catalog-entities/database/repositories/local/catalog-entities-local-write-repository.js +1 -1
  163. package/dist/server/plugins/catalog-entities/database/repositories/local/catalog-entities-relations-repository.d.ts +7 -1
  164. package/dist/server/plugins/catalog-entities/database/repositories/local/catalog-entities-relations-repository.js +1 -1
  165. package/dist/server/plugins/catalog-entities/database/repositories/remote/catalog-entities-remote-repository.d.ts +5 -9
  166. package/dist/server/plugins/catalog-entities/database/repositories/remote/catalog-entities-remote-repository.js +1 -1
  167. package/dist/server/plugins/catalog-entities/database/repositories/utils/build-entities-exclusion-filter.d.ts +13 -0
  168. package/dist/server/plugins/catalog-entities/database/repositories/utils/build-entities-exclusion-filter.js +1 -0
  169. package/dist/server/plugins/catalog-entities/database/repositories/utils/build-rbac-filter.d.ts +31 -0
  170. package/dist/server/plugins/catalog-entities/database/repositories/utils/build-rbac-filter.js +9 -0
  171. package/dist/server/plugins/catalog-entities/database/repositories/utils/create-merged-entity-fields-for-select.d.ts +34 -0
  172. package/dist/server/plugins/catalog-entities/database/repositories/utils/create-merged-entity-fields-for-select.js +13 -0
  173. package/dist/server/plugins/catalog-entities/database/repositories/utils/normalize-revision-flags.d.ts +23 -0
  174. package/dist/server/plugins/catalog-entities/database/repositories/utils/normalize-revision-flags.js +1 -0
  175. package/dist/server/plugins/catalog-entities/database/repositories/utils/semantic-version-sort.d.ts +78 -0
  176. package/dist/server/plugins/catalog-entities/database/repositories/utils/semantic-version-sort.js +34 -0
  177. package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/arazzo-entities-extractor.js +1 -1
  178. package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/asyncapi-entities-extractor.js +1 -1
  179. package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/base.d.ts +6 -4
  180. package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/base.js +1 -1
  181. package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/graphql-entities-extractor.js +2 -2
  182. package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/openapi-entities-extractor.d.ts +1 -1
  183. package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/openapi-entities-extractor.js +1 -1
  184. package/dist/server/plugins/catalog-entities/extensions/extractors/fs-entities-extractor.js +1 -1
  185. package/dist/server/plugins/catalog-entities/get-server-props.js +1 -1
  186. package/dist/server/plugins/catalog-entities/plugin.js +1 -1
  187. package/dist/server/plugins/catalog-entities/schemas/database-schemas.d.ts +3 -0
  188. package/dist/server/plugins/catalog-entities/schemas/database-schemas.js +1 -1
  189. package/dist/server/plugins/catalog-entities/schemas/dto-schemas.d.ts +15 -1
  190. package/dist/server/plugins/catalog-entities/schemas/dto-schemas.js +1 -1
  191. package/dist/server/plugins/catalog-entities/schemas/read-model-schemas.d.ts +26 -164
  192. package/dist/server/plugins/catalog-entities/schemas/read-model-schemas.js +0 -1
  193. package/dist/server/plugins/catalog-entities/types/extractors.d.ts +4 -4
  194. package/dist/server/plugins/catalog-entities/types/openapi.d.ts +11 -0
  195. package/dist/server/plugins/catalog-entities/types/openapi.js +0 -0
  196. package/dist/server/plugins/catalog-entities/types/params.d.ts +6 -0
  197. package/dist/server/plugins/catalog-entities/types/params.js +0 -0
  198. package/dist/server/plugins/catalog-entities/utils/ajv-validator.js +1 -1
  199. package/dist/server/plugins/catalog-entities/utils/catalog-data-collector.js +1 -1
  200. package/dist/server/plugins/catalog-entities/utils/get-not-accessible-catalog-resources.d.ts +11 -0
  201. package/dist/server/plugins/catalog-entities/utils/get-not-accessible-catalog-resources.js +1 -0
  202. package/dist/server/plugins/config-parser/index.js +1 -1
  203. package/dist/server/plugins/config-parser/loaders/content-slugs-loader.js +1 -1
  204. package/dist/server/plugins/config-parser/loaders/nearest-redocly-config-loader.js +1 -1
  205. package/dist/server/plugins/config-parser/loaders/utils/read-and-validate-config.js +1 -1
  206. package/dist/server/plugins/default-theme/index.js +1 -1
  207. package/dist/server/plugins/entitlements/index.js +1 -1
  208. package/dist/server/plugins/graphql-docs/graphql-doc-loader.js +1 -1
  209. package/dist/server/plugins/graphql-docs/index.js +1 -1
  210. package/dist/server/plugins/graphql-docs/search/search-resolver.js +1 -1
  211. package/dist/server/plugins/graphql-docs/template/GraphQLDocs.js +6 -2
  212. package/dist/server/plugins/lifecycle.js +2 -2
  213. package/dist/server/plugins/markdown/attribute-resolvers/resolve-link.js +1 -1
  214. package/dist/server/plugins/markdown/compiler.d.ts +1 -0
  215. package/dist/server/plugins/markdown/compiler.js +1 -1
  216. package/dist/server/plugins/markdown/index.js +1 -1
  217. package/dist/server/plugins/markdown/is-partial.d.ts +1 -1
  218. package/dist/server/plugins/markdown/is-partial.js +1 -1
  219. package/dist/server/plugins/markdown/markdoc/import-user-tags.js +1 -1
  220. package/dist/server/plugins/markdown/markdoc/plugins/render-mermaid.js +1 -1
  221. package/dist/server/plugins/markdown/markdoc/resolve-raw-partials.d.ts +1 -1
  222. package/dist/server/plugins/markdown/markdoc/resolve-raw-partials.js +2 -2
  223. package/dist/server/plugins/markdown/markdown-static-data-loader.js +1 -1
  224. package/dist/server/plugins/mcp/auth/auth-handlers.js +1 -1
  225. package/dist/server/plugins/mcp/docs-mcp/tools/docs-mcp-tool.d.ts +54 -0
  226. package/dist/server/plugins/mcp/docs-mcp/tools/docs-mcp-tool.js +1 -0
  227. package/dist/server/plugins/mcp/docs-mcp/tools/get-endpoint-info.d.ts +9 -8
  228. package/dist/server/plugins/mcp/docs-mcp/tools/get-endpoint-info.js +1 -1
  229. package/dist/server/plugins/mcp/docs-mcp/tools/get-endpoints.d.ts +9 -8
  230. package/dist/server/plugins/mcp/docs-mcp/tools/get-endpoints.js +1 -1
  231. package/dist/server/plugins/mcp/docs-mcp/tools/get-full-api-description.d.ts +9 -8
  232. package/dist/server/plugins/mcp/docs-mcp/tools/get-full-api-description.js +1 -1
  233. package/dist/server/plugins/mcp/docs-mcp/tools/get-security-schemes.d.ts +9 -8
  234. package/dist/server/plugins/mcp/docs-mcp/tools/get-security-schemes.js +1 -1
  235. package/dist/server/plugins/mcp/docs-mcp/tools/index.d.ts +7 -13
  236. package/dist/server/plugins/mcp/docs-mcp/tools/index.js +1 -1
  237. package/dist/server/plugins/mcp/docs-mcp/tools/list-apis.d.ts +9 -6
  238. package/dist/server/plugins/mcp/docs-mcp/tools/list-apis.js +1 -1
  239. package/dist/server/plugins/mcp/docs-mcp/tools/search.d.ts +9 -2
  240. package/dist/server/plugins/mcp/docs-mcp/tools/search.js +1 -1
  241. package/dist/server/plugins/mcp/docs-mcp/tools/utils.d.ts +2 -1
  242. package/dist/server/plugins/mcp/docs-mcp/tools/utils.js +6 -6
  243. package/dist/server/plugins/mcp/docs-mcp/tools/whoami.d.ts +9 -2
  244. package/dist/server/plugins/mcp/docs-mcp/tools/whoami.js +1 -1
  245. package/dist/server/plugins/mcp/handlers/docs-mcp-handler.js +1 -1
  246. package/dist/server/plugins/mcp/handlers/errors.js +1 -1
  247. package/dist/server/plugins/mcp/handlers/handle-mcp-request.d.ts +5 -0
  248. package/dist/server/plugins/mcp/handlers/handle-mcp-request.js +1 -0
  249. package/dist/server/plugins/mcp/handlers/mcp-request-handler.d.ts +0 -1
  250. package/dist/server/plugins/mcp/handlers/mcp-request-handler.js +1 -1
  251. package/dist/server/plugins/mcp/servers/base-server.js +1 -1
  252. package/dist/server/plugins/mcp/types.d.ts +40 -0
  253. package/dist/server/plugins/mcp/workers/execute-mcp-tool.d.ts +3 -0
  254. package/dist/server/plugins/mcp/workers/execute-mcp-tool.js +1 -0
  255. package/dist/server/plugins/nav-utils.d.ts +1 -1
  256. package/dist/server/plugins/nav-utils.js +1 -1
  257. package/dist/server/plugins/openapi-docs/decorators.d.ts +3 -0
  258. package/dist/server/plugins/openapi-docs/decorators.js +1 -1
  259. package/dist/server/plugins/openapi-docs/get-server-props-custom-fields.d.ts +2 -4
  260. package/dist/server/plugins/openapi-docs/get-server-props-custom-fields.js +1 -1
  261. package/dist/server/plugins/openapi-docs/get-server-props.js +1 -1
  262. package/dist/server/plugins/openapi-docs/index.js +1 -1
  263. package/dist/server/plugins/openapi-docs/load-definition.d.ts +1 -0
  264. package/dist/server/plugins/openapi-docs/load-definition.js +3 -3
  265. package/dist/server/plugins/openapi-docs/openrpc-converter.d.ts +2 -0
  266. package/dist/server/plugins/openapi-docs/openrpc-converter.js +1 -0
  267. package/dist/server/plugins/openapi-docs/search/search-resolver.js +1 -1
  268. package/dist/server/plugins/openapi-docs/search-indexer.js +1 -1
  269. package/dist/server/plugins/openapi-docs/store-definition-bundles.js +1 -1
  270. package/dist/server/plugins/openapi-docs/template/OpenAPIDocs.js +8 -4
  271. package/dist/server/plugins/openapi-docs/template/helpers.d.ts +2 -2
  272. package/dist/server/plugins/openapi-docs/template/helpers.js +3 -3
  273. package/dist/server/plugins/openapi-docs/utils.d.ts +1 -0
  274. package/dist/server/plugins/scorecard-classic/compute-scorecard.d.ts +2 -1
  275. package/dist/server/plugins/scorecard-classic/compute-scorecard.js +4 -4
  276. package/dist/server/plugins/scorecard-classic/get-scorecard-config.d.ts +2 -1
  277. package/dist/server/plugins/scorecard-classic/index.js +1 -1
  278. package/dist/server/plugins/scorecard-classic/lint.d.ts +1 -1
  279. package/dist/server/plugins/scorecard-classic/lint.js +1 -1
  280. package/dist/server/plugins/scorecard-classic/loaders/scorecard-config.js +1 -1
  281. package/dist/server/plugins/scorecard-classic/loaders/scorecard.d.ts +6 -4
  282. package/dist/server/plugins/scorecard-classic/loaders/scorecard.js +1 -1
  283. package/dist/server/plugins/scorecard-classic/shared-utils.d.ts +1 -1
  284. package/dist/server/plugins/scorecard-classic/shared-utils.js +1 -1
  285. package/dist/server/plugins/scorecard-classic/template/Grid/Grid.d.ts +2 -1
  286. package/dist/server/plugins/scorecard-classic/template/Grid/Grid.js +3 -3
  287. package/dist/server/plugins/scorecard-classic/template/LevelIndicator.d.ts +1 -0
  288. package/dist/server/plugins/scorecard-classic/template/LevelIndicator.js +4 -4
  289. package/dist/server/plugins/scorecard-classic/template/components.js +1 -1
  290. package/dist/server/plugins/scorecard-classic/template/index.styles.d.ts +1 -0
  291. package/dist/server/plugins/scorecard-classic/template/index.styles.js +93 -19
  292. package/dist/server/plugins/scorecard-classic/template/index.types.d.ts +5 -1
  293. package/dist/server/plugins/scorecard-classic/template/useData.js +1 -1
  294. package/dist/server/plugins/scorecard-classic/template/views.js +1 -1
  295. package/dist/server/plugins/scorecard-classic/types.d.ts +5 -3
  296. package/dist/server/plugins/scorecard-classic/types.js +1 -1
  297. package/dist/server/plugins/scorecards/database/repositories/local/scorecards-config-local-repository.d.ts +12 -0
  298. package/dist/server/plugins/scorecards/database/repositories/local/scorecards-config-local-repository.js +1 -0
  299. package/dist/server/plugins/scorecards/database/scorecards-config-service.d.ts +11 -0
  300. package/dist/server/plugins/scorecards/database/scorecards-config-service.js +1 -0
  301. package/dist/server/plugins/scorecards/plugin.js +1 -1
  302. package/dist/server/plugins/scorecards/workers/run-scorecards-worker.d.ts +2 -1
  303. package/dist/server/plugins/scorecards/workers/run-scorecards-worker.js +1 -1
  304. package/dist/server/plugins/scorecards/workers/scorecards.d.ts +1 -12
  305. package/dist/server/plugins/scorecards/workers/scorecards.js +1 -1
  306. package/dist/server/plugins/search/ai-indexer/prepare-ai-search-documents.js +1 -1
  307. package/dist/server/plugins/search/documents/search-documents.js +1 -1
  308. package/dist/server/plugins/search/engines/flexsearch/index.js +1 -1
  309. package/dist/server/plugins/search/engines/typesense/index.js +1 -1
  310. package/dist/server/plugins/search/index.js +1 -1
  311. package/dist/server/plugins/search/llmstxt/index.js +5 -5
  312. package/dist/server/plugins/search/utils.js +2 -2
  313. package/dist/server/plugins/sidebars/index.d.ts +0 -2
  314. package/dist/server/plugins/sidebars/index.js +3 -3
  315. package/dist/server/plugins/sso/index.js +1 -1
  316. package/dist/server/providers/database/base-repository.d.ts +1 -0
  317. package/dist/server/providers/database/base-repository.js +1 -1
  318. package/dist/server/providers/database/database-connection-factory.js +1 -1
  319. package/dist/server/providers/database/database-initialization-strategy.js +1 -1
  320. package/dist/server/providers/database/database-preconnect-service.js +1 -1
  321. package/dist/server/providers/database/databases/catalog-sqlite/migrations/0005_catalog-relations-constraint-fix.sql +2 -0
  322. package/dist/server/providers/database/databases/catalog-sqlite/migrations/0006_add-catalog-entitities-attributes-table.sql +11 -0
  323. package/dist/server/providers/database/databases/catalog-sqlite/migrations/meta/0005_snapshot.json +393 -0
  324. package/dist/server/providers/database/databases/catalog-sqlite/migrations/meta/0006_snapshot.json +458 -0
  325. package/dist/server/providers/database/databases/catalog-sqlite/migrations/meta/_journal.json +14 -0
  326. package/dist/server/providers/database/databases/catalog-sqlite/schemas/entities-attributes-table.d.ts +143 -0
  327. package/dist/server/providers/database/databases/catalog-sqlite/schemas/entities-attributes-table.js +1 -0
  328. package/dist/server/providers/database/databases/catalog-sqlite/schemas/entities-relations-table.js +1 -1
  329. package/dist/server/providers/database/databases/main-sqlite/migrations/0006_change-scorecards-config-timestamps-field-types.sql +19 -0
  330. package/dist/server/providers/database/databases/main-sqlite/migrations/meta/0006_snapshot.json +261 -0
  331. package/dist/server/providers/database/databases/main-sqlite/migrations/meta/_journal.json +7 -0
  332. package/dist/server/providers/database/databases/main-sqlite/schemas/scorecards-config-table.d.ts +24 -18
  333. package/dist/server/providers/database/databases/main-sqlite/schemas/scorecards-config-table.js +1 -1
  334. package/dist/server/providers/database/databases/sqld-sqlite/drizzle.config.js +1 -1
  335. package/dist/server/providers/database/databases/sqld-sqlite/migrations/0007_catalog-relations-constraint-fix.sql +2 -0
  336. package/dist/server/providers/database/databases/sqld-sqlite/migrations/0008_add-catalog-entitities-attributes-table.sql +11 -0
  337. package/dist/server/providers/database/databases/sqld-sqlite/migrations/meta/0007_snapshot.json +833 -0
  338. package/dist/server/providers/database/databases/sqld-sqlite/migrations/meta/0008_snapshot.json +898 -0
  339. package/dist/server/providers/database/databases/sqld-sqlite/migrations/meta/_journal.json +14 -0
  340. package/dist/server/providers/database/pagination/entities-to-filter.d.ts +15 -0
  341. package/dist/server/providers/database/pagination/entities-to-filter.js +1 -0
  342. package/dist/server/providers/database/pagination/utils/index.d.ts +4 -0
  343. package/dist/server/providers/database/pagination/utils/index.js +1 -1
  344. package/dist/server/providers/database/pagination/utils/is-nested-condition.d.ts +16 -0
  345. package/dist/server/providers/database/pagination/utils/is-nested-condition.js +1 -0
  346. package/dist/server/providers/database/pagination/utils/is-simple-condition.d.ts +18 -0
  347. package/dist/server/providers/database/pagination/utils/is-simple-condition.js +1 -0
  348. package/dist/server/providers/database/pagination/utils/map-operator.d.ts +10 -0
  349. package/dist/server/providers/database/pagination/utils/map-operator.js +1 -0
  350. package/dist/server/providers/database/pagination/utils/transform-condition.d.ts +12 -0
  351. package/dist/server/providers/database/pagination/utils/transform-condition.js +1 -0
  352. package/dist/server/providers/database/sqld-not-running-error.d.ts +5 -0
  353. package/dist/server/providers/database/sqld-not-running-error.js +1 -0
  354. package/dist/server/ssr/render.js +1 -1
  355. package/dist/server/ssr/server-side-props/get-server-props-from-user-handler.js +1 -1
  356. package/dist/server/ssr/utils.js +8 -8
  357. package/dist/server/store.d.ts +14 -6
  358. package/dist/server/store.js +1 -1
  359. package/dist/server/telemetry/index.js +1 -1
  360. package/dist/server/tools/notifiers/formatter.js +3 -3
  361. package/dist/server/tools/notifiers/helpers/colors.js +1 -1
  362. package/dist/server/tools/notifiers/logger.js +2 -2
  363. package/dist/server/tools/notifiers/reporter.js +9 -9
  364. package/dist/server/tools/notifiers/terminal-manager.js +4 -4
  365. package/dist/server/types/plugins/common.d.ts +7 -1
  366. package/dist/server/types/plugins/markdown.d.ts +2 -0
  367. package/dist/server/types/plugins/scorecards.d.ts +30 -0
  368. package/dist/server/types/plugins/scorecards.js +0 -0
  369. package/dist/server/utils/envs/get-api-route-allowed-env-variables.js +1 -1
  370. package/dist/server/utils/envs/load-env-variables.d.ts +1 -1
  371. package/dist/server/utils/envs/load-env-variables.js +1 -1
  372. package/dist/server/utils/envs/sanitize-branch-name.d.ts +6 -0
  373. package/dist/server/utils/envs/sanitize-branch-name.js +1 -0
  374. package/dist/server/utils/globs.js +1 -1
  375. package/dist/server/utils/is-catalog-entities-enabled.js +1 -1
  376. package/dist/server/utils/is-scorecards-enabled.js +1 -1
  377. package/dist/server/utils/lifecycle-hooks.js +1 -1
  378. package/dist/server/utils/rbac.d.ts +76 -7
  379. package/dist/server/utils/rbac.js +1 -1
  380. package/dist/server/utils/report-all-errors.js +1 -1
  381. package/dist/server/utils/set-execution-mode.d.ts +5 -0
  382. package/dist/server/utils/set-execution-mode.js +1 -0
  383. package/dist/server/utils/time/with-timestamp.d.ts +42 -10
  384. package/dist/server/utils/time/with-timestamp.js +1 -1
  385. package/dist/server/version.js +1 -1
  386. package/dist/server/web-server/auth.js +3 -3
  387. package/dist/server/web-server/dev-server.js +1 -1
  388. package/dist/server/web-server/handle-api-route-request.js +1 -1
  389. package/dist/server/web-server/http.js +2 -2
  390. package/dist/server/web-server/middleware/apiKeyMiddleware.js +1 -1
  391. package/dist/server/web-server/middleware/catalogAuthMiddleware.d.ts +4 -6
  392. package/dist/server/web-server/middleware/catalogAuthMiddleware.js +1 -1
  393. package/dist/server/web-server/middleware/corsMiddleware.js +1 -1
  394. package/dist/server/web-server/middleware/dynamic-middleware/dynamic-middleware.js +1 -1
  395. package/dist/server/web-server/middleware/idleTimeoutMiddleware.js +1 -1
  396. package/dist/server/web-server/routes/ask-ai.js +1 -1
  397. package/dist/server/web-server/routes/auth.js +1 -1
  398. package/dist/server/web-server/routes/catalog/bff-catalog-related-entities.js +1 -1
  399. package/dist/server/web-server/routes/catalog/bff-catalog.js +1 -1
  400. package/dist/server/web-server/routes/catalog/catalog-relations.js +1 -1
  401. package/dist/server/web-server/routes/catalog/catalog.js +1 -1
  402. package/dist/server/web-server/routes/catalog/dto/read-entity-dto.d.ts +3 -0
  403. package/dist/server/web-server/routes/catalog/dto/read-entity-dto.js +0 -0
  404. package/dist/server/web-server/routes/catalog/helpers/create-entity-relation-update-schema.d.ts +43 -0
  405. package/dist/server/web-server/routes/catalog/helpers/create-entity-relation-update-schema.js +1 -0
  406. package/dist/server/web-server/routes/catalog/helpers/create-entity-schema.d.ts +6823 -0
  407. package/dist/server/web-server/routes/catalog/helpers/create-entity-schema.js +1 -0
  408. package/dist/server/web-server/routes/catalog/helpers/create-entity-update-schema.d.ts +1102 -0
  409. package/dist/server/web-server/routes/catalog/helpers/create-entity-update-schema.js +1 -0
  410. package/dist/server/web-server/routes/catalog/helpers/has-access-to-entity.d.ts +10 -0
  411. package/dist/server/web-server/routes/catalog/helpers/has-access-to-entity.js +1 -0
  412. package/dist/server/web-server/routes/catalog/mappers/map-entity-read-model-schema-to-entity-read-dto.d.ts +4 -0
  413. package/dist/server/web-server/routes/catalog/mappers/map-entity-read-model-schema-to-entity-read-dto.js +1 -0
  414. package/dist/server/web-server/routes/catalog/parsers/entities/parse-entities.d.ts +4 -0
  415. package/dist/server/web-server/routes/catalog/parsers/entities/parse-entities.js +1 -0
  416. package/dist/server/web-server/routes/catalog/parsers/entities/parse-entity-update-data.d.ts +4 -0
  417. package/dist/server/web-server/routes/catalog/parsers/entities/parse-entity-update-data.js +1 -0
  418. package/dist/server/web-server/routes/catalog/parsers/entities/parse-entity.d.ts +4 -0
  419. package/dist/server/web-server/routes/catalog/parsers/entities/parse-entity.js +1 -0
  420. package/dist/server/web-server/routes/catalog/parsers/relations/parse-entities-relations.d.ts +13 -0
  421. package/dist/server/web-server/routes/catalog/parsers/relations/parse-entities-relations.js +1 -0
  422. package/dist/server/web-server/routes/catalog/parsers/relations/parse-entity-relation-update-data.d.ts +13 -0
  423. package/dist/server/web-server/routes/catalog/parsers/relations/parse-entity-relation-update-data.js +1 -0
  424. package/dist/server/web-server/routes/catalog/parsers/relations/parse-entity-relation.d.ts +13 -0
  425. package/dist/server/web-server/routes/catalog/parsers/relations/parse-entity-relation.js +1 -0
  426. package/dist/server/web-server/routes/dynamic-route.js +1 -1
  427. package/dist/server/web-server/routes/error.js +1 -1
  428. package/dist/server/web-server/routes/helpers/get-current-rbac-teams.d.ts +3 -0
  429. package/dist/server/web-server/routes/helpers/get-current-rbac-teams.js +1 -0
  430. package/dist/server/web-server/routes/helpers/get-rbac-restrictions-data-for-catalog.d.ts +11 -0
  431. package/dist/server/web-server/routes/helpers/get-rbac-restrictions-data-for-catalog.js +1 -0
  432. package/dist/server/web-server/routes/index.js +1 -1
  433. package/dist/server/web-server/routes/info.js +1 -1
  434. package/dist/server/web-server/routes/mcp-oauth.js +1 -1
  435. package/dist/server/web-server/routes/otel/otel.js +1 -1
  436. package/dist/server/web-server/routes/page-data.js +1 -1
  437. package/dist/server/web-server/routes/path-prefix-redirect.js +1 -1
  438. package/dist/server/web-server/utils.d.ts +2 -2
  439. package/dist/server/workers/mcp-tool-worker-pool.d.ts +4 -0
  440. package/dist/server/workers/mcp-tool-worker-pool.js +1 -0
  441. package/dist/server/workers/mcp-tool-worker.d.ts +2 -0
  442. package/dist/server/workers/mcp-tool-worker.js +1 -0
  443. package/dist/server/workers/types.d.ts +7 -1
  444. package/dist/server/workers/worker-pool.js +1 -1
  445. package/package.json +21 -23
  446. package/dist/server/plugins/catalog-entities/database/mappers/create-entity-relation.js +0 -1
  447. package/dist/server/plugins/catalog-entities/entities/validate-entity.d.ts +0 -6
  448. package/dist/server/plugins/catalog-entities/entities/validate-entity.js +0 -1
  449. package/dist/server/plugins/mcp/workers/run-api-routes-worker.d.ts +0 -5
  450. package/dist/server/plugins/mcp/workers/run-api-routes-worker.js +0 -1
  451. package/dist/server/utils/envs/is-build-mode.d.ts +0 -2
  452. package/dist/server/utils/envs/is-build-mode.js +0 -1
  453. package/dist/server/utils/envs/is-develop-mode.d.ts +0 -7
  454. package/dist/server/utils/envs/is-develop-mode.js +0 -1
  455. package/dist/server/utils/envs/is-production-mode.d.ts +0 -10
  456. package/dist/server/utils/envs/is-production-mode.js +0 -1
  457. package/dist/server/workers/mcp-worker-pool.d.ts +0 -4
  458. package/dist/server/workers/mcp-worker-pool.js +0 -1
  459. package/dist/utils/env/is-local-development.d.ts +0 -13
  460. package/dist/utils/env/is-local-development.js +0 -1
  461. package/dist/utils/env/is-production.d.ts +0 -13
  462. package/dist/utils/env/is-production.js +0 -1
  463. package/dist/utils/env/is-web-view.d.ts +0 -14
  464. package/dist/utils/env/is-web-view.js +0 -1
@@ -0,0 +1 @@
1
+ import{entityFileSchema as n}from"@redocly/config";import{entityBaseProperties as p}from"@redocly/config";function y(r,e){const i=n.oneOf.find(t=>t.properties.type.const===e);if(!i){const t=Object.keys(r.entityTypes??{}).find(o=>o===e);if(!t)throw new Error(`Entity type: ${e} not found`);return{type:"object",properties:{...p,type:{const:t},metadata:{additionalProperties:!0,...r.entityTypes?.[t].metadataSchema},revision:{type:"string"}},additionalProperties:!1}}return{properties:{...i.properties,revision:{type:"string"}},additionalProperties:!1}}export{y as createEntityUpdateSchema};
@@ -0,0 +1,10 @@
1
+ import type { Context } from 'hono';
2
+ import type { Store } from '../../../../store';
3
+ export declare function hasAccessToEntity({ ctx, store, accessLevel, entityType, entityKey, }: {
4
+ ctx: Context;
5
+ store: Store;
6
+ accessLevel: 'READ' | 'WRITE';
7
+ entityType: string;
8
+ entityKey: string;
9
+ }): boolean;
10
+ //# sourceMappingURL=has-access-to-entity.d.ts.map
@@ -0,0 +1 @@
1
+ import{getNotAccessibleCatalogResources as a}from"../../../../plugins/catalog-entities/utils/get-not-accessible-catalog-resources.js";import{getCurrentRbacTeams as f}from"../../helpers/get-current-rbac-teams.js";function g({ctx:e,store:t,accessLevel:s,entityType:c,entityKey:r}){const n=t.getConfig().rbac||{},o=f(e),{types:i,entities:u}=a({rbacConfig:n,currentRbacTeams:o,accessLevel:s});return!(i.includes(c)||u.includes(r))}export{g as hasAccessToEntity};
@@ -0,0 +1,4 @@
1
+ import type { EntityReadModelSchema } from '../../../../plugins/catalog-entities/schemas/read-model-schemas';
2
+ import type { EntityReadDto } from '../dto/read-entity-dto.js';
3
+ export declare function mapEntityReadModelSchemaToEntityReadDto(entity: EntityReadModelSchema | null): EntityReadDto | null;
4
+ //# sourceMappingURL=map-entity-read-model-schema-to-entity-read-dto.d.ts.map
@@ -0,0 +1 @@
1
+ function r(a){return a?{id:a.id,organizationId:a.organizationId,projectId:a.projectId,type:a.type,key:a.key,title:a.title,summary:a.summary,tags:a.tags,metadata:a.metadata,git:a.git,contact:a.contact,links:a.links,source:a.source,sourceFile:a.sourceFile,version:a.version,revision:a.revision,isCurrent:a.isCurrent,isDefaultVersion:a.isDefaultVersion,object:"catalogEntity",createdAt:a.createdAt,updatedAt:a.updatedAt}:null}export{r as mapEntityReadModelSchemaToEntityReadDto};
@@ -0,0 +1,4 @@
1
+ import type { EntitiesCatalogConfig } from '@redocly/config';
2
+ import type { EntityDtoSchema } from '../../../../../plugins/catalog-entities/schemas/dto-schemas';
3
+ export declare function parseEntities(entities: unknown[], catalogConfig: EntitiesCatalogConfig): EntityDtoSchema[];
4
+ //# sourceMappingURL=parse-entities.d.ts.map
@@ -0,0 +1 @@
1
+ import{createValidator as a}from"../../../../../plugins/catalog-entities/utils/ajv-validator.js";import{createEntitySchema as e}from"../../helpers/create-entity-schema.js";function m(t,i){const r={type:"array",items:e(i)};return a(r,{errorPrefix:"Entity validation failed:",dataVar:"entity"})(t)}export{m as parseEntities};
@@ -0,0 +1,4 @@
1
+ import type { EntitiesCatalogConfig } from '@redocly/config';
2
+ import type { EntityDtoSchema } from '../../../../../plugins/catalog-entities/schemas/dto-schemas';
3
+ export declare function parseEntityUpdateData(entityUpdateData: unknown, catalogConfig: EntitiesCatalogConfig, entityType: string): Partial<EntityDtoSchema>;
4
+ //# sourceMappingURL=parse-entity-update-data.d.ts.map
@@ -0,0 +1 @@
1
+ import{createValidator as i}from"../../../../../plugins/catalog-entities/utils/ajv-validator.js";import{createEntityUpdateSchema as n}from"../../helpers/create-entity-update-schema.js";function y(t,a,e){const r=n(a,e);return i(r,{errorPrefix:"Entity validation failed:",dataVar:"entity"})(t)}export{y as parseEntityUpdateData};
@@ -0,0 +1,4 @@
1
+ import type { EntitiesCatalogConfig } from '@redocly/config';
2
+ import type { EntityDtoSchema } from '../../../../../plugins/catalog-entities/schemas/dto-schemas';
3
+ export declare function parseEntity(entity: unknown, catalogConfig: EntitiesCatalogConfig): EntityDtoSchema;
4
+ //# sourceMappingURL=parse-entity.d.ts.map
@@ -0,0 +1 @@
1
+ import{createValidator as i}from"../../../../../plugins/catalog-entities/utils/ajv-validator.js";import{createEntitySchema as e}from"../../helpers/create-entity-schema.js";function y(t,r){const a=e(r);return i(a,{errorPrefix:"Entity validation failed:",dataVar:"entity"})(t)}export{y as parseEntity};
@@ -0,0 +1,13 @@
1
+ export declare const parseEntitiesRelations: (data: unknown) => {
2
+ sourceFile?: string | null | undefined;
3
+ isDeleted?: boolean | null | undefined;
4
+ fileHash?: string | null | undefined;
5
+ sourceVersion?: string | null | undefined;
6
+ sourceRevision?: string | null | undefined;
7
+ targetVersion?: string | null | undefined;
8
+ targetRevision?: string | null | undefined;
9
+ type: "extends" | "partOf" | "hasParts" | "creates" | "createdBy" | "owns" | "ownedBy" | "implements" | "implementedBy" | "dependsOn" | "dependencyOf" | "uses" | "usedBy" | "produces" | "consumes" | "linksTo" | "supersedes" | "supersededBy" | "compatibleWith" | "extendedBy" | "relatesTo" | "hasMember" | "memberOf" | "triggers" | "triggeredBy" | "returns" | "returnedBy";
10
+ sourceKey: string;
11
+ targetKey: string;
12
+ }[];
13
+ //# sourceMappingURL=parse-entities-relations.d.ts.map
@@ -0,0 +1 @@
1
+ import{entitiesRelationsDtoSchema as t}from"../../../../../plugins/catalog-entities/schemas/dto-schemas.js";import{createValidator as i}from"../../../../../plugins/catalog-entities/utils/ajv-validator.js";const r=i(t,{errorPrefix:"Entities relations validation failed:",dataVar:"relation"});export{r as parseEntitiesRelations};
@@ -0,0 +1,13 @@
1
+ export declare function parseEntityRelationUpdateData(relationUpdateData: unknown): Partial<{
2
+ sourceFile?: string | null | undefined;
3
+ isDeleted?: boolean | null | undefined;
4
+ fileHash?: string | null | undefined;
5
+ sourceVersion?: string | null | undefined;
6
+ sourceRevision?: string | null | undefined;
7
+ targetVersion?: string | null | undefined;
8
+ targetRevision?: string | null | undefined;
9
+ type: "extends" | "partOf" | "hasParts" | "creates" | "createdBy" | "owns" | "ownedBy" | "implements" | "implementedBy" | "dependsOn" | "dependencyOf" | "uses" | "usedBy" | "produces" | "consumes" | "linksTo" | "supersedes" | "supersededBy" | "compatibleWith" | "extendedBy" | "relatesTo" | "hasMember" | "memberOf" | "triggers" | "triggeredBy" | "returns" | "returnedBy";
10
+ sourceKey: string;
11
+ targetKey: string;
12
+ }>;
13
+ //# sourceMappingURL=parse-entity-relation-update-data.d.ts.map
@@ -0,0 +1 @@
1
+ import{createValidator as e}from"../../../../../plugins/catalog-entities/utils/ajv-validator.js";import{createEntityRelationUpdateSchema as i}from"../../helpers/create-entity-relation-update-schema.js";function l(t){const a=i();return e(a,{errorPrefix:"Entity relation validation failed:",dataVar:"relation"})(t)}export{l as parseEntityRelationUpdateData};
@@ -0,0 +1,13 @@
1
+ export declare const parseEntityRelation: (data: unknown) => {
2
+ sourceFile?: string | null | undefined;
3
+ isDeleted?: boolean | null | undefined;
4
+ fileHash?: string | null | undefined;
5
+ sourceVersion?: string | null | undefined;
6
+ sourceRevision?: string | null | undefined;
7
+ targetVersion?: string | null | undefined;
8
+ targetRevision?: string | null | undefined;
9
+ type: "extends" | "partOf" | "hasParts" | "creates" | "createdBy" | "owns" | "ownedBy" | "implements" | "implementedBy" | "dependsOn" | "dependencyOf" | "uses" | "usedBy" | "produces" | "consumes" | "linksTo" | "supersedes" | "supersededBy" | "compatibleWith" | "extendedBy" | "relatesTo" | "hasMember" | "memberOf" | "triggers" | "triggeredBy" | "returns" | "returnedBy";
10
+ sourceKey: string;
11
+ targetKey: string;
12
+ };
13
+ //# sourceMappingURL=parse-entity-relation.d.ts.map
@@ -0,0 +1 @@
1
+ import{entityRelationDtoSchema as t}from"../../../../../plugins/catalog-entities/schemas/dto-schemas.js";import{createValidator as a}from"../../../../../plugins/catalog-entities/utils/ajv-validator.js";const o=a(t,{errorPrefix:"Entity relation validation failed:",dataVar:"relation"});export{o as parseEntityRelation};
@@ -1 +1 @@
1
- import u from"path";import{REDOCLY_ROUTE_RBAC as E,REDOCLY_TEAMS_RBAC as w}from"@redocly/config";import{withoutPathPrefix as M,withPathPrefix as q}from"@redocly/theme/core/utils";import{CACHE_CONTROL_NO_CACHE_HEADER_VALUE as _,DEFAULT_IMMUTABLE_CACHE_MAX_AGE as O}from"../../constants/common.js";import{removeTrailingSlash as F}from"../../../utils/url/remove-trailing-slash.js";import{findInIterable as H}from"../../../utils/collection/find-in-iterable.js";import{sanitizeRedirectPathname as v}from"../../../utils/url/sanitize-redirect-pathname.js";import{sanitizePath as z}from"../../../utils/path/sanitize-path.js";import{normalizeRouteSlug as B}from"../../../utils/path/normalize-route-slug.js";import{isPathInFolder as G}from"../../../utils/path/is-path-in-folder.js";import{processRedirects as N}from"./helpers/process-redirects.js";import{renderPage as Y,getServerProps as $}from"../../ssr/index.js";import{canAccessAsset as k,canAccessResource as L}from"../../utils/rbac.js";import{handleErrorPageRender as y,handleUnauthorized as P,handleUnauthorizedAsset as U}from"../utils.js";import{DEFAULT_MAX_AGE_FOR_MIME_TYPE as V,MIME_TYPES as W}from"../mime-types.js";import{fileExistsAsync as X}from"../../utils/index.js";import{getRedirectRoute as Z}from"../utils/legacy-openapi-redirects.js";import{telemetry as j}from"../../../cli/telemetry/index.js";import{telemetry as J}from"../../telemetry/index.js";function Ae(e,I,T){return async o=>{const h=o.get("logger"),l=o.req,i=new URL(l.url),n=M(z(decodeURIComponent(i.pathname))),R=u.parse(n).ext===".md",m=B(n),r=(l.method==="GET"||l.method==="HEAD")&&!R?e.getRouteBySlug(m,{followRedirect:!1})||H(e.routesBySlug?.values(),t=>t.hasClientRoutes&&(n===t.slug||n.startsWith(t.slug+"/"))):void 0,A=e.getRedirect(m);if(A){const t=N({redirect:A,reqUrlSearch:i.search});return J.sendRedirectMessage({from:m,templateId:t.type.toString()}),o.newResponse(null,t.type,{Location:t.location})}const d=process.env.NODE_ENV==="production"?301:302;if(r?.metadata?.type==="openapi"){const t=Z(i.pathname);if(t)return h.info("Legacy OpenAPI docs redirect from "+i.pathname),o.newResponse(null,d,{Location:encodeURI(t)});if(i.pathname.match(/[A-Z]/))return h.warn("Redirect to lowercase route to avoid 404 error"),o.newResponse(null,d,{Location:encodeURI(i.pathname.toLowerCase())})}if(n.endsWith("/")&&n!=="/"){const t=v(new URL(m||"/",o.req.url).pathname);return o.newResponse(null,d,{Location:encodeURI(q((t==="/"?"/":F(t))+i.search))})}const{isAuthenticated:c,teams:f,claims:{email:p}}=o.get("auth");if(r){if(!L(r,{isAuthenticated:c,email:p,teams:f},e.config.rbac,e.config.requiresLogin))return c?y(o,e,{slug:r.slug,[w]:r[w],[E]:r[E]},403):P(o,e,r.slug);const t=await I(r),s=await $(r,o,t,e),{html:b,statusCode:D}=await Y(r,s,o,e,j);return o.html(b,D,{"Cache-Control":_})}const a=u.resolve(e.outdir,"."+n);if(!G(a,e.outdir))return U(o);if(R){const t=n==="index.html.md"?"/":n.replace(/\.md$/,""),s=e.getRouteBySlug(t,{followRedirect:!1});if(s&&!L(s,{isAuthenticated:c,email:p,teams:f},e.config.rbac,e.config.requiresLogin))return P(o,e,n)}if(!k(n,e.getGlobalConfig("rbac"),e.getGlobalConfig("requiresLogin"),e.getGlobalConfig("directoryPaths"),{isAuthenticated:c,email:p,teams:f}))return U(o);const C=W[u.extname(a)]||"text/plain",g=a.match(/assets\/.*\.[a-f0-9]{8,}\..+/)||a.match(/runtime\/chunks\/.*/)?O:V[C],S=g?{"Cache-Control":`public, max-age=${g}, immutable`,Expires:new Date(Date.now()+g*1e3).toUTCString()}:{"Cache-Control":_};if(await X(a)){const t=l.query("download")!=null,s=await T(a);return o.newResponse(s,200,{"Content-Type":C,"Access-Control-Allow-Origin":"*",...S,...t&&{"Content-Disposition":`attachment; filename="${u.basename(a)}"`}})}else return y(o,e,{slug:m},404)}}export{Ae as dynamicRouteHandler};
1
+ import u from"path";import{REDOCLY_ROUTE_RBAC as E,REDOCLY_TEAMS_RBAC as w}from"@redocly/config";import{withoutPathPrefix as q,withPathPrefix as D}from"@redocly/theme/core/utils";import{CACHE_CONTROL_NO_CACHE_HEADER_VALUE as L,DEFAULT_IMMUTABLE_CACHE_MAX_AGE as O}from"../../constants/common.js";import{removeTrailingSlash as v}from"../../../utils/url/remove-trailing-slash.js";import{findInIterable as F}from"../../../utils/collection/find-in-iterable.js";import{sanitizeRedirectPathname as H}from"../../../utils/url/sanitize-redirect-pathname.js";import{envConfig as z}from"../../../config/env-config.js";import{sanitizePath as B}from"../../../utils/path/sanitize-path.js";import{normalizeRouteSlug as G}from"../../../utils/path/normalize-route-slug.js";import{isPathInFolder as Y}from"../../../utils/path/is-path-in-folder.js";import{processRedirects as $}from"./helpers/process-redirects.js";import{renderPage as k,getServerProps as N}from"../../ssr/index.js";import{canAccessAsset as W,canAccessResource as _}from"../../utils/rbac.js";import{handleErrorPageRender as y,handleUnauthorized as P,handleUnauthorizedAsset as U}from"../utils.js";import{DEFAULT_MAX_AGE_FOR_MIME_TYPE as X,MIME_TYPES as j}from"../mime-types.js";import{fileExistsAsync as V}from"../../utils/index.js";import{getRedirectRoute as Z}from"../utils/legacy-openapi-redirects.js";import{telemetry as J}from"../../../cli/telemetry/index.js";import{telemetry as K}from"../../telemetry/index.js";function Ee(e,I,T){return async o=>{const h=o.get("logger"),l=o.req,i=new URL(l.url),n=q(B(decodeURIComponent(i.pathname))),R=u.parse(n).ext===".md",m=G(n),r=(l.method==="GET"||l.method==="HEAD")&&!R?e.getRouteBySlug(m,{followRedirect:!1})||F(e.routesBySlug?.values(),t=>t.hasClientRoutes&&(n===t.slug||n.startsWith(t.slug+"/"))):void 0,A=e.getRedirect(m);if(A){const t=$({redirect:A,reqUrlSearch:i.search});return K.sendRedirectMessage([{object:"redirect",from:m,templateId:t.type.toString()}]),o.newResponse(null,t.type,{Location:t.location})}const d=z.isProductionEnv?301:302;if(r?.metadata?.type==="openapi"){const t=Z(i.pathname);if(t)return h.info("Legacy OpenAPI docs redirect from "+i.pathname),o.newResponse(null,d,{Location:encodeURI(t)});if(i.pathname.match(/[A-Z]/))return h.warn("Redirect to lowercase route to avoid 404 error"),o.newResponse(null,d,{Location:encodeURI(i.pathname.toLowerCase())})}if(n.endsWith("/")&&n!=="/"){const t=H(new URL(m||"/",o.req.url).pathname);return o.newResponse(null,d,{Location:encodeURI(D((t==="/"?"/":v(t))+i.search))})}const{isAuthenticated:c,teams:f,claims:{email:p}}=o.get("auth");if(r){if(!_(r,{isAuthenticated:c,email:p,teams:f},e.config.rbac,e.config.requiresLogin))return c?y(o,e,{slug:r.slug,[w]:r[w],[E]:r[E]},403):P(o,e,r.slug);const t=await I(r),s=await N(r,o,t,e),{html:b,statusCode:M}=await k(r,s,o,e,J);return o.html(b,M,{"Cache-Control":L})}const a=u.resolve(e.outdir,"."+n);if(!Y(a,e.outdir))return U(o);if(R){const t=n==="index.html.md"?"/":n.replace(/\.md$/,""),s=e.getRouteBySlug(t,{followRedirect:!1});if(s&&!_(s,{isAuthenticated:c,email:p,teams:f},e.config.rbac,e.config.requiresLogin))return P(o,e,n)}if(!W(n,e.getGlobalConfig("rbac"),e.getGlobalConfig("requiresLogin"),e.getGlobalConfig("directoryPaths"),{isAuthenticated:c,email:p,teams:f}))return U(o);const C=j[u.extname(a)]||"text/plain",g=a.match(/assets\/.*\.[a-f0-9]{8,}\..+/)||a.match(/runtime\/chunks\/.*/)?O:X[C],S=g?{"Cache-Control":`public, max-age=${g}, immutable`,Expires:new Date(Date.now()+g*1e3).toUTCString()}:{"Cache-Control":L};if(await V(a)){const t=l.query("download")!=null,s=await T(a);return o.newResponse(s,200,{"Content-Type":C,"Access-Control-Allow-Origin":"*",...S,...t&&{"Content-Disposition":`attachment; filename="${u.basename(a)}"`}})}else return y(o,e,{slug:m},404)}}export{Ee as dynamicRouteHandler};
@@ -1 +1 @@
1
- import{context as s,SpanStatusCode as n,trace as a}from"@opentelemetry/api";import{isDevelopMode as o}from"../../utils/envs/is-develop-mode.js";const m=e=>{const t=a?.getSpan(s.active());return t&&(t.setStatus({code:n.ERROR,message:e.message}),t.recordException(e),t.end()),e instanceof Error&&"name"in e&&e.name==="URIError"?new Response("Malformed URL",{status:400}):o()&&e?.name==="PageMissingDefaultExportError"?new Response(e.message,{status:200}):new Response("Internal Server Error",{status:500})};export{m as errorHandler};
1
+ import{context as n,SpanStatusCode as s,trace as o}from"@opentelemetry/api";import{envConfig as a}from"../../../config/env-config.js";const m=e=>{const t=o?.getSpan(n.active());return t&&(t.setStatus({code:s.ERROR,message:e.message}),t.recordException(e),t.end()),e instanceof Error&&"name"in e&&e.name==="URIError"?new Response("Malformed URL",{status:400}):a.isDevelopMode&&e?.name==="PageMissingDefaultExportError"?new Response(e.message,{status:200}):new Response("Internal Server Error",{status:500})};export{m as errorHandler};
@@ -0,0 +1,3 @@
1
+ import type { Context } from 'hono';
2
+ export declare function getCurrentRbacTeams(ctx: Context): string[];
3
+ //# sourceMappingURL=get-current-rbac-teams.d.ts.map
@@ -0,0 +1 @@
1
+ function t(e){return e.get("apiKeyTeams")?.length?e.get("apiKeyTeams"):e.get("auth")?.teams||[]}export{t as getCurrentRbacTeams};
@@ -0,0 +1,11 @@
1
+ import type { Context } from 'hono';
2
+ import type { Store } from '../../../store.js';
3
+ export declare function getRbacRestrictionsDataForCatalog({ store, ctx }: {
4
+ store: Store;
5
+ ctx: Context;
6
+ }): {
7
+ currentRbacTeamsForRead: string[];
8
+ excludedTypes: string[];
9
+ excludedEntities: string[];
10
+ };
11
+ //# sourceMappingURL=get-rbac-restrictions-data-for-catalog.d.ts.map
@@ -0,0 +1 @@
1
+ import{getNotAccessibleCatalogResources as n}from"../../../plugins/catalog-entities/utils/get-not-accessible-catalog-resources.js";import{getCurrentRbacTeams as i}from"./get-current-rbac-teams.js";import{expandTeamsForRead as m}from"../../../utils/rbac.js";function b({store:o,ctx:r}){const e=o.getConfig().rbac||{},t=i(r),a=m(e,t),{types:c,entities:s}=n({rbacConfig:e,currentRbacTeams:t});return{currentRbacTeamsForRead:a,excludedTypes:c,excludedEntities:s}}export{b as getRbacRestrictionsDataForCatalog};
@@ -1 +1 @@
1
- import{serveStatic as f}from"hono/serve-static";import{withPathPrefix as e,withoutPathPrefix as s}from"@redocly/theme/core/utils";import{ServerRoutes as i}from"../../../constants/common.js";import{PUBLIC_STATIC_FOLDER as R}from"../../constants/common.js";import{authMiddleware as c}from"../middleware/authMiddleware.js";import{ensureSearchData as g}from"../middleware/ensureSearchData.js";import{dynamicMiddleware as S}from"../middleware/dynamic-middleware/dynamic-middleware.js";import{installRoutes as P}from"../../plugins/dev-onboarding/api/routes/index.js";import{authorizeHandler as I,oidcCallbackHandler as r,logoutHandler as d,postLogoutHandler as h,idpLoginHandler as D,redoclyLoginCallbackHandler as N,samlCallbackHandler as M,redoclyTokenLoginHandler as U,inviteHandler as B}from"./auth.js";import{appDataHandler as G}from"./app-data.js";import{searchFacetsHandler as w,searchHandler as F}from"./search.js";import{dynamicRouteHandler as v}from"./dynamic-route.js";import{pageDataHandler as K,sharedPageDataHandler as y}from"./page-data.js";import{pathPrefixRedirectHandler as k}from"./path-prefix-redirect.js";import{getRoutesByLineHandler as E,resolvePathHandler as o,resolvePathsHandler as Y,resolveSlugHandler as p}from"./resolve-route.js";import{feedbackHandler as b}from"./feedback.js";import{loggerMiddleware as V}from"../middleware/loggerMiddleware.js";import{responseHeadersMiddleware as x}from"../middleware/responseHeadersMiddleware.js";import{idleTimeoutMiddleware as z}from"../middleware/idleTimeoutMiddleware.js";import{otelTracesHandler as Z}from"./otel/otel.js";import{healthCheckHandler as $}from"./health.js";import{askAiHandler as q}from"./ask-ai.js";import{replayOauth2RedirectCallbackHandler as W}from"./replay-oauth2-redirect.js";import{mcpOAuthProtectedResourceHandler as j,mcpOAuthAuthorizationServerHandler as J,mcpDynamicClientRegistrationHandler as Q,mcpAuthorizationHandler as X,mcpTokenPortalHandler as u,mcpCallbackHandler as _}from"./mcp-oauth.js";import{corsMiddleware as O}from"../middleware/corsMiddleware.js";import{installApiRoutes as aa}from"./api-routes/api-routes.js";import{cookieMiddleware as ea}from"../middleware/cookieMiddleware.js";import{staticContentHandler as ia}from"../routes/static-content.js";import{infoHandler as L}from"./info.js";import{catalogHandler as la}from"./catalog/catalog.js";import{catalogRelationsHandler as ta}from"./catalog/catalog-relations.js";import{bffCatalogHandler as ma}from"./catalog/bff-catalog.js";import{bffCatalogRevisionsHandler as na}from"./catalog/bff-catalog-revisions.js";import{bffCatalogRelatedEntitiesHandler as Aa}from"./catalog/bff-catalog-related-entities.js";import{catalogAuthMiddleware as C}from"../middleware/catalogAuthMiddleware.js";import{telemetryMiddleware as Ta}from"../middleware/telemetry-middleware.js";import{errorHandler as da}from"./error.js";function Wa(a,l,t){const{resolveRouteData:n,readStaticAsset:A}=t;a.use("*",z()),a.use("*",ea()),a.use("*",S(l)),a.use("*",c(l)),a.use("*",V()),a.use("*",x(l)),a.use("*",Ta()),a.use(e("*"),f({root:`./${R}`,getContent:(m,H)=>ia(m,H,l,A),rewriteRequestPath:m=>s(m)})),a.use(e(i.FEEDBACK),O({allowMethods:["POST"]})),a.use(e(i.ASK_AI),O({allowMethods:["POST"]})),a.use("*",Ea(l));const T=g(l);a.use(e(i.INFO),L()),process.env.NEW_CATALOG_ENABLED==="true"&&(a.use(e(i.CATALOG_ENTITIES),C(l.serverOutDir,{secureMethods:["POST","PUT","DELETE","PATCH"]})),a.use(e(i.CATALOG_ENTITIES_RELATIONS),C(l.serverOutDir,{secureMethods:["POST","PUT","DELETE","PATCH"]})),a.use(e(i.CATALOG_ENTITIES),la(l)),a.use(e(i.CATALOG_ENTITIES_RELATIONS),ta(l)),a.get(e(i.BFF_CATALOG_ENTITIES),ma(l)),a.get(e(i.BFF_CATALOG_RELATED_ENTITIES),Aa(l)),a.get(e(i.BFF_CATALOG_REVISIONS),na(l))),a.get(e(i.SHARED_PAGE_DATA),y(l)),a.get(e(i.PAGE_DATA),K(l,n)),a.get(e(i.APP_DATA),G(l)),a.post(e(i.SEARCH),T,F(l)),a.post(e(i.SEARCH_FACETS),T,w(l)),a.post(e(i.AUTHORIZATION),I),a.post(e(i.LOGOUT),d(l)),a.get(e(i.LOGOUT),d(l)),a.get(e(i.POST_LOGOUT),h(l)),a.get(e(i.OIDC_CALLBACK),r(l)),a.get(e(i.REDOCLY_TOKEN_LOGIN),U(l)),a.get(e(i.REDOCLY_LOGIN_CALLBACK),N()),a.get(e(i.IDP_LOGIN),D(l)),a.post(e(i.SAML_CALLBACK),M(l)),a.get(e(i.INVITE),B(l)),a.get(e(i.HEALTH),$),a.get(e(i.MCP_OAUTH_PROTECTED_RESOURCE),j()),a.get(e(i.MCP_OAUTH_AUTHORIZATION_SERVER),J()),a.post(e(i.MCP_DYNAMIC_CLIENT_REGISTRATION),Q()),a.get(e(i.MCP_AUTHORIZATION),X()),a.post(e(i.MCP_TOKEN_PORTAL),u()),a.get(e(i.MCP_CALLBACK),_()),a.get(e(`${i.MCP_CALLBACK}/*`),_()),P(a,l),aa(a,l),a.post(e(i.FEEDBACK),b(l)),a.post(e(i.RESOLVE_ROUTE_BY_PATH),o(l)),a.post(e(i.RESOLVE_ROUTES_BY_PATHS),Y(l)),a.post(e(i.RESOLVE_ROUTE_BY_SLUG),p(l)),a.post(e(i.ASK_AI),q(l)),a.get(e(i.GET_ROUTES_BY_LINE),E(l)),a.post(e(i.OTEL_TRACES),Z),a.get(e(i.REPLAY_OAUTH2_CALLBACK),W),a.all(e("/*"),v(l,n,A)),a.get("*",k),a.onError(da)}function Ea(a){return async(l,t)=>{await a.waitForPluginsLifecycle(),await t()}}function ja(a,l){a.get(e(i.INFO),L()),a.post(e(i.RESOLVE_ROUTE_BY_PATH),o(l)),a.post(e(i.RESOLVE_ROUTE_BY_SLUG),p(l)),a.get(e(i.GET_ROUTES_BY_LINE),E(l))}export{ja as installDevRoutes,Wa as installProdRoutes,Ea as waitForPluginsLifecycle};
1
+ import{serveStatic as H}from"hono/serve-static";import{withPathPrefix as e,withoutPathPrefix as R}from"@redocly/theme/core/utils";import{ServerRoutes as l}from"../../../constants/common.js";import{PUBLIC_STATIC_FOLDER as C}from"../../constants/common.js";import{envConfig as L}from"../../../config/env-config.js";import{authMiddleware as c}from"../middleware/authMiddleware.js";import{ensureSearchData as g}from"../middleware/ensureSearchData.js";import{dynamicMiddleware as S}from"../middleware/dynamic-middleware/dynamic-middleware.js";import{installRoutes as I}from"../../plugins/dev-onboarding/api/routes/index.js";import{authorizeHandler as P,oidcCallbackHandler as D,logoutHandler as A,postLogoutHandler as h,idpLoginHandler as M,redoclyLoginCallbackHandler as N,samlCallbackHandler as v,redoclyTokenLoginHandler as B,inviteHandler as U}from"./auth.js";import{appDataHandler as w}from"./app-data.js";import{searchFacetsHandler as G,searchHandler as F}from"./search.js";import{dynamicRouteHandler as K}from"./dynamic-route.js";import{pageDataHandler as y,sharedPageDataHandler as k}from"./page-data.js";import{pathPrefixRedirectHandler as Y}from"./path-prefix-redirect.js";import{getRoutesByLineHandler as _,resolvePathHandler as O,resolvePathsHandler as b,resolveSlugHandler as r}from"./resolve-route.js";import{feedbackHandler as V}from"./feedback.js";import{loggerMiddleware as x}from"../middleware/loggerMiddleware.js";import{responseHeadersMiddleware as $}from"../middleware/responseHeadersMiddleware.js";import{idleTimeoutMiddleware as z}from"../middleware/idleTimeoutMiddleware.js";import{otelTracesHandler as Z}from"./otel/otel.js";import{healthCheckHandler as u}from"./health.js";import{askAiHandler as q}from"./ask-ai.js";import{replayOauth2RedirectCallbackHandler as W}from"./replay-oauth2-redirect.js";import{mcpOAuthProtectedResourceHandler as j,mcpOAuthAuthorizationServerHandler as J,mcpDynamicClientRegistrationHandler as Q,mcpAuthorizationHandler as X,mcpTokenPortalHandler as aa,mcpCallbackHandler as E}from"./mcp-oauth.js";import{corsMiddleware as T}from"../middleware/corsMiddleware.js";import{installApiRoutes as ea}from"./api-routes/api-routes.js";import{cookieMiddleware as ia}from"../middleware/cookieMiddleware.js";import{staticContentHandler as la}from"../routes/static-content.js";import{infoHandler as f}from"./info.js";import{catalogHandler as ta}from"./catalog/catalog.js";import{catalogRelationsHandler as ma}from"./catalog/catalog-relations.js";import{bffCatalogHandler as na}from"./catalog/bff-catalog.js";import{bffCatalogRevisionsHandler as da}from"./catalog/bff-catalog-revisions.js";import{bffCatalogRelatedEntitiesHandler as oa}from"./catalog/bff-catalog-related-entities.js";import{catalogAuthMiddleware as t}from"../middleware/catalogAuthMiddleware.js";import{telemetryMiddleware as pa}from"../middleware/telemetry-middleware.js";import{errorHandler as Aa}from"./error.js";function ja(a,i,m){const{resolveRouteData:d,readStaticAsset:o}=m;a.use("*",z()),a.use("*",ia()),a.use("*",S(i)),a.use("*",c(i)),a.use("*",x()),a.use("*",$(i)),a.use("*",pa()),a.use(e("*"),H({root:`./${C}`,getContent:(n,s)=>la(n,s,i,o),rewriteRequestPath:n=>R(n)})),a.use(e(l.FEEDBACK),T({allowMethods:["POST"]})),a.use(e(l.ASK_AI),T({allowMethods:["POST"]})),a.use("*",_a(i));const p=g(i);a.use(e(l.INFO),f()),L.NEW_CATALOG_ENABLED==="true"&&(a.use(e(l.CATALOG_ENTITIES),t({serverOutDir:i.serverOutDir}),ta(i)),a.use(e(l.CATALOG_ENTITIES_RELATIONS),t({serverOutDir:i.serverOutDir}),ma(i)),a.get(e(l.BFF_CATALOG_ENTITIES),t({serverOutDir:i.serverOutDir,protectReadMethods:!1}),na(i)),a.get(e(l.BFF_CATALOG_RELATED_ENTITIES),t({serverOutDir:i.serverOutDir,protectReadMethods:!1}),oa(i)),a.get(e(l.BFF_CATALOG_REVISIONS),t({serverOutDir:i.serverOutDir,protectReadMethods:!1}),da(i))),a.get(e(l.SHARED_PAGE_DATA),k(i)),a.get(e(l.PAGE_DATA),y(i,d)),a.get(e(l.APP_DATA),w(i)),a.post(e(l.SEARCH),p,F(i)),a.post(e(l.SEARCH_FACETS),p,G(i)),a.post(e(l.AUTHORIZATION),P),a.post(e(l.LOGOUT),A(i)),a.get(e(l.LOGOUT),A(i)),a.get(e(l.POST_LOGOUT),h(i)),a.get(e(l.OIDC_CALLBACK),D(i)),a.get(e(l.REDOCLY_TOKEN_LOGIN),B(i)),a.get(e(l.REDOCLY_LOGIN_CALLBACK),N()),a.get(e(l.IDP_LOGIN),M(i)),a.post(e(l.SAML_CALLBACK),v(i)),a.get(e(l.INVITE),U(i)),a.get(e(l.HEALTH),u),a.get(`${l.MCP_OAUTH_PROTECTED_RESOURCE}${e("/mcp")}`,j()),a.get(l.MCP_OAUTH_AUTHORIZATION_SERVER,J()),a.post(e(l.MCP_DYNAMIC_CLIENT_REGISTRATION),Q()),a.get(e(l.MCP_AUTHORIZATION),X()),a.post(e(l.MCP_TOKEN_PORTAL),aa()),a.get(e(l.MCP_CALLBACK),E()),a.get(e(`${l.MCP_CALLBACK}/*`),E()),I(a,i),ea(a,i),a.post(e(l.FEEDBACK),V(i)),a.post(e(l.RESOLVE_ROUTE_BY_PATH),O(i)),a.post(e(l.RESOLVE_ROUTES_BY_PATHS),b(i)),a.post(e(l.RESOLVE_ROUTE_BY_SLUG),r(i)),a.post(e(l.ASK_AI),q(i)),a.get(e(l.GET_ROUTES_BY_LINE),_(i)),a.post(e(l.OTEL_TRACES),Z),a.get(e(l.REPLAY_OAUTH2_CALLBACK),W),a.all(e("/*"),K(i,d,o)),a.get("*",Y),a.onError(Aa)}function _a(a){return async(i,m)=>{await a.waitForPluginsLifecycle(),await m()}}function Ja(a,i){a.get(e(l.INFO),f()),a.post(e(l.RESOLVE_ROUTE_BY_PATH),O(i)),a.post(e(l.RESOLVE_ROUTE_BY_SLUG),r(i)),a.get(e(l.GET_ROUTES_BY_LINE),_(i))}export{Ja as installDevRoutes,ja as installProdRoutes,_a as waitForPluginsLifecycle};
@@ -1 +1 @@
1
- function r(){return async n=>n.json({version:process.env.REDOCLY_PORTAL_VERSION},200)}export{r as infoHandler};
1
+ import{envConfig as r}from"../../../config/env-config.js";function e(){return async n=>n.json({version:r.REDOCLY_PORTAL_VERSION},200)}export{e as infoHandler};
@@ -1 +1 @@
1
- import{getCookie as C}from"hono/cookie";import{ulid as w}from"ulid";import{AUTH_URL as _,JWT_SECRET_KEY as y}from"../../constants/common.js";import{ServerRoutes as d}from"../../../constants/common.js";import{withPathPrefix as m}from"@redocly/theme/core/utils";import{telemetry as l}from"../../telemetry/index.js";import{createMcpAuthorizationCode as k,verifyMcpAuthorizationCode as S,createMcpSessionResource as u}from"../auth.js";import*as h from"../jwt/jwt.js";import{getRequestOrigin as g}from"../utils/get-request-origin.js";const n=(e,r,o=200,a)=>e.json(r,o,{"Content-Type":"application/json",...a??{}});async function T(e){const r=Math.floor(Date.now()/1e3);return h.sign({type:"mcp_context",...e,iat:r,exp:r+600},y)}async function I(e){await h.verify(e,y);const{payload:r}=h.decode(e);if(r.type!=="mcp_context")throw new Error("Invalid context token type");return r}function O(){return async e=>{if(e.req.method!=="GET")return n(e,{error:"Method not allowed"},405,{Allow:"GET"});const r=g(e);return n(e,{resource:`${r}/mcp`,authorization_servers:[r],bearer_methods_supported:["header"],resource_documentation:`${r}/.well-known/oauth-authorization-server`,scopes_supported:["openid","profile","email","offline_access"],bearer_token_types_supported:["Bearer"]})}}function D(){return async e=>{const r=g(e);return n(e,{issuer:_||"",authorization_endpoint:`${r}${d.MCP_AUTHORIZATION}`,token_endpoint:`${r}${d.MCP_TOKEN_PORTAL}`,jwks_uri:`${_||""}/.well-known/jwks.json`,registration_endpoint:`${r}${d.MCP_DYNAMIC_CLIENT_REGISTRATION}`,scopes_supported:["openid","profile","email","offline_access"],response_types_supported:["code"],grant_types_supported:["authorization_code","refresh_token","client_credentials"],subject_types_supported:["public"],id_token_signing_alg_values_supported:["RS256"],code_challenge_methods_supported:["S256"]})}}function $(){return async e=>{if(e.req.method!=="POST")return n(e,{error:"Method not allowed"},405);try{return n(e,{client_id:process.env.OAUTH_CLIENT_ID||"",client_name:"MCP Client",redirect_uris:[],grant_types:["authorization_code","refresh_token"],response_types:["code"],scope:"openid offline email",subject_type:"public",token_endpoint_auth_method:"none",created_at:new Date().toISOString(),updated_at:new Date().toISOString()},201)}catch(r){return n(e,{error:"invalid_request",error_description:r?.message||"Unable to register client"},500)}}}function q(){return async e=>{const r=new URL(e.req.url),{searchParams:o}=r,a=o.get("redirect_uri"),t=w();l.sendMcpAuthorizationStartedMessage({...u(t),redirect_uri:a||null});const s=g(e),c={isMcpFlow:!0,originalRedirectUri:a,mcpClientId:o.get("client_id"),mcpState:o.get("state"),mcpSessionId:t,timestamp:Date.now()};try{const i=await T(c),p=new URL(d.IDP_LOGIN,s);return p.searchParams.set("redirectTo",`${m(d.MCP_CALLBACK)}/${i}`),p.searchParams.set("idpId","oidc"),e.redirect(p.toString())}catch(i){const p=i instanceof Error?i.message:String(i),M=i instanceof Error?i.stack:String(i);l.sendMcpAuthorizationFailedMessage({...u(t),error:p,error_details:M});const f=new URL(m(`${_}/oauth2/auth`));return f.search=o.toString(),e.redirect(f.toString())}}}function H(){return async e=>{if(e.req.method!=="POST")return n(e,{error:"Method not allowed"},405);try{const r=await e.req.formData(),o=r.get("grant_type"),a=r.get("code"),t=r.get("redirect_uri")||void 0;if(o!=="authorization_code"||!a)return n(e,{error:"invalid_request",error_description:"Invalid grant type or missing authorization code"},400);try{const s=await S(a);if(t&&t!==s.redirect_uri)return n(e,{error:"invalid_grant",error_description:"redirect_uri mismatch"},400);if(process.env.OAUTH_CLIENT_ID&&s.client_id&&s.client_id!==process.env.OAUTH_CLIENT_ID)return n(e,{error:"invalid_client",error_description:"Client mismatch"},400);const c=s.id_token;return typeof c!="string"||c.length===0?n(e,{error:"invalid_grant",error_description:"Missing id_token in authorization code"},400):n(e,{access_token:c,token_type:"Bearer",expires_in:3600,scope:"openid profile email",id_token:c},200,{"Cache-Control":"no-store",Pragma:"no-cache"})}catch{return n(e,{error:"invalid_grant",error_description:"Invalid authorization code"},400)}}catch(r){const o=r instanceof Error?r.message:String(r);return n(e,{error:"server_error",error_description:"Failed to process token request",error_details:o},500)}}}function b(){return async e=>{const r=new URL(e.req.url);let o=r.searchParams.get("context");if(!o&&r.pathname.startsWith(m(`${d.MCP_CALLBACK}/`))){const t=r.pathname.split("/");o=t[t.length-1]}if(!o)return l.sendMcpAuthorizationFailedMessage({...u(null),error:"Missing context parameter",error_details:null}),e.text("Missing context parameter",400);let a=null;try{const t=await I(o);if(a=t.mcpSessionId||null,!t.isMcpFlow||!t.originalRedirectUri)throw new Error("Invalid MCP context");const s=C(e,"idp_id_token")||C(e,"authorization"),c=await k({idToken:s||"",clientId:t.mcpClientId||"",redirectUri:t.originalRedirectUri,ttlSec:600}),i=new URL(t.originalRedirectUri);return i.searchParams.set("code",c),t.mcpState&&i.searchParams.set("state",t.mcpState),l.sendMcpAuthorizationCompletedMessage({...u(a),redirect_uri:t.originalRedirectUri||null}),e.redirect(i.toString())}catch(t){const s=t instanceof Error?t.message:String(t),c=t instanceof Error?t.stack:String(t);return l.sendMcpAuthorizationFailedMessage({...u(a),error:s,error_details:c}),e.text(`Invalid MCP callback: ${s}`,400)}}}export{T as createMcpContextToken,q as mcpAuthorizationHandler,b as mcpCallbackHandler,$ as mcpDynamicClientRegistrationHandler,D as mcpOAuthAuthorizationServerHandler,O as mcpOAuthProtectedResourceHandler,H as mcpTokenPortalHandler,I as verifyAndParseMcpContextToken};
1
+ import{getCookie as y}from"hono/cookie";import{ulid as w}from"ulid";import{AUTH_URL as m,JWT_SECRET_KEY as M}from"../../constants/common.js";import{ServerRoutes as d}from"../../../constants/common.js";import{withPathPrefix as p}from"@redocly/theme/core/utils";import{telemetry as u}from"../../telemetry/index.js";import{envConfig as g}from"../../../config/env-config.js";import{createMcpAuthorizationCode as I,verifyMcpAuthorizationCode as k,createMcpSessionResource as _}from"../auth.js";import*as h from"../jwt/jwt.js";import{AlgorithmTypes as T}from"../jwt/types.js";import{getRequestOrigin as f}from"../utils/get-request-origin.js";const n=(e,r,o=200,a)=>e.json(r,o,{"Content-Type":"application/json",...a??{}});async function A(e){const r=Math.floor(Date.now()/1e3);return h.sign({type:"mcp_context",...e,iat:r,exp:r+600},M,T.HS256)}async function P(e){await h.verify(e,M,T.HS256);const{payload:r}=h.decode(e);if(r.type!=="mcp_context")throw new Error("Invalid context token type");return r}function q(){return async e=>{if(e.req.method!=="GET")return n(e,{error:"Method not allowed"},405,{Allow:"GET"});const r=f(e);return n(e,{resource:`${r}${p("/mcp")}`,authorization_servers:[r],bearer_methods_supported:["header"],resource_documentation:`${r}${d.MCP_OAUTH_AUTHORIZATION_SERVER}`,scopes_supported:["openid","profile","email","offline_access"],bearer_token_types_supported:["Bearer"]})}}function b(){return async e=>{const r=f(e);return n(e,{issuer:m||"",authorization_endpoint:`${r}${p(d.MCP_AUTHORIZATION)}`,token_endpoint:`${r}${p(d.MCP_TOKEN_PORTAL)}`,jwks_uri:`${m||""}/.well-known/jwks.json`,registration_endpoint:`${r}${p(d.MCP_DYNAMIC_CLIENT_REGISTRATION)}`,scopes_supported:["openid","profile","email","offline_access"],response_types_supported:["code"],grant_types_supported:["authorization_code","refresh_token","client_credentials"],subject_types_supported:["public"],id_token_signing_alg_values_supported:["RS256"],code_challenge_methods_supported:["S256"]})}}function N(){return async e=>{if(e.req.method!=="POST")return n(e,{error:"Method not allowed"},405);try{return n(e,{client_id:g.OAUTH_CLIENT_ID||"",client_name:"MCP Client",redirect_uris:[],grant_types:["authorization_code","refresh_token"],response_types:["code"],scope:"openid offline email",subject_type:"public",token_endpoint_auth_method:"none",created_at:new Date().toISOString(),updated_at:new Date().toISOString()},201)}catch(r){return n(e,{error:"invalid_request",error_description:r?.message||"Unable to register client"},500)}}}function j(){return async e=>{const r=new URL(e.req.url),{searchParams:o}=r,a=o.get("redirect_uri"),t=w();u.sendMcpAuthorizationStartedMessage([{..._(t),redirect_uri:a||null}]);const s=f(e),c={isMcpFlow:!0,originalRedirectUri:a,mcpClientId:o.get("client_id"),mcpState:o.get("state"),mcpSessionId:t,timestamp:Date.now()};try{const i=await A(c),l=new URL(p(d.IDP_LOGIN),s);return l.searchParams.set("redirectTo",`${d.MCP_CALLBACK}/${i}`),l.searchParams.set("idpId","oidc"),e.redirect(l.toString())}catch(i){const l=i instanceof Error?i.message:String(i),S=i instanceof Error?i.stack:String(i);u.sendMcpAuthorizationFailedMessage([{..._(t),error:l,error_details:S}]);const C=new URL(p(`${m}/oauth2/auth`));return C.search=o.toString(),e.redirect(C.toString())}}}function F(){return async e=>{if(e.req.method!=="POST")return n(e,{error:"Method not allowed"},405);try{const r=await e.req.formData(),o=r.get("grant_type"),a=r.get("code"),t=r.get("redirect_uri")||void 0;if(o!=="authorization_code"||!a)return n(e,{error:"invalid_request",error_description:"Invalid grant type or missing authorization code"},400);try{const s=await k(a);if(t&&t!==s.redirect_uri)return n(e,{error:"invalid_grant",error_description:"redirect_uri mismatch"},400);if(g.OAUTH_CLIENT_ID&&s.client_id&&s.client_id!==g.OAUTH_CLIENT_ID)return n(e,{error:"invalid_client",error_description:"Client mismatch"},400);const c=s.id_token;return typeof c!="string"||c.length===0?n(e,{error:"invalid_grant",error_description:"Missing id_token in authorization code"},400):n(e,{access_token:c,token_type:"Bearer",expires_in:3600,scope:"openid profile email",id_token:c},200,{"Cache-Control":"no-store",Pragma:"no-cache"})}catch{return n(e,{error:"invalid_grant",error_description:"Invalid authorization code"},400)}}catch(r){const o=r instanceof Error?r.message:String(r);return n(e,{error:"server_error",error_description:"Failed to process token request",error_details:o},500)}}}function B(){return async e=>{const r=new URL(e.req.url);let o=r.searchParams.get("context");if(!o&&r.pathname.startsWith(p(`${d.MCP_CALLBACK}/`))){const t=r.pathname.split("/");o=t[t.length-1]}if(!o)return u.sendMcpAuthorizationFailedMessage([{..._(null),error:"Missing context parameter",error_details:null}]),e.text("Missing context parameter",400);let a=null;try{const t=await P(o);if(a=t.mcpSessionId||null,!t.isMcpFlow||!t.originalRedirectUri)throw new Error("Invalid MCP context");const s=y(e,"idp_id_token")||y(e,"authorization"),c=await I({idToken:s||"",clientId:t.mcpClientId||"",redirectUri:t.originalRedirectUri,ttlSec:600}),i=new URL(t.originalRedirectUri);return i.searchParams.set("code",c),t.mcpState&&i.searchParams.set("state",t.mcpState),u.sendMcpAuthorizationCompletedMessage([{..._(a),redirect_uri:t.originalRedirectUri||null}]),e.redirect(i.toString())}catch(t){const s=t instanceof Error?t.message:String(t),c=t instanceof Error?t.stack:String(t);return u.sendMcpAuthorizationFailedMessage([{..._(a),error:s,error_details:c}]),e.text(`Invalid MCP callback: ${s}`,400)}}}export{A as createMcpContextToken,j as mcpAuthorizationHandler,B as mcpCallbackHandler,N as mcpDynamicClientRegistrationHandler,b as mcpOAuthAuthorizationServerHandler,q as mcpOAuthProtectedResourceHandler,F as mcpTokenPortalHandler,P as verifyAndParseMcpContextToken};
@@ -1 +1 @@
1
- import{getClientIp as v}from"../../utils/get-client-ip.js";import{PRODUCT_NAME as l}from"../../../../config/product-gates.js";import{toAttribute as t,getAttributesStringValue as _}from"./otlp.js";const p=process.env.OTEL_TRACES_URL||"https://otel.cloud.redocly.com/v1/traces";async function L(e){const s=await e.req.json(),o=g(e),r={resourceSpans:s.resourceSpans.map(n=>{const u=_(n.resource.attributes.find(c=>c.key==="session_id"));return u?{...n,resource:{...n.resource,attributes:[...n.resource.attributes,...y(o,u)]},scopeSpans:n.scopeSpans.map(c=>({...c,spans:c.spans.map(i=>({...i,attributes:i.name.startsWith("event.")&&i.name!=="event.undefined"?A(i,o,u):i.attributes}))}))}:n})};return await fetch(p,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(r)}),e.newResponse(null,200,{})}function g(e){const s=e.get("auth")?.claims?.id||e.get("auth")?.claims?.sub,o=v(e.req.raw)||e.req.raw.context.remoteAddr?.hostname,r=e.req.raw.headers.get("user-agent"),n=e.req.raw.headers.get("accept-language"),u=n?.split(",")[0];return{userId:s,clientIp:o,userAgent:r||void 0,acceptLanguage:n||void 0,locale:u}}function y(e,s){const o=[t("redocly.organization.id",process.env.ORGANIZATION_ID),t("redocly.organization.slug",process.env.ORGANIZATION_SLUG),t("redocly.project.id",process.env.PROJECT_ID),t("redocly.project.slug",process.env.PROJECT_SLUG),t("redocly.product.type",l.toLowerCase()),t("redocly.client.ip",e.clientIp),t("redocly.client.userAgent",e.userAgent),t("redocly.client.acceptLanguage",e.acceptLanguage),t("redocly.client.locale",e.locale)];return e.userId?o.push(t("redocly.user.id",e.userId)):o.push(t("redocly.anonymous.id",a(s))),o.filter(r=>r!==void 0)}function m(e,s,o){const r=f(e.userId,s),n=new Date(Math.floor(Number(o.startTimeUnixNano)/1e6)).toISOString(),u=o.attributes.find(d=>d.key==="cloudevents.event_data.uri"),c=u&&"stringValue"in u.value?[t("cloudevents.event_data.page.uri",u.value.stringValue)]:[];return[t("cloudevents.event_spec_version","1.0"),t("cloudevents.event_object","event"),t("cloudevents.event_origin","realm-ui"),t("cloudevents.event_source",r.uri),t("cloudevents.event_source_details.id",r.id),t("cloudevents.event_source_details.object",r.object),t("cloudevents.event_source_details.uri",r.uri),t("cloudevents.event_data_content_type","application/json; charset=utf-8"),t("cloudevents.event_organization_id",process.env.ORGANIZATION_ID),t("cloudevents.event_organization_slug",process.env.ORGANIZATION_SLUG),t("cloudevents.event_project_id",process.env.PROJECT_ID),t("cloudevents.event_project_slug",process.env.PROJECT_SLUG),t("cloudevents.event_product_type",l.toLowerCase()),t("cloudevents.event_session_id",s),t("cloudevents.event_time",n),t("cloudevents.event_client.ip",e.clientIp),t("cloudevents.event_client.user_agent",e.userAgent),t("cloudevents.event_client.accept_language",e.acceptLanguage),t("cloudevents.event_client.locale",e.locale),...c]}function A(e,s,o){return[...e.attributes.filter(n=>{const u="stringValue"in n.value&&n.value.stringValue==="",c=/cloudevents\.event_source_details\..+/.test(n.key);return!(u||c)}),...m(s,o,e)].filter(n=>n!==void 0)}function f(e,s){return e?{id:e,object:"user",uri:`${process.env.MAIN_API_URL}/users/${e}`}:{id:a(s),object:"anonymous",uri:`${process.env.MAIN_API_URL}/anonymous/${a(s)}`}}function a(e){return e.replace("ses_","ann_")}export{L as otelTracesHandler,A as toCloudEventAttributes,f as toSource};
1
+ import{envConfig as c}from"../../../../config/env-config.js";import{getClientIp as v}from"../../utils/get-client-ip.js";import{PRODUCT_NAME as d}from"../../../../config/product-gates.js";import{toAttribute as t,getAttributesStringValue as g}from"./otlp.js";const p=c.OTEL_TRACES_URL||"https://otel.cloud.redocly.com/v1/traces";async function T(e){const o=await e.req.json(),r=m(e),s={resourceSpans:o.resourceSpans.map(n=>{const u=g(n.resource.attributes.find(i=>i.key==="session_id"));return u?{...n,resource:{...n.resource,attributes:[...n.resource.attributes,...y(r,u)]},scopeSpans:n.scopeSpans.map(i=>({...i,spans:i.spans.map(a=>({...a,attributes:a.name.startsWith("event.")&&a.name!=="event.undefined"?A(a,r,u):a.attributes}))}))}:n})};return await fetch(p,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(s)}),e.newResponse(null,200,{})}function m(e){const o=e.get("auth")?.claims?.id||e.get("auth")?.claims?.sub,r=v(e.req.raw)||e.req.raw.context.remoteAddr?.hostname,s=e.req.raw.headers.get("user-agent"),n=e.req.raw.headers.get("accept-language"),u=n?.split(",")[0];return{userId:o,clientIp:r,userAgent:s||void 0,acceptLanguage:n||void 0,locale:u}}function y(e,o){const r=[t("redocly.organization.id",c.ORGANIZATION_ID),t("redocly.organization.slug",c.ORGANIZATION_SLUG),t("redocly.project.id",c.PROJECT_ID),t("redocly.project.slug",c.PROJECT_SLUG),t("redocly.product.type",d.toLowerCase()),t("redocly.client.ip",e.clientIp),t("redocly.client.userAgent",e.userAgent),t("redocly.client.acceptLanguage",e.acceptLanguage),t("redocly.client.locale",e.locale)];return e.userId?r.push(t("redocly.user.id",e.userId)):r.push(t("redocly.anonymous.id",l(o))),r.filter(s=>s!==void 0)}function f(e,o,r){const s=b(e.userId,o),n=new Date(Math.floor(Number(r.startTimeUnixNano)/1e6)).toISOString(),u=r.attributes.find(_=>_.key==="cloudevents.event_data.uri"),i=u&&"stringValue"in u.value?[t("cloudevents.event_data.page.uri",u.value.stringValue)]:[];return[t("cloudevents.event_spec_version","1.0"),t("cloudevents.event_object","event"),t("cloudevents.event_origin","realm-ui"),t("cloudevents.event_source",s.uri),t("cloudevents.event_source_details.id",s.id),t("cloudevents.event_source_details.object",s.object),t("cloudevents.event_source_details.uri",s.uri),t("cloudevents.event_data_content_type","application/json; charset=utf-8"),t("cloudevents.event_organization_id",c.ORGANIZATION_ID),t("cloudevents.event_organization_slug",c.ORGANIZATION_SLUG),t("cloudevents.event_project_id",c.PROJECT_ID),t("cloudevents.event_project_slug",c.PROJECT_SLUG),t("cloudevents.event_product_type",d.toLowerCase()),t("cloudevents.event_session_id",o),t("cloudevents.event_time",n),t("cloudevents.event_client.ip",e.clientIp),t("cloudevents.event_client.user_agent",e.userAgent),t("cloudevents.event_client.accept_language",e.acceptLanguage),t("cloudevents.event_client.locale",e.locale),...i]}function A(e,o,r){return[...e.attributes.filter(n=>{const u="stringValue"in n.value&&n.value.stringValue==="",i=/cloudevents\.event_source_details\..+/.test(n.key);return!(u||i)}),...f(o,r,e)].filter(n=>n!==void 0)}function b(e,o){return e?{id:e,object:"user",uri:`${c.MAIN_API_URL}/users/${e}`}:{id:l(o),object:"anonymous",uri:`${c.MAIN_API_URL}/anonymous/${l(o)}`}}function l(e){return e.replace("ses_","ann_")}export{T as otelTracesHandler,A as toCloudEventAttributes,b as toSource};
@@ -1 +1 @@
1
- import{DEV_LOGIN_SLUG as w,ServerRoutes as N}from"../../../constants/common.js";import{CACHE_CONTROL_NO_CACHE_HEADER_VALUE as a,DEFAULT_TITLE as O}from"../../constants/common.js";import{findInIterable as U}from"../../../utils/collection/find-in-iterable.js";import{removeTrailingSlash as $}from"../../../utils/url/remove-trailing-slash.js";import{isDevelopMode as F}from"../../utils/envs/is-develop-mode.js";import{canAccessResource as q,filterDataByAccessDeep as A,isResourcePubliclyAccessible as B}from"../../utils/rbac.js";import{getServerProps as H}from"../../ssr/index.js";import{readSharedData as V}from"../../utils/index.js";import{getRedirectLoginUrl as G}from"../utils/get-redirect-login-url.js";import{processRedirects as M}from"./helpers/process-redirects.js";import{removeErrorDetails as k}from"../utils/remove-error-details.js";import{telemetry as K}from"../../telemetry/index.js";function ae(e,s){return async(t,m)=>{const l=t.get("logger"),{req:u}=t,{pathname:d}=new URL(u.url),{seo:f,ssoDirect:h}=e.getConfig(),i=f?.title||O;if(e?.compilationErrors?.length&&F())return t.json({templateId:"compilation-error",props:{compilationErrors:e?.compilationErrors},sharedDataIds:{}},500,{"Cache-Control":a});const p=d.match(/page-data(.*)data.json$/);if(!p)return m();const c=decodeURI(p[1]),n=c==="/index/"?"/":$(c),o=e.getRouteBySlug(n,{followRedirect:!1})||U(e.routesBySlug.values(),r=>r.hasClientRoutes&&c.startsWith(r.slug));if(c===N.OIDC_CALLBACK+"/")return t.json({templateId:"403OIDC",sharedDataIds:{},props:{seo:{title:`${i} - Forbidden`}}},200,{"Cache-Control":a});const{isAuthenticated:C,teams:D,claims:{name:S,picture:b,email:I}}=t.get("auth"),R={isAuthenticated:C,email:I,teams:D},g={isAuthenticated:C,name:S,picture:b,email:I,teams:D},E=e.getRedirect(n);if(E){const r=M({redirect:E}).location;return K.sendRedirectMessage({from:n,templateId:"404"}),t.json({templateId:"404",redirectTo:r,sharedDataIds:{},props:{}},301,{"Cache-Control":a})}if(!o){const r=e.getRouteBySlug(n,{followRedirect:!0});return l.error(`Page not found: ${d}`),t.json({templateId:"404",redirectTo:r?.slug,sharedDataIds:{},props:{seo:{title:`${i} - Not Found`}},userData:g},404,{"Cache-Control":a})}if(l.verbose(`Page viewed: ${o.slug}`),!q(o,R,e.config.rbac,e.config.requiresLogin)&&o.slug!==w){if(C)return t.json({templateId:"403",sharedDataIds:{},props:{seo:{title:`${i} - Forbidden`}},userData:g},403,{"Cache-Control":a});const r=Object.keys(h||{}).length>0;return t.json({templateId:"404",sharedDataIds:{},props:{seo:{title:`${i} - Not Found`}},userData:g,...r?{redirectTo:G(e,o.slug)}:{}},r?401:404,{"Cache-Control":a})}const j=A(o.versions,R,e.config.rbac,e.config.requiresLogin),v=e.routesSharedData.get(o.slug)||{},T=await s(o),_=await H(o,t,T,e),{sharedDataIds:y,...L}=_,P={templateId:o.templateId,versions:j,sharedDataIds:{...v,...y||{}},props:process.env.NODE_ENV==="production"?k(L):L,slug:o.slug,userData:g,isPublic:B(o,e.config)};return t.json(P,200,{"Cache-Control":a})}}function se(e){return async(s,t)=>{const m=s.get("logger"),{req:l}=s,{pathname:u}=new URL(l.url),d=u.match(/\/page-data\/shared\/(.*)\.json/);if(!d)return t();const f=decodeURIComponent(d[1]),h=await V(f,e.outdir),{isAuthenticated:i,teams:p,claims:{email:c}}=s.get("auth"),n=A(h,{isAuthenticated:i,email:c,teams:p},e.config.rbac,e.config.requiresLogin);return n?s.json(n,200,{"Cache-Control":a}):(m.error(`Shared data not found: ${u}`),s.text("Not Found",404,{"Cache-Control":a}))}}export{ae as pageDataHandler,se as sharedPageDataHandler};
1
+ import{DEV_LOGIN_SLUG as U,ServerRoutes as $}from"../../../constants/common.js";import{CACHE_CONTROL_NO_CACHE_HEADER_VALUE as a,DEFAULT_TITLE as F}from"../../constants/common.js";import{findInIterable as O}from"../../../utils/collection/find-in-iterable.js";import{removeTrailingSlash as N}from"../../../utils/url/remove-trailing-slash.js";import{envConfig as E}from"../../../config/env-config.js";import{canAccessResource as q,filterDataByAccessDeep as b,isResourcePubliclyAccessible as B}from"../../utils/rbac.js";import{getServerProps as H}from"../../ssr/index.js";import{readSharedData as G}from"../../utils/index.js";import{getRedirectLoginUrl as M}from"../utils/get-redirect-login-url.js";import{processRedirects as V}from"./helpers/process-redirects.js";import{removeErrorDetails as k}from"../utils/remove-error-details.js";import{telemetry as K}from"../../telemetry/index.js";function ae(e,s){return async(o,h)=>{const l=o.get("logger"),{req:u}=o,{pathname:c}=new URL(u.url),{seo:g,ssoDirect:m}=e.getConfig(),n=g?.title||F;if(e?.compilationErrors?.length&&E.isDevelopMode)return o.json({templateId:"compilation-error",props:{compilationErrors:e?.compilationErrors},sharedDataIds:{}},500,{"Cache-Control":a});const p=c.match(/page-data(.*)data.json$/);if(!p)return h();const i=decodeURI(p[1]),d=i==="/index/"?"/":N(i),t=e.getRouteBySlug(d,{followRedirect:!1})||O(e.routesBySlug.values(),r=>r.hasClientRoutes&&i.startsWith(r.slug));if(i===$.OIDC_CALLBACK+"/")return o.json({templateId:"403OIDC",sharedDataIds:{},props:{seo:{title:`${n} - Forbidden`}}},200,{"Cache-Control":a});const{isAuthenticated:C,teams:D,claims:{name:j,picture:v,email:I}}=o.get("auth"),R={isAuthenticated:C,email:I,teams:D},f={isAuthenticated:C,name:j,picture:v,email:I,teams:D},L=e.getRedirect(d);if(L){const r=V({redirect:L}).location;return K.sendRedirectMessage([{object:"redirect",from:d,templateId:"404"}]),o.json({templateId:"404",redirectTo:r,sharedDataIds:{},props:{}},301,{"Cache-Control":a})}if(!t){const r=e.getRouteBySlug(d,{followRedirect:!0});return l.error(`Page not found: ${c}`),o.json({templateId:"404",redirectTo:r?.slug,sharedDataIds:{},props:{seo:{title:`${n} - Not Found`}},userData:f},404,{"Cache-Control":a})}if(l.verbose(`Page viewed: ${t.slug}`),!q(t,R,e.config.rbac,e.config.requiresLogin)&&t.slug!==U){if(C)return o.json({templateId:"403",sharedDataIds:{},props:{seo:{title:`${n} - Forbidden`}},userData:f},403,{"Cache-Control":a});const r=Object.keys(m||{}).length>0;return o.json({templateId:"404",sharedDataIds:{},props:{seo:{title:`${n} - Not Found`}},userData:f,...r?{redirectTo:M(e,t.slug)}:{}},r?401:404,{"Cache-Control":a})}const A=b(t.versions,R,e.config.rbac,e.config.requiresLogin),P=e.routesSharedData.get(t.slug)||{},T=await s(t),y=await H(t,o,T,e),{sharedDataIds:_,...S}=y,w={templateId:t.templateId,versions:A,sharedDataIds:{...P,..._||{}},props:E.isProductionEnv?k(S):S,slug:t.slug,userData:f,isPublic:B(t,e.config)};return o.json(w,200,{"Cache-Control":a})}}function se(e){return async(s,o)=>{const h=s.get("logger"),{req:l}=s,{pathname:u}=new URL(l.url),c=u.match(/\/page-data\/shared\/(.*)\.json/);if(!c)return o();const g=decodeURIComponent(c[1]),m=await G(g,e.outdir),{isAuthenticated:n,teams:p,claims:{email:i}}=s.get("auth"),t=g==="scorecard"?m:b(m,{isAuthenticated:n,email:i,teams:p},e.config.rbac,e.config.requiresLogin);return t?s.json(t,200,{"Cache-Control":a}):(h.error(`Shared data not found: ${u}`),s.text("Not Found",404,{"Cache-Control":a}))}}export{ae as pageDataHandler,se as sharedPageDataHandler};
@@ -1 +1 @@
1
- import{getPathPrefix as i}from"@redocly/theme/core/utils";async function c(e,n){const t=new URL(e.req.url),r=i(),o=process.env.NODE_ENV==="production"?301:302;if(r&&t.pathname==="/")return e.newResponse(null,o,{Location:r});await n()}export{c as pathPrefixRedirectHandler};
1
+ import{getPathPrefix as i}from"@redocly/theme/core/utils";import{envConfig as a}from"../../../config/env-config.js";async function p(e,r){const t=new URL(e.req.url),n=i(),o=a.isProductionEnv?301:302;if(n&&t.pathname==="/")return e.newResponse(null,o,{Location:n});await r()}export{p as pathPrefixRedirectHandler};
@@ -12,10 +12,10 @@ export declare function handleErrorPageRender(ctx: Context, store: Store, option
12
12
  };
13
13
  }, statusCode: ClientErrorStatusCode, templateId?: string): Promise<Response>;
14
14
  export declare function getLoginUrlWithRedirect(redirectTo: string): string;
15
- export declare function handleUnauthorizedAsset(ctx: Context): Promise<Response & import("hono").TypedResponse<"Forbidden", 100 | -1 | 500 | 400 | 200 | 302 | 401 | 300 | 403 | 301 | 102 | 103 | 201 | 202 | 203 | 206 | 207 | 208 | 226 | 303 | 305 | 306 | 307 | 308 | 402 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 421 | 422 | 423 | 424 | 425 | 426 | 428 | 429 | 431 | 451 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 510 | 511, "text">>;
15
+ export declare function handleUnauthorizedAsset(ctx: Context): Promise<Response & import("hono").TypedResponse<"Forbidden", 100 | -1 | 500 | 400 | 200 | 302 | 401 | 403 | 300 | 301 | 102 | 103 | 201 | 202 | 203 | 206 | 207 | 208 | 226 | 303 | 305 | 306 | 307 | 308 | 402 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 421 | 422 | 423 | 424 | 425 | 426 | 428 | 429 | 431 | 451 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 510 | 511, "text">>;
16
16
  export declare function handleUnauthorizedApiRequest(ctx: Context): Response & import("hono").TypedResponse<{
17
17
  message: string;
18
- }, 100 | -1 | 500 | 400 | 200 | 302 | 401 | 300 | 403 | 301 | 102 | 103 | 201 | 202 | 203 | 206 | 207 | 208 | 226 | 303 | 305 | 306 | 307 | 308 | 402 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 421 | 422 | 423 | 424 | 425 | 426 | 428 | 429 | 431 | 451 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 510 | 511, "json">;
18
+ }, 100 | -1 | 500 | 400 | 200 | 302 | 401 | 403 | 300 | 301 | 102 | 103 | 201 | 202 | 203 | 206 | 207 | 208 | 226 | 303 | 305 | 306 | 307 | 308 | 402 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 421 | 422 | 423 | 424 | 425 | 426 | 428 | 429 | 431 | 451 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 510 | 511, "json">;
19
19
  /**
20
20
  * Normalize the IP address to an IPv4 address.
21
21
  * @param address - The IP address to normalize.
@@ -0,0 +1,4 @@
1
+ import { WorkerPool } from './worker-pool.js';
2
+ export declare const MCP_TOOL_WORKER_KEY = "executeMcpTool";
3
+ export declare const mcpToolWorkers: WorkerPool;
4
+ //# sourceMappingURL=mcp-tool-worker-pool.d.ts.map
@@ -0,0 +1 @@
1
+ import{getAllowedEnvs as o}from"../utils/envs/get-api-route-allowed-env-variables.js";import{WorkerPool as r}from"./worker-pool.js";const s="executeMcpTool",e=5,c=new r({workerScript:"./mcp-tool-worker",minWorkers:1,maxWorkers:e,workerType:"process",forkOpts:{env:{...o()},stdio:"inherit"},lazy:!0});export{s as MCP_TOOL_WORKER_KEY,c as mcpToolWorkers};
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=mcp-tool-worker.d.ts.map
@@ -0,0 +1 @@
1
+ import o from"workerpool";import{executeMcpTool as r}from"../plugins/mcp/workers/execute-mcp-tool.js";import{MCP_TOOL_WORKER_KEY as m}from"./mcp-tool-worker-pool.js";o.worker({[m]:r});
@@ -1,9 +1,11 @@
1
1
  import type { ApiRoutesWorkerParams, ApiRoutesWorkerResponse } from '../types/plugins/api-routes.js';
2
2
  import type { RenderPayload } from '../../types/ssr.js';
3
- import type { ScorecardsWorkerParams, ScorecardsWorkerResponse } from '../plugins/scorecards/workers/scorecards.js';
3
+ import type { ScorecardsWorkerParams, ScorecardsWorkerResponse } from '../types/plugins/scorecards.js';
4
+ import type { McpToolWorkerParams, McpToolWorkerResponse } from '../plugins/mcp/types.js';
4
5
  import type { SCORECARDS_WORKER_KEY } from './scorecards-worker-pool.js';
5
6
  import type { API_ROUTES_WORKER_KEY } from './api-routes-worker-pool.js';
6
7
  import type { SSR_WORKER_KEY } from './ssr-worker-pool.js';
8
+ import type { MCP_TOOL_WORKER_KEY } from './mcp-tool-worker-pool.js';
7
9
  export type SsrWorkerResponse = {
8
10
  html: string;
9
11
  statusCode: 200 | 500;
@@ -22,6 +24,10 @@ export type WorkerTypeMapping = {
22
24
  params: [ScorecardsWorkerParams];
23
25
  response: ScorecardsWorkerResponse;
24
26
  };
27
+ [MCP_TOOL_WORKER_KEY]: {
28
+ params: [McpToolWorkerParams];
29
+ response: McpToolWorkerResponse;
30
+ };
25
31
  };
26
32
  export type WorkerParams<T extends keyof WorkerTypeMapping> = WorkerTypeMapping[T]['params'];
27
33
  export type WorkerResponse<T extends keyof WorkerTypeMapping> = WorkerTypeMapping[T]['response'];
@@ -1 +1 @@
1
- import s from"workerpool";import{isDevelopMode as l}from"../utils/envs/is-develop-mode.js";import{fromCurrentDir as m}from"../utils/paths.js";class p{#t=null;#o;constructor(o){this.#o=o,this.#o.lazy||(this.#t=this.#i())}#i(){const{workerScript:o,lazy:e,...i}=this.#o;let t=o;return!t.endsWith(".js")&&!t.endsWith(".mjs")&&(t=m(import.meta.url,`${t}.${l()?"js":"mjs"}`)),s.pool(t,{...i})}#r(){return this.#t||(this.#t=this.#i()),this.#t}async exec(o,e,i){let r=this.#r().exec(o,e);return i?.timeout&&(r=r.timeout(i.timeout)),await r}async terminate(){this.#t&&(await this.#t.terminate(),this.#t=null)}}export{p as WorkerPool};
1
+ import s from"workerpool";import{envConfig as l}from"../../config/env-config.js";import{fromCurrentDir as n}from"../utils/paths.js";class f{#t=null;#o;constructor(o){this.#o=o,this.#o.lazy||(this.#t=this.#i())}#i(){const{workerScript:o,lazy:e,...i}=this.#o;let t=o;return!t.endsWith(".js")&&!t.endsWith(".mjs")&&(t=n(import.meta.url,`${t}.${l.isDevelopMode?"js":"mjs"}`)),s.pool(t,{...i})}#r(){return this.#t||(this.#t=this.#i()),this.#t}async exec(o,e,i){let r=this.#r().exec(o,e);return i?.timeout&&(r=r.timeout(i.timeout)),await r}async terminate(){this.#t&&(await this.#t.terminate(),this.#t=null)}}export{f as WorkerPool};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@redocly/realm",
3
- "version": "0.129.2",
3
+ "version": "0.130.0-custom.2",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "bin": {
@@ -23,17 +23,15 @@
23
23
  "@opentelemetry/core": "2.0.1",
24
24
  "@opentelemetry/exporter-trace-otlp-http": "0.202.0",
25
25
  "@opentelemetry/instrumentation": "0.202.0",
26
- "@opentelemetry/instrumentation-document-load": "0.47.0",
27
- "@opentelemetry/instrumentation-fetch": "0.202.0",
28
26
  "@opentelemetry/instrumentation-http": "0.202.0",
29
- "@opentelemetry/instrumentation-xml-http-request": "0.202.0",
30
27
  "@opentelemetry/resources": "2.0.1",
31
28
  "@opentelemetry/sdk-trace-node": "2.0.1",
32
29
  "@opentelemetry/sdk-trace-web": "2.0.1",
33
30
  "@opentelemetry/semantic-conventions": "1.34.0",
34
- "@redocly/ajv": "8.17.1",
35
- "@redocly/openapi-core": "2.14.3",
36
- "@shikijs/transformers": "^1.22.2",
31
+ "@redocly/ajv": "8.17.2",
32
+ "openapi-sampler": "1.6.2",
33
+ "@redocly/openapi-core": "2.17.0",
34
+ "@shikijs/transformers": "3.21.0",
37
35
  "@tanstack/react-query": "5.62.3",
38
36
  "@tanstack/react-table": "8.21.3",
39
37
  "@tanstack/react-virtual": "3.13.0",
@@ -56,7 +54,7 @@
56
54
  "flexsearch": "0.7.43",
57
55
  "graphql": "16.9.0",
58
56
  "gray-matter": "4.0.3",
59
- "hono": "4.10.6",
57
+ "hono": "4.11.7",
60
58
  "htmlparser2": "8.0.2",
61
59
  "i18next": "22.4.15",
62
60
  "is-glob": "4.0.3",
@@ -67,19 +65,18 @@
67
65
  "nanoid": "5.0.9",
68
66
  "node-fetch": "3.3.1",
69
67
  "nprogress": "0.2.0",
70
- "openapi-sampler": "1.6.2",
71
68
  "os-browserify": "0.3.0",
72
69
  "path-browserify": "1.0.1",
73
70
  "picomatch": "2.3.1",
74
- "react": "19.2.3",
71
+ "react": "^19.2.4",
75
72
  "react-calendar": "5.1.0",
76
73
  "react-date-picker": "11.0.0",
77
- "react-dom": "19.2.3",
78
- "react-router-dom": "^6.21.1",
74
+ "react-dom": "^19.2.4",
75
+ "react-router-dom": "^6.30.3",
79
76
  "react-select": "5.10.1",
80
77
  "reactjs-popup": "2.0.6",
81
78
  "semver": "7.7.3",
82
- "shiki": "1.24.4",
79
+ "shiki": "3.21.0",
83
80
  "simple-git": "3.20.0",
84
81
  "sitemap": "7.1.1",
85
82
  "stream-http": "3.2.0",
@@ -93,18 +90,19 @@
93
90
  "xml-crypto": "6.0.1",
94
91
  "xpath": "0.0.34",
95
92
  "yaml-ast-parser": "0.0.43",
96
- "@redocly/asyncapi-docs": "1.6.1",
97
- "@redocly/config": "0.41.2",
98
- "@redocly/portal-legacy-ui": "0.12.0",
99
- "@redocly/portal-plugin-mock-server": "0.14.1",
100
- "@redocly/realm-asyncapi-sdk": "0.7.0",
101
- "@redocly/theme": "0.61.1",
102
- "@redocly/openapi-docs": "3.17.1",
103
- "@redocly/graphql-docs": "1.6.0"
93
+ "zod": "^3.25.76",
94
+ "@redocly/config": "0.43.0-custom.0",
95
+ "@redocly/graphql-docs": "1.7.0-custom.0",
96
+ "@redocly/portal-plugin-mock-server": "0.16.0-next.0",
97
+ "@redocly/portal-legacy-ui": "0.14.0-next.0",
98
+ "@redocly/openapi-docs": "3.18.0-custom.0",
99
+ "@redocly/realm-asyncapi-sdk": "0.9.0-next.0",
100
+ "@redocly/asyncapi-docs": "1.7.0-custom.0",
101
+ "@redocly/theme": "0.62.0-custom.0"
104
102
  },
105
103
  "peerDependencies": {
106
- "react": "19.2.3",
107
- "react-dom": "19.2.3"
104
+ "react": "^19.2.4",
105
+ "react-dom": "^19.2.4"
108
106
  },
109
107
  "nx": {
110
108
  "implicitDependencies": [
@@ -1 +0,0 @@
1
- import{logger as o}from"../../../../tools/notifiers/logger.js";import{entityRelationDatabaseSchema as a}from"../../schemas/database-schemas.js";import{validateWithResult as i}from"../../utils/ajv-validator.js";function c(r){const e=i(a,r);if(!e.success)return o.warn(`Invalid database catalog entity relation, error: ${e.error}`),null;const t=e.data||{};return{id:t.id,organizationId:t.organization_id,projectId:t.project_id,sourceKey:t.source_key,targetKey:t.target_key,sourceVersion:t.source_version??null,sourceRevision:t.source_revision??null,targetVersion:t.target_version??null,targetRevision:t.target_revision??null,type:t.source_to_target_relation,createdAt:t.created_at??null,updatedAt:t.updated_at??null,object:"catalogEntityRelation"}}export{c as createEntityRelation};
@@ -1,6 +0,0 @@
1
- import { type EntityRelationFileSchema, type EntityBaseFileSchema } from '@redocly/config';
2
- import type { EntitiesCatalogConfig } from '@redocly/config';
3
- export declare function validateEntityRelation(relation: unknown): asserts relation is EntityRelationFileSchema;
4
- export declare function parseAndValidateEntity(entity: unknown, catalogConfig: EntitiesCatalogConfig): EntityBaseFileSchema;
5
- export declare function parseAndValidateEntities(entities: unknown[], catalogConfig: EntitiesCatalogConfig): EntityBaseFileSchema[];
6
- //# sourceMappingURL=validate-entity.d.ts.map
@@ -1 +0,0 @@
1
- import{entityFileSchema as r,entityRelationFileSchema as d,entityBaseProperties as l}from"@redocly/config";import{createValidator as n}from"../utils/ajv-validator.js";const s=n(d,{errorPrefix:"Entity relation validation failed:",dataVar:"relation"});function p(t){s(t)}function m(t,e){const i=o(e);return n(i,{errorPrefix:"Entity validation failed:",dataVar:"entity"})(t)}function f(t,e){const i={type:"array",items:o(e)};return n(i,{errorPrefix:"Entity validation failed:",dataVar:"entity"})(t)}function o(t){const e=Object.entries(t.entityTypes??{}).map(([i,a])=>({type:"object",properties:{...l,type:{const:i},metadata:{additionalProperties:!0,...a.metadataSchema}},required:["key","title","type"],additionalProperties:!1}));return{...r,oneOf:[...r.oneOf,...e]}}export{f as parseAndValidateEntities,m as parseAndValidateEntity,p as validateEntityRelation};
@@ -1,5 +0,0 @@
1
- import type { Context } from 'hono';
2
- import type { ApiRoute } from '../../../types';
3
- import type { Store } from '../../../store.js';
4
- export declare function runMcpWorker(route: ApiRoute, ctx: Context, store: Store): Promise<Response>;
5
- //# sourceMappingURL=run-api-routes-worker.d.ts.map
@@ -1 +0,0 @@
1
- import*as u from"workerpool";import{withPathPrefix as d}from"@redocly/theme/core/utils";import{TimeoutExceededError as p}from"../../../api-routes/errors/timeout-exceeded.js";import{serializeRequest as l}from"../../../api-routes/helpers/serialize-request.js";import{API_ROUTES_WORKER_KEY as f}from"../../../workers/api-routes-worker-pool.js";import{mcpWorkers as h}from"../../../workers/mcp-worker-pool.js";const w=15;async function A(o,a,t){const e=a.get("auth"),i=await t.resolveRouteStaticData(o)||{},s=d(o.slug);try{const{status:r,headers:m,body:c}=await h.exec(f,[{serverOutDir:t.serverOutDir,slug:s,requestHandlerId:o.requestHandlerId,maxResponseSizeMB:w,ctxData:{user:{teams:e.teams,email:e.claims.email,claims:e.claims,idpAccessToken:e.idpAccessToken,idpId:e.claims.idpId,isAuthenticated:e.isAuthenticated},config:t.config},staticData:{...i,props:{...i.props,routeSlug:s,outdir:t.outdir}},req:await l(a.req.raw)}]),n=c.data?Buffer.from(c.data):null;return new Response(n,{status:r,headers:m})}catch(r){throw r instanceof u.Promise.TimeoutError?new p("Timeout exceeded"):r}}export{A as runMcpWorker};
@@ -1,2 +0,0 @@
1
- export declare function isBuildMode(): boolean;
2
- //# sourceMappingURL=is-build-mode.d.ts.map
@@ -1 +0,0 @@
1
- import{cliCommandNames as N}from"../../../constants/common.js";function o(){return process.env.REDOCLY_RUNNING_COMMAND===N.BUILD||process.env.REDOCLY_RUNNING_COMMAND===N.PREPARE}export{o as isBuildMode};
@@ -1,7 +0,0 @@
1
- /**
2
- * Checks if the current running command is 'develop'.
3
- *
4
- * @returns {boolean} - Returns `true` if the current running command is 'develop', otherwise `false`.
5
- */
6
- export declare function isDevelopMode(): boolean;
7
- //# sourceMappingURL=is-develop-mode.d.ts.map
@@ -1 +0,0 @@
1
- import{cliCommandNames as e}from"../../../constants/common.js";function r(){return process.env.REDOCLY_RUNNING_COMMAND===e.DEVELOP}export{r as isDevelopMode};
@@ -1,10 +0,0 @@
1
- /**
2
- * Checks if the current runtime environment is set to production.
3
- *
4
- * This function looks at the `REDOCLY_ENV` environment variable and returns
5
- * `true` if its value is `"production"`, otherwise returns `false`.
6
- *
7
- * @returns {boolean} `true` if the environment is production, otherwise `false`.
8
- */
9
- export declare function isProductionMode(): boolean;
10
- //# sourceMappingURL=is-production-mode.d.ts.map
@@ -1 +0,0 @@
1
- import{readEnvVariable as o}from"../../utils/envs/read-env-variable.js";function i(){return o("REDOCLY_ENV")==="production"}export{i as isProductionMode};
@@ -1,4 +0,0 @@
1
- import { WorkerPool } from './worker-pool.js';
2
- export declare const API_ROUTES_WORKER_KEY = "executeApiRoute";
3
- export declare const mcpWorkers: WorkerPool;
4
- //# sourceMappingURL=mcp-worker-pool.d.ts.map
@@ -1 +0,0 @@
1
- import{getAllowedEnvs as r}from"../utils/envs/get-api-route-allowed-env-variables.js";import{WorkerPool as o}from"./worker-pool.js";const p="executeApiRoute",e=5,i=new o({workerScript:"./api-routes-worker",minWorkers:1,maxWorkers:e,workerType:"process",forkOpts:{env:{...r()},stdio:"inherit"},lazy:!0});export{p as API_ROUTES_WORKER_KEY,i as mcpWorkers};
@@ -1,13 +0,0 @@
1
- /**
2
- * Checks if the current environment is local development.
3
- *
4
- * @param - This function takes no parameters.
5
- * @returns `true` if the current environment is local development, otherwise `false`.
6
- *
7
- * @example
8
- * ```ts
9
- * isLocalDevelopment();
10
- * // true (in local development), false (in other environments)
11
- */
12
- export declare const isLocalDevelopment: () => boolean;
13
- //# sourceMappingURL=is-local-development.d.ts.map
@@ -1 +0,0 @@
1
- const e=()=>process.env.REDOCLY_ENV==="local";export{e as isLocalDevelopment};