@redocly/redoc 0.137.0-next.1 → 0.137.0-next.11

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 (359) hide show
  1. package/CHANGELOG.md +237 -0
  2. package/dist/api-schemas/otel-traces.d.ts +1359 -0
  3. package/dist/api-schemas/otel-traces.js +1 -0
  4. package/dist/cli/stats/collectors/asyncapi/index.d.ts +3 -0
  5. package/dist/cli/stats/collectors/asyncapi/index.js +1 -0
  6. package/dist/cli/stats/collectors/extension-sampling.d.ts +44 -0
  7. package/dist/cli/stats/collectors/extension-sampling.js +1 -0
  8. package/dist/cli/stats/collectors/openapi/index.js +1 -1
  9. package/dist/cli/stats/collectors/prepare-stats-walk.d.ts +10 -0
  10. package/dist/cli/stats/collectors/prepare-stats-walk.js +1 -0
  11. package/dist/cli/stats/collectors/run-stats-collector.d.ts +24 -0
  12. package/dist/cli/stats/collectors/run-stats-collector.js +1 -0
  13. package/dist/cli/stats/index.js +1 -1
  14. package/dist/client/app/hooks/useMcpData.d.ts +1 -0
  15. package/dist/client/app/hooks/useMcpData.js +1 -1
  16. package/dist/client/app/markdoc/custom-components/openapi/json-schema.js +1 -1
  17. package/dist/client/app/markdoc/custom-components/openapi/openapi-code-sample.js +1 -1
  18. package/dist/client/app/markdoc/custom-components/openapi/openapi-example.js +1 -1
  19. package/dist/client/app/markdoc/custom-components/openapi/openapi-response-sample.js +1 -1
  20. package/dist/client/app/markdoc/custom-components/openapi/replay-openapi.js +1 -1
  21. package/dist/client/app/markdoc/custom-components/openapi/use-markdown-adapter.d.ts +45 -0
  22. package/dist/client/app/markdoc/custom-components/openapi/use-markdown-adapter.js +1 -0
  23. package/dist/client/app/search/useFacets.js +1 -1
  24. package/dist/client/app/utils/loadAndNavigate.js +1 -1
  25. package/dist/client/providers/hooks.js +1 -1
  26. package/dist/client/providers/post-message/PostMessageProvider.js +1 -1
  27. package/dist/client/templates/api-docs/helpers.d.ts +4 -1
  28. package/dist/client/templates/api-docs/helpers.js +5 -1
  29. package/dist/client/templates/api-docs/template.js +8 -3
  30. package/dist/client/utils/catalog/get-next-page-param.d.ts +1 -1
  31. package/dist/client/utils/catalog/get-next-page-param.js +1 -1
  32. package/dist/compiled/svgo/svgo-node.js +32 -32
  33. package/dist/constants/l10n/langs/ar.js +1 -1
  34. package/dist/constants/l10n/langs/de.js +1 -1
  35. package/dist/constants/l10n/langs/en.js +1 -1
  36. package/dist/constants/l10n/langs/es.js +1 -1
  37. package/dist/constants/l10n/langs/fr.js +1 -1
  38. package/dist/constants/l10n/langs/hi.js +1 -1
  39. package/dist/constants/l10n/langs/it.js +1 -1
  40. package/dist/constants/l10n/langs/ja.js +1 -1
  41. package/dist/constants/l10n/langs/ko.js +1 -1
  42. package/dist/constants/l10n/langs/pl.js +1 -1
  43. package/dist/constants/l10n/langs/pt-BR.js +1 -1
  44. package/dist/constants/l10n/langs/pt.js +1 -1
  45. package/dist/constants/l10n/langs/ru.js +1 -1
  46. package/dist/constants/l10n/langs/uk.js +1 -1
  47. package/dist/constants/l10n/langs/zh.js +1 -1
  48. package/dist/server/config/env-config.d.ts +8 -0
  49. package/dist/server/config/env-schema.d.ts +20 -0
  50. package/dist/server/config/env-schemas/feature-flags.d.ts +13 -1
  51. package/dist/server/config/env-schemas/feature-flags.js +1 -1
  52. package/dist/server/config/env-schemas/search.d.ts +3 -0
  53. package/dist/server/config/env-schemas/search.js +1 -1
  54. package/dist/server/constants/common.d.ts +1 -0
  55. package/dist/server/constants/common.js +1 -1
  56. package/dist/server/constants/mcp.d.ts +5 -0
  57. package/dist/server/constants/mcp.js +1 -0
  58. package/dist/server/constants/plugins/search.d.ts +0 -2
  59. package/dist/server/constants/plugins/search.js +1 -1
  60. package/dist/server/constants/rbac.d.ts +3 -0
  61. package/dist/server/constants/rbac.js +1 -0
  62. package/dist/server/esbuild/esbuild.js +3 -3
  63. package/dist/server/esbuild/plugins/mcp-tool-handlers-resolver.js +1 -1
  64. package/dist/server/plugins/api-docs/options.js +1 -1
  65. package/dist/server/plugins/api-docs/search/create-indexer.d.ts +5 -0
  66. package/dist/server/plugins/api-docs/search/create-indexer.js +1 -0
  67. package/dist/server/plugins/api-docs/search/get-ai-search-documents.js +28 -28
  68. package/dist/server/plugins/api-docs/search/search-resolver.js +1 -1
  69. package/dist/server/plugins/{openapi-docs/is-openapi-doc.d.ts → api-docs/utils/is-api-doc.d.ts} +4 -2
  70. package/dist/server/plugins/api-docs/utils/is-api-doc.js +1 -0
  71. package/dist/server/plugins/arazzo-docs/arazzo-doc-loader.d.ts +1 -1
  72. package/dist/server/plugins/arazzo-docs/arazzo-doc-loader.js +1 -1
  73. package/dist/server/plugins/config-parser/loaders/content-slugs-loader.js +1 -1
  74. package/dist/server/plugins/dev-onboarding/template/components/EditAppDescriptionDialog.js +1 -1
  75. package/dist/server/plugins/dev-onboarding/template/components/EditAppDialog.js +1 -1
  76. package/dist/server/plugins/dev-onboarding/template/components/EditCallbackUrlDialog.js +1 -1
  77. package/dist/server/plugins/entitlements/index.js +1 -1
  78. package/dist/server/plugins/l10n/index.js +1 -1
  79. package/dist/server/plugins/lifecycle.js +2 -2
  80. package/dist/server/plugins/markdown/attribute-resolvers/resolve-link.js +1 -1
  81. package/dist/server/plugins/markdown/attribute-resolvers/resolve-open-api-ref.js +1 -1
  82. package/dist/server/plugins/markdown/html/html-jsx-attribute-mapping.js +1 -1
  83. package/dist/server/plugins/markdown/is-partial.js +1 -1
  84. package/dist/server/plugins/markdown/utils/sanitize-malformed-md-content.js +2 -2
  85. package/dist/server/plugins/mcp/auth/auth-handlers.d.ts +1 -2
  86. package/dist/server/plugins/mcp/auth/auth-handlers.js +1 -1
  87. package/dist/server/plugins/mcp/auth/token-audience-telemetry.d.ts +7 -0
  88. package/dist/server/plugins/mcp/auth/token-audience-telemetry.js +1 -0
  89. package/dist/server/plugins/mcp/auth/token-audience.d.ts +6 -0
  90. package/dist/server/plugins/mcp/auth/token-audience.js +1 -0
  91. package/dist/server/plugins/mcp/codemode/capabilities/fetch/index.js +4 -4
  92. package/dist/server/plugins/mcp/codemode/code-execution-telemetry.d.ts +3 -1
  93. package/dist/server/plugins/mcp/codemode/code-execution-telemetry.js +1 -1
  94. package/dist/server/plugins/mcp/codemode/invoke-tool.js +1 -1
  95. package/dist/server/plugins/mcp/codemode/prompts.js +1 -1
  96. package/dist/server/plugins/mcp/codemode/sandbox/polyfills/fetch-shim.d.ts +1 -1
  97. package/dist/server/plugins/mcp/codemode/sandbox/polyfills/fetch-shim.js +9 -3
  98. package/dist/server/plugins/mcp/codemode/tools/describe-tools.d.ts +1 -1
  99. package/dist/server/plugins/mcp/codemode/tools/describe-tools.js +1 -1
  100. package/dist/server/plugins/mcp/codemode/tools/execute-schema.js +1 -1
  101. package/dist/server/plugins/mcp/codemode/tools/execute.js +1 -1
  102. package/dist/server/plugins/mcp/codemode/tools/manage-credentials.d.ts +1 -0
  103. package/dist/server/plugins/mcp/codemode/tools/manage-credentials.js +2 -2
  104. package/dist/server/plugins/mcp/codemode/types.d.ts +1 -0
  105. package/dist/server/plugins/mcp/constants.d.ts +1 -1
  106. package/dist/server/plugins/mcp/constants.js +1 -1
  107. package/dist/server/plugins/mcp/custom-tools/extract-tool-definition.d.ts +13 -0
  108. package/dist/server/plugins/mcp/custom-tools/extract-tool-definition.js +1 -0
  109. package/dist/server/plugins/mcp/custom-tools/scan-custom-tools.d.ts +6 -0
  110. package/dist/server/plugins/mcp/custom-tools/scan-custom-tools.js +1 -0
  111. package/dist/server/plugins/mcp/custom-tools/validate-tool-definition.d.ts +3 -0
  112. package/dist/server/plugins/mcp/custom-tools/validate-tool-definition.js +1 -0
  113. package/dist/server/plugins/mcp/docs-mcp/tool-schemas.d.ts +2 -0
  114. package/dist/server/plugins/mcp/docs-mcp/tool-schemas.js +1 -1
  115. package/dist/server/plugins/mcp/docs-mcp/tools/core/search.js +2 -2
  116. package/dist/server/plugins/mcp/docs-mcp/tools/openapi/get-endpoints.js +1 -1
  117. package/dist/server/plugins/mcp/docs-mcp/tools/openapi/list-apis.js +1 -1
  118. package/dist/server/plugins/mcp/docs-mcp/tools/openapi/utils.js +1 -1
  119. package/dist/server/plugins/mcp/gateway-mcp/callable-apis.d.ts +10 -0
  120. package/dist/server/plugins/mcp/gateway-mcp/callable-apis.js +1 -0
  121. package/dist/server/plugins/mcp/gateway-mcp/credential-validation.d.ts +4 -0
  122. package/dist/server/plugins/mcp/gateway-mcp/credential-validation.js +1 -0
  123. package/dist/server/plugins/mcp/gateway-mcp/elicitation.d.ts +15 -5
  124. package/dist/server/plugins/mcp/gateway-mcp/elicitation.js +5 -3
  125. package/dist/server/plugins/mcp/gateway-mcp/eligibility.js +1 -1
  126. package/dist/server/plugins/mcp/gateway-mcp/fetch/fetch-audit.d.ts +2 -1
  127. package/dist/server/plugins/mcp/gateway-mcp/fetch/fetch-audit.js +1 -1
  128. package/dist/server/plugins/mcp/gateway-mcp/fetch/fetch-bridge.d.ts +10 -1
  129. package/dist/server/plugins/mcp/gateway-mcp/fetch/fetch-bridge.js +1 -1
  130. package/dist/server/plugins/mcp/gateway-mcp/fetch/upstream-detail.d.ts +7 -0
  131. package/dist/server/plugins/mcp/gateway-mcp/fetch/upstream-detail.js +1 -0
  132. package/dist/server/plugins/mcp/gateway-mcp/fetch-capability.d.ts +2 -10
  133. package/dist/server/plugins/mcp/gateway-mcp/fetch-capability.js +1 -1
  134. package/dist/server/plugins/mcp/gateway-mcp/secret-store.d.ts +16 -4
  135. package/dist/server/plugins/mcp/gateway-mcp/secret-store.js +1 -1
  136. package/dist/server/plugins/mcp/gateway-mcp/upstream-auth-scheme.d.ts +26 -1
  137. package/dist/server/plugins/mcp/gateway-mcp/upstream-auth-scheme.js +2 -1
  138. package/dist/server/plugins/mcp/gateway-mcp/upstream-auth.d.ts +12 -0
  139. package/dist/server/plugins/mcp/gateway-mcp/upstream-auth.js +1 -1
  140. package/dist/server/plugins/mcp/handlers/docs-mcp-handler.js +1 -1
  141. package/dist/server/plugins/mcp/handlers/errors.d.ts +7 -2
  142. package/dist/server/plugins/mcp/handlers/errors.js +1 -1
  143. package/dist/server/plugins/mcp/handlers/handle-mcp-request.js +1 -1
  144. package/dist/server/plugins/mcp/handlers/mcp-credentials-handler.js +1 -124
  145. package/dist/server/plugins/mcp/handlers/mcp-credentials-page.d.ts +12 -0
  146. package/dist/server/plugins/mcp/handlers/mcp-credentials-page.js +225 -0
  147. package/dist/server/plugins/mcp/index.d.ts +0 -2
  148. package/dist/server/plugins/mcp/index.js +1 -1
  149. package/dist/server/plugins/mcp/servers/docs-server.d.ts +2 -2
  150. package/dist/server/plugins/mcp/servers/docs-server.js +1 -1
  151. package/dist/server/plugins/mcp/servers/mcp-server.d.ts +2 -11
  152. package/dist/server/plugins/mcp/servers/mcp-server.js +4 -2
  153. package/dist/server/plugins/mcp/types.d.ts +32 -5
  154. package/dist/server/plugins/mcp/utils/available-sandbox-tools.d.ts +4 -0
  155. package/dist/server/plugins/mcp/utils/available-sandbox-tools.js +1 -0
  156. package/dist/server/plugins/mcp/utils/find-gated-tool-names.d.ts +12 -0
  157. package/dist/server/plugins/mcp/utils/find-gated-tool-names.js +1 -0
  158. package/dist/server/plugins/mcp/utils/mcp-client.d.ts +13 -0
  159. package/dist/server/plugins/mcp/utils/mcp-client.js +1 -0
  160. package/dist/server/plugins/mcp/utils/tool-registration.d.ts +17 -0
  161. package/dist/server/plugins/mcp/utils/tool-registration.js +1 -0
  162. package/dist/server/plugins/mcp/workers/execute-mcp-tool.d.ts +6 -1
  163. package/dist/server/plugins/mcp/workers/execute-mcp-tool.js +1 -1
  164. package/dist/server/plugins/mcp/workers/import-mcp-tool-handlers.d.ts +5 -0
  165. package/dist/server/plugins/mcp/workers/import-mcp-tool-handlers.js +1 -0
  166. package/dist/server/plugins/mcp/workers/mcp-tool-telemetry.d.ts +6 -11
  167. package/dist/server/plugins/mcp/workers/mcp-tool-telemetry.js +1 -1
  168. package/dist/server/plugins/mcp/workers/tool-file-system.d.ts +6 -0
  169. package/dist/server/plugins/mcp/workers/tool-file-system.js +1 -0
  170. package/dist/server/plugins/search/ai-indexer/prepare-semantic-documents.d.ts +4 -2
  171. package/dist/server/plugins/search/ai-indexer/prepare-semantic-documents.js +1 -3
  172. package/dist/server/plugins/search/engines/flexsearch/index.js +1 -1
  173. package/dist/server/plugins/search/engines/flexsearch/search-index.d.ts +8 -4
  174. package/dist/server/plugins/search/engines/flexsearch/search-index.js +1 -1
  175. package/dist/server/plugins/search/engines/typesense/index.js +1 -1
  176. package/dist/server/plugins/search/index.js +1 -1
  177. package/dist/server/plugins/search/llmstxt/build-page-llms-txt-md.d.ts +4 -0
  178. package/dist/server/plugins/search/llmstxt/build-page-llms-txt-md.js +3 -0
  179. package/dist/server/plugins/search/llmstxt/create-llms-txt-generator.d.ts +4 -0
  180. package/dist/server/plugins/search/llmstxt/create-llms-txt-generator.js +1 -0
  181. package/dist/server/plugins/search/llmstxt/get-llms-txt-exclude-matcher.d.ts +4 -0
  182. package/dist/server/plugins/search/llmstxt/get-llms-txt-exclude-matcher.js +1 -0
  183. package/dist/server/plugins/search/llmstxt/index.d.ts +2 -2
  184. package/dist/server/plugins/search/llmstxt/is-included-in-llms-txt.d.ts +6 -0
  185. package/dist/server/plugins/search/llmstxt/is-included-in-llms-txt.js +1 -0
  186. package/dist/server/plugins/search/utils.d.ts +2 -1
  187. package/dist/server/plugins/search/utils.js +2 -2
  188. package/dist/server/sandbox/constants/sandbox.d.ts +4 -1
  189. package/dist/server/sandbox/constants/sandbox.js +1 -1
  190. package/dist/server/sandbox/sandbox.js +2 -2
  191. package/dist/server/sandbox/utils/returns-from-top-level.d.ts +4 -0
  192. package/dist/server/sandbox/utils/returns-from-top-level.js +1 -0
  193. package/dist/server/store.d.ts +2 -0
  194. package/dist/server/store.js +1 -1
  195. package/dist/server/types/plugins/common.d.ts +5 -0
  196. package/dist/server/types/plugins/search.d.ts +7 -2
  197. package/dist/server/types/web-server.d.ts +8 -0
  198. package/dist/server/utils/envs/get-api-route-allowed-env-variables.js +1 -1
  199. package/dist/server/utils/get-route-ai-documents-store.d.ts +5 -0
  200. package/dist/server/utils/get-route-ai-documents-store.js +1 -0
  201. package/dist/server/utils/get-route-static-data.d.ts +4 -0
  202. package/dist/server/utils/get-route-static-data.js +1 -0
  203. package/dist/server/utils/globs.d.ts +4 -0
  204. package/dist/server/utils/globs.js +1 -1
  205. package/dist/server/utils/llmstxt/agent-feedback-llms-footer.js +1 -1
  206. package/dist/server/utils/llmstxt/resolve-llms-txt-md.d.ts +10 -0
  207. package/dist/server/utils/llmstxt/resolve-llms-txt-md.js +1 -0
  208. package/dist/server/utils/rbac/can-anonymous-access-mcp-feature.d.ts +3 -0
  209. package/dist/server/utils/rbac/can-anonymous-access-mcp-feature.js +1 -0
  210. package/dist/server/utils/rbac/should-handle-mcp-auth.d.ts +2 -0
  211. package/dist/server/utils/rbac/should-handle-mcp-auth.js +1 -0
  212. package/dist/server/utils/rbac.js +1 -1
  213. package/dist/server/utils/search/highlight-text-for-search.js +1 -1
  214. package/dist/server/web-server/auth.d.ts +13 -2
  215. package/dist/server/web-server/auth.js +3 -3
  216. package/dist/server/web-server/dev-server.js +1 -1
  217. package/dist/server/web-server/handle-api-route-request.js +1 -1
  218. package/dist/server/web-server/middleware/ensureSearchData.js +1 -1
  219. package/dist/server/web-server/routes/ask-ai.d.ts +1 -0
  220. package/dist/server/web-server/routes/ask-ai.js +1 -1
  221. package/dist/server/web-server/routes/auth.js +1 -1
  222. package/dist/server/web-server/routes/dynamic-route.d.ts +2 -1
  223. package/dist/server/web-server/routes/dynamic-route.js +1 -1
  224. package/dist/server/web-server/routes/error.js +1 -1
  225. package/dist/server/web-server/routes/helpers/resolve-ui-locales-for-idp-login.js +1 -1
  226. package/dist/server/web-server/routes/index.d.ts +2 -1
  227. package/dist/server/web-server/routes/index.js +1 -1
  228. package/dist/server/web-server/routes/llms-txt.d.ts +4 -0
  229. package/dist/server/web-server/routes/llms-txt.js +1 -0
  230. package/dist/server/web-server/routes/mcp-routes/agent-card.js +1 -1
  231. package/dist/server/web-server/routes/mcp-routes/mcp-server-card.js +1 -1
  232. package/dist/server/web-server/routes/otel/otel.js +1 -1
  233. package/dist/server/web-server/routes/page-data.js +1 -1
  234. package/dist/server/web-server/routes/resolve-route.js +1 -1
  235. package/dist/server/web-server/utils/get-request-origin.d.ts +2 -0
  236. package/dist/server/web-server/utils/get-request-origin.js +1 -1
  237. package/dist/server/web-server/utils/prepare-list-response.d.ts +2 -4
  238. package/dist/server/web-server/utils/prepare-list-response.js +1 -1
  239. package/dist/server/web-server/utils.d.ts +1 -1
  240. package/dist/server/web-server/utils.js +1 -1
  241. package/dist/server/workers/mcp-tool-worker-pool.d.ts +1 -0
  242. package/dist/server/workers/mcp-tool-worker-pool.js +1 -1
  243. package/dist/server/workers/mcp-tool-worker.js +1 -1
  244. package/dist/server/workers/types.d.ts +9 -2
  245. package/dist/server/workers/worker-pool.d.ts +1 -0
  246. package/dist/server/workers/worker-pool.js +1 -1
  247. package/dist/types/global-data.d.ts +1 -0
  248. package/dist/utils/guards/is-plain-object.d.ts +19 -0
  249. package/dist/utils/guards/is-plain-object.js +1 -0
  250. package/package.json +14 -17
  251. package/dist/client/templates/asyncapi-docs/helpers.d.ts +0 -12
  252. package/dist/client/templates/asyncapi-docs/helpers.js +0 -1
  253. package/dist/client/templates/asyncapi-docs/template.d.ts +0 -15
  254. package/dist/client/templates/asyncapi-docs/template.js +0 -9
  255. package/dist/client/templates/openapi-docs/helpers.d.ts +0 -18
  256. package/dist/client/templates/openapi-docs/helpers.js +0 -5
  257. package/dist/client/templates/openapi-docs/template.d.ts +0 -6
  258. package/dist/client/templates/openapi-docs/template.js +0 -14
  259. package/dist/server/esbuild/plugins/api-docs-module-replacer/empty-check.d.ts +0 -9
  260. package/dist/server/esbuild/plugins/api-docs-module-replacer/empty-check.js +0 -1
  261. package/dist/server/esbuild/plugins/api-docs-module-replacer/empty-overlay.d.ts +0 -2
  262. package/dist/server/esbuild/plugins/api-docs-module-replacer/empty-overlay.js +0 -1
  263. package/dist/server/esbuild/plugins/api-docs-module-replacer/index.d.ts +0 -6
  264. package/dist/server/esbuild/plugins/api-docs-module-replacer/index.js +0 -1
  265. package/dist/server/esbuild/plugins/openapi-docs-module-replacer/empty-check.d.ts +0 -8
  266. package/dist/server/esbuild/plugins/openapi-docs-module-replacer/empty-check.js +0 -1
  267. package/dist/server/esbuild/plugins/openapi-docs-module-replacer/empty-overlay.d.ts +0 -2
  268. package/dist/server/esbuild/plugins/openapi-docs-module-replacer/empty-overlay.js +0 -1
  269. package/dist/server/esbuild/plugins/openapi-docs-module-replacer/empty-use-license-key.d.ts +0 -5
  270. package/dist/server/esbuild/plugins/openapi-docs-module-replacer/empty-use-license-key.js +0 -1
  271. package/dist/server/esbuild/plugins/openapi-docs-module-replacer/index.d.ts +0 -6
  272. package/dist/server/esbuild/plugins/openapi-docs-module-replacer/index.js +0 -1
  273. package/dist/server/esbuild/plugins/openapi-docs-module-replacer/loadAndBundleSpec.mock.d.ts +0 -3
  274. package/dist/server/esbuild/plugins/openapi-docs-module-replacer/loadAndBundleSpec.mock.js +0 -1
  275. package/dist/server/plugins/api-docs/search/search-indexer.d.ts +0 -9
  276. package/dist/server/plugins/api-docs/search/search-indexer.js +0 -1
  277. package/dist/server/plugins/asyncapi-docs/asyncapi-doc-loader.d.ts +0 -18
  278. package/dist/server/plugins/asyncapi-docs/asyncapi-doc-loader.js +0 -5
  279. package/dist/server/plugins/asyncapi-docs/get-server-props.d.ts +0 -4
  280. package/dist/server/plugins/asyncapi-docs/get-server-props.js +0 -1
  281. package/dist/server/plugins/asyncapi-docs/get-template-path.d.ts +0 -2
  282. package/dist/server/plugins/asyncapi-docs/get-template-path.js +0 -1
  283. package/dist/server/plugins/asyncapi-docs/index.d.ts +0 -3
  284. package/dist/server/plugins/asyncapi-docs/index.js +0 -1
  285. package/dist/server/plugins/asyncapi-docs/is-asyncapi-doc.d.ts +0 -3
  286. package/dist/server/plugins/asyncapi-docs/is-asyncapi-doc.js +0 -1
  287. package/dist/server/plugins/asyncapi-docs/search/get-ai-search-documents.d.ts +0 -9
  288. package/dist/server/plugins/asyncapi-docs/search/get-ai-search-documents.js +0 -56
  289. package/dist/server/plugins/asyncapi-docs/search/schema-processor.d.ts +0 -8
  290. package/dist/server/plugins/asyncapi-docs/search/schema-processor.js +0 -1
  291. package/dist/server/plugins/asyncapi-docs/search/search-facets.d.ts +0 -8
  292. package/dist/server/plugins/asyncapi-docs/search/search-facets.js +0 -1
  293. package/dist/server/plugins/asyncapi-docs/search/search-resolver.d.ts +0 -5
  294. package/dist/server/plugins/asyncapi-docs/search/search-resolver.js +0 -1
  295. package/dist/server/plugins/asyncapi-docs/store-definition-bundles.d.ts +0 -4
  296. package/dist/server/plugins/asyncapi-docs/store-definition-bundles.js +0 -1
  297. package/dist/server/plugins/graphql-docs/constants.d.ts +0 -2
  298. package/dist/server/plugins/graphql-docs/constants.js +0 -1
  299. package/dist/server/plugins/graphql-docs/get-template-path.d.ts +0 -2
  300. package/dist/server/plugins/graphql-docs/get-template-path.js +0 -1
  301. package/dist/server/plugins/graphql-docs/graphql-doc-loader.d.ts +0 -17
  302. package/dist/server/plugins/graphql-docs/graphql-doc-loader.js +0 -1
  303. package/dist/server/plugins/graphql-docs/index.d.ts +0 -4
  304. package/dist/server/plugins/graphql-docs/index.js +0 -1
  305. package/dist/server/plugins/graphql-docs/is-graphql-doc.d.ts +0 -2
  306. package/dist/server/plugins/graphql-docs/is-graphql-doc.js +0 -1
  307. package/dist/server/plugins/graphql-docs/search/ai/get-ai-search-document.d.ts +0 -17
  308. package/dist/server/plugins/graphql-docs/search/ai/get-ai-search-document.js +0 -4
  309. package/dist/server/plugins/graphql-docs/search/ai/utils.d.ts +0 -14
  310. package/dist/server/plugins/graphql-docs/search/ai/utils.js +0 -36
  311. package/dist/server/plugins/graphql-docs/search/search-facets.d.ts +0 -8
  312. package/dist/server/plugins/graphql-docs/search/search-facets.js +0 -1
  313. package/dist/server/plugins/graphql-docs/search/search-resolver.d.ts +0 -5
  314. package/dist/server/plugins/graphql-docs/search/search-resolver.js +0 -1
  315. package/dist/server/plugins/graphql-docs/spec-download.api.d.ts +0 -3
  316. package/dist/server/plugins/graphql-docs/spec-download.api.js +0 -1
  317. package/dist/server/plugins/graphql-docs/template/GraphQLDocs.d.ts +0 -5
  318. package/dist/server/plugins/graphql-docs/template/GraphQLDocs.js +0 -4
  319. package/dist/server/plugins/graphql-docs/types.d.ts +0 -40
  320. package/dist/server/plugins/graphql-docs/types.js +0 -0
  321. package/dist/server/plugins/openapi-docs/ai-search-indexer.d.ts +0 -14
  322. package/dist/server/plugins/openapi-docs/ai-search-indexer.js +0 -1
  323. package/dist/server/plugins/openapi-docs/decorators.d.ts +0 -25
  324. package/dist/server/plugins/openapi-docs/decorators.js +0 -1
  325. package/dist/server/plugins/openapi-docs/format-bundle-error.d.ts +0 -6
  326. package/dist/server/plugins/openapi-docs/format-bundle-error.js +0 -5
  327. package/dist/server/plugins/openapi-docs/get-server-props.d.ts +0 -4
  328. package/dist/server/plugins/openapi-docs/get-server-props.js +0 -1
  329. package/dist/server/plugins/openapi-docs/get-template-path.d.ts +0 -2
  330. package/dist/server/plugins/openapi-docs/get-template-path.js +0 -1
  331. package/dist/server/plugins/openapi-docs/index.d.ts +0 -3
  332. package/dist/server/plugins/openapi-docs/index.js +0 -1
  333. package/dist/server/plugins/openapi-docs/is-openapi-doc.js +0 -1
  334. package/dist/server/plugins/openapi-docs/load-definition.d.ts +0 -31
  335. package/dist/server/plugins/openapi-docs/load-definition.js +0 -3
  336. package/dist/server/plugins/openapi-docs/openapi-search-builder.d.ts +0 -24
  337. package/dist/server/plugins/openapi-docs/openapi-search-builder.js +0 -1
  338. package/dist/server/plugins/openapi-docs/search/get-ai-search-documents.d.ts +0 -18
  339. package/dist/server/plugins/openapi-docs/search/get-ai-search-documents.js +0 -94
  340. package/dist/server/plugins/openapi-docs/search/search-facets.d.ts +0 -11
  341. package/dist/server/plugins/openapi-docs/search/search-facets.js +0 -1
  342. package/dist/server/plugins/openapi-docs/search/search-resolver.d.ts +0 -5
  343. package/dist/server/plugins/openapi-docs/search/search-resolver.js +0 -1
  344. package/dist/server/plugins/openapi-docs/search-indexer.d.ts +0 -17
  345. package/dist/server/plugins/openapi-docs/search-indexer.js +0 -1
  346. package/dist/server/plugins/openapi-docs/spec-download.api.d.ts +0 -4
  347. package/dist/server/plugins/openapi-docs/spec-download.api.js +0 -1
  348. package/dist/server/plugins/openapi-docs/store-definition-bundles.d.ts +0 -4
  349. package/dist/server/plugins/openapi-docs/store-definition-bundles.js +0 -1
  350. package/dist/server/plugins/openapi-docs/types.d.ts +0 -17
  351. package/dist/server/plugins/openapi-docs/types.js +0 -0
  352. package/dist/server/plugins/openapi-docs/utils.d.ts +0 -25
  353. package/dist/server/plugins/openapi-docs/utils.js +0 -1
  354. /package/dist/client/templates/{openapi-docs → api-docs}/mock-server-config.d.ts +0 -0
  355. /package/dist/client/templates/{openapi-docs → api-docs}/mock-server-config.js +0 -0
  356. /package/dist/{server/plugins → markdoc}/helpers/parse-partials.d.ts +0 -0
  357. /package/dist/{server/plugins → markdoc}/helpers/parse-partials.js +0 -0
  358. /package/dist/server/plugins/{openapi-docs → api-docs/utils}/ast-utils.d.ts +0 -0
  359. /package/dist/server/plugins/{openapi-docs → api-docs/utils}/ast-utils.js +0 -0
@@ -0,0 +1 @@
1
+ import{z as r}from"zod";const a=r.object({key:r.string(),value:r.record(r.unknown())}).passthrough(),t=r.object({name:r.string(),attributes:r.array(a)}).passthrough(),s=r.object({resource:r.object({attributes:r.array(a)}).passthrough(),scopeSpans:r.array(r.object({spans:r.array(t)}).passthrough())}).passthrough(),o=r.object({resourceSpans:r.array(s).optional()}).passthrough();export{o as otelTracesRequestSchema};
@@ -0,0 +1,3 @@
1
+ import type { LifecycleContext } from '../../../../server/types';
2
+ export declare function collectAsyncapiDocumentsStatistics(lifecycleContext: LifecycleContext, telemetryEnabled: boolean): Promise<void>;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ import{normalizeVisitors as l,StatsAsync2 as m,StatsAsync3 as p,walkDocument as y}from"@redocly/openapi-core";import{telemetry as u}from"../../../telemetry/index.js";import{createExtensionsVisitor as x,toCollectedExtensions as f}from"../extension-sampling.js";import{prepareStatsWalk as S}from"../prepare-stats-walk.js";import{runStatsCollector as h}from"../run-stats-collector.js";function w(){return{refs:{metric:"References",total:0,color:"red",items:new Set},externalDocs:{metric:"External Documents",total:0,color:"magenta"},schemas:{metric:"Schemas",total:0,color:"white"},parameters:{metric:"Parameters",total:0,color:"yellow",items:new Set},channels:{metric:"Channels",total:0,color:"green"},operations:{metric:"Operations",total:0,color:"yellow"},tags:{metric:"Tags",total:0,color:"white",items:new Set},xExtensions:{metric:"Vendor Extensions",total:0,color:"cyan"}}}async function V(s,e){await h(s,e,{type:"asyncapi",label:"AsyncAPI",event:"com.redocly.stats.asyncapi",object:"asyncapiDefinition",computeStats:d,send:(o,a)=>u.sendStatsAsyncapiCollectedMessage([{...a,...o}])})}async function d(s){const{specVersion:e,types:o,rootType:a,document:n,resolvedRefMap:c}=await S(s.document),t=w(),r={},i={problems:[],specVersion:e,visitorsData:{}};return y({rootType:a,normalizedVisitors:l([{severity:"warn",ruleId:"asyncapi_stats",visitor:e==="async2"?m(t):p(t)},{severity:"warn",ruleId:"extension_usage",visitor:x(r)}],o),resolvedRefMap:c,document:n,ctx:i}),{path:s.relativePath,refs:t.refs.total,externalDocs:t.externalDocs.total,schemas:t.schemas.total,parameters:t.parameters.total,channels:t.channels.total,operations:t.operations.total,tags:t.tags.total,version:e,xExtensions:f(r)}}export{V as collectAsyncapiDocumentsStatistics};
@@ -0,0 +1,44 @@
1
+ import type { UserContext } from '@redocly/openapi-core';
2
+ export type ExtensionAccumulator = {
3
+ count: number;
4
+ props: Record<string, Set<string>>;
5
+ };
6
+ export type ExtensionsAccumulator = Record<string, ExtensionAccumulator>;
7
+ export type CollectedExtension = {
8
+ count: number;
9
+ props: Record<string, string>;
10
+ };
11
+ export declare function createExtensionsVisitor(accumulator: ExtensionsAccumulator): {
12
+ any: {
13
+ enter(node: unknown): void;
14
+ };
15
+ SpecExtension: {
16
+ enter(value: unknown, ctx: UserContext): void;
17
+ };
18
+ XCodeSampleList: {
19
+ enter(value: unknown, ctx: UserContext): void;
20
+ };
21
+ ExamplesMap: {
22
+ enter(value: unknown, ctx: UserContext): void;
23
+ };
24
+ EnumDescriptions: {
25
+ enter(value: unknown, ctx: UserContext): void;
26
+ };
27
+ TagGroups: {
28
+ enter(value: unknown, ctx: UserContext): void;
29
+ };
30
+ Logo: {
31
+ enter(value: unknown, ctx: UserContext): void;
32
+ };
33
+ XServerList: {
34
+ enter(value: unknown, ctx: UserContext): void;
35
+ };
36
+ XUsePkce: {
37
+ enter(value: unknown, ctx: UserContext): void;
38
+ };
39
+ WebhooksMap: {
40
+ enter(value: unknown, ctx: UserContext): void;
41
+ };
42
+ };
43
+ export declare function toCollectedExtensions(accumulator: ExtensionsAccumulator): Record<string, CollectedExtension> | undefined;
44
+ //# sourceMappingURL=extension-sampling.d.ts.map
@@ -0,0 +1 @@
1
+ import{isRedocExtension as S}from"@redocly/api-docs/lib/utils/extract-extensions.js";import{REDOCLY_TEAMS_RBAC as O}from"@redocly/config";import{isRef as m}from"@redocly/openapi-core";const u=40,g=20,R=20,f="$value",h="$keys",E="<truncated>",a="<masked>",x=new Set(["x-metadata","x-enumDescriptions","x-webhooks","x-examples"]),d="x-rbac",P=/key|token|secret|password|credential|session|bearer|auth|email|phone|contact|url|uri|host|domain|address|location/i,j=/^(?=.*\d)[A-Za-z0-9+/=_-]{16,}$/,_=/\S@\S+\.\S/,y=/:\/\//;function K(t){const n={enter(r,o){if(m(o.parent))return;const s=o.key.toString();S(s)&&A(t,s,r)}};return{any:{enter(r){if(!i(r))return;const o=r[O];o!==void 0&&A(t,d,o)}},SpecExtension:n,XCodeSampleList:n,ExamplesMap:n,EnumDescriptions:n,TagGroups:n,Logo:n,XServerList:n,XUsePkce:n,WebhooksMap:n}}function w(t){const n=Object.fromEntries(Object.entries(t).map(([e,{count:r,props:o}])=>[e,{count:r,props:Object.fromEntries(Object.entries(o).map(([s,c])=>[s,[...c].sort().join(", ")]))}]));return Object.keys(n).length>0?n:void 0}function A(t,n,e){const r=t[n]??={count:0,props:{}};if(r.count++,n===d){L(r.props,e);return}if(x.has(n)){l(r.props,e);return}for(const[o,s]of k(e)){const c=P.test(o)?a:b(s);p(r.props,T(o),c)}}function l(t,n){if(i(n))for(const[e,r]of Object.entries(n))p(t,h,`${N(e)}:${X(r)}`)}function L(t,n){if(i(n))for(const e of Object.values(n))p(t,f,b(e))}function X(t){return t===null?"null":Array.isArray(t)?"array":typeof t}function k(t){return i(t)?Object.entries(t):Array.isArray(t)?t.flatMap(n=>i(n)?Object.entries(n):[[f,n]]):[[f,t]]}function b(t){return t===null?"<null>":typeof t=="boolean"||typeof t=="number"?String(t):typeof t=="string"?j.test(t)||_.test(t)||y.test(t)?a:t.length<=u?t:`<string:${t.length}>`:Array.isArray(t)?`<array:${t.length}>`:i(t)?"$ref"in t?"<ref>":"<object>":"<unknown>"}function N(t){return _.test(t)||y.test(t)?a:t.length<=u?t:`<string:${t.length}>`}function p(t,n,e){!(n in t)&&Object.keys(t).length>=R&&(n=E),M(t[n]??=new Set,e)}function M(t,n){t.has(n)||t.has(E)||t.add(t.size>=g?E:n)}function T(t){return t.replace(/\./g,"_").replace(/([a-z0-9])([A-Z])/g,"$1_$2").toLowerCase()}function i(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}export{K as createExtensionsVisitor,w as toCollectedExtensions};
@@ -1 +1 @@
1
- import{detectSpec as u,getTypes as d,normalizeTypes as h,normalizeVisitors as w,resolveDocument as y,BaseResolver as D,StatsOAS as S,walkDocument as g}from"@redocly/openapi-core";import{logger as m}from"../../../../server/tools/notifiers/logger.js";import{envConfig as I}from"../../../../server/config/env-config.js";import{telemetryTraceStep as O}from"../../../telemetry/helpers/trace-step.js";import{telemetry as b}from"../../../telemetry/index.js";import{computeOas32Stats as v}from"./oas32.js";const t={refs:{metric:"References",total:0,color:"red",items:new Set},externalDocs:{metric:"External Documents",total:0,color:"magenta"},schemas:{metric:"Schemas",total:0,color:"white"},parameters:{metric:"Parameters",total:0,color:"yellow",items:new Set},links:{metric:"Links",total:0,color:"cyan",items:new Set},pathItems:{metric:"Path Items",total:0,color:"green"},webhooks:{metric:"Webhooks",total:0,color:"green"},operations:{metric:"Operations",total:0,color:"yellow"},tags:{metric:"Tags",total:0,color:"white",items:new Set}};async function _(n,s){await O("com.redocly.stats.openapi",async()=>{m.info("OpenAPI collector: start processing documents...");const e=(await n.cache.load(".","api-docs")).data,a=[];for(const r of e){if(r.type!=="openapi"||r.isVirtual)continue;const o=await k(r);a.push(o),b.sendStatsOpenapiCollectedMessage([{id:o.path,object:"openapiDefinition",uri:`urn:redocly:realm:cli:openapiDefinition:${o.path}`,...o,projectBuildId:I.PROJECT_BUILD_ID||""}])}s||console.table(a),m.info("OpenAPI collector: openapi documents processing completed.")})}async function k(n){const s=n.document,e=u(s),a=h(d(e)),r=w([{severity:"warn",ruleId:"openapi_stats",visitor:S(t)}],a),o={problems:[],specVersion:e,visitorsData:{}},c={source:{absoluteRef:""},parsed:s},i=a.Root;if(!i)throw new Error("Root type not found in OpenAPI spec types");const f=await y({rootDocument:c,rootType:i,externalRefResolver:new D});g({rootType:i,normalizedVisitors:r,resolvedRefMap:f,document:c,ctx:o});const l={path:n.relativePath,refs:t.refs.total,externalDocs:t.externalDocs.total,schemas:t.schemas.total,parameters:t.parameters.total,links:t.links.total,pathItems:t.pathItems.total,webhooks:t.webhooks.total,operations:t.operations.total,tags:t.tags.total,version:e};if(e==="oas3_2"){const p=v(s);p&&Object.assign(l,p)}return l}export{_ as collectOpenapiDocumentsStatistics};
1
+ import{normalizeVisitors as p,StatsOAS as u,walkDocument as h}from"@redocly/openapi-core";import{telemetry as w}from"../../../telemetry/index.js";import{createExtensionsVisitor as f,toCollectedExtensions as x}from"../extension-sampling.js";import{prepareStatsWalk as S}from"../prepare-stats-walk.js";import{runStatsCollector as y}from"../run-stats-collector.js";import{computeOas32Stats as d}from"./oas32.js";function g(){return{refs:{metric:"References",total:0,color:"red",items:new Set},externalDocs:{metric:"External Documents",total:0,color:"magenta"},schemas:{metric:"Schemas",total:0,color:"white"},parameters:{metric:"Parameters",total:0,color:"yellow",items:new Set},links:{metric:"Links",total:0,color:"cyan",items:new Set},pathItems:{metric:"Path Items",total:0,color:"green"},webhooks:{metric:"Webhooks",total:0,color:"green"},operations:{metric:"Operations",total:0,color:"yellow"},tags:{metric:"Tags",total:0,color:"white",items:new Set},xExtensions:{metric:"Vendor Extensions",total:0,color:"cyan"}}}async function A(e,o){await y(e,o,{type:"openapi",label:"OpenAPI",event:"com.redocly.stats.openapi",object:"openapiDefinition",computeStats:k,send:(s,a)=>w.sendStatsOpenapiCollectedMessage([{...a,...s}])})}async function k(e){const{specVersion:o,types:s,rootType:a,document:i,resolvedRefMap:l}=await S(e.document),t=g(),r={},m={problems:[],specVersion:o,visitorsData:{}};h({rootType:a,normalizedVisitors:p([{severity:"warn",ruleId:"openapi_stats",visitor:u(t)},{severity:"warn",ruleId:"extension_usage",visitor:f(r)}],s),resolvedRefMap:l,document:i,ctx:m});const n={path:e.relativePath,refs:t.refs.total,externalDocs:t.externalDocs.total,schemas:t.schemas.total,parameters:t.parameters.total,links:t.links.total,pathItems:t.pathItems.total,webhooks:t.webhooks.total,operations:t.operations.total,tags:t.tags.total,version:o,xExtensions:x(r)};if(o==="oas3_2"){const c=d(e.document);c&&Object.assign(n,c)}return n}export{A as collectOpenapiDocumentsStatistics};
@@ -0,0 +1,10 @@
1
+ import type { Document, NormalizedNodeType, ResolvedRefMap, SpecVersion } from '@redocly/openapi-core';
2
+ export type PreparedStatsWalk = {
3
+ specVersion: SpecVersion;
4
+ types: Record<string, NormalizedNodeType>;
5
+ rootType: NormalizedNodeType;
6
+ document: Document;
7
+ resolvedRefMap: ResolvedRefMap;
8
+ };
9
+ export declare function prepareStatsWalk(parsed: unknown): Promise<PreparedStatsWalk>;
10
+ //# sourceMappingURL=prepare-stats-walk.d.ts.map
@@ -0,0 +1 @@
1
+ import{BaseResolver as c,detectSpec as p,getTypes as a,normalizeTypes as u,resolveDocument as i,Source as l}from"@redocly/openapi-core";async function f(t){const e=p(t),n=u(a(e)),o=n.Root;if(!o)throw new Error(`Root type not found in ${e} spec types`);const r={source:new l("",""),parsed:t},s=await i({rootDocument:r,rootType:o,externalRefResolver:new c});return{specVersion:e,types:n,rootType:o,document:r,resolvedRefMap:s}}export{f as prepareStatsWalk};
@@ -0,0 +1,24 @@
1
+ import type { EventType } from '@redocly/realm-asyncapi-sdk/cli-telemetry';
2
+ import type { CollectedExtension } from './extension-sampling.js';
3
+ import type { BundledApiDefinition } from '../../../server/plugins/api-docs/loader.js';
4
+ import type { LifecycleContext } from '../../../server/types';
5
+ export type CollectedDefinitionBase<TObject extends string = string> = {
6
+ id: string;
7
+ uri: string;
8
+ projectBuildId: string;
9
+ object: TObject;
10
+ };
11
+ export type CollectedStats = {
12
+ path: string;
13
+ xExtensions?: Record<string, CollectedExtension>;
14
+ };
15
+ export type StatsCollector<TStats extends CollectedStats, TObject extends string = string> = {
16
+ type: BundledApiDefinition['type'];
17
+ label: string;
18
+ event: EventType;
19
+ object: TObject;
20
+ computeStats: (definition: BundledApiDefinition) => Promise<TStats>;
21
+ send: (stats: TStats, base: CollectedDefinitionBase<TObject>) => void;
22
+ };
23
+ export declare function runStatsCollector<TStats extends CollectedStats, TObject extends string>(lifecycleContext: LifecycleContext, telemetryEnabled: boolean, { type, label, event, object, computeStats, send }: StatsCollector<TStats, TObject>): Promise<void>;
24
+ //# sourceMappingURL=run-stats-collector.d.ts.map
@@ -0,0 +1 @@
1
+ import{logger as u}from"../../../server/tools/notifiers/logger.js";import{envConfig as d}from"../../../server/config/env-config.js";import{telemetryTraceStep as g}from"../../telemetry/helpers/trace-step.js";async function C(o,s,{type:t,label:e,event:c,object:r,computeStats:p,send:a}){await g(c,async()=>{u.info(`${e} collector: start processing documents...`);const f=(await o.cache.load(".","api-docs")).data.filter(n=>n.type===t&&!n.isVirtual),l=[];for(const n of f){let i;try{i=await p(n)}catch(m){u.warn(`${e} collector: skipped ${n.relativePath}: ${m instanceof Error?m.message:String(m)}`);continue}l.push(i),a(i,{id:i.path,uri:`urn:redocly:realm:cli:${r}:${i.path}`,projectBuildId:d.PROJECT_BUILD_ID||"",object:r})}s||h(l),u.info(`${e} collector: ${t} documents processing completed.`)})}function h(o){if(o.length===0)return;console.table(o.map(({xExtensions:t,...e})=>({...e,xExtensions:Object.keys(t||{}).length})));const s=o.flatMap(({path:t,xExtensions:e})=>Object.entries(e||{}).flatMap(([c,{count:r,props:p}])=>{const a=Object.entries(p);return a.length>0?a.map(([f,l])=>({path:t,extension:c,count:r,prop:f,values:l})):[{path:t,extension:c,count:r,prop:"",values:""}]}));s.length>0&&console.table(s)}export{C as runStatsCollector};
@@ -1 +1 @@
1
- import{initPlugins as m}from"../../server/plugins/lifecycle.js";import{configParserPlugin as c}from"../../server/plugins/config-parser/index.js";import{apiDocsPlugin as s}from"../../server/plugins/api-docs/index.js";import{shutdowner as n}from"../../server/tools/shutdowner.js";import{PORTAL_VERSION as l}from"../../server/version.js";import{collectOpenapiDocumentsStatistics as p}from"./collectors/openapi/index.js";import{collectPageSlugsStatistics as f}from"./collectors/page-slugs/index.js";import{telemetry as y}from"../telemetry/index.js";import{telemetryTraceStep as u}from"../telemetry/helpers/trace-step.js";async function h(o){const{"project-dir":e,telemetry:t,verbose:r}=o;y.initialize(l,t,r),await u("com.redocly.stats.started",async()=>{const a=[c,s],{lifecycleContext:i}=await m({contentDir:e},a);await p(i,t),await f(i,t)}),await n.exitWithCode(0)}export{h as stats};
1
+ import{initPlugins as c}from"../../server/plugins/lifecycle.js";import{configParserPlugin as m}from"../../server/plugins/config-parser/index.js";import{apiDocsPlugin as s}from"../../server/plugins/api-docs/index.js";import{shutdowner as n}from"../../server/tools/shutdowner.js";import{PORTAL_VERSION as l}from"../../server/version.js";import{collectAsyncapiDocumentsStatistics as p}from"./collectors/asyncapi/index.js";import{collectOpenapiDocumentsStatistics as f}from"./collectors/openapi/index.js";import{collectPageSlugsStatistics as y}from"./collectors/page-slugs/index.js";import{telemetry as u}from"../telemetry/index.js";import{telemetryTraceStep as w}from"../telemetry/helpers/trace-step.js";async function A(o){const{"project-dir":e,telemetry:t,verbose:r}=o;u.initialize(l,t,r),await w("com.redocly.stats.started",async()=>{const a=[m,s],{lifecycleContext:i}=await c({contentDir:e},a);await f(i,t),await p(i,t),await y(i,t)}),await n.exitWithCode(0)}export{A as stats};
@@ -2,6 +2,7 @@ export declare function useMcpData(): {
2
2
  docs: {
3
3
  enabled: boolean;
4
4
  name: string | undefined;
5
+ publicEndpoint: boolean;
5
6
  };
6
7
  };
7
8
  //# sourceMappingURL=useMcpData.d.ts.map
@@ -1 +1 @@
1
- import{useGlobalData as e}from"../hooks";function n(){const{mcpData:a}=e();return{docs:{enabled:!!a?.docs?.enabled,name:a?.docs?.name}}}export{n as useMcpData};
1
+ import{useGlobalData as n}from"../hooks";function e(){const{mcpData:o}=n();return{docs:{enabled:!!o?.docs?.enabled,name:o?.docs?.name,publicEndpoint:!!o?.docs?.publicEndpoint}}}export{e as useMcpData};
@@ -1 +1 @@
1
- import{MarkdownAdapterProvider as l,RedocSchema as h,StoreProvider as f,createMarkdocAdapter as k,markdocParser as u}from"@redocly/api-docs";import*as e from"react";import{Admonition as E}from"@redocly/theme/markdoc/components/Admonition/Admonition";import{MarkdownLink as v}from"@redocly/theme/markdoc/components/MarkdownLink/MarkdownLink";import{link as A}from"../../../../../markdoc/nodes/index.js";import{OpenApiComponentWrap as P}from"../styled.elements";const a={nodes:{link:A},components:{MarkdownLink:v}};function S(m){const{options:s,title:t,schemaResolved:o,schemaResolvedErrors:n,schema:r}=m,i=e.useMemo(()=>k(a),[]);if(r||o){const c={openapi:"3.0.0",info:{version:"1",description:"test",title:"test"},paths:{},"x-root":o?.components?.schemas?.__root||r,components:{schemas:{...o?.components?.schemas}}};return e.createElement(P,{"data-testid":"json-schema"},t?e.createElement("h3",null,t):null,e.createElement(f,{options:{...s,markdocOptions:a,markdownParser:u},definition:c},e.createElement(l,{value:i},n?.length?e.createElement(E,{name:"Problem in json-schema tag",type:"danger"},n.map((p,d)=>e.createElement("div",{key:d},p))):null,e.createElement(h,{pointer:"#/x-root",disableDeepLinks:!0}))))}}export{S as JsonSchema};
1
+ import{MarkdownAdapterProvider as d,RedocSchema as l,StoreProvider as h,markdocParser as f}from"@redocly/api-docs";import*as e from"react";import{Admonition as k}from"@redocly/theme/markdoc/components/Admonition/Admonition";import{OpenApiComponentWrap as u}from"../styled.elements";import{markdocOptions as E,usePortalMarkdownAdapter as v}from"./use-markdown-adapter";function g(a){const{options:m,title:o,schemaResolved:t,schemaResolvedErrors:r,schema:n}=a,s=v();if(n||t){const i={openapi:"3.0.0",info:{version:"1",description:"test",title:"test"},paths:{},"x-root":t?.components?.schemas?.__root||n,components:{schemas:{...t?.components?.schemas}}};return e.createElement(u,{"data-testid":"json-schema"},o?e.createElement("h3",null,o):null,e.createElement(h,{options:{...m,markdocOptions:E,markdownParser:f},definition:i},e.createElement(d,{value:s},r?.length?e.createElement(k,{name:"Problem in json-schema tag",type:"danger"},r.map((c,p)=>e.createElement("div",{key:p},c))):null,e.createElement(l,{pointer:"#/x-root",disableDeepLinks:!0}))))}}export{g as JsonSchema};
@@ -1 +1 @@
1
- import*as o from"react";import{StoreProvider as h,RedocCodeSample as k,appendUndeclaredConfigureParameters as C,excludeMockServers as i,markdocParser as E}from"@redocly/api-docs";import{ErrorMessage as P,OpenApiComponentWrap as q}from"../styled.elements";import{useStore as x}from"../../hooks/use-store";import{findCodeSamplePanel as I}from"../../utils/find-code-sample-panel.js";function B(m){const{descriptionFile:d,operationId:s,pointer:a,exampleKey:c,mimeType:u,language:t,requestBody:l,parameters:e,environment:f,environments:v}=m,{store:r,error:y}=x(d),g=o.useMemo(()=>({specType:"openapi",...r?.options,...t&&{codeSamples:{languages:[{lang:t??""}]}},markdownParser:E}),[t,r?.options]),p=o.useMemo(()=>{if(!r?.items?.length)return;const n=I(r.items,{pointer:a,sourceId:s});if(!n)return;const S=C({...n.source,servers:i(n.source.servers)},{...e?.path&&{path:e.path},...e?.query&&{query:e.query},...e?.header&&{headers:e.header},...e?.cookie&&{cookie:e.cookie}});return{...n,...n.servers&&{servers:i(n.servers)},source:S}},[r?.items,a,s,e]);return r?p?o.createElement(q,{"data-testid":"openapi-code-sample"},o.createElement(h,{options:g,apiStore:r.store},o.createElement(k,{node:p,mimeType:u,exampleKey:c,requestBody:l,parameters:e,environment:f,environments:v}))):o.createElement("pre",{style:{color:"red"}},"Cannot find OpenAPI operation (use pointer or operationId)"):o.createElement(P,null,y)}export{B as OpenApiCodeSample};
1
+ import*as r from"react";import{MarkdownAdapterProvider as P,StoreProvider as h,RedocCodeSample as E,appendUndeclaredConfigureParameters as A,excludeMockServers as i,markdocParser as C}from"@redocly/api-docs";import{ErrorMessage as M,OpenApiComponentWrap as q}from"../styled.elements";import{useStore as w}from"../../hooks/use-store";import{findCodeSamplePanel as x}from"../../utils/find-code-sample-panel.js";import{usePortalMarkdownAdapter as I}from"./use-markdown-adapter";function F(m){const{descriptionFile:d,operationId:a,pointer:s,exampleKey:c,mimeType:u,language:n,requestBody:l,parameters:e,environment:f,environments:v}=m,{store:o,error:y}=w(d),g=I(),k=r.useMemo(()=>({specType:"openapi",...o?.options,...n&&{codeSamples:{languages:[{lang:n??""}]}},markdownParser:C}),[n,o?.options]),p=r.useMemo(()=>{if(!o?.items?.length)return;const t=x(o.items,{pointer:s,sourceId:a});if(!t)return;const S=A({...t.source,servers:i(t.source.servers)},{...e?.path&&{path:e.path},...e?.query&&{query:e.query},...e?.header&&{headers:e.header},...e?.cookie&&{cookie:e.cookie}});return{...t,...t.servers&&{servers:i(t.servers)},source:S}},[o?.items,s,a,e]);return o?p?r.createElement(q,{"data-testid":"openapi-code-sample"},r.createElement(h,{options:k,apiStore:o.store},r.createElement(P,{value:g},r.createElement(E,{node:p,mimeType:u,exampleKey:c,requestBody:l,parameters:e,environment:f,environments:v})))):r.createElement("pre",{style:{color:"red"}},"Cannot find OpenAPI operation (use pointer or operationId)"):r.createElement(M,null,y)}export{F as OpenApiCodeSample};
@@ -1 +1 @@
1
- import*as e from"react";import{RedocExample as m,StoreProvider as s,markdocParser as c}from"@redocly/api-docs";import{ErrorMessage as l,OpenApiComponentWrap as d}from"../styled.elements";import{useStore as E}from"../../hooks/use-store";function y(o){const{descriptionFile:t,pointer:p,options:n,mimeType:i}=o,{store:r,error:a}=E(t);return r?e.createElement(d,{"data-testid":"openapi-example"},e.createElement(s,{options:{specType:"openapi",...r.options,...n,markdownParser:c},apiStore:r.store},e.createElement(m,{pointer:p,mimeType:i||"application/json"}))):e.createElement(l,null,a)}export{y as OpenApiExample};
1
+ import*as e from"react";import{MarkdownAdapterProvider as s,RedocExample as c,StoreProvider as d,markdocParser as l}from"@redocly/api-docs";import{ErrorMessage as E,OpenApiComponentWrap as f}from"../styled.elements";import{useStore as u}from"../../hooks/use-store";import{usePortalMarkdownAdapter as k}from"./use-markdown-adapter";function v(o){const{descriptionFile:t,pointer:p,options:a,mimeType:n}=o,{store:r,error:i}=u(t),m=k();return r?e.createElement(f,{"data-testid":"openapi-example"},e.createElement(d,{options:{specType:"openapi",...r.options,...a,markdownParser:l},apiStore:r.store},e.createElement(s,{value:m},e.createElement(c,{pointer:p,mimeType:n||"application/json"})))):e.createElement(E,null,i)}export{v as OpenApiExample};
@@ -1 +1 @@
1
- import*as o from"react";import{StoreProvider as l,RedocResponseSamples as d,markdocParser as c}from"@redocly/api-docs";import{ErrorMessage as n,OpenApiComponentWrap as f}from"../styled.elements";import{useStore as u}from"../../hooks/use-store";import{findResponseSamples as S}from"../../utils/find-openapi-response-samples.js";function g(s){const{descriptionFile:t,operationId:p,pointer:a,exampleKey:i}=s,{store:e,error:m}=u(t);if(!e)return o.createElement(n,null,m);const r=e.items?.length?S(e.items,{pointer:a,sourceId:p}):void 0;return r?.responseCodes.length?o.createElement(f,{"data-testid":"openapi-response-sample"},o.createElement(l,{options:{...e.options,specType:"openapi",markdownParser:c},apiStore:e.store},o.createElement(d,{responseCodes:r.responseCodes,exampleKey:i,schemaId:r.schemaId}))):o.createElement(n,null,"Cannot find response samples for the given operation")}export{g as OpenApiResponseSample};
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 +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 E}from"../../../../templates/openapi-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 q=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(),O=o.useMemo(()=>{if(!m)return{};const M=E(t?.options?.mockServer,S??""),A=P(m,M);return b(A,i??{})},[m,t?.options?.mockServer,S,i]),y=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:y,hideOtherSecuritySchemes:d,predefinedEnvValues:O,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:E(s.mockServer,c??""),basePath:c,markdownParser:w}},o.createElement(q,{...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 E}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 q=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(),O=o.useMemo(()=>{if(!m)return{};const M=E(t?.options?.mockServer,S??""),A=P(m,M);return b(A,i??{})},[m,t?.options?.mockServer,S,i]),y=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:y,hideOtherSecuritySchemes:d,predefinedEnvValues:O,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:E(s.mockServer,c??""),basePath:c,markdownParser:w}},o.createElement(q,{...l,pointer:d,operationId:f})))};export{J as ReplayOpenApi};
@@ -0,0 +1,45 @@
1
+ import type { MarkdownAdapter } from '@redocly/api-docs';
2
+ import { MarkdownLink } from '@redocly/theme/markdoc/components/MarkdownLink/MarkdownLink';
3
+ /** Routes description links through portal `Link` (path prefix, locale, etc.). */
4
+ export declare const markdocOptions: {
5
+ nodes: {
6
+ link: {
7
+ attributes?: Record<string, import("@markdoc/markdoc").SchemaAttribute>;
8
+ slots?: Record<string, import("@markdoc/markdoc").SchemaSlot>;
9
+ selfClosing?: boolean;
10
+ inline?: boolean;
11
+ transform?(node: import("@markdoc/markdoc").Node, config: Readonly<Partial<{
12
+ nodes: Partial<Record<import("@markdoc/markdoc").NodeType, import("@markdoc/markdoc").Schema<Partial</*elided*/ any>, string>>>;
13
+ tags: Record<string, import("@markdoc/markdoc").Schema>;
14
+ variables: Record<string, any>;
15
+ functions: Record<string, import("@markdoc/markdoc").ConfigFunction>;
16
+ partials: Record<string, any>;
17
+ validation?: {
18
+ parents?: import("@markdoc/markdoc").Node[];
19
+ validateFunctions?: boolean;
20
+ environment?: string;
21
+ };
22
+ }>>): import("@markdoc/markdoc").MaybePromise<import("@markdoc/markdoc").RenderableTreeNodes>;
23
+ validate?(node: import("@markdoc/markdoc").Node, config: Readonly<Partial<{
24
+ nodes: Partial<Record<import("@markdoc/markdoc").NodeType, import("@markdoc/markdoc").Schema<Partial</*elided*/ any>, string>>>;
25
+ tags: Record<string, import("@markdoc/markdoc").Schema>;
26
+ variables: Record<string, any>;
27
+ functions: Record<string, import("@markdoc/markdoc").ConfigFunction>;
28
+ partials: Record<string, any>;
29
+ validation?: {
30
+ parents?: import("@markdoc/markdoc").Node[];
31
+ validateFunctions?: boolean;
32
+ environment?: string;
33
+ };
34
+ }>>): import("@markdoc/markdoc").MaybePromise<import("@markdoc/markdoc").ValidationError[]>;
35
+ description?: string;
36
+ render: string;
37
+ children: string[];
38
+ };
39
+ };
40
+ components: {
41
+ MarkdownLink: typeof MarkdownLink;
42
+ };
43
+ };
44
+ export declare function usePortalMarkdownAdapter(): MarkdownAdapter;
45
+ //# sourceMappingURL=use-markdown-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ import*as o from"react";import{createMarkdocAdapter as r}from"@redocly/api-docs";import{MarkdownLink as t}from"@redocly/theme/markdoc/components/MarkdownLink/MarkdownLink";import{link as e}from"../../../../../markdoc/nodes/index.js";const n={nodes:{link:e},components:{MarkdownLink:t}};function i(){return o.useMemo(()=>r(n),[])}export{n as markdocOptions,i as usePortalMarkdownAdapter};
@@ -1 +1 @@
1
- import{useCallback as y,useEffect as u,useState as n}from"react";import{withPathPrefix as S}from"@redocly/theme/core/utils";import{ServerRoutes as d}from"../../../constants/api";import{useI18nConfig as b}from"../hooks";function h(e){const[o,c]=n([]),[s,a]=n(null),[t,r]=n(null),[p,i]=n(!1),{currentLocale:f}=b();u(()=>{i(!0),m()},[t]);const m=y(async()=>{if(e&&t===null){i(!1);return}let l={locale:f,field:e};t&&(l={...l,...t});const F=await(await fetch(S(d.SEARCH_FACETS),{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(l)})).json();e?a(F):c(F),i(!1)},[f,t,e]);return{initialFacets:o,searchFacets:s,isFacetsLoading:p,setSearchFacetQuery:r}}function E(e){const[o,c]=n(null),{searchFacets:s,setSearchFacetQuery:a}=h(e);return u(()=>{const t=s?s.find(r=>r.field===e)??null:null;c(t)},[s,e]),{searchFacet:o,setSearchFacet:c,setSearchFacetQuery:a}}const L=e=>{const[o,c]=n([]),{initialFacets:s}=h();return u(()=>{if(e&&Object.keys(e).length){const a=[];for(const t of s)a.push({...t,values:e[t.field]?.map(r=>({...r,isCounterVisible:!0}))||[]});c(a)}else c(s)},[s,e]),{facets:o}};export{E as useFacetQuery,L as useFacets};
1
+ import{useCallback as y,useEffect as f,useMemo as S,useState as r}from"react";import{withPathPrefix as b}from"@redocly/theme/core/utils";import{ServerRoutes as d}from"../../../constants/api";import{useI18nConfig as g}from"../hooks";function h(e){const[s,a]=r([]),[t,n]=r(null),[c,o]=r(null),[p,i]=r(!1),{currentLocale:l}=g();f(()=>{i(!0),m()},[c]);const m=y(async()=>{if(e&&c===null){i(!1);return}let u={locale:l,field:e};c&&(u={...u,...c});const F=await(await fetch(b(d.SEARCH_FACETS),{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(u)})).json();e?n(F):a(F),i(!1)},[l,c,e]);return{initialFacets:s,searchFacets:t,isFacetsLoading:p,setSearchFacetQuery:o}}function L(e){const[s,a]=r(null),{searchFacets:t,setSearchFacetQuery:n}=h(e);return f(()=>{const c=t?t.find(o=>o.field===e)??null:null;a(c)},[t,e]),{searchFacet:s,setSearchFacet:a,setSearchFacetQuery:n}}const O=e=>{const{initialFacets:s}=h();return{facets:S(()=>!e||!Object.keys(e).length?s:s.map(t=>({...t,values:e[t.field]?.map(n=>({...n,isCounterVisible:!0}))||[]})),[s,e])}};export{L as useFacetQuery,O as useFacets};
@@ -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:t,to:o,origin:a="browser",options:c}){o===""&&(o="/"),s=o;const{pathname:e,hash:d,search:i}=new URL(o,window.location.origin+window.location.pathname),n=decodeURIComponent(d),l=decodeURIComponent(window.location.hash);if(m(e)){window.location.href=o;return}const w=window.__LOADER,r=await u(w.tryLoad(e,void 0,i));if(r?.redirectTo){if(!f(r.redirectTo)){window.location.href=r.redirectTo;return}return A({navigate:t,to:r.redirectTo,origin:a,options:c})}if(r&&s===o){if((e!==window.location.pathname||i!==window.location.search||n!==l)&&t({pathname:e,search:i,hash:n},{...c,state:{origin:a},flushSync:!0}),r.props?.disableAutoScroll)return;requestAnimationFrame(()=>{if(n){const h=n.slice(1);p(h)}else window.scrollTo(0,0)})}}export{A as loadAndNavigate};
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 +1 @@
1
- import{useEffect as c,useState as s}from"react";import{useNavigate as l}from"react-router";import{isLocalLink as u}from"../../utils/path/is-local-link.js";import{isJsProtocolLink as a}from"../../utils/path/is-js-protocol-link.js";import{isAssetsLink as m}from"../../utils/path/is-assets-link.js";import{isHostnameOnDomain as f}from"../app/utils/isHostnameOnDomain.js";import{loadAndNavigate as d}from"../app/utils/loadAndNavigate.js";import{isForcedNavigationLinkClick as p}from"../utils/utils.js";export*from"./page-data/hooks.js";function E(){const o=l();c(()=>{const r=t=>{if(t.defaultPrevented)return;const i=t.target;if(i.tagName!=="A"||p(t,i.getAttribute("target")||""))return;const n=i.getAttribute("href");!u(n)||m(n)||a(n)||(t.preventDefault(),d({navigate:o,to:n||""}))};return document.addEventListener("click",r),()=>{document.removeEventListener("click",r)}},[o])}function b(){const[o,r]=s(null);return c(()=>{if(process.env.NODE_ENV==="development"&&typeof window<"u"&&!e("localhost")&&!e("127.0.0.1")&&!e("")&&!e("redocly-local.com")&&!e("editor.redocly.xyz")&&!e("apps.codespaces.githubusercontent.com")&&!e("blueharvest.cloud")&&!e("bhstage.cloud")&&!e("cloud.redocly.com")&&!e("cloud.eu.redocly.com")&&!e("cba.au.redocly.com"))return r("Development mode is only allowed in localhost")},[typeof window]),o}function e(o){return f(window.location.hostname,o)}export{E as useRouterForLocalLinks,b as useRunningEnvironmentCheck};
1
+ import{useEffect as c,useState as s}from"react";import{useNavigate as l}from"react-router";import{isLocalLink as u}from"../../utils/path/is-local-link.js";import{isJsProtocolLink as m}from"../../utils/path/is-js-protocol-link.js";import{isAssetsLink as a}from"../../utils/path/is-assets-link.js";import{isHostnameOnDomain as f}from"../app/utils/isHostnameOnDomain.js";import{loadAndNavigate as d}from"../app/utils/loadAndNavigate.js";import{isForcedNavigationLinkClick as p}from"../utils/utils.js";export*from"./page-data/hooks.js";function E(){const o=l();c(()=>{const r=t=>{if(t.defaultPrevented)return;const i=t.target;if(i.tagName!=="A"||p(t,i.getAttribute("target")||""))return;const n=i.getAttribute("href");!u(n)||a(n)||m(n)||(t.preventDefault(),d({navigate:o,to:n||""}))};return document.addEventListener("click",r),()=>{document.removeEventListener("click",r)}},[o])}function N(){const[o,r]=s(null);return c(()=>{if(process.env.NODE_ENV==="development"&&typeof window<"u"&&!e("localhost")&&!e("127.0.0.1")&&!e("")&&!e("redocly-local.com")&&!e("editor.redocly.xyz")&&!e("apps.codespaces.githubusercontent.com")&&!e("blueharvest.cloud")&&!e("bhstage.cloud")&&!e("cloud.redocly.com")&&!e("cloud.eu.redocly.com"))return r("Development mode is only allowed in localhost")},[typeof window]),o}function e(o){return f(window.location.hostname,o)}export{E as useRouterForLocalLinks,N as useRunningEnvironmentCheck};
@@ -1 +1 @@
1
- import n,{createContext as v,useEffect as P}from"react";import{useLocation as S,useNavigate as C}from"react-router";import{useColorSwitcher as M}from"@redocly/theme/core/hooks";import{withPathPrefix as E}from"@redocly/theme/core/utils";import{ServerRoutes as U}from"../../../constants/api";import{removeTrailingSlash as L}from"../../../utils/url/remove-trailing-slash";import{loadAndNavigate as x}from"../../app/utils/loadAndNavigate";import{resolveRouteBySlug as O}from"../../app/utils/resolveRouteBySlug";import{isSameResolvedRoute as T}from"../../app/utils/same-resolved-route";import{syncScrollWithEditor as D}from"../../app/utils/syncScrollWithEditor";import{PostMessageConnection as I}from"./PostMessageConnection";import{isHostnameOnDomain as c}from"../../app/utils/isHostnameOnDomain";import{usePageData as N}from"../../app/hooks/usePageData";const z=v({sendMessage:()=>{}});function Z({children:l,enabled:t}){const R=C(),i=S(),s=n.useRef(null),{switchColorMode:h}=M(),p=N()?.templateId,u=n.useCallback(e=>{s.current?.send(e)},[]),f=n.useCallback(async e=>{console.info("[PM] connection initialized."),s.current=new I(e.source,e.origin);const a=await O(i.pathname+i.hash,p).catch(o=>{console.error("Initial route resolve failed with error: ",o.message)});u({type:"initialized",initialRoute:a})},[u,i.pathname,i.hash,p]),w=n.useCallback(async e=>{const{path:a="/",line:o=1,url:d}=e;let r=d;if(!d)try{const m=await fetch(E(U.RESOLVE_ROUTE_BY_PATH),{method:"POST",body:JSON.stringify(a+(o?`:${o}`:""))}),{route:y}=await m.json();r=y?.slug??y?.url??void 0}catch(m){console.error(m)}if(!r)return;r=r==="/"?"/":L(r),T(r,i,!!d)||(console.info("[PM] Update route to: ",r),await x({navigate:R,to:r,origin:"pm"}))},[i]),g=n.useCallback(async e=>{const{action:a}=e;switch(a){case"back":window.history.back();break;case"forward":window.history.forward();break;case"reload":window.location.reload();break}},[]),b=n.useCallback(e=>{window.scrollTo({top:e.position.absolute,behavior:"instant"})},[]),k=n.useCallback(e=>{h(e.colorSchema)},[h]);return P(()=>{if(!t)return;const e=async a=>{if(!A(a.origin))return;const o=a.data;switch(o.type){case"initialize":f(a);break;case"route-update":if(!s.current)return;w(o);break;case"location-update":if(!s.current)return;g(o);break;case"scroll-update":if(!s.current)return;b(o);break;case"editor-scroll-update":if(!s.current)return;D(o.percentScrolled,o.sequenceNumber);break;case"color-schema-update":if(!s.current)return;k(o);break}};return window.addEventListener("message",e),()=>{window.removeEventListener("message",e)}},[t,f,w,g,b,k]),n.createElement(z.Provider,{value:{sendMessage:u}},l)}function A(l){const t=new URL(l);return c(t.hostname,"localhost")||c(t.hostname,"127.0.0.1")||c(t.hostname,"blueharvest.cloud")||c(t.hostname,"bhstage.cloud")||c(t.hostname,"cloud.redocly.com")||c(t.hostname,"cloud.eu.redocly.com")||c(t.hostname,"cba.au.redocly.com")}export{z as PostMessageContext,Z as PostMessageProvider};
1
+ import n,{createContext as v,useEffect as P}from"react";import{useLocation as S,useNavigate as C}from"react-router";import{useColorSwitcher as M}from"@redocly/theme/core/hooks";import{withPathPrefix as E}from"@redocly/theme/core/utils";import{ServerRoutes as U}from"../../../constants/api";import{removeTrailingSlash as L}from"../../../utils/url/remove-trailing-slash";import{loadAndNavigate as x}from"../../app/utils/loadAndNavigate";import{resolveRouteBySlug as O}from"../../app/utils/resolveRouteBySlug";import{isSameResolvedRoute as T}from"../../app/utils/same-resolved-route";import{syncScrollWithEditor as D}from"../../app/utils/syncScrollWithEditor";import{PostMessageConnection as I}from"./PostMessageConnection";import{isHostnameOnDomain as c}from"../../app/utils/isHostnameOnDomain";import{usePageData as N}from"../../app/hooks/usePageData";const z=v({sendMessage:()=>{}});function Z({children:l,enabled:t}){const R=C(),i=S(),s=n.useRef(null),{switchColorMode:h}=M(),p=N()?.templateId,u=n.useCallback(e=>{s.current?.send(e)},[]),f=n.useCallback(async e=>{console.info("[PM] connection initialized."),s.current=new I(e.source,e.origin);const a=await O(i.pathname+i.hash,p).catch(o=>{console.error("Initial route resolve failed with error: ",o.message)});u({type:"initialized",initialRoute:a})},[u,i.pathname,i.hash,p]),w=n.useCallback(async e=>{const{path:a="/",line:o=1,url:d}=e;let r=d;if(!d)try{const m=await fetch(E(U.RESOLVE_ROUTE_BY_PATH),{method:"POST",body:JSON.stringify(a+(o?`:${o}`:""))}),{route:y}=await m.json();r=y?.slug??y?.url??void 0}catch(m){console.error(m)}if(!r)return;r=r==="/"?"/":L(r),T(r,i,!!d)||(console.info("[PM] Update route to: ",r),await x({navigate:R,to:r,origin:"pm"}))},[i]),g=n.useCallback(async e=>{const{action:a}=e;switch(a){case"back":window.history.back();break;case"forward":window.history.forward();break;case"reload":window.location.reload();break}},[]),b=n.useCallback(e=>{window.scrollTo({top:e.position.absolute,behavior:"instant"})},[]),k=n.useCallback(e=>{h(e.colorSchema)},[h]);return P(()=>{if(!t)return;const e=async a=>{if(!A(a.origin))return;const o=a.data;switch(o.type){case"initialize":f(a);break;case"route-update":if(!s.current)return;w(o);break;case"location-update":if(!s.current)return;g(o);break;case"scroll-update":if(!s.current)return;b(o);break;case"editor-scroll-update":if(!s.current)return;D(o.percentScrolled,o.sequenceNumber);break;case"color-schema-update":if(!s.current)return;k(o);break}};return window.addEventListener("message",e),()=>{window.removeEventListener("message",e)}},[t,f,w,g,b,k]),n.createElement(z.Provider,{value:{sendMessage:u}},l)}function A(l){const t=new URL(l);return c(t.hostname,"localhost")||c(t.hostname,"127.0.0.1")||c(t.hostname,"blueharvest.cloud")||c(t.hostname,"bhstage.cloud")||c(t.hostname,"cloud.redocly.com")||c(t.hostname,"cloud.eu.redocly.com")}export{z as PostMessageContext,Z as PostMessageProvider};
@@ -1,5 +1,5 @@
1
1
  import type { PageProps } from '@redocly/config';
2
- import type { ApiItem, MarkdocOptions } from '@redocly/api-docs';
2
+ import type { ApiItem, EventType, MarkdocOptions } from '@redocly/api-docs';
3
3
  /**
4
4
  * Prefix the store's absolute routing fields (`link`, `routeSlug`) so the api-docs
5
5
  * client router matches `location.pathname`, which carries the path prefix. Relative
@@ -7,4 +7,7 @@ import type { ApiItem, MarkdocOptions } from '@redocly/api-docs';
7
7
  */
8
8
  export declare function applyPathPrefixToApiItems(items: ApiItem[]): ApiItem[];
9
9
  export declare function useCollectMarkdocOptions(markdown: PageProps['markdown'], markdocOptions?: MarkdocOptions): MarkdocOptions;
10
+ type EventFunctionInput = string | ((event: EventType) => void) | undefined;
11
+ export declare function safeParseFunction(fnInput: EventFunctionInput): ((event: EventType) => void) | null;
12
+ export {};
10
13
  //# sourceMappingURL=helpers.d.ts.map
@@ -1 +1,5 @@
1
- import{useMemo as a,useRef as p}from"react";import{components as u}from"@redocly-markdoc/components";import{schema as e}from"@redocly-markdoc/schema";import{withPathPrefix as n}from"@redocly/theme/core/utils";import{tags as f,components as c}from"@redocly/theme/markdoc/default";import*as l from"../../app/markdoc/custom-components/index.js";import{parsePartials as g}from"../../templates/openapi-docs/helpers.js";import*as d from"../../../markdoc/nodes/index.js";import h from"../../../markdoc/tags/index.js";import{normalizeCustomTags as k}from"../../../markdoc/helpers/normalize-custom-tags.js";import{deepEqual as C}from"../../../utils/object/deep-equal.js";function T(t){return t.map(r=>{const o={...r};return typeof o.link=="string"&&(o.link=n(o.link)),typeof o.routeSlug=="string"&&(o.routeSlug=n(o.routeSlug)),Array.isArray(o.items)&&(o.items=T(o.items)),o})}function m(t){const r=p(t);return C(r.current,t)||(r.current=t),r.current}function w(t,r){const o=m(t),s=m(r);return a(()=>{const i=globalThis.__LOADER?.markdocComponents??{};return{...s,...o,tags:{...s?.tags??{},...h,...f,...k(e?.tags??{})},nodes:{...s?.nodes??{},...d,...e?.nodes??{}},functions:{...e?.functions??{}},components:{...s?.components??{},...l,...c,...u,...i},partials:g(o?.partials)}},[o,s])}export{T as applyPathPrefixToApiItems,w as useCollectMarkdocOptions};
1
+ import{useMemo as u,useRef as m}from"react";import{components as c}from"@redocly-markdoc/components";import{schema as s}from"@redocly-markdoc/schema";import{withPathPrefix as i}from"@redocly/theme/core/utils";import{tags as p,components as f}from"@redocly/theme/markdoc/default";import*as l from"../../app/markdoc/custom-components/index.js";import{parsePartials as d}from"../../../markdoc/helpers/parse-partials.js";import*as g from"../../../markdoc/nodes/index.js";import w from"../../../markdoc/tags/index.js";import{normalizeCustomTags as h}from"../../../markdoc/helpers/normalize-custom-tags.js";import{deepEqual as y}from"../../../utils/object/deep-equal.js";function b(t){return t.map(r=>{const o={...r};return typeof o.link=="string"&&(o.link=i(o.link)),typeof o.routeSlug=="string"&&(o.routeSlug=i(o.routeSlug)),Array.isArray(o.items)&&(o.items=b(o.items)),o})}function a(t){const r=m(t);return y(r.current,t)||(r.current=t),r.current}function E(t,r){const o=a(t),n=a(r);return u(()=>{const e=globalThis.__LOADER?.markdocComponents??{};return{...n,...o,tags:{...n?.tags??{},...w,...p,...h(s?.tags??{})},nodes:{...n?.nodes??{},...g,...s?.nodes??{}},functions:{...s?.functions??{}},components:{...n?.components??{},...l,...f,...c,...e},partials:d(o?.partials)}},[o,n])}function M(t){if(typeof window>"u")return null;if(typeof t=="function")return t;if(typeof t!="string")return null;try{const r=t.trim();if(!r.match(/^(\([^)]*\)\s*=>\s*.+|[a-zA-Z_$][\w$]*\s*=>\s*.+)$/))throw new Error("Invalid function format. Only arrow functions allowed.");if(["eval","Function","constructor","prototype","__proto__","import","require","process","global","window","document"].some(e=>r.includes(e)))throw new Error("Function contains prohibited keywords");return new Function("event",`
2
+ 'use strict';
3
+ const userFn = ${r};
4
+ return userFn(event);
5
+ `)}catch(r){return console.error("Function parsing error:",r),null}}export{b as applyPathPrefixToApiItems,M as safeParseFunction,E as useCollectMarkdocOptions};
@@ -1,6 +1,6 @@
1
- import*as t from"react";import{useMemo as i}from"react";import A from"styled-components";import{RedoclyApiDocs as b,createMarkdocAdapter as k}from"@redocly/api-docs";import{LayoutVariant as T}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 x}from"@redocly/theme/components/Breadcrumbs/Breadcrumbs";import{withPathPrefix as s}from"@redocly/theme/core/utils";import{usePageSharedData as D,useUserClaims as I}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 $}from"../../constants/common.js";import{PACKAGE_NAME as N}from"../../../config/product-gates";import{safeParseFunction as Y}from"../../templates/openapi-docs/helpers.js";import{applyPathPrefixToApiItems as H,useCollectMarkdocOptions as V}from"./helpers";function W({pageProps:{markdown:c,apiOptions:f,metadata:R}}){const u=D("apiDocsStore"),{items:l,options:o,store:w,baseSlug:r}=u,n=M(),E=I(),a=V(c,o.markdocOptions),m=i(()=>s(r),[r]),C=i(()=>m===r?l:H(l),[l,r,m]),v=i(()=>k(a),[a]),y=i(()=>{const S=n?`${window.location.origin}${s(p.REPLAY_OAUTH2_CALLBACK)}`:void 0;let d=o.corsProxyUrl;if(d===void 0){const e=s(`${p.CORS_PROXY}/`);d=n?new URL(e,window.location.origin).toString():e}const g=o.events,h=g?Object.entries(g).reduce((e,[O,_])=>{const P=Y(_);return P&&(e[O]=P),e},{}):void 0;return{...o,markdocOptions:a,oAuth2RedirectURI:S,corsProxyUrl:d,userClaims:E,...h&&{events:h},unstable_hooks:{...o.unstable_hooks,MiddlePanelHeader:()=>t.createElement(x,null)}}},[o,a,n,E]);if(!u)return t.createElement("div",null,"Something went wrong");const L=n?{collectorUrl:new URL(s(p.OTEL_TRACES),window.location.origin).toString(),disabled:!$,serviceVersion:`${N}@${process.env.REDOCLY_PORTAL_VERSION}`}:void 0;return t.createElement(K,null,t.createElement(z,{layout:f?.layout},t.createElement(U,{metadata:R})),t.createElement(b,{items:C,store:w,basePath:m,options:y,markdownAdapter:v,layout:f?.layout,telemetryConfig:L}))}const z=A(B)`
1
+ import*as e from"react";import{useMemo as i}from"react";import A from"styled-components";import{RedoclyApiDocs as k,createMarkdocAdapter as T}from"@redocly/api-docs";import{LayoutVariant as B}from"@redocly/theme/components/SidebarActions/SidebarActions";import{ThreePanelLayout as U}from"@redocly/theme/layouts/ThreePanelLayout";import{CatalogClassicInfoBlock as x}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:w}}){const u=I("apiDocsStore"),{items:l,options:o,store:y,baseSlug:r}=u,a=M(),g=$(),n=W(c,o.markdocOptions),d=i(()=>s(r),[r]),C=i(()=>d===r?l:Y(l),[l,r,d]),v=i(()=>T(n),[n]),L=i(()=>{const b=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,[O,_])=>{const P=V(_);return P&&(t[O]=P),t},{}):void 0;return{...o,markdocOptions:n,oAuth2RedirectURI:b,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 S=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(x,{metadata:w})),e.createElement(k,{items:C,store:y,basePath:d,options:L,markdownAdapter:v,layout:f?.layout,telemetryConfig:S}))}const R=A(U)`
2
2
  && {
3
- padding-right: ${({layout:c})=>c===T.THREE_PANEL?"calc(var(--panel-gap-horizontal) * 2)":"var(--panel-gap-horizontal)"};
3
+ padding-right: ${({layout:c})=>c===B.THREE_PANEL?"calc(var(--panel-gap-horizontal) * 2)":"var(--panel-gap-horizontal)"};
4
4
  }
5
5
  `,K=A.main`
6
6
  div[id],
@@ -11,4 +11,9 @@ import*as t from"react";import{useMemo as i}from"react";import A from"styled-com
11
11
  }
12
12
 
13
13
  --sidebar-width: 0px;
14
- `;export{W as default};
14
+
15
+ /* Hide the catalog info block (scorecard badge) when api-docs renders its 404 or error fallback page. */
16
+ &:has(.not-found-page, .api-docs-error-page) ${R} {
17
+ display: none;
18
+ }
19
+ `;export{z as default};
@@ -3,6 +3,6 @@ export type PaginatedResponse = {
3
3
  page: Page;
4
4
  };
5
5
  export declare function getNextPageParam<T extends PaginatedResponse>(lastPage: T): {
6
- after: string | null;
6
+ after: string;
7
7
  } | undefined;
8
8
  //# sourceMappingURL=get-next-page-param.d.ts.map
@@ -1 +1 @@
1
- function r(e){return e?.page?.hasNextPage?{after:e?.page?.endCursor}:void 0}export{r as getNextPageParam};
1
+ function n(e){return e?.page?.nextPage?{after:e.page.nextPage}:void 0}export{n as getNextPageParam};