@redocly/realm 0.129.0-next.1 → 0.129.0-next.3

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 (303) hide show
  1. package/CHANGELOG.md +63 -0
  2. package/dist/bin.js +1 -1
  3. package/dist/cli/develop.d.ts +1 -1
  4. package/dist/cli/develop.js +1 -1
  5. package/dist/cli/prepare/analytics/collectors/get-file-extensions-usage.js +1 -1
  6. package/dist/cli/prepare/analytics/collectors/get-frontmatter-usage.js +1 -1
  7. package/dist/cli/prepare/analytics/collectors/get-markdoc-usage.js +1 -1
  8. package/dist/cli/prepare/analytics/collectors/get-nested-configs-usage.js +1 -1
  9. package/dist/cli/prepare/analytics/collectors/get-refs-usage.js +1 -1
  10. package/dist/cli/prepare/index.d.ts +1 -1
  11. package/dist/cli/translations/collect-config-translations.js +1 -1
  12. package/dist/cli/translations/update-translations.js +1 -1
  13. package/dist/client/TestProvider.js +1 -1
  14. package/dist/client/app/Sidebar/RequestAccessButton.js +2 -2
  15. package/dist/client/app/Sidebar/Sidebar.js +7 -2
  16. package/dist/client/app/Sidebar/useSidebarItems.d.ts +1 -0
  17. package/dist/client/app/Sidebar/useSidebarItems.js +1 -1
  18. package/dist/client/app/hooks/catalog/useFetchCatalogEntities.js +1 -1
  19. package/dist/client/app/hooks/catalog/useFetchCatalogEntitiesRelations.js +1 -1
  20. package/dist/client/app/hooks/catalog/useFetchCatalogEntityRevisions.d.ts +10 -0
  21. package/dist/client/app/hooks/catalog/useFetchCatalogEntityRevisions.js +1 -0
  22. package/dist/client/app/hooks/index.d.ts +1 -0
  23. package/dist/client/app/hooks/index.js +1 -1
  24. package/dist/client/app/hooks/useBanner.d.ts +4 -0
  25. package/dist/client/app/hooks/useBanner.js +1 -1
  26. package/dist/client/app/hooks/useLoginUrl.js +1 -1
  27. package/dist/client/app/pages/DevLogin/DevLogin.js +1 -1
  28. package/dist/client/app/pages/Login/Login.js +1 -1
  29. package/dist/client/app/utils/loadAndNavigate.js +1 -1
  30. package/dist/client/browser-entry.js +2 -2
  31. package/dist/client/providers/page-data/hooks.d.ts +2 -1
  32. package/dist/client/providers/page-data/hooks.js +1 -1
  33. package/dist/client/providers/theme/ThemeDataProvider.js +1 -1
  34. package/dist/client/runtime/loader.js +1 -1
  35. package/dist/client/types/post-message.d.ts +2 -1
  36. package/dist/client/utils/catalog/inject-catalog-items.d.ts +1 -1
  37. package/dist/client/utils/catalog/inject-catalog-items.js +1 -1
  38. package/dist/constants/common.d.ts +0 -4
  39. package/dist/constants/common.js +1 -1
  40. package/dist/constants/l10n/langs/ar.js +1 -1
  41. package/dist/constants/l10n/langs/de.js +1 -1
  42. package/dist/constants/l10n/langs/en.js +1 -1
  43. package/dist/constants/l10n/langs/es.js +1 -1
  44. package/dist/constants/l10n/langs/fr.js +1 -1
  45. package/dist/constants/l10n/langs/hi.js +1 -1
  46. package/dist/constants/l10n/langs/it.js +1 -1
  47. package/dist/constants/l10n/langs/ja.js +1 -1
  48. package/dist/constants/l10n/langs/ko.js +1 -1
  49. package/dist/constants/l10n/langs/pl.js +1 -1
  50. package/dist/constants/l10n/langs/pt-BR.js +1 -1
  51. package/dist/constants/l10n/langs/pt.js +1 -1
  52. package/dist/constants/l10n/langs/ru.js +1 -1
  53. package/dist/constants/l10n/langs/uk.js +1 -1
  54. package/dist/constants/l10n/langs/zh.js +1 -1
  55. package/dist/server/api-routes/execute-api-route.d.ts +0 -7
  56. package/dist/server/api-routes/execute-api-route.js +1 -1
  57. package/dist/server/api-routes/helpers/setup-logger.d.ts +2 -2
  58. package/dist/server/api-routes/helpers/setup-logger.js +1 -1
  59. package/dist/server/api-routes/run-api-routes-worker.js +1 -1
  60. package/dist/server/fs/cache.d.ts +1 -2
  61. package/dist/server/fs/cache.js +1 -1
  62. package/dist/server/fs/content-fs.d.ts +9 -4
  63. package/dist/server/fs/content-fs.js +1 -1
  64. package/dist/server/fs/fs.d.ts +6 -6
  65. package/dist/server/fs/fs.js +1 -3
  66. package/dist/server/fs/load-error.d.ts +2 -2
  67. package/dist/server/fs/load-error.js +1 -1
  68. package/dist/server/fs/utils/async-storage.d.ts +0 -8
  69. package/dist/server/fs/utils/async-storage.js +1 -1
  70. package/dist/server/fs/utils/isVirtualFile.d.ts +1 -1
  71. package/dist/server/fs/utils/isVirtualFile.js +1 -1
  72. package/dist/server/persistence/kv/helpers/decode-cursor.d.ts +2 -0
  73. package/dist/server/persistence/kv/helpers/decode-cursor.js +1 -0
  74. package/dist/server/persistence/kv/helpers/encode-cursor.d.ts +2 -0
  75. package/dist/server/persistence/kv/helpers/encode-cursor.js +1 -0
  76. package/dist/server/persistence/kv/mappers/create-kv-list-entry.d.ts +5 -0
  77. package/dist/server/persistence/kv/mappers/create-kv-list-entry.js +1 -0
  78. package/dist/server/persistence/kv/mappers/create-kv-value.d.ts +4 -0
  79. package/dist/server/persistence/kv/mappers/create-kv-value.js +1 -0
  80. package/dist/server/persistence/kv/repositories/kv-remote-repository.d.ts +5 -5
  81. package/dist/server/persistence/kv/repositories/kv-remote-repository.js +1 -1
  82. package/dist/server/persistence/kv/schemas/kv-schemas.d.ts +10 -0
  83. package/dist/server/persistence/kv/schemas/kv-schemas.js +1 -0
  84. package/dist/server/persistence/kv/services/kv-service.d.ts +6 -6
  85. package/dist/server/persistence/kv/services/kv-service.js +1 -1
  86. package/dist/server/plugins/api-functions/index.js +1 -1
  87. package/dist/server/plugins/arazzo-docs/arazzo-doc-loader.d.ts +1 -1
  88. package/dist/server/plugins/arazzo-docs/arazzo-doc-loader.js +2 -2
  89. package/dist/server/plugins/arazzo-docs/index.d.ts +1 -1
  90. package/dist/server/plugins/arazzo-docs/index.js +1 -1
  91. package/dist/server/plugins/asyncapi-docs/asyncapi-doc-loader.d.ts +1 -1
  92. package/dist/server/plugins/asyncapi-docs/asyncapi-doc-loader.js +2 -2
  93. package/dist/server/plugins/asyncapi-docs/index.d.ts +1 -1
  94. package/dist/server/plugins/asyncapi-docs/index.js +1 -1
  95. package/dist/server/plugins/asyncapi-docs/is-asyncapi-doc.js +1 -1
  96. package/dist/server/plugins/catalog-entities/database/catalog-entities-service.d.ts +23 -18
  97. package/dist/server/plugins/catalog-entities/database/catalog-entities-service.js +1 -1
  98. package/dist/server/plugins/catalog-entities/database/mappers/create-bff-entity.js +1 -1
  99. package/dist/server/plugins/catalog-entities/database/mappers/create-bff-related-entity.d.ts +9 -0
  100. package/dist/server/plugins/catalog-entities/database/mappers/create-bff-related-entity.js +1 -1
  101. package/dist/server/plugins/catalog-entities/database/mappers/create-entity-db-record.d.ts +1 -0
  102. package/dist/server/plugins/catalog-entities/database/mappers/create-entity-db-record.js +1 -1
  103. package/dist/server/plugins/catalog-entities/database/mappers/create-entity-read-model.js +1 -1
  104. package/dist/server/plugins/catalog-entities/database/mappers/create-entity-relation-db-record-from-dto.js +1 -1
  105. package/dist/server/plugins/catalog-entities/database/mappers/create-entity-relation-db-record-from-file-schema.js +1 -1
  106. package/dist/server/plugins/catalog-entities/database/mappers/create-entity-relation.js +1 -1
  107. package/dist/server/plugins/catalog-entities/database/mappers/map-entity-relation-row.d.ts +12 -0
  108. package/dist/server/plugins/catalog-entities/database/mappers/map-entity-relation-row.js +1 -0
  109. package/dist/server/plugins/catalog-entities/database/repositories/local/catalog-entities-local-read-repository.d.ts +15 -4
  110. package/dist/server/plugins/catalog-entities/database/repositories/local/catalog-entities-local-read-repository.js +67 -55
  111. package/dist/server/plugins/catalog-entities/database/repositories/local/catalog-entities-local-repository.d.ts +21 -15
  112. package/dist/server/plugins/catalog-entities/database/repositories/local/catalog-entities-local-repository.js +1 -1
  113. package/dist/server/plugins/catalog-entities/database/repositories/local/catalog-entities-local-write-repository.d.ts +16 -3
  114. package/dist/server/plugins/catalog-entities/database/repositories/local/catalog-entities-local-write-repository.js +1 -1
  115. package/dist/server/plugins/catalog-entities/database/repositories/local/catalog-entities-relations-repository.d.ts +17 -0
  116. package/dist/server/plugins/catalog-entities/database/repositories/local/catalog-entities-relations-repository.js +1 -0
  117. package/dist/server/plugins/catalog-entities/database/repositories/utils.d.ts +4 -4
  118. package/dist/server/plugins/catalog-entities/database/repositories/utils.js +1 -1
  119. package/dist/server/plugins/catalog-entities/entities/{extract-entities-content.d.ts → extract-file-content.d.ts} +1 -1
  120. package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/arazzo-entities-extractor.d.ts +2 -2
  121. package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/arazzo-entities-extractor.js +1 -1
  122. package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/asyncapi-entities-extractor.d.ts +2 -2
  123. package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/asyncapi-entities-extractor.js +1 -1
  124. package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/base.d.ts +2 -2
  125. package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/base.js +1 -1
  126. package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/graphql-entities-extractor.d.ts +2 -2
  127. package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/graphql-entities-extractor.js +2 -2
  128. package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/openapi-entities-extractor.d.ts +2 -2
  129. package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/openapi-entities-extractor.js +1 -1
  130. package/dist/server/plugins/catalog-entities/extensions/extractors/fs-entities-extractor.js +1 -1
  131. package/dist/server/plugins/catalog-entities/get-server-props.d.ts +1 -2
  132. package/dist/server/plugins/catalog-entities/get-server-props.js +1 -1
  133. package/dist/server/plugins/catalog-entities/schemas/database-schemas.d.ts +64 -0
  134. package/dist/server/plugins/catalog-entities/schemas/database-schemas.js +1 -1
  135. package/dist/server/plugins/catalog-entities/schemas/dto-schemas.d.ts +6 -12
  136. package/dist/server/plugins/catalog-entities/schemas/dto-schemas.js +1 -1
  137. package/dist/server/plugins/catalog-entities/schemas/read-model-schemas.d.ts +4 -8
  138. package/dist/server/plugins/catalog-entities/schemas/read-model-schemas.js +1 -1
  139. package/dist/server/plugins/catalog-entities/utils/catalog-data-collector.js +1 -1
  140. package/dist/server/plugins/catalog-entities/utils/read-string.d.ts +7 -0
  141. package/dist/server/plugins/catalog-entities/utils/read-string.js +1 -0
  142. package/dist/server/plugins/config-parser/loaders/content-slugs-loader.js +1 -1
  143. package/dist/server/plugins/config-parser/loaders/nearest-redocly-config-loader.js +1 -1
  144. package/dist/server/plugins/config-parser/loaders/utils/read-and-validate-config.js +1 -1
  145. package/dist/server/plugins/config-parser/loaders/yaml-parser.js +1 -1
  146. package/dist/server/plugins/default-theme/resolve-products-config.js +1 -1
  147. package/dist/server/plugins/ensure-frontmatter-theme-compatibility.js +1 -1
  148. package/dist/server/plugins/entitlements/index.js +1 -1
  149. package/dist/server/plugins/graphql-docs/index.js +1 -1
  150. package/dist/server/plugins/l10n/index.js +1 -1
  151. package/dist/server/plugins/lifecycle.js +2 -2
  152. package/dist/server/plugins/markdown/attribute-resolvers/code-walkthrough/filesets-resolver.js +1 -1
  153. package/dist/server/plugins/markdown/attribute-resolvers/helpers/dereference-json-schema-refs.d.ts +14 -0
  154. package/dist/server/plugins/markdown/attribute-resolvers/helpers/dereference-json-schema-refs.js +1 -0
  155. package/dist/server/plugins/markdown/attribute-resolvers/helpers/generate-sample-from-schema.d.ts +62 -0
  156. package/dist/server/plugins/markdown/attribute-resolvers/helpers/generate-sample-from-schema.js +2 -0
  157. package/dist/server/plugins/markdown/attribute-resolvers/index.js +1 -1
  158. package/dist/server/plugins/markdown/attribute-resolvers/resolve-code-snippet-from-file.js +1 -1
  159. package/dist/server/plugins/markdown/attribute-resolvers/resolve-json-example-ref.d.ts +4 -0
  160. package/dist/server/plugins/markdown/attribute-resolvers/resolve-json-example-ref.js +1 -0
  161. package/dist/server/plugins/markdown/attribute-resolvers/resolve-json-schema-ref.js +1 -1
  162. package/dist/server/plugins/markdown/attribute-resolvers/resolve-link.d.ts +1 -1
  163. package/dist/server/plugins/markdown/attribute-resolvers/resolve-link.js +1 -1
  164. package/dist/server/plugins/markdown/attribute-resolvers/resolve-open-api-ref.js +1 -1
  165. package/dist/server/plugins/markdown/attribute-resolvers/resolve-parsed-yaml.js +1 -1
  166. package/dist/server/plugins/markdown/attribute-resolvers/resolve-raw-content.js +1 -1
  167. package/dist/server/plugins/markdown/attribute-resolvers/resolve-sample-from-json-schema.d.ts +4 -0
  168. package/dist/server/plugins/markdown/attribute-resolvers/resolve-sample-from-json-schema.js +1 -0
  169. package/dist/server/plugins/markdown/attribute-resolvers/resolve-svg-content.js +1 -1
  170. package/dist/server/plugins/markdown/compiler.js +1 -1
  171. package/dist/server/plugins/markdown/get-server-props.js +1 -1
  172. package/dist/server/plugins/markdown/index.js +1 -1
  173. package/dist/server/plugins/markdown/markdoc/attributes/index.d.ts +2 -0
  174. package/dist/server/plugins/markdown/markdoc/attributes/index.js +1 -1
  175. package/dist/server/plugins/markdown/markdoc/attributes/json-example-ref.d.ts +6 -0
  176. package/dist/server/plugins/markdown/markdoc/attributes/json-example-ref.js +1 -0
  177. package/dist/server/plugins/markdown/markdoc/attributes/sample-from-json-schema.d.ts +6 -0
  178. package/dist/server/plugins/markdown/markdoc/attributes/sample-from-json-schema.js +1 -0
  179. package/dist/server/plugins/markdown/markdoc/custom-components/openapi/index.d.ts +1 -0
  180. package/dist/server/plugins/markdown/markdoc/custom-components/openapi/index.js +1 -1
  181. package/dist/server/plugins/markdown/markdoc/custom-components/openapi/json-example.d.ts +8 -0
  182. package/dist/server/plugins/markdown/markdoc/custom-components/openapi/json-example.js +7 -0
  183. package/dist/server/plugins/markdown/markdoc/partials.js +1 -1
  184. package/dist/server/plugins/markdown/markdoc/resolve-raw-partials.js +1 -1
  185. package/dist/server/plugins/markdown/markdoc/tags/index.d.ts +4 -0
  186. package/dist/server/plugins/markdown/markdoc/tags/index.js +1 -1
  187. package/dist/server/plugins/markdown/markdoc/tags/json-example.d.ts +3 -0
  188. package/dist/server/plugins/markdown/markdoc/tags/json-example.js +1 -0
  189. package/dist/server/plugins/markdown/markdown-static-data-loader.js +1 -1
  190. package/dist/server/plugins/mcp/auth/auth-handlers.d.ts +1 -1
  191. package/dist/server/plugins/mcp/auth/auth-handlers.js +1 -1
  192. package/dist/server/plugins/mcp/docs-mcp/tools/get-endpoint-info.d.ts +7 -2
  193. package/dist/server/plugins/mcp/docs-mcp/tools/get-endpoint-info.js +1 -1
  194. package/dist/server/plugins/mcp/docs-mcp/tools/get-endpoints.d.ts +7 -2
  195. package/dist/server/plugins/mcp/docs-mcp/tools/get-endpoints.js +1 -1
  196. package/dist/server/plugins/mcp/docs-mcp/tools/get-full-api-description.d.ts +7 -2
  197. package/dist/server/plugins/mcp/docs-mcp/tools/get-full-api-description.js +1 -1
  198. package/dist/server/plugins/mcp/docs-mcp/tools/get-security-schemes.d.ts +7 -2
  199. package/dist/server/plugins/mcp/docs-mcp/tools/get-security-schemes.js +1 -1
  200. package/dist/server/plugins/mcp/docs-mcp/tools/index.d.ts +4 -3
  201. package/dist/server/plugins/mcp/docs-mcp/tools/index.js +1 -1
  202. package/dist/server/plugins/mcp/docs-mcp/tools/list-apis.d.ts +5 -2
  203. package/dist/server/plugins/mcp/docs-mcp/tools/list-apis.js +1 -1
  204. package/dist/server/plugins/mcp/docs-mcp/tools/utils.d.ts +6 -0
  205. package/dist/server/plugins/mcp/docs-mcp/tools/utils.js +6 -6
  206. package/dist/server/plugins/mcp/docs-mcp/tools/whoami.js +1 -1
  207. package/dist/server/plugins/mcp/docs-mcp/utils.d.ts +3 -3
  208. package/dist/server/plugins/mcp/docs-mcp/utils.js +1 -1
  209. package/dist/server/plugins/mcp/handlers/docs-mcp-handler.js +1 -1
  210. package/dist/server/plugins/mcp/index.js +1 -1
  211. package/dist/server/plugins/mcp/servers/docs-server.d.ts +10 -3
  212. package/dist/server/plugins/mcp/servers/docs-server.js +1 -1
  213. package/dist/server/plugins/mcp/types.d.ts +26 -2
  214. package/dist/server/plugins/mcp/utils.d.ts +9 -8
  215. package/dist/server/plugins/mcp/utils.js +1 -1
  216. package/dist/server/plugins/mcp/workers/run-api-routes-worker.js +1 -1
  217. package/dist/server/plugins/nav-utils.js +1 -1
  218. package/dist/server/plugins/openapi-docs/decorators.d.ts +3 -2
  219. package/dist/server/plugins/openapi-docs/decorators.js +1 -1
  220. package/dist/server/plugins/openapi-docs/index.d.ts +2 -2
  221. package/dist/server/plugins/openapi-docs/index.js +1 -1
  222. package/dist/server/plugins/openapi-docs/is-openapi-doc.js +1 -1
  223. package/dist/server/plugins/openapi-docs/load-definition.d.ts +1 -1
  224. package/dist/server/plugins/openapi-docs/load-definition.js +3 -3
  225. package/dist/server/plugins/pages/index.js +1 -1
  226. package/dist/server/plugins/scorecard-classic/get-scorecard-config.d.ts +11 -0
  227. package/dist/server/plugins/scorecard-classic/loaders/scorecard.js +1 -1
  228. package/dist/server/plugins/search/llmstxt/index.js +5 -5
  229. package/dist/server/plugins/sidebars/index.js +3 -3
  230. package/dist/server/plugins/utils.js +1 -1
  231. package/dist/server/providers/database/databases/catalog-sqlite/migrations/0003_catalog_versions_and_revisions_relations.sql +40 -0
  232. package/dist/server/providers/database/databases/catalog-sqlite/migrations/meta/0003_snapshot.json +392 -0
  233. package/dist/server/providers/database/databases/catalog-sqlite/migrations/meta/_journal.json +7 -0
  234. package/dist/server/providers/database/databases/catalog-sqlite/schemas/entities-relations-table.d.ts +25 -46
  235. package/dist/server/providers/database/databases/catalog-sqlite/schemas/entities-relations-table.js +1 -1
  236. package/dist/server/providers/database/databases/catalog-sqlite/schemas/entities-table.d.ts +20 -3
  237. package/dist/server/providers/database/databases/catalog-sqlite/schemas/entities-table.js +1 -1
  238. package/dist/server/providers/database/databases/main-sqlite/migrations/meta/0005_snapshot.json +263 -0
  239. package/dist/server/providers/database/databases/sqld-sqlite/migrations/0006_catalog-versions-and-revisions-relations.sql +40 -0
  240. package/dist/server/providers/database/databases/sqld-sqlite/migrations/meta/0005_snapshot.json +825 -0
  241. package/dist/server/providers/database/databases/sqld-sqlite/migrations/meta/0006_snapshot.json +832 -0
  242. package/dist/server/providers/database/databases/sqld-sqlite/migrations/meta/_journal.json +7 -0
  243. package/dist/server/providers/database/pagination/combined-filters.d.ts +4 -1
  244. package/dist/server/providers/database/pagination/combined-filters.js +1 -1
  245. package/dist/server/providers/database/pagination/filter.d.ts +1 -0
  246. package/dist/server/providers/database/pagination/filter.js +1 -1
  247. package/dist/server/providers/database/pagination/index.d.ts +4 -1
  248. package/dist/server/providers/database/pagination/utils/decode-cursor.js +1 -1
  249. package/dist/server/ssr/index.js +1 -1
  250. package/dist/server/ssr/render.js +1 -1
  251. package/dist/server/ssr/template.d.ts +1 -1
  252. package/dist/server/ssr/template.js +13 -13
  253. package/dist/server/ssr/utils.js +27 -13
  254. package/dist/server/store.js +1 -1
  255. package/dist/server/tools/notifiers/formatter.d.ts +2 -0
  256. package/dist/server/tools/notifiers/formatter.js +3 -3
  257. package/dist/server/tools/notifiers/logger.d.ts +18 -39
  258. package/dist/server/tools/notifiers/logger.js +2 -6
  259. package/dist/server/tools/notifiers/reporter.js +9 -9
  260. package/dist/server/tools/notifiers/terminal-manager.d.ts +8 -0
  261. package/dist/server/tools/notifiers/terminal-manager.js +5 -0
  262. package/dist/server/types/fs.d.ts +5 -10
  263. package/dist/server/types/plugins/api-routes.d.ts +0 -3
  264. package/dist/server/types/plugins/common.d.ts +0 -1
  265. package/dist/server/utils/is-valid-iso-date.d.ts +5 -0
  266. package/dist/server/utils/is-valid-iso-date.js +1 -0
  267. package/dist/server/utils/lifecycle-hooks.js +1 -1
  268. package/dist/server/utils/queue.js +1 -1
  269. package/dist/server/utils/redirects/find-redirect.d.ts +4 -2
  270. package/dist/server/utils/redirects/find-redirect.js +1 -1
  271. package/dist/server/utils/resolve-asset-path.js +1 -1
  272. package/dist/server/utils/safe-parse.d.ts +6 -0
  273. package/dist/server/utils/safe-parse.js +1 -0
  274. package/dist/server/utils/validate-and-sanitize-string.d.ts +29 -0
  275. package/dist/server/utils/validate-and-sanitize-string.js +1 -0
  276. package/dist/server/web-server/auth.d.ts +5 -0
  277. package/dist/server/web-server/auth.js +3 -3
  278. package/dist/server/web-server/http.js +2 -2
  279. package/dist/server/web-server/middleware/loggerMiddleware.js +1 -1
  280. package/dist/server/web-server/routes/auth.js +1 -1
  281. package/dist/server/web-server/routes/catalog/bff-catalog-related-entities.js +1 -1
  282. package/dist/server/web-server/routes/catalog/bff-catalog.js +1 -1
  283. package/dist/server/web-server/routes/catalog/catalog-relations.js +1 -1
  284. package/dist/server/web-server/routes/mcp-oauth.js +1 -1
  285. package/dist/server/web-server/routes/search.js +1 -1
  286. package/dist/server/web-server/utils/get-redirect-login-url.js +1 -1
  287. package/dist/types/ssr.d.ts +3 -1
  288. package/dist/utils/auth/build-login-url.d.ts +1 -3
  289. package/dist/utils/auth/build-login-url.js +1 -1
  290. package/dist/utils/env/is-local-development.d.ts +13 -0
  291. package/dist/utils/env/is-local-development.js +1 -0
  292. package/dist/utils/env/is-production.d.ts +13 -0
  293. package/dist/utils/env/is-production.js +1 -0
  294. package/dist/utils/env/is-web-view.d.ts +14 -0
  295. package/dist/utils/env/is-web-view.js +1 -0
  296. package/dist/utils/path/remove-fragment.d.ts +16 -0
  297. package/dist/utils/path/remove-fragment.js +1 -0
  298. package/package.json +12 -11
  299. package/dist/server/persistence/kv/mappers/create-kv-read-record.d.ts +0 -4
  300. package/dist/server/persistence/kv/mappers/create-kv-read-record.js +0 -1
  301. package/dist/server/web-server/routes/otel/types.d.ts +0 -61
  302. package/dist/server/web-server/routes/otel/types.js +0 -1
  303. /package/dist/server/plugins/catalog-entities/entities/{extract-entities-content.js → extract-file-content.js} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,68 @@
1
1
  # @redocly/realm
2
2
 
3
+ ## 0.129.0-next.3
4
+
5
+ ### Minor Changes
6
+
7
+ - ebaff45e00: Added tooltips to items in the API docs overview section.
8
+ - 39c941417d: Added support for OpenAPI 3.2 `dataValue` and `serializedValue`.
9
+
10
+ ### Patch Changes
11
+
12
+ - 93df42565c: Fixed an issue with link checker where image assets were incorrectly flagged as broken links when their parent route was an OpenAPI specification.
13
+ - a2f0ebb83c: Updated `@redocly/openapi-core` to version `2.14.1`.
14
+ - b63f469f50: Improved loading of description files for the MCP Docs server.
15
+ - ecc3ea32aa: Fixed an issue where the path prefix was added twice to the login page.
16
+ - d99157c0d18: Fixed an error appearing in browser console when opening a page in dark mode.
17
+ - Updated dependencies [ebaff45e00]
18
+ - Updated dependencies [4c662c0042]
19
+ - Updated dependencies [39c941417d]
20
+ - Updated dependencies [a2f0ebb83c]
21
+ - Updated dependencies [d99157c0d18]
22
+ - @redocly/openapi-docs@3.17.0-next.3
23
+ - @redocly/theme@0.61.0-next.3
24
+ - @redocly/asyncapi-docs@1.6.0-next.3
25
+ - @redocly/portal-plugin-mock-server@0.14.0-next.3
26
+ - @redocly/graphql-docs@1.6.0-next.0
27
+
28
+ ## 0.128.1
29
+
30
+ ### Patch Changes
31
+
32
+ - 7a73a9957a: Fixed a bug where scorecard custom targets did not match.
33
+ - fe3253dabb: Fixed an issue where the product picker was not properly aligned in the navbar.
34
+ - Updated dependencies [fe3253dabb]
35
+ - @redocly/theme@0.60.1
36
+ - @redocly/asyncapi-docs@1.5.1
37
+ - @redocly/graphql-docs@1.5.0
38
+ - @redocly/openapi-docs@3.16.1
39
+ - @redocly/portal-plugin-mock-server@0.13.1
40
+
41
+ ## 0.129.0-next.2
42
+
43
+ ### Minor Changes
44
+
45
+ - 8fdaab071f: Added `useColorSwitcher` React hook to receive color mode updates in components.
46
+ - dd42fb73d2: Added support for the `json-example` Markdoc tag to embed JSON snippets in documentation.
47
+
48
+ ### Patch Changes
49
+
50
+ - 8d09c7d474: Updated `@redocly/openapi-core` to version `2.13.0`.
51
+ - e408a095cf: Fixed a bug where scorecard custom targets did not match.
52
+ - 49ddba9c14: Fixed dismissed banner briefly appearing after page refresh.
53
+ - b28161bbc8: Added product-specific CSS class to the root element for targeted styling by product name.
54
+ - 49ddba9c14: Fixed Y-axis scroll position when deep linking to pages with banners.
55
+ - Updated dependencies [8d09c7d474]
56
+ - Updated dependencies [49ddba9c14]
57
+ - Updated dependencies [8fdaab071f]
58
+ - Updated dependencies [b28161bbc8]
59
+ - Updated dependencies [49ddba9c14]
60
+ - @redocly/openapi-docs@3.17.0-next.2
61
+ - @redocly/theme@0.61.0-next.2
62
+ - @redocly/asyncapi-docs@1.6.0-next.2
63
+ - @redocly/portal-plugin-mock-server@0.14.0-next.2
64
+ - @redocly/graphql-docs@1.6.0-next.0
65
+
3
66
  ## 0.129.0-next.1
4
67
 
5
68
  ### Minor Changes
package/dist/bin.js CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- import"./cli/utils/node-version-check.js";import s from"mri";import*as r from"node:path";import{tmpdir as P}from"node:os";import*as A from"node:fs";import"./server/node-fetch-polyfill.js";import{cliCommandNames as g}from"./constants/common.js";import{initPlugins as x}from"./server/plugins/lifecycle.js";import{loadEnvVariables as T}from"./server/utils/envs/load-env-variables.js";import{PORTAL_VERSION as y}from"./server/version.js";import{logger as p}from"./server/tools/notifiers/logger.js";import{reporter as o}from"./server/tools/notifiers/reporter.js";import{sha as R}from"./server/utils/crypto/sha.js";import{develop as S}from"./cli/develop.js";import{eject as k}from"./cli/eject/index.js";import{beforeCommand as w}from"./server/utils/lifecycle-hooks.js";import{Store as C}from"./server/store.js";import{prepare as V}from"./cli/prepare/index.js";import{fromCurrentDir as I}from"./server/utils/paths.js";import{translationsCliOpts as L}from"./cli/translations/options.js";import{generateTranslations as M}from"./cli/translations/index.js";import{EntitlementsProvider as N}from"./server/entitlements/entitlements-provider.js";import{isValidPlan as _}from"./server/entitlements/is-valid-plan.js";import{stopAllCompilers as F}from"./server/esbuild/esbuild.js";import{copyLibsqlPrebuiltBinary as U}from"./cli/prepare/libsql/copy-prebuilt-binary.js";import{telemetry as d}from"./cli/telemetry/index.js";const n=process.argv[2];let t;const f={alias:{d:"project-dir",p:"port"},default:{"project-dir":process.env.REDOCLY_CONTENT_DIR||process.cwd(),verbose:!1,outdir:"public"}},$={alias:f.alias,default:{...f.default,plan:"enterprise"}},q={alias:{d:"prepareDir"},default:{verbose:!1,prepareDir:"public"}},B={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"):(p.error("Uncaught exception occurred. Stopping compilers."),await F(),p.error("Exiting due to uncaught exception"),await o.panic(e))});try{n||await o.panicOnContentError("Command not specified.");const e=N.instance();switch(["prepare","build","serve"].includes(n)&&await e.init(),["eject","translate"].includes(n)&&await e.init({developModePlan:"enterprise"}),n){case"develop":case"preview":const i=s(process.argv.slice(3),$),E=r.resolve(i["project-dir"]),b=r.join(P(),"redocly-public-"+R(E)),l=i.plan.toLowerCase();_(l)||await o.panicOnContentError(`Invalid --plan argument value '${l}'.`),await e.init({developModePlan:l}),t=new C({contentDir:r.resolve(i["project-dir"]),outdir:b,serverOutDir:I(import.meta.url,"./server/esbuild/cache/server")}),await w(g.DEVELOP,i,t),await S(i,t);break;case"prepare":const a=s(process.argv.slice(3),f),u=r.resolve(r.join(a.outdir,"server"));t=new C({contentDir:r.resolve(a["project-dir"]),outdir:r.resolve(a.outdir,"client"),serverOutDir:u}),await w(g.PREPARE,a,t),U(u),await V(a,t);break;case"serve":T();const j=s(process.argv.slice(3),q),O=r.resolve(j.prepareDir);d.sendServeCliCommandExecutedMessage();const v=r.join(O,"server","index.mjs");A.existsSync(v)||await o.panic("Server not found. Please run `realm prepare` first"),import(v).catch(async c=>{await o.panic("Failed to load server",c)});break;case"eject":e.canAccessFeature("themeEjecting")||await o.panicOnContentError('The "eject" command is not available for this project');const m=s(process.argv.slice(3),B),{lifecycleContext:{getConfig:h,fs:D}}=await x({outdir:"",contentDir:r.resolve(m["project-dir"]),setGlobalConfig:()=>null});D.dispose(),d.sendCliCommandEjectExecutedMessage({arguments:m}),await k({...m,config:await h()}),p.clearAllTimeouts();break;case"translate":if(e.canAccessFeature("l10n")){const c=s(process.argv.slice(3),L);d.sendCliCommandTranslateExecutedMessage({arguments:c}),await M(c)}else await o.panicOnContentError('The "translate" command is not available for this project');break;case"--version":console.log(y);break;default:await o.panicOnContentError(`Unknown command "${n}"`)}}catch(e){p.error("Exiting due to uncaught exception"),await o.panic(e)}
2
+ import"./cli/utils/node-version-check.js";import n from"mri";import*as r from"node:path";import{tmpdir as P}from"node:os";import*as A from"node:fs";import"./server/node-fetch-polyfill.js";import{cliCommandNames as g}from"./constants/common.js";import{initPlugins as x}from"./server/plugins/lifecycle.js";import{loadEnvVariables as T}from"./server/utils/envs/load-env-variables.js";import{PORTAL_VERSION as y}from"./server/version.js";import{logger as p}from"./server/tools/notifiers/logger.js";import{reporter as o}from"./server/tools/notifiers/reporter.js";import{sha as R}from"./server/utils/crypto/sha.js";import{develop as S}from"./cli/develop.js";import{eject as k}from"./cli/eject/index.js";import{beforeCommand as w}from"./server/utils/lifecycle-hooks.js";import{Store as C}from"./server/store.js";import{prepare as V}from"./cli/prepare/index.js";import{fromCurrentDir as I}from"./server/utils/paths.js";import{translationsCliOpts as L}from"./cli/translations/options.js";import{generateTranslations as M}from"./cli/translations/index.js";import{EntitlementsProvider as N}from"./server/entitlements/entitlements-provider.js";import{isValidPlan as _}from"./server/entitlements/is-valid-plan.js";import{stopAllCompilers as F}from"./server/esbuild/esbuild.js";import{copyLibsqlPrebuiltBinary as U}from"./cli/prepare/libsql/copy-prebuilt-binary.js";import{telemetry as d}from"./cli/telemetry/index.js";const s=process.argv[2];let t;const f={alias:{d:"project-dir",p:"port"},default:{"project-dir":process.env.REDOCLY_CONTENT_DIR||process.cwd(),outdir:"public"}},$={alias:f.alias,default:{...f.default,plan:"enterprise"}},q={alias:{d:"prepareDir"},default:{prepareDir:"public"}},B={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"):(p.error("Uncaught exception occurred. Stopping compilers."),await F(),p.error("Exiting due to uncaught exception"),await o.panic(e))});try{s||await o.panicOnContentError("Command not specified.");const e=N.instance();switch(["prepare","build","serve"].includes(s)&&await e.init(),["eject","translate"].includes(s)&&await e.init({developModePlan:"enterprise"}),s){case"develop":case"preview":const i=n(process.argv.slice(3),$),E=r.resolve(i["project-dir"]),j=r.join(P(),"redocly-public-"+R(E)),l=i.plan.toLowerCase();_(l)||await o.panicOnContentError(`Invalid --plan argument value '${l}'.`),await e.init({developModePlan:l}),t=new C({contentDir:r.resolve(i["project-dir"]),outdir:j,serverOutDir:I(import.meta.url,"./server/esbuild/cache/server")}),await w(g.DEVELOP,i,t),await S(i,t);break;case"prepare":const a=n(process.argv.slice(3),f),u=r.resolve(r.join(a.outdir,"server"));t=new C({contentDir:r.resolve(a["project-dir"]),outdir:r.resolve(a.outdir,"client"),serverOutDir:u}),await w(g.PREPARE,a,t),U(u),await V(a,t);break;case"serve":T();const b=n(process.argv.slice(3),q),O=r.resolve(b.prepareDir);d.sendServeCliCommandExecutedMessage();const v=r.join(O,"server","index.mjs");A.existsSync(v)||await o.panic("Server not found. Please run `realm prepare` first"),import(v).catch(async c=>{await o.panic("Failed to load server",c)});break;case"eject":e.canAccessFeature("themeEjecting")||await o.panicOnContentError('The "eject" command is not available for this project');const m=n(process.argv.slice(3),B),{lifecycleContext:{getConfig:h,fs:D}}=await x({outdir:"",contentDir:r.resolve(m["project-dir"]),setGlobalConfig:()=>null});D.dispose(),d.sendCliCommandEjectExecutedMessage({arguments:m}),await k({...m,config:await h()}),p.clearAllTimeouts();break;case"translate":if(e.canAccessFeature("l10n")){const c=n(process.argv.slice(3),L);d.sendCliCommandTranslateExecutedMessage({arguments:c}),await M(c)}else await o.panicOnContentError('The "translate" command is not available for this project');break;case"--version":console.log(y);break;default:await o.panicOnContentError(`Unknown command "${s}"`)}}catch(e){p.error("Exiting due to uncaught exception"),await o.panic(e)}
@@ -2,7 +2,7 @@ import type { Store } from '../server/store.js';
2
2
  export type DevelopArgs = {
3
3
  port: number | string;
4
4
  'project-dir': string;
5
- verbose?: boolean;
5
+ 'log-level'?: string;
6
6
  inspect?: boolean;
7
7
  pathPrefix?: string;
8
8
  'dev-login'?: boolean;
@@ -1 +1 @@
1
- import{logger as n}from"../server/tools/notifiers/logger.js";import{reporter as u}from"../server/tools/notifiers/reporter.js";import{green as g}from"../server/tools/notifiers/helpers/colors.js";import{resolveCache as v}from"../server/esbuild/plugins/themes-resolver.js";import{getBilledPagesCount as m}from"../server/utils/index.js";import{createClientCompiler as w,createServerCompiler as h}from"../server/esbuild/esbuild.js";import{initPlugins as C,runPlugins as p,writeClientEntries as y}from"../server/plugins/lifecycle.js";import{startDevServer as S}from"../server/web-server/dev-server.js";import{validateAllMarkdowns as f}from"../server/plugins/markdown/compiler.js";import{reportAllErrors as b}from"../server/utils/report-all-errors.js";import{copyMigrationsFolder as R}from"../server/providers/database/copy-migrations.js";async function G(i,e){n.patchConsole(),n.info("Starting project preview mode."),y(e),n.startTiming("initial-js"),await E(e),n.infoTime("initial-js","JavaScript compiled");const{pluginInstances:a,lifecycleContext:t}=await C({contentDir:e.contentDir,outdir:e.outdir,serverOutDir:void 0,devLogin:i["dev-login"]!==!1,setGlobalConfig:e.setGlobalConfig});e.lifecycleContext=t,R(e),await p(a,e,t,{failFast:!0}),t.cache.enableCacheCleanup();const d=async()=>{const r=performance.now();u.clearErrors(),await p(a,e,t),await f(e,t),P().then(async()=>{await b(t);const l=m(e.getAllRoutes()),o=u.summary(` \u{1F440} Last change processed in ${g(Math.round(performance.now()-r)+"ms")}`,l);e.runListeners("errors-updated",void 0,o),e.runListeners("pages-updated",void 0,l),e.runListeners("routes-updated")})};await f(e,t),await b(t);const s=m(e.getAllRoutes());u.summary(" \u{1F440} Watching for changes...",s),e.runListeners("pages-updated",void 0,s),t.fs.watch(async()=>{v.clear(),await d()}),n.verbose("Starting development server."),await S(e,t,{port:Number(i.port||4e3)}),u.listenStdin()}async function E(i){let e=!0,a=!0;const t=r=>{r==="client"?e=!0:a=!0,i.runListeners("build-started"),e!=a&&(i.startEsbuildRun(),n.startTiming("rebuild"))},d=async r=>{r==="client"?e=!1:a=!1,!(e||a)&&(i.finishEsbuildRun(),i.buildRevision++,n.infoTime("rebuild","JavaScript re-compiled"),await i.reloadMarkdocOptions(),i.markUserCodeReady(),i.runListeners("build-updated"),i.lifecycleContext&&i.buildRevision>1&&i.lifecycleContext.fs.emitCodeUpdated())},s=[new Promise((r,l)=>{const o={label:"client",buildStart(){n.verbose("Start compiling client code."),n.startTiming(this.label)},buildEnd(){n.verboseTime(this.label,"Client compiled"),r(!0)},rebuildStart:()=>t("client"),rebuildEnd:()=>d("client")};w(i,i.outdir,"development",o).then(c=>c.watch()).catch(l)}),new Promise((r,l)=>{const o={label:"server",buildStart(){n.verbose("Start compiling server code."),n.startTiming(this.label)},buildEnd(){n.verboseTime(this.label,"Server compiled"),r(!0)},rebuildStart:()=>t("server"),rebuildEnd:()=>d("server")};h(i,i.serverOutDir,"development",o).then(c=>c.watch()).catch(l)})];await Promise.all(s),await i.reloadMarkdocOptions()}function P(){return new Promise(i=>{setTimeout(i,0)})}export{G as develop};
1
+ import{logger as n}from"../server/tools/notifiers/logger.js";import{reporter as u}from"../server/tools/notifiers/reporter.js";import{green as g}from"../server/tools/notifiers/helpers/colors.js";import{resolveCache as v}from"../server/esbuild/plugins/themes-resolver.js";import{getBilledPagesCount as m}from"../server/utils/index.js";import{createClientCompiler as w,createServerCompiler as h}from"../server/esbuild/esbuild.js";import{initPlugins as C,runPlugins as p,writeClientEntries as y}from"../server/plugins/lifecycle.js";import{startDevServer as S}from"../server/web-server/dev-server.js";import{validateAllMarkdowns as f}from"../server/plugins/markdown/compiler.js";import{reportAllErrors as b}from"../server/utils/report-all-errors.js";import{copyMigrationsFolder as R}from"../server/providers/database/copy-migrations.js";async function G(i,e){n.info("Starting project preview mode."),y(e),n.startTiming("initial-js"),await E(e),n.infoTime("initial-js","JavaScript compiled");const{pluginInstances:l,lifecycleContext:t}=await C({contentDir:e.contentDir,outdir:e.outdir,serverOutDir:void 0,devLogin:i["dev-login"]!==!1,setGlobalConfig:e.setGlobalConfig});e.lifecycleContext=t,R(e),await p(l,e,t,{failFast:!0});const d=async()=>{const r=performance.now();u.clearErrors(),await p(l,e,t),await f(e,t),P().then(async()=>{await b(t);const a=m(e.getAllRoutes()),o=u.summary(` \u{1F440} Last change processed in ${g(Math.round(performance.now()-r)+"ms")}`,a);e.runListeners("errors-updated",void 0,o),e.runListeners("pages-updated",void 0,a),e.runListeners("routes-updated")})};await f(e,t),await b(t);const s=m(e.getAllRoutes());u.summary(" \u{1F440} Watching for changes...",s),e.runListeners("pages-updated",void 0,s),t.fs.watch(async()=>{v.clear(),await d()}),n.verbose("Starting development server."),await S(e,t,{port:Number(i.port||4e3)}),u.listenStdin()}async function E(i){let e=!0,l=!0;const t=r=>{r==="client"?e=!0:l=!0,i.runListeners("build-started"),e!=l&&(i.startEsbuildRun(),n.startTiming("rebuild"))},d=async r=>{r==="client"?e=!1:l=!1,!(e||l)&&(i.finishEsbuildRun(),i.buildRevision++,n.infoTime("rebuild","JavaScript re-compiled"),await i.reloadMarkdocOptions(),i.markUserCodeReady(),i.runListeners("build-updated"),i.lifecycleContext&&i.buildRevision>1&&i.lifecycleContext.fs.emitCodeUpdated())},s=[new Promise((r,a)=>{const o={label:"client",buildStart(){n.verbose("Start compiling client code."),n.startTiming(this.label)},buildEnd(){n.verboseTime(this.label,"Client compiled"),r(!0)},rebuildStart:()=>t("client"),rebuildEnd:()=>d("client")};w(i,i.outdir,"development",o).then(c=>c.watch()).catch(a)}),new Promise((r,a)=>{const o={label:"server",buildStart(){n.verbose("Start compiling server code."),n.startTiming(this.label)},buildEnd(){n.verboseTime(this.label,"Server compiled"),r(!0)},rebuildStart:()=>t("server"),rebuildEnd:()=>d("server")};h(i,i.serverOutDir,"development",o).then(c=>c.watch()).catch(a)})];await Promise.all(s),await i.reloadMarkdocOptions()}function P(){return new Promise(i=>{setTimeout(i,0)})}export{G as develop};
@@ -1 +1 @@
1
- import r from"path";const l=async({context:s,store:n})=>{const o=await s.fs.scan(),a={};for(const e of o){if(e.isVirtual||await s.isPathIgnored(e.relativePath))continue;let t=r.extname(e.relativePath);if(t){if(t.endsWith(".yaml")){const i=n.getRouteByFsPath(e.relativePath);i&&["openapi","asyncapi"].includes(i.metadata?.type)&&(t=i.metadata?.type+t)}t===".tsx"&&e.relativePath.endsWith("page.tsx")&&(t=".page.tsx"),a[t]=(a[t]||0)+1}}return{version:"1",name:"fileExtensions",value:JSON.stringify(a)}};export{l as getFileExtensionsUsage};
1
+ import r from"path";const l=async({context:s,store:n})=>{const o=s.fs.scan(),a={};for(const t of o){if(t.isVirtual||await s.isPathIgnored(t.relativePath))continue;let e=r.extname(t.relativePath);if(e){if(e.endsWith(".yaml")){const i=n.getRouteByFsPath(t.relativePath);i&&["openapi","asyncapi"].includes(i.metadata?.type)&&(e=i.metadata?.type+e)}e===".tsx"&&t.relativePath.endsWith("page.tsx")&&(e=".page.tsx"),a[e]=(a[e]||0)+1}}return{version:"1",name:"fileExtensions",value:JSON.stringify(a)}};export{l as getFileExtensionsUsage};
@@ -1 +1 @@
1
- import{isObject as s}from"../../../../utils/guards/is-object.js";const f=async({context:e})=>{const a={raw:[],aggregated:{}},r=await e.fs.scan(/\.(md|page\.tsx?)$/);for(const t of r){if(t.isVirtual||await e.isPathIgnored(t.relativePath))continue;const o=t.relativePath.endsWith(".md")?"markdown-frontmatter":"react-frontmatter",{data:{frontmatter:n}}=await e.cache.load(t.relativePath,o);s(n)&&Object.keys(n).length&&(i(a.aggregated,n),a.raw.push(n))}return{version:"2",name:"frontmatterUsage",value:JSON.stringify(a)}};function i(e,a,r=""){for(const t in a)e[`${r}${t}`]=(e[`${r}${t}`]||0)+1,!(!s(a[t])||Array.isArray(a[t]))&&i(e,a[t],`${r}${t}_`)}export{f as getFrontmatterUsage};
1
+ import{isObject as s}from"../../../../utils/guards/is-object.js";const f=async({context:e})=>{const a={raw:[],aggregated:{}},r=e.fs.scan(/\.(md|page\.tsx?)$/);for(const t of r){if(t.isVirtual||await e.isPathIgnored(t.relativePath))continue;const o=t.relativePath.endsWith(".md")?"markdown-frontmatter":"react-frontmatter",{data:{frontmatter:n}}=await e.cache.load(t.relativePath,o);s(n)&&Object.keys(n).length&&(i(a.aggregated,n),a.raw.push(n))}return{version:"2",name:"frontmatterUsage",value:JSON.stringify(a)}};function i(e,a,r=""){for(const t in a)e[`${r}${t}`]=(e[`${r}${t}`]||0)+1,!(!s(a[t])||Array.isArray(a[t]))&&i(e,a[t],`${r}${t}_`)}export{f as getFrontmatterUsage};
@@ -1 +1 @@
1
- import{isObject as f}from"../../../../utils/guards/is-object.js";import{isPartial as k}from"../../../../server/plugins/markdown/is-partial.js";import{parseAndResolveMarkdoc as p}from"../../../../server/plugins/markdown/compiler.js";import{importUserTags as T}from"../../../../server/plugins/markdown/markdoc/import-user-tags.js";const w=async({context:s,store:o})=>{const e=await s.fs.scan(/\.md$/),h=await L(o),g=new Set,t={markdocTags:{},htmlTags:{},customMarkdocTags:[],filesWithMarkdocTags:0,filesWithoutMarkdocTags:0,codeSnippetLanguages:{},codeWalkthroughLanguages:{}};for(const i of e){if(i.isVirtual||await s.isPathIgnored(i.relativePath)||k(i.relativePath,o.getConfig().markdown?.partialsFolders??[]))continue;const{data:{info:r}}=await p({relativePath:i.relativePath},o.markdocOptions,{actions:o,context:s});if(!f(r))continue;const{tagList:c,htmlTagsList:u,tagOccurrence:d,codeSnippetLanguages:l,codeWalkthroughLanguages:m}=r;for(const a in l)t.codeSnippetLanguages[a]=(t.codeSnippetLanguages[a]||0)+l[a];for(const a in m)t.codeWalkthroughLanguages[a]=(t.codeWalkthroughLanguages[a]||0)+m[a];if(!(!c||!u)){for(const a in d){const n=c.includes(a)?t.markdocTags:t.htmlTags;h.includes(a)&&g.add(a),n[a]||(n[a]={count:0,files:0}),n[a].files++,n[a].count+=d[a]}c.length>0||u.length>0?t.filesWithMarkdocTags++:t.filesWithoutMarkdocTags++}}return{version:"1",name:"markdocUsage",value:JSON.stringify({...t,customMarkdocTags:Array.from(g)})}};async function L(s){const e=(await T(s.serverOutDir))?.schema?.tags;return f(e)?Object.keys(e):[]}export{w as getMarkdocUsage};
1
+ import{isObject as f}from"../../../../utils/guards/is-object.js";import{isPartial as k}from"../../../../server/plugins/markdown/is-partial.js";import{parseAndResolveMarkdoc as p}from"../../../../server/plugins/markdown/compiler.js";import{importUserTags as T}from"../../../../server/plugins/markdown/markdoc/import-user-tags.js";const P=async({context:s,store:o})=>{const e=s.fs.scan(/\.md$/),h=await L(o),g=new Set,t={markdocTags:{},htmlTags:{},customMarkdocTags:[],filesWithMarkdocTags:0,filesWithoutMarkdocTags:0,codeSnippetLanguages:{},codeWalkthroughLanguages:{}};for(const i of e){if(i.isVirtual||await s.isPathIgnored(i.relativePath)||k(i.relativePath,o.getConfig().markdown?.partialsFolders??[]))continue;const{data:{info:r}}=await p({relativePath:i.relativePath},o.markdocOptions,{actions:o,context:s});if(!f(r))continue;const{tagList:c,htmlTagsList:u,tagOccurrence:d,codeSnippetLanguages:l,codeWalkthroughLanguages:m}=r;for(const a in l)t.codeSnippetLanguages[a]=(t.codeSnippetLanguages[a]||0)+l[a];for(const a in m)t.codeWalkthroughLanguages[a]=(t.codeWalkthroughLanguages[a]||0)+m[a];if(!(!c||!u)){for(const a in d){const n=c.includes(a)?t.markdocTags:t.htmlTags;h.includes(a)&&g.add(a),n[a]||(n[a]={count:0,files:0}),n[a].files++,n[a].count+=d[a]}c.length>0||u.length>0?t.filesWithMarkdocTags++:t.filesWithoutMarkdocTags++}}return{version:"1",name:"markdocUsage",value:JSON.stringify({...t,customMarkdocTags:Array.from(g)})}};async function L(s){const e=(await T(s.serverOutDir))?.schema?.tags;return f(e)?Object.keys(e):[]}export{P as getMarkdocUsage};
@@ -1 +1 @@
1
- import{getPortalConfigStats as i}from"../../../telemetry/get-portal-config-stats.js";const e=[],g=async({context:t})=>{for(const{relativePath:n,dirname:s,isVirtual:o}of await t.fs.scan(/redocly\.yaml$/)){if(o||n==="redocly.yaml")continue;const a=await t.getConfig(s);e.push(a)}return{version:"1",name:"nestedConfigStats",value:i(e)}};export{g as getNestedConfigsUsage};
1
+ import{dirname as a}from"node:path";import{getPortalConfigStats as i}from"../../../telemetry/get-portal-config-stats.js";const n=[],c=async({context:t})=>{for(const{relativePath:e,isVirtual:o}of t.fs.scan(/redocly\.yaml$/)){if(o||e==="redocly.yaml")continue;const s=await t.getConfig(a(e));n.push(s)}return{version:"1",name:"nestedConfigStats",value:i(n)}};export{c as getNestedConfigsUsage};
@@ -1 +1 @@
1
- import{loadConfig as c}from"@redocly/openapi-core";import g from"node:path";import{access as l}from"node:fs/promises";import{ExternalResolver as m}from"../../../../server/fs/utils/external-ref-resolver.js";const R=async({store:o,context:t})=>{const e=[];for(const{relativePath:r,isVirtual:s}of await t.fs.scan(/redocly\.yaml$/)){if(s)continue;const a=await u(r,o,t.fs);e.push(...a)}return{version:"1",name:"refsUsageStats",value:JSON.stringify(e)}};async function u(o,t,e){const r=g.join(t.contentDir,o),s=new m(e);try{await l(r)}catch{return[]}const{resolvedRefMap:a}=await c({configPath:r,externalRefResolver:s});return a?Array.from(a.keys()).map(n=>{const[f,i]=n.split("::");return{configPath:f,refPath:i}}):[]}export{R as getRefsUsage};
1
+ import{loadConfig as c}from"@redocly/openapi-core";import g from"node:path";import{access as l}from"node:fs/promises";import{ExternalResolver as m}from"../../../../server/fs/utils/external-ref-resolver.js";const R=async({store:a,context:t})=>{const e=[];for(const{relativePath:r,isVirtual:s}of t.fs.scan(/redocly\.yaml$/)){if(s)continue;const o=await u(r,a,t.fs);e.push(...o)}return{version:"1",name:"refsUsageStats",value:JSON.stringify(e)}};async function u(a,t,e){const r=g.join(t.contentDir,a),s=new m(e);try{await l(r)}catch{return[]}const{resolvedRefMap:o}=await c({configPath:r,externalRefResolver:s});return o?Array.from(o.keys()).map(n=>{const[f,i]=n.split("::");return{configPath:f,refPath:i}}):[]}export{R as getRefsUsage};
@@ -2,7 +2,7 @@ import type { Store } from '../../server/store.js';
2
2
  export type PrepareArgs = {
3
3
  outdir: string;
4
4
  'project-dir': string;
5
- verbose?: boolean;
5
+ 'log-level'?: string;
6
6
  devLogin?: boolean;
7
7
  pathPrefix?: string;
8
8
  };
@@ -1 +1 @@
1
- const i="TranslationKey",u=async({getConfig:e,cache:t,fs:s})=>{const a=await e(),n=r(a),o=await s.scan(/.*sidebars.yaml$/),c=await Promise.all(o.map(f=>t.load(f.relativePath,"yaml").then(d=>d.data)));return{...r(c),...n}},r=e=>{let t={};if(!e)return{};if(Array.isArray(e))for(const s of e)t={...t,...r(s)};if(typeof e=="object")for(const[s,a]of Object.entries(e))if(s.endsWith(i)&&typeof a=="string"){const n=s.slice(0,i.length*-1),o=e[n];if(!l(n)||!l(a)||!y(o))continue;t[a]=o||""}else t={...t,...r(a)};return t},l=e=>e.trim().length>0,y=e=>e==null||typeof e=="string";export{u as collectConfigTranslations};
1
+ const i="TranslationKey",u=async({getConfig:e,cache:t,fs:s})=>{const a=await e(),n=r(a),o=s.scan(/.*sidebars.yaml$/),c=await Promise.all(o.map(f=>t.load(f.relativePath,"yaml").then(d=>d.data)));return{...r(c),...n}},r=e=>{let t={};if(!e)return{};if(Array.isArray(e))for(const s of e)t={...t,...r(s)};if(typeof e=="object")for(const[s,a]of Object.entries(e))if(s.endsWith(i)&&typeof a=="string"){const n=s.slice(0,i.length*-1),o=e[n];if(!l(n)||!l(a)||!y(o))continue;t[a]=o||""}else t={...t,...r(a)};return t},l=e=>e.trim().length>0,y=e=>e==null||typeof e=="string";export{u as collectConfigTranslations};
@@ -1 +1 @@
1
- import{writeFileSync as d}from"fs";import y from"path";import{dump as T}from"js-yaml";import{DEFAULT_LOCALE_PLACEHOLDER as w}from"../../constants/common.js";import{sortObjectKeys as L}from"../../utils/object/sort-object-keys.js";import{defaultTranslationImports as o}from"../../constants/l10n/default-translations.js";import{ensureDir as u}from"../../server/utils/fs.js";import{collectConfigTranslations as h}from"./collect-config-translations.js";const N=async(t,n)=>{const r=await h(t);for(const a of n){const s=await t.fs.exists(a.filePath)?(await t.cache.load(a.filePath,"yaml")).data||{}:{};if(!s)continue;const i=a.systemName.split("-")[0],l=await o[w](),e=a.systemName!==i?await o[i]?.()||{}:{},m=await o[a.systemName]?.()||{},c={...l,...e,...m,...r,...s},f=L(c),p=y.join(t.fs.cwd,a.filePath);d(u(p),T(f))}};export{N as updateTranslations};
1
+ import{writeFileSync as d}from"fs";import y from"path";import{dump as T}from"js-yaml";import{DEFAULT_LOCALE_PLACEHOLDER as L}from"../../constants/common.js";import{sortObjectKeys as u}from"../../utils/object/sort-object-keys.js";import{defaultTranslationImports as t}from"../../constants/l10n/default-translations.js";import{ensureDir as w}from"../../server/utils/fs.js";import{collectConfigTranslations as h}from"./collect-config-translations.js";const N=async(o,n)=>{const r=await h(o);for(const a of n){const s=o.fs.exists(a.filePath)?(await o.cache.load(a.filePath,"yaml")).data||{}:{};if(!s)continue;const i=a.systemName.split("-")[0],l=await t[L](),e=a.systemName!==i?await t[i]?.()||{}:{},m=await t[a.systemName]?.()||{},c={...l,...e,...m,...r,...s},f=u(c),p=y.join(o.fs.cwd,a.filePath);d(w(p),T(f))}};export{N as updateTranslations};
@@ -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{useBreadcrumbs as m,useBanner as d,useCatalogClassic as l,useCurrentProduct as c,useGlobalData as p,useI18n as g,useI18nConfig as h,useL10n as f,useL10nConfig as b,usePageData as T,usePageSharedData as C,usePageVersions as k,usePreloadHistory as v,useProducts as w,useUserMenu as P,useSubmitFeedback as S,useTranslate as D,useSidebarSiblingsData as y,usePageProps as $,useUserTeams as E,useMarkdownText as I,useCodeHighlight as L,useLoadAndNavigate as x,useCatalog as H,useCatalogSort as M,useCatalogSearch as F,useFetchCatalogEntities as A,useFetchCatalogEntitiesRelations as B,useTelemetry as r,useMcpData as R}from"./app/hooks";import{Link as G}from"./app/Link";import{useFacetQuery as O,useSearch as U,useAiSearch as N}from"./app/search";import{useSidebarItems as Q}from"./app/Sidebar/useSidebarItems";import{PageDataContext as V}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={useBreadcrumbs:m,useBanner:d,useCatalog:H,useCatalogSort:M,useCatalogSearch:F,useFetchCatalogEntities:A,useFetchCatalogEntitiesRelations:B,useCatalogClassic:l,useCurrentProduct:c,useGlobalData:p,useSearch:U,useAiSearch:N,useFacetQuery:O,useI18n:g,useI18nConfig:h,useL10n:f,useL10nConfig:b,usePageData:T,usePageSharedData:C,usePageVersions:k,usePreloadHistory:v,useProducts:w,useUserMenu:P,useSidebarItems:Q,useSidebarSiblingsData:y,useSubmitFeedback:S,useTranslate:D,useUserTeams:E,usePageProps:$,useMarkdownText:I,useCodeHighlight:L,useLoadAndNavigate:x,useTelemetry:r,useOtelTelemetry:r,useMcpData:R},q={LinkComponent:G},z={hooks:j,components:q,config:{}};function te({children:a,customPageData:t}){return e.createElement(o,null,e.createElement(i,null,e.createElement(V.Provider,{value:{...s,...t,props:{...s.props,...t?.props}}},e.createElement(n.Provider,{value:z},a))))}export{te 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{useBreadcrumbs as m,useBanner as d,useCatalogClassic as l,useCurrentProduct as c,useGlobalData as p,useI18n as g,useI18nConfig as h,useL10n as f,useL10nConfig as b,usePageData as C,usePageSharedData as T,usePageVersions as k,usePreloadHistory as v,useProducts as w,useUserMenu as P,useSubmitFeedback as S,useTranslate as y,useSidebarSiblingsData as D,usePageProps as $,useUserTeams as E,useMarkdownText as I,useCodeHighlight as L,useLoadAndNavigate as x,useCatalog as F,useCatalogSort as H,useCatalogSearch as M,useFetchCatalogEntities as R,useFetchCatalogEntitiesRelations as A,useTelemetry as r,useMcpData as B,useFetchCatalogEntityRevisions as G}from"./app/hooks";import{Link as O}from"./app/Link";import{useFacetQuery as U,useSearch as N,useAiSearch as Q}from"./app/search";import{useSidebarItems as V}from"./app/Sidebar/useSidebarItems";import{PageDataContext as j}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:{}},q={useBreadcrumbs:m,useBanner:d,useCatalog:F,useCatalogSort:H,useCatalogSearch:M,useFetchCatalogEntities:R,useFetchCatalogEntitiesRelations:A,useFetchCatalogEntityRevisions:G,useCatalogClassic:l,useCurrentProduct:c,useGlobalData:p,useSearch:N,useAiSearch:Q,useFacetQuery:U,useI18n:g,useI18nConfig:h,useL10n:f,useL10nConfig:b,usePageData:C,usePageSharedData:T,usePageVersions:k,usePreloadHistory:v,useProducts:w,useUserMenu:P,useSidebarItems:V,useSidebarSiblingsData:D,useSubmitFeedback:S,useTranslate:y,useUserTeams:E,usePageProps:$,useMarkdownText:I,useCodeHighlight:L,useLoadAndNavigate:x,useTelemetry:r,useOtelTelemetry:r,useMcpData:B},z={LinkComponent:O},J={hooks:q,components:z,config:{}};function re({children:a,customPageData:t}){return e.createElement(o,null,e.createElement(i,null,e.createElement(j.Provider,{value:{...s,...t,props:{...s.props,...t?.props}}},e.createElement(n.Provider,{value:J},a))))}export{re as TestProvider};
@@ -1,4 +1,4 @@
1
- import r,{useEffect as D,useState as a}from"react";import I from"styled-components";import{useLocation as N}from"react-router-dom";import{Button as y}from"@redocly/theme/components/Button/Button";import{Admonition as k}from"@redocly/theme/markdoc/components/Admonition/Admonition";import{usePageData as q}from"../hooks/usePageData";import{usePreloadHistory as w}from"../usePreloadHistory";import{telemetry as R}from"../telemetry/index.js";import{useLoginUrl as T}from"../hooks";const O=e=>{const{apiId:s,status:t,setStatus:o}=e,u=w(),{userData:n}=q("userData")||{},h=N(),i=T(),[l,p]=a(),[g,A]=a(),[m,E]=a(!0);D(()=>{n?.isAuthenticated&&fetch(`/api/api-keys/api-products/${s}/access`).then(d=>d.json().then(c=>{d.ok?(o(c.status),A(c.appId)):p(c.message)}).catch(()=>p("Something went wrong")).finally(()=>E(!1)))},[n?.isAuthenticated,s,o]);const P=()=>{!n?.isAuthenticated&&i?window.location.href=`${i}${i.includes("?")?"&":"?"}redirectTo=${h.pathname}`:t==="ACCEPTED"?u.push("/apps/"+g||""):t==="NONE"&&u.push("/apps/?createApp&apiId="+s),R.sendRequestApiAccessButtonClickedMessage({action:"click"})},C=(t==="PENDING"||m||l!=null)&&n?.isAuthenticated;return r.createElement(r.Fragment,null,r.createElement(y,{disabled:C,onClick:P,fullWidth:!0,size:"small"},x(t,m,l,!!n?.isAuthenticated)))},x=(e,s,t,o)=>{if(!o)return"Request access";if(s)return"Loading...";if(t)return"Failed to check access";switch(e){case"NONE":return"Request access";case"ACCEPTED":return"Credentials";case"PENDING":return"Pending access..."}return null},U=e=>e==="ACCEPTED"?r.createElement(f,{type:"success",name:"You have access to this API"}):e==="PENDING"?r.createElement(f,{type:"info",name:"You have requested access to this API"}):null,f=I(k)`
1
+ import r,{useEffect as D,useState as c}from"react";import I from"styled-components";import{useLocation as N}from"react-router-dom";import{Button as y}from"@redocly/theme/components/Button/Button";import{Admonition as k}from"@redocly/theme/markdoc/components/Admonition/Admonition";import{withPathPrefix as w}from"@redocly/theme/core/utils";import{usePageData as q}from"../hooks/usePageData";import{usePreloadHistory as x}from"../usePreloadHistory";import{telemetry as R}from"../telemetry/index.js";import{useLoginUrl as T}from"../hooks";const Y=e=>{const{apiId:s,status:t,setStatus:o}=e,u=x(),{userData:n}=q("userData")||{},h=N(),i=T(),[l,p]=c(),[g,A]=c(),[m,E]=c(!0);D(()=>{n?.isAuthenticated&&fetch(`/api/api-keys/api-products/${s}/access`).then(d=>d.json().then(a=>{d.ok?(o(a.status),A(a.appId)):p(a.message)}).catch(()=>p("Something went wrong")).finally(()=>E(!1)))},[n?.isAuthenticated,s,o]);const P=()=>{!n?.isAuthenticated&&i?window.location.href=`${w(i)}${i.includes("?")?"&":"?"}redirectTo=${h.pathname}`:t==="ACCEPTED"?u.push("/apps/"+g||""):t==="NONE"&&u.push("/apps/?createApp&apiId="+s),R.sendRequestApiAccessButtonClickedMessage({action:"click"})},C=(t==="PENDING"||m||l!=null)&&n?.isAuthenticated;return r.createElement(r.Fragment,null,r.createElement(y,{disabled:C,onClick:P,fullWidth:!0,size:"small"},B(t,m,l,!!n?.isAuthenticated)))},B=(e,s,t,o)=>{if(!o)return"Request access";if(s)return"Loading...";if(t)return"Failed to check access";switch(e){case"NONE":return"Request access";case"ACCEPTED":return"Credentials";case"PENDING":return"Pending access..."}return null},j=e=>e==="ACCEPTED"?r.createElement(f,{type:"success",name:"You have access to this API"}):e==="PENDING"?r.createElement(f,{type:"info",name:"You have requested access to this API"}):null,f=I(k)`
2
2
  margin-top: 0px;
3
3
  margin-bottom: var(--spacing-sm);
4
- `;export{O as RequestAccessButton,U as renderAdmonition};
4
+ `;export{Y as RequestAccessButton,j as renderAdmonition};
@@ -1,6 +1,11 @@
1
- import e,{useEffect as v,useState as f}from"react";import E from"styled-components";import{Menu as I}from"@redocly/theme/components/Menu/Menu";import{SidebarActions as y}from"@redocly/theme/components/SidebarActions/SidebarActions";import{Sidebar as A}from"@redocly/theme/components/Sidebar/Sidebar";import{VersionPicker as L}from"@redocly/theme/components/VersionPicker/VersionPicker";import{Button as P}from"@redocly/theme/components/Button/Button";import{ArrowLeftIcon as w}from"@redocly/theme/icons/ArrowLeftIcon/ArrowLeftIcon";import{withPathPrefix as B}from"@redocly/theme/core/utils";import{telemetry as p}from"../telemetry/index.js";import{usePreloadHistory as D}from"../usePreloadHistory";import{useTranslate as T}from"../hooks";import{usePageSharedData as x,usePageVersions as M}from"../../providers/page-data/hooks";import{useSidebarItems as V}from"./useSidebarItems";import{renderAdmonition as C,RequestAccessButton as R}from"./RequestAccessButton";function $({layoutControls:r}){const{versions:s=[]}=M()||{},b=s.find(t=>t?.active),{translate:i}=T(),{currentItems:m,backLink:n,pushDrilldownState:h,popDrilldownState:k}=V(b),[l,g]=f(),{collapsedSidebar:a}=r,c=x("openAPIDocsStore")?.definition.info?.["x-metadata"]?.apiId,S=D(),[d,o]=f(void 0);return v(()=>{const t=setTimeout(()=>o(void 0),350);return()=>clearTimeout(t)},[d]),m.length?e.createElement(e.Fragment,null,e.createElement(A,{collapsed:a,menuItemsAnimation:d,versions:e.createElement(L,{versions:s,onChange:t=>{p.sendVersionPickerSelectionChangeMessage({action:"change"});const u=location.hash?t?.link+location.hash:t?.link;u&&S.push(B(u))}}),menu:e.createElement(I,{items:m,onDrilldownOpen:t=>{o("slideInRight"),h(t)}}),footer:e.createElement("div",{style:{width:"100%"}},!a&&C(l),e.createElement(y,{...r,requestAccessButton:c?e.createElement(R,{apiId:c,status:l,setStatus:g}):null})),header:n&&e.createElement(q,{icon:e.createElement(w,null),iconPosition:"left",variant:"ghost",size:"medium","data-component-name":"Sidebar/BackButton",to:n.slug,onClick:()=>{o("slideInLeft"),k(),p.sendSidebarDrilldownBackButtonClickedMessage({action:"click"})}},a?"":n.label?e.createElement("div",{"data-translation-key":"sidebar.menu.backToLabel"},i("sidebar.menu.backToLabel",{value:i(n.labelTranslationKey,n.label)})):e.createElement("div",{"data-translation-key":"sidebar.menu.backLabel"},i("sidebar.menu.backLabel")))})):null}const q=E(P)`
1
+ import e,{useEffect as y,useState as p}from"react";import b from"styled-components";import{Menu as I}from"@redocly/theme/components/Menu/Menu";import{SidebarActions as L}from"@redocly/theme/components/SidebarActions/SidebarActions";import{Sidebar as w}from"@redocly/theme/components/Sidebar/Sidebar";import{VersionPicker as A}from"@redocly/theme/components/VersionPicker/VersionPicker";import{Button as B}from"@redocly/theme/components/Button/Button";import{CatalogEntityHistoryButton as P}from"@redocly/theme/components/Catalog/CatalogEntity/CatalogEntityHistory/CatalogEntityHistoryButton";import{ArrowLeftIcon as x}from"@redocly/theme/icons/ArrowLeftIcon/ArrowLeftIcon";import{withPathPrefix as D}from"@redocly/theme/core/utils";import{telemetry as h}from"../telemetry/index.js";import{usePreloadHistory as T}from"../usePreloadHistory";import{useTranslate as C}from"../hooks";import{usePageSharedData as M,usePageVersions as V}from"../../providers/page-data/hooks";import{useSidebarItems as H}from"./useSidebarItems";import{renderAdmonition as R,RequestAccessButton as q}from"./RequestAccessButton";function ie({layoutControls:s}){const{versions:l=[]}=V()||{},g=l.find(t=>t?.active),{translate:a}=C(),{currentItems:m,backLink:n,versionLabel:o,pushDrilldownState:k,popDrilldownState:v}=H(g),[c,S]=p(),{collapsedSidebar:i}=s,d=M("openAPIDocsStore")?.definition.info?.["x-metadata"]?.apiId,E=T(),[u,r]=p(void 0);return y(()=>{const t=setTimeout(()=>r(void 0),350);return()=>clearTimeout(t)},[u]),m.length?e.createElement(e.Fragment,null,e.createElement(w,{collapsed:i,menuItemsAnimation:u,versions:e.createElement(A,{versions:l,onChange:t=>{h.sendVersionPickerSelectionChangeMessage({action:"change"});const f=location.hash?t?.link+location.hash:t?.link;f&&E.push(D(f))}}),menu:e.createElement(I,{items:m,onDrilldownOpen:t=>{r("slideInRight"),k(t)}}),footer:e.createElement("div",{style:{width:"100%"}},!i&&R(c),e.createElement(L,{...s,requestAccessButton:d?e.createElement(q,{apiId:d,status:c,setStatus:S}):null})),header:(n||o!==void 0)&&e.createElement(J,null,n&&e.createElement(j,{icon:e.createElement(x,null),iconPosition:"left",variant:"ghost",size:"medium","data-component-name":"Sidebar/BackButton",to:n.slug,onClick:()=>{r("slideInLeft"),v(),h.sendSidebarDrilldownBackButtonClickedMessage({action:"click"})}},i?"":n.label?e.createElement("div",{"data-translation-key":"sidebar.menu.backToLabel"},a("sidebar.menu.backToLabel",{value:a(n.labelTranslationKey,n.label)})):e.createElement("div",{"data-translation-key":"sidebar.menu.backLabel"},a("sidebar.menu.backLabel"))),o!==void 0&&!i&&e.createElement(P,{version:o}))})):null}const J=b.div`
2
+ display: flex;
3
+ flex-direction: column;
4
+ gap: var(--menu-header-container-gap);
5
+ width: 100%;
6
+ `,j=b(B)`
2
7
  padding: var(--menu-item-padding-vertical) 0;
3
8
  height: calc(var(--line-height-base) + var(--menu-item-padding-vertical) * 2);
4
9
  justify-content: flex-start;
5
10
  width: 100%;
6
- `;export{$ as Sidebar};
11
+ `;export{ie as Sidebar};
@@ -17,5 +17,6 @@ export declare function useSidebarItems(activeVersion?: Version | null): {
17
17
  slug: string;
18
18
  event: "back_to_catalog_button.clicked";
19
19
  } | undefined;
20
+ versionLabel: string | null;
20
21
  };
21
22
  //# sourceMappingURL=useSidebarItems.d.ts.map
@@ -1 +1 @@
1
- import{useLocation as D}from"react-router-dom";import{useEffect as _,useMemo as f,useState as b}from"react";import{useActiveSectionId as k}from"@redocly/theme/core/hooks";import{getMenuItemType as C}from"@redocly/theme/core/utils";import{MenuItemType as T}from"@redocly/theme/core/constants";import{usePageSharedData as y,useSidebarItemsData as h,useSidebarConnectedCatalogConfig as G,useSidebarConnectedCatalogEntity as E}from"../../providers/page-data/hooks";import{mapItemsPropsToState as g}from"./utils";import{injectCatalogItems as F}from"../../utils/catalog/inject-catalog-items";import{CATALOG_BASE_SLUG as O,CATALOG_SLUGS as B}from"../../../server/constants/plugins/catalog-entities";const K="catalog.backToAllLabel",M=`${O}/${B.ALL}`;function N(o){const n=h();return f(()=>p(n,o),[n,o])}function H(o){const n=D(),t=k(n,!0),e=E(),I=G(),l=N(o),c=e?F(l,e,I?.slug):l,[u,v]=b(null),s=f(()=>g(c,n,t),[t,n,c]),a=y("current-catalog-info"),A=f(()=>S(s),[c]),[r,d]=b(A),i=r.length>0?r[r.length-1]:void 0,L=i&&g([...i.item.link?[{...i.item,items:[],menuStyle:void 0,separatorLine:!1}]:[],...i.item.items],n,t);_(()=>{if(!u||u!==t){const m=S(s);d(m),v(t)}},[l,n,t,u]);const w=i?{slug:i.previousLink,event:"sidebar_drilldown_back_button.clicked"}:e?{label:"Back to Catalog",labelTranslationKey:K,slug:M,event:"back_to_catalog_button.clicked"}:a?{label:a.catalog.label,labelTranslationKey:a.catalog.labelTranslationKey,slug:a.catalog.link,event:"back_to_catalog_button.clicked"}:void 0;return{currentItems:L||s,allSidebarItems:s,popDrilldownState:()=>{r.length>0&&d(r.slice(0,r.length-1))},pushDrilldownState:m=>{d([...r,m])},backLink:w}}function p(o,n){const t={};for(const e of o)e.versionFolderId&&e.version&&(t[e.versionFolderId]=t[e.versionFolderId]??[]).push(e.version);return o.filter(e=>e.version==null?e:n?e.version===n.version?!0:e.versionFolderId&&t[e.versionFolderId]?.includes(n.version)?!1:e.isDefault:e.isDefault).map(e=>Array.isArray(e.items)&&o.length?{...e,items:p(e.items,n)}:e)}function S(o,n=[]){for(const t of o){if(!t.active&&!t.hasActiveSubItem)continue;if(C(t)===T.DrillDown&&n.push({item:t}),t.active)return n;if(t.hasActiveSubItem)return S(t.items,n)}return n}export{N as useRawSidebarItems,H as useSidebarItems};
1
+ import{useLocation as D}from"react-router-dom";import{useEffect as _,useMemo as f,useState as I}from"react";import{useActiveSectionId as k}from"@redocly/theme/core/hooks";import{getMenuItemType as C}from"@redocly/theme/core/utils";import{MenuItemType as y}from"@redocly/theme/core/constants";import{usePageSharedData as T,useSidebarItemsData as h,useSidebarConnectedCatalogConfig as G,useSidebarConnectedCatalogEntity as E}from"../../providers/page-data/hooks";import{mapItemsPropsToState as g}from"./utils";import{injectCatalogItems as F}from"../../utils/catalog/inject-catalog-items";import{CATALOG_BASE_SLUG as O,CATALOG_SLUGS as B}from"../../../server/constants/plugins/catalog-entities";const K="catalog.backToAllLabel",M=`${O}/${B.ALL}`;function N(o){const t=h();return f(()=>p(t,o),[t,o])}function H(o){const t=D(),n=k(t,!0),e=E(),b=G(),a=N(o),c=e?F(a,e.key,b?.slug,t.search):a,[u,v]=I(null),s=f(()=>g(c,t,n),[n,t,c]),l=T("current-catalog-info"),A=f(()=>S(s),[c]),[r,d]=I(A),i=r.length>0?r[r.length-1]:void 0,L=i&&g([...i.item.link?[{...i.item,items:[],menuStyle:void 0,separatorLine:!1}]:[],...i.item.items],t,n);_(()=>{if(!u||u!==n){const m=S(s);d(m),v(n)}},[a,t,n,u]);const w=i?{slug:i.previousLink,event:"sidebar_drilldown_back_button.clicked"}:e?{label:"Back to Catalog",labelTranslationKey:K,slug:M,event:"back_to_catalog_button.clicked"}:l?{label:l.catalog.label,labelTranslationKey:l.catalog.labelTranslationKey,slug:l.catalog.link,event:"back_to_catalog_button.clicked"}:void 0;return{currentItems:L||s,allSidebarItems:s,popDrilldownState:()=>{r.length>0&&d(r.slice(0,r.length-1))},pushDrilldownState:m=>{d([...r,m])},backLink:w,versionLabel:e?.version??null}}function p(o,t){const n={};for(const e of o)e.versionFolderId&&e.version&&(n[e.versionFolderId]=n[e.versionFolderId]??[]).push(e.version);return o.filter(e=>e.version==null?e:t?e.version===t.version?!0:e.versionFolderId&&n[e.versionFolderId]?.includes(t.version)?!1:e.isDefault:e.isDefault).map(e=>Array.isArray(e.items)&&o.length?{...e,items:p(e.items,t)}:e)}function S(o,t=[]){for(const n of o){if(!n.active&&!n.hasActiveSubItem)continue;if(C(n)===y.DrillDown&&t.push({item:n}),n.active)return t;if(n.hasActiveSubItem)return S(n.items,t)}return t}export{N as useRawSidebarItems,H as useSidebarItems};
@@ -1 +1 @@
1
- import{useInfiniteQuery as R}from"@tanstack/react-query";import{useMemo as d,useRef as S}from"react";import{getNextPageParam as w}from"../../../utils/catalog/get-next-page-param";import{useSearchTracker as F}from"./useSearchTracker";function _({limit:o=20,filter:s,sort:i="type",search:n}={},r){const l=r?r.items.map(e=>e.key).join("-"):[],c=S(!0),m=c.current&&r;c.current&&(c.current=!1);const a=R({queryFn:async e=>{const t=new URLSearchParams;s&&t.append("filter",s),i&&t.append("sort",i),o&&t.append("limit",o.toString()),n&&t.append("search",n),e.pageParam&&Object.entries(e.pageParam).forEach(([y,f])=>{f!=null&&t.append(y,f.toString())});const h=process.env.REDOCLY_PREFIX_PATHS?`/${process.env.REDOCLY_PREFIX_PATHS}`:"",p=new URL(`${h}/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:s,sort:i,search:n,initialDataKeys:l}],initialData:m?{pages:[r],pageParams:[null]}:void 0,initialPageParam:null,getNextPageParam:w,refetchOnMount:!0,placeholderData:e=>e}),P=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:P}}export{_ as useFetchCatalogEntities};
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",search:n}={},r){const d=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:d}],initialData:l?{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 +1 @@
1
- import{useInfiniteQuery as S}from"@tanstack/react-query";import{useMemo as l,useRef as w}from"react";import{getNextPageParam as E}from"../../../utils/catalog/get-next-page-param";import{useSearchTracker as F}from"./useSearchTracker";function $({entityKey:g,limit:o=20,filter:s,sort:i="title",search:n},r){const m=r?r.items.map(e=>e.key).join("-"):[],c=w(!0),P=c.current&&r;c.current&&(c.current=!1);const t=S({queryFn:async e=>{const a=new URLSearchParams;s&&a.append("filter",s),i&&a.append("sort",i),o&&a.append("limit",o.toString()),n&&a.append("search",n),e.pageParam&&Object.entries(e.pageParam).forEach(([R,f])=>{f!=null&&a.append(R,f.toString())});const y=process.env.REDOCLY_PREFIX_PATHS?`/${process.env.REDOCLY_PREFIX_PATHS}`:"",p=new URL(`${y}/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:s,sort:i,search:n,entityKey:g,initialDataKeys:m}],initialPageParam:null,initialData:P?{pages:[r],pageParams:[null]}:void 0,refetchOnMount:!0,getNextPageParam:E}),h=l(()=>{const e=t.data?.pages||[];return e[e.length-1]?.page?.total},[t.data?.pages]),u=l(()=>(t.data?.pages||[]).flatMap(e=>e.items||[]),[t.data?.pages]);return F({isLoading:t.isLoading||t.isFetching,items:u,apiResource:"related_entities",searchQuery:n??""}),{query:t,items:u,total:h}}export{$ as useFetchCatalogEntitiesRelations};
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};
@@ -0,0 +1,10 @@
1
+ import { useQuery } from '@tanstack/react-query';
2
+ import type { BffCatalogEntityRevision, BffCatalogEntityRevisionList } from '@redocly/theme/core/types';
3
+ export declare function useFetchCatalogEntityRevisions({ entityKey, version, }: {
4
+ entityKey: string;
5
+ version?: string | null;
6
+ }): {
7
+ query: ReturnType<typeof useQuery<BffCatalogEntityRevisionList, Error>>;
8
+ items: BffCatalogEntityRevision[];
9
+ };
10
+ //# sourceMappingURL=useFetchCatalogEntityRevisions.d.ts.map
@@ -0,0 +1 @@
1
+ import{useQuery as s}from"@tanstack/react-query";import{useMemo as c}from"react";import{withPathPrefix as f}from"@redocly/theme/core/utils";function p({entityKey:o,version:t}){const r=s({queryFn:async()=>{const n=new URLSearchParams;t&&n.append("version",t);const e=new URL(f(`/bff/catalog-revisions/${o}`),window.location.origin);e.search=n.toString();const a=await fetch(e.toString());if(!a.ok)throw new Error(`Failed to fetch catalog entity revisions from ${e.pathname}`);return a.json()},queryKey:["bff/catalog-revisions",{entityKey:o,version:t}],refetchOnMount:!0}),i=c(()=>r.data?.items??[],[r.data?.items]);return{query:r,items:i}}export{p as useFetchCatalogEntityRevisions};
@@ -20,6 +20,7 @@ export { useCatalogSort } from './catalog/useCatalogSort';
20
20
  export { useCatalogSearch } from './catalog/useCatalogSearch';
21
21
  export { useFetchCatalogEntities } from './catalog/useFetchCatalogEntities';
22
22
  export { useFetchCatalogEntitiesRelations } from './catalog/useFetchCatalogEntitiesRelations';
23
+ export { useFetchCatalogEntityRevisions } from './catalog/useFetchCatalogEntityRevisions';
23
24
  export { useCatalogClassic } from './catalog/useCatalogClassic';
24
25
  export { useTelemetry } from './useTelemetry';
25
26
  export { useUserTeams } from './useUserTeams';
@@ -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 l}from"../l10n/hooks";import{useTranslate as C}from"../l10n/hooks";import{useL10nConfig as c}from"./useL10nConfig";export*from"./useCurrentUserTeams";export*from"./products";import{usePageVersions as S}from"../../providers/page-data/hooks";import{useUserMenu as U}from"../UserMenu/useUserMenu";import{useSubmitFeedback as F}from"../Feedback/useSubmitFeedback";import{usePreloadHistory as P}from"../usePreloadHistory";import{useBreadcrumbs as y}from"../Sidebar/useBreadcrumbs";import{useBanner as E}from"./useBanner";import{useCatalog as I}from"./catalog/useCatalog";import{useCatalogSort as w}from"./catalog/useCatalogSort";import{useCatalogSearch as G}from"./catalog/useCatalogSearch";import{useFetchCatalogEntities as R}from"./catalog/useFetchCatalogEntities";import{useFetchCatalogEntitiesRelations as j}from"./catalog/useFetchCatalogEntitiesRelations";import{useCatalogClassic as z}from"./catalog/useCatalogClassic";import{useTelemetry as K}from"./useTelemetry";import{useUserTeams as Q}from"./useUserTeams";import{useMarkdownText as X}from"./markdown/useMarkdownText";import{useCodeHighlight as Z}from"./codeHighlight/useCodeHighlight";import{useLoadAndNavigate as $}from"./useLoadAndNavigate";import{useUserClaims as oe}from"./useUserClaims";import{useMcpData as te}from"./useMcpData";export{E as useBanner,y as useBreadcrumbs,I as useCatalog,z as useCatalogClassic,G as useCatalogSearch,w as useCatalogSort,Z as useCodeHighlight,R as useFetchCatalogEntities,j as useFetchCatalogEntitiesRelations,f as useGlobalData,p as useI18n,n as useI18nConfig,l as useL10n,c as useL10nConfig,$ as useLoadAndNavigate,a as useLoginUrl,X as useMarkdownText,te as useMcpData,t as usePageSharedData,S as usePageVersions,P as usePreloadHistory,F as useSubmitFeedback,K as useTelemetry,C as useTranslate,oe as useUserClaims,U as useUserMenu,Q 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 l}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 T}from"../UserMenu/useUserMenu";import{useSubmitFeedback as y}from"../Feedback/useSubmitFeedback";import{usePreloadHistory as E}from"../usePreloadHistory";import{useBreadcrumbs as P}from"../Sidebar/useBreadcrumbs";import{useBanner as v}from"./useBanner";import{useCatalog as H}from"./catalog/useCatalog";import{useCatalogSort as R}from"./catalog/useCatalogSort";import{useCatalogSearch as A}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";export{v as useBanner,P as useBreadcrumbs,H as useCatalog,K as useCatalogClassic,A as useCatalogSearch,R as useCatalogSort,$ as useCodeHighlight,N as useFetchCatalogEntities,j as useFetchCatalogEntitiesRelations,z as useFetchCatalogEntityRevisions,f as useGlobalData,p as useI18n,n as useI18nConfig,l as useL10n,d as useL10nConfig,oe as useLoadAndNavigate,a as useLoginUrl,Z as useMarkdownText,ae as useMcpData,t as usePageSharedData,F as usePageVersions,E as usePreloadHistory,y as useSubmitFeedback,Q as useTelemetry,C as useTranslate,te as useUserClaims,T as useUserMenu,X as useUserTeams};
@@ -3,6 +3,10 @@ type BannerResult = {
3
3
  banner: BannerConfig | undefined;
4
4
  dismissBanner: (content: string) => void;
5
5
  };
6
+ export declare const STORAGE_KEY = "redocly-dismissed-banners";
7
+ export declare const STORAGE_KEY_PER_SLUG = "redocly-dismissed-banners-per-slug";
8
+ export declare function getDismissedBannersFromStorage(): Set<string>;
9
+ export declare function getDismissedSlugsFromStorage(): Set<string>;
6
10
  export declare function useBanner(): BannerResult;
7
11
  export {};
8
12
  //# sourceMappingURL=useBanner.d.ts.map
@@ -1 +1 @@
1
- import{useMemo as g,useState as f,useEffect as l}from"react";import{useLocation as p}from"react-router-dom";import{useThemeConfig as y}from"@redocly/theme/core/hooks";import{usePageData as A}from"../../providers/page-data/hooks";import{getBannerForSlug as w}from"./utils/match-banner-target.js";const c="redocly-dismissed-banners",u="redocly-dismissed-banners-per-slug";function N(){const{banner:s}=y()||{},t=A()?.props?.frontmatter?.banner,S=p(),[o,d]=f(new Set),[i,m]=f(new Set);l(()=>{const r=localStorage.getItem(c),n=localStorage.getItem(u);if(r){const e=JSON.parse(r);Array.isArray(e)&&d(new Set(e))}if(n){const e=JSON.parse(n);Array.isArray(e)&&m(new Set(e))}},[]);const a=S.pathname;return{banner:g(()=>{if(t&&Array.isArray(t)&&t.length){if(i.has(a))return;for(const r of t)if(!o.has(r.content))return r;return}if(!(!s||!Array.isArray(s)||s.length===0)&&!i.has(a))return w(s,a,o)},[s,t,a,o,i]),dismissBanner:r=>{const n=new Set(o);n.add(r),d(n);const e=new Set(i);e.add(a),m(e),localStorage.setItem(c,JSON.stringify(Array.from(n))),localStorage.setItem(u,JSON.stringify(Array.from(e)))}}}export{N as useBanner};
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 +1 @@
1
- import{useThemeConfig as p}from"@redocly/theme/core/hooks";import{getPathnameForLocale as t,withPathPrefix as f}from"@redocly/theme/core/utils";import{DEV_LOGIN_SLUG as d}from"../../../constants/common";import{buildLoginUrl as s}from"../../../utils/auth/build-login-url";import{useL10nConfig as c}from"./useL10nConfig";function U(u={}){const m=p(),{auth:o}=m,{defaultLocale:n,locales:e,currentLocale:r}=c(),l=()=>{if(o?.idpsInfo?.length){if(o.idpsInfo.length===1){const i=o.idpsInfo[0];return s(i.idpId,i.type,t("",n,r,e),void 0,u)}return f(t(d,n,r,e))}};return o?.devLogin?f(t(d,n,r,e)):l()}export{U as useLoginUrl};
1
+ import{useThemeConfig as l}from"@redocly/theme/core/hooks";import{getPathnameForLocale as i}from"@redocly/theme/core/utils";import{DEV_LOGIN_SLUG as t}from"../../../constants/common";import{buildLoginUrl as s}from"../../../utils/auth/build-login-url";import{useL10nConfig as p}from"./useL10nConfig";function I(f={}){const d=l(),{auth:o}=d,{defaultLocale:n,locales:e,currentLocale:r}=p(),u=()=>{if(o?.idpsInfo?.length){if(o.idpsInfo.length===1){const m=o.idpsInfo[0];return s(m.idpId,i("",n,r,e),void 0,f)}return i(t,n,r,e)}};return o?.devLogin?i(t,n,r,e):u()}export{I as useLoginUrl};
@@ -1 +1 @@
1
- import t,{useEffect as g,useState as s}from"react";import{useNavigate as h}from"react-router-dom";import{Button as y}from"@redocly/theme/components/Button/Button";import{H3 as S}from"@redocly/theme/components/Typography/H3";import{H4 as v}from"@redocly/theme/components/Typography/H4";import{Admonition as w}from"@redocly/theme/components/Admonition/Admonition";import{getPathnameForLocale as E,withPathPrefix as P}from"@redocly/theme/core/utils";import{ServerRoutes as L}from"../../../../constants/common";import{telemetry as k}from"../../telemetry/index.js";import{buildLoginUrl as O}from"../../../../utils/auth/build-login-url";import{usePageProps as T}from"../../../providers/page-data/hooks";import{Wrapper as b,HeadingSection as C}from"./styled";import{DevLoginForm as R}from"./DevLoginForm";import{useL10nConfig as F}from"../../hooks";async function x(r){try{const{status:o}=await fetch(P(L.AUTHORIZATION),{method:"POST",body:JSON.stringify(r)});return o}catch(o){console.error(o)}}function G(){const{defaultLocale:r,locales:o,currentLocale:c}=F(),l=h(),[a,d]=s({values:{teams:[],email:"example@example.com"}}),[n,u]=s();g(()=>{const e=new URLSearchParams(window.location.search);u(e.get("redirectTo")||void 0)},[]);const i=T(),m=i?.authIdps,p=(i.rbac?.teams||[]).filter(e=>e!=="*"),f=async()=>{await x(a.values)===200&&(l(n||"/"),window.location.reload())};return t.createElement(b,null,t.createElement(C,null,t.createElement(S,{"data-cy":"login-title"},"Dev-mode login"),t.createElement(w,{type:"warning",name:"This is dev mode login simulator."},"Any email works and password is not checked.")),t.createElement(t.Fragment,null,t.createElement(R,{teams:p,formState:a,setFormState:d,onSubmit:f}),Object.keys(m||{}).length>0&&t.createElement(v,null,"Use SSO:"),Object.values(m||{}).map(e=>t.createElement("div",{key:e.idpId},t.createElement("a",{href:O(e.idpId,e.type,E("",r,c,o),n)},t.createElement(y,{fullWidth:!0,size:"large","data-cy":"idp-login",onClick:()=>k.sendLoginProviderButtonClickedMessage({provider:e.type})},e.title||e.type))))))}export{G as default};
1
+ import t,{useEffect as g,useState as s}from"react";import{useNavigate as h}from"react-router-dom";import{Button as y}from"@redocly/theme/components/Button/Button";import{H3 as S}from"@redocly/theme/components/Typography/H3";import{H4 as v}from"@redocly/theme/components/Typography/H4";import{Admonition as w}from"@redocly/theme/components/Admonition/Admonition";import{getPathnameForLocale as E,withPathPrefix as P}from"@redocly/theme/core/utils";import{ServerRoutes as L}from"../../../../constants/common";import{telemetry as k}from"../../telemetry/index.js";import{buildLoginUrl as O}from"../../../../utils/auth/build-login-url";import{usePageProps as T}from"../../../providers/page-data/hooks";import{Wrapper as b,HeadingSection as C}from"./styled";import{DevLoginForm as R}from"./DevLoginForm";import{useL10nConfig as F}from"../../hooks";async function x(r){try{const{status:o}=await fetch(P(L.AUTHORIZATION),{method:"POST",body:JSON.stringify(r)});return o}catch(o){console.error(o)}}function G(){const{defaultLocale:r,locales:o,currentLocale:c}=F(),l=h(),[a,d]=s({values:{teams:[],email:"example@example.com"}}),[n,u]=s();g(()=>{const e=new URLSearchParams(window.location.search);u(e.get("redirectTo")||void 0)},[]);const i=T(),m=i?.authIdps,p=(i.rbac?.teams||[]).filter(e=>e!=="*"),f=async()=>{await x(a.values)===200&&(l(n||"/"),window.location.reload())};return t.createElement(b,null,t.createElement(C,null,t.createElement(S,{"data-cy":"login-title"},"Dev-mode login"),t.createElement(w,{type:"warning",name:"This is dev mode login simulator."},"Any email works and password is not checked.")),t.createElement(t.Fragment,null,t.createElement(R,{teams:p,formState:a,setFormState:d,onSubmit:f}),Object.keys(m||{}).length>0&&t.createElement(v,null,"Use SSO:"),Object.values(m||{}).map(e=>t.createElement("div",{key:e.idpId},t.createElement(y,{fullWidth:!0,size:"large","data-cy":"idp-login",to:O(e.idpId,E("",r,c,o),n),onClick:()=>k.sendLoginProviderButtonClickedMessage({provider:e.type})},e.title||e.type)))))}export{G as default};
@@ -1,4 +1,4 @@
1
- import*as t from"react";import s from"styled-components";import{Button as l}from"@redocly/theme/components/Button/Button";import{H2 as m}from"@redocly/theme/components/Typography/H2";import{getPathnameForLocale as p}from"@redocly/theme/core/utils";import{buildLoginUrl as d}from"../../../../utils/auth/build-login-url";import{usePageProps as f}from"../../../providers/page-data/hooks";import{useL10nConfig as u}from"../../hooks";function w(){const r=f()?.authIdps||[],{defaultLocale:o,locales:a,currentLocale:n}=u(),[c,i]=t.useState();return t.useEffect(()=>{const e=new URLSearchParams(window.location.search);i(e.get("redirectTo")||void 0)},[]),t.createElement(g,null,t.createElement(m,{"data-cy":"login-title"},"Choose login method"),r.map(e=>t.createElement("div",{key:e.idpId},t.createElement("a",{href:d(e.idpId,e.type,p("",o,n,a),c)},t.createElement(l,{size:"large"},e.title||e.type)))))}const g=s.div`
1
+ import*as t from"react";import s from"styled-components";import{Button as l}from"@redocly/theme/components/Button/Button";import{H2 as m}from"@redocly/theme/components/Typography/H2";import{getPathnameForLocale as p}from"@redocly/theme/core/utils";import{buildLoginUrl as d}from"../../../../utils/auth/build-login-url";import{usePageProps as f}from"../../../providers/page-data/hooks";import{useL10nConfig as u}from"../../hooks";function w(){const o=f()?.authIdps||[],{defaultLocale:r,locales:a,currentLocale:n}=u(),[i,c]=t.useState();return t.useEffect(()=>{const e=new URLSearchParams(window.location.search);c(e.get("redirectTo")||void 0)},[]),t.createElement(g,null,t.createElement(m,{"data-cy":"login-title"},"Choose login method"),o.map(e=>t.createElement("div",{key:e.idpId},t.createElement(l,{size:"large",to:d(e.idpId,p("",r,n,a),i)},e.title||e.type))))}const g=s.div`
2
2
  display: flex;
3
3
  flex-direction: column;
4
4
  align-items: center;
@@ -1 +1 @@
1
- import{withPathPrefix as f}from"@redocly/theme/core/utils";import{isLocalLink as u}from"../../../utils/path/is-local-link.js";import{withLoadProgress as p}from"./withLoadProgress";let l;async function L({navigate:i,to:o,origin:r="browser",options:a}){o===""&&(o="/"),l=o;const{pathname:n,hash:w,search:c}=new URL(o,window.location.origin+window.location.pathname),t=decodeURIComponent(w),h=decodeURIComponent(window.location.hash),m=window.__LOADER,e=await p(m.tryLoad(n));if(e?.redirectTo){if(!u(e.redirectTo)){window.location.href=e.redirectTo;return}return L({navigate:i,to:e.redirectTo,origin:r,options:a})}if(o.startsWith(f("/_auth/"))){window.location.href=o;return}if(e&&l===o){if((n!==window.location.pathname||c!==window.location.search||t!==h)&&i({pathname:n,search:c,hash:t},{...a,state:{origin:r},unstable_flushSync:!0}),e.props?.disableAutoScroll)return;requestAnimationFrame(()=>{if(t){const s=t.slice(1),d=document.getElementById(s)||document.getElementsByName(s)[0];d&&d.scrollIntoView()}else window.scrollTo(0,0)})}}export{L as loadAndNavigate};
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,7 +1,7 @@
1
- import{telemetry as l}from"./app/telemetry/index.js";l.init({otel:{isProd:process.env.NODE_ENV==="production",serviceVersion:`${b}@${process.env.REDOCLY_PORTAL_VERSION}`,version:"1.0.0",collectorTraceUrl:new URL(r(D.OTEL_TRACES),location.origin).toString(),serviceName:"realm-ui",tracerName:"client-telemetry",instrumentations:[new u,new R,new E]},disabled:!g});import e from"react";import{hydrateRoot as m}from"react-dom/client";import{RouterProvider as p,createBrowserRouter as f}from"react-router-dom";import{HelmetProvider as d}from"@dr.pogodin/react-helmet";import{DocumentLoadInstrumentation as u}from"@opentelemetry/instrumentation-document-load";import{XMLHttpRequestInstrumentation as E}from"@opentelemetry/instrumentation-xml-http-request";import{FetchInstrumentation as R}from"@opentelemetry/instrumentation-fetch";import{getLocaleFromPathname as L,withoutPathPrefix as O,withPathPrefix as r}from"@redocly/theme/core/utils";import{DEFAULT_LOCALE_PLACEHOLDER as _,ServerRoutes as D}from"../constants/common";import{TELEMETRY_ENABLED as g}from"../server/constants/common.js";import{initL10n as h}from"./app/l10n/initL10n";import{Loader as v,useRefresh as x,globalData as t}from"./runtime/loader";import{App as A,routes as P}from"./App";import{PACKAGE_NAME as b,PRODUCT_NAME as N}from"../config/product-gates";import"./polyfills";import{ServerStyleSheet as j,StyleSheetManager as J}from"styled-components";function T(){return x(),e.createElement(d,{context:{}},e.createElement(A,null))}function S(){t?.removeAttribution&&process.env.REDOCLY_PORTAL_VERSION?console.log(`
1
+ import{telemetry as l}from"./app/telemetry/index.js";l.init({otel:{isProd:process.env.NODE_ENV==="production",serviceVersion:`${b}@${process.env.REDOCLY_PORTAL_VERSION}`,version:"1.0.0",collectorTraceUrl:new URL(r(D.OTEL_TRACES),location.origin).toString(),serviceName:"realm-ui",tracerName:"client-telemetry",instrumentations:[new u,new R,new E]},disabled:!h});import e from"react";import{hydrateRoot as m}from"react-dom/client";import{RouterProvider as p,createBrowserRouter as f}from"react-router-dom";import{HelmetProvider as d}from"@dr.pogodin/react-helmet";import{DocumentLoadInstrumentation as u}from"@opentelemetry/instrumentation-document-load";import{XMLHttpRequestInstrumentation as E}from"@opentelemetry/instrumentation-xml-http-request";import{FetchInstrumentation as R}from"@opentelemetry/instrumentation-fetch";import{getLocaleFromPathname as L,withoutPathPrefix as O,withPathPrefix as r}from"@redocly/theme/core/utils";import{DEFAULT_LOCALE_PLACEHOLDER as _,ServerRoutes as D}from"../constants/common";import{TELEMETRY_ENABLED as h}from"../server/constants/common.js";import{initL10n as g}from"./app/l10n/initL10n";import{Loader as v,useRefresh as x,globalData as t}from"./runtime/loader";import{App as A,routes as P}from"./App";import{PACKAGE_NAME as b,PRODUCT_NAME as N}from"../config/product-gates";import"./polyfills";import{ServerStyleSheet as j,StyleSheetManager as J}from"styled-components";function T(){return x(),e.createElement(d,{context:{}},e.createElement(A,null))}function w(){t?.removeAttribution&&process.env.REDOCLY_PORTAL_VERSION?console.log(`
2
2
  %c Version: ${process.env.REDOCLY_PORTAL_VERSION} %c
3
3
  `,"background:#ffffff ; padding: 1px; border:1px solid #0044D4; border-radius: 3px; color: #0044D4","background:transparent"):process.env.REDOCLY_PORTAL_VERSION&&console.log(`
4
4
  %c Redocly ${N} %c ${process.env.REDOCLY_PORTAL_VERSION} %c
5
5
 
6
6
  %chttps://redocly.com
7
- `,"background:#0044D4 ; padding: 1px; border-radius: 3px 0 0 3px; color: #fff; border:1px solid #0044D4","background:#ffffff ; padding: 1px; border:1px solid #0044D4; border-radius: 0 3px 3px 0; color: #0044D4","background:transparent","font-size: 10px; font-style: italic;")}async function C(){process.env.NODE_ENV!=="production"&&import("./runtime/ws-client").then(s=>s.listenWs()),await v.load(window.location.pathname),S();const o=t?.l10n,n=o?.locales||[],i=o?.defaultLocale||_,a=L(O(location.pathname),i,n);await h(o,a);const c=f([{Component:T,path:r("/*"),children:P}]);m(document.getElementById("app_root"),e.createElement(p,{future:{v7_startTransition:!1},router:c}))}C();export{j as ServerStyleSheet,J as StyleSheetManager};
7
+ `,"background:#0044D4 ; padding: 1px; border-radius: 3px 0 0 3px; color: #fff; border:1px solid #0044D4","background:#ffffff ; padding: 1px; border:1px solid #0044D4; border-radius: 0 3px 3px 0; color: #0044D4","background:transparent","font-size: 10px; font-style: italic;")}async function S(){process.env.NODE_ENV!=="production"&&import("./runtime/ws-client").then(s=>s.listenWs()),await v.load(window.location.pathname,void 0,window.location.search),w();const o=t?.l10n,n=o?.locales||[],i=o?.defaultLocale||_,a=L(O(location.pathname),i,n);await g(o,a);const c=f([{Component:T,path:r("/*"),children:P}]);m(document.getElementById("app_root"),e.createElement(p,{future:{v7_startTransition:!1},router:c}))}S();export{j as ServerStyleSheet,J as StyleSheetManager};
@@ -1,4 +1,5 @@
1
1
  import type { PageProps, ResolvedNavItem, CatalogEntityConfig } from '@redocly/config';
2
+ import type { SidebarConnectedEntity } from '@redocly/theme/core/types';
2
3
  export * from './use-page-shared-data';
3
4
  export declare function usePageData(): import("../../../types").ResolvedPageData | null;
4
5
  export declare function usePageProps<T extends object>(): PageProps & T;
@@ -18,7 +19,7 @@ export declare function usePageVersions(): {
18
19
  }[];
19
20
  };
20
21
  export declare function useSidebarItemsData(): ResolvedNavItem[];
21
- export declare function useSidebarConnectedCatalogEntity(): string | undefined;
22
+ export declare function useSidebarConnectedCatalogEntity(): SidebarConnectedEntity | undefined;
22
23
  export declare function useSidebarConnectedCatalogConfig(): CatalogEntityConfig | undefined;
23
24
  export declare function useSidebarSiblingsData(): {
24
25
  prevPage: import("@redocly/config").ResolvedNavItemWithLink | undefined;
@@ -1 +1 @@
1
- import i,{useContext as a}from"react";import{useLocation as p}from"react-router-dom";import{removeLeadingSlash as m,removeTrailingSlash as f}from"@redocly/theme/core/utils";import{findDeepFirst as g}from"../../../utils/tree/find-deep-first.js";import{getSiblingPages as b}from"../../utils";import{PageDataContext as s}from"./PageDataContext.js";import{Loader as y}from"../../runtime/loader";import{useRawSidebarItems as C}from"../../app/Sidebar/useSidebarItems";import{usePageSharedData as c}from"./use-page-shared-data";export*from"./use-page-shared-data";function l(){return a(s)}function F(){return a(s)?.props||{}}function x(){const t=S(),{versions:o=[]}=a(s)||{};return{versions:i.useMemo(()=>o.map(e=>{const r=!!g(t,n=>n.version===e.version&&typeof n.link=="string"&&m(f(n.link))===m(f(e.link))),d=g(t,n=>n.version===e.version&&!!n.link);return{...e,link:(r?e.link:d?.link)||e.link}}),[o,t])}}function S(){const t=c("sidebar")?.items;return i.useMemo(()=>t||[],[t])}function R(){const t=c("sidebar")?.catalogEntity?.key,o=l()?.props.entity;return t||o?.key}function w(){const t=c("sidebar")?.catalogEntity;return l()?.props?.catalogConfig||t?.catalogConfig}function K(){const t=p(),{versions:o=[]}=x()||{},u=o.find(r=>r?.active),e=C(u);return i.useMemo(()=>{if(e)return b(e,t.pathname)},[t.pathname,e])}function T(){const t=p();return y.loadSync(t.pathname)}export{l as usePageData,T as usePageDataLoader,F as usePageProps,x as usePageVersions,w as useSidebarConnectedCatalogConfig,R as useSidebarConnectedCatalogEntity,S as useSidebarItemsData,K as useSidebarSiblingsData};
1
+ import i,{useContext as a}from"react";import{useLocation as p}from"react-router-dom";import{removeLeadingSlash as m,removeTrailingSlash as f}from"@redocly/theme/core/utils";import{findDeepFirst as g}from"../../../utils/tree/find-deep-first.js";import{getSiblingPages as y}from"../../utils";import{PageDataContext as s}from"./PageDataContext.js";import{Loader as b}from"../../runtime/loader";import{useRawSidebarItems as v}from"../../app/Sidebar/useSidebarItems";import{usePageSharedData as u}from"./use-page-shared-data";export*from"./use-page-shared-data";function d(){return a(s)}function F(){return a(s)?.props||{}}function C(){const t=k(),{versions:n=[]}=a(s)||{};return{versions:i.useMemo(()=>n.map(e=>{const r=!!g(t,o=>o.version===e.version&&typeof o.link=="string"&&m(f(o.link))===m(f(e.link))),l=g(t,o=>o.version===e.version&&!!o.link);return{...e,link:(r?e.link:l?.link)||e.link}}),[n,t])}}function k(){const t=u("sidebar")?.items;return i.useMemo(()=>t||[],[t])}function R(){const t=u("sidebar")?.catalogEntity,n=d()?.props.entity;return t?{key:t.key,version:t.version}:n?.key?{key:n.key,version:n.version}:void 0}function w(){const t=u("sidebar")?.catalogEntity;return d()?.props?.catalogConfig||t?.catalogConfig}function T(){const t=p(),{versions:n=[]}=C()||{},c=n.find(r=>r?.active),e=v(c);return i.useMemo(()=>{if(e)return y(e,t.pathname)},[t.pathname,e])}function V(){const t=p();return b.loadSync(t.pathname)}export{d as usePageData,V as usePageDataLoader,F as usePageProps,C as usePageVersions,w as useSidebarConnectedCatalogConfig,R as useSidebarConnectedCatalogEntity,k as useSidebarItemsData,T as useSidebarSiblingsData};
@@ -1 +1 @@
1
- import e from"react";import{ThemeDataContext as m,SearchSessionProvider as l}from"@redocly/theme/core/contexts";import{useBreadcrumbs as d,useBanner as g,useCatalogClassic as p,useCurrentProduct as f,useGlobalData as o,useI18n as b,useI18nConfig as C,useL10n as S,useL10nConfig as h,usePageData as r,usePageSharedData as P,usePageVersions as T,usePreloadHistory as D,useProducts as k,useUserMenu as v,useSubmitFeedback as F,useTranslate as L,useSidebarSiblingsData as M,usePageProps as E,useUserTeams as O,useMarkdownText as R,useCodeHighlight as w,useLoadAndNavigate as x,useCatalog as y,useCatalogSort as A,useCatalogSearch as I,useFetchCatalogEntities as j,useFetchCatalogEntitiesRelations as B,useTelemetry as s,useMcpData as H}from"../../app/hooks";import{Link as N}from"../../app/Link";import{useFacetQuery as U,useSearch as _,useAiSearch as G}from"../../app/search";import{useSidebarItems as Q}from"../../app/Sidebar/useSidebarItems";import{deepMerge as V}from"../../../utils/object/deep-merge";import{allowlistObject as W}from"../../../utils/object/allowlist-object";const q=["title","description","seo","sidebar","excludeFromSearch","template","redirects","rbac","metadata","slug","codeSnippet","breadcrumbs","markdown","seo","navbar","footer","colorMode","feedback","navigation","banner"],z={useBreadcrumbs:d,useBanner:g,useCatalog:y,useCatalogSort:A,useCatalogSearch:I,useFetchCatalogEntities:j,useFetchCatalogEntitiesRelations:B,useCatalogClassic:p,useCurrentProduct:f,useGlobalData:o,useSearch:_,useAiSearch:G,useFacetQuery:U,useI18n:b,useI18nConfig:C,useL10n:S,useL10nConfig:h,usePageData:r,usePageSharedData:P,usePageVersions:T,usePreloadHistory:D,useProducts:k,useUserMenu:v,useSidebarItems:Q,useSidebarSiblingsData:M,useSubmitFeedback:F,useTranslate:L,useUserTeams:O,usePageProps:E,useMarkdownText:R,useCodeHighlight:w,useLoadAndNavigate:x,useTelemetry:s,useOtelTelemetry:s,useMcpData:H},J={LinkComponent:N};function oe({children:n}){const{props:t}=r()||{},a=o()||{},u=e.useMemo(()=>{const c=W(t?.frontmatter||{},q);return V(a,c)},[a,t?.frontmatter]),i={hooks:z,components:J,config:u};return e.createElement(l,null,e.createElement(m.Provider,{value:i},n))}export{oe as ThemeDataProvider};
1
+ import e from"react";import{ThemeDataContext as m,SearchSessionProvider as l}from"@redocly/theme/core/contexts";import{useBreadcrumbs as d,useBanner as g,useCatalogClassic as p,useCurrentProduct as f,useGlobalData as o,useI18n as b,useI18nConfig as C,useL10n as h,useL10nConfig as S,usePageData as r,usePageSharedData as P,usePageVersions as T,usePreloadHistory as D,useProducts as v,useUserMenu as F,useSubmitFeedback as k,useTranslate as E,useSidebarSiblingsData as L,usePageProps as M,useUserTeams as O,useMarkdownText as R,useCodeHighlight as y,useLoadAndNavigate as w,useCatalog as x,useCatalogSort as A,useCatalogSearch as I,useFetchCatalogEntities as j,useFetchCatalogEntitiesRelations as B,useFetchCatalogEntityRevisions as H,useTelemetry as s,useMcpData as N}from"../../app/hooks";import{Link as U}from"../../app/Link";import{useFacetQuery as _,useSearch as G,useAiSearch as Q}from"../../app/search";import{useSidebarItems as V}from"../../app/Sidebar/useSidebarItems";import{deepMerge as W}from"../../../utils/object/deep-merge";import{allowlistObject as q}from"../../../utils/object/allowlist-object";const z=["title","description","seo","sidebar","excludeFromSearch","template","redirects","rbac","metadata","slug","codeSnippet","breadcrumbs","markdown","seo","navbar","footer","colorMode","feedback","navigation","banner"],J={useBreadcrumbs:d,useBanner:g,useCatalog:x,useCatalogSort:A,useCatalogSearch:I,useFetchCatalogEntities:j,useFetchCatalogEntitiesRelations:B,useFetchCatalogEntityRevisions:H,useCatalogClassic:p,useCurrentProduct:f,useGlobalData:o,useSearch:G,useAiSearch:Q,useFacetQuery:_,useI18n:b,useI18nConfig:C,useL10n:h,useL10nConfig:S,usePageData:r,usePageSharedData:P,usePageVersions:T,usePreloadHistory:D,useProducts:v,useUserMenu:F,useSidebarItems:V,useSidebarSiblingsData:L,useSubmitFeedback:k,useTranslate:E,useUserTeams:O,usePageProps:M,useMarkdownText:R,useCodeHighlight:y,useLoadAndNavigate:w,useTelemetry:s,useOtelTelemetry:s,useMcpData:N},K={LinkComponent:U};function re({children:n}){const{props:t}=r()||{},a=o()||{},u=e.useMemo(()=>{const c=q(t?.frontmatter||{},z);return W(a,c)},[a,t?.frontmatter]),i={hooks:J,components:K,config:u};return e.createElement(l,null,e.createElement(m.Provider,{value:i},n))}export{re as ThemeDataProvider};
@@ -1 +1 @@
1
- import*as j from"react";import{withPathPrefix as R}from"@redocly/theme/core/utils";import{appendSearchParams as z}from"../utils";import{mapObject as L}from"../../utils/object/map-object.js";import{mapObjectAsync as U}from"../../utils/object/map-object-async.js";import{isFunction as A}from"../../utils/guards/is-function.js";import{isBrowser as G}from"../../utils/env/is-browser.js";import{GLOBAL_DATA_URL as I}from"../../constants/common.js";import{getClientPageDataUrl as N}from"../../utils/url/get-client-page-data-url.js";import{getSharedDataUrl as V}from"../../utils/url/get-shared-data-url.js";import{normalizeRouteSlug as c}from"../../utils/path/normalize-route-slug.js";import{templates as b}from"./generated/templates.js";import{AsyncCache as g}from"./cache.js";import{fetch as h}from"./fetch.js";import{updateTranslations as B}from"../app/l10n";import{PageMissingDefaultExportError as S}from"./errors/page-missing-default-export-error.js";const l=new g,i=new g;let y=null,d,W;const u=new Set;async function q(){const o=await(await h(R(I))).json();return d=o,o}async function _(o){const t=R(V(o)),a=process.env.NODE_ENV==="development"?t:encodeURI(t);return await(await h(a)).json()}async function F(o){return i.has(o)||i.set(o,_(o)),i.get(o)}function it(){const[,o]=j.useReducer(t=>t+1,0);typeof window>"u"||process.env.NODE_ENV!=="production"&&(window.__redoclyRefresh=o)}class m{static markdocComponents={};static async updateTemplate(t,a,e){const n=c(t);b[e]=()=>a;const r=c(window.location.pathname);n===r&&(await this.load(t,!0),window.__redoclyRefresh())}static async update(t){const a=c(t),e=c(window.location.pathname);if(a!==e){l.delete(a);return}await this.load(t,!0),window.__redoclyRefresh()}static async updateSharedData(t){await i.set(t,_(t)),window.__redoclyRefresh()}static addGlobalDataListener(t){u.add(t)}static removeGlobalDataListener(t){u.delete(t)}static updateGlobalData(t){u.forEach(a=>a(t)),d=t,B(d.l10n)}static async tryLoad(t,a,e){try{return await this.load(t,a,e)}catch{return null}}static async loadDynamicMarkdocComponents(t){const a=this.markdocComponents?.[t];a&&A(a)&&Object.assign(this.markdocComponents,await a())}static async load(t,a,e){const n=c(t),r=await l.get(n);if(!d&&!y&&(y=q()),r&&!a)return r;{const[s]=await Promise.all([l.set(n,p(e)),y]);return s}async function p(s){const v=N(n),C=z(v,s),k=await h(C),{templateId:D,sharedDataIds:f,props:P,userData:E,versions:T,redirectTo:M,isPublic:O}=await k.json(),[x]=await Promise.all([(async()=>m.loadTemplate(D))(),Promise.all((P.dynamicMarkdocComponents||[]).map(w=>m.loadDynamicMarkdocComponents(w))),f?U(f,w=>F(w)):Promise.resolve({})]);return{templateId:D,slug:n,sharedDataIds:f,redirectTo:M,props:P,Template:x,userData:E,versions:T,isPublic:O}}}static loadSync(t){const a=c(t),e=l.tryGetSync(a);if(!e)return;const n=L(e.sharedDataIds,r=>i.getSync(r,"Data dependency not cached ahead of time: "+r));return{...e,sharedData:n}}static async prepare(t,a,e,n){const r=t.templateId;if(await Promise.all((t.props.dynamicMarkdocComponents||[]).map(s=>this.loadDynamicMarkdocComponents(s))),a)for(const s of Object.keys(a))i.setSync(s,a[s]);const p=await m.loadTemplate(r);p&&l.setSync(t.slug,{templateId:r,slug:t.slug,props:t.props,sharedDataIds:t.sharedDataIds||{},Template:p,userData:t.userInfo,versions:t.versions,isPublic:t.isPublic}),d=e,W=n}static async loadTemplate(t){try{const a=await b[t]();if(t.endsWith("page.tsx")&&!a.default)throw new S(t);const e=a.default;return typeof e=="function"?e:e.default}catch(a){if(!(process.env.NODE_ENV==="development")||!G())throw a;return a instanceof S?()=>(window.location.reload(),null):(window.location.reload(),null)}}static clear(){u.clear(),i.clear(),l.clear()}}(typeof window<"u"?window:global).__LOADER=m;export{m as Loader,F as getSharedData,d as globalData,W as initLocale,it as useRefresh};
1
+ import*as I from"react";import{withPathPrefix as v}from"@redocly/theme/core/utils";import{appendSearchParams as j}from"../utils";import{mapObject as z}from"../../utils/object/map-object.js";import{mapObjectAsync as A}from"../../utils/object/map-object-async.js";import{isFunction as G}from"../../utils/guards/is-function.js";import{isBrowser as N}from"../../utils/env/is-browser.js";import{GLOBAL_DATA_URL as $}from"../../constants/common.js";import{getClientPageDataUrl as V}from"../../utils/url/get-client-page-data-url.js";import{getSharedDataUrl as B}from"../../utils/url/get-shared-data-url.js";import{normalizeRouteSlug as l}from"../../utils/path/normalize-route-slug.js";import{templates as g}from"./generated/templates.js";import{AsyncCache as S}from"./cache.js";import{fetch as y}from"./fetch.js";import{updateTranslations as K}from"../app/l10n";import{PageMissingDefaultExportError as b}from"./errors/page-missing-default-export-error.js";const d=new S,i=new S;let D=null,m,W;const u=new Set;async function q(){const o=await(await y(v($))).json();return m=o,o}async function C(o){const t=v(B(o)),e=process.env.NODE_ENV==="development"?t:encodeURI(t);return await(await y(e)).json()}async function F(o){return i.has(o)||i.set(o,C(o)),i.get(o)}function lt(){const[,o]=I.useReducer(t=>t+1,0);typeof window>"u"||process.env.NODE_ENV!=="production"&&(window.__redoclyRefresh=o)}function _(o,t){const e=t?new URLSearchParams(t).get("revision"):null,a=t?new URLSearchParams(t).get("version"):null;return e||a?`${o}?${e?`revision=${encodeURIComponent(e)}`:""}${a?`&version=${encodeURIComponent(a)}`:""}`.trim():o}class p{static markdocComponents={};static async updateTemplate(t,e,a){const n=l(t);g[a]=()=>e;const r=l(window.location.pathname);n===r&&(await this.load(t,!0),window.__redoclyRefresh())}static async update(t){const e=l(t),a=l(window.location.pathname);if(e!==a){d.delete(e);return}await this.load(t,!0),window.__redoclyRefresh()}static async updateSharedData(t){await i.set(t,C(t)),window.__redoclyRefresh()}static addGlobalDataListener(t){u.add(t)}static removeGlobalDataListener(t){u.delete(t)}static updateGlobalData(t){u.forEach(e=>e(t)),m=t,K(m.l10n)}static async tryLoad(t,e,a){try{return await this.load(t,e,a)}catch{return null}}static async loadDynamicMarkdocComponents(t){const e=this.markdocComponents?.[t];e&&G(e)&&Object.assign(this.markdocComponents,await e())}static async load(t,e,a){const n=l(t),r=_(n,a),s=await d.get(r);if(!m&&!D&&(D=q()),s&&!e)return s;{const[f]=await Promise.all([d.set(r,c(a)),D]);return f}async function c(f){const U=V(n),k=j(U,f),E=await y(k),{templateId:R,sharedDataIds:w,props:P,userData:T,versions:L,redirectTo:M,isPublic:O}=await E.json(),[x]=await Promise.all([(async()=>p.loadTemplate(R))(),Promise.all((P.dynamicMarkdocComponents||[]).map(h=>p.loadDynamicMarkdocComponents(h))),w?A(w,h=>F(h)):Promise.resolve({})]);return{templateId:R,slug:n,sharedDataIds:w,redirectTo:M,props:P,Template:x,userData:T,versions:L,isPublic:O}}}static loadSync(t){const e=l(t),a=_(e,typeof window<"u"?window.location.search:void 0),n=d.tryGetSync(a);if(!n)return;const r=z(n.sharedDataIds,s=>i.getSync(s,"Data dependency not cached ahead of time: "+s));return{...n,sharedData:r}}static async prepare(t,e,a,n){const r=t.templateId;if(await Promise.all((t.props.dynamicMarkdocComponents||[]).map(c=>this.loadDynamicMarkdocComponents(c))),e)for(const c of Object.keys(e))i.setSync(c,e[c]);const s=await p.loadTemplate(r);s&&d.setSync(t.slug,{templateId:r,slug:t.slug,props:t.props,sharedDataIds:t.sharedDataIds||{},Template:s,userData:t.userInfo,versions:t.versions,isPublic:t.isPublic}),m=a,W=n}static async loadTemplate(t){try{const e=await g[t]();if(t.endsWith("page.tsx")&&!e.default)throw new b(t);const a=e.default;return typeof a=="function"?a:a.default}catch(e){if(!(process.env.NODE_ENV==="development")||!N())throw e;return e instanceof b?()=>(window.location.reload(),null):(window.location.reload(),null)}}static clear(){u.clear(),i.clear(),d.clear()}}(typeof window<"u"?window:global).__LOADER=p;export{p as Loader,F as getSharedData,m as globalData,W as initLocale,lt as useRefresh};
@@ -1,4 +1,5 @@
1
1
  import type { HistoryOrigin } from '@redocly/theme/core/utils';
2
+ import type { ColorMode } from '@redocly/theme/core/types';
2
3
  export type RouteUpdateIncomingMessage = {
3
4
  type: 'route-update';
4
5
  path: string;
@@ -26,7 +27,7 @@ export type EditorScrollUpdateIncomingMessage = {
26
27
  };
27
28
  export type ColorSchemaUpdateIncomingMessage = {
28
29
  type: 'color-schema-update';
29
- colorSchema: 'light' | 'dark';
30
+ colorSchema: ColorMode;
30
31
  };
31
32
  export type IncomingMessage = RouteUpdateIncomingMessage | InitializeIncomingMessage | LocationUpdateIncomingMessage | ScrollUpdateIncomingMessage | EditorScrollUpdateIncomingMessage | ColorSchemaUpdateIncomingMessage;
32
33
  export type OutgoingMessage = InitializedOutgoingMessage | RouteUpdatedOutgoingMessage | AddReviewCommentOutgoingMessage | ReviewHoverLinesOutgoingMessage | ScrollOutgoingMessage | EditorScrollOutgoingMessage;
@@ -2,5 +2,5 @@ import type { ResolvedNavItem } from '@redocly/config';
2
2
  /**
3
3
  * Injects catalog items into the sidebar items.
4
4
  */
5
- export declare function injectCatalogItems(sidebarItems: ResolvedNavItem[], entityId: string, catalogSlug?: string): ResolvedNavItem[];
5
+ export declare function injectCatalogItems(sidebarItems: ResolvedNavItem[], entityId: string, catalogSlug: string | undefined, search: string): ResolvedNavItem[];
6
6
  //# sourceMappingURL=inject-catalog-items.d.ts.map
@@ -1 +1 @@
1
- import{CATALOG_BASE_SLUG as r,CATALOG_SLUGS as o}from"../../../server/constants/plugins/catalog-entities.js";function p(t,i,l=o.ALL){const e=`${r}/${l}/entities/${i}`,n=[{type:"link",label:"Overview",link:e},{type:"link",label:"Relations Graph",link:`${e}/relations-graph`}];return!t||t.length===0?n:[...n,{type:"separator",separatorLine:!0},{type:"group",items:t,label:"Documentation"}]}export{p as injectCatalogItems};
1
+ import{CATALOG_BASE_SLUG as s,CATALOG_SLUGS as l}from"../../../server/constants/plugins/catalog-entities.js";function c(e){const n=new URLSearchParams(e).get("revision"),t=new URLSearchParams(e).get("version");return n||t?`?${n?`revision=${encodeURIComponent(n)}`:""}${t?`&version=${encodeURIComponent(t)}`:""}`.trim():""}function m(e,n,t=l.ALL,a){const r=`${s}/${t}/entities/${n}`,o=c(a),i=[{type:"link",label:"Overview",link:`${r}${o}`},{type:"link",label:"Relations Graph",link:`${r}/relations-graph${o}`}];return!e||e.length===0?i:[...i,{type:"separator",separatorLine:!0},{type:"group",items:e,label:"Documentation"}]}export{m as injectCatalogItems};
@@ -79,10 +79,6 @@ export declare const ServerRoutes: {
79
79
  readonly MCP_CALLBACK: "/_mcp/oauth/callback";
80
80
  readonly SCORECARDS: "/scorecards";
81
81
  };
82
- export declare const DEFAULT_PROVIDERS_LOGIN_URLS: {
83
- SAML2: string;
84
- OIDC: string;
85
- };
86
82
  export declare enum RbacFeatures {
87
83
  AI_SEARCH = "aiSearch"
88
84
  }