@redocly/redoc-revel 0.138.0-next.9 → 0.139.0-next.1

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 (282) hide show
  1. package/CHANGELOG.md +353 -0
  2. package/dist/api-schemas/mcp-fetch-count.d.ts +24 -0
  3. package/dist/api-schemas/mcp-fetch-count.js +1 -0
  4. package/dist/bin.js +0 -0
  5. package/dist/cli/build/analytics/collect-analytics.js +1 -1
  6. package/dist/cli/build/analytics/collectors/get-processed-config-stats-usage.js +1 -1
  7. package/dist/cli/build/index.js +1 -1
  8. package/dist/cli/develop.js +1 -1
  9. package/dist/cli/eject/ejectTheme.js +1 -1
  10. package/dist/cli/translations/collect-config-translations.js +1 -1
  11. package/dist/client/App.js +1 -1
  12. package/dist/client/app/markdoc/custom-components/openapi/openapi-response-sample.js +1 -1
  13. package/dist/client/app/markdoc/custom-components/openapi/replay-openapi.js +1 -1
  14. package/dist/client/app/pages/Invite/Invite.js +1 -1
  15. package/dist/client/app/utils/loadAndNavigate.js +1 -1
  16. package/dist/client/polyfills.js +1 -1
  17. package/dist/client/runtime/loader.js +1 -1
  18. package/dist/client/templates/api-docs/template.js +1 -1
  19. package/dist/client/utils/catalog/parse-filter-query.js +1 -1
  20. package/dist/compiled/svgo/svgo-node.js +39 -39
  21. package/dist/constants/api.d.ts +1 -0
  22. package/dist/constants/api.js +1 -1
  23. package/dist/constants/common.d.ts +6 -0
  24. package/dist/constants/common.js +1 -1
  25. package/dist/constants/l10n/langs/ar.js +1 -1
  26. package/dist/constants/l10n/langs/de.js +1 -1
  27. package/dist/constants/l10n/langs/en.js +1 -1
  28. package/dist/constants/l10n/langs/es.js +1 -1
  29. package/dist/constants/l10n/langs/fr.js +1 -1
  30. package/dist/constants/l10n/langs/hi.js +1 -1
  31. package/dist/constants/l10n/langs/it.js +1 -1
  32. package/dist/constants/l10n/langs/ja.js +1 -1
  33. package/dist/constants/l10n/langs/ko.js +1 -1
  34. package/dist/constants/l10n/langs/pl.js +1 -1
  35. package/dist/constants/l10n/langs/pt-BR.js +1 -1
  36. package/dist/constants/l10n/langs/pt.js +1 -1
  37. package/dist/constants/l10n/langs/ru.js +1 -1
  38. package/dist/constants/l10n/langs/uk.js +1 -1
  39. package/dist/constants/l10n/langs/zh.js +1 -1
  40. package/dist/markdoc/helpers/get-inner-text.js +2 -2
  41. package/dist/markdoc/helpers/guards/is-prompt-node.d.ts +13 -0
  42. package/dist/markdoc/helpers/guards/is-prompt-node.js +1 -0
  43. package/dist/server/config/env-config.d.ts +0 -2
  44. package/dist/server/config/env-schema.d.ts +0 -5
  45. package/dist/server/config/env-schemas/feature-flags.d.ts +0 -4
  46. package/dist/server/config/env-schemas/feature-flags.js +1 -1
  47. package/dist/server/constants/entitlements.js +1 -1
  48. package/dist/server/entitlements/entitlements-provider.js +1 -1
  49. package/dist/server/esbuild/esbuild.js +3 -3
  50. package/dist/server/esbuild/plugins/on-rebuild.js +1 -1
  51. package/dist/server/esbuild/plugins/styled-components-ssr.js +1 -1
  52. package/dist/server/esbuild/plugins/yaml-loader.js +1 -1
  53. package/dist/server/fs/content-fs.js +1 -1
  54. package/dist/server/fs/utils/is-l10n-root-file.d.ts +3 -0
  55. package/dist/server/fs/utils/is-l10n-root-file.js +1 -0
  56. package/dist/server/plugins/analytics/amplitude/index.js +1 -1
  57. package/dist/server/plugins/analytics/heap/browser-hooks.js +1 -1
  58. package/dist/server/plugins/api-docs/index.js +1 -1
  59. package/dist/server/plugins/api-docs/loader.js +3 -3
  60. package/dist/server/plugins/api-docs/search/create-indexer.d.ts +9 -2
  61. package/dist/server/plugins/api-docs/search/create-indexer.js +1 -1
  62. package/dist/server/plugins/api-docs/search/get-ai-search-documents.js +68 -68
  63. package/dist/server/plugins/api-docs/search/search-resolver.js +1 -1
  64. package/dist/server/plugins/api-docs/spec-download.api.js +1 -1
  65. package/dist/server/plugins/api-docs/utils/apply-nav-item-to-root.js +1 -1
  66. package/dist/server/plugins/api-docs/utils/decorators.d.ts +11 -0
  67. package/dist/server/plugins/api-docs/utils/decorators.js +1 -1
  68. package/dist/server/plugins/arazzo-docs/arazzo-doc-loader.js +2 -2
  69. package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/openapi-entities-extractor.js +1 -1
  70. package/dist/server/plugins/catalog-entities/utils/extract-parts-from-channels-message-ref.js +1 -1
  71. package/dist/server/plugins/config-parser/format-custom-tags.js +1 -1
  72. package/dist/server/plugins/config-parser/loaders/content-slugs-loader.js +1 -1
  73. package/dist/server/plugins/config-parser/loaders/utils/read-and-validate-config.js +1 -1
  74. package/dist/server/plugins/config-parser/loaders/versions-config-loader.js +1 -1
  75. package/dist/server/plugins/config-parser/resolve-mutual-exclusion.js +1 -1
  76. package/dist/server/plugins/config-parser/safe-parse.js +1 -1
  77. package/dist/server/plugins/default-theme/resolve-logo.js +1 -1
  78. package/dist/server/plugins/dev-onboarding/api/adapters/apigee/adapter.js +2 -2
  79. package/dist/server/plugins/dev-onboarding/api/adapters/gravitee/client.js +2 -2
  80. package/dist/server/plugins/dev-onboarding/api/combine.js +1 -1
  81. package/dist/server/plugins/dev-onboarding/template/components/AppOverview.js +1 -1
  82. package/dist/server/plugins/dev-onboarding/template/components/useSortableData.js +1 -1
  83. package/dist/server/plugins/markdown/attribute-resolvers/code-walkthrough/file-chunk-parser.d.ts +1 -1
  84. package/dist/server/plugins/markdown/attribute-resolvers/index.js +1 -1
  85. package/dist/server/plugins/markdown/attribute-resolvers/resolve-link.js +1 -1
  86. package/dist/server/plugins/markdown/attribute-resolvers/resolve-svg-content.js +1 -1
  87. package/dist/server/plugins/markdown/attribute-resolvers/resolve-tag-raw-content.d.ts +4 -0
  88. package/dist/server/plugins/markdown/attribute-resolvers/resolve-tag-raw-content.js +2 -0
  89. package/dist/server/plugins/markdown/compiler.js +1 -1
  90. package/dist/server/plugins/markdown/create-source-lines-reader.d.ts +7 -0
  91. package/dist/server/plugins/markdown/create-source-lines-reader.js +1 -0
  92. package/dist/server/plugins/markdown/html/normalize-html-headings.d.ts +9 -0
  93. package/dist/server/plugins/markdown/html/normalize-html-headings.js +1 -0
  94. package/dist/server/plugins/markdown/markdoc/markdoc-options.js +1 -1
  95. package/dist/server/plugins/markdown/markdoc/plugins/utils.d.ts +1 -1
  96. package/dist/server/plugins/markdown/markdoc/plugins/utils.js +1 -1
  97. package/dist/server/plugins/markdown/markdown-static-data-loader.js +1 -1
  98. package/dist/server/plugins/markdown/search/get-ai-search-documents.js +1 -1
  99. package/dist/server/plugins/markdown/search/search-resolver.js +1 -1
  100. package/dist/server/plugins/markdown/search/to-markdown.js +13 -13
  101. package/dist/server/plugins/markdown/search/walk-sections.d.ts +3 -1
  102. package/dist/server/plugins/markdown/search/walk-sections.js +3 -3
  103. package/dist/server/plugins/markdown/utils/sanitize-malformed-md-content.js +2 -2
  104. package/dist/server/plugins/mcp/audit/audit-log.d.ts +1 -1
  105. package/dist/server/plugins/mcp/audit/audit-log.js +1 -1
  106. package/dist/server/plugins/mcp/audit/code-credentials.d.ts +9 -0
  107. package/dist/server/plugins/mcp/audit/code-credentials.js +2 -0
  108. package/dist/server/plugins/mcp/codemode/capabilities/fetch/index.js +5 -5
  109. package/dist/server/plugins/mcp/codemode/capabilities/types.d.ts +3 -1
  110. package/dist/server/plugins/mcp/codemode/capabilities/utils.d.ts +2 -1
  111. package/dist/server/plugins/mcp/codemode/capabilities/utils.js +4 -4
  112. package/dist/server/plugins/mcp/codemode/code-audit.d.ts +4 -3
  113. package/dist/server/plugins/mcp/codemode/code-execution-audit.js +1 -1
  114. package/dist/server/plugins/mcp/codemode/constants.js +1 -1
  115. package/dist/server/plugins/mcp/codemode/prompts.d.ts +2 -1
  116. package/dist/server/plugins/mcp/codemode/prompts.js +8 -8
  117. package/dist/server/plugins/mcp/codemode/tools/describe-tools.js +2 -2
  118. package/dist/server/plugins/mcp/codemode/tools/execute-schema.d.ts +2 -0
  119. package/dist/server/plugins/mcp/codemode/tools/execute-schema.js +1 -1
  120. package/dist/server/plugins/mcp/constants.d.ts +2 -0
  121. package/dist/server/plugins/mcp/constants.js +1 -1
  122. package/dist/server/plugins/mcp/docs-mcp/tool-schemas.js +1 -1
  123. package/dist/server/plugins/mcp/docs-mcp/tools/core/create-anonymous-session.js +1 -1
  124. package/dist/server/plugins/mcp/docs-mcp/tools/core/submit-feedback.js +2 -2
  125. package/dist/server/plugins/mcp/docs-mcp/tools/core/utils.js +1 -1
  126. package/dist/server/plugins/mcp/docs-mcp/tools/openapi/list-apis.js +1 -1
  127. package/dist/server/plugins/mcp/docs-mcp/tools/openapi/utils.d.ts +12 -3
  128. package/dist/server/plugins/mcp/docs-mcp/tools/openapi/utils.js +1 -1
  129. package/dist/server/plugins/mcp/docs-mcp/utils/resolve-refs.d.ts +2 -2
  130. package/dist/server/plugins/mcp/docs-mcp/utils/resolve-refs.js +1 -1
  131. package/dist/server/plugins/mcp/gateway-mcp/allowed-http-methods.d.ts +11 -0
  132. package/dist/server/plugins/mcp/gateway-mcp/allowed-http-methods.js +1 -0
  133. package/dist/server/plugins/mcp/gateway-mcp/api-call-operations.d.ts +32 -0
  134. package/dist/server/plugins/mcp/gateway-mcp/api-call-operations.js +1 -0
  135. package/dist/server/plugins/mcp/gateway-mcp/callable-apis.d.ts +8 -4
  136. package/dist/server/plugins/mcp/gateway-mcp/callable-apis.js +1 -1
  137. package/dist/server/plugins/mcp/gateway-mcp/caller-api-calls.d.ts +9 -0
  138. package/dist/server/plugins/mcp/gateway-mcp/caller-api-calls.js +1 -0
  139. package/dist/server/plugins/mcp/gateway-mcp/elicitation.d.ts +1 -0
  140. package/dist/server/plugins/mcp/gateway-mcp/elicitation.js +5 -5
  141. package/dist/server/plugins/mcp/gateway-mcp/eligibility.d.ts +8 -4
  142. package/dist/server/plugins/mcp/gateway-mcp/eligibility.js +1 -1
  143. package/dist/server/plugins/mcp/gateway-mcp/fetch/fetch-audit.d.ts +2 -1
  144. package/dist/server/plugins/mcp/gateway-mcp/fetch/fetch-audit.js +1 -1
  145. package/dist/server/plugins/mcp/gateway-mcp/fetch/fetch-bridge.d.ts +11 -1
  146. package/dist/server/plugins/mcp/gateway-mcp/fetch/fetch-bridge.js +1 -1
  147. package/dist/server/plugins/mcp/gateway-mcp/fetch/redact.d.ts +11 -0
  148. package/dist/server/plugins/mcp/gateway-mcp/fetch/redact.js +1 -1
  149. package/dist/server/plugins/mcp/gateway-mcp/fetch-capability.js +1 -1
  150. package/dist/server/plugins/mcp/gateway-mcp/rate-limit/fetch-limiter/fetch-count-client.d.ts +4 -0
  151. package/dist/server/plugins/mcp/gateway-mcp/rate-limit/fetch-limiter/fetch-count-client.js +1 -0
  152. package/dist/server/plugins/mcp/gateway-mcp/rate-limit/fetch-limiter/fetch-count-secret.d.ts +4 -0
  153. package/dist/server/plugins/mcp/gateway-mcp/rate-limit/fetch-limiter/fetch-count-secret.js +1 -0
  154. package/dist/server/plugins/mcp/gateway-mcp/rate-limit/fetch-limiter/fetch-count.d.ts +11 -0
  155. package/dist/server/plugins/mcp/gateway-mcp/rate-limit/fetch-limiter/fetch-count.js +1 -0
  156. package/dist/server/plugins/mcp/gateway-mcp/rate-limit/fetch-limiter/fetch-counter-repository.d.ts +13 -0
  157. package/dist/server/plugins/mcp/gateway-mcp/rate-limit/fetch-limiter/fetch-counter-repository.js +13 -0
  158. package/dist/server/plugins/mcp/gateway-mcp/rate-limit/{limits.d.ts → fetch-limiter/fetch-limits.d.ts} +1 -1
  159. package/dist/server/plugins/mcp/gateway-mcp/rate-limit/fetch-limiter/fetch-limits.js +1 -0
  160. package/dist/server/plugins/mcp/gateway-mcp/rate-limit/{apply-edge-rate-limit.d.ts → request-limiter/apply-edge-rate-limit.d.ts} +1 -1
  161. package/dist/server/plugins/mcp/gateway-mcp/rate-limit/request-limiter/apply-edge-rate-limit.js +1 -0
  162. package/dist/server/plugins/mcp/gateway-mcp/rate-limit/{edge-limiter.d.ts → request-limiter/edge-limiter.d.ts} +3 -3
  163. package/dist/server/plugins/mcp/gateway-mcp/rate-limit/request-limiter/edge-limiter.js +1 -0
  164. package/dist/server/plugins/mcp/gateway-mcp/rate-limit/request-limiter/rate-limit-telemetry.js +1 -0
  165. package/dist/server/plugins/mcp/gateway-mcp/rate-limit/request-limiter/request-limits.d.ts +6 -0
  166. package/dist/server/plugins/mcp/gateway-mcp/rate-limit/request-limiter/request-limits.js +1 -0
  167. package/dist/server/plugins/mcp/gateway-mcp/rate-limit/utils/ip-key.js +1 -0
  168. package/dist/server/plugins/mcp/gateway-mcp/rate-limit/{window-counter.d.ts → utils/window-counter.d.ts} +1 -1
  169. package/dist/server/plugins/mcp/gateway-mcp/rate-limit/utils/window-counter.js +1 -0
  170. package/dist/server/plugins/mcp/gateway-mcp/route-pattern.d.ts +18 -0
  171. package/dist/server/plugins/mcp/gateway-mcp/route-pattern.js +1 -0
  172. package/dist/server/plugins/mcp/gateway-mcp/secret-store.d.ts +9 -3
  173. package/dist/server/plugins/mcp/gateway-mcp/secret-store.js +1 -1
  174. package/dist/server/plugins/mcp/gateway-mcp/subject.js +1 -1
  175. package/dist/server/plugins/mcp/gateway-mcp/upstream-auth-scheme.d.ts +2 -0
  176. package/dist/server/plugins/mcp/gateway-mcp/upstream-auth-scheme.js +2 -2
  177. package/dist/server/plugins/mcp/gateway-mcp/upstream-auth.d.ts +0 -2
  178. package/dist/server/plugins/mcp/gateway-mcp/upstream-auth.js +1 -1
  179. package/dist/server/plugins/mcp/handlers/credentials-page/constants.d.ts +7 -0
  180. package/dist/server/plugins/mcp/handlers/credentials-page/constants.js +1 -0
  181. package/dist/server/plugins/mcp/handlers/credentials-page/form-contract.d.ts +5 -0
  182. package/dist/server/plugins/mcp/handlers/credentials-page/form-contract.js +1 -0
  183. package/dist/server/plugins/mcp/handlers/credentials-page/form-page.d.ts +14 -0
  184. package/dist/server/plugins/mcp/handlers/credentials-page/form-page.js +62 -0
  185. package/dist/server/plugins/mcp/handlers/credentials-page/layout.d.ts +17 -0
  186. package/dist/server/plugins/mcp/handlers/credentials-page/layout.js +11 -0
  187. package/dist/server/plugins/mcp/handlers/credentials-page/outcome-pages.d.ts +10 -0
  188. package/dist/server/plugins/mcp/handlers/credentials-page/outcome-pages.js +11 -0
  189. package/dist/server/plugins/mcp/handlers/credentials-page/site-branding.d.ts +10 -0
  190. package/dist/server/plugins/mcp/handlers/credentials-page/site-branding.js +1 -0
  191. package/dist/server/plugins/mcp/handlers/credentials-page/styles.d.ts +4 -0
  192. package/dist/server/plugins/mcp/handlers/credentials-page/styles.js +186 -0
  193. package/dist/server/plugins/mcp/handlers/credentials-page/types.d.ts +32 -0
  194. package/dist/server/plugins/mcp/handlers/credentials-page/types.js +0 -0
  195. package/dist/server/plugins/mcp/handlers/docs-mcp-handler.js +1 -1
  196. package/dist/server/plugins/mcp/handlers/handle-mcp-request.js +1 -1
  197. package/dist/server/plugins/mcp/handlers/mcp-credentials-handler.d.ts +0 -1
  198. package/dist/server/plugins/mcp/handlers/mcp-credentials-handler.js +1 -1
  199. package/dist/server/plugins/mcp/index.js +1 -1
  200. package/dist/server/plugins/mcp/servers/docs-server.js +1 -1
  201. package/dist/server/plugins/mcp/servers/mcp-server.js +2 -2
  202. package/dist/server/plugins/mcp/types.d.ts +16 -1
  203. package/dist/server/plugins/mcp/utils/docs-site-url.d.ts +6 -0
  204. package/dist/server/plugins/mcp/utils/docs-site-url.js +1 -0
  205. package/dist/server/plugins/mcp/utils/mode.d.ts +4 -1
  206. package/dist/server/plugins/mcp/utils/mode.js +1 -1
  207. package/dist/server/plugins/mcp/utils/xmcp-utils.d.ts +3 -5
  208. package/dist/server/plugins/mcp/utils/xmcp-utils.js +1 -1
  209. package/dist/server/plugins/nav-utils.js +1 -1
  210. package/dist/server/plugins/scorecard-classic/loaders/scorecard.js +1 -1
  211. package/dist/server/plugins/scorecard-classic/template/components.js +1 -1
  212. package/dist/server/plugins/scorecard-classic/template/useData.js +1 -1
  213. package/dist/server/plugins/search/engines/flexsearch/index.js +2 -2
  214. package/dist/server/plugins/sidebars/index.js +2 -2
  215. package/dist/server/plugins/sidebars/utils.js +1 -1
  216. package/dist/server/providers/database/client.d.ts +5 -0
  217. package/dist/server/providers/database/client.js +1 -1
  218. package/dist/server/providers/database/copy-migrations.js +1 -1
  219. package/dist/server/providers/database/database-connections-manager.js +1 -1
  220. package/dist/server/providers/database/has-project-database.d.ts +3 -0
  221. package/dist/server/providers/database/has-project-database.js +1 -0
  222. package/dist/server/store.d.ts +2 -0
  223. package/dist/server/store.js +1 -1
  224. package/dist/server/tools/notifiers/formatter.js +1 -1
  225. package/dist/server/tools/notifiers/helpers/privacy/mask-email.js +1 -1
  226. package/dist/server/tools/notifiers/logger.js +1 -1
  227. package/dist/server/types/plugins/markdown.d.ts +2 -0
  228. package/dist/server/types/web-server.d.ts +1 -0
  229. package/dist/server/utils/codeframes/codeframes.js +2 -2
  230. package/dist/server/utils/entitlements/read-entitlement-number.d.ts +3 -0
  231. package/dist/server/utils/entitlements/read-entitlement-number.js +1 -0
  232. package/dist/server/utils/fs.js +1 -1
  233. package/dist/server/utils/is-api-download-link.d.ts +1 -0
  234. package/dist/server/utils/is-api-download-link.js +1 -1
  235. package/dist/server/utils/rbac.js +1 -1
  236. package/dist/server/utils/redact-url.d.ts +3 -2
  237. package/dist/server/utils/redact-url.js +1 -1
  238. package/dist/server/utils/sandbox-context.d.ts +7 -4
  239. package/dist/server/utils/sandbox-context.js +1 -1
  240. package/dist/server/web-server/auth.d.ts +0 -1
  241. package/dist/server/web-server/auth.js +4 -4
  242. package/dist/server/web-server/dev-server.js +1 -1
  243. package/dist/server/web-server/http.d.ts +2 -1
  244. package/dist/server/web-server/http.js +2 -2
  245. package/dist/server/web-server/jwt/token-types.d.ts +1 -0
  246. package/dist/server/web-server/jwt/token-types.js +1 -1
  247. package/dist/server/web-server/middleware/catalogAuthMiddleware.js +1 -1
  248. package/dist/server/web-server/middleware/dynamic-middleware/hono-compose.js +1 -1
  249. package/dist/server/web-server/middleware/responseHeadersMiddleware.js +1 -1
  250. package/dist/server/web-server/routes/auth.d.ts +1 -1
  251. package/dist/server/web-server/routes/auth.js +1 -1
  252. package/dist/server/web-server/routes/catalog/helpers/create-entity-schema.d.ts +1756 -1756
  253. package/dist/server/web-server/routes/catalog/helpers/create-entity-update-schema.d.ts +295 -295
  254. package/dist/server/web-server/routes/cors-proxy.js +2 -2
  255. package/dist/server/web-server/routes/index.js +1 -1
  256. package/dist/server/web-server/routes/mcp-routes/mcp-consent-page.d.ts +24 -0
  257. package/dist/server/web-server/routes/mcp-routes/mcp-consent-page.js +35 -0
  258. package/dist/server/web-server/routes/mcp-routes/mcp-fetch-count.d.ts +8 -0
  259. package/dist/server/web-server/routes/mcp-routes/mcp-fetch-count.js +1 -0
  260. package/dist/server/web-server/routes/mcp-routes/mcp-oauth-store.d.ts +15 -0
  261. package/dist/server/web-server/routes/mcp-routes/mcp-oauth-store.js +1 -0
  262. package/dist/server/web-server/routes/mcp-routes/mcp-oauth.d.ts +3 -1
  263. package/dist/server/web-server/routes/mcp-routes/mcp-oauth.js +1 -1
  264. package/dist/server/web-server/routes/mcp-routes/mcp-routes.js +1 -1
  265. package/dist/server/web-server/routes/mcp-routes/mcp-server-card.js +1 -1
  266. package/dist/server/web-server/routes/resolve-route.js +1 -1
  267. package/dist/server/workers/worker-pool.js +1 -1
  268. package/dist/types/entitlements.d.ts +2 -0
  269. package/dist/utils/time/debounce.js +1 -1
  270. package/package.json +10 -11
  271. package/dist/client/app/utils/withLoadProgress.d.ts +0 -2
  272. package/dist/client/app/utils/withLoadProgress.js +0 -1
  273. package/dist/server/plugins/mcp/gateway-mcp/rate-limit/apply-edge-rate-limit.js +0 -1
  274. package/dist/server/plugins/mcp/gateway-mcp/rate-limit/edge-limiter.js +0 -1
  275. package/dist/server/plugins/mcp/gateway-mcp/rate-limit/ip-key.js +0 -1
  276. package/dist/server/plugins/mcp/gateway-mcp/rate-limit/limits.js +0 -1
  277. package/dist/server/plugins/mcp/gateway-mcp/rate-limit/rate-limit-telemetry.js +0 -1
  278. package/dist/server/plugins/mcp/gateway-mcp/rate-limit/window-counter.js +0 -1
  279. package/dist/server/plugins/mcp/handlers/mcp-credentials-page.d.ts +0 -12
  280. package/dist/server/plugins/mcp/handlers/mcp-credentials-page.js +0 -225
  281. /package/dist/server/plugins/mcp/gateway-mcp/rate-limit/{rate-limit-telemetry.d.ts → request-limiter/rate-limit-telemetry.d.ts} +0 -0
  282. /package/dist/server/plugins/mcp/gateway-mcp/rate-limit/{ip-key.d.ts → utils/ip-key.d.ts} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,349 @@
1
1
  # @redocly/redoc-revel
2
2
 
3
+ ## 0.139.0-next.1
4
+
5
+ ### Patch Changes
6
+
7
+ - 5e4068f49ed: Fixed an issue where Markdoc tags in API descriptions ignored their `renderForLlms` output in the Markdown for LLMs and AI search of API docs pages, and appeared as raw tag source instead.
8
+ - e58aa28c94f: Fixed an issue where the `sanitize` option was not applied to parameter and schema property descriptions in API docs.
9
+ - 7097fbfefbb: Fixed an issue where webhooks in API docs displayed a server switcher with URLs that combined an API server with the webhook name.
10
+ - 21e0a5f1fd2: Fixed an issue in GraphQL docs where Markdown and HTML in descriptions displayed as raw text in the field and argument lists.
11
+ - Updated dependencies [5e4068f49ed]
12
+ - Updated dependencies [e58aa28c94f]
13
+ - Updated dependencies [7097fbfefbb]
14
+ - Updated dependencies [21e0a5f1fd2]
15
+ - @redocly/api-docs@0.4.0-next.1
16
+
17
+ ## 0.139.0-next.0
18
+
19
+ ### Patch Changes
20
+
21
+ - 8c6a6569332: Fixed an issue where page content jumped to the side while long pages were loading.
22
+ - fd0575ebb1e: Fixed security vulnerability `CVE-2026-93687` by removing the `braces` dependency.
23
+ - Updated dependencies [8c6a6569332]
24
+ - @redocly/theme@0.71.0-next.0
25
+ - @redocly/api-docs@0.4.0-next.0
26
+
27
+ ## 0.138.0
28
+
29
+ ### Minor Changes
30
+
31
+ - 3faa7cbcf5a: Improved the AI assistant's progress display to keep generated answers stable.
32
+ - aa2cc02077f: Added a tooltip to the link icon next to headings and properties in API docs.
33
+ - 4ee9ba49be2: Added support for ordering options in the Markdoc `connect-mcp` tag.
34
+ - f29ae93728e: Added a **Connect to Claude** option to page actions and the MCP server setup page.
35
+ - 36ac86bb3b8: Added support for project-specific MCP tools defined in an `@mcp` folder.
36
+ - c692c909bb4: Improved the `preview` command to use the next free port and log a warning when the requested port is already in use.
37
+ - 1368d8594d7: Added the `consent` option to display a cookie consent banner or privacy choices link that loads analytics and gated scripts only after visitor approval.
38
+ - 220a3f8f7ae: Improved the **Expand all** and **Collapse all** controls in JSON samples.
39
+ - 51256dcd1b9: Added output schema to the MCP `execute` tool and complete tool annotations to the MCP server tools.
40
+ - 0312a50ad9c: Added a `submit-feedback` tool to report documentation issues through the MCP server.
41
+ - 86c7cbe179b: Added the `prompt` Markdoc tag that displays an AI prompt on a page.
42
+ Readers can copy the prompt with one click or open in Cursor, Claude, or ChatGPT.
43
+ - fcb1b9e93bb: Added `tab` entries to `sidebars.yaml` for organizing projects into logical sections.
44
+ - 0002ecc776e: Added vertical alignment support for cells in the Markdoc `table` tag.
45
+ - 0caac36d83f: Improved Swagger `2.0` support with faster loading times and less memory used.
46
+ Preserved `$ref` descriptions and nullable references.
47
+ - e1b53618fb4: Changed the defaults of the `analytics.segment.trackPage`, `analytics.segment.includeTitleInPageCall`, and `analytics.rudderstack.trackPage` options to disable page view tracking by default.
48
+ - 4f85f31942f: Added the ejectable `ReplaySecuritySchemeActions` component which renders inside the security scheme card in the **Try it** console.
49
+ - 5f0afdc4135: Added WebMCP support, which enables AI agents in the reader's browser to search, read, and navigate your documentation.
50
+ - 9e9b4914145: Improved the reliability of AI assistant answers during streaming.
51
+ - 2928bcefe53: Improved the page load progress bar: it fills and fades out when a page finishes loading instead of disappearing at once.
52
+
53
+ ### Patch Changes
54
+
55
+ - bc75bbe4b25: Fixed an issue where tooltips were missing for the **Copy**, **Like**, and **Dislike** buttons in AI assistant answers.
56
+ - 745c39d6de6: Fixed an issue where code samples in API docs failed to compile when a form field value contained quotes.
57
+ - 745c39d6de6: Fixed an issue where API docs request samples for `application/x-www-form-urlencoded` bodies ignored the `encoding` object and didn't repeat array field names, such as `tags=red&tags=green`.
58
+ - 6f47037fb79: Fixed API reference pages that failed to render when descriptions contained HTML blocks with escaped generic types, such as `GridItem\<T\>`.
59
+ - fd2ac753cec: Fixed an issue where the link checker falsely reported broken links to API reference pages.
60
+ - 53c31e67923: Fixed an issue in API docs where overview pages displayed only the text of `info.description` that came before the first heading.
61
+ The sections under the headings were missing from both the page and the sidebar.
62
+ - 0ada389a199: Fixed a `ResizeObserver loop` error in Safari and Firefox when navigating API reference pages from the sidebar.
63
+ - 745c39d6de6: Fixed an issue where the API docs search results displayed the source code of `<script>` and `<style>` tags from descriptions.
64
+ - 2da0856ede5: Reduced the size of API reference pages with many headings and schema fields.
65
+ - 0e355a7cd06: Improved API reference page load performance.
66
+ - 745c39d6de6: Fixed regressions of `oneOf` and discriminator behavior in API docs.
67
+ - 48d6de8aebf: Fixed an issue in OpenAPI docs where `label`, `icon`, and `badges` from `sidebars.yaml` were not applied to the API overview sidebar item.
68
+ - 47f024b52c3: Fixed the AI assistant providing answers without using the project API tools on projects with protected content.
69
+ - 90446d7523d: Hardened authentication.
70
+ - 63a6ead8690: Fixed an issue where unknown key in `redocly.yaml` caused its entire object to be removed.
71
+ - 61649bb626f: Fixed an issue where dropdown menus were cut off at edge of the viewport.
72
+ - 97122fa80ab: Fixed an issue in OpenAPI docs where the `openapi.events.tryItSent` callback did not run.
73
+ - a4abb7fe95e: Fixed an issue where GraphQL enum pages didn't render the **Referenced in** panel.
74
+ - 03c6816b61f: Fixed GraphQL schema downloads to follow the `access.rbac.content` rules of their docs pages.
75
+ - 675715f661e: Improved security for API functions and custom MCP tools in projects hosted in Reunite.
76
+ - f47542f0aaa: Fixed an issue in API docs where links in the **Operations** panel of had duplicated path prefix.
77
+ - b98352301b8: Updated `@redocly/openapi-core` to version `2.62.1`.
78
+ - 15ad3df0069: Improved keyboard and screen reader accessibility for image lightboxes, feedback reasons, select menus such as the version picker, and schema variant switches in API reference.
79
+ - c634df4a861: Fixed an issue where search returned an error on built projects with a very large search index.
80
+ - 63e49c20ce4: Fixed an issue where the `openapi-code-sample` tag omitted the authentication with `security` at the root instead of operation.
81
+ - fef7333d138: Fixed an issue where the `markdoc-example` tag rendered an empty result panel with `renderDemo=true`.
82
+ - 6605daa2732: Updated the Claude Desktop instructions on the `/mcp` page to add the Docs MCP server as a custom connector.
83
+ - e37c4f10360: Fixed an issue where MCP server lookups failed when several API description files shared a title.
84
+ - daa4750bb7a: Fixed portal server crashes under MCP traffic on Redoc and Revel projects.
85
+ - 94e74d18b8d: Fixed an issue where the link checker falsely reported broken links to `/mcp` and `/mcp-public`.
86
+ - 6bb03d3e5e6: Fixed an issue where groups in the mobile menu and drilldown sidebar collapsed if user expanded them right after a page loaded.
87
+ - 715697934a0: Fixed an issue where samples in OpenAPI docs displayed the wrong variant for a `oneOf` nested inside another `oneOf`.
88
+ - 707b590864b: Fixed an issue where the `openapi-response-sample` tag reverted to the first response code after in-page navigation or browser Back and Forward navigation.
89
+ - 48d6de8aebf: Fixed an issue in OpenAPI docs where links to headings in API description overview partials briefly displayed a "Page not found" error.
90
+ - 22f646e90b2: Fixed an issue in API docs where clicking an anchor link on a heading inside a partial caused a 404 error instead of navigating to the heading.
91
+ - aa2cc02077f: Fixed API docs link icons so they open the heading or property link without changing clipboard contents.
92
+ - afbb609d24e: Fixed security vulnerabilities `GHSA-6688-9rhm-gjv2` and `GHSA-p98j-92pf-mc4p` by upgrading `dompurify` to version `3.4.16`.
93
+ - 09404c61096: Fixed SSO login for branch previews of projects configured to use path prefixes.
94
+ - 148b3c99d7e: Fixed an issue where portal pages, such as API reference pages, stopped working after browser translation or a browser extension changed the page.
95
+ - 4bc012cafa9: Fixed divider color in button groups, such as the page actions split button, to match custom theme button colors.
96
+ - d4727bf4699: Fixed an issue where the search dialog reset the selected category to "All" every time it was reopened.
97
+ - 6567a12696e: Hardened RBAC enforcement for page content.
98
+ - cbc76e5e88b: Fixed an issue where a React page rendered blank if its page component was wrapped in `React.memo` or `forwardRef`.
99
+ - 1765f4025b2: Fixed an issue where embedded Replay lost the entered request when the page URL changed.
100
+ - 4d5ed94c177: Fixed an issue in Replay where closing a tab while a request was running in another tab left the sending tab stuck on `Sending request ...`.
101
+ - 2f3a264ac57: Fixed webhook and callback payload schemas in OpenAPI docs to correctly display read-only and write-only fields.
102
+ - 870f2254ffb: Fixed MCP server returning an empty result instead of an error when code execution produced a value too large or invalid for JSON conversion.
103
+ - 26e86082ad6: Fixed the API docs sidebar incorrectly highlighting an adjacent section while content was being lazy-loaded.
104
+ - 2d71130ad21: Fixed an issue where the search box in the navbar shifted on page load when the keyboard shortcut hint appeared.
105
+ - ba418fbe7bd: Fixed an issue in API docs where the **Show** button on a collapsed group scrolled the page to the group heading instead of expanding the operations in place.
106
+ - 34d61cdf9c1: Fixed an issue where a file directly in the `@l10n` folder duplicated every page of the project under a path named after that file.
107
+ The build ignores these files and returns a warning.
108
+ - db912be7b81: Fixed an issue where search returned results titled with raw HTML element names such as `table`, `th` or `div`.
109
+ The issue occurred on Markdown pages that contained raw HTML.
110
+ - 215ed7fc7fa: Updated the tooltip arrow to render as a compact 16 pixels pointer with a softly rounded tip.
111
+ - ef493e36db0: Fixed an issue with the `tabs` Markdoc tag that caused nested tabs to cover the **More** dropdown on narrow screens.
112
+ - 4bc012cafa9: Fixed the split button so the menu toggle and divider use the same `danger` tone as the main button.
113
+ - 215ed7fc7fa: Fixed an issue where the tooltip arrows failed to render in browsers that didn't support CSS anchor positioning.
114
+ - cff70028280: Fixed an issue where the AI assistant send button had no accessible name for screen readers.
115
+ - 07fca3fc6a0: Improved rendering of AsyncAPI `2.0–2.6` channels, operations, messages, servers, and traits to match AsyncAPI `3.0`.
116
+ - e62106befe7: Fixed server-side rendering of localized projects where UI labels appeared in the wrong language alongside hydration warnings.
117
+ - 6a53cfb6724: Resolved security vulnerabilities `GHSA-g4wm-2vf7-vfgr`, `CVE-2026-102827`, `CVE-2026-102828`, and `CVE-2026-102829` by upgrading `simple-git` dependency to version `4.0.2`.
118
+ - 8dcd600ebe8: Fixed an issue in the **Try it** console where query parameters with `allowReserved` caused reserved characters such as `/`, `:`, and `,` to be percent-encoded.
119
+ - bb5709ab9be: Updated the **Try it** console's example picker to label unnamed examples as `Default` instead of an internal identifier from the API description.
120
+ - bb5709ab9be: Fixed an issue where the **Try it** console opened on the first request body example in OpenAPI docs instead of the example selected in the request panel.
121
+ - bb5bd25ddf2: Fixed an issue in the **Try it** console where operations displayed empty or incorrect request bodies and missing parameter types.
122
+ - bb5bd25ddf2: Fixed an issue in the **Try it** console where referenced path item operations did not open in request tabs or appeared in the operations list.
123
+ - 555b74a73af: Fixed an issue in the **Try it** console where the toolbar in the **Body**, **Headers**, and **Cookies** tabs hid the copy button in a narrow response panel.
124
+ - 05026102888: Improved response validation in the **Try it** console: the response body is checked against the schema for its status code, status code range or `default`, and for its media type.
125
+ - 2fe28690761: Fixed an issue where the **Try it** console did not validate the response body against the documented response schema.
126
+ - 05026102888: Fixed an issue where the **Try it** console froze on request and response schemas that expand to a very large number of nodes.
127
+ - f7fa203bf8f: Fixed an issue where the version picker listed versions of a page that RBAC hid from the user.
128
+ - f7fa203bf8f: Fixed an issue where the version picker disappeared on pages that had no items in the sidebar.
129
+ - e5306838bd9: Fixed an issue where some of the UI text didn't switch to a new language after navigation.
130
+ - Updated dependencies [bc75bbe4b25]
131
+ - Updated dependencies [3faa7cbcf5a]
132
+ - Updated dependencies [745c39d6de6]
133
+ - Updated dependencies [745c39d6de6]
134
+ - Updated dependencies [6f47037fb79]
135
+ - Updated dependencies [53c31e67923]
136
+ - Updated dependencies [0ada389a199]
137
+ - Updated dependencies [745c39d6de6]
138
+ - Updated dependencies [2da0856ede5]
139
+ - Updated dependencies [0e355a7cd06]
140
+ - Updated dependencies [745c39d6de6]
141
+ - Updated dependencies [aa2cc02077f]
142
+ - Updated dependencies [4ee9ba49be2]
143
+ - Updated dependencies [f29ae93728e]
144
+ - Updated dependencies [61649bb626f]
145
+ - Updated dependencies [97122fa80ab]
146
+ - Updated dependencies [1368d8594d7]
147
+ - Updated dependencies [a4abb7fe95e]
148
+ - Updated dependencies [f47542f0aaa]
149
+ - Updated dependencies [b98352301b8]
150
+ - Updated dependencies [220a3f8f7ae]
151
+ - Updated dependencies [15ad3df0069]
152
+ - Updated dependencies [15ad3df0069]
153
+ - Updated dependencies [2928bcefe53]
154
+ - Updated dependencies [63e49c20ce4]
155
+ - Updated dependencies [fef7333d138]
156
+ - Updated dependencies [6605daa2732]
157
+ - Updated dependencies [de7f42377f7]
158
+ - Updated dependencies [295faffbd0a]
159
+ - Updated dependencies [6bb03d3e5e6]
160
+ - Updated dependencies [715697934a0]
161
+ - Updated dependencies [48d6de8aebf]
162
+ - Updated dependencies [22f646e90b2]
163
+ - Updated dependencies [aa2cc02077f]
164
+ - Updated dependencies [86c7cbe179b]
165
+ - Updated dependencies [148b3c99d7e]
166
+ - Updated dependencies [4bc012cafa9]
167
+ - Updated dependencies [d4727bf4699]
168
+ - Updated dependencies [7d42d500aec]
169
+ - Updated dependencies [192409c012f]
170
+ - Updated dependencies [159bebb0ed4]
171
+ - Updated dependencies [2f3a264ac57]
172
+ - Updated dependencies [26e86082ad6]
173
+ - Updated dependencies [2d71130ad21]
174
+ - Updated dependencies [fcb1b9e93bb]
175
+ - Updated dependencies [ba418fbe7bd]
176
+ - Updated dependencies [0002ecc776e]
177
+ - Updated dependencies [215ed7fc7fa]
178
+ - Updated dependencies [ef493e36db0]
179
+ - Updated dependencies [4bc012cafa9]
180
+ - Updated dependencies [215ed7fc7fa]
181
+ - Updated dependencies [cff70028280]
182
+ - Updated dependencies [07fca3fc6a0]
183
+ - Updated dependencies [0caac36d83f]
184
+ - Updated dependencies [8dcd600ebe8]
185
+ - Updated dependencies [bb5709ab9be]
186
+ - Updated dependencies [bb5709ab9be]
187
+ - Updated dependencies [4f85f31942f]
188
+ - Updated dependencies [bb5bd25ddf2]
189
+ - Updated dependencies [bb5bd25ddf2]
190
+ - Updated dependencies [2fe28690761]
191
+ - Updated dependencies [5f0afdc4135]
192
+ - @redocly/theme@0.70.0
193
+ - @redocly/api-docs@0.3.0
194
+ - @redocly/realm-asyncapi-sdk@0.16.0
195
+ - @redocly/portal-plugin-mock-server@0.23.0
196
+
197
+ ## 0.138.0-next.18
198
+
199
+ ### Minor Changes
200
+
201
+ - c692c909bb4: Improved the `preview` command to use the next free port and log a warning when the requested port is already in use.
202
+
203
+ ### Patch Changes
204
+
205
+ - b98352301b8: Updated `@redocly/openapi-core` to version `2.62.1`.
206
+ - Updated dependencies [b98352301b8]
207
+ - @redocly/api-docs@0.3.0-next.15
208
+ - @redocly/portal-plugin-mock-server@0.23.0-next.3
209
+
210
+ ## 0.138.0-next.17
211
+
212
+ ### Minor Changes
213
+
214
+ - 0caac36d83f: Improved Swagger 2.0 support: documents load about three times faster and with less memory, keep `$ref` descriptions and nullable references.
215
+
216
+ ### Patch Changes
217
+
218
+ - 2da0856ede5: Reduced the size of API reference pages that have many headings and schema fields.
219
+ - 97122fa80ab: Fixed an issue in OpenAPI docs where the `openapi.events.tryItSent` callback did not run when users sent a request from the **Try it** panel.
220
+ The callback runs with the `Sent` action when the request receives a response.
221
+ - afbb609d24e: Fixed security vulnerabilities `GHSA-6688-9rhm-gjv2` and `GHSA-p98j-92pf-mc4p` by upgrading `dompurify` to version `3.4.16`.
222
+ - 6a53cfb6724: Updated the `simple-git` dependency to version 4.0.2 to resolve security vulnerabilities GHSA-g4wm-2vf7-vfgr, CVE-2026-102827, CVE-2026-102828, and CVE-2026-102829.
223
+ - Updated dependencies [2da0856ede5]
224
+ - Updated dependencies [97122fa80ab]
225
+ - Updated dependencies [0caac36d83f]
226
+ - @redocly/api-docs@0.3.0-next.14
227
+ - @redocly/portal-plugin-mock-server@0.23.0-next.2
228
+
229
+ ## 0.138.0-next.16
230
+
231
+ ### Patch Changes
232
+
233
+ - Updated dependencies [75679945506]
234
+ - @redocly/theme@0.70.0-next.11
235
+ - @redocly/api-docs@0.3.0-next.13
236
+
237
+ ## 0.138.0-next.15
238
+
239
+ ### Patch Changes
240
+
241
+ - Updated dependencies [ca56f3058f0]
242
+ - @redocly/theme@0.70.0-next.10
243
+ - @redocly/api-docs@0.3.0-next.12
244
+
245
+ ## 0.138.0-next.14
246
+
247
+ ### Minor Changes
248
+
249
+ - 86c7cbe179b: Added the `prompt` Markdoc tag that displays an AI prompt on a page.
250
+ Readers can copy the prompt with one click or open in Cursor, Claude, or ChatGPT.
251
+
252
+ ### Patch Changes
253
+
254
+ - 745c39d6de6: Fixed an issue where Go, Java, C#, PHP and R code samples in API docs failed to compile when a form field value contained quotes.
255
+ - 745c39d6de6: Fixed an issue where API docs request samples for `application/x-www-form-urlencoded` bodies ignored the `encoding` object and didn't repeat array field names, such as `tags=red&tags=green`.
256
+ - 745c39d6de6: Fixed an issue where the API docs search results displayed the source code of `<script>` and `<style>` tags from descriptions.
257
+ - 745c39d6de6: Fixed API docs deep links that opened the wrong `oneOf` or discriminator variant when the target was the 11th option or later.
258
+ - 745c39d6de6: Fixed an issue where API docs deep links to a `oneOf` or discriminator variant also selected variants of other properties.
259
+ - 745c39d6de6: Fixed an issue where a `oneOf` or discriminator variant selected in an API docs request body, response or callback also changed the same field in sections that used a different schema.
260
+ - 03c6816b61f: Fixed GraphQL schema downloads to follow the `access.rbac.content` rules of their docs pages.
261
+ - 2928bcefe53: Improved the page load progress bar: it fills and fades out when a page finishes loading instead of disappearing at once.
262
+ - 1765f4025b2: Fixed an issue where embedded Replay lost the entered request when the page URL changed.
263
+ - 34d61cdf9c1: Fixed an issue where a file directly in the `@l10n` folder duplicated every page of the project under a path named after that file.
264
+ The build ignores these files and returns a warning.
265
+ - db912be7b81: Fixed an issue where search returned results titled with raw HTML element names such as `table`, `th` or `div`.
266
+ The issue occurred on Markdown pages that contained raw HTML.
267
+ - Updated dependencies [745c39d6de6]
268
+ - Updated dependencies [745c39d6de6]
269
+ - Updated dependencies [745c39d6de6]
270
+ - Updated dependencies [745c39d6de6]
271
+ - Updated dependencies [745c39d6de6]
272
+ - Updated dependencies [745c39d6de6]
273
+ - Updated dependencies [2928bcefe53]
274
+ - Updated dependencies [86c7cbe179b]
275
+ - @redocly/api-docs@0.3.0-next.11
276
+ - @redocly/theme@0.70.0-next.9
277
+ - @redocly/realm-asyncapi-sdk@0.16.0-next.5
278
+
279
+ ## 0.138.0-next.13
280
+
281
+ ### Minor Changes
282
+
283
+ - f29ae93728e: Added a **Connect to Claude** option to page actions and the MCP server setup page.
284
+
285
+ ### Patch Changes
286
+
287
+ - 6f47037fb79: Fixed API reference pages that failed to render when descriptions contained HTML blocks with escaped generic types, such as `GridItem\<T\>`.
288
+ - fd2ac753cec: Fixed an issue where the link checker reported links to API reference pages as broken when the link used the original letter case of a name.
289
+ - 0e355a7cd06: Improved API reference page load performance.
290
+ - daa4750bb7a: Fixed portal server crashes under MCP traffic on Redoc and Revel projects.
291
+ - 148b3c99d7e: Fixed an issue where portal pages, such as API reference pages, stopped working after browser translation or a browser extension changed the page.
292
+ - 159bebb0ed4: Fixed an issue in Replay where usage data from the **Try it** console and the `replay-openapi` tag was attributed to whichever of them was opened first after the page loaded.
293
+ - 2d71130ad21: Fixed an issue where the search box in the navbar shifted on page load when the keyboard shortcut hint appeared.
294
+ - ef493e36db0: Fixed an issue with the `tabs` Markdoc tag that caused nested tabs to cover the **More** dropdown on narrow screens.
295
+ - Updated dependencies [6f47037fb79]
296
+ - Updated dependencies [0e355a7cd06]
297
+ - Updated dependencies [f29ae93728e]
298
+ - Updated dependencies [148b3c99d7e]
299
+ - Updated dependencies [7d42d500aec]
300
+ - Updated dependencies [159bebb0ed4]
301
+ - Updated dependencies [159bebb0ed4]
302
+ - Updated dependencies [2d71130ad21]
303
+ - Updated dependencies [ef493e36db0]
304
+ - @redocly/api-docs@0.3.0-next.10
305
+ - @redocly/theme@0.70.0-next.8
306
+ - @redocly/realm-asyncapi-sdk@0.16.0-next.4
307
+
308
+ ## 0.138.0-next.12
309
+
310
+ ### Patch Changes
311
+
312
+ - 09404c61096: Fixed SSO login for branch previews of projects configured to use path prefixes.
313
+ - 07fca3fc6a0: Improved rendering of AsyncAPI 2.0–2.6 channels, operations, messages, servers, and traits to match AsyncAPI 3.0.
314
+ - Updated dependencies [192409c012f]
315
+ - Updated dependencies [07fca3fc6a0]
316
+ - @redocly/realm-asyncapi-sdk@0.16.0-next.3
317
+ - @redocly/api-docs@0.3.0-next.9
318
+ - @redocly/theme@0.70.0-next.7
319
+
320
+ ## 0.138.0-next.11
321
+
322
+ ### Patch Changes
323
+
324
+ - 2cd84f3f268: Updated `@redocly/openapi-core` to version `2.58.1`.
325
+ - Updated dependencies [2cd84f3f268]
326
+ - @redocly/api-docs@0.3.0-next.8
327
+ - @redocly/portal-plugin-mock-server@0.23.0-next.1
328
+
329
+ ## 0.138.0-next.10
330
+
331
+ ### Patch Changes
332
+
333
+ - bc75bbe4b25: Fixed an issue where tooltips were missing for the **Copy**, **Like**, and **Dislike** buttons in AI assistant answers.
334
+ - 90446d7523d: Hardened authentication.
335
+ - 63a6ead8690: Fixed an issue where unknown key `redocly.yaml` caused its entire object to be removed.
336
+ - b32564280cf: Hardened the built-in CORS proxy.
337
+ - 675715f661e: Improved security for API functions and custom MCP tools in projects hosted in Reunite.
338
+ - 707b590864b: Fixed an issue where the `openapi-response-sample` tag reverted to the first response code after in-page navigation or browser Back and Forward navigation.
339
+ - d4727bf4699: Fixed an issue where the search dialog reset the selected category to "All" every time it was reopened.
340
+ The category chosen by the user is remembered for the duration of the browser tab.
341
+ - 4d5ed94c177: Fixed an issue in Replay where closing a tab while a request was running in another tab displayed the response in the wrong tab and left the sending tab stuck on `Sending request ...`.
342
+ - Updated dependencies [bc75bbe4b25]
343
+ - Updated dependencies [d4727bf4699]
344
+ - @redocly/theme@0.70.0-next.7
345
+ - @redocly/api-docs@0.3.0-next.7
346
+
3
347
  ## 0.138.0-next.9
4
348
 
5
349
  ### Minor Changes
@@ -206,6 +550,15 @@
206
550
  - @redocly/api-docs@0.3.0-next.0
207
551
  - @redocly/realm-asyncapi-sdk@0.16.0-next.0
208
552
 
553
+ ## 0.137.2
554
+
555
+ ### Patch Changes
556
+
557
+ - 00d766157ab: Hardened the built-in CORS proxy.
558
+ - ab31ba75844: Fixed an issue that could cause the project to crash when rendering API docs with cyclic OpenAPI schemas.
559
+ - Updated dependencies [ab31ba75844]
560
+ - @redocly/api-docs@0.2.1
561
+
209
562
  ## 0.137.1
210
563
 
211
564
  ### Patch Changes
@@ -0,0 +1,24 @@
1
+ import { z } from 'zod';
2
+ export declare const mcpFetchCountRequestSchema: z.ZodObject<{
3
+ caller: z.ZodObject<{
4
+ subject: z.ZodOptional<z.ZodString>;
5
+ ip: z.ZodOptional<z.ZodString>;
6
+ }, "strip", z.ZodTypeAny, {
7
+ subject?: string | undefined;
8
+ ip?: string | undefined;
9
+ }, {
10
+ subject?: string | undefined;
11
+ ip?: string | undefined;
12
+ }>;
13
+ }, "strip", z.ZodTypeAny, {
14
+ caller: {
15
+ subject?: string | undefined;
16
+ ip?: string | undefined;
17
+ };
18
+ }, {
19
+ caller: {
20
+ subject?: string | undefined;
21
+ ip?: string | undefined;
22
+ };
23
+ }>;
24
+ //# sourceMappingURL=mcp-fetch-count.d.ts.map
@@ -0,0 +1 @@
1
+ import{z as t}from"zod";const e=t.object({caller:t.object({subject:t.string().max(500).optional(),ip:t.string().max(100).optional()})});export{e as mcpFetchCountRequestSchema};
package/dist/bin.js CHANGED
File without changes
@@ -1 +1 @@
1
- import{getApiFunctionsUsage as c}from"./collectors/get-api-functions-usage.js";import{getAsyncApiUsage as d}from"./collectors/get-async-api-usage.js";import{getConfigStatsUsage as U}from"./collectors/get-config-stats-usage.js";import{getFileExtensionsUsage as p}from"./collectors/get-file-extensions-usage.js";import{getFrontmatterUsage as u}from"./collectors/get-frontmatter-usage.js";import{getMarkdocUsage as S}from"./collectors/get-markdoc-usage.js";import{getNestedConfigsUsage as C}from"./collectors/get-nested-configs-usage.js";import{getProcessedConfigStatsUsage as b}from"./collectors/get-processed-config-stats-usage.js";import{getRefsUsage as x}from"./collectors/get-refs-usage.js";import{getSidebarsUsage as y}from"./collectors/get-sidebars-usage.js";import{getSkillsUsage as k}from"./collectors/get-skills-usage.js";import{getThemeFolderUsage as v}from"./collectors/get-theme-folder-usage.js";import{telemetry as B}from"../../telemetry/index.js";import{envConfig as A}from"../../../server/config/env-config.js";async function _(i,n){const g=[c,d,U,p,u,S,C,b,x,y,k,v],m=await Promise.allSettled(g.map(t=>t({store:i,context:n}))),e={},s={};for(const t of m)if(t.status==="fulfilled"){const{name:a,value:r,version:f}=t.value;r&&(e[a]=r,s[a]=f)}const l={usageStats:e.usageStats,asyncApiUsage:e.asyncApiUsage,buildContext:e.buildContext,fileExtensions:e.fileExtensions,frontmatterUsage:e.frontmatterUsage,markdocUsage:e.markdocUsage,processedBuildContext:e.processedBuildContext,nestedConfigStats:e.nestedConfigStats,refsUsageStats:e.refsUsageStats,sidebarsUsage:e.sidebarsUsage,skillsUsage:e.skillsUsage,themeFolderUsage:e.themeFolderUsage,versions:JSON.stringify(s)},o=A.PROJECT_BUILD_ID||"unknown";B.sendBuildMessage([{id:o,object:"projectBuild",uri:`urn:redocly:realm:cli:projectBuild:${o}`,...l}])}export{_ as collectAnalytics};
1
+ import{getApiFunctionsUsage as c}from"./collectors/get-api-functions-usage.js";import{getAsyncApiUsage as d}from"./collectors/get-async-api-usage.js";import{getConfigStatsUsage as U}from"./collectors/get-config-stats-usage.js";import{getFileExtensionsUsage as p}from"./collectors/get-file-extensions-usage.js";import{getFrontmatterUsage as u}from"./collectors/get-frontmatter-usage.js";import{getMarkdocUsage as S}from"./collectors/get-markdoc-usage.js";import{getNestedConfigsUsage as C}from"./collectors/get-nested-configs-usage.js";import{getProcessedConfigStatsUsage as y}from"./collectors/get-processed-config-stats-usage.js";import{getRefsUsage as b}from"./collectors/get-refs-usage.js";import{getSidebarsUsage as x}from"./collectors/get-sidebars-usage.js";import{getSkillsUsage as k}from"./collectors/get-skills-usage.js";import{getThemeFolderUsage as v}from"./collectors/get-theme-folder-usage.js";import{telemetry as B}from"../../telemetry/index.js";import{envConfig as A}from"../../../server/config/env-config.js";async function _(i,n){const g=[c,d,U,p,u,S,C,y,b,x,k,v],m=await Promise.allSettled(g.map(async t=>t({store:i,context:n}))),e={},s={};for(const t of m)if(t.status==="fulfilled"){const{name:a,value:r,version:f}=t.value;r&&(e[a]=r,s[a]=f)}const l={usageStats:e.usageStats,asyncApiUsage:e.asyncApiUsage,buildContext:e.buildContext,fileExtensions:e.fileExtensions,frontmatterUsage:e.frontmatterUsage,markdocUsage:e.markdocUsage,processedBuildContext:e.processedBuildContext,nestedConfigStats:e.nestedConfigStats,refsUsageStats:e.refsUsageStats,sidebarsUsage:e.sidebarsUsage,skillsUsage:e.skillsUsage,themeFolderUsage:e.themeFolderUsage,versions:JSON.stringify(s)},o=A.PROJECT_BUILD_ID||"unknown";B.sendBuildMessage([{id:o,object:"projectBuild",uri:`urn:redocly:realm:cli:projectBuild:${o}`,...l}])}export{_ as collectAnalytics};
@@ -1 +1 @@
1
- import{getPortalConfigStats as o}from"../../../telemetry/get-portal-config-stats.js";const s=async({store:t})=>{const e=await t.getConfig();return{version:"1",name:"processedBuildContext",value:o(e)}};export{s as getProcessedConfigStatsUsage};
1
+ import{getPortalConfigStats as o}from"../../../telemetry/get-portal-config-stats.js";const s=async({store:t})=>{const e=t.getConfig();return{version:"1",name:"processedBuildContext",value:o(e)}};export{s as getProcessedConfigStatsUsage};
@@ -1 +1 @@
1
- import w from"node:path";import{unlink as C}from"node:fs/promises";import{writeFileSync as P}from"node:fs";import{PORTAL_VERSION as R}from"../../server/version.js";import{logger as e}from"../../server/tools/notifiers/logger.js";import{reporter as b}from"../../server/tools/notifiers/reporter.js";import{shutdowner as h}from"../../server/tools/shutdowner.js";import{promiseMapLimit as A}from"../../server/utils/async/promise-map-limit.js";import{validateReactPages as D}from"../../server/plugins/pages/validators/validate-react-pages.js";import{ensureDir as j}from"../../server/utils/index.js";import{initPlugins as E,runPlugins as M,writeClientEntries as O}from"../../server/plugins/lifecycle.js";import{createClientCompiler as x,createNodeBundleCompiler as k}from"../../server/esbuild/esbuild.js";import{validateAllMarkdowns as J}from"../../server/plugins/markdown/compiler.js";import{copyEnvFiles as L}from"./copy-env-files.js";import{EsbuildError as s,esbuildLogger as d}from"../../server/esbuild/esbuild-logger.js";import{reportAllErrors as z}from"../../server/utils/report-all-errors.js";import{writeProblemsReport as F}from"../../server/utils/write-problems-report.js";import{collectAnalytics as N}from"./analytics/collect-analytics.js";import{copyMigrationsFolder as U}from"../../server/providers/database/copy-migrations.js";import{telemetry as c}from"../telemetry/index.js";import{telemetryTraceStep as m}from"../telemetry/helpers/trace-step.js";async function li(y,i){c.initialize(R),e.info("Starting project build.");const T=e.startTiming();await m("com.redocly.build.start",async S=>{O(i);const p=await x(i,i.outdir,"production"),u=await k(i,i.serverOutDir,"production");let o,g;try{await m("com.redocly.build.clientCompilation",async()=>{const l=e.startTiming(),n=await p.rebuild().catch(a=>{throw new s(a)});Array.isArray(n.warnings)&&d(new s({warnings:n.warnings}));const r=e.infoTime(l,"Client JavaScript compiled");r&&c.sendTimingPerformedMessage([{id:"buildStep",object:"timing",uri:"urn:redocly:realm:cli:timing:buildStep",...r}])}),await m("com.redocly.build.serverCompilation",async()=>{const l=e.startTiming(),n=await u.rebuild().catch(a=>{throw new s(a)});Array.isArray(n.warnings)&&d(new s({warnings:n.warnings}));const r=e.infoTime(l,"Server JavaScript compiled");r&&c.sendTimingPerformedMessage([{id:"buildStep",object:"timing",uri:"urn:redocly:realm:cli:timing:buildStep",message:r.message,timeMs:r.timeMs}])}),await i.reloadMarkdocOptions();let t;({pluginInstances:t,lifecycleContext:o}=await E({outdir:i.outdir,serverOutDir:i.serverOutDir,contentDir:i.contentDir,devLogin:y.devLogin,setGlobalConfig:i.setGlobalConfig})),o.fs.dispose(),i.lifecycleContext=o,U(i),await M(t,i,o),g=N(i,o),await m("com.redocly.build.clientServerRecompile",async()=>{const l=e.startTiming();e.info("Re-compiling JavaScript with user code"),(await Promise.all([p.rebuild(),u.rebuild()]).catch(a=>{throw new s(a)})).forEach(({warnings:a})=>{Array.isArray(a)&&d(new s({warnings:a}))});const r=e.infoTime(l,"JavaScript re-compiled");r&&c.sendTimingPerformedMessage([{id:"buildStep",object:"timing",uri:"urn:redocly:realm:cli:timing:buildStep",...r}])}),await m("com.redocly.build.pagesValidation",async()=>{await D(i,o),await J(i,o)}),await z(o),i.markUserCodeReady()}catch(t){S?.error(t),t instanceof s&&await d(t),await b.panic(t instanceof Error?t:String(t))}finally{g&&await g.catch(()=>{}),await p.dispose(),await u.dispose()}b.printErrors(),e.info("Rendering pages..."),await m("com.redocly.build.prepareStaticData",async t=>{const l=e.startTiming(),n=[...i.getAllRoutes(),...i.getAllApiRoutes()];t?.setAttribute("totalRoutes",n.length.toString()),await A(n,15,a=>i.writeRouteStaticData(a,o));const r=e.successTime(l,"Page static data prepared.");r&&c.sendTimingPerformedMessage([{id:"buildStep",object:"timing",uri:"urn:redocly:realm:cli:timing:buildStep",...r}])}),await m("com.redocly.build.storeSerialization",async()=>{const t=e.startTiming();j(i.serverOutDir),P(w.join(i.serverOutDir,"store.json"),JSON.stringify(await i.toJson())),e.successTime(t,"Store serialized and written."),L(i)});const v=e.startTiming();F()&&e.successTime(v,"Broken links written."),await C(w.join(i.serverOutDir,"index.css"));const f=e.successTime(T,"All done");f&&c.sendTimingPerformedMessage([{id:"buildStep",object:"timing",uri:"urn:redocly:realm:cli:timing:buildStep",...f}])}),await h.exitWithCode(0)}export{li as build};
1
+ import w from"node:path";import{unlink as C}from"node:fs/promises";import{writeFileSync as P}from"node:fs";import{PORTAL_VERSION as R}from"../../server/version.js";import{logger as e}from"../../server/tools/notifiers/logger.js";import{reporter as b}from"../../server/tools/notifiers/reporter.js";import{shutdowner as h}from"../../server/tools/shutdowner.js";import{promiseMapLimit as A}from"../../server/utils/async/promise-map-limit.js";import{validateReactPages as D}from"../../server/plugins/pages/validators/validate-react-pages.js";import{ensureDir as j}from"../../server/utils/index.js";import{initPlugins as E,runPlugins as M,writeClientEntries as O}from"../../server/plugins/lifecycle.js";import{createClientCompiler as x,createNodeBundleCompiler as L}from"../../server/esbuild/esbuild.js";import{validateAllMarkdowns as k}from"../../server/plugins/markdown/compiler.js";import{copyEnvFiles as J}from"./copy-env-files.js";import{EsbuildError as m,esbuildLogger as d}from"../../server/esbuild/esbuild-logger.js";import{reportAllErrors as z}from"../../server/utils/report-all-errors.js";import{writeProblemsReport as F}from"../../server/utils/write-problems-report.js";import{collectAnalytics as N}from"./analytics/collect-analytics.js";import{copyMigrationsFolder as U}from"../../server/providers/database/copy-migrations.js";import{telemetry as c}from"../telemetry/index.js";import{telemetryTraceStep as s}from"../telemetry/helpers/trace-step.js";async function li(y,i){c.initialize(R),e.info("Starting project build."),i.devLogin=y.devLogin===!0;const T=e.startTiming();await s("com.redocly.build.start",async S=>{O(i);const p=await x(i,i.outdir,"production"),u=await L(i,i.serverOutDir,"production");let o,g;try{await s("com.redocly.build.clientCompilation",async()=>{const l=e.startTiming(),n=await p.rebuild().catch(a=>{throw new m(a)});Array.isArray(n.warnings)&&d(new m({warnings:n.warnings}));const r=e.infoTime(l,"Client JavaScript compiled");r&&c.sendTimingPerformedMessage([{id:"buildStep",object:"timing",uri:"urn:redocly:realm:cli:timing:buildStep",...r}])}),await s("com.redocly.build.serverCompilation",async()=>{const l=e.startTiming(),n=await u.rebuild().catch(a=>{throw new m(a)});Array.isArray(n.warnings)&&d(new m({warnings:n.warnings}));const r=e.infoTime(l,"Server JavaScript compiled");r&&c.sendTimingPerformedMessage([{id:"buildStep",object:"timing",uri:"urn:redocly:realm:cli:timing:buildStep",message:r.message,timeMs:r.timeMs}])}),await i.reloadMarkdocOptions();let t;({pluginInstances:t,lifecycleContext:o}=await E({outdir:i.outdir,serverOutDir:i.serverOutDir,contentDir:i.contentDir,devLogin:i.devLogin,setGlobalConfig:i.setGlobalConfig})),o.fs.dispose(),i.lifecycleContext=o,U(i),await M(t,i,o),g=N(i,o),await s("com.redocly.build.clientServerRecompile",async()=>{const l=e.startTiming();e.info("Re-compiling JavaScript with user code"),(await Promise.all([p.rebuild(),u.rebuild()]).catch(a=>{throw new m(a)})).forEach(({warnings:a})=>{Array.isArray(a)&&d(new m({warnings:a}))});const r=e.infoTime(l,"JavaScript re-compiled");r&&c.sendTimingPerformedMessage([{id:"buildStep",object:"timing",uri:"urn:redocly:realm:cli:timing:buildStep",...r}])}),await s("com.redocly.build.pagesValidation",async()=>{await D(i,o),await k(i,o)}),await z(o),i.markUserCodeReady()}catch(t){S?.error(t),t instanceof m&&await d(t),await b.panic(t instanceof Error?t:String(t))}finally{g&&await g.catch(()=>{}),await p.dispose(),await u.dispose()}b.printErrors(),e.info("Rendering pages..."),await s("com.redocly.build.prepareStaticData",async t=>{const l=e.startTiming(),n=[...i.getAllRoutes(),...i.getAllApiRoutes()];t?.setAttribute("totalRoutes",n.length.toString()),await A(n,15,a=>i.writeRouteStaticData(a,o));const r=e.successTime(l,"Page static data prepared.");r&&c.sendTimingPerformedMessage([{id:"buildStep",object:"timing",uri:"urn:redocly:realm:cli:timing:buildStep",...r}])}),await s("com.redocly.build.storeSerialization",async()=>{const t=e.startTiming();j(i.serverOutDir),P(w.join(i.serverOutDir,"store.json"),JSON.stringify(await i.toJson())),e.successTime(t,"Store serialized and written."),J(i)});const v=e.startTiming();F()&&e.successTime(v,"Broken links written."),await C(w.join(i.serverOutDir,"index.css"));const f=e.successTime(T,"All done");f&&c.sendTimingPerformedMessage([{id:"buildStep",object:"timing",uri:"urn:redocly:realm:cli:timing:buildStep",...f}])}),await h.exitWithCode(0)}export{li as build};
@@ -1 +1 @@
1
- import{logger as t}from"../server/tools/notifiers/logger.js";import{reporter as c}from"../server/tools/notifiers/reporter.js";import{green as v}from"../server/tools/notifiers/helpers/colors.js";import{envConfig as m}from"../server/config/env-config.js";import{resolveCache as w}from"../server/esbuild/plugins/themes-resolver.js";import{getBilledPagesCount as p}from"../server/utils/index.js";import{createClientCompiler as C,createServerCompiler as S}from"../server/esbuild/esbuild.js";import{initPlugins as R,runPlugins as f,writeClientEntries as h}from"../server/plugins/lifecycle.js";import{startDevServer as E}from"../server/web-server/dev-server.js";import{validateAllMarkdowns as b}from"../server/plugins/markdown/compiler.js";import{reportAllErrors as g}from"../server/utils/report-all-errors.js";import{copyMigrationsFolder as y}from"../server/providers/database/copy-migrations.js";import{listenStdin as L}from"./utils/listen-stdin.js";async function q(e,i){t.info("Starting project preview mode."),h(i),t.startTiming("initial-js"),await D(i),t.infoTime("initial-js","JavaScript compiled");const{pluginInstances:l,lifecycleContext:n}=await R({contentDir:i.contentDir,outdir:i.outdir,serverOutDir:void 0,devLogin:e["dev-login"]!==!1,setGlobalConfig:i.setGlobalConfig});i.lifecycleContext=n,y(i),await f(l,i,n,{failFast:!0});const d=async()=>{const r=performance.now();c.clearErrors(),await f(l,i,n),m.REDOCLY_EXP_DISABLE_MD_VALIDATION?t.info("Skipping markdown validation step"):await b(i,n),P().then(async()=>{await g(n);const a=p(i.getAllRoutes()),o=c.summary(` \u{1F440} Last change processed in ${v(Math.round(performance.now()-r)+"ms")}`,a);i.runListeners("errors-updated",void 0,o),i.runListeners("pages-updated",void 0,a),i.runListeners("routes-updated")})};m.REDOCLY_EXP_DISABLE_MD_VALIDATION?t.info("Skipping markdown validation step"):await b(i,n),await g(n);const s=p(i.getAllRoutes());c.summary(" \u{1F440} Watching for changes...",s),i.runListeners("pages-updated",void 0,s),n.fs.watch(async()=>{w.clear(),await d()}),t.verbose("Starting development server."),await E(i,n,{port:Number(e.port||4e3)}),L()}async function D(e){let i=!0,l=!0;const n=async r=>{r==="client"?i=!0:l=!0,e.runListeners("build-started");const a=i!=l;a&&e.startEsbuildRun(),e.buildRevision>0&&await e.waitForPluginsRun(),r!=="client"&&e.noteRequestHandlersEntryBuildStart(),a&&t.startTiming("rebuild")},d=async r=>{r==="client"?i=!1:(l=!1,e.markRequestHandlersEntryUpdated()),!(i||l)&&(e.finishEsbuildRun(),e.buildRevision++,t.infoTime("rebuild","JavaScript re-compiled"),await e.reloadMarkdocOptions(),e.markUserCodeReady(),e.runListeners("build-updated"),e.lifecycleContext&&e.buildRevision>1&&e.lifecycleContext.fs.emitCodeUpdated())},s=[new Promise((r,a)=>{const o={label:"client",buildStart(){t.verbose("Start compiling client code."),t.startTiming(this.label)},buildEnd(){t.verboseTime(this.label,"Client compiled"),r(!0)},rebuildStart:()=>n("client"),rebuildEnd:()=>d("client")};C(e,e.outdir,"development",o).then(u=>u.watch()).catch(a)}),new Promise((r,a)=>{const o={label:"server",buildStart(){t.verbose("Start compiling server code."),t.startTiming(this.label)},buildEnd(){t.verboseTime(this.label,"Server compiled"),r(!0)},rebuildStart:()=>n("server"),rebuildEnd:()=>d("server")};S(e,e.serverOutDir,"development",o).then(u=>u.watch()).catch(a)})];await Promise.all(s),await e.reloadMarkdocOptions()}function P(){return new Promise(e=>{setTimeout(e,0)})}export{q as develop};
1
+ import{logger as t}from"../server/tools/notifiers/logger.js";import{reporter as c}from"../server/tools/notifiers/reporter.js";import{green as v}from"../server/tools/notifiers/helpers/colors.js";import{envConfig as m}from"../server/config/env-config.js";import{resolveCache as w}from"../server/esbuild/plugins/themes-resolver.js";import{getBilledPagesCount as p}from"../server/utils/index.js";import{createClientCompiler as R,createServerCompiler as S}from"../server/esbuild/esbuild.js";import{initPlugins as C,runPlugins as f,writeClientEntries as E}from"../server/plugins/lifecycle.js";import{startDevServer as h}from"../server/web-server/dev-server.js";import{validateAllMarkdowns as g}from"../server/plugins/markdown/compiler.js";import{reportAllErrors as b}from"../server/utils/report-all-errors.js";import{copyMigrationsFolder as y}from"../server/providers/database/copy-migrations.js";import{listenStdin as L}from"./utils/listen-stdin.js";const P=20;async function q(i,e){t.info("Starting project preview mode."),e.devLogin=i["dev-login"]!==!1,E(e),t.startTiming("initial-js"),await T(e),t.infoTime("initial-js","JavaScript compiled");const{pluginInstances:l,lifecycleContext:n}=await C({contentDir:e.contentDir,outdir:e.outdir,serverOutDir:void 0,devLogin:e.devLogin,setGlobalConfig:e.setGlobalConfig});e.lifecycleContext=n,y(e),await f(l,e,n,{failFast:!0});const d=async()=>{const r=performance.now();c.clearErrors(),await f(l,e,n),m.REDOCLY_EXP_DISABLE_MD_VALIDATION?t.info("Skipping markdown validation step"):await g(e,n),D().then(async()=>{await b(n);const a=p(e.getAllRoutes()),o=c.summary(` \u{1F440} Last change processed in ${v(Math.round(performance.now()-r)+"ms")}`,a);e.runListeners("errors-updated",void 0,o),e.runListeners("pages-updated",void 0,a),e.runListeners("routes-updated")})};m.REDOCLY_EXP_DISABLE_MD_VALIDATION?t.info("Skipping markdown validation step"):await g(e,n),await b(n);const s=p(e.getAllRoutes());c.summary(" \u{1F440} Watching for changes...",s),e.runListeners("pages-updated",void 0,s),n.fs.watch(async()=>{w.clear(),await d()}),t.verbose("Starting development server."),await h(e,n,{port:Number(i.port||4e3),maxPortRetries:m.isReunite?0:P}),L()}async function T(i){let e=!0,l=!0;const n=async r=>{r==="client"?e=!0:l=!0,i.runListeners("build-started");const a=e!=l;a&&i.startEsbuildRun(),i.buildRevision>0&&await i.waitForPluginsRun(),r!=="client"&&i.noteRequestHandlersEntryBuildStart(),a&&t.startTiming("rebuild")},d=async r=>{r==="client"?e=!1:(l=!1,i.markRequestHandlersEntryUpdated()),!(e||l)&&(i.finishEsbuildRun(),i.buildRevision++,t.infoTime("rebuild","JavaScript re-compiled"),await i.reloadMarkdocOptions(),i.markUserCodeReady(),i.runListeners("build-updated"),i.lifecycleContext&&i.buildRevision>1&&i.lifecycleContext.fs.emitCodeUpdated())},s=[new Promise((r,a)=>{const o={label:"client",buildStart(){t.verbose("Start compiling client code."),t.startTiming(this.label)},buildEnd(){t.verboseTime(this.label,"Client compiled"),r(!0)},rebuildStart:()=>n("client"),rebuildEnd:()=>d("client")};R(i,i.outdir,"development",o).then(u=>u.watch()).catch(a)}),new Promise((r,a)=>{const o={label:"server",buildStart(){t.verbose("Start compiling server code."),t.startTiming(this.label)},buildEnd(){t.verboseTime(this.label,"Server compiled"),r(!0)},rebuildStart:()=>n("server"),rebuildEnd:()=>d("server")};S(i,i.serverOutDir,"development",o).then(u=>u.watch()).catch(a)})];await Promise.all(s),await i.reloadMarkdocOptions()}function D(){return new Promise(i=>{setTimeout(i,0)})}export{q as develop};
@@ -1 +1 @@
1
- import{bold as n}from"colorette";import{DEFAULT_THEME_NAME as g}from"../../constants/common.js";import{logger as m}from"../../server/tools/notifiers/logger.js";import{getThemeFiles as c,getEjectedFiles as y,copyComponent as p}from"./themeOperations.js";async function T({pathToThemeFolder:i,pathToPortalCustomThemeFolder:e,theme:r=g},t){const s=m.startTiming(),o=c(i,{onlyFilePatterns:t.onlyFiles,ignoreFilePatterns:t.ignoreFiles}),l=c(e),f=y(l,o);for(let F of o)await p({componentToCopy:F,copyFrom:i,copyTo:e,ejectedFiles:f,options:t});m.infoTime(s,`Theme ${n(r)} has been ejected into ${n(e)}`)}export{T as default};
1
+ import{bold as n}from"colorette";import{DEFAULT_THEME_NAME as g}from"../../constants/common.js";import{logger as c}from"../../server/tools/notifiers/logger.js";import{getThemeFiles as m,getEjectedFiles as y,copyComponent as p}from"./themeOperations.js";async function T({pathToThemeFolder:t,pathToPortalCustomThemeFolder:e,theme:s=g},o){const r=c.startTiming(),i=m(t,{onlyFilePatterns:o.onlyFiles,ignoreFilePatterns:o.ignoreFiles}),l=m(e),f=y(l,i);for(const F of i)await p({componentToCopy:F,copyFrom:t,copyTo:e,ejectedFiles:f,options:o});c.infoTime(r,`Theme ${n(s)} has been ejected into ${n(e)}`)}export{T as default};
@@ -1 +1 @@
1
- const i="TranslationKey",u=async({getConfig:e,cache:t,fs:s})=>{const a=await e(),n=r(a),o=s.scan(/sidebars.yaml$/),c=await Promise.all(o.map(f=>t.load(f.relativePath,"yaml").then(d=>d.data)));return{...r(c),...n}},r=e=>{let t={};if(!e)return{};if(Array.isArray(e))for(const s of e)t={...t,...r(s)};if(typeof e=="object")for(const[s,a]of Object.entries(e))if(s.endsWith(i)&&typeof a=="string"){const n=s.slice(0,i.length*-1),o=e[n];if(!l(n)||!l(a)||!y(o))continue;t[a]=o||""}else t={...t,...r(a)};return t},l=e=>e.trim().length>0,y=e=>e==null||typeof e=="string";export{u as collectConfigTranslations};
1
+ const i="TranslationKey",g=async({getConfig:e,cache:t,fs:s})=>{const a=await e(),n=r(a),o=s.scan(/sidebars.yaml$/),l=await Promise.all(o.map(f=>t.load(f.relativePath,"yaml").then(d=>d.data)));return{...r(l),...n}},r=e=>{const t={};if(!e)return{};if(Array.isArray(e))for(const s of e)Object.assign(t,r(s));if(typeof e=="object")for(const[s,a]of Object.entries(e))if(s.endsWith(i)&&typeof a=="string"){const n=s.slice(0,i.length*-1),o=e[n];if(!c(n)||!c(a)||!y(o))continue;t[a]=o||""}else Object.assign(t,r(a));return t},c=e=>e.trim().length>0,y=e=>e==null||typeof e=="string";export{g as collectConfigTranslations};
@@ -1 +1 @@
1
- import*as o from"react";import{Outlet as g,useLocation as h,useNavigate as P}from"react-router";import{useEffect as i,useMemo as c,useState as S,Suspense as D}from"react";import{withoutPathPrefix as T}from"@redocly/theme/core/utils";import{useThemeConfig as v}from"@redocly/theme/core/hooks";import{InternalServerErrorLayout as L}from"@redocly/theme/layouts/InternalServerErrorLayout";import{RootLayout as C}from"@redocly/theme/layouts/RootLayout";import{Consent as y}from"@redocly/theme/components/Consent/Consent";import{PageLayout as R}from"@redocly/theme/layouts/PageLayout";import{components as _}from"@redocly/theme/markdoc/default";import{Sidebar as I}from"./app/Sidebar/Sidebar";import{loadAndNavigate as N}from"./app/utils/loadAndNavigate";import{useActions as O}from"./app/Sidebar/useActions";import{useScrollTracker as A}from"./app/hooks/useScrollTracker";import{useAutoScroll as b}from"./app/hooks/useAutoScroll";import{API_DOCS_TEMPLATE_ID as u}from"../constants/common";import{removeTrailingSlash as k}from"../utils/url/remove-trailing-slash";import{removeLeadingSlash as M}from"../utils/url/remove-leading-slash";import*as x from"./app/markdoc/custom-components/index";import{DefaultStyles as B}from"./styling/default-styles";import{ThemeDataProvider as G}from"./providers/theme/ThemeDataProvider";import{PageDataContext as V}from"./providers/page-data/PageDataContext";import{SeoTags as F}from"./app/seo/SeoTags";import{useRouterForLocalLinks as w,useRunningEnvironmentCheck as U}from"./providers/hooks";import{usePageData as W,usePageDataLoader as j}from"./providers/page-data/hooks";import{ErrorBoundary as q}from"./ErrorBoundary";import{ErrorDetails as f,Loader as z}from"./server-entry";import"@styles";import{useRouteChangeTracker as H}from"./app/hooks/useRouteChangeTracker";import{useWebMcpTools as J}from"./app/webmcp";import{isInIframe as K}from"./utils";import{useL10n as Q}from"./app/l10n";import{PostMessageProvider as X}from"./providers/post-message/PostMessageProvider";import{ScriptLoader as Y}from"./ScriptLoader";import{clientRoutes as Z}from"./runtime/generated/routes.js";import{DevModeFloatingBar as $}from"./app/DevModeFloatingBar";import{usePageTimeTracker as ee}from"./app/hooks/usePageTimeTracker";import{useMarkdocRenderer as oe}from"./app/hooks/markdown/useMarkdocRenderer";globalThis.__LOADER.markdocComponents={...x,..._};function te(){const{palette:e}=v();return o.createElement(B,{palette:e})}function Ue(){const e=j(),[r,n]=S(e),t=h(),m=P();Q(),i(()=>{e?n(e):N({navigate:m,to:t.pathname+t.search+t.hash}).then(()=>n(z.loadSync(t.pathname)))},[t,m]),w();const a=U();return a?(console.log(a),o.createElement(f,{error:{message:a,name:""}})):r?o.createElement(q,null,o.createElement(V.Provider,{value:e||r},o.createElement(G,null,o.createElement(te,null),o.createElement(X,{enabled:process.env.NODE_ENV==="development"||K()},o.createElement(g,null))))):null}function re(){return b(),null}function E(){H(),ee(),A(),J();const e=W(),r=O(),{layout:n}=r,t=c(()=>({layout:n}),[n]),m=process.env.NODE_ENV!=="production",a=globalThis.SSR_OMIT_SUSPENSE,s=oe(e?.props?.ast),d=k(e?.slug||"");i(()=>{document.documentElement.classList.add("ready")},[]);const l=c(()=>[u].includes(e?.templateId??"")?{...e?.props,apiOptions:t}:e?.props,[e?.props,e?.templateId,t]);if(e?.props.pagePropGetterError?.message)return m?o.createElement(f,{error:{...e?.props?.pagePropGetterError}}):o.createElement(L,null);if(!!e?.props?.compilationErrors?.length)return e?.Template?o.createElement(e.Template,{pageProps:e?.props,children:s}):null;const p=()=>o.createElement(C,null,e?.templateId!==u&&o.createElement(re,null),o.createElement(R,{sidebar:o.createElement(I,{layoutControls:r})},o.createElement(F,{seo:e?.props.seo,slug:d}),e?.Template&&l?o.createElement(e.Template,{pageProps:l,children:s}):null),process.env.NODE_ENV!=="production"&&o.createElement($,null),o.createElement(Y,null),o.createElement(y,null));return a?p():o.createElement(D,null,p())}const We=[...Z.map(e=>({Component:E,path:M(T(e).substring(1)+"/*")})),{Component:E,path:"*"}];export{Ue as App,E as Page,We as routes};
1
+ import*as o from"react";import{Outlet as g,useLocation as h,useNavigate as P}from"react-router";import{useEffect as i,useMemo as c,useState as S,Suspense as D}from"react";import{withoutPathPrefix as T}from"@redocly/theme/core/utils";import{useThemeConfig as v}from"@redocly/theme/core/hooks";import{InternalServerErrorLayout as L}from"@redocly/theme/layouts/InternalServerErrorLayout";import{RootLayout as C}from"@redocly/theme/layouts/RootLayout";import{Consent as y}from"@redocly/theme/components/Consent/Consent";import{LoadProgressBar as R}from"@redocly/theme/components/LoadProgressBar/LoadProgressBar";import{PageLayout as _}from"@redocly/theme/layouts/PageLayout";import{components as I}from"@redocly/theme/markdoc/default";import{Sidebar as N}from"./app/Sidebar/Sidebar";import{loadAndNavigate as O}from"./app/utils/loadAndNavigate";import{useActions as A}from"./app/Sidebar/useActions";import{useScrollTracker as b}from"./app/hooks/useScrollTracker";import{useAutoScroll as k}from"./app/hooks/useAutoScroll";import{API_DOCS_TEMPLATE_ID as u}from"../constants/common";import{removeTrailingSlash as M}from"../utils/url/remove-trailing-slash";import{removeLeadingSlash as x}from"../utils/url/remove-leading-slash";import*as B from"./app/markdoc/custom-components/index";import{DefaultStyles as G}from"./styling/default-styles";import{ThemeDataProvider as V}from"./providers/theme/ThemeDataProvider";import{PageDataContext as F}from"./providers/page-data/PageDataContext";import{SeoTags as w}from"./app/seo/SeoTags";import{useRouterForLocalLinks as U,useRunningEnvironmentCheck as W}from"./providers/hooks";import{usePageData as j,usePageDataLoader as q}from"./providers/page-data/hooks";import{ErrorBoundary as z}from"./ErrorBoundary";import{ErrorDetails as f,Loader as H}from"./server-entry";import"@styles";import{useRouteChangeTracker as J}from"./app/hooks/useRouteChangeTracker";import{useWebMcpTools as K}from"./app/webmcp";import{isInIframe as Q}from"./utils";import{useL10n as X}from"./app/l10n";import{PostMessageProvider as Y}from"./providers/post-message/PostMessageProvider";import{ScriptLoader as Z}from"./ScriptLoader";import{clientRoutes as $}from"./runtime/generated/routes.js";import{DevModeFloatingBar as ee}from"./app/DevModeFloatingBar";import{usePageTimeTracker as oe}from"./app/hooks/usePageTimeTracker";import{useMarkdocRenderer as re}from"./app/hooks/markdown/useMarkdocRenderer";globalThis.__LOADER.markdocComponents={...B,...I};function te(){const{palette:e}=v();return o.createElement(G,{palette:e})}function je(){const e=q(),[t,n]=S(e),r=h(),m=P();X(),i(()=>{e?n(e):O({navigate:m,to:r.pathname+r.search+r.hash}).then(()=>n(H.loadSync(r.pathname)))},[r,m]),U();const a=W();return a?(console.log(a),o.createElement(f,{error:{message:a,name:""}})):t?o.createElement(z,null,o.createElement(F.Provider,{value:e||t},o.createElement(V,null,o.createElement(te,null),o.createElement(R,null),o.createElement(Y,{enabled:process.env.NODE_ENV==="development"||Q()},o.createElement(g,null))))):null}function ne(){return k(),null}function E(){J(),oe(),b(),K();const e=j(),t=A(),{layout:n}=t,r=c(()=>({layout:n}),[n]),m=process.env.NODE_ENV!=="production",a=globalThis.SSR_OMIT_SUSPENSE,s=re(e?.props?.ast),d=M(e?.slug||"");i(()=>{document.documentElement.classList.add("ready")},[]);const l=c(()=>[u].includes(e?.templateId??"")?{...e?.props,apiOptions:r}:e?.props,[e?.props,e?.templateId,r]);if(e?.props.pagePropGetterError?.message)return m?o.createElement(f,{error:{...e?.props?.pagePropGetterError}}):o.createElement(L,null);if(!!e?.props?.compilationErrors?.length)return e?.Template?o.createElement(e.Template,{pageProps:e?.props,children:s}):null;const p=()=>o.createElement(C,null,e?.templateId!==u&&o.createElement(ne,null),o.createElement(_,{sidebar:o.createElement(N,{layoutControls:t})},o.createElement(w,{seo:e?.props.seo,slug:d}),e?.Template&&l?o.createElement(e.Template,{pageProps:l,children:s}):null),process.env.NODE_ENV!=="production"&&o.createElement(ee,null),o.createElement(Z,null),o.createElement(y,null));return a?p():o.createElement(D,null,p())}const qe=[...$.map(e=>({Component:E,path:x(T(e).substring(1)+"/*")})),{Component:E,path:"*"}];export{je as App,E as Page,qe as routes};
@@ -1 +1 @@
1
- import*as e from"react";import{MarkdownAdapterProvider as l,RedocResponseSamples as c,StoreProvider as f,markdocParser as u}from"@redocly/api-docs";import{ErrorMessage as t,OpenApiComponentWrap as E}from"../styled.elements";import{useStore as S}from"../../hooks/use-store";import{findResponseSamples as P}from"../../utils/find-openapi-response-samples.js";import{usePortalMarkdownAdapter as h}from"./use-markdown-adapter";function v(n){const{descriptionFile:s,operationId:p,pointer:a,exampleKey:m}=n,{store:r,error:i}=S(s),d=h();if(!r)return e.createElement(t,null,i);const o=r.items?.length?P(r.items,{pointer:a,sourceId:p}):void 0;return o?.responseCodes.length?e.createElement(E,{"data-testid":"openapi-response-sample"},e.createElement(f,{options:{...r.options,specType:"openapi",markdownParser:u},apiStore:r.store},e.createElement(l,{value:d},e.createElement(c,{responseCodes:o.responseCodes,exampleKey:m,schemaId:o.schemaId})))):e.createElement(t,null,"Cannot find response samples for the given operation")}export{v as OpenApiResponseSample};
1
+ import*as e from"react";import{MarkdownAdapterProvider as c,RedocResponseSamples as f,StoreProvider as u,markdocParser as E}from"@redocly/api-docs";import{ErrorMessage as t,OpenApiComponentWrap as S}from"../styled.elements";import{useStore as P}from"../../hooks/use-store";import{findResponseSamples as h}from"../../utils/find-openapi-response-samples.js";import{usePortalMarkdownAdapter as k}from"./use-markdown-adapter";function w(n){const{descriptionFile:s,operationId:p,pointer:a,exampleKey:i}=n,{store:o,error:m}=P(s),d=k(),l=e.useMemo(()=>({...o?.options,specType:"openapi",markdownParser:E}),[o?.options]);if(!o)return e.createElement(t,null,m);const r=o.items?.length?h(o.items,{pointer:a,sourceId:p}):void 0;return r?.responseCodes.length?e.createElement(S,{"data-testid":"openapi-response-sample"},e.createElement(u,{options:l,apiStore:o.store},e.createElement(c,{value:d},e.createElement(f,{responseCodes:r.responseCodes,exampleKey:i,schemaId:r.schemaId})))):e.createElement(t,null,"Cannot find response samples for the given operation")}export{w as OpenApiResponseSample};
@@ -1 +1 @@
1
- import o from"react";import{useLocation as g}from"react-router";import{EmbeddedReplay as k,StoreProvider as I,buildReplayPredefinedEnvValues as P,mergeEnvData as b,useOpenApiDefinition as h,withReplayPrefetch as R,markdocParser as w}from"@redocly/api-docs";import{Admonition as V}from"@redocly/theme/markdoc/components/Admonition/Admonition";import{ErrorMessage as C,OpenApiComponentWrap as D}from"../styled.elements.js";import{useStore as v}from"../../hooks/use-store.js";import{getMockServerDocsConfig as y}from"../../../../templates/api-docs/mock-server-config.js";import{buildReplayOperationSourceMap as $}from"../../utils/build-replay-operation-source-map.js";import{findApiItem as x}from"../../utils/find-api-item.js";const F=R(function({descriptionFile:p,operationId:r,pointer:n,exampleKey:a,mimeType:e,requestBody:u,parameters:c,environment:s,environments:i,hideOtherSecuritySchemes:d}){const f=g(),{store:t,baseSlug:S}=v(p),m=h(),E=o.useMemo(()=>{if(!m)return{};const M=y(t?.options?.mockServer,S??""),A=P(m,M);return b(A,i??{})},[m,t?.options?.mockServer,S,i]),O=o.useMemo(()=>t?.items?$(t.items,{pointer:n,sourceId:r},{mimeType:e,exampleKey:a},t.store?.exampleStore??{}):new Map,[t?.items,t?.store?.exampleStore,n,r,e,a]);return!m||!t?null:o.createElement(k,{key:`${f.pathname}-${p}-${r||n}`,activeOperationId:r,fullOpenApi:m,pointer:n,operationSourceMap:O,hideOtherSecuritySchemes:d,predefinedEnvValues:E,allowedEnvironments:s?[s]:void 0,requestValues:{body:u,...c},activeMimeName:e})}),J=l=>{const{descriptionFile:p,operationId:r,pointer:n,options:a}=l,{store:e,error:u,baseSlug:c}=v(p),s=o.useMemo(()=>({...e?.options,...a}),[a,e?.options]),i=o.useMemo(()=>e?.items?.length?x(e.items,{pointer:n,sourceId:r}):void 0,[e?.items,n,r]);if(!e)return o.createElement(C,null,u);if(!i?.content?.meta?.pointer)return o.createElement(V,{type:"danger"},"Cannot find OpenAPI operation by operationId or pointer in ",p);const d=i.content.meta.pointer,f=i.content.meta.sourceId??"";return o.createElement(D,{"data-testid":"replay-openapi"},o.createElement(I,{apiStore:e.store,options:{specType:"openapi",...s,mockServer:y(s.mockServer,c??""),basePath:c,markdownParser:w,replayFeatures:e.options.replayFeatures}},o.createElement(F,{...l,pointer:d,operationId:f})))};export{J as ReplayOpenApi};
1
+ import o from"react";import{useLocation as g}from"react-router";import{EmbeddedReplay as k,StoreProvider as I,buildReplayPredefinedEnvValues as P,mergeEnvData as b,useOpenApiDefinition as h,withReplayPrefetch as R,markdocParser as w}from"@redocly/api-docs";import{Admonition as V}from"@redocly/theme/markdoc/components/Admonition/Admonition";import{ErrorMessage as C,OpenApiComponentWrap as D}from"../styled.elements.js";import{useStore as v}from"../../hooks/use-store.js";import{getMockServerDocsConfig as y}from"../../../../templates/api-docs/mock-server-config.js";import{buildReplayOperationSourceMap as F}from"../../utils/build-replay-operation-source-map.js";import{findApiItem as $}from"../../utils/find-api-item.js";const x=R(function({descriptionFile:p,operationId:r,pointer:n,exampleKey:s,mimeType:e,requestBody:d,parameters:a,environment:i,environments:u,hideOtherSecuritySchemes:m}){const f=g(),{store:t,baseSlug:S}=v(p),c=h(),O=o.useMemo(()=>{if(!c)return{};const M=y(t?.options?.mockServer,S??""),A=P(c,M);return b(A,u??{})},[c,t?.options?.mockServer,S,u]),E=o.useMemo(()=>t?.items?F(t.items,{pointer:n,sourceId:r},{mimeType:e,exampleKey:s},t.store?.exampleStore??{}):new Map,[t?.items,t?.store?.exampleStore,n,r,e,s]);return!c||!t?null:o.createElement(k,{key:`${f.pathname}-${p}-${r||n}`,activeOperationId:r,fullOpenApi:c,pointer:n,operationSourceMap:E,hideOtherSecuritySchemes:m,predefinedEnvValues:O,allowedEnvironments:i?[i]:void 0,requestValues:{body:d,...a},activeMimeName:e})}),J=l=>{const{descriptionFile:p,operationId:r,pointer:n,options:s}=l,{store:e,error:d,baseSlug:a}=v(p),i=o.useMemo(()=>({...e?.options,...s}),[s,e?.options]),u=o.useMemo(()=>({specType:"openapi",...i,mockServer:y(i.mockServer,a??""),basePath:a,markdownParser:w,replayFeatures:e?.options.replayFeatures}),[i,a,e?.options.replayFeatures]),m=o.useMemo(()=>e?.items?.length?$(e.items,{pointer:n,sourceId:r}):void 0,[e?.items,n,r]);if(!e)return o.createElement(C,null,d);if(!m?.content?.meta?.pointer)return o.createElement(V,{type:"danger"},"Cannot find OpenAPI operation by operationId or pointer in ",p);const f=m.content.meta.pointer,t=m.content.meta.sourceId??"";return o.createElement(D,{"data-testid":"replay-openapi"},o.createElement(I,{apiStore:e.store,options:u},o.createElement(x,{...l,pointer:f,operationId:t})))};export{J as ReplayOpenApi};
@@ -1,4 +1,4 @@
1
- import e,{useState as m}from"react";import d from"styled-components";import{Button as s}from"@redocly/theme/components/Button/Button";import{H3 as p}from"@redocly/theme/components/Typography/H3";import{ServerRoutes as u}from"../../../../constants/api";import{withPathPrefix as f}from"@redocly/theme/core/utils";function g(){const t=new URLSearchParams(window.location.search);return{code:t.get("code")||"",org:t.get("org")||"",invitedBy:t.get("invitedBy")||""}}function P(){const{code:t,org:a,invitedBy:i}=g(),[o,l]=m(t),c=async r=>{if(r.preventDefault(),!o)return;const n=new URL(f(u.IDP_LOGIN),window.location.href);n.searchParams.set("inviteCode",o),n.searchParams.set("redirectTo","/"),window.location.href=n.toString()};return e.createElement(v,null,e.createElement(p,null,"Join ",a||"Redocly"),e.createElement("form",{onSubmit:c},e.createElement("div",{className:"form-content"},!t&&e.createElement(e.Fragment,null,e.createElement("span",{className:"label",id:"invite-code-label"},"Enter your invite code"),e.createElement("input",{type:"text","aria-labelledby":"invite-code-label",value:o,onChange:r=>l(r.target.value),placeholder:"Invite code",autoFocus:!0})),i&&e.createElement("div",{className:"invite-info"},e.createElement("strong",null,i)," has invited you to join"),e.createElement(s,{fullWidth:!0,size:"large",variant:"primary",type:"submit",disabled:!o},"Accept invite"))))}const v=d.div`
1
+ import e,{useState as m}from"react";import d from"styled-components";import{Button as s}from"@redocly/theme/components/Button/Button";import{H3 as p}from"@redocly/theme/components/Typography/H3";import{ServerRoutes as u}from"../../../../constants/api";import{withPathPrefix as f}from"@redocly/theme/core/utils";function g(){const t=new URLSearchParams(window.location.search);return{code:t.get("code")||"",org:t.get("org")||"",invitedBy:t.get("invitedBy")||""}}function P(){const{code:t,org:a,invitedBy:i}=g(),[o,l]=m(t),c=async r=>{if(r.preventDefault(),!o)return;const n=new URL(f(u.IDP_LOGIN),window.location.href);n.searchParams.set("inviteCode",o),n.searchParams.set("redirectTo","/"),window.location.href=n.toString()};return e.createElement(v,null,e.createElement(p,null,`Join ${a||"Redocly"}`),e.createElement("form",{onSubmit:c},e.createElement("div",{className:"form-content"},!t&&e.createElement(e.Fragment,null,e.createElement("span",{className:"label",id:"invite-code-label"},"Enter your invite code"),e.createElement("input",{type:"text","aria-labelledby":"invite-code-label",value:o,onChange:r=>l(r.target.value),placeholder:"Invite code",autoFocus:!0})),i&&e.createElement("div",{className:"invite-info"},e.createElement("strong",null,i)," has invited you to join"),e.createElement(s,{fullWidth:!0,size:"large",variant:"primary",type:"submit",disabled:!o},"Accept invite"))))}const v=d.div`
2
2
  font-family: var(--font-family-base);
3
3
  display: flex;
4
4
  justify-content: center;
@@ -1 +1 @@
1
- import{isLocalLink as f}from"../../../utils/path/is-local-link.js";import{isAuthRoutePath as m}from"../../../utils/auth/is-auth-route-path.js";import{withLoadProgress as u}from"./withLoadProgress";import{scrollToAnchor as p}from"./scroll-to-anchor";let s;async function A({navigate:r,to:o,origin:a="browser",options:c}){o===""&&(o="/"),s=o;const{pathname:i,hash:d,search:t}=new URL(o,window.location.origin+window.location.pathname),n=decodeURIComponent(d),h=decodeURIComponent(window.location.hash);if(m(i)){window.location.href=o;return}const w=window.__LOADER,e=await u(w.tryLoad(i,void 0,t));if(e?.redirectTo){if(!f(e.redirectTo)){window.location.href=e.redirectTo;return}return A({navigate:r,to:e.redirectTo,origin:a,options:c})}if(e&&s===o){if(i!==window.location.pathname||t!==window.location.search||n!==h?r({pathname:i,search:t,hash:n},{...c,state:{origin:a},flushSync:!0}):n&&window.dispatchEvent(new HashChangeEvent("hashchange")),e.props?.disableAutoScroll)return;requestAnimationFrame(()=>{if(n){const l=n.slice(1);p(l)}else window.scrollTo(0,0)})}}export{A as loadAndNavigate};
1
+ import{withLoadProgress as f}from"@redocly/theme/core/utils";import{isLocalLink as m}from"../../../utils/path/is-local-link.js";import{isAuthRoutePath as u}from"../../../utils/auth/is-auth-route-path.js";import{scrollToAnchor as p}from"./scroll-to-anchor";let s;async function A({navigate:r,to:o,origin:a="browser",options:c}){o===""&&(o="/"),s=o;const{pathname:i,hash:d,search:t}=new URL(o,window.location.origin+window.location.pathname),n=decodeURIComponent(d),h=decodeURIComponent(window.location.hash);if(u(i)){window.location.href=o;return}const w=window.__LOADER,e=await f(w.tryLoad(i,void 0,t));if(e?.redirectTo){if(!m(e.redirectTo)){window.location.href=e.redirectTo;return}return A({navigate:r,to:e.redirectTo,origin:a,options:c})}if(e&&s===o){if(i!==window.location.pathname||t!==window.location.search||n!==h?r({pathname:i,search:t,hash:n},{...c,state:{origin:a},flushSync:!0}):n&&window.dispatchEvent(new HashChangeEvent("hashchange")),e.props?.disableAutoScroll)return;requestAnimationFrame(()=>{if(n){const l=n.slice(1);p(l)}else window.scrollTo(0,0)})}}export{A as loadAndNavigate};
@@ -1 +1 @@
1
- typeof Element<"u"&&!Element.prototype.scrollIntoViewIfNeeded&&(Element.prototype.scrollIntoViewIfNeeded=function(e){e=arguments.length===0?!0:!!e;let t=l(this);if(!t)return;const n=t.getBoundingClientRect(),o=this.getBoundingClientRect();(o.top<n.top||o.bottom>n.bottom||o.right>n.right||o.left<n.left)&&this.scrollIntoView({block:e?"center":"nearest",inline:e?"center":"nearest"})});function l(e){let t=e.parentNode;return!t||t===document?null:t.offsetHeight<t.scrollHeight||t.offsetWidth<t.scrollWidth?t:l(t)}
1
+ typeof Element<"u"&&!Element.prototype.scrollIntoViewIfNeeded&&(Element.prototype.scrollIntoViewIfNeeded=function(e){e=arguments.length===0?!0:!!e;const t=i(this);if(!t)return;const n=t.getBoundingClientRect(),o=this.getBoundingClientRect();(o.top<n.top||o.bottom>n.bottom||o.right>n.right||o.left<n.left)&&this.scrollIntoView({block:e?"center":"nearest",inline:e?"center":"nearest"})});function i(e){const t=e.parentNode;return!t||t===document?null:t.offsetHeight<t.scrollHeight||t.offsetWidth<t.scrollWidth?t:i(t)}
@@ -1 +1 @@
1
- import*as g from"react";import{withPathPrefix as x}from"@redocly/theme/core/utils";import{appendSearchParams as z}from"../utils";import{mapObject as I}from"../../utils/object/map-object.js";import{mapObjectAsync as $}from"../../utils/object/map-object-async.js";import{isFunction as A}from"../../utils/guards/is-function.js";import{isBrowser as G}from"../../utils/env/is-browser.js";import{GLOBAL_DATA_URL as N}from"../../constants/common.js";import{getClientPageDataUrl as V}from"../../utils/url/get-client-page-data-url.js";import{getSharedDataFetchUrl as B}from"../../utils/url/get-shared-data-fetch-url.js";import{normalizeRouteSlug as d}from"../../utils/path/normalize-route-slug.js";import{templates as b}from"./generated/templates.js";import{AsyncCache as S}from"./cache.js";import{fetch as y}from"./fetch.js";import{updateTranslations as F}from"../app/l10n";import{PageMissingDefaultExportError as v}from"./errors/page-missing-default-export-error.js";const i=new S,c=new S;let D=null,m,K;const u=new Set;async function W(){const o=await(await y(x(N))).json();return m=o,o}async function C(o){const t=B(o,process.env.NODE_ENV==="development");return await(await y(t)).json()}async function q(o){return c.has(o)||c.set(o,C(o)),c.get(o)}function dt(){const[,o]=g.useReducer(t=>t+1,0);g.useEffect(()=>{process.env.NODE_ENV!=="production"&&(window.__redoclyRefresh=o)},[o])}function _(o,t){const e=t?new URLSearchParams(t).get("revision"):null,a=t?new URLSearchParams(t).get("version"):null;return e||a?`${o}?${e?`revision=${encodeURIComponent(e)}`:""}${a?`&version=${encodeURIComponent(a)}`:""}`.trim():o}class p{static markdocComponents={};static async updateTemplate(t,e,a){const n=d(t);b[a]=()=>e;const r=d(window.location.pathname);n===r&&(await this.load(t,!0),window.__redoclyRefresh())}static async update(t){const e=d(t),a=d(window.location.pathname);if(e!==a){i.delete(e);return}await this.load(t,!0),window.__redoclyRefresh()}static async updateSharedData(t){await c.set(t,C(t)),window.__redoclyRefresh()}static addGlobalDataListener(t){u.add(t)}static removeGlobalDataListener(t){u.delete(t)}static updateGlobalData(t){u.forEach(e=>e(t)),m=t,F(m.l10n)}static async tryLoad(t,e,a){try{return await this.load(t,e,a)}catch{return null}}static async loadDynamicMarkdocComponents(t){const e=this.markdocComponents?.[t];e&&A(e)&&Object.assign(this.markdocComponents,await e())}static async load(t,e,a){const n=d(t),r=_(n,a);if(!m&&!D&&(D=W()),!e&&i.has(r)){const f=await i.get(r);if(f)return f}const[s]=await Promise.all([i.set(r,l(a)),D]);return s;async function l(f){const E=V(n),T=z(E,f),k=await y(T),{templateId:P,sharedDataIds:w,props:R,userData:L,versions:M,redirectTo:O,isPublic:U}=await k.json(),[j]=await Promise.all([(async()=>p.loadTemplate(P))(),Promise.all((R.dynamicMarkdocComponents||[]).map(h=>p.loadDynamicMarkdocComponents(h))),w?$(w,h=>q(h)):Promise.resolve({})]);return{templateId:P,slug:n,sharedDataIds:w,redirectTo:O,props:R,Template:j,userData:L,versions:M,isPublic:U}}}static loadSync(t){const e=d(t),a=_(e,typeof window<"u"?window.location.search:void 0),n=i.tryGetSync(a);if(!n)return;const r=I(n.sharedDataIds,s=>c.getSync(s,"Data dependency not cached ahead of time: "+s));return{...n,sharedData:r}}static async prepare(t,e,a,n){const r=t.templateId;if(await Promise.all((t.props.dynamicMarkdocComponents||[]).map(l=>this.loadDynamicMarkdocComponents(l))),e)for(const l of Object.keys(e))c.setSync(l,e[l]);const s=await p.loadTemplate(r);s&&i.setSync(t.slug,{templateId:r,slug:t.slug,props:t.props,sharedDataIds:t.sharedDataIds||{},Template:s,userData:t.userInfo,versions:t.versions,isPublic:t.isPublic}),m=a,K=n}static async loadTemplate(t){try{const e=await b[t]();if(t.endsWith("page.tsx")&&!e.default)throw new v(t);const a=e.default;return H(a)?a:a?.default}catch(e){if(!(process.env.NODE_ENV==="development")||!G())throw e;return e instanceof v?()=>(window.location.reload(),null):(window.location.reload(),null)}}static clear(){u.clear(),c.clear(),i.clear()}}(typeof window<"u"?window:global).__LOADER=p;function H(o){return typeof o=="function"||typeof o=="object"&&o!==null&&"$$typeof"in o}export{p as Loader,q as getSharedData,m as globalData,K as initLocale,dt as useRefresh};
1
+ import*as g from"react";import{withPathPrefix as x}from"@redocly/theme/core/utils";import{appendSearchParams as z}from"../utils";import{mapObject as I}from"../../utils/object/map-object.js";import{mapObjectAsync as $}from"../../utils/object/map-object-async.js";import{isFunction as A}from"../../utils/guards/is-function.js";import{isBrowser as G}from"../../utils/env/is-browser.js";import{GLOBAL_DATA_URL as N}from"../../constants/common.js";import{getClientPageDataUrl as V}from"../../utils/url/get-client-page-data-url.js";import{getSharedDataFetchUrl as B}from"../../utils/url/get-shared-data-fetch-url.js";import{normalizeRouteSlug as c}from"../../utils/path/normalize-route-slug.js";import{templates as b}from"./generated/templates.js";import{AsyncCache as S}from"./cache.js";import{fetch as y}from"./fetch.js";import{updateTranslations as F}from"../app/l10n";import{PageMissingDefaultExportError as v}from"./errors/page-missing-default-export-error.js";const l=new S,d=new S;let D=null,m,K;const u=new Set;async function W(){const o=await(await y(x(N))).json();return m=o,o}async function C(o){const t=B(o,process.env.NODE_ENV==="development");return await(await y(t)).json()}async function q(o){return d.has(o)||d.set(o,C(o)),d.get(o)}function dt(){const[,o]=g.useReducer(t=>t+1,0);g.useEffect(()=>{process.env.NODE_ENV!=="production"&&(window.__redoclyRefresh=o)},[o])}function _(o,t){const e=t?new URLSearchParams(t).get("revision"):null,a=t?new URLSearchParams(t).get("version"):null;return e||a?`${o}?${e?`revision=${encodeURIComponent(e)}`:""}${a?`&version=${encodeURIComponent(a)}`:""}`.trim():o}class p{static markdocComponents={};static async updateTemplate(t,e,a){const n=c(t);b[a]=()=>e;const r=c(window.location.pathname);n===r&&(await this.load(t,!0),window.__redoclyRefresh())}static async update(t){const e=c(t),a=c(window.location.pathname);if(e!==a){l.delete(e);return}await this.load(t,!0),window.__redoclyRefresh()}static async updateSharedData(t){await d.set(t,C(t)),window.__redoclyRefresh()}static addGlobalDataListener(t){u.add(t)}static removeGlobalDataListener(t){u.delete(t)}static updateGlobalData(t){u.forEach(e=>e(t)),m=t,F(m.l10n)}static async tryLoad(t,e,a){try{return await this.load(t,e,a)}catch{return null}}static async loadDynamicMarkdocComponents(t){const e=this.markdocComponents?.[t];e&&A(e)&&Object.assign(this.markdocComponents,await e())}static async load(t,e,a){const n=c(t),r=_(n,a);if(!m&&!D&&(D=W()),!e&&l.has(r)){const f=await l.get(r);if(f)return f}const[i]=await Promise.all([l.set(r,s(a)),D]);return i;async function s(f){const E=V(n),T=z(E,f),k=await y(T),{templateId:P,sharedDataIds:w,props:R,userData:L,versions:M,redirectTo:O,isPublic:U}=await k.json(),[j]=await Promise.all([(async()=>p.loadTemplate(P))(),Promise.all((R.dynamicMarkdocComponents||[]).map(h=>p.loadDynamicMarkdocComponents(h))),w?$(w,h=>q(h)):Promise.resolve({})]);return{templateId:P,slug:n,sharedDataIds:w,redirectTo:O,props:R,Template:j,userData:L,versions:M,isPublic:U}}}static loadSync(t){const e=c(t),a=_(e,typeof window<"u"?window.location.search:void 0),n=l.tryGetSync(a);if(!n)return;const r=I(n.sharedDataIds,i=>d.getSync(i,"Data dependency not cached ahead of time: "+i));return{...n,sharedData:r}}static async prepare(t,e,a,n){const r=t.templateId;if(await Promise.all((t.props.dynamicMarkdocComponents||[]).map(s=>this.loadDynamicMarkdocComponents(s))),e)for(const s of Object.keys(e))d.setSync(s,e[s]);const i=await p.loadTemplate(r);if(i){const s=c(t.slug);l.setSync(s,{templateId:r,slug:s,props:t.props,sharedDataIds:t.sharedDataIds||{},Template:i,userData:t.userInfo,versions:t.versions,isPublic:t.isPublic})}m=a,K=n}static async loadTemplate(t){try{const e=await b[t]();if(t.endsWith("page.tsx")&&!e.default)throw new v(t);const a=e.default;return H(a)?a:a?.default}catch(e){if(!(process.env.NODE_ENV==="development")||!G())throw e;return e instanceof v?()=>(window.location.reload(),null):(window.location.reload(),null)}}static clear(){u.clear(),d.clear(),l.clear()}}(typeof window<"u"?window:global).__LOADER=p;function H(o){return typeof o=="function"||typeof o=="object"&&o!==null&&"$$typeof"in o}export{p as Loader,q as getSharedData,m as globalData,K as initLocale,dt as useRefresh};
@@ -1,4 +1,4 @@
1
- import*as e from"react";import{useMemo as i}from"react";import A from"styled-components";import{RedoclyApiDocs as _,createMarkdocAdapter as T}from"@redocly/api-docs";import{LayoutVariant as x}from"@redocly/theme/components/SidebarActions/SidebarActions";import{ThreePanelLayout as B}from"@redocly/theme/layouts/ThreePanelLayout";import{CatalogClassicInfoBlock as U}from"@redocly/theme/components/CatalogClassic/CatalogClassicInfoBlock";import{Breadcrumbs as D}from"@redocly/theme/components/Breadcrumbs/Breadcrumbs";import{withPathPrefix as s}from"@redocly/theme/core/utils";import{usePageSharedData as I,useUserClaims as $}from"../../app/hooks";import{ServerRoutes as p}from"../../../constants/api.js";import{isBrowser as M}from"../../../utils/env/is-browser.js";import{CLIENT_TELEMETRY_ENABLED as N}from"../../constants/common.js";import{PACKAGE_NAME as H}from"../../../config/product-gates";import{applyPathPrefixToApiItems as Y,safeParseFunction as V,useCollectMarkdocOptions as W}from"./helpers";function z({pageProps:{markdown:c,apiOptions:f,metadata:v}}){const u=I("apiDocsStore"),{items:l,options:o,store:w,baseSlug:r}=u,a=M(),g=$(),n=W(c,o.markdocOptions),d=i(()=>s(r),[r]),y=i(()=>d===r?l:Y(l),[l,r,d]),C=i(()=>T(n),[n]),k=i(()=>{const S=a?`${window.location.origin}${s(p.REPLAY_OAUTH2_CALLBACK)}`:void 0;let m=o.corsProxyUrl;if(m===void 0){const t=s(`${p.CORS_PROXY}/`);m=a?new URL(t,window.location.origin).toString():t}const E=o.events,h=E?Object.entries(E).reduce((t,[b,O])=>{const P=V(O);return P&&(t[b]=P),t},{}):void 0;return{...o,markdocOptions:n,oAuth2RedirectURI:S,corsProxyUrl:m,userClaims:g,...h&&{events:h},unstable_hooks:{...o.unstable_hooks,MiddlePanelHeader:()=>e.createElement(D,null)}}},[o,n,a,g]);if(!u)return e.createElement("div",null,"Something went wrong");const L=a?{collectorUrl:new URL(s(p.OTEL_TRACES),window.location.origin).toString(),disabled:!N,serviceVersion:`${H}@${process.env.REDOCLY_PORTAL_VERSION}`}:void 0;return e.createElement(K,null,e.createElement(R,{layout:f?.layout},e.createElement(U,{metadata:v})),e.createElement(_,{items:y,store:w,basePath:d,options:k,markdownAdapter:C,layout:f?.layout,telemetryConfig:L}))}const R=A(B)`
1
+ import*as e from"react";import{useMemo as i}from"react";import A from"styled-components";import{RedoclyApiDocs as _,createMarkdocAdapter as T}from"@redocly/api-docs";import{LayoutVariant as x}from"@redocly/theme/components/SidebarActions/SidebarActions";import{ThreePanelLayout as B}from"@redocly/theme/layouts/ThreePanelLayout";import{CatalogClassicInfoBlock as U}from"@redocly/theme/components/CatalogClassic/CatalogClassicInfoBlock";import{Breadcrumbs as D}from"@redocly/theme/components/Breadcrumbs/Breadcrumbs";import{withPathPrefix as s}from"@redocly/theme/core/utils";import{usePageSharedData as I,useUserClaims as $}from"../../app/hooks";import{ServerRoutes as p}from"../../../constants/api.js";import{isBrowser as M}from"../../../utils/env/is-browser.js";import{CLIENT_TELEMETRY_ENABLED as N}from"../../constants/common.js";import{PACKAGE_NAME as H}from"../../../config/product-gates";import{applyPathPrefixToApiItems as Y,safeParseFunction as V,useCollectMarkdocOptions as W}from"./helpers";function z({pageProps:{markdown:c,apiOptions:f,metadata:v}}){const u=I("apiDocsStore"),{items:l,options:o,store:w,baseSlug:r}=u,a=M(),g=$(),n=W(c,o.markdocOptions),d=i(()=>s(r),[r]),y=i(()=>d===r?l:Y(l),[l,r,d]),C=i(()=>T(n,o),[n,o]),k=i(()=>{const S=a?`${window.location.origin}${s(p.REPLAY_OAUTH2_CALLBACK)}`:void 0;let m=o.corsProxyUrl;if(m===void 0){const t=s(`${p.CORS_PROXY}/`);m=a?new URL(t,window.location.origin).toString():t}const E=o.events,h=E?Object.entries(E).reduce((t,[b,O])=>{const P=V(O);return P&&(t[b]=P),t},{}):void 0;return{...o,markdocOptions:n,oAuth2RedirectURI:S,corsProxyUrl:m,userClaims:g,...h&&{events:h},unstable_hooks:{...o.unstable_hooks,MiddlePanelHeader:()=>e.createElement(D,null)}}},[o,n,a,g]);if(!u)return e.createElement("div",null,"Something went wrong");const L=a?{collectorUrl:new URL(s(p.OTEL_TRACES),window.location.origin).toString(),disabled:!N,serviceVersion:`${H}@${process.env.REDOCLY_PORTAL_VERSION}`}:void 0;return e.createElement(K,null,e.createElement(R,{layout:f?.layout},e.createElement(U,{metadata:v})),e.createElement(_,{items:y,store:w,basePath:d,options:k,markdownAdapter:C,layout:f?.layout,telemetryConfig:L}))}const R=A(B)`
2
2
  && {
3
3
  padding-right: ${({layout:c})=>c===x.THREE_PANEL?"calc(var(--panel-gap-horizontal) * 2)":"var(--panel-gap-horizontal)"};
4
4
  }