@redocly/realm 0.132.0-next.0 → 0.132.0-next.10

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 (243) hide show
  1. package/CHANGELOG.md +191 -0
  2. package/dist/bin.d.ts +0 -1
  3. package/dist/bin.js +1 -1
  4. package/dist/cli/telemetry/index.js +1 -1
  5. package/dist/client/App.js +1 -1
  6. package/dist/client/TestProvider.js +1 -1
  7. package/dist/client/app/CircularProgress.js +8 -8
  8. package/dist/client/app/hooks/catalog/useCatalogSort.d.ts +3 -4
  9. package/dist/client/app/hooks/catalog/useFetchCatalogEntities.js +1 -1
  10. package/dist/client/app/hooks/catalog/useFetchCatalogEntitiesRelations.js +1 -1
  11. package/dist/client/app/hooks/index.d.ts +1 -0
  12. package/dist/client/app/hooks/index.js +1 -1
  13. package/dist/client/app/hooks/markdown/useMarkdocRenderer.d.ts +3 -0
  14. package/dist/client/app/hooks/markdown/useMarkdocRenderer.js +1 -0
  15. package/dist/client/app/hooks/useBanner.d.ts +3 -5
  16. package/dist/client/app/hooks/useBanner.js +1 -1
  17. package/dist/client/app/hooks/utils/match-banner-target.d.ts +25 -3
  18. package/dist/client/app/hooks/utils/match-banner-target.js +1 -1
  19. package/dist/client/app/l10n/hooks/useTranslate.js +1 -1
  20. package/dist/client/app/search/message-handlers.js +1 -1
  21. package/dist/client/app/utils/loadAndNavigate.js +1 -1
  22. package/dist/client/app/utils/scroll-to-anchor.d.ts +3 -0
  23. package/dist/client/app/utils/scroll-to-anchor.js +1 -0
  24. package/dist/client/mcp-tool-handlers-entry.d.ts +3 -0
  25. package/dist/client/mcp-tool-handlers-entry.js +1 -0
  26. package/dist/client/providers/theme/ThemeDataProvider.js +1 -1
  27. package/dist/client/templates/asyncapi-docs/helpers.d.ts +1 -1
  28. package/dist/client/templates/asyncapi-docs/template.js +2 -2
  29. package/dist/client/templates/openapi-docs/template.js +4 -4
  30. package/dist/client/types/ai-search.d.ts +11 -5
  31. package/dist/constants/common.js +1 -1
  32. package/dist/constants/l10n/langs/ar.js +1 -1
  33. package/dist/constants/l10n/langs/de.js +1 -1
  34. package/dist/constants/l10n/langs/en.js +1 -1
  35. package/dist/constants/l10n/langs/es.js +1 -1
  36. package/dist/constants/l10n/langs/fr.js +1 -1
  37. package/dist/constants/l10n/langs/hi.js +1 -1
  38. package/dist/constants/l10n/langs/it.js +1 -1
  39. package/dist/constants/l10n/langs/ja.js +1 -1
  40. package/dist/constants/l10n/langs/ko.js +1 -1
  41. package/dist/constants/l10n/langs/pl.js +1 -1
  42. package/dist/constants/l10n/langs/pt-BR.js +1 -1
  43. package/dist/constants/l10n/langs/pt.js +1 -1
  44. package/dist/constants/l10n/langs/ru.js +1 -1
  45. package/dist/constants/l10n/langs/uk.js +1 -1
  46. package/dist/constants/l10n/langs/zh.js +1 -1
  47. package/dist/markdoc/nodes/fence/index.js +1 -1
  48. package/dist/markdoc/nodes/index.d.ts +1 -1
  49. package/dist/markdoc/nodes/index.js +1 -1
  50. package/dist/server/api-routes/run-api-routes-worker.js +1 -1
  51. package/dist/server/config/env-config.js +1 -1
  52. package/dist/server/config/env-schema.d.ts +9 -3
  53. package/dist/server/config/env-schemas/api-urls.d.ts +3 -3
  54. package/dist/server/config/env-schemas/api-urls.js +1 -1
  55. package/dist/server/config/env-schemas/auth.d.ts +6 -0
  56. package/dist/server/config/env-schemas/auth.js +1 -1
  57. package/dist/server/esbuild/esbuild.js +3 -3
  58. package/dist/server/esbuild/plugins/codegen/index.d.ts +1 -0
  59. package/dist/server/esbuild/plugins/codegen/index.js +7 -3
  60. package/dist/server/esbuild/plugins/mcp-tool-handlers-resolver.d.ts +7 -0
  61. package/dist/server/esbuild/plugins/mcp-tool-handlers-resolver.js +1 -0
  62. package/dist/server/fs/fast-mtime.js +3 -3
  63. package/dist/server/plugins/api-functions/helpers/parse-route-fs-path-for-hono.js +1 -1
  64. package/dist/server/plugins/api-functions/index.js +1 -1
  65. package/dist/server/plugins/arazzo-docs/index.js +1 -1
  66. package/dist/server/plugins/asyncapi-docs/get-server-props.js +1 -1
  67. package/dist/server/plugins/asyncapi-docs/index.js +1 -1
  68. package/dist/server/plugins/asyncapi-docs/search/get-ai-search-documents.js +3 -3
  69. package/dist/server/plugins/catalog-entities/database/mappers/create-bff-related-entity.js +1 -1
  70. package/dist/server/plugins/catalog-entities/database/mappers/field-transformations.d.ts +2 -2
  71. package/dist/server/plugins/catalog-entities/database/mappers/field-transformations.js +1 -1
  72. package/dist/server/plugins/catalog-entities/database/repositories/utils/create-merged-entity-fields-for-select.d.ts +1 -0
  73. package/dist/server/plugins/catalog-entities/database/repositories/utils/create-merged-entity-fields-for-select.js +8 -8
  74. package/dist/server/plugins/catalog-entities/database/repositories/utils.d.ts +4 -0
  75. package/dist/server/plugins/catalog-entities/database/repositories/utils.js +1 -1
  76. package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/arazzo-entities-extractor.js +1 -1
  77. package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/asyncapi-entities-extractor.js +1 -1
  78. package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/base.d.ts +13 -1
  79. package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/base.js +1 -1
  80. package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/graphql-entities-extractor.js +2 -2
  81. package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/openapi-entities-extractor.js +1 -1
  82. package/dist/server/plugins/catalog-entities/get-server-props.js +1 -1
  83. package/dist/server/plugins/catalog-entities/plugin.js +1 -1
  84. package/dist/server/plugins/catalog-entities/schemas/database-schemas.d.ts +6 -6
  85. package/dist/server/plugins/catalog-entities/schemas/database-schemas.js +1 -1
  86. package/dist/server/plugins/config-parser/index.js +1 -1
  87. package/dist/server/plugins/config-parser/loaders/content-slugs-loader.js +1 -1
  88. package/dist/server/plugins/config-parser/loaders/redocly-config-loader.js +1 -1
  89. package/dist/server/plugins/config-parser/loaders/utils/read-and-validate-config.d.ts +1 -0
  90. package/dist/server/plugins/config-parser/loaders/utils/read-and-validate-config.js +1 -1
  91. package/dist/server/plugins/config-parser/normalize-redirect-sources.js +1 -1
  92. package/dist/server/plugins/config-parser/resolve-search-facets.js +1 -1
  93. package/dist/server/plugins/default-theme/index.js +1 -1
  94. package/dist/server/plugins/default-theme/resolve-products-config.js +1 -1
  95. package/dist/server/plugins/dev-onboarding/api/adapter-factory.d.ts +10 -3
  96. package/dist/server/plugins/dev-onboarding/api/adapter-factory.js +1 -1
  97. package/dist/server/plugins/dev-onboarding/api/adapters/apigee/adapter.d.ts +5 -4
  98. package/dist/server/plugins/dev-onboarding/api/adapters/apigee/adapter.js +4 -4
  99. package/dist/server/plugins/dev-onboarding/api/adapters/gravitee/client.d.ts +3 -3
  100. package/dist/server/plugins/dev-onboarding/api/adapters/gravitee/client.js +1 -1
  101. package/dist/server/plugins/dev-onboarding/api/middlewares/integrations.d.ts +3 -2
  102. package/dist/server/plugins/dev-onboarding/api/middlewares/integrations.js +1 -1
  103. package/dist/server/plugins/dev-onboarding/api/routes/index.js +1 -1
  104. package/dist/server/plugins/dev-onboarding/api/types.d.ts +8 -0
  105. package/dist/server/plugins/dev-onboarding/index.js +1 -1
  106. package/dist/server/plugins/dev-onboarding/template/components/ApiLogsActions.js +5 -5
  107. package/dist/server/plugins/dev-onboarding/template/components/DialogStyledComponents.js +1 -1
  108. package/dist/server/plugins/dev-onboarding/template/components/MultiSelect.js +1 -1
  109. package/dist/server/plugins/dev-onboarding/template/components/TextField.js +3 -3
  110. package/dist/server/plugins/enforce-login/index.d.ts +3 -0
  111. package/dist/server/plugins/enforce-login/index.js +1 -0
  112. package/dist/server/plugins/graphql-docs/spec-download.api.js +1 -1
  113. package/dist/server/plugins/graphql-docs/template/GraphQLDocs.js +2 -2
  114. package/dist/server/plugins/lifecycle.js +2 -2
  115. package/dist/server/plugins/markdown/attribute-resolvers/index.js +1 -1
  116. package/dist/server/plugins/markdown/attribute-resolvers/resolve-diagram-from-file.d.ts +4 -0
  117. package/dist/server/plugins/markdown/attribute-resolvers/resolve-diagram-from-file.js +1 -0
  118. package/dist/server/plugins/markdown/attribute-resolvers/resolve-link.js +1 -1
  119. package/dist/server/plugins/markdown/attribute-resolvers/resolve-native-md-link.js +1 -1
  120. package/dist/server/plugins/markdown/compiler.d.ts +1 -1
  121. package/dist/server/plugins/markdown/compiler.js +1 -1
  122. package/dist/server/plugins/markdown/get-server-props.js +1 -1
  123. package/dist/server/plugins/markdown/index.js +1 -1
  124. package/dist/server/plugins/markdown/markdoc/markdoc-options.d.ts +1 -1
  125. package/dist/server/plugins/markdown/markdoc/partials.js +1 -1
  126. package/dist/server/plugins/markdown/markdoc/plugins/render-diagrams.d.ts +16 -0
  127. package/dist/server/plugins/markdown/markdoc/plugins/render-diagrams.js +1 -0
  128. package/dist/server/plugins/markdown/markdown-static-data-loader.js +1 -1
  129. package/dist/server/plugins/markdown/runtime-transform.js +1 -1
  130. package/dist/server/plugins/markdown/search/get-ai-search-documents.js +10 -10
  131. package/dist/server/plugins/markdown/search/to-markdown.js +24 -16
  132. package/dist/server/plugins/markdown/search/walk-sections.js +1 -1
  133. package/dist/server/plugins/mcp/auth/auth-handlers.d.ts +1 -0
  134. package/dist/server/plugins/mcp/auth/auth-handlers.js +1 -1
  135. package/dist/server/plugins/mcp/docs-mcp/tool-schemas.d.ts +7 -0
  136. package/dist/server/plugins/mcp/docs-mcp/tool-schemas.js +1 -0
  137. package/dist/server/plugins/mcp/docs-mcp/tools/get-endpoint-info.d.ts +5 -9
  138. package/dist/server/plugins/mcp/docs-mcp/tools/get-endpoint-info.js +1 -1
  139. package/dist/server/plugins/mcp/docs-mcp/tools/get-endpoints.d.ts +5 -9
  140. package/dist/server/plugins/mcp/docs-mcp/tools/get-endpoints.js +1 -1
  141. package/dist/server/plugins/mcp/docs-mcp/tools/get-full-api-description.d.ts +5 -9
  142. package/dist/server/plugins/mcp/docs-mcp/tools/get-full-api-description.js +1 -1
  143. package/dist/server/plugins/mcp/docs-mcp/tools/get-security-schemes.d.ts +5 -9
  144. package/dist/server/plugins/mcp/docs-mcp/tools/get-security-schemes.js +1 -1
  145. package/dist/server/plugins/mcp/docs-mcp/tools/helpers/load-api-description.d.ts +4 -0
  146. package/dist/server/plugins/mcp/docs-mcp/tools/helpers/load-api-description.js +1 -0
  147. package/dist/server/plugins/mcp/docs-mcp/tools/index.d.ts +10 -7
  148. package/dist/server/plugins/mcp/docs-mcp/tools/index.js +1 -1
  149. package/dist/server/plugins/mcp/docs-mcp/tools/list-apis.d.ts +5 -9
  150. package/dist/server/plugins/mcp/docs-mcp/tools/list-apis.js +1 -1
  151. package/dist/server/plugins/mcp/docs-mcp/tools/search.d.ts +5 -10
  152. package/dist/server/plugins/mcp/docs-mcp/tools/search.js +3 -3
  153. package/dist/server/plugins/mcp/docs-mcp/tools/utils.d.ts +6 -3
  154. package/dist/server/plugins/mcp/docs-mcp/tools/utils.js +6 -6
  155. package/dist/server/plugins/mcp/docs-mcp/tools/whoami.d.ts +5 -9
  156. package/dist/server/plugins/mcp/docs-mcp/tools/whoami.js +1 -1
  157. package/dist/server/plugins/mcp/handlers/docs-mcp-handler.js +1 -1
  158. package/dist/server/plugins/mcp/handlers/handle-mcp-request.js +1 -1
  159. package/dist/server/plugins/mcp/index.js +1 -1
  160. package/dist/server/plugins/mcp/servers/docs-server.d.ts +13 -22
  161. package/dist/server/plugins/mcp/servers/docs-server.js +1 -1
  162. package/dist/server/plugins/mcp/types.d.ts +25 -56
  163. package/dist/server/plugins/mcp/workers/execute-mcp-tool.d.ts +2 -2
  164. package/dist/server/plugins/mcp/workers/execute-mcp-tool.js +1 -1
  165. package/dist/server/plugins/openapi-docs/get-server-props.js +1 -1
  166. package/dist/server/plugins/openapi-docs/index.js +1 -1
  167. package/dist/server/plugins/openapi-docs/load-definition.js +3 -3
  168. package/dist/server/plugins/openapi-docs/search/get-ai-search-documents.js +32 -32
  169. package/dist/server/plugins/openapi-docs/search-indexer.js +1 -1
  170. package/dist/server/plugins/openapi-docs/spec-download.api.js +1 -1
  171. package/dist/server/plugins/scorecard-classic/compute-scorecard.js +4 -4
  172. package/dist/server/plugins/scorecard-classic/loaders/scorecard-config.js +1 -1
  173. package/dist/server/plugins/scorecard-classic/loaders/scorecard.js +1 -1
  174. package/dist/server/plugins/search/ai-indexer/prepare-semantic-documents.js +1 -1
  175. package/dist/server/plugins/search/documents/search-documents.js +1 -1
  176. package/dist/server/plugins/search/engines/flexsearch/search-index.js +1 -1
  177. package/dist/server/plugins/search/engines/typesense/index.js +1 -1
  178. package/dist/server/plugins/search/index.js +1 -1
  179. package/dist/server/plugins/search/llmstxt/index.d.ts +0 -1
  180. package/dist/server/plugins/search/llmstxt/index.js +4 -4
  181. package/dist/server/plugins/sso/index.js +1 -1
  182. package/dist/server/plugins/utils.d.ts +4 -0
  183. package/dist/server/plugins/utils.js +1 -1
  184. package/dist/server/ssr/index.js +1 -1
  185. package/dist/server/store.d.ts +7 -5
  186. package/dist/server/store.js +1 -1
  187. package/dist/server/telemetry/index.js +1 -1
  188. package/dist/server/tools/notifiers/terminal-manager.js +5 -5
  189. package/dist/server/types/plugins/common.d.ts +19 -6
  190. package/dist/server/types/plugins/markdown.d.ts +8 -2
  191. package/dist/server/types/redirects.d.ts +6 -0
  192. package/dist/server/utils/llmstxt/get-llms-txt-md-path-by-slug.d.ts +19 -0
  193. package/dist/server/utils/llmstxt/get-llms-txt-md-path-by-slug.js +1 -0
  194. package/dist/server/utils/rbac/is-rbac-scope-items.d.ts +3 -0
  195. package/dist/server/utils/rbac/is-rbac-scope-items.js +1 -0
  196. package/dist/server/utils/rbac.js +1 -1
  197. package/dist/server/utils/redirects/find-redirect.d.ts +8 -31
  198. package/dist/server/utils/redirects/find-redirect.js +1 -1
  199. package/dist/server/utils/redirects/follow-redirect-chain.d.ts +9 -0
  200. package/dist/server/utils/redirects/follow-redirect-chain.js +1 -0
  201. package/dist/server/utils/redirects/validate-redirects.d.ts +8 -0
  202. package/dist/server/utils/redirects/validate-redirects.js +1 -0
  203. package/dist/server/utils/resolve-asset-path.js +1 -1
  204. package/dist/server/utils/search/highlight-text-for-search.d.ts +2 -0
  205. package/dist/server/utils/search/highlight-text-for-search.js +1 -0
  206. package/dist/server/web-server/auth.d.ts +6 -0
  207. package/dist/server/web-server/auth.js +3 -3
  208. package/dist/server/web-server/routes/api-routes/api-routes.js +1 -1
  209. package/dist/server/web-server/routes/app-data.js +1 -1
  210. package/dist/server/web-server/routes/ask-ai.js +1 -1
  211. package/dist/server/web-server/routes/auth.d.ts +2 -1
  212. package/dist/server/web-server/routes/auth.js +1 -1
  213. package/dist/server/web-server/routes/catalog/bff-catalog-related-entities.js +1 -1
  214. package/dist/server/web-server/routes/catalog/bff-catalog.js +1 -1
  215. package/dist/server/web-server/routes/catalog/helpers/has-access-to-entity.js +1 -1
  216. package/dist/server/web-server/routes/cors-proxy.d.ts +3 -1
  217. package/dist/server/web-server/routes/cors-proxy.js +2 -2
  218. package/dist/server/web-server/routes/dynamic-route.js +1 -1
  219. package/dist/server/web-server/routes/feedback.js +1 -1
  220. package/dist/server/web-server/routes/helpers/get-rbac-restrictions-data-for-catalog.js +1 -1
  221. package/dist/server/web-server/routes/index.js +1 -1
  222. package/dist/server/web-server/routes/mcp-oauth.js +1 -1
  223. package/dist/server/web-server/routes/otel/otel.js +1 -1
  224. package/dist/server/web-server/routes/page-data.js +1 -1
  225. package/dist/server/web-server/routes/search.js +1 -1
  226. package/dist/server/web-server/routes/static-content.js +1 -1
  227. package/dist/server/web-server/utils.js +1 -1
  228. package/dist/server/workers/types.d.ts +2 -2
  229. package/dist/server/workers/worker-pool.js +1 -1
  230. package/dist/types/global-data.d.ts +7 -2
  231. package/package.json +13 -14
  232. package/dist/server/node-fetch-polyfill.d.ts +0 -2
  233. package/dist/server/node-fetch-polyfill.js +0 -1
  234. package/dist/server/plugins/markdown/markdoc/plugins/render-mermaid.d.ts +0 -4
  235. package/dist/server/plugins/markdown/markdoc/plugins/render-mermaid.js +0 -1
  236. package/dist/server/plugins/mcp/docs-mcp/tools/docs-mcp-tool.d.ts +0 -55
  237. package/dist/server/plugins/mcp/docs-mcp/tools/docs-mcp-tool.js +0 -1
  238. package/dist/server/plugins/mcp/handlers/mcp-request-handler.d.ts +0 -11
  239. package/dist/server/plugins/mcp/handlers/mcp-request-handler.js +0 -1
  240. package/dist/server/plugins/mcp/servers/base-server.d.ts +0 -17
  241. package/dist/server/plugins/mcp/servers/base-server.js +0 -1
  242. package/dist/server/web-server/routes/helpers/get-md-asset-pathname.d.ts +0 -2
  243. package/dist/server/web-server/routes/helpers/get-md-asset-pathname.js +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,165 @@
1
1
  # @redocly/realm
2
2
 
3
+ ## 0.132.0-next.10
4
+
5
+ ### Patch Changes
6
+
7
+ - 907e21434dc: Improved CORS proxy security by injecting `X-Content-Type-Options: no-sniff` into proxied responses.
8
+ - 15ab3dcb393: Fixed incorrect RBAC validation that caused authenticated MCP tool calls to be handled improperly.
9
+ - 849199c4300: Fixed an issue where complex AI search queries might have resulted with an error.
10
+ - Updated dependencies [2bc33c6758e]
11
+ - Updated dependencies [849199c4300]
12
+ - @redocly/realm-asyncapi-sdk@0.10.0-next.2
13
+ - @redocly/theme@0.64.0-next.5
14
+ - @redocly/asyncapi-docs@1.9.0-next.7
15
+ - @redocly/graphql-docs@1.9.0-next.7
16
+ - @redocly/openapi-docs@3.20.0-next.7
17
+ - @redocly/portal-plugin-mock-server@0.17.0-next.7
18
+
19
+ ## 0.132.0-next.9
20
+
21
+ ### Patch Changes
22
+
23
+ - 3367cbdaba3: Fixed `residency` configuration causing build failures.
24
+
25
+ ## 0.132.0-next.8
26
+
27
+ ### Patch Changes
28
+
29
+ - 70b30e6df96: Fixed Realm link checking to preserve case in redirect targets, preventing mixed-case frontmatter slugs from being incorrectly reported as broken links.
30
+ - 2cc0ed23991: Fixed an issue where images referenced by the `img` Markdoc tag appeared broken after changing `src` and moving the file, requiring a manual page reload.
31
+ - 926df205136: Fixed a Realm CORS proxy security issue that could allow requests to private network addresses and unsafe direct navigation to proxied HTML or JavaScript content.
32
+
33
+ ## 0.132.0-next.7
34
+
35
+ ### Minor Changes
36
+
37
+ - e88064ce2d3: Added support for Excalidraw and PlantUML diagrams.
38
+ Improved dark mode for Mermaid diagrams.
39
+
40
+ ### Patch Changes
41
+
42
+ - 20b850b446a: Fixed an issue where an API path remained visible when all its endpoints were hidden by `x-rbac` access control.
43
+ - 86a3b76a9b9: Fixed an issue where files with identical names but different extensions in the same folder resolved to a single URL, causing pages to be missing from the deployed project.
44
+ - 9ee4d447abf: Fixed banner target priority to ensure that the most specific matching banner is displayed on a page.
45
+ - 92c915d62d7: Added `palette` option to `products` configuration.
46
+ - Updated dependencies [933422fcd9b]
47
+ - Updated dependencies [8710b00b3e1]
48
+ - Updated dependencies [e88064ce2d3]
49
+ - @redocly/openapi-docs@3.20.0-next.6
50
+ - @redocly/realm-asyncapi-sdk@0.10.0-next.1
51
+ - @redocly/theme@0.64.0-next.4
52
+ - @redocly/asyncapi-docs@1.9.0-next.6
53
+ - @redocly/graphql-docs@1.9.0-next.6
54
+ - @redocly/portal-plugin-mock-server@0.17.0-next.6
55
+
56
+ ## 0.132.0-next.6
57
+
58
+ ### Minor Changes
59
+
60
+ - c95cf214aae: Added validation for the `redirects` configuration option to detect dead and circular redirects.
61
+ - 07483ec0596: Added RBAC filtering for Apigee API products in developer onboarding app creation.
62
+ - e756f2aad58: Added a `palette` configuration option that applies one of built-in color palettes to the project.
63
+
64
+ ### Patch Changes
65
+
66
+ - e4e8c9f42d4: Updated legacy palette styles.
67
+ - c336f96cb65: Updated `@redocly/openapi-core` to version `2.25.2`.
68
+ - cd3d136f0c2: Fixed an issue where `json-schema` Markdoc tags produced empty output in LLM content by rendering resolved JSON examples as code blocks.
69
+ - d419330f279: Fixed an issue where the build crashed during the search preparation step.
70
+ - 76b78a806c7: Improved keyboard navigation across Replay's input components for more consistent and predictable focus behavior.
71
+ - Updated dependencies [e4e8c9f42d4]
72
+ - Updated dependencies [f69e101a44b]
73
+ - Updated dependencies [c336f96cb65]
74
+ - Updated dependencies [037535441a2]
75
+ - Updated dependencies [1d1c2056a3c]
76
+ - Updated dependencies [e756f2aad58]
77
+ - @redocly/theme@0.64.0-next.3
78
+ - @redocly/openapi-docs@3.20.0-next.5
79
+ - @redocly/asyncapi-docs@1.9.0-next.5
80
+ - @redocly/graphql-docs@1.9.0-next.5
81
+ - @redocly/portal-plugin-mock-server@0.17.0-next.5
82
+
83
+ ## 0.132.0-next.5
84
+
85
+ ### Patch Changes
86
+
87
+ - Updated dependencies [ac77c65652f]
88
+ - @redocly/asyncapi-docs@1.9.0-next.4
89
+ - @redocly/graphql-docs@1.9.0-next.4
90
+ - @redocly/openapi-docs@3.20.0-next.4
91
+ - @redocly/portal-plugin-mock-server@0.17.0-next.4
92
+
93
+ ## 0.132.0-next.4
94
+
95
+ ### Patch Changes
96
+
97
+ - 2bb8cf6c82a: Fixed an issue where URLs starting with the same characters as API reference, AsyncAPI, Scorecards, Catalog, or Developer Onboarding page slugs served data for those pages instead of showing a 404.
98
+ - 94039c210d4: Added unified analytics to OpenAPI, AsyncAPI, and GraphQL docs components.
99
+ - Updated dependencies [94039c210d4]
100
+ - @redocly/asyncapi-docs@1.9.0-next.3
101
+ - @redocly/graphql-docs@1.9.0-next.3
102
+ - @redocly/openapi-docs@3.20.0-next.3
103
+ - @redocly/portal-plugin-mock-server@0.17.0-next.3
104
+
105
+ ## 0.132.0-next.3
106
+
107
+ ### Patch Changes
108
+
109
+ - 65bdca2d074: Fixed an issue where `Typesense` search ignored OpenAPI paths.
110
+
111
+ ## 0.132.0-next.2
112
+
113
+ ### Patch Changes
114
+
115
+ - 8f8430a807c: Fixed a bug where dismissing any banner on the page prevented all banners from being displayed on that page again.
116
+ - a09344768fc: Fixed an issue where pressing the `Q` key in the terminal in preview mode would not stop the preview.
117
+ - e9058cf9add: Fixed security vulnerability `CVE-2026-0540` by upgrading `dompurify` to version `3.3.3`.
118
+ - ed553fa1387: Fixed an issue where banners didn't support all markdown features.
119
+ - e9058cf9add: Fixed security vulnerabilities `CVE-2026-29085`, `CVE-2026-29045`, and `GHSA-v8w9-8mx6-g223` by upgrading `hono` to version `4.12.8`.
120
+ - 19e40b5dbbd: Fixed agent and crawler requests to static files such as `sitemap.xml` are served instead of a non-existent Markdown path, and the site root resolved `index.html.md` correctly instead of a hidden `.index.html.md` path.
121
+ - bc50b469cf5: Fixed an issue where rules in `targets` were not applied correctly to `scorecardClassic` levels.
122
+ - e9058cf9add: Fixed security vulnerabilities `CVE-2026-27904` and `CVE-2026-27903` by upgrading `minimatch` to version `10.2.4`.
123
+ - 9db8221b3f0: Updated `@redocly/openapi-core` to version `2.24.0`.
124
+ - a09344768fc: Fixed an issue where the process did not terminate after certain short-lived CLI commands were executed.
125
+ - d54ca044f01: Fixed an issue where filters on code walkthrough pages overlapped the **Search** dialog.
126
+ - 1f95c1a87f6: Improved performance when building AI search documents for Markdown by avoiding repeated work while merging content chunks.
127
+ - f156e274867: Fixed an issue where navigating to a page with a hash anchor from another page occasionally failed to scroll to the anchor.
128
+ - Updated dependencies [8f8430a807c]
129
+ - Updated dependencies [e9058cf9add]
130
+ - Updated dependencies [ed553fa1387]
131
+ - Updated dependencies [9db8221b3f0]
132
+ - Updated dependencies [d54ca044f01]
133
+ - @redocly/theme@0.64.0-next.2
134
+ - @redocly/openapi-docs@3.20.0-next.2
135
+ - @redocly/asyncapi-docs@1.9.0-next.2
136
+ - @redocly/graphql-docs@1.9.0-next.2
137
+ - @redocly/portal-plugin-mock-server@0.17.0-next.2
138
+
139
+ ## 0.132.0-next.1
140
+
141
+ ### Minor Changes
142
+
143
+ - 4003b73d9ca: Added `excalidraw` Markdoc tag to support Excalidraw integration.
144
+
145
+ ### Patch Changes
146
+
147
+ - 6561be12489: Fixed an issue where the "Last updated" date displayed incorrect values on project pages.
148
+ - 60b9b77bc39: Fixed a bug that caused search result highlighting to break in Flexsearch when the query contained duplicate words.
149
+ - f1edba375c0: Updated translate memoization to depend on the active language, ensuring hooks recompute and translations update on language switch.
150
+ - ae3272861b4: Added support for `x-badges` in OpenAPI and AsyncAPI parameters and schema properties.
151
+ Badges can now be rendered before and after field names.
152
+ - 87a97521127: Fixed an issue where `partial` Markdoc tags in OpenAPI and AsyncAPI `description` fields did not resolve when path separators differed.
153
+ - Updated dependencies [4003b73d9ca]
154
+ - Updated dependencies [ae3272861b4]
155
+ - Updated dependencies [87a97521127]
156
+ - Updated dependencies [b24ffd4d9fb]
157
+ - @redocly/theme@0.64.0-next.1
158
+ - @redocly/asyncapi-docs@1.9.0-next.1
159
+ - @redocly/openapi-docs@3.20.0-next.1
160
+ - @redocly/graphql-docs@1.9.0-next.1
161
+ - @redocly/portal-plugin-mock-server@0.17.0-next.1
162
+
3
163
  ## 0.132.0-next.0
4
164
 
5
165
  ### Minor Changes
@@ -22,6 +182,37 @@
22
182
  - @redocly/openapi-docs@3.20.0-next.0
23
183
  - @redocly/theme@0.64.0-next.0
24
184
 
185
+ ## 0.131.4
186
+
187
+ ### Patch Changes
188
+
189
+ - a0b5d17c1f: Improved CORS proxy security by injecting `X-Content-Type-Options: no-sniff` into proxied responses.
190
+
191
+ ## 0.131.3
192
+
193
+ ### Patch Changes
194
+
195
+ - 4afca06580: Fixed a Realm CORS proxy security issue that could allow requests to private network addresses and unsafe direct navigation to proxied HTML or JavaScript content.
196
+
197
+ ## 0.131.2
198
+
199
+ ### Patch Changes
200
+
201
+ - 4b110ce8f6: Fixed agent and crawler requests to static files such as `sitemap.xml` are served instead of a non-existent Markdown path, and the site root resolved `index.html.md` correctly instead of a hidden `.index.html.md` path.
202
+
203
+ ## 0.131.1
204
+
205
+ ### Patch Changes
206
+
207
+ - 3ec346dba7: Fixed security vulnerability `CVE-2026-0540` by upgrading `dompurify` to version `3.3.3`.
208
+ - 3ec346dba7: Fixed security vulnerabilities `CVE-2026-29085`, `CVE-2026-29045`, and `GHSA-v8w9-8mx6-g223` by upgrading `hono` to version `4.12.8`.
209
+ - 3ec346dba7: Fixed security vulnerabilities `CVE-2026-27904` and `CVE-2026-27903` by upgrading `minimatch` to version `10.2.4`.
210
+ - 180aa06763: Fixed security vulnerability `CVE-2026-28292` by upgrading `simple-git` to version `3.32.3`.
211
+ - Updated dependencies [3ec346dba7]
212
+ - @redocly/openapi-docs@3.19.1
213
+ - @redocly/asyncapi-docs@1.8.1
214
+ - @redocly/portal-plugin-mock-server@0.16.1
215
+
25
216
  ## 0.131.0
26
217
 
27
218
  ### Minor Changes
package/dist/bin.d.ts CHANGED
@@ -1,5 +1,4 @@
1
1
  #!/usr/bin/env node
2
2
  import './server/utils/set-execution-mode.js';
3
3
  import './cli/utils/node-version-check.js';
4
- import './server/node-fetch-polyfill.js';
5
4
  //# sourceMappingURL=bin.d.ts.map
package/dist/bin.js CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- import"./server/utils/set-execution-mode.js";import"./cli/utils/node-version-check.js";import o from"mri";import*as r from"node:path";import{tmpdir as T}from"node:os";import*as u from"node:fs";import"./server/node-fetch-polyfill.js";import{cliCommandNames as C}from"./constants/common.js";import{initPlugins as S}from"./server/plugins/lifecycle.js";import{loadEnvVariables as k}from"./server/utils/envs/load-env-variables.js";import{PORTAL_VERSION as I}from"./server/version.js";import{logger as i}from"./server/tools/notifiers/logger.js";import{reporter as t}from"./server/tools/notifiers/reporter.js";import{sha as V}from"./server/utils/crypto/sha.js";import{envConfig as L}from"./server/config/env-config.js";import{PACKAGE_NAME as w}from"./config/product-gates.js";import{develop as R}from"./cli/develop.js";import{eject as _}from"./cli/eject/index.js";import{beforeCommand as E}from"./server/utils/lifecycle-hooks.js";import{Store as j}from"./server/store.js";import{build as M}from"./cli/build/index.js";import{fromCurrentDir as N}from"./server/utils/paths.js";import{translationsCliOpts as F}from"./cli/translations/options.js";import{generateTranslations as U}from"./cli/translations/index.js";import{EntitlementsProvider as $}from"./server/entitlements/entitlements-provider.js";import{isValidPlan as B}from"./server/entitlements/is-valid-plan.js";import{stopAllCompilers as G}from"./server/esbuild/esbuild.js";import{copyLibsqlPrebuiltBinary as q}from"./cli/build/libsql/copy-prebuilt-binary.js";import{telemetry as f}from"./cli/telemetry/index.js";import{stats as K}from"./cli/stats/index.js";import{statsCliOpts as Y}from"./cli/stats/options.js";const c=process.argv[2];let a;const v={alias:{d:"project-dir",p:"port"},default:{"project-dir":L.REDOCLY_CONTENT_DIR||process.cwd(),outdir:"public"}},z={alias:v.alias,default:{...v.default,plan:"enterprise"}},H={alias:{d:"buildDir"},default:{buildDir:"public"}},J={boolean:["force"],alias:{f:"force",d:"project-dir"},default:{"project-dir":process.cwd()}};process.on("uncaughtException",async function(e){e?.code==="ERR_INVALID_STATE"?console.log("Ignore premature close error"):(i.error("Uncaught exception occurred. Stopping compilers."),await G(),i.error("Exiting due to uncaught exception"),await t.panic(e))});try{c||await t.panicOnContentError("Command not specified.");const e=$.instance();switch(["build","prepare","serve","stats"].includes(c)&&await e.init(),["eject","translate"].includes(c)&&await e.init({developModePlan:"enterprise"}),c){case"develop":case"preview":const s=o(process.argv.slice(3),z),O=r.resolve(s["project-dir"]),h=encodeURIComponent(V(O)),p=r.join(T(),"redocly-public-"+h);u.existsSync(p)&&(i.verbose("Cleaning temporary output directory..."),u.rmSync(p,{recursive:!0,force:!0}),i.verbose("Temporary output directory cleaned."));const m=s.plan.toLowerCase();B(m)||await t.panicOnContentError(`Invalid --plan argument value '${m}'.`),await e.init({developModePlan:m}),a=new j({contentDir:r.resolve(s["project-dir"]),outdir:p,serverOutDir:N(import.meta.url,"./server/esbuild/cache/server")}),await E(C.DEVELOP,s,a),await R(s,a);break;case"build":case"prepare":const n=o(process.argv.slice(3),v),g=r.resolve(r.join(n.outdir,"server"));a=new j({contentDir:r.resolve(n["project-dir"]),outdir:r.resolve(n.outdir,"client"),serverOutDir:g}),await E(C.BUILD,n,a),q(g),await M(n,a);break;case"serve":await k();const A=o(process.argv.slice(3),H),D=r.resolve(A.buildDir);f.sendServeCliCommandExecutedMessage();const b=r.join(D,"server","index.mjs");u.existsSync(b)||await t.panic(`Server not found. Please run \`${w} build\` first (or \`${w} prepare\` for the deprecated command)`),import(b).catch(async l=>{await t.panic("Failed to load server",l)});break;case"eject":e.canAccessFeature("themeEjecting")||await t.panicOnContentError('The "eject" command is not available for this project');const d=o(process.argv.slice(3),J),{lifecycleContext:{getConfig:y,fs:P}}=await S({outdir:"",contentDir:r.resolve(d["project-dir"]),setGlobalConfig:()=>null});P.dispose(),f.sendCliCommandEjectExecutedMessage([{object:"cli_command",arguments:d}]),await _({...d,config:await y()}),i.clearAllTimeouts();break;case"translate":if(e.canAccessFeature("l10n")){const l=o(process.argv.slice(3),F);f.sendCliCommandTranslateExecutedMessage({arguments:l}),await U(l)}else await t.panicOnContentError('The "translate" command is not available for this project');break;case"stats":const x=o(process.argv.slice(3),Y);await K(x);break;case"--version":console.log(I);break;default:await t.panicOnContentError(`Unknown command "${c}"`)}}catch(e){i.error("Exiting due to uncaught exception"),await t.panic(e)}
2
+ import"./server/utils/set-execution-mode.js";import"./cli/utils/node-version-check.js";import o from"mri";import*as r from"node:path";import{tmpdir as T}from"node:os";import*as u from"node:fs";import{cliCommandNames as C}from"./constants/common.js";import{initPlugins as S}from"./server/plugins/lifecycle.js";import{loadEnvVariables as k}from"./server/utils/envs/load-env-variables.js";import{PORTAL_VERSION as I}from"./server/version.js";import{logger as i}from"./server/tools/notifiers/logger.js";import{reporter as t}from"./server/tools/notifiers/reporter.js";import{sha as V}from"./server/utils/crypto/sha.js";import{envConfig as L}from"./server/config/env-config.js";import{PACKAGE_NAME as w}from"./config/product-gates.js";import{develop as R}from"./cli/develop.js";import{eject as _}from"./cli/eject/index.js";import{beforeCommand as E}from"./server/utils/lifecycle-hooks.js";import{Store as j}from"./server/store.js";import{build as M}from"./cli/build/index.js";import{fromCurrentDir as N}from"./server/utils/paths.js";import{translationsCliOpts as F}from"./cli/translations/options.js";import{generateTranslations as U}from"./cli/translations/index.js";import{EntitlementsProvider as $}from"./server/entitlements/entitlements-provider.js";import{isValidPlan as B}from"./server/entitlements/is-valid-plan.js";import{stopAllCompilers as G}from"./server/esbuild/esbuild.js";import{copyLibsqlPrebuiltBinary as q}from"./cli/build/libsql/copy-prebuilt-binary.js";import{telemetry as f}from"./cli/telemetry/index.js";import{stats as K}from"./cli/stats/index.js";import{statsCliOpts as Y}from"./cli/stats/options.js";const c=process.argv[2];let a;const v={alias:{d:"project-dir",p:"port"},default:{"project-dir":L.REDOCLY_CONTENT_DIR||process.cwd(),outdir:"public"}},z={alias:v.alias,default:{...v.default,plan:"enterprise"}},H={alias:{d:"buildDir"},default:{buildDir:"public"}},J={boolean:["force"],alias:{f:"force",d:"project-dir"},default:{"project-dir":process.cwd()}};process.on("uncaughtException",async function(e){e?.code==="ERR_INVALID_STATE"?console.log("Ignore premature close error"):(i.error("Uncaught exception occurred. Stopping compilers."),await G(),i.error("Exiting due to uncaught exception"),await t.panic(e))});try{c||await t.panicOnContentError("Command not specified.");const e=$.instance();switch(["build","prepare","serve","stats"].includes(c)&&await e.init(),["eject","translate"].includes(c)&&await e.init({developModePlan:"enterprise"}),c){case"develop":case"preview":const s=o(process.argv.slice(3),z),O=r.resolve(s["project-dir"]),h=encodeURIComponent(V(O)),p=r.join(T(),"redocly-public-"+h);u.existsSync(p)&&(i.verbose("Cleaning temporary output directory..."),u.rmSync(p,{recursive:!0,force:!0}),i.verbose("Temporary output directory cleaned."));const m=s.plan.toLowerCase();B(m)||await t.panicOnContentError(`Invalid --plan argument value '${m}'.`),await e.init({developModePlan:m}),a=new j({contentDir:r.resolve(s["project-dir"]),outdir:p,serverOutDir:N(import.meta.url,"./server/esbuild/cache/server")}),await E(C.DEVELOP,s,a),await R(s,a);break;case"build":case"prepare":const n=o(process.argv.slice(3),v),g=r.resolve(r.join(n.outdir,"server"));a=new j({contentDir:r.resolve(n["project-dir"]),outdir:r.resolve(n.outdir,"client"),serverOutDir:g}),await E(C.BUILD,n,a),q(g),await M(n,a);break;case"serve":await k();const A=o(process.argv.slice(3),H),D=r.resolve(A.buildDir);f.sendServeCliCommandExecutedMessage();const b=r.join(D,"server","index.mjs");u.existsSync(b)||await t.panic(`Server not found. Please run \`${w} build\` first (or \`${w} prepare\` for the deprecated command)`),import(b).catch(async l=>{await t.panic("Failed to load server",l)});break;case"eject":e.canAccessFeature("themeEjecting")||await t.panicOnContentError('The "eject" command is not available for this project');const d=o(process.argv.slice(3),J),{lifecycleContext:{getConfig:y,fs:P}}=await S({outdir:"",contentDir:r.resolve(d["project-dir"]),setGlobalConfig:()=>null});P.dispose(),f.sendCliCommandEjectExecutedMessage([{object:"cli_command",arguments:d}]),await _({...d,config:await y()}),i.clearAllTimeouts();break;case"translate":if(e.canAccessFeature("l10n")){const l=o(process.argv.slice(3),F);f.sendCliCommandTranslateExecutedMessage({arguments:l}),await U(l)}else await t.panicOnContentError('The "translate" command is not available for this project');break;case"stats":const x=o(process.argv.slice(3),Y);await K(x);break;case"--version":console.log(I);break;default:await t.panicOnContentError(`Unknown command "${c}"`)}}catch(e){i.error("Exiting due to uncaught exception"),await t.panic(e)}
@@ -1 +1 @@
1
- import{AsyncApiRealmCLI as c}from"@redocly/realm-asyncapi-sdk";import{ulid as l}from"ulid";import{TELEMETRY_ENABLED as i}from"../../server/constants/common.js";import{shutdowner as s}from"../../server/tools/shutdowner.js";import{envConfig as t}from"../../server/config/env-config.js";import{PACKAGE_NAME as n}from"../../config/product-gates.js";class d extends c.Telemetry{#e=new Map;constructor(){super(),this.updateCloudEventData(()=>({organizationId:t.ORGANIZATION_ID||"",organizationSlug:t.ORGANIZATION_SLUG||"",projectId:t.PROJECT_ID||"",projectSlug:t.PROJECT_SLUG||"",origin:"realmCli",actor:{id:`ann_${l()}`,object:"user",uri:""},source:"cli"}))}initialize(e,r,o){const a=r!==void 0?!(r&&i):!i;this.init({otel:{serviceName:"realm-cli",serviceVersion:`${n}@${e}`,collectorTraceUrl:t.OTEL_TRACES_URL||"https://otel.cloud.redocly.com/v1/traces",isProd:t.isProductionEnv,version:"1.0",tracerName:"cli-telemetry"},disabled:a,verbose:o}),s.registerShutdownCallback(this.#r.bind(this))}addTraceStepCallbacks(e,{error:r,end:o}){this.#e.set(e,{error:r,end:o})}removeTraceStepCallbacks(e){this.#e.delete(e)}async#r(e){for(const[,{error:r,end:o}]of this.#e)e&&r(e),o();this.#e.clear(),await this.forceFlush(),await this.shutdown()}}const m=new d,A=m.tracer;export{m as telemetry,A as telemetryTracer};
1
+ import{AsyncApiRealmCLI as c}from"@redocly/realm-asyncapi-sdk";import{ulid as l}from"ulid";import{TELEMETRY_ENABLED as i}from"../../server/constants/common.js";import{shutdowner as s}from"../../server/tools/shutdowner.js";import{envConfig as r}from"../../server/config/env-config.js";import{PACKAGE_NAME as n}from"../../config/product-gates.js";class d extends c.Telemetry{#e=new Map;constructor(){super(),this.updateCloudEventData(()=>({organizationId:r.ORGANIZATION_ID||"",organizationSlug:r.ORGANIZATION_SLUG||"",projectId:r.PROJECT_ID||"",projectSlug:r.PROJECT_SLUG||"",origin:"realmCli",actor:{id:`ann_${l()}`,object:"user",uri:""},source:"cli",env:r.redoclyEnv}))}initialize(e,t,o){const a=t!==void 0?!(t&&i):!i;this.init({otel:{serviceName:"realm-cli",serviceVersion:`${n}@${e}`,collectorTraceUrl:r.OTEL_TRACES_URL||"https://otel.cloud.redocly.com/v1/traces",isProd:r.isProductionEnv,version:"1.0",tracerName:"cli-telemetry"},disabled:a,verbose:o}),s.registerShutdownCallback(this.#r.bind(this))}addTraceStepCallbacks(e,{error:t,end:o}){this.#e.set(e,{error:t,end:o})}removeTraceStepCallbacks(e){this.#e.delete(e)}async#r(e){for(const[,{error:t,end:o}]of this.#e)e&&t(e),o();this.#e.clear(),await this.forceFlush(),await this.shutdown()}}const m=new d,A=m.tracer;export{m as telemetry,A as telemetryTracer};
@@ -1 +1 @@
1
- import*as o from"react";import{useEffect as l}from"react";import{Outlet as E,useLocation as g,useNavigate as d}from"react-router-dom";import{components as h}from"@redocly-markdoc/components";import P from"@markdoc/markdoc/dist/react";import{withoutPathPrefix as T}from"@redocly/theme/core/utils";import{InternalServerErrorLayout as D}from"@redocly/theme/layouts/InternalServerErrorLayout";import{RootLayout as S}from"@redocly/theme/layouts/RootLayout";import{PageLayout as L}from"@redocly/theme/layouts/PageLayout";import{components as i}from"@redocly/theme/markdoc/default";import{Sidebar as _}from"./app/Sidebar/Sidebar";import{loadAndNavigate as v}from"./app/utils/loadAndNavigate";import{useActions as C}from"./app/Sidebar/useActions";import{useScrollTracker as A}from"./app/hooks/useScrollTracker";import{useAutoScroll as y}from"./app/hooks/useAutoScroll";import{OPENAPI_DOCS_TEMPLATE_ID as O,ASYNC_API_DOCS_TEMPLATE_ID as R,GRAPHQL_TEMPLATE_ID as N}from"../constants/common";import{removeTrailingSlash as I}from"../utils/url/remove-trailing-slash";import{removeLeadingSlash as b}from"../utils/url/remove-leading-slash";import*as k from"./app/markdoc/custom-components/index";import{DefaultStyles as M}from"./styling/default-styles";import{ThemeDataProvider as x}from"./providers/theme/ThemeDataProvider";import{PageDataContext as B}from"./providers/page-data/PageDataContext";import{SeoTags as G}from"./app/seo/SeoTags";import{useRouterForLocalLinks as V,useRunningEnvironmentCheck as F}from"./providers/hooks";import{usePageData as $,usePageDataLoader as w}from"./providers/page-data/hooks";import{ErrorBoundary as H}from"./ErrorBoundary";import{ErrorDetails as c,Loader as Q}from"./server-entry";import"@styles";import{useRouteChangeTracker as U}from"./app/hooks/useRouteChangeTracker";import{isInIframe as Y}from"./utils";import{useL10n as j}from"./app/l10n";import{PostMessageProvider as q}from"./providers/post-message/PostMessageProvider";import{ScriptLoader as z}from"./ScriptLoader";import{clientRoutes as J}from"./runtime/generated/routes.js";import{DevModeFloatingBar as K}from"./app/DevModeFloatingBar";import{usePageTimeTracker as W}from"./app/hooks/usePageTimeTracker";globalThis.__LOADER.markdocComponents={...k,...i};function ke(){const e=w(),[t,n]=o.useState(e),r=g(),m=d();j(),l(()=>{e?n(e):v({navigate:m,to:r.pathname+r.search+r.hash}).then(()=>n(Q.loadSync(r.pathname)))},[r,m]),V();const a=F();return a?(console.log(a),o.createElement(c,{error:{message:a,name:""}})):t?o.createElement(H,null,o.createElement(M,null),o.createElement(B.Provider,{value:e||t},o.createElement(x,null,o.createElement(q,{enabled:process.env.NODE_ENV==="development"||Y()},o.createElement(E,null))))):null}function u(){U(),W(),A(),y();const e=$(),t=C(),{layout:n}=t,r={layout:n},m=process.env.NODE_ENV!=="production",a=globalThis.SSR_OMIT_SUSPENSE,s=e?.props.ast&&e.props.ast.$$mdtype==="Tag"?P(e.props.ast,o,{components:{...globalThis.__LOADER.markdocComponents,...i,...h}}):null,f=I(e?.slug||"");if(l(()=>{document.documentElement.classList.add("ready")},[]),e?.props.pagePropGetterError?.message)return m?o.createElement(c,{error:{...e?.props?.pagePropGetterError}}):o.createElement(D,null);if(!!e?.props?.compilationErrors?.length)return e?.Template?o.createElement(e.Template,{pageProps:e?.props,children:s}):null;const p=()=>o.createElement(S,null,o.createElement(L,{sidebar:o.createElement(_,{layoutControls:t})},o.createElement(G,{seo:e?.props.seo,slug:f}),e?.Template?o.createElement(e.Template,{pageProps:[O,R,N].includes(e.templateId)?{...e.props,apiOptions:r}:e?.props,children:s}):null),process.env.NODE_ENV!=="production"&&o.createElement(K,null),o.createElement(z,null));return a?p():o.createElement(o.Suspense,null,p())}const Me=[...J.map(e=>({Component:u,path:b(T(e).substring(1)+"/*")})),{Component:u,path:"*"}];export{ke as App,u as Page,Me as routes};
1
+ import*as e from"react";import{useEffect as c}from"react";import{Outlet as E,useLocation as d,useNavigate as g}from"react-router-dom";import{withoutPathPrefix as h}from"@redocly/theme/core/utils";import{useThemeConfig as P}from"@redocly/theme/core/hooks";import{InternalServerErrorLayout as D}from"@redocly/theme/layouts/InternalServerErrorLayout";import{RootLayout as S}from"@redocly/theme/layouts/RootLayout";import{PageLayout as T}from"@redocly/theme/layouts/PageLayout";import{components as L}from"@redocly/theme/markdoc/default";import{Sidebar as v}from"./app/Sidebar/Sidebar";import{loadAndNavigate as _}from"./app/utils/loadAndNavigate";import{useActions as C}from"./app/Sidebar/useActions";import{useScrollTracker as y}from"./app/hooks/useScrollTracker";import{useAutoScroll as A}from"./app/hooks/useAutoScroll";import{OPENAPI_DOCS_TEMPLATE_ID as N,ASYNC_API_DOCS_TEMPLATE_ID as O,GRAPHQL_TEMPLATE_ID as R}from"../constants/common";import{removeTrailingSlash as I}from"../utils/url/remove-trailing-slash";import{removeLeadingSlash as M}from"../utils/url/remove-leading-slash";import*as k from"./app/markdoc/custom-components/index";import{DefaultStyles as b}from"./styling/default-styles";import{ThemeDataProvider as x}from"./providers/theme/ThemeDataProvider";import{PageDataContext as B}from"./providers/page-data/PageDataContext";import{SeoTags as G}from"./app/seo/SeoTags";import{useRouterForLocalLinks as V,useRunningEnvironmentCheck as F}from"./providers/hooks";import{usePageData as w,usePageDataLoader as H}from"./providers/page-data/hooks";import{ErrorBoundary as Q}from"./ErrorBoundary";import{ErrorDetails as u,Loader as U}from"./server-entry";import"@styles";import{useRouteChangeTracker as Y}from"./app/hooks/useRouteChangeTracker";import{isInIframe as j}from"./utils";import{useL10n as q}from"./app/l10n";import{PostMessageProvider as z}from"./providers/post-message/PostMessageProvider";import{ScriptLoader as J}from"./ScriptLoader";import{clientRoutes as K}from"./runtime/generated/routes.js";import{DevModeFloatingBar as W}from"./app/DevModeFloatingBar";import{usePageTimeTracker as X}from"./app/hooks/usePageTimeTracker";import{useMarkdocRenderer as Z}from"./app/hooks/markdown/useMarkdocRenderer";globalThis.__LOADER.markdocComponents={...k,...L};function ke(){const o=H(),[a,n]=e.useState(o),r=d(),m=g();q();const s=e.useMemo(()=>function(){const{palette:p}=P();return e.createElement(b,{palette:p})},[]);c(()=>{o?n(o):_({navigate:m,to:r.pathname+r.search+r.hash}).then(()=>n(U.loadSync(r.pathname)))},[r,m]),V();const t=F();return t?(console.log(t),e.createElement(u,{error:{message:t,name:""}})):a?e.createElement(Q,null,e.createElement(B.Provider,{value:o||a},e.createElement(x,null,e.createElement(s,null),e.createElement(z,{enabled:process.env.NODE_ENV==="development"||j()},e.createElement(E,null))))):null}function f(){Y(),X(),y(),A();const o=w(),a=C(),{layout:n}=a,r={layout:n},m=process.env.NODE_ENV!=="production",s=globalThis.SSR_OMIT_SUSPENSE,t=Z(o?.props?.ast),l=I(o?.slug||"");if(c(()=>{document.documentElement.classList.add("ready")},[]),o?.props.pagePropGetterError?.message)return m?e.createElement(u,{error:{...o?.props?.pagePropGetterError}}):e.createElement(D,null);if(!!o?.props?.compilationErrors?.length)return o?.Template?e.createElement(o.Template,{pageProps:o?.props,children:t}):null;const i=()=>e.createElement(S,null,e.createElement(T,{sidebar:e.createElement(v,{layoutControls:a})},e.createElement(G,{seo:o?.props.seo,slug:l}),o?.Template?e.createElement(o.Template,{pageProps:[N,O,R].includes(o.templateId)?{...o.props,apiOptions:r}:o?.props,children:t}):null),process.env.NODE_ENV!=="production"&&e.createElement(W,null),e.createElement(J,null));return s?i():e.createElement(e.Suspense,null,i())}const be=[...K.map(o=>({Component:f,path:M(h(o).substring(1)+"/*")})),{Component:f,path:"*"}];export{ke as App,f as Page,be as routes};
@@ -1 +1 @@
1
- import e from"react";import{BrowserRouter as o}from"react-router-dom";import{ThemeDataContext as n,SearchSessionProvider as i}from"@redocly/theme/core/contexts";import u from"@redocly/theme/core/templates/Markdown";import{useAnchorPositioning as m,useBreadcrumbs as d,useBanner as l,useCatalogClassic as c,useCurrentProduct as p,useGlobalData as g,useI18n as h,useI18nConfig as f,useL10n as b,useL10nConfig as C,usePageData as T,usePageSharedData as k,usePageVersions as v,usePreloadHistory as P,useProducts as w,useUserMenu as S,useSubmitFeedback as y,useTranslate as D,useSidebarSiblingsData as $,usePageProps as E,useUserTeams as I,useMarkdownText as L,useCodeHighlight as x,useLoadAndNavigate as F,useCatalog as H,useCatalogSort as M,useCatalogSearch as A,useFetchCatalogEntities as R,useFetchCatalogEntitiesRelations as B,useTelemetry as r,useMcpData as G,useFetchCatalogEntityRevisions as O}from"./app/hooks";import{Link as U}from"./app/Link";import{useFacetQuery as N,useSearch as Q,useAiSearch as V}from"./app/search";import{useSidebarItems as j}from"./app/Sidebar/useSidebarItems";import{PageDataContext as q}from"./providers/page-data/PageDataContext";const s={Template:({pageProps:a,children:t})=>e.createElement(u,{pageProps:{...a,metadata:{...a.metadata,markdoc:{tagList:[]}}}},t),templateId:"markdown",isPublic:!0,props:{seo:{title:"Test"},ast:{$$mdtype:"Tag",name:"div",children:[{$$mdtype:"Tag",name:"Heading",attributes:{id:"github-flavored-markdown",level:1},children:["GitHub-flavored markdown"]},{$$mdtype:"Tag",name:"p",attributes:{},children:["These exercises assume you have",{$$mdtype:"Tag",name:"a",attributes:{href:"https://docs.redoc.ly/"},children:["basic markdown knowledge"]},"."]},{$$mdtype:"Tag",name:"Heading",attributes:{id:"create-a-new-plain-markdown-page",level:2},children:["Create a new plain markdown page"]}]},lastModified:new Date("2022-01-01").toISOString()},slug:"",userData:{isAuthenticated:!1,name:"test name",picture:""},sidebar:null,sharedData:{},sharedDataIds:{}},z={useAnchorPositioning:m,useBreadcrumbs:d,useBanner:l,useCatalog:H,useCatalogSort:M,useCatalogSearch:A,useFetchCatalogEntities:R,useFetchCatalogEntitiesRelations:B,useFetchCatalogEntityRevisions:O,useCatalogClassic:c,useCurrentProduct:p,useGlobalData:g,useSearch:Q,useAiSearch:V,useFacetQuery:N,useI18n:h,useI18nConfig:f,useL10n:b,useL10nConfig:C,usePageData:T,usePageSharedData:k,usePageVersions:v,usePreloadHistory:P,useProducts:w,useUserMenu:S,useSidebarItems:j,useSidebarSiblingsData:$,useSubmitFeedback:y,useTranslate:D,useUserTeams:I,usePageProps:E,useMarkdownText:L,useCodeHighlight:x,useLoadAndNavigate:F,useTelemetry:r,useOtelTelemetry:r,useMcpData:G},J={LinkComponent:U},K={hooks:z,components:J,config:{}};function se({children:a,customPageData:t}){return e.createElement(o,null,e.createElement(i,null,e.createElement(q.Provider,{value:{...s,...t,props:{...s.props,...t?.props}}},e.createElement(n.Provider,{value:K},a))))}export{se as TestProvider};
1
+ import e from"react";import{BrowserRouter as o}from"react-router-dom";import{ThemeDataContext as n,SearchSessionProvider as i}from"@redocly/theme/core/contexts";import u from"@redocly/theme/core/templates/Markdown";import{useAnchorPositioning as m,useBreadcrumbs as d,useBanner as l,useCatalogClassic as c,useCurrentProduct as p,useGlobalData as g,useI18n as h,useI18nConfig as f,useL10n as b,useL10nConfig as C,usePageData as T,usePageSharedData as k,usePageVersions as v,usePreloadHistory as P,useProducts as w,useUserMenu as S,useSubmitFeedback as y,useTranslate as D,useSidebarSiblingsData as $,usePageProps as E,useUserTeams as I,useMarkdownText as L,useMarkdocRenderer as M,useCodeHighlight as x,useLoadAndNavigate as F,useCatalog as H,useCatalogSort as R,useCatalogSearch as A,useFetchCatalogEntities as B,useFetchCatalogEntitiesRelations as G,useTelemetry as r,useMcpData as O,useFetchCatalogEntityRevisions as U}from"./app/hooks";import{Link as N}from"./app/Link";import{useFacetQuery as Q,useSearch as V,useAiSearch as j}from"./app/search";import{useSidebarItems as q}from"./app/Sidebar/useSidebarItems";import{PageDataContext as z}from"./providers/page-data/PageDataContext";const s={Template:({pageProps:a,children:t})=>e.createElement(u,{pageProps:{...a,metadata:{...a.metadata,markdoc:{tagList:[]}}}},t),templateId:"markdown",isPublic:!0,props:{seo:{title:"Test"},ast:{$$mdtype:"Tag",name:"div",children:[{$$mdtype:"Tag",name:"Heading",attributes:{id:"github-flavored-markdown",level:1},children:["GitHub-flavored markdown"]},{$$mdtype:"Tag",name:"p",attributes:{},children:["These exercises assume you have",{$$mdtype:"Tag",name:"a",attributes:{href:"https://docs.redoc.ly/"},children:["basic markdown knowledge"]},"."]},{$$mdtype:"Tag",name:"Heading",attributes:{id:"create-a-new-plain-markdown-page",level:2},children:["Create a new plain markdown page"]}]},lastModified:new Date("2022-01-01").toISOString()},slug:"",userData:{isAuthenticated:!1,name:"test name",picture:""},sidebar:null,sharedData:{},sharedDataIds:{}},J={useAnchorPositioning:m,useBreadcrumbs:d,useBanner:l,useCatalog:H,useCatalogSort:R,useCatalogSearch:A,useFetchCatalogEntities:B,useFetchCatalogEntitiesRelations:G,useFetchCatalogEntityRevisions:U,useCatalogClassic:c,useCurrentProduct:p,useGlobalData:g,useSearch:V,useAiSearch:j,useFacetQuery:Q,useI18n:h,useI18nConfig:f,useL10n:b,useL10nConfig:C,usePageData:T,usePageSharedData:k,usePageVersions:v,usePreloadHistory:P,useProducts:w,useUserMenu:S,useSidebarItems:q,useSidebarSiblingsData:$,useSubmitFeedback:y,useTranslate:D,useUserTeams:I,usePageProps:E,useMarkdownText:L,useMarkdocRenderer:M,useCodeHighlight:x,useLoadAndNavigate:F,useTelemetry:r,useOtelTelemetry:r,useMcpData:O},K={LinkComponent:N},W={hooks:J,components:K,config:{}};function oe({children:a,customPageData:t}){return e.createElement(o,null,e.createElement(i,null,e.createElement(z.Provider,{value:{...s,...t,props:{...s.props,...t?.props}}},e.createElement(n.Provider,{value:W},a))))}export{oe as TestProvider};
@@ -1,19 +1,19 @@
1
- import*as r from"react";import i from"styled-components";function t(e){return r.createElement(n,{...e},r.createElement("div",null),r.createElement("div",null),r.createElement("div",null),r.createElement("div",null))}const n=i.div`
1
+ import*as e from"react";import i from"styled-components";function t(r){return e.createElement(a,{...r},e.createElement("div",null),e.createElement("div",null),e.createElement("div",null),e.createElement("div",null))}const a=i.div`
2
2
  display: inline-block;
3
3
  position: relative;
4
- width: ${({size:e})=>e||"60"}px;
5
- height: ${({size:e})=>e||"60"}px;
4
+ width: ${({size:r})=>r||"60"}px;
5
+ height: ${({size:r})=>r||"60"}px;
6
6
  div {
7
7
  box-sizing: border-box;
8
8
  display: block;
9
9
  position: absolute;
10
- width: ${({size:e})=>e||"44"}px;
11
- height: ${({size:e})=>e||"44"}px;
10
+ width: ${({size:r})=>r||"44"}px;
11
+ height: ${({size:r})=>r||"44"}px;
12
12
  margin: 0;
13
- border: 2px solid var(--color-primary-base);
13
+ border: 2px solid var(--color-primary-base, var(--color-blueberry-6));
14
14
  border-radius: 50%;
15
15
  animation: ring 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;
16
- border-color: var(--color-primary-base) transparent transparent transparent;
16
+ border-color: var(--color-primary-base, var(--color-blueberry-6)) transparent transparent transparent;
17
17
  }
18
18
  div:nth-child(1) {
19
19
  animation-delay: -0.45s;
@@ -32,4 +32,4 @@ import*as r from"react";import i from"styled-components";function t(e){return r.
32
32
  transform: rotate(360deg);
33
33
  }
34
34
  }
35
- `;export{n as StyledSpinner,t as default};
35
+ `;export{a as StyledSpinner,t as default};
@@ -1,7 +1,6 @@
1
- import type { SortOption } from '@redocly/theme/core/types';
2
- export declare function useCatalogSort(defaultSortOption?: SortOption | null): {
3
- sortOption: SortOption | null;
4
- setSortOption: import("react").Dispatch<import("react").SetStateAction<SortOption | null>>;
1
+ export declare function useCatalogSort(defaultSortOption?: string | null): {
2
+ sortOption: string | null;
3
+ setSortOption: import("react").Dispatch<import("react").SetStateAction<string | null>>;
5
4
  handleSortClick: (sortKey: string, direction: "asc" | "desc") => void;
6
5
  isColumnSorted: (sortKey: string, direction: "asc" | "desc") => boolean;
7
6
  };
@@ -1 +1 @@
1
- import{useInfiniteQuery as y}from"@tanstack/react-query";import{useMemo as m,useRef as w}from"react";import{withPathPrefix as R}from"@redocly/theme/core/utils";import{getNextPageParam as S}from"../../../utils/catalog/get-next-page-param";import{useSearchTracker as F}from"./useSearchTracker";function x({limit:o=20,filter:i,sort:s="type,title",search:n}={},r){const l=r?r.items.map(e=>e.key).join("-"):[],c=w(!0),d=c.current&&r;c.current&&(c.current=!1);const a=y({queryFn:async e=>{const t=new URLSearchParams;i&&t.append("filter",i),s&&t.append("sort",s),o&&t.append("limit",o.toString()),n&&t.append("search",n),e.pageParam&&Object.entries(e.pageParam).forEach(([P,f])=>{f!=null&&t.append(P,f.toString())});const p=new URL(R("/bff/catalog-entities"),window.location.origin);p.search=t.toString();const u=await fetch(p.toString());if(!u.ok)throw new Error(`Failed to fetch catalog entities from ${p.pathname}`);return u.json()},queryKey:["bff/catalog-entities",{limit:o,filter:i,sort:s,search:n,initialDataKeys:l}],initialData:d?{pages:[r],pageParams:[null]}:void 0,initialPageParam:null,getNextPageParam:S,refetchOnMount:!0,placeholderData:e=>e}),h=m(()=>{const e=a.data?.pages||[];return e[e.length-1]?.page.total},[a.data?.pages]),g=m(()=>(a.data?.pages||[]).flatMap(e=>e.items||[]),[a.data?.pages]);return F({isLoading:a.isLoading||a.isFetching,items:g,apiResource:"entities",searchQuery:n??""}),{query:a,items:g,total:h}}export{x as useFetchCatalogEntities};
1
+ import{useInfiniteQuery as y}from"@tanstack/react-query";import{useMemo as d,useRef as w}from"react";import{withPathPrefix as R}from"@redocly/theme/core/utils";import{getNextPageParam as S}from"../../../utils/catalog/get-next-page-param";import{useSearchTracker as F}from"./useSearchTracker";function x({limit:o=20,filter:i,sort:s="updated_at",search:n}={},r){const m=r?r.items.map(e=>e.key).join("-"):[],c=w(!0),l=c.current&&r;c.current&&(c.current=!1);const a=y({queryFn:async e=>{const t=new URLSearchParams;i&&t.append("filter",i),s&&t.append("sort",s),o&&t.append("limit",o.toString()),n&&t.append("search",n),e.pageParam&&Object.entries(e.pageParam).forEach(([P,f])=>{f!=null&&t.append(P,f.toString())});const p=new URL(R("/bff/catalog-entities"),window.location.origin);p.search=t.toString();const u=await fetch(p.toString());if(!u.ok)throw new Error(`Failed to fetch catalog entities from ${p.pathname}`);return u.json()},queryKey:["bff/catalog-entities",{limit:o,filter:i,sort:s,search:n,initialDataKeys:m}],initialData:l?{pages:[r],pageParams:[null]}:void 0,initialPageParam:null,getNextPageParam:S,refetchOnMount:!0,placeholderData:e=>e}),h=d(()=>{const e=a.data?.pages||[];return e[e.length-1]?.page.total},[a.data?.pages]),g=d(()=>(a.data?.pages||[]).flatMap(e=>e.items||[]),[a.data?.pages]);return F({isLoading:a.isLoading||a.isFetching,items:g,apiResource:"entities",searchQuery:n??""}),{query:a,items:g,total:h}}export{x as useFetchCatalogEntities};
@@ -1 +1 @@
1
- import{useInfiniteQuery as y}from"@tanstack/react-query";import{useMemo as d,useRef as S}from"react";import{withPathPrefix as F}from"@redocly/theme/core/utils";import{getNextPageParam as R}from"../../../utils/catalog/get-next-page-param";import{useSearchTracker as b}from"./useSearchTracker";function E({entityKey:g,limit:o=20,filter:i,sort:s="title",search:r},n){const l=n?n.items.map(e=>e.key).join("-"):[],c=S(!0),h=c.current&&n;c.current&&(c.current=!1);const t=y({queryFn:async e=>{const a=new URLSearchParams;i&&a.append("filter",i),s&&a.append("sort",s),o&&a.append("limit",o.toString()),r&&a.append("search",r),e.pageParam&&Object.entries(e.pageParam).forEach(([w,p])=>{p!=null&&a.append(w,p.toString())});const f=new URL(F(`/bff/catalog-related-entities/${g}`),window.location.origin);f.search=a.toString();const m=await fetch(f.toString());if(!m.ok)throw new Error(`Failed to fetch catalog entity relations from ${f.pathname}`);return m.json()},queryKey:["bff/catalog-entities-relations",{limit:o,filter:i,sort:s,search:r,entityKey:g,initialDataKeys:l}],initialPageParam:null,initialData:h?{pages:[n],pageParams:[null]}:void 0,refetchOnMount:!0,getNextPageParam:R}),P=d(()=>{const e=t.data?.pages||[];return e[e.length-1]?.page?.total},[t.data?.pages]),u=d(()=>(t.data?.pages||[]).flatMap(e=>e.items||[]),[t.data?.pages]);return b({isLoading:t.isLoading||t.isFetching,items:u,apiResource:"related_entities",searchQuery:r??""}),{query:t,items:u,total:P}}export{E as useFetchCatalogEntitiesRelations};
1
+ import{useInfiniteQuery as y}from"@tanstack/react-query";import{useMemo as m,useRef as S}from"react";import{withPathPrefix as F}from"@redocly/theme/core/utils";import{getNextPageParam as R}from"../../../utils/catalog/get-next-page-param";import{useSearchTracker as b}from"./useSearchTracker";function E({entityKey:g,limit:o=20,filter:i,sort:s="updated_at",search:r},n){const l=n?n.items.map(e=>e.key).join("-"):[],c=S(!0),h=c.current&&n;c.current&&(c.current=!1);const t=y({queryFn:async e=>{const a=new URLSearchParams;i&&a.append("filter",i),s&&a.append("sort",s),o&&a.append("limit",o.toString()),r&&a.append("search",r),e.pageParam&&Object.entries(e.pageParam).forEach(([w,f])=>{f!=null&&a.append(w,f.toString())});const p=new URL(F(`/bff/catalog-related-entities/${g}`),window.location.origin);p.search=a.toString();const d=await fetch(p.toString());if(!d.ok)throw new Error(`Failed to fetch catalog entity relations from ${p.pathname}`);return d.json()},queryKey:["bff/catalog-entities-relations",{limit:o,filter:i,sort:s,search:r,entityKey:g,initialDataKeys:l}],initialPageParam:null,initialData:h?{pages:[n],pageParams:[null]}:void 0,refetchOnMount:!0,getNextPageParam:R}),P=m(()=>{const e=t.data?.pages||[];return e[e.length-1]?.page?.total},[t.data?.pages]),u=m(()=>(t.data?.pages||[]).flatMap(e=>e.items||[]),[t.data?.pages]);return b({isLoading:t.isLoading||t.isFetching,items:u,apiResource:"related_entities",searchQuery:r??""}),{query:t,items:u,total:P}}export{E as useFetchCatalogEntitiesRelations};
@@ -25,6 +25,7 @@ export { useCatalogClassic } from './catalog/useCatalogClassic';
25
25
  export { useTelemetry } from './useTelemetry';
26
26
  export { useUserTeams } from './useUserTeams';
27
27
  export { useMarkdownText } from './markdown/useMarkdownText';
28
+ export { useMarkdocRenderer } from './markdown/useMarkdocRenderer';
28
29
  export { useCodeHighlight } from './codeHighlight/useCodeHighlight';
29
30
  export { useLoadAndNavigate } from './useLoadAndNavigate';
30
31
  export { useUserClaims } from './useUserClaims';
@@ -1 +1 @@
1
- export*from"../../providers/page-data/hooks";import{usePageSharedData as t}from"../../providers/hooks";import{useLoginUrl as a}from"./useLoginUrl";import{useGlobalData as f}from"../useGlobalData";import{useL10n as p}from"../l10n/hooks";import{useL10nConfig as n}from"./useL10nConfig";import{useL10n as g}from"../l10n/hooks";import{useTranslate as C}from"../l10n/hooks";import{useL10nConfig as d}from"./useL10nConfig";export*from"./useCurrentUserTeams";export*from"./products";import{usePageVersions as F}from"../../providers/page-data/hooks";import{useUserMenu as S}from"../UserMenu/useUserMenu";import{useSubmitFeedback as U}from"../Feedback/useSubmitFeedback";import{usePreloadHistory as D}from"../usePreloadHistory";import{useBreadcrumbs as M}from"../Sidebar/useBreadcrumbs";import{useBanner as v}from"./useBanner";import{useCatalog as B}from"./catalog/useCatalog";import{useCatalogSort as I}from"./catalog/useCatalogSort";import{useCatalogSearch as w}from"./catalog/useCatalogSearch";import{useFetchCatalogEntities as N}from"./catalog/useFetchCatalogEntities";import{useFetchCatalogEntitiesRelations as j}from"./catalog/useFetchCatalogEntitiesRelations";import{useFetchCatalogEntityRevisions as z}from"./catalog/useFetchCatalogEntityRevisions";import{useCatalogClassic as K}from"./catalog/useCatalogClassic";import{useTelemetry as Q}from"./useTelemetry";import{useUserTeams as X}from"./useUserTeams";import{useMarkdownText as Z}from"./markdown/useMarkdownText";import{useCodeHighlight as $}from"./codeHighlight/useCodeHighlight";import{useLoadAndNavigate as oe}from"./useLoadAndNavigate";import{useUserClaims as te}from"./useUserClaims";import{useMcpData as ae}from"./useMcpData";import{useAnchorPositioning as fe}from"./useAnchorPositioning";export{fe as useAnchorPositioning,v as useBanner,M as useBreadcrumbs,B as useCatalog,K as useCatalogClassic,w as useCatalogSearch,I as useCatalogSort,$ as useCodeHighlight,N as useFetchCatalogEntities,j as useFetchCatalogEntitiesRelations,z as useFetchCatalogEntityRevisions,f as useGlobalData,p as useI18n,n as useI18nConfig,g as useL10n,d as useL10nConfig,oe as useLoadAndNavigate,a as useLoginUrl,Z as useMarkdownText,ae as useMcpData,t as usePageSharedData,F as usePageVersions,D as usePreloadHistory,U as useSubmitFeedback,Q as useTelemetry,C as useTranslate,te as useUserClaims,S as useUserMenu,X as useUserTeams};
1
+ export*from"../../providers/page-data/hooks";import{usePageSharedData as t}from"../../providers/hooks";import{useLoginUrl as a}from"./useLoginUrl";import{useGlobalData as f}from"../useGlobalData";import{useL10n as p}from"../l10n/hooks";import{useL10nConfig as n}from"./useL10nConfig";import{useL10n as g}from"../l10n/hooks";import{useTranslate as C}from"../l10n/hooks";import{useL10nConfig as d}from"./useL10nConfig";export*from"./useCurrentUserTeams";export*from"./products";import{usePageVersions as F}from"../../providers/page-data/hooks";import{useUserMenu as P}from"../UserMenu/useUserMenu";import{useSubmitFeedback as T}from"../Feedback/useSubmitFeedback";import{usePreloadHistory as k}from"../usePreloadHistory";import{useBreadcrumbs as D}from"../Sidebar/useBreadcrumbs";import{useBanner as R}from"./useBanner";import{useCatalog as A}from"./catalog/useCatalog";import{useCatalogSort as H}from"./catalog/useCatalogSort";import{useCatalogSearch as w}from"./catalog/useCatalogSearch";import{useFetchCatalogEntities as N}from"./catalog/useFetchCatalogEntities";import{useFetchCatalogEntitiesRelations as j}from"./catalog/useFetchCatalogEntitiesRelations";import{useFetchCatalogEntityRevisions as z}from"./catalog/useFetchCatalogEntityRevisions";import{useCatalogClassic as K}from"./catalog/useCatalogClassic";import{useTelemetry as Q}from"./useTelemetry";import{useUserTeams as X}from"./useUserTeams";import{useMarkdownText as Z}from"./markdown/useMarkdownText";import{useMarkdocRenderer as $}from"./markdown/useMarkdocRenderer";import{useCodeHighlight as oe}from"./codeHighlight/useCodeHighlight";import{useLoadAndNavigate as te}from"./useLoadAndNavigate";import{useUserClaims as ae}from"./useUserClaims";import{useMcpData as fe}from"./useMcpData";import{useAnchorPositioning as pe}from"./useAnchorPositioning";export{pe as useAnchorPositioning,R as useBanner,D as useBreadcrumbs,A as useCatalog,K as useCatalogClassic,w as useCatalogSearch,H as useCatalogSort,oe as useCodeHighlight,N as useFetchCatalogEntities,j as useFetchCatalogEntitiesRelations,z as useFetchCatalogEntityRevisions,f as useGlobalData,p as useI18n,n as useI18nConfig,g as useL10n,d as useL10nConfig,te as useLoadAndNavigate,a as useLoginUrl,$ as useMarkdocRenderer,Z as useMarkdownText,fe as useMcpData,t as usePageSharedData,F as usePageVersions,k as usePreloadHistory,T as useSubmitFeedback,Q as useTelemetry,C as useTranslate,ae as useUserClaims,P as useUserMenu,X as useUserTeams};
@@ -0,0 +1,3 @@
1
+ import * as React from 'react';
2
+ export declare const useMarkdocRenderer: (ast: unknown) => React.ReactNode;
3
+ //# sourceMappingURL=useMarkdocRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ import*as t from"react";import{useMemo as n}from"react";import m from"@markdoc/markdoc";import{components as s}from"@redocly-markdoc/components";import{components as p}from"@redocly/theme/markdoc/default";import{isTag as c}from"../../../../markdoc/helpers/guards/is-tag";const d=r=>n(()=>{if(!r)return null;let o;if(typeof r=="string")try{o=JSON.parse(r)}catch(e){return console.error("Error parsing AST string:",e),null}else o=r;return c(o)?m.renderers.react(o,t,{components:{...globalThis.__LOADER?.markdocComponents,...p,...s}}):null},[r]);export{d as useMarkdocRenderer};
@@ -1,12 +1,10 @@
1
- import type { BannerConfig } from '@redocly/config';
1
+ import type { ResolvedBannerConfig } from '@redocly/config';
2
2
  type BannerResult = {
3
- banner: BannerConfig | undefined;
4
- dismissBanner: (content: string) => void;
3
+ banner: ResolvedBannerConfig | undefined;
4
+ dismissBanner: (hash: string) => void;
5
5
  };
6
6
  export declare const STORAGE_KEY = "redocly-dismissed-banners";
7
- export declare const STORAGE_KEY_PER_SLUG = "redocly-dismissed-banners-per-slug";
8
7
  export declare function getDismissedBannersFromStorage(): Set<string>;
9
- export declare function getDismissedSlugsFromStorage(): Set<string>;
10
8
  export declare function useBanner(): BannerResult;
11
9
  export {};
12
10
  //# sourceMappingURL=useBanner.d.ts.map
@@ -1 +1 @@
1
- import{useMemo as p,useState as f}from"react";import{useLocation as l}from"react-router-dom";import{useThemeConfig as y}from"@redocly/theme/core/hooks";import{usePageData as w}from"../../providers/page-data/hooks";import{getBannerForSlug as A}from"./utils/match-banner-target.js";const u="redocly-dismissed-banners",m="redocly-dismissed-banners-per-slug";function B(){if(typeof window>"u")return new Set;const e=localStorage.getItem(u);if(e){const r=JSON.parse(e);if(Array.isArray(r))return new Set(r)}return new Set}function D(){if(typeof window>"u")return new Set;const e=localStorage.getItem(m);if(e){const r=JSON.parse(e);if(Array.isArray(r))return new Set(r)}return new Set}function N(){const{banner:e}=y()||{},n=w()?.props?.frontmatter?.banner,c=l(),[s,S]=f(B()),[o,g]=f(D()),t=c.pathname;return{banner:p(()=>{if(n&&Array.isArray(n)&&n.length){if(o.has(t))return;for(const a of n)if(!s.has(a.content))return a;return}if(!(!e||!Array.isArray(e)||e.length===0)&&!o.has(t))return A(e,t,s)},[e,n,t,s,o]),dismissBanner:a=>{const i=new Set(s);i.add(a),S(i);const d=new Set(o);d.add(t),g(d),localStorage.setItem(u,JSON.stringify(Array.from(i))),localStorage.setItem(m,JSON.stringify(Array.from(d)))}}}export{u as STORAGE_KEY,m as STORAGE_KEY_PER_SLUG,B as getDismissedBannersFromStorage,D as getDismissedSlugsFromStorage,N as useBanner};
1
+ import{useMemo as f,useState as u}from"react";import{useLocation as d}from"react-router-dom";import{useThemeConfig as p}from"@redocly/theme/core/hooks";import{usePageData as g}from"../../providers/page-data/hooks";import{getBannerForSlug as S}from"./utils/match-banner-target.js";const i="redocly-dismissed-banners";function y(){if(typeof window>"u")return new Set;const r=localStorage.getItem(i);if(r){const s=JSON.parse(r);if(Array.isArray(s))return new Set(s)}return new Set}function x(){const{banner:r}=p()||{},o=g()?.props?.frontmatter?.banner,m=d(),[n,c]=u(y()),a=m.pathname;return{banner:f(()=>{const t=(Array.isArray(o)?o:[]).find(e=>!n.has(e.hash));if(t)return t;if(!(!r||!Array.isArray(r)||r.length===0))return S(r,a,n)},[r,o,a,n]),dismissBanner:t=>{const e=new Set(n);e.add(t),c(e),localStorage.setItem(i,JSON.stringify(Array.from(e)))}}}export{i as STORAGE_KEY,y as getDismissedBannersFromStorage,x as useBanner};
@@ -1,10 +1,32 @@
1
- import type { BannerConfig } from '@redocly/config';
1
+ import type { ResolvedBannerConfig } from '@redocly/config';
2
+ export declare const SpecificityTier: {
3
+ readonly CatchAll: 0;
4
+ readonly DoubleWildcard: 1;
5
+ readonly SingleWildcard: 2;
6
+ readonly ExactMatch: 3;
7
+ };
8
+ export type SpecificityTier = (typeof SpecificityTier)[keyof typeof SpecificityTier];
9
+ export type Specificity = {
10
+ tier: SpecificityTier;
11
+ literalSegments: number;
12
+ };
13
+ /**
14
+ * Returns a structured specificity for a target pattern.
15
+ * Higher tier = more specific. Within a tier, more literal
16
+ * (non-wildcard) path segments wins.
17
+ */
18
+ export declare function getTargetSpecificity(target: string | undefined): Specificity;
19
+ /**
20
+ * Compares two specificities. Returns a positive number if `left` is more
21
+ * specific, negative if `right` is, and 0 when equal.
22
+ */
23
+ export declare function compareSpecificity(left: Specificity, right: Specificity): number;
2
24
  /**
3
25
  * Checks if a slug matches a target pattern
4
26
  */
5
27
  export declare function matchesBannerTarget(slug: string, target: string | undefined): boolean;
6
28
  /**
7
- * Returns the first matching banner for a slug, or undefined if none match
29
+ * Returns the most specific matching banner for a slug.
8
30
  */
9
- export declare function getBannerForSlug(banners: BannerConfig[], slug: string, dismissedBanners?: Set<string>): BannerConfig | undefined;
31
+ export declare function getBannerForSlug(banners: ResolvedBannerConfig[], slug: string, dismissedBanners?: Set<string>): ResolvedBannerConfig | undefined;
10
32
  //# sourceMappingURL=match-banner-target.d.ts.map
@@ -1 +1 @@
1
- import a from"picomatch";import{removeTrailingSlash as s}from"../../../../utils/url/remove-trailing-slash";import{normalizeRouteSlug as f}from"../../../../utils/path/normalize-route-slug";const u={};function c(t){if(!t)return!0;const r=t.trim();return r===""||r==="**"||r==="/**"}function l(t){const r=t.trim();if(c(r))return"**";let e=r.toLowerCase();return e.startsWith("/")&&(e=e.slice(1)),e.endsWith("/")&&!e.endsWith("*/")&&(e=e.slice(0,-1)),e}function m(t){return u[t]||(u[t]=a(t,{nocase:!0})),u[t]}function h(t,r){if(c(r)||!r)return!0;const e=s(f(t)).toLowerCase(),n=e.startsWith("/")?e.slice(1):e,i=l(r);if(!i.includes("*")){const o=i.startsWith("/")?i.slice(1):i;return n===s(o)}if(i.endsWith("**")){const o=s(i.slice(0,-2));if(n===o)return!0}return m(i)(n)}function S(t,r,e=new Set){if(!(!t||t.length===0)){for(const n of t)if(!e.has(n.content)&&h(r,n.target))return n}}export{S as getBannerForSlug,h as matchesBannerTarget};
1
+ import f from"picomatch";import{removeTrailingSlash as l}from"../../../../utils/url/remove-trailing-slash";import{normalizeRouteSlug as m}from"../../../../utils/path/normalize-route-slug";const s={};function u(t){const e=t.trim();return e===""||e==="**"||e==="/**"}function h(t){const e=t.trim();if(u(e))return"**";let i=e.toLowerCase();return i.startsWith("/")&&(i=i.slice(1)),i.endsWith("/")&&!i.endsWith("*/")&&(i=i.slice(0,-1)),i}function d(t){return s[t]||(s[t]=f(t,{nocase:!0})),s[t]}const o={CatchAll:0,DoubleWildcard:1,SingleWildcard:2,ExactMatch:3};function S(t){if(!t||u(t))return{tier:o.CatchAll,literalSegments:0};const e=t.trim().split("/").filter(i=>!i.includes("*")&&i.trim()!=="").length;return t.includes("*")?t.includes("**")?{tier:o.DoubleWildcard,literalSegments:e}:{tier:o.SingleWildcard,literalSegments:e}:{tier:o.ExactMatch,literalSegments:e}}function g(t,e){return t.tier!==e.tier?t.tier-e.tier:t.literalSegments-e.literalSegments}function p(t,e){if(!e||u(e))return!0;const i=l(m(t)).toLowerCase(),c=i.startsWith("/")?i.slice(1):i,r=h(e);if(!r.includes("*")){const n=r.startsWith("/")?r.slice(1):r;return c===l(n)}if(r.endsWith("**")){const n=l(r.slice(0,-2));if(c===n)return!0}return d(r)(c)}function C(t,e,i=new Set){if(!t||t.length===0)return;let c,r;for(const n of t){if(i.has(n.hash)||!p(e,n.target))continue;const a=S(n.target);(!r||g(a,r)>0)&&(r=a,c=n)}return c}export{o as SpecificityTier,g as compareSpecificity,C as getBannerForSlug,S as getTargetSpecificity,p as matchesBannerTarget};
@@ -1 +1 @@
1
- import a from"i18next";import{useCallback as l}from"react";const s=(t,e)=>{let n=e&&typeof e=="string"?e:void 0,r=n?void 0:e;return t?a.t(t,{defaultValue:n,...r})||n||t||"":n??""},c=()=>({translate:l(s,[])});export{c as useTranslate};
1
+ import a from"i18next";import{useMemo as u}from"react";import{useL10n as o}from"./useL10n";const d=()=>{const{lang:r}=o();return{translate:u(()=>(n,t)=>{let e=t&&typeof t=="string"?t:void 0,s=e?void 0:t;return n?a.t(n,{defaultValue:e,...s})||e||n||"":e??""},[r])}};export{d as useTranslate};
@@ -1 +1 @@
1
- import{AiSearchConversationRole as o,AiSearchError as l}from"@redocly/theme/core/constants";import{SSE_EVENTS as n,MAX_DISPLAYED_RESOURCES as a}from"../../constants";function i(e,r){if(e.length===0)return e;const t=e[e.length-1];return t.role===o.ASSISTANT&&!t.messageId?[...e.slice(0,-1),{...t,messageId:r}]:e}function S(e,r){if(e.length===0)return e;const t=[...e];return t[t.length-1]={...t[t.length-1],result:r},t}function E(e,r){return e.type!==n.MESSAGE_ID?{}:(r.setConversation(t=>i(t,e.messageId)),{messageId:e.messageId})}function c(e,r){if(e.type!==n.SOURCES)return{};const t=e.sources.slice(0,a).map(({url:s,title:u})=>({url:s,title:u}));return r.setState(s=>s.status==="loading"?{...s,resources:t}:s),{resources:t}}function f(e,r){if(e.type!==n.ANSWER)return{};const t=r.accumulatedResponse+e.answer;return r.setState(s=>s.status==="loading"?{...s,response:t}:s),{accumulatedResponse:t}}function d(e,r){return e.type!==n.TOOL_CALL?{}:(r.setToolCalls(t=>[...t,{...e.toolCall,position:r.accumulatedResponse.length}]),{})}function R(e,r){return e.type!==n.TOOL_RESULT?{}:(r.setToolCalls(t=>S(t,e.result)),{})}function h(e,r){return e.type!==n.ERROR?{}:(r.setState(t=>t.status==="loading"?{status:"error",question:t.question,error:l.ErrorProcessingResponse}:t),{})}const A={[n.MESSAGE_ID]:E,[n.SOURCES]:c,[n.ANSWER]:f,[n.TOOL_CALL]:d,[n.TOOL_RESULT]:R,[n.ERROR]:h};function O(e,r){const t=A[e.type];return t?t(e,r):{}}export{O as handleSSEMessage};
1
+ import{AiSearchConversationRole as o,AiSearchError as i}from"@redocly/theme/core/constants";import{SSE_EVENTS as s,MAX_DISPLAYED_RESOURCES as a}from"../../constants";function l(e,n){if(e.length===0)return e;const t=e[e.length-1];return t.role===o.ASSISTANT&&!t.messageId?[...e.slice(0,-1),{...t,messageId:n}]:e}function S(e,n){if(e.length===0)return e;const t=e.findIndex(u=>u.id===n.toolCallId);if(t===-1)return e;const r=[...e];return r[t]={...r[t],result:n},r}function d(e,n){return e.type!==s.MESSAGE_ID?{}:(n.setConversation(t=>l(t,e.messageId)),{messageId:e.messageId})}function f(e,n){if(e.type!==s.SOURCES)return{};const t=e.sources.slice(0,a).map(({url:r,title:u})=>({url:r,title:u}));return n.setState(r=>r.status==="loading"?{...r,resources:t}:r),{resources:t}}function c(e,n){if(e.type!==s.ANSWER)return{};const t=n.accumulatedResponse+e.answer;return n.setState(r=>r.status==="loading"?{...r,response:t}:r),{accumulatedResponse:t}}function E(e,n){return e.type!==s.TOOL_CALL?{}:(n.setToolCalls(t=>[...t,{...e.toolCall,position:n.accumulatedResponse.length}]),{})}function R(e,n){return e.type!==s.TOOL_RESULT?{}:(n.setToolCalls(t=>S(t,e.result)),{})}function A(e,n){return e.type!==s.ERROR?{}:(n.setState(t=>t.status==="loading"?{status:"error",question:t.question,error:i.ErrorProcessingResponse}:t),{})}const h={[s.MESSAGE_ID]:d,[s.SOURCES]:f,[s.ANSWER]:c,[s.TOOL_CALL]:E,[s.TOOL_RESULT]:R,[s.ERROR]:A};function T(e,n){const t=h[e.type];return t?t(e,n):{}}export{T as handleSSEMessage};
@@ -1 +1 @@
1
- import{withPathPrefix as p,getNavbarElement as g}from"@redocly/theme/core/utils";import{isLocalLink as b}from"../../../utils/path/is-local-link.js";import{withLoadProgress as T}from"./withLoadProgress";let d;async function v({navigate:r,to:o,origin:a="browser",options:s}){o===""&&(o="/"),d=o;const{pathname:n,hash:w,search:i}=new URL(o,window.location.origin+window.location.pathname),t=decodeURIComponent(w),h=decodeURIComponent(window.location.hash),m=window.__LOADER,e=await T(m.tryLoad(n,void 0,i));if(e?.redirectTo){if(!b(e.redirectTo)){window.location.href=e.redirectTo;return}return v({navigate:r,to:e.redirectTo,origin:a,options:s})}if(o.startsWith(p("/_auth/"))){window.location.href=o;return}if(e&&d===o){if((n!==window.location.pathname||i!==window.location.search||t!==h)&&r({pathname:n,search:i,hash:t},{...s,state:{origin:a},unstable_flushSync:!0}),e.props?.disableAutoScroll)return;requestAnimationFrame(()=>{if(t){const c=t.slice(1),l=document.getElementById(c)||document.getElementsByName(c)[0];if(l){const f=g()?.offsetHeight??0,u=l.getBoundingClientRect().top+window.scrollY-f;window.scrollTo({top:u,behavior:"smooth"})}}else window.scrollTo(0,0)})}}export{v as loadAndNavigate};
1
+ import{withPathPrefix as f}from"@redocly/theme/core/utils";import{isLocalLink as m}from"../../../utils/path/is-local-link.js";import{withLoadProgress as u}from"./withLoadProgress";import{scrollToAnchor as p}from"./scroll-to-anchor";let s;async function L({navigate:n,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),t=decodeURIComponent(d),l=decodeURIComponent(window.location.hash),w=window.__LOADER,r=await u(w.tryLoad(e,void 0,i));if(r?.redirectTo){if(!m(r.redirectTo)){window.location.href=r.redirectTo;return}return L({navigate:n,to:r.redirectTo,origin:a,options:c})}if(o.startsWith(f("/_auth/"))){window.location.href=o;return}if(r&&s===o){if((e!==window.location.pathname||i!==window.location.search||t!==l)&&n({pathname:e,search:i,hash:t},{...c,state:{origin:a},unstable_flushSync:!0}),r.props?.disableAutoScroll)return;requestAnimationFrame(()=>{if(t){const h=t.slice(1);p(h)}else window.scrollTo(0,0)})}}export{L as loadAndNavigate};
@@ -0,0 +1,3 @@
1
+ export declare const MAX_ANCHOR_ATTEMPTS = 3;
2
+ export declare function scrollToAnchor(anchor: string, attempt?: number): void;
3
+ //# sourceMappingURL=scroll-to-anchor.d.ts.map
@@ -0,0 +1 @@
1
+ import{getNavbarElement as l}from"@redocly/theme/core/utils";const r=3;function s(e,o=0){const t=document.getElementById(e)||document.getElementsByName(e)[0];if(t){const n=l()?.offsetHeight??0,i=t.getBoundingClientRect().top+window.scrollY;window.scrollTo({top:i-n,behavior:"smooth"})}else o<r&&requestAnimationFrame(()=>s(e,o+1))}export{r as MAX_ANCHOR_ATTEMPTS,s as scrollToAnchor};
@@ -0,0 +1,3 @@
1
+ /** @ts-ignore autogenerated module, @see src/server/esbuild/plugins/mcp-tool-handlers-resolver.ts **/
2
+ export { mcpToolHandlers } from '@portal/mcp-tool-handlers';
3
+ //# sourceMappingURL=mcp-tool-handlers-entry.d.ts.map
@@ -0,0 +1 @@
1
+ import{mcpToolHandlers as e}from"@portal/mcp-tool-handlers";export{e as mcpToolHandlers};
@@ -1 +1 @@
1
- import e from"react";import{ThemeDataContext as m,SearchSessionProvider as l}from"@redocly/theme/core/contexts";import{useAnchorPositioning as d,useBreadcrumbs as g,useBanner as p,useCatalogClassic as f,useCurrentProduct as b,useGlobalData as o,useI18n as h,useI18nConfig as C,useL10n as P,useL10nConfig as S,usePageData as r,usePageSharedData as T,usePageVersions as D,usePreloadHistory as v,useProducts as F,useUserMenu as k,useSubmitFeedback as E,useTranslate as L,useSidebarSiblingsData as M,usePageProps as O,useUserTeams as R,useMarkdownText as y,useCodeHighlight as A,useLoadAndNavigate as w,useCatalog as x,useCatalogSort as I,useCatalogSearch as j,useFetchCatalogEntities as B,useFetchCatalogEntitiesRelations as H,useFetchCatalogEntityRevisions as N,useTelemetry as s,useMcpData as U}from"../../app/hooks";import{Link as _}from"../../app/Link";import{useFacetQuery as G,useSearch as Q,useAiSearch as V}from"../../app/search";import{useSidebarItems as W}from"../../app/Sidebar/useSidebarItems";import{deepMerge as q}from"../../../utils/object/deep-merge";import{allowlistObject as z}from"../../../utils/object/allowlist-object";const J=["title","description","seo","sidebar","excludeFromSearch","template","redirects","rbac","metadata","slug","codeSnippet","breadcrumbs","markdown","seo","navbar","footer","colorMode","feedback","navigation","banner"],K={useAnchorPositioning:d,useBreadcrumbs:g,useBanner:p,useCatalog:x,useCatalogSort:I,useCatalogSearch:j,useFetchCatalogEntities:B,useFetchCatalogEntitiesRelations:H,useFetchCatalogEntityRevisions:N,useCatalogClassic:f,useCurrentProduct:b,useGlobalData:o,useSearch:Q,useAiSearch:V,useFacetQuery:G,useI18n:h,useI18nConfig:C,useL10n:P,useL10nConfig:S,usePageData:r,usePageSharedData:T,usePageVersions:D,usePreloadHistory:v,useProducts:F,useUserMenu:k,useSidebarItems:W,useSidebarSiblingsData:M,useSubmitFeedback:E,useTranslate:L,useUserTeams:R,usePageProps:O,useMarkdownText:y,useCodeHighlight:A,useLoadAndNavigate:w,useTelemetry:s,useOtelTelemetry:s,useMcpData:U},X={LinkComponent:_};function se({children:n}){const{props:t}=r()||{},a=o()||{},u=e.useMemo(()=>{const c=z(t?.frontmatter||{},J);return q(a,c)},[a,t?.frontmatter]),i={hooks:K,components:X,config:u};return e.createElement(l,null,e.createElement(m.Provider,{value:i},n))}export{se as ThemeDataProvider};
1
+ import e from"react";import{ThemeDataContext as m,SearchSessionProvider as l}from"@redocly/theme/core/contexts";import{useAnchorPositioning as d,useBreadcrumbs as g,useBanner as p,useCatalogClassic as f,useCurrentProduct as b,useGlobalData as a,useI18n as h,useI18nConfig as C,useL10n as P,useL10nConfig as S,usePageData as r,usePageSharedData as T,usePageVersions as D,usePreloadHistory as k,useProducts as v,useUserMenu as F,useSubmitFeedback as M,useTranslate as E,useSidebarSiblingsData as L,usePageProps as R,useUserTeams as O,useMarkdownText as y,useMarkdocRenderer as A,useCodeHighlight as w,useLoadAndNavigate as x,useCatalog as I,useCatalogSort as j,useCatalogSearch as B,useFetchCatalogEntities as H,useFetchCatalogEntitiesRelations as N,useFetchCatalogEntityRevisions as U,useTelemetry as s,useMcpData as _}from"../../app/hooks";import{Link as G}from"../../app/Link";import{useFacetQuery as Q,useSearch as V,useAiSearch as W}from"../../app/search";import{useSidebarItems as q}from"../../app/Sidebar/useSidebarItems";import{deepMerge as z}from"../../../utils/object/deep-merge";import{allowlistObject as J}from"../../../utils/object/allowlist-object";const K=["title","description","seo","sidebar","excludeFromSearch","template","redirects","rbac","metadata","slug","codeSnippet","breadcrumbs","markdown","seo","navbar","footer","colorMode","feedback","navigation"],X={useAnchorPositioning:d,useBreadcrumbs:g,useBanner:p,useCatalog:I,useCatalogSort:j,useCatalogSearch:B,useFetchCatalogEntities:H,useFetchCatalogEntitiesRelations:N,useFetchCatalogEntityRevisions:U,useCatalogClassic:f,useCurrentProduct:b,useGlobalData:a,useSearch:V,useAiSearch:W,useFacetQuery:Q,useI18n:h,useI18nConfig:C,useL10n:P,useL10nConfig:S,usePageData:r,usePageSharedData:T,usePageVersions:D,usePreloadHistory:k,useProducts:v,useUserMenu:F,useSidebarItems:q,useSidebarSiblingsData:L,useSubmitFeedback:M,useTranslate:E,useUserTeams:O,usePageProps:R,useMarkdownText:y,useMarkdocRenderer:A,useCodeHighlight:w,useLoadAndNavigate:x,useTelemetry:s,useOtelTelemetry:s,useMcpData:_},Y={LinkComponent:G};function ne({children:n}){const{props:t}=r()||{},o=a()||{},u=e.useMemo(()=>{const c=J(t?.frontmatter||{},K);return z(o,c)},[o,t?.frontmatter]),i={hooks:X,components:Y,config:u};return e.createElement(l,null,e.createElement(m.Provider,{value:i},n))}export{ne as ThemeDataProvider};
@@ -123,8 +123,8 @@ export declare function useCollectMarkdocOptions({ markdown }: PageProps): {
123
123
  description?: string;
124
124
  };
125
125
  link: {
126
+ render: string;
126
127
  children: string[];
127
- render?: string | undefined;
128
128
  attributes?: Record<string, import("@markdoc/markdoc").SchemaAttribute>;
129
129
  slots?: Record<string, import("@markdoc/markdoc").SchemaSlot>;
130
130
  selfClosing?: boolean;
@@ -1,4 +1,4 @@
1
- import l from"styled-components";import*as o from"react";import{RedoclyAsyncAPIDocs as d}from"@redocly/asyncapi-docs";import{withPathPrefix as m}from"@redocly/theme/core/utils";import{usePageSharedData as p}from"../../providers/page-data/hooks";import{useCollectMarkdocOptions as f}from"./helpers.js";function h({pageProps:t}){const a=p("AsyncApiDefinition"),{document:i,apiItems:r,protocol:e,downloadUrls:n}=a,c=m(t?.settings?.baseUrlPath),s=f(t);return o.createElement(u,null,o.createElement(d,{pageProps:t,document:i,apiItems:r,routingBasePath:c,protocol:e,downloadUrls:n,markdocOptions:s}))}const u=l.div`
1
+ import m from"styled-components";import*as t from"react";import{RedoclyAsyncAPIDocs as d}from"@redocly/asyncapi-docs";import{withPathPrefix as r}from"@redocly/theme/core/utils";import{ServerRoutes as p}from"../../../constants/common.js";import{CLIENT_TELEMETRY_ENABLED as f}from"../../constants/common.js";import{PACKAGE_NAME as E}from"../../../config/product-gates";import{usePageSharedData as A}from"../../providers/page-data/hooks";import{useCollectMarkdocOptions as h}from"./helpers.js";function u({pageProps:o}){const e=A("AsyncApiDefinition"),{document:i,apiItems:a,protocol:n,downloadUrls:s}=e,c=r(o?.settings?.baseUrlPath),l=h(o);return t.createElement(g,null,t.createElement(d,{pageProps:o,document:i,apiItems:a,routingBasePath:c,protocol:n,downloadUrls:s,markdocOptions:l,telemetryConfig:{collectorUrl:new URL(r(p.OTEL_TRACES),location.origin).toString(),disabled:!f,serviceVersion:`${E}@${process.env.REDOCLY_PORTAL_VERSION}`}}))}const g=m.div`
2
2
  a[id],
3
3
  a[data-section-id],
4
4
  div[data-section-id] {
@@ -6,4 +6,4 @@ import l from"styled-components";import*as o from"react";import{RedoclyAsyncAPID
6
6
  }
7
7
 
8
8
  --sidebar-width: 0px;
9
- `;export{h as default};
9
+ `;export{u as default};
@@ -1,8 +1,8 @@
1
- import*as a from"react";import i from"styled-components";import{RedoclyOpenAPIDocs as c}from"@redocly/openapi-docs";import{LayoutVariant as s}from"@redocly/config";import{ThreePanelLayout as m}from"@redocly/theme/layouts/ThreePanelLayout";import{CatalogClassicInfoBlock as p}from"@redocly/theme/components/CatalogClassic/CatalogClassicInfoBlock";import{useUserClaims as h}from"../../app/hooks";import{usePageSharedData as u}from"../../providers/page-data/hooks";import{usePatchedStore as d}from"./helpers.js";function f({pageProps:t}){const o=h(),e=u("openAPIDocsStore"),n=a.useMemo(()=>({layout:t.apiOptions?.layout,userClaims:o}),[t.apiOptions?.layout,o]),r=d(e,t);if(!e)return"Something went wrong";const l=t.apiOptions?.layout;return a.createElement(g,null,a.createElement(v,{layout:l},a.createElement(p,{metadata:t.metadata})),a.createElement(c,{store:{options:r.options,definition:r.definition,withState:n}}))}const v=i(m)`
1
+ import*as o from"react";import i from"styled-components";import{RedoclyOpenAPIDocs as m}from"@redocly/openapi-docs";import{LayoutVariant as c}from"@redocly/config";import{CLIENT_TELEMETRY_ENABLED as s}from"../../constants/common.js";import{ThreePanelLayout as p}from"@redocly/theme/layouts/ThreePanelLayout";import{CatalogClassicInfoBlock as f}from"@redocly/theme/components/CatalogClassic/CatalogClassicInfoBlock";import{withPathPrefix as h}from"@redocly/theme/core/utils";import{useUserClaims as d}from"../../app/hooks";import{ServerRoutes as u}from"../../../constants/common.js";import{PACKAGE_NAME as E}from"../../../config/product-gates";import{usePageSharedData as v}from"../../providers/page-data/hooks";import{usePatchedStore as g}from"./helpers.js";function y({pageProps:t}){const r=d(),e=v("openAPIDocsStore"),n=o.useMemo(()=>({layout:t.apiOptions?.layout,userClaims:r}),[t.apiOptions?.layout,r]),a=g(e,t);if(!e)return"Something went wrong";const l=t.apiOptions?.layout;return o.createElement(A,null,o.createElement(S,{layout:l},o.createElement(f,{metadata:t.metadata})),o.createElement(m,{store:{options:a.options,definition:a.definition,withState:n},telemetryConfig:{collectorUrl:new URL(h(u.OTEL_TRACES),location.origin).toString(),disabled:!s,serviceVersion:`${E}@${process.env.REDOCLY_PORTAL_VERSION}`}}))}const S=i(p)`
2
2
  && {
3
- padding-right: ${({layout:t})=>t===s.THREE_PANEL?"calc(var(--panel-gap-horizontal) * 2)":"var(--panel-gap-horizontal)"};
3
+ padding-right: ${({layout:t})=>t===c.THREE_PANEL?"calc(var(--panel-gap-horizontal) * 2)":"var(--panel-gap-horizontal)"};
4
4
  }
5
- `,g=i.div`
5
+ `,A=i.div`
6
6
  div[id] {
7
7
  scroll-margin-top: calc(var(--navbar-height) + var(--banner-height) - var(--panel-gap-vertical));
8
8
  }
@@ -11,4 +11,4 @@ import*as a from"react";import i from"styled-components";import{RedoclyOpenAPIDo
11
11
  }
12
12
 
13
13
  --sidebar-width: 0px;
14
- `;export{f as default};
14
+ `;export{y as default};