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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (310) hide show
  1. package/CHANGELOG.md +207 -0
  2. package/dist/bin.js +0 -0
  3. package/dist/cli/build/analytics/collect-analytics.js +1 -1
  4. package/dist/cli/build/analytics/collectors/get-sidebars-usage.d.ts +12 -0
  5. package/dist/cli/build/analytics/collectors/get-sidebars-usage.js +1 -0
  6. package/dist/cli/build/index.js +1 -1
  7. package/dist/cli/develop.js +1 -1
  8. package/dist/cli/eject/resolveEjectParams.js +1 -1
  9. package/dist/cli/generate/string-utils.js +1 -1
  10. package/dist/cli/stats/collectors/extension-sampling.js +1 -1
  11. package/dist/cli/translations/collect-config-translations.js +1 -1
  12. package/dist/client/App.js +1 -1
  13. package/dist/client/TestProvider.d.ts +3 -1
  14. package/dist/client/TestProvider.js +1 -1
  15. package/dist/client/api-request-handlers-entry.d.ts +1 -1
  16. package/dist/client/app/Link.js +1 -1
  17. package/dist/client/app/ReviewComments/ReviewComments.js +2 -2
  18. package/dist/client/app/Sidebar/Sidebar.js +1 -1
  19. package/dist/client/app/Sidebar/useSidebarItems.js +1 -1
  20. package/dist/client/app/hooks/codeHighlight/treeview-transformer.js +1 -1
  21. package/dist/client/app/hooks/codeHighlight/useCodeHighlight.js +1 -1
  22. package/dist/client/app/hooks/index.d.ts +1 -1
  23. package/dist/client/app/hooks/index.js +1 -1
  24. package/dist/client/app/hooks/markdown/useMarkdownText.js +1 -1
  25. package/dist/client/app/hooks/useConsent.d.ts +11 -0
  26. package/dist/client/app/hooks/useConsent.js +1 -0
  27. package/dist/client/app/l10n/L10nContext.d.ts +10 -0
  28. package/dist/client/app/l10n/L10nContext.js +1 -0
  29. package/dist/client/app/l10n/hooks/useL10n.js +1 -1
  30. package/dist/client/app/l10n/hooks/useTranslate.js +1 -1
  31. package/dist/client/app/l10n/hooks/useTranslationKeys.d.ts +2 -0
  32. package/dist/client/app/l10n/hooks/useTranslationKeys.js +1 -1
  33. package/dist/client/app/l10n/ssrL10n.d.ts +4 -0
  34. package/dist/client/app/l10n/ssrL10n.js +1 -0
  35. package/dist/client/app/markdoc/custom-components/openapi/openapi-example.js +1 -1
  36. package/dist/client/app/markdoc/custom-components/openapi/openapi-response-sample.js +1 -1
  37. package/dist/client/app/markdoc/custom-components/openapi/replay-openapi.js +1 -1
  38. package/dist/client/app/markdoc/hooks/use-store.d.ts +2 -3
  39. package/dist/client/app/pages/DevLogin/DevLoginForm.js +1 -1
  40. package/dist/client/app/pages/Invite/Invite.js +1 -1
  41. package/dist/client/app/search/index.d.ts +1 -1
  42. package/dist/client/app/search/index.js +1 -1
  43. package/dist/client/app/search/useSearch.d.ts +3 -0
  44. package/dist/client/app/search/useSearch.js +1 -1
  45. package/dist/client/app/webmcp/index.d.ts +2 -0
  46. package/dist/client/app/webmcp/index.js +1 -0
  47. package/dist/client/app/webmcp/tools/api-tools.d.ts +8 -0
  48. package/dist/client/app/webmcp/tools/api-tools.js +1 -0
  49. package/dist/client/app/webmcp/tools/shared.d.ts +13 -0
  50. package/dist/client/app/webmcp/tools/shared.js +1 -0
  51. package/dist/client/app/webmcp/tools/site-tools.d.ts +5 -0
  52. package/dist/client/app/webmcp/tools/site-tools.js +3 -0
  53. package/dist/client/app/webmcp/types.d.ts +36 -0
  54. package/dist/client/app/webmcp/types.js +0 -0
  55. package/dist/client/app/webmcp/useWebMcpTools.d.ts +9 -0
  56. package/dist/client/app/webmcp/useWebMcpTools.js +1 -0
  57. package/dist/client/mcp-tool-handlers-entry.d.ts +1 -1
  58. package/dist/client/middleware-entry.d.ts +1 -1
  59. package/dist/client/providers/page-data/hooks.d.ts +2 -0
  60. package/dist/client/providers/page-data/hooks.js +1 -1
  61. package/dist/client/providers/theme/ThemeDataProvider.js +1 -1
  62. package/dist/client/runtime/loader.js +1 -1
  63. package/dist/client/server-entry.d.ts +2 -1
  64. package/dist/client/server-entry.js +1 -1
  65. package/dist/client/server-props-entry.d.ts +1 -1
  66. package/dist/client/templates/api-docs/helpers.js +1 -1
  67. package/dist/client/templates/api-docs/template.js +7 -3
  68. package/dist/client/utils/catalog/parse-filter-query.js +1 -1
  69. package/dist/client/{app/Sidebar/helpers → utils}/filter-out-versioned-items.d.ts +12 -2
  70. package/dist/client/utils/filter-out-versioned-items.js +1 -0
  71. package/dist/client/utils/navigation-tabs.d.ts +14 -0
  72. package/dist/client/utils/navigation-tabs.js +1 -0
  73. package/dist/compiled/svgo/svgo-node.js +39 -39
  74. package/dist/constants/common.d.ts +1 -0
  75. package/dist/constants/common.js +1 -1
  76. package/dist/constants/l10n/langs/ar.js +1 -1
  77. package/dist/constants/l10n/langs/de.js +1 -1
  78. package/dist/constants/l10n/langs/en.js +1 -1
  79. package/dist/constants/l10n/langs/es.js +1 -1
  80. package/dist/constants/l10n/langs/fr.js +1 -1
  81. package/dist/constants/l10n/langs/hi.js +1 -1
  82. package/dist/constants/l10n/langs/it.js +1 -1
  83. package/dist/constants/l10n/langs/ja.js +1 -1
  84. package/dist/constants/l10n/langs/ko.js +1 -1
  85. package/dist/constants/l10n/langs/pl.js +1 -1
  86. package/dist/constants/l10n/langs/pt-BR.js +1 -1
  87. package/dist/constants/l10n/langs/pt.js +1 -1
  88. package/dist/constants/l10n/langs/ru.js +1 -1
  89. package/dist/constants/l10n/langs/uk.js +1 -1
  90. package/dist/constants/l10n/langs/zh.js +1 -1
  91. package/dist/markdoc/nodes/table.d.ts +2 -0
  92. package/dist/markdoc/nodes/table.js +1 -1
  93. package/dist/server/config/env-config.d.ts +0 -6
  94. package/dist/server/config/env-schema.d.ts +0 -15
  95. package/dist/server/config/env-schemas/feature-flags.d.ts +0 -12
  96. package/dist/server/config/env-schemas/feature-flags.js +1 -1
  97. package/dist/server/constants/common.d.ts +3 -1
  98. package/dist/server/constants/common.js +1 -1
  99. package/dist/server/constants/entitlements.js +1 -1
  100. package/dist/server/constants/plugins/consent.d.ts +3 -0
  101. package/dist/server/constants/plugins/consent.js +1 -0
  102. package/dist/server/constants/plugins/search.js +1 -1
  103. package/dist/server/esbuild/esbuild-logger.js +3 -3
  104. package/dist/server/plugins/analytics/adobe/index.js +1 -1
  105. package/dist/server/plugins/analytics/amplitude/browser-hooks.js +1 -1
  106. package/dist/server/plugins/analytics/amplitude/index.js +1 -1
  107. package/dist/server/plugins/analytics/fullstory/index.js +1 -1
  108. package/dist/server/plugins/analytics/ga/index.js +1 -1
  109. package/dist/server/plugins/analytics/gtm/browser-hooks.js +1 -1
  110. package/dist/server/plugins/analytics/gtm/index.js +1 -1
  111. package/dist/server/plugins/analytics/heap/browser-hooks.js +1 -1
  112. package/dist/server/plugins/analytics/rudderstack/index.js +1 -1
  113. package/dist/server/plugins/analytics/segment/index.js +1 -1
  114. package/dist/server/plugins/api-docs/index.js +1 -1
  115. package/dist/server/plugins/api-docs/utils/apply-nav-item-to-root.d.ts +9 -0
  116. package/dist/server/plugins/api-docs/utils/apply-nav-item-to-root.js +1 -0
  117. package/dist/server/plugins/api-docs/utils/decorators.js +1 -1
  118. package/dist/server/plugins/catalog-entities/database/repositories/common/revision-repository.d.ts +1 -1
  119. package/dist/server/plugins/catalog-entities/database/repositories/common/revision-repository.js +1 -1
  120. package/dist/server/plugins/catalog-entities/database/repositories/common/version-repository.d.ts +5 -1
  121. package/dist/server/plugins/catalog-entities/database/repositories/common/version-repository.js +7 -1
  122. package/dist/server/plugins/catalog-entities/database/repositories/entities/entities-write-repository.js +1 -1
  123. package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/arazzo-entities-extractor.js +1 -1
  124. package/dist/server/plugins/catalog-entities/utils/ajv-validator.js +1 -1
  125. package/dist/server/plugins/catalog-entities/utils/extract-parts-from-components-ref.js +1 -1
  126. package/dist/server/plugins/catalog-entities/utils/is-valid-tag-name.js +1 -1
  127. package/dist/server/plugins/catalog-entities/utils/openapi-component-content-extractor.js +1 -1
  128. package/dist/server/plugins/config-parser/format-custom-tags.d.ts +1 -0
  129. package/dist/server/plugins/config-parser/format-custom-tags.js +1 -1
  130. package/dist/server/plugins/config-parser/index.js +1 -1
  131. package/dist/server/plugins/config-parser/loaders/redocly-config-loader.js +1 -1
  132. package/dist/server/plugins/config-parser/loaders/versions-config-loader.js +1 -1
  133. package/dist/server/plugins/config-parser/safe-parse.js +1 -1
  134. package/dist/server/plugins/consent/build-consent-script.d.ts +6 -0
  135. package/dist/server/plugins/consent/build-consent-script.js +230 -0
  136. package/dist/server/plugins/consent/gate-ssr-components.d.ts +5 -0
  137. package/dist/server/plugins/consent/gate-ssr-components.js +1 -0
  138. package/dist/server/plugins/consent/index.d.ts +3 -0
  139. package/dist/server/plugins/consent/index.js +1 -0
  140. package/dist/server/plugins/consent/is-consent-enabled.d.ts +8 -0
  141. package/dist/server/plugins/consent/is-consent-enabled.js +1 -0
  142. package/dist/server/plugins/consent/zone-modes.d.ts +8 -0
  143. package/dist/server/plugins/consent/zone-modes.js +1 -0
  144. package/dist/server/plugins/default-theme/extract-team-names.js +1 -1
  145. package/dist/server/plugins/dev-onboarding/template/App.js +5 -5
  146. package/dist/server/plugins/dev-onboarding/template/components/ApiKeyOverview.js +3 -3
  147. package/dist/server/plugins/get-reserved-routes.d.ts +4 -2
  148. package/dist/server/plugins/get-reserved-routes.js +1 -1
  149. package/dist/server/plugins/l10n/index.js +1 -1
  150. package/dist/server/plugins/lifecycle.js +2 -2
  151. package/dist/server/plugins/markdown/attribute-resolvers/code-walkthrough/file-chunk-parser.js +2 -2
  152. package/dist/server/plugins/markdown/markdoc/markdoc-options.d.ts +2 -0
  153. package/dist/server/plugins/markdown/search/get-ai-search-documents.js +9 -9
  154. package/dist/server/plugins/markdown/search/nodes/tag-node.d.ts +1 -1
  155. package/dist/server/plugins/markdown/search/nodes/tag-node.js +1 -1
  156. package/dist/server/plugins/markdown/search/to-markdown.js +1 -1
  157. package/dist/server/plugins/markdown/utils/sanitize-malformed-md-content.js +1 -1
  158. package/dist/server/plugins/mcp/audit/audit-log.js +1 -1
  159. package/dist/server/plugins/mcp/audit/secret-patterns.js +1 -1
  160. package/dist/server/plugins/mcp/auth/assistant-anonymous-token.d.ts +9 -0
  161. package/dist/server/plugins/mcp/auth/assistant-anonymous-token.js +1 -0
  162. package/dist/server/plugins/mcp/auth/auth-handlers.d.ts +5 -3
  163. package/dist/server/plugins/mcp/auth/auth-handlers.js +1 -1
  164. package/dist/server/plugins/mcp/codemode/build-tool-list.d.ts +6 -1
  165. package/dist/server/plugins/mcp/codemode/build-tool-list.js +2 -2
  166. package/dist/server/plugins/mcp/codemode/build-tool-type-declarations.js +4 -4
  167. package/dist/server/plugins/mcp/codemode/capabilities/fetch/index.js +3 -3
  168. package/dist/server/plugins/mcp/codemode/capabilities/types.d.ts +0 -1
  169. package/dist/server/plugins/mcp/codemode/capabilities/utils.d.ts +1 -2
  170. package/dist/server/plugins/mcp/codemode/capabilities/utils.js +4 -4
  171. package/dist/server/plugins/mcp/codemode/code-execution-audit.d.ts +3 -2
  172. package/dist/server/plugins/mcp/codemode/code-execution-audit.js +1 -1
  173. package/dist/server/plugins/mcp/codemode/code-execution-telemetry.d.ts +3 -4
  174. package/dist/server/plugins/mcp/codemode/code-execution-telemetry.js +1 -1
  175. package/dist/server/plugins/mcp/codemode/prompts.js +1 -1
  176. package/dist/server/plugins/mcp/codemode/tools/describe-tools.js +2 -2
  177. package/dist/server/plugins/mcp/codemode/tools/execute-schema.d.ts +0 -2
  178. package/dist/server/plugins/mcp/codemode/tools/execute-schema.js +1 -1
  179. package/dist/server/plugins/mcp/codemode/tools/execute.js +1 -1
  180. package/dist/server/plugins/mcp/codemode/tools/manage-credentials.js +2 -2
  181. package/dist/server/plugins/mcp/custom-tools/scan-custom-tools.js +1 -1
  182. package/dist/server/plugins/mcp/docs-mcp/tool-schemas.js +1 -1
  183. package/dist/server/plugins/mcp/docs-mcp/tools/core/create-anonymous-session.js +1 -1
  184. package/dist/server/plugins/mcp/docs-mcp/tools/core/whoami.js +1 -1
  185. package/dist/server/plugins/mcp/docs-mcp/tools/openapi/constants.d.ts +2 -0
  186. package/dist/server/plugins/mcp/docs-mcp/tools/openapi/constants.js +1 -1
  187. package/dist/server/plugins/mcp/docs-mcp/tools/openapi/endpoint-suggestions.d.ts +6 -0
  188. package/dist/server/plugins/mcp/docs-mcp/tools/openapi/endpoint-suggestions.js +1 -1
  189. package/dist/server/plugins/mcp/docs-mcp/tools/openapi/get-endpoint-info.js +1 -1
  190. package/dist/server/plugins/mcp/docs-mcp/tools/openapi/get-security-schemes.js +1 -1
  191. package/dist/server/plugins/mcp/docs-mcp/tools/openapi/load-api-description.d.ts +2 -0
  192. package/dist/server/plugins/mcp/docs-mcp/tools/openapi/load-api-description.js +1 -1
  193. package/dist/server/plugins/mcp/docs-mcp/tools/openapi/utils.d.ts +6 -2
  194. package/dist/server/plugins/mcp/docs-mcp/tools/openapi/utils.js +1 -1
  195. package/dist/server/plugins/mcp/docs-mcp/utils/resolve-refs.d.ts +20 -14
  196. package/dist/server/plugins/mcp/docs-mcp/utils/resolve-refs.js +1 -1
  197. package/dist/server/plugins/mcp/gateway-mcp/credential-validation.js +1 -1
  198. package/dist/server/plugins/mcp/gateway-mcp/elicitation.d.ts +16 -10
  199. package/dist/server/plugins/mcp/gateway-mcp/elicitation.js +5 -5
  200. package/dist/server/plugins/mcp/gateway-mcp/fetch/allowed-hosts.js +1 -1
  201. package/dist/server/plugins/mcp/gateway-mcp/fetch/fetch-bridge.js +1 -1
  202. package/dist/server/plugins/mcp/gateway-mcp/fetch/ssrf-guard.js +1 -1
  203. package/dist/server/plugins/mcp/gateway-mcp/fetch/url-placeholders.js +1 -1
  204. package/dist/server/plugins/mcp/gateway-mcp/rate-limit/ip-key.js +1 -1
  205. package/dist/server/plugins/mcp/gateway-mcp/upstream-auth-scheme.d.ts +0 -6
  206. package/dist/server/plugins/mcp/gateway-mcp/upstream-auth-scheme.js +2 -2
  207. package/dist/server/plugins/mcp/handlers/docs-mcp-handler.js +1 -1
  208. package/dist/server/plugins/mcp/handlers/mcp-credentials-handler.js +1 -1
  209. package/dist/server/plugins/mcp/handlers/mcp-credentials-page.js +35 -35
  210. package/dist/server/plugins/mcp/index.js +1 -1
  211. package/dist/server/plugins/mcp/servers/docs-server.js +1 -1
  212. package/dist/server/plugins/mcp/servers/mcp-server.js +2 -4
  213. package/dist/server/plugins/mcp/types.d.ts +5 -11
  214. package/dist/server/plugins/mcp/utils/disabled-tools.d.ts +3 -0
  215. package/dist/server/plugins/mcp/utils/disabled-tools.js +1 -0
  216. package/dist/server/plugins/mcp/utils/json-schema-validator.d.ts +2 -2
  217. package/dist/server/plugins/mcp/utils/json-schema-validator.js +1 -1
  218. package/dist/server/plugins/mcp/utils/mcp-client.js +1 -1
  219. package/dist/server/plugins/mcp/utils/public-endpoint.d.ts +9 -0
  220. package/dist/server/plugins/mcp/utils/public-endpoint.js +1 -0
  221. package/dist/server/plugins/mcp/utils/telemetry-attributes.d.ts +2 -1
  222. package/dist/server/plugins/mcp/utils/telemetry-attributes.js +1 -1
  223. package/dist/server/plugins/mcp/utils/tool-registration.d.ts +2 -1
  224. package/dist/server/plugins/mcp/utils/tool-registration.js +1 -1
  225. package/dist/server/plugins/mcp/utils/xmcp-utils.d.ts +0 -7
  226. package/dist/server/plugins/mcp/utils/xmcp-utils.js +1 -1
  227. package/dist/server/plugins/mcp/workers/execute-mcp-tool.js +1 -1
  228. package/dist/server/plugins/mcp/workers/mcp-tool-telemetry.d.ts +5 -7
  229. package/dist/server/plugins/mcp/workers/mcp-tool-telemetry.js +1 -1
  230. package/dist/server/plugins/nav-utils.js +1 -1
  231. package/dist/server/plugins/scorecard-classic/index.js +1 -1
  232. package/dist/server/plugins/scorecard-classic/template/Grid/GridHeader.js +21 -8
  233. package/dist/server/plugins/scorecard-classic/template/ScorecardDashboard.js +3 -3
  234. package/dist/server/plugins/scorecard-classic/template/index.styles.d.ts +1 -0
  235. package/dist/server/plugins/scorecard-classic/template/index.styles.js +15 -5
  236. package/dist/server/plugins/scorecard-classic/template/useData.js +1 -1
  237. package/dist/server/plugins/scorecard-classic/template/views.js +1 -1
  238. package/dist/server/plugins/search/engines/flexsearch/index.js +2 -1
  239. package/dist/server/plugins/search/engines/flexsearch/search-index.d.ts +2 -2
  240. package/dist/server/plugins/search/engines/flexsearch/search-index.js +1 -1
  241. package/dist/server/plugins/search/llmstxt/index.js +1 -1
  242. package/dist/server/plugins/sidebars/index.js +7 -3
  243. package/dist/server/plugins/sidebars/tabs.d.ts +19 -0
  244. package/dist/server/plugins/sidebars/tabs.js +1 -0
  245. package/dist/server/plugins/sso/index.js +1 -1
  246. package/dist/server/providers/database/pagination/after-and-before.js +1 -1
  247. package/dist/server/providers/database/pagination/utils/decode-cursor.js +1 -1
  248. package/dist/server/providers/database/pagination/utils/is-base-64.js +1 -1
  249. package/dist/server/ssr/render.js +1 -1
  250. package/dist/server/store.d.ts +2 -0
  251. package/dist/server/store.js +1 -1
  252. package/dist/server/tools/notifiers/helpers/privacy/mask-subject.js +1 -1
  253. package/dist/server/tools/notifiers/helpers/privacy/remove-pii-from-url.js +1 -1
  254. package/dist/server/tools/notifiers/helpers/privacy/remove-pii.js +1 -1
  255. package/dist/server/types/plugins/search.d.ts +7 -5
  256. package/dist/server/utils/catalog-classic/get-catalog-shared-data-id.d.ts +3 -0
  257. package/dist/server/utils/catalog-classic/get-catalog-shared-data-id.js +1 -0
  258. package/dist/server/utils/envs/interpolate-env-variables.js +1 -1
  259. package/dist/server/utils/rbac-expand.js +1 -1
  260. package/dist/server/utils/rbac.js +1 -1
  261. package/dist/server/utils/redact-url.d.ts +6 -0
  262. package/dist/server/utils/redact-url.js +1 -0
  263. package/dist/server/utils/report-all-errors.js +1 -1
  264. package/dist/server/utils/sandbox-context.js +1 -1
  265. package/dist/server/utils/search/highlight-text-for-search.d.ts +1 -0
  266. package/dist/server/utils/search/highlight-text-for-search.js +1 -1
  267. package/dist/server/utils/search/text-match.d.ts +6 -0
  268. package/dist/server/utils/search/text-match.js +1 -0
  269. package/dist/server/utils/static-data.js +1 -1
  270. package/dist/server/utils/write-problems-report.d.ts +3 -0
  271. package/dist/server/utils/write-problems-report.js +1 -0
  272. package/dist/server/web-server/auth.d.ts +16 -2
  273. package/dist/server/web-server/auth.js +4 -4
  274. package/dist/server/web-server/jwt/jwt.js +1 -1
  275. package/dist/server/web-server/jwt/token-types.d.ts +11 -0
  276. package/dist/server/web-server/jwt/token-types.js +1 -0
  277. package/dist/server/web-server/jwt/types.d.ts +4 -4
  278. package/dist/server/web-server/jwt/types.js +1 -1
  279. package/dist/server/web-server/middleware/apiKeyMiddleware.js +1 -1
  280. package/dist/server/web-server/middleware/catalogAuthMiddleware.js +1 -1
  281. package/dist/server/web-server/middleware/ensureSearchData.js +1 -1
  282. package/dist/server/web-server/middleware/responseHeadersMiddleware.js +1 -1
  283. package/dist/server/web-server/middleware/telemetry-middleware.js +1 -1
  284. package/dist/server/web-server/routes/ask-ai.js +1 -1
  285. package/dist/server/web-server/routes/auth.d.ts +1 -1
  286. package/dist/server/web-server/routes/auth.js +1 -1
  287. package/dist/server/web-server/routes/cors-proxy.js +2 -2
  288. package/dist/server/web-server/routes/dynamic-route.js +1 -1
  289. package/dist/server/web-server/routes/index.js +1 -1
  290. package/dist/server/web-server/routes/mcp-routes/mcp-oauth.js +1 -1
  291. package/dist/server/web-server/routes/mcp-routes/mcp-server-card.js +1 -1
  292. package/dist/server/web-server/routes/semantic-search.d.ts +1 -1
  293. package/dist/server/web-server/routes/semantic-search.js +1 -1
  294. package/dist/server/web-server/routes/static-content.js +1 -1
  295. package/dist/server/workers/worker-pool.js +1 -1
  296. package/dist/types/entitlements.d.ts +1 -0
  297. package/dist/utils/path/parse-path-versions.js +1 -1
  298. package/dist/utils/string/to-kebab-case.js +1 -1
  299. package/package.json +10 -10
  300. package/dist/client/app/Sidebar/helpers/filter-out-versioned-items.js +0 -1
  301. package/dist/client/app/hooks/useAnchorPositioning.d.ts +0 -6
  302. package/dist/client/app/hooks/useAnchorPositioning.js +0 -1
  303. package/dist/server/plugins/mcp/auth/token-audience-telemetry.d.ts +0 -7
  304. package/dist/server/plugins/mcp/auth/token-audience-telemetry.js +0 -1
  305. package/dist/server/plugins/mcp/auth/token-audience.d.ts +0 -6
  306. package/dist/server/plugins/mcp/auth/token-audience.js +0 -1
  307. /package/dist/server/{plugins/mcp/gateway-mcp/fetch → web-server/utils}/ssrf-blocklist.d.ts +0 -0
  308. /package/dist/server/{plugins/mcp/gateway-mcp/fetch → web-server/utils}/ssrf-blocklist.js +0 -0
  309. /package/dist/server/{plugins/mcp/gateway-mcp/fetch → web-server/utils}/ssrf-safe-lookup.d.ts +0 -0
  310. /package/dist/server/{plugins/mcp/gateway-mcp/fetch → web-server/utils}/ssrf-safe-lookup.js +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,196 @@
1
1
  # @redocly/realm
2
2
 
3
+ ## 0.138.0-next.10
4
+
5
+ ### Patch Changes
6
+
7
+ - bc75bbe4b25: Fixed an issue where tooltips were missing for the **Copy**, **Like**, and **Dislike** buttons in AI assistant answers.
8
+ - 90446d7523d: Hardened authentication.
9
+ - 63a6ead8690: Fixed an issue where unknown key `redocly.yaml` caused its entire object to be removed.
10
+ - b32564280cf: Hardened the built-in CORS proxy.
11
+ - 675715f661e: Improved security for API functions and custom MCP tools in projects hosted in Reunite.
12
+ - 707b590864b: Fixed an issue where the `openapi-response-sample` tag reverted to the first response code after in-page navigation or browser Back and Forward navigation.
13
+ - d4727bf4699: Fixed an issue where the search dialog reset the selected category to "All" every time it was reopened.
14
+ The category chosen by the user is remembered for the duration of the browser tab.
15
+ - 4d5ed94c177: Fixed an issue in Replay where closing a tab while a request was running in another tab displayed the response in the wrong tab and left the sending tab stuck on `Sending request ...`.
16
+ - Updated dependencies [bc75bbe4b25]
17
+ - Updated dependencies [d4727bf4699]
18
+ - @redocly/theme@0.70.0-next.7
19
+ - @redocly/api-docs@0.3.0-next.7
20
+
21
+ ## 0.138.0-next.9
22
+
23
+ ### Minor Changes
24
+
25
+ - 3faa7cbcf5a: Improved the AI assistant's progress display to keep generated answers stable.
26
+ - 4ee9ba49be2: Added support for option order in the Markdoc `connect-mcp` tag.
27
+
28
+ ### Patch Changes
29
+
30
+ - 27d20c5f50c: Hardened CORS proxy handling of direct browser navigation to proxied responses.
31
+ - 61649bb626f: Fixed an issue where dropdown menus were cut off at the left or right edge of the viewport.
32
+ - 05026102888: Improved response validation in the **Try it** console: the response body is checked against the schema for its status code, status code range or `default`, and for its media type.
33
+ Responses don't have to include `writeOnly` properties.
34
+ - 05026102888: Fixed an issue where the **Try it** console froze on request and response schemas that expand to a very large number of nodes.
35
+ - Updated dependencies [3faa7cbcf5a]
36
+ - Updated dependencies [4ee9ba49be2]
37
+ - Updated dependencies [61649bb626f]
38
+ - @redocly/theme@0.70.0-next.6
39
+ - @redocly/api-docs@0.3.0-next.6
40
+
41
+ ## 0.138.0-next.8
42
+
43
+ ### Minor Changes
44
+
45
+ - 36ac86bb3b8: Added support for project-specific MCP tools defined in an `@mcp` folder. Available on plans that include the MCP server.
46
+
47
+ ## 0.138.0-next.7
48
+
49
+ ### Patch Changes
50
+
51
+ - 55a98f9decd: Hardened CORS proxy validation of request targets.
52
+ - 15ad3df0069: Improved keyboard navigation for catalog filters, scorecard table sorting, and the "API keys" and "Logs" tabs on app pages in developer onboarding.
53
+ - 15ad3df0069: Improved keyboard and screen reader accessibility for image lightboxes, feedback reasons, select menus such as the version picker, and schema variant switches in API reference.
54
+ - Updated dependencies [15ad3df0069]
55
+ - Updated dependencies [15ad3df0069]
56
+ - @redocly/theme@0.70.0-next.5
57
+ - @redocly/api-docs@0.3.0-next.5
58
+
59
+ ## 0.138.0-next.6
60
+
61
+ ### Patch Changes
62
+
63
+ - c634df4a861: Fixed an issue where search returned an error on built projects with a very large search index.
64
+
65
+ ## 0.138.0-next.5
66
+
67
+ ### Minor Changes
68
+
69
+ - aa2cc02077f: Added a "Link to this section" tooltip and hover, pressed, and current states to the link icon next to headings and properties in API docs.
70
+ A click on the icon scrolls smoothly to the section and leaves a gap below the header.
71
+ - 91d809f1ef0: Improved the **Expand all** and **Collapse all** controls in API reference schema sections.
72
+ - fcb1b9e93bb: Added `tab` entries to `sidebars.yaml` for organizing projects into logical sections.
73
+
74
+ ### Patch Changes
75
+
76
+ - 53c31e67923: Fixed an issue in API docs where overview pages displayed only the text of `info.description` that came before the first heading.
77
+ The sections under the headings were missing from both the page and the sidebar.
78
+ - 48d6de8aebf: Fixed an issue in OpenAPI docs where `label`, `icon`, and `badges` from `sidebars.yaml` were not applied to the API overview sidebar item.
79
+ - 59baca3ad3b: Updated `@redocly/openapi-core` to version `2.55.0`.
80
+ - 63e49c20ce4: Fixed an issue where the `openapi-code-sample` tag omitted the authentication line when the API description declared `security` at the root instead of on the operation.
81
+ - 94e74d18b8d: Fixed an issue where the link checker reported links to the `/mcp` and `/mcp-public` MCP server setup pages as broken when those pages were served.
82
+ - 6bb03d3e5e6: Fixed an issue where groups in the mobile menu and drilldown sidebar collapsed if user expanded them right after a page loaded.
83
+ - 48d6de8aebf: Fixed an issue in OpenAPI docs where links to headings in API description overview partials briefly displayed a "Page not found" error.
84
+ - aa2cc02077f: Fixed API docs link icons so they open the heading or property link without changing clipboard contents.
85
+ - cbc76e5e88b: Fixed an issue where a React page rendered blank if its page component was wrapped in `React.memo` or `forwardRef`.
86
+ - 555b74a73af: Fixed an issue in the **Try it** console where the toolbar in the **Body**, **Headers**, and **Cookies** tabs hid the copy button in a narrow response panel.
87
+ - 2fe28690761: Fixed an issue where the **Try it** console did not validate the response body against the documented response schema.
88
+ - Updated dependencies [53c31e67923]
89
+ - Updated dependencies [aa2cc02077f]
90
+ - Updated dependencies [59baca3ad3b]
91
+ - Updated dependencies [63e49c20ce4]
92
+ - Updated dependencies [295faffbd0a]
93
+ - Updated dependencies [6bb03d3e5e6]
94
+ - Updated dependencies [91d809f1ef0]
95
+ - Updated dependencies [48d6de8aebf]
96
+ - Updated dependencies [aa2cc02077f]
97
+ - Updated dependencies [fcb1b9e93bb]
98
+ - Updated dependencies [2fe28690761]
99
+ - @redocly/api-docs@0.3.0-next.4
100
+ - @redocly/theme@0.70.0-next.4
101
+ - @redocly/realm-asyncapi-sdk@0.16.0-next.2
102
+ - @redocly/portal-plugin-mock-server@0.23.0-next.0
103
+
104
+ ## 0.138.0-next.4
105
+
106
+ ### Patch Changes
107
+
108
+ - 73d4f1d720f: Fixed an issue where builds of projects that use the AsciiDoc plugin failed even though JavaScript compilation succeeded.
109
+ - 5a51ac25f06: Fixed security issues in the web server.
110
+
111
+ ## 0.138.0-next.3
112
+
113
+ ### Minor Changes
114
+
115
+ - 1368d8594d7: Added the `consent` option to display a cookie consent banner or privacy choices link that loads analytics and gated scripts only after visitor approval. Set `mode` to `auto` to select opt-in or opt-out based on visitor time zone, or to `onetrust`, `cookiebot`, `trustarc`, or `tcf` to delegate consent management to those providers. This option requires the Enterprise+ plan.
116
+ - 220a3f8f7ae: Improved the **Expand all** and **Collapse all** controls in JSON samples.
117
+ - 5f0afdc4135: Added WebMCP support, which enables AI agents in the reader's browser to search, read, and navigate your documentation.
118
+
119
+ ### Patch Changes
120
+
121
+ - 220a3f8f7ae: Fixed an issue where JSON samples displayed the **Expand all** and **Collapse all** buttons even when there was nothing to expand or collapse.
122
+ - b8d94643e53: Fixed an issue that could cause the project to crash when rendering API docs with cyclic OpenAPI schemas.
123
+ - f47542f0aaa: Fixed an issue in API docs where links in the **Operations** panel of a group page included the configured path prefix twice.
124
+ - ba418fbe7bd: Fixed an issue in API docs where the **Show** button on a collapsed group jumped the page to the group heading instead of expanding the operations in place.
125
+ - 0002ecc776e: Added vertical alignment support for cells in the Markdoc `table` tag.
126
+ - bb5bd25ddf2: Fixed an issue in the **Try it** console where operations opened from the list displayed empty or incorrect request bodies and missing parameter types.
127
+ - bb5bd25ddf2: Fixed an issue in the **Try it** console where referenced path item operations did not open in request tabs or appear in the operations list.
128
+ - Updated dependencies [220a3f8f7ae]
129
+ - Updated dependencies [b8d94643e53]
130
+ - Updated dependencies [1368d8594d7]
131
+ - Updated dependencies [f47542f0aaa]
132
+ - Updated dependencies [220a3f8f7ae]
133
+ - Updated dependencies [ba418fbe7bd]
134
+ - Updated dependencies [0002ecc776e]
135
+ - Updated dependencies [bb5bd25ddf2]
136
+ - Updated dependencies [bb5bd25ddf2]
137
+ - Updated dependencies [5f0afdc4135]
138
+ - @redocly/theme@0.70.0-next.3
139
+ - @redocly/api-docs@0.3.0-next.3
140
+ - @redocly/realm-asyncapi-sdk@0.16.0-next.1
141
+
142
+ ## 0.138.0-next.2
143
+
144
+ ### Minor Changes
145
+
146
+ - 51256dcd1b9: Added output schema to the MCP `execute` tool and complete tool annotations to the MCP server tools.
147
+
148
+ ### Patch Changes
149
+
150
+ - 0ada389a199: Fixed a `ResizeObserver loop` error in Safari and Firefox when navigating API reference pages from the sidebar.
151
+ - 47f024b52c3: Fixed the AI assistant providing answers without using the project API tools on projects with protected content.
152
+ - e8c4c7fa4ae: Fixed an issue where a versioned API description could disappear or show the wrong version during local development.
153
+ - 715697934a0: Fixed an issue where samples in OpenAPI docs displayed the wrong variant for a `oneOf` nested inside another `oneOf`.
154
+ - 22f646e90b2: Fixed an issue where clicking an anchor link on a heading inside a partial included in an API description caused a 404 error instead of navigating to the heading.
155
+ - 6567a12696e: Hardened RBAC enforcement for page content.
156
+ - 46dd0b49501: Fixed an issue where setting `openapi.corsProxyUrl` to an empty string did not disable the CORS proxy in the **Try it** console.
157
+ - cff70028280: Fixed an issue where the AI assistant send button had no accessible name for screen readers.
158
+ - e62106befe7: Fixed server-side rendering of localized projects where UI labels appeared in the wrong language alongside hydration warnings.
159
+ - f7fa203bf8f: Fixed an issue where the version picker listed versions of a page that RBAC hid from the user.
160
+ - f7fa203bf8f: Fixed an issue where the version picker disappeared on pages that had no items in the sidebar.
161
+ - Updated dependencies [0ada389a199]
162
+ - Updated dependencies [715697934a0]
163
+ - Updated dependencies [22f646e90b2]
164
+ - Updated dependencies [46dd0b49501]
165
+ - Updated dependencies [cff70028280]
166
+ - @redocly/api-docs@0.3.0-next.2
167
+ - @redocly/theme@0.70.0-next.2
168
+
169
+ ## 0.138.0-next.1
170
+
171
+ ### Minor Changes
172
+
173
+ - 4f85f31942f: Added the ejectable `ReplaySecuritySchemeActions` component, which renders inside the security scheme card in the **Try it** console.
174
+ Eject `ReplaySecuritySchemeActions` to offer users a way to obtain a credential and write it into the request.
175
+
176
+ ### Patch Changes
177
+
178
+ - 7f611536d82: Fixed an issue where the the **Copy**, **Expand all**, and **Collapse all** buttons were missing from AsyncAPI binding panels.
179
+ - 4bc012cafa9: Fixed divider color in button groups, such as the page actions split button, to match custom theme button colors.
180
+ - 215ed7fc7fa: Updated the tooltip arrow to render as a compact 16px pointer with a softly rounded tip.
181
+ - 4bc012cafa9: Fixed the split button so the menu toggle and divider use the same `danger` tone as the main button.
182
+ - 215ed7fc7fa: Fixed an issue where the tooltip arrows failed to render in browsers that didn't support CSS anchor positioning.
183
+ - 8dcd600ebe8: Fixed an issue in the **Try it** console where query parameters with `allowReserved` caused reserved characters such as `/`, `:`, and `,` to be percent-encoded.
184
+ - Updated dependencies [7f611536d82]
185
+ - Updated dependencies [4bc012cafa9]
186
+ - Updated dependencies [215ed7fc7fa]
187
+ - Updated dependencies [4bc012cafa9]
188
+ - Updated dependencies [215ed7fc7fa]
189
+ - Updated dependencies [8dcd600ebe8]
190
+ - Updated dependencies [4f85f31942f]
191
+ - @redocly/api-docs@0.3.0-next.1
192
+ - @redocly/theme@0.70.0-next.1
193
+
3
194
  ## 0.138.0-next.0
4
195
 
5
196
  ### Minor Changes
@@ -36,6 +227,22 @@
36
227
  - @redocly/api-docs@0.3.0-next.0
37
228
  - @redocly/realm-asyncapi-sdk@0.16.0-next.0
38
229
 
230
+ ## 0.137.2
231
+
232
+ ### Patch Changes
233
+
234
+ - 00d766157ab: Hardened the built-in CORS proxy.
235
+ - ab31ba75844: Fixed an issue that could cause the project to crash when rendering API docs with cyclic OpenAPI schemas.
236
+ - Updated dependencies [ab31ba75844]
237
+ - @redocly/api-docs@0.2.1
238
+
239
+ ## 0.137.1
240
+
241
+ ### Patch Changes
242
+
243
+ - 4c8c1cc37c2: Fixed an issue where builds of projects that use the AsciiDoc plugin failed even though JavaScript compilation succeeded.
244
+ - f94d3b5a342: Fixed security issues in the web server.
245
+
39
246
  ## 0.137.0
40
247
 
41
248
  ### Minor Changes
package/dist/bin.js CHANGED
File without changes
@@ -1 +1 @@
1
- import{getApiFunctionsUsage as c}from"./collectors/get-api-functions-usage.js";import{getAsyncApiUsage as d}from"./collectors/get-async-api-usage.js";import{getConfigStatsUsage as p}from"./collectors/get-config-stats-usage.js";import{getFileExtensionsUsage as U}from"./collectors/get-file-extensions-usage.js";import{getFrontmatterUsage as u}from"./collectors/get-frontmatter-usage.js";import{getMarkdocUsage as S}from"./collectors/get-markdoc-usage.js";import{getNestedConfigsUsage as C}from"./collectors/get-nested-configs-usage.js";import{getProcessedConfigStatsUsage as x}from"./collectors/get-processed-config-stats-usage.js";import{getRefsUsage as y}from"./collectors/get-refs-usage.js";import{getSkillsUsage as k}from"./collectors/get-skills-usage.js";import{getThemeFolderUsage as v}from"./collectors/get-theme-folder-usage.js";import{telemetry as B}from"../../telemetry/index.js";import{envConfig as A}from"../../../server/config/env-config.js";async function R(i,n){const g=[c,d,p,U,u,S,C,x,y,k,v],l=await Promise.allSettled(g.map(t=>t({store:i,context:n}))),e={},s={};for(const t of l)if(t.status==="fulfilled"){const{name:r,value:a,version:f}=t.value;a&&(e[r]=a,s[r]=f)}const m={usageStats:e.usageStats,asyncApiUsage:e.asyncApiUsage,buildContext:e.buildContext,fileExtensions:e.fileExtensions,frontmatterUsage:e.frontmatterUsage,markdocUsage:e.markdocUsage,processedBuildContext:e.processedBuildContext,nestedConfigStats:e.nestedConfigStats,refsUsageStats:e.refsUsageStats,skillsUsage:e.skillsUsage,themeFolderUsage:e.themeFolderUsage,versions:JSON.stringify(s)},o=A.PROJECT_BUILD_ID||"unknown";B.sendBuildMessage([{id:o,object:"projectBuild",uri:`urn:redocly:realm:cli:projectBuild:${o}`,...m}])}export{R as collectAnalytics};
1
+ import{getApiFunctionsUsage as c}from"./collectors/get-api-functions-usage.js";import{getAsyncApiUsage as d}from"./collectors/get-async-api-usage.js";import{getConfigStatsUsage as U}from"./collectors/get-config-stats-usage.js";import{getFileExtensionsUsage as p}from"./collectors/get-file-extensions-usage.js";import{getFrontmatterUsage as u}from"./collectors/get-frontmatter-usage.js";import{getMarkdocUsage as S}from"./collectors/get-markdoc-usage.js";import{getNestedConfigsUsage as C}from"./collectors/get-nested-configs-usage.js";import{getProcessedConfigStatsUsage as b}from"./collectors/get-processed-config-stats-usage.js";import{getRefsUsage as x}from"./collectors/get-refs-usage.js";import{getSidebarsUsage as y}from"./collectors/get-sidebars-usage.js";import{getSkillsUsage as k}from"./collectors/get-skills-usage.js";import{getThemeFolderUsage as v}from"./collectors/get-theme-folder-usage.js";import{telemetry as B}from"../../telemetry/index.js";import{envConfig as A}from"../../../server/config/env-config.js";async function _(i,n){const g=[c,d,U,p,u,S,C,b,x,y,k,v],m=await Promise.allSettled(g.map(t=>t({store:i,context:n}))),e={},s={};for(const t of m)if(t.status==="fulfilled"){const{name:a,value:r,version:f}=t.value;r&&(e[a]=r,s[a]=f)}const l={usageStats:e.usageStats,asyncApiUsage:e.asyncApiUsage,buildContext:e.buildContext,fileExtensions:e.fileExtensions,frontmatterUsage:e.frontmatterUsage,markdocUsage:e.markdocUsage,processedBuildContext:e.processedBuildContext,nestedConfigStats:e.nestedConfigStats,refsUsageStats:e.refsUsageStats,sidebarsUsage:e.sidebarsUsage,skillsUsage:e.skillsUsage,themeFolderUsage:e.themeFolderUsage,versions:JSON.stringify(s)},o=A.PROJECT_BUILD_ID||"unknown";B.sendBuildMessage([{id:o,object:"projectBuild",uri:`urn:redocly:realm:cli:projectBuild:${o}`,...l}])}export{_ as collectAnalytics};
@@ -0,0 +1,12 @@
1
+ import type { Collector } from '../collect-analytics.js';
2
+ type SidebarsUsage = {
3
+ files: number;
4
+ filesWithTabs: number;
5
+ tabs: number;
6
+ menuTabs: number;
7
+ menuEntries: number;
8
+ };
9
+ export declare function summarizeSidebarFile(items: unknown): Omit<SidebarsUsage, 'files'>;
10
+ export declare const getSidebarsUsage: Collector;
11
+ export {};
12
+ //# sourceMappingURL=get-sidebars-usage.d.ts.map
@@ -0,0 +1 @@
1
+ import{isObject as r}from"../../../../utils/guards/is-object.js";function n(t){const s={filesWithTabs:0,tabs:0,menuTabs:0,menuEntries:0};if(!Array.isArray(t))return s;const e=t.filter(a=>r(a)&&typeof a.tab=="string");if(!e.length)return s;s.filesWithTabs=1,s.tabs=e.length;for(const a of e)Array.isArray(a.menu)&&(s.menuTabs+=1,s.menuEntries+=a.menu.length);return s}const b=async({context:t})=>{const s={files:0,filesWithTabs:0,tabs:0,menuTabs:0,menuEntries:0};for(const e of t.fs.scan(/sidebars\.yaml$/)){if(e.isVirtual||await t.isPathIgnored(e.relativePath))continue;s.files+=1;const{data:a}=await t.cache.load(e.relativePath,"yaml"),i=n(a);s.filesWithTabs+=i.filesWithTabs,s.tabs+=i.tabs,s.menuTabs+=i.menuTabs,s.menuEntries+=i.menuEntries}return{version:"1",name:"sidebarsUsage",value:JSON.stringify(s)}};export{b as getSidebarsUsage,n as summarizeSidebarFile};
@@ -1 +1 @@
1
- import y from"node:path";import{unlink as R}from"node:fs/promises";import{writeFileSync as T}from"node:fs";import{envConfig as h}from"../../server/config/env-config.js";import{PORTAL_VERSION as A}from"../../server/version.js";import{logger as e}from"../../server/tools/notifiers/logger.js";import{reporter as f}from"../../server/tools/notifiers/reporter.js";import{shutdowner as O}from"../../server/tools/shutdowner.js";import{promiseMapLimit as D}from"../../server/utils/async/promise-map-limit.js";import{validateReactPages as E}from"../../server/plugins/pages/validators/validate-react-pages.js";import{ensureDir as S}from"../../server/utils/index.js";import{initPlugins as M,runPlugins as j,writeClientEntries as x}from"../../server/plugins/lifecycle.js";import{createClientCompiler as L,createNodeBundleCompiler as J}from"../../server/esbuild/esbuild.js";import{validateAllMarkdowns as k}from"../../server/plugins/markdown/compiler.js";import{copyEnvFiles as F}from"./copy-env-files.js";import{EsbuildError as s,esbuildLogger as d}from"../../server/esbuild/esbuild-logger.js";import{reportAllErrors as U}from"../../server/utils/report-all-errors.js";import{collectAnalytics as z}from"./analytics/collect-analytics.js";import{copyMigrationsFolder as N}from"../../server/providers/database/copy-migrations.js";import{telemetry as c}from"../telemetry/index.js";import{telemetryTraceStep as m}from"../telemetry/helpers/trace-step.js";async function li(v,i){c.initialize(A),e.info("Starting project build.");const C=e.startTiming();await m("com.redocly.build.start",async P=>{x(i);const p=await L(i,i.outdir,"production"),u=await J(i,i.serverOutDir,"production");let o,g;try{await m("com.redocly.build.clientCompilation",async()=>{const l=e.startTiming(),n=await p.rebuild().catch(a=>{throw new s(a)});Array.isArray(n.warnings)&&d(new s({warnings:n.warnings}));const r=e.infoTime(l,"Client JavaScript compiled");r&&c.sendTimingPerformedMessage([{id:"buildStep",object:"timing",uri:"urn:redocly:realm:cli:timing:buildStep",...r}])}),await m("com.redocly.build.serverCompilation",async()=>{const l=e.startTiming(),n=await u.rebuild().catch(a=>{throw new s(a)});Array.isArray(n.warnings)&&d(new s({warnings:n.warnings}));const r=e.infoTime(l,"Server JavaScript compiled");r&&c.sendTimingPerformedMessage([{id:"buildStep",object:"timing",uri:"urn:redocly:realm:cli:timing:buildStep",message:r.message,timeMs:r.timeMs}])}),await i.reloadMarkdocOptions();let t;({pluginInstances:t,lifecycleContext:o}=await M({outdir:i.outdir,serverOutDir:i.serverOutDir,contentDir:i.contentDir,devLogin:v.devLogin,setGlobalConfig:i.setGlobalConfig})),o.fs.dispose(),i.lifecycleContext=o,N(i),await j(t,i,o),g=z(i,o),await m("com.redocly.build.clientServerRecompile",async()=>{const l=e.startTiming();e.info("Re-compiling JavaScript with user code"),(await Promise.all([p.rebuild(),u.rebuild()]).catch(a=>{throw new s(a)})).forEach(({warnings:a})=>{Array.isArray(a)&&d(new s({warnings:a}))});const r=e.infoTime(l,"JavaScript re-compiled");r&&c.sendTimingPerformedMessage([{id:"buildStep",object:"timing",uri:"urn:redocly:realm:cli:timing:buildStep",...r}])}),await m("com.redocly.build.pagesValidation",async()=>{await E(i,o),await k(i,o)}),await U(o),i.markUserCodeReady()}catch(t){P?.error(t),t instanceof s&&await d(t),await f.panic(t instanceof Error?t:String(t))}finally{g&&await g.catch(()=>{}),await p.dispose(),await u.dispose()}f.printErrors(),e.info("Rendering pages..."),await m("com.redocly.build.prepareStaticData",async t=>{const l=e.startTiming(),n=[...i.getAllRoutes(),...i.getAllApiRoutes()];t?.setAttribute("totalRoutes",n.length.toString()),await D(n,15,a=>i.writeRouteStaticData(a,o));const r=e.successTime(l,"Page static data prepared.");r&&c.sendTimingPerformedMessage([{id:"buildStep",object:"timing",uri:"urn:redocly:realm:cli:timing:buildStep",...r}])}),await m("com.redocly.build.storeSerialization",async()=>{const t=e.startTiming();S(i.serverOutDir),T(y.join(i.serverOutDir,"store.json"),JSON.stringify(await i.toJson())),e.successTime(t,"Store serialized and written."),F(i)});const w=h.REDOCLY_PROBLEMS_OUTPUT_FILE;if(w){const t=e.startTiming();T(S(w),JSON.stringify(f.getProblems()),"utf-8"),e.successTime(t,"Broken links written.")}await R(y.join(i.serverOutDir,"index.css"));const b=e.successTime(C,"All done");b&&c.sendTimingPerformedMessage([{id:"buildStep",object:"timing",uri:"urn:redocly:realm:cli:timing:buildStep",...b}])}),await O.exitWithCode(0)}export{li as build};
1
+ import w from"node:path";import{unlink as C}from"node:fs/promises";import{writeFileSync as P}from"node:fs";import{PORTAL_VERSION as R}from"../../server/version.js";import{logger as e}from"../../server/tools/notifiers/logger.js";import{reporter as b}from"../../server/tools/notifiers/reporter.js";import{shutdowner as h}from"../../server/tools/shutdowner.js";import{promiseMapLimit as A}from"../../server/utils/async/promise-map-limit.js";import{validateReactPages as D}from"../../server/plugins/pages/validators/validate-react-pages.js";import{ensureDir as j}from"../../server/utils/index.js";import{initPlugins as E,runPlugins as M,writeClientEntries as O}from"../../server/plugins/lifecycle.js";import{createClientCompiler as x,createNodeBundleCompiler as L}from"../../server/esbuild/esbuild.js";import{validateAllMarkdowns as k}from"../../server/plugins/markdown/compiler.js";import{copyEnvFiles as J}from"./copy-env-files.js";import{EsbuildError as m,esbuildLogger as d}from"../../server/esbuild/esbuild-logger.js";import{reportAllErrors as z}from"../../server/utils/report-all-errors.js";import{writeProblemsReport as F}from"../../server/utils/write-problems-report.js";import{collectAnalytics as N}from"./analytics/collect-analytics.js";import{copyMigrationsFolder as U}from"../../server/providers/database/copy-migrations.js";import{telemetry as c}from"../telemetry/index.js";import{telemetryTraceStep as s}from"../telemetry/helpers/trace-step.js";async function li(y,i){c.initialize(R),e.info("Starting project build."),i.devLogin=y.devLogin===!0;const T=e.startTiming();await s("com.redocly.build.start",async S=>{O(i);const p=await x(i,i.outdir,"production"),u=await L(i,i.serverOutDir,"production");let o,g;try{await s("com.redocly.build.clientCompilation",async()=>{const l=e.startTiming(),n=await p.rebuild().catch(a=>{throw new m(a)});Array.isArray(n.warnings)&&d(new m({warnings:n.warnings}));const r=e.infoTime(l,"Client JavaScript compiled");r&&c.sendTimingPerformedMessage([{id:"buildStep",object:"timing",uri:"urn:redocly:realm:cli:timing:buildStep",...r}])}),await s("com.redocly.build.serverCompilation",async()=>{const l=e.startTiming(),n=await u.rebuild().catch(a=>{throw new m(a)});Array.isArray(n.warnings)&&d(new m({warnings:n.warnings}));const r=e.infoTime(l,"Server JavaScript compiled");r&&c.sendTimingPerformedMessage([{id:"buildStep",object:"timing",uri:"urn:redocly:realm:cli:timing:buildStep",message:r.message,timeMs:r.timeMs}])}),await i.reloadMarkdocOptions();let t;({pluginInstances:t,lifecycleContext:o}=await E({outdir:i.outdir,serverOutDir:i.serverOutDir,contentDir:i.contentDir,devLogin:i.devLogin,setGlobalConfig:i.setGlobalConfig})),o.fs.dispose(),i.lifecycleContext=o,U(i),await M(t,i,o),g=N(i,o),await s("com.redocly.build.clientServerRecompile",async()=>{const l=e.startTiming();e.info("Re-compiling JavaScript with user code"),(await Promise.all([p.rebuild(),u.rebuild()]).catch(a=>{throw new m(a)})).forEach(({warnings:a})=>{Array.isArray(a)&&d(new m({warnings:a}))});const r=e.infoTime(l,"JavaScript re-compiled");r&&c.sendTimingPerformedMessage([{id:"buildStep",object:"timing",uri:"urn:redocly:realm:cli:timing:buildStep",...r}])}),await s("com.redocly.build.pagesValidation",async()=>{await D(i,o),await k(i,o)}),await z(o),i.markUserCodeReady()}catch(t){S?.error(t),t instanceof m&&await d(t),await b.panic(t instanceof Error?t:String(t))}finally{g&&await g.catch(()=>{}),await p.dispose(),await u.dispose()}b.printErrors(),e.info("Rendering pages..."),await s("com.redocly.build.prepareStaticData",async t=>{const l=e.startTiming(),n=[...i.getAllRoutes(),...i.getAllApiRoutes()];t?.setAttribute("totalRoutes",n.length.toString()),await A(n,15,a=>i.writeRouteStaticData(a,o));const r=e.successTime(l,"Page static data prepared.");r&&c.sendTimingPerformedMessage([{id:"buildStep",object:"timing",uri:"urn:redocly:realm:cli:timing:buildStep",...r}])}),await s("com.redocly.build.storeSerialization",async()=>{const t=e.startTiming();j(i.serverOutDir),P(w.join(i.serverOutDir,"store.json"),JSON.stringify(await i.toJson())),e.successTime(t,"Store serialized and written."),J(i)});const v=e.startTiming();F()&&e.successTime(v,"Broken links written."),await C(w.join(i.serverOutDir,"index.css"));const f=e.successTime(T,"All done");f&&c.sendTimingPerformedMessage([{id:"buildStep",object:"timing",uri:"urn:redocly:realm:cli:timing:buildStep",...f}])}),await h.exitWithCode(0)}export{li as build};
@@ -1 +1 @@
1
- import{logger as t}from"../server/tools/notifiers/logger.js";import{reporter as c}from"../server/tools/notifiers/reporter.js";import{green as v}from"../server/tools/notifiers/helpers/colors.js";import{envConfig as m}from"../server/config/env-config.js";import{resolveCache as w}from"../server/esbuild/plugins/themes-resolver.js";import{getBilledPagesCount as p}from"../server/utils/index.js";import{createClientCompiler as C,createServerCompiler as S}from"../server/esbuild/esbuild.js";import{initPlugins as R,runPlugins as f,writeClientEntries as h}from"../server/plugins/lifecycle.js";import{startDevServer as E}from"../server/web-server/dev-server.js";import{validateAllMarkdowns as b}from"../server/plugins/markdown/compiler.js";import{reportAllErrors as g}from"../server/utils/report-all-errors.js";import{copyMigrationsFolder as y}from"../server/providers/database/copy-migrations.js";import{listenStdin as L}from"./utils/listen-stdin.js";async function q(e,i){t.info("Starting project preview mode."),h(i),t.startTiming("initial-js"),await D(i),t.infoTime("initial-js","JavaScript compiled");const{pluginInstances:l,lifecycleContext:n}=await R({contentDir:i.contentDir,outdir:i.outdir,serverOutDir:void 0,devLogin:e["dev-login"]!==!1,setGlobalConfig:i.setGlobalConfig});i.lifecycleContext=n,y(i),await f(l,i,n,{failFast:!0});const d=async()=>{const r=performance.now();c.clearErrors(),await f(l,i,n),m.REDOCLY_EXP_DISABLE_MD_VALIDATION?t.info("Skipping markdown validation step"):await b(i,n),P().then(async()=>{await g(n);const a=p(i.getAllRoutes()),o=c.summary(` \u{1F440} Last change processed in ${v(Math.round(performance.now()-r)+"ms")}`,a);i.runListeners("errors-updated",void 0,o),i.runListeners("pages-updated",void 0,a),i.runListeners("routes-updated")})};m.REDOCLY_EXP_DISABLE_MD_VALIDATION?t.info("Skipping markdown validation step"):await b(i,n),await g(n);const s=p(i.getAllRoutes());c.summary(" \u{1F440} Watching for changes...",s),i.runListeners("pages-updated",void 0,s),n.fs.watch(async()=>{w.clear(),await d()}),t.verbose("Starting development server."),await E(i,n,{port:Number(e.port||4e3)}),L()}async function D(e){let i=!0,l=!0;const n=async r=>{r==="client"?i=!0:l=!0,e.runListeners("build-started");const a=i!=l;a&&e.startEsbuildRun(),e.buildRevision>0&&await e.waitForPluginsRun(),r!=="client"&&e.noteRequestHandlersEntryBuildStart(),a&&t.startTiming("rebuild")},d=async r=>{r==="client"?i=!1:(l=!1,e.markRequestHandlersEntryUpdated()),!(i||l)&&(e.finishEsbuildRun(),e.buildRevision++,t.infoTime("rebuild","JavaScript re-compiled"),await e.reloadMarkdocOptions(),e.markUserCodeReady(),e.runListeners("build-updated"),e.lifecycleContext&&e.buildRevision>1&&e.lifecycleContext.fs.emitCodeUpdated())},s=[new Promise((r,a)=>{const o={label:"client",buildStart(){t.verbose("Start compiling client code."),t.startTiming(this.label)},buildEnd(){t.verboseTime(this.label,"Client compiled"),r(!0)},rebuildStart:()=>n("client"),rebuildEnd:()=>d("client")};C(e,e.outdir,"development",o).then(u=>u.watch()).catch(a)}),new Promise((r,a)=>{const o={label:"server",buildStart(){t.verbose("Start compiling server code."),t.startTiming(this.label)},buildEnd(){t.verboseTime(this.label,"Server compiled"),r(!0)},rebuildStart:()=>n("server"),rebuildEnd:()=>d("server")};S(e,e.serverOutDir,"development",o).then(u=>u.watch()).catch(a)})];await Promise.all(s),await e.reloadMarkdocOptions()}function P(){return new Promise(e=>{setTimeout(e,0)})}export{q as develop};
1
+ import{logger as t}from"../server/tools/notifiers/logger.js";import{reporter as c}from"../server/tools/notifiers/reporter.js";import{green as v}from"../server/tools/notifiers/helpers/colors.js";import{envConfig as m}from"../server/config/env-config.js";import{resolveCache as w}from"../server/esbuild/plugins/themes-resolver.js";import{getBilledPagesCount as p}from"../server/utils/index.js";import{createClientCompiler as C,createServerCompiler as S}from"../server/esbuild/esbuild.js";import{initPlugins as R,runPlugins as f,writeClientEntries as h}from"../server/plugins/lifecycle.js";import{startDevServer as E}from"../server/web-server/dev-server.js";import{validateAllMarkdowns as g}from"../server/plugins/markdown/compiler.js";import{reportAllErrors as b}from"../server/utils/report-all-errors.js";import{copyMigrationsFolder as y}from"../server/providers/database/copy-migrations.js";import{listenStdin as L}from"./utils/listen-stdin.js";async function q(i,e){t.info("Starting project preview mode."),e.devLogin=i["dev-login"]!==!1,h(e),t.startTiming("initial-js"),await D(e),t.infoTime("initial-js","JavaScript compiled");const{pluginInstances:l,lifecycleContext:n}=await R({contentDir:e.contentDir,outdir:e.outdir,serverOutDir:void 0,devLogin:e.devLogin,setGlobalConfig:e.setGlobalConfig});e.lifecycleContext=n,y(e),await f(l,e,n,{failFast:!0});const d=async()=>{const r=performance.now();c.clearErrors(),await f(l,e,n),m.REDOCLY_EXP_DISABLE_MD_VALIDATION?t.info("Skipping markdown validation step"):await g(e,n),P().then(async()=>{await b(n);const a=p(e.getAllRoutes()),o=c.summary(` \u{1F440} Last change processed in ${v(Math.round(performance.now()-r)+"ms")}`,a);e.runListeners("errors-updated",void 0,o),e.runListeners("pages-updated",void 0,a),e.runListeners("routes-updated")})};m.REDOCLY_EXP_DISABLE_MD_VALIDATION?t.info("Skipping markdown validation step"):await g(e,n),await b(n);const s=p(e.getAllRoutes());c.summary(" \u{1F440} Watching for changes...",s),e.runListeners("pages-updated",void 0,s),n.fs.watch(async()=>{w.clear(),await d()}),t.verbose("Starting development server."),await E(e,n,{port:Number(i.port||4e3)}),L()}async function D(i){let e=!0,l=!0;const n=async r=>{r==="client"?e=!0:l=!0,i.runListeners("build-started");const a=e!=l;a&&i.startEsbuildRun(),i.buildRevision>0&&await i.waitForPluginsRun(),r!=="client"&&i.noteRequestHandlersEntryBuildStart(),a&&t.startTiming("rebuild")},d=async r=>{r==="client"?e=!1:(l=!1,i.markRequestHandlersEntryUpdated()),!(e||l)&&(i.finishEsbuildRun(),i.buildRevision++,t.infoTime("rebuild","JavaScript re-compiled"),await i.reloadMarkdocOptions(),i.markUserCodeReady(),i.runListeners("build-updated"),i.lifecycleContext&&i.buildRevision>1&&i.lifecycleContext.fs.emitCodeUpdated())},s=[new Promise((r,a)=>{const o={label:"client",buildStart(){t.verbose("Start compiling client code."),t.startTiming(this.label)},buildEnd(){t.verboseTime(this.label,"Client compiled"),r(!0)},rebuildStart:()=>n("client"),rebuildEnd:()=>d("client")};C(i,i.outdir,"development",o).then(u=>u.watch()).catch(a)}),new Promise((r,a)=>{const o={label:"server",buildStart(){t.verbose("Start compiling server code."),t.startTiming(this.label)},buildEnd(){t.verboseTime(this.label,"Server compiled"),r(!0)},rebuildStart:()=>n("server"),rebuildEnd:()=>d("server")};S(i,i.serverOutDir,"development",o).then(u=>u.watch()).catch(a)})];await Promise.all(s),await i.reloadMarkdocOptions()}function P(){return new Promise(i=>{setTimeout(i,0)})}export{q as develop};
@@ -1 +1 @@
1
- import*as c from"path";import{DEFAULT_THEME_NAME as i,USER_THEME_ALIAS as k}from"../../constants/common.js";import{logger as y}from"../../server/tools/notifiers/logger.js";import{reporter as T}from"../../server/tools/notifiers/reporter.js";import{resolveTheme as A}from"./resolveTheme.js";import{EntitlementsProvider as F}from"../../server/entitlements/entitlements-provider.js";const L=["markdoc/attributes/code-walkthrough-filesets.ts","markdoc/attributes/code-walkthrough-filters.ts","markdoc/components/CodeWalkthrough/**","markdoc/tags/code-step.ts","markdoc/tags/code-toggle.ts","markdoc/tags/code-walkthrough.ts"],m=["./core/**","./markdoc/**/default.*","**/__mocks__/**","**/index.*","**/utils/**/*","**/__tests__/**/*","**/__snapshots__/**/*","**/*.stories.*","**/variables.*",...L],v=["./components/CatalogClassic/CatalogClassicCard.*","./components/ColorModeSwitcher/**","./components/ReplayGate/**","./components/ReplayTopBarActions/**","./components/Feedback/**","./components/Filter/**","./components/Footer/**","./components/LanguagePicker/**","./components/Menu/**","./components/Navbar/**","./components/PageNavigation/**","./components/Product/**","./components/Search/**","./components/UserMenu/**","./layouts/RootLayout.*","./layouts/NotFound.*","./layouts/Forbidden.*","./layouts/DocumentationLayoutTop.*","./layouts/DocumentationLayoutBottom.*","./icons/**","./markdoc/**","./ext/**"];async function C(t){const[p,r]=t._,{theme:l,force:d,onSuccess:u,onError:g,onOverride:h,config:E}=t,_=F.instance(),s=c.resolve(t["project-dir"]);let o=l;o||(o=i);const n=await A(s,E.plugins||[],o,r);n||await T.panicOnContentError(`Theme ${o} not found. Skipping eject.`);const e=n?.config.ejectIgnore;e&&!Array.isArray(e)&&y.warn("'ejectIgnore' must be of type Array. Skipping.");const a=await _.getPackageEjectIgnore(),f={force:d,onSuccess:u,onError:g,onOverride:h,onlyFiles:o===i?v:void 0,ignoreFiles:Array.isArray(e)?[...e,...a,...m]:[...a,...m]};return{objectType:p,pathToThemeFolder:n?.pluginDirAbsolutePath,pathToPortalCustomThemeFolder:c.resolve(s,k),componentToEject:r,theme:o,options:f}}export{m as DEFAULT_IGNORED_FILES,v as EJECTABLE_FILES,C as default};
1
+ import*as c from"path";import{DEFAULT_THEME_NAME as i,USER_THEME_ALIAS as f}from"../../constants/common.js";import{logger as k}from"../../server/tools/notifiers/logger.js";import{reporter as T}from"../../server/tools/notifiers/reporter.js";import{resolveTheme as A}from"./resolveTheme.js";import{EntitlementsProvider as F}from"../../server/entitlements/entitlements-provider.js";const v=["markdoc/attributes/code-walkthrough-filesets.ts","markdoc/attributes/code-walkthrough-filters.ts","markdoc/components/CodeWalkthrough/**","markdoc/tags/code-step.ts","markdoc/tags/code-toggle.ts","markdoc/tags/code-walkthrough.ts"],m=["./core/**","./markdoc/**/default.*","**/__mocks__/**","**/index.*","**/utils/**/*","**/__tests__/**/*","**/__snapshots__/**/*","**/*.stories.*","**/variables.*",...v],L=["./components/CatalogClassic/CatalogClassicCard.*","./components/ColorModeSwitcher/**","./components/ReplayGate/**","./components/ReplaySecuritySchemeActions/**","./components/ReplayTopBarActions/**","./components/Feedback/**","./components/Filter/**","./components/Footer/**","./components/LanguagePicker/**","./components/Menu/**","./components/Navbar/**","./components/PageNavigation/**","./components/Product/**","./components/Search/**","./components/NavigationTabs/**","./components/UserMenu/**","./layouts/RootLayout.*","./layouts/NotFound.*","./layouts/Forbidden.*","./layouts/DocumentationLayoutTop.*","./layouts/DocumentationLayoutBottom.*","./icons/**","./markdoc/**","./ext/**"];async function S(t){const[p,r]=t._,{theme:l,force:u,onSuccess:d,onError:g,onOverride:h,config:E}=t,_=F.instance(),s=c.resolve(t["project-dir"]);let o=l;o||(o=i);const n=await A(s,E.plugins||[],o,r);n||await T.panicOnContentError(`Theme ${o} not found. Skipping eject.`);const e=n?.config.ejectIgnore;e&&!Array.isArray(e)&&k.warn("'ejectIgnore' must be of type Array. Skipping.");const a=await _.getPackageEjectIgnore(),y={force:u,onSuccess:d,onError:g,onOverride:h,onlyFiles:o===i?L:void 0,ignoreFiles:Array.isArray(e)?[...e,...a,...m]:[...a,...m]};return{objectType:p,pathToThemeFolder:n?.pluginDirAbsolutePath,pathToPortalCustomThemeFolder:c.resolve(s,f),componentToEject:r,theme:o,options:y}}export{m as DEFAULT_IGNORED_FILES,L as EJECTABLE_FILES,S as default};
@@ -1 +1 @@
1
- function t(e){return e.length===0?e:`${e[0]?.toUpperCase()}${e.slice(1)}`}function c(e){return e.length===0?e:`${e[0]?.toLowerCase()}${e.slice(1)}`.replace(/[\W_]+(.)/g,(a,r)=>r.toUpperCase()).replace(/[\W_]/g,"")}function l(e){return/^[a-z][A-Za-z0-9]*$/.test(e)}export{c as camelCase,t as capitalize,l as isCamelCaseAlphaNumeric};
1
+ function t(e){return e.length===0?e:`${e[0]?.toUpperCase()}${e.slice(1)}`}function c(e){return e.length===0?e:`${e[0]?.toLowerCase()}${e.slice(1)}`.replace(/(?<![\W_])[\W_]+(.)/g,(a,r)=>r.toUpperCase()).replace(/[\W_]/g,"")}function l(e){return/^[a-z][A-Za-z0-9]*$/.test(e)}export{c as camelCase,t as capitalize,l as isCamelCaseAlphaNumeric};
@@ -1 +1 @@
1
- import{isRedocExtension as S}from"@redocly/api-docs/lib/utils/extract-extensions.js";import{REDOCLY_TEAMS_RBAC as O}from"@redocly/config";import{isRef as m}from"@redocly/openapi-core";const u=40,g=20,R=20,f="$value",h="$keys",E="<truncated>",a="<masked>",x=new Set(["x-metadata","x-enumDescriptions","x-webhooks","x-examples"]),d="x-rbac",P=/key|token|secret|password|credential|session|bearer|auth|email|phone|contact|url|uri|host|domain|address|location/i,j=/^(?=.*\d)[A-Za-z0-9+/=_-]{16,}$/,_=/\S@\S+\.\S/,y=/:\/\//;function K(t){const n={enter(r,o){if(m(o.parent))return;const s=o.key.toString();S(s)&&A(t,s,r)}};return{any:{enter(r){if(!i(r))return;const o=r[O];o!==void 0&&A(t,d,o)}},SpecExtension:n,XCodeSampleList:n,ExamplesMap:n,EnumDescriptions:n,TagGroups:n,Logo:n,XServerList:n,XUsePkce:n,WebhooksMap:n}}function w(t){const n=Object.fromEntries(Object.entries(t).map(([e,{count:r,props:o}])=>[e,{count:r,props:Object.fromEntries(Object.entries(o).map(([s,c])=>[s,[...c].sort().join(", ")]))}]));return Object.keys(n).length>0?n:void 0}function A(t,n,e){const r=t[n]??={count:0,props:{}};if(r.count++,n===d){L(r.props,e);return}if(x.has(n)){l(r.props,e);return}for(const[o,s]of k(e)){const c=P.test(o)?a:b(s);p(r.props,T(o),c)}}function l(t,n){if(i(n))for(const[e,r]of Object.entries(n))p(t,h,`${N(e)}:${X(r)}`)}function L(t,n){if(i(n))for(const e of Object.values(n))p(t,f,b(e))}function X(t){return t===null?"null":Array.isArray(t)?"array":typeof t}function k(t){return i(t)?Object.entries(t):Array.isArray(t)?t.flatMap(n=>i(n)?Object.entries(n):[[f,n]]):[[f,t]]}function b(t){return t===null?"<null>":typeof t=="boolean"||typeof t=="number"?String(t):typeof t=="string"?j.test(t)||_.test(t)||y.test(t)?a:t.length<=u?t:`<string:${t.length}>`:Array.isArray(t)?`<array:${t.length}>`:i(t)?"$ref"in t?"<ref>":"<object>":"<unknown>"}function N(t){return _.test(t)||y.test(t)?a:t.length<=u?t:`<string:${t.length}>`}function p(t,n,e){!(n in t)&&Object.keys(t).length>=R&&(n=E),M(t[n]??=new Set,e)}function M(t,n){t.has(n)||t.has(E)||t.add(t.size>=g?E:n)}function T(t){return t.replace(/\./g,"_").replace(/([a-z0-9])([A-Z])/g,"$1_$2").toLowerCase()}function i(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}export{K as createExtensionsVisitor,w as toCollectedExtensions};
1
+ import{isRedocExtension as O}from"@redocly/api-docs/lib/utils/extract-extensions.js";import{REDOCLY_TEAMS_RBAC as l}from"@redocly/config";import{isRef as m}from"@redocly/openapi-core";const p=40,S=20,g=20,f="$value",x="$keys",a="<truncated>",E="<masked>",h=new Set(["x-metadata","x-enumDescriptions","x-webhooks","x-examples"]),d="x-rbac",R=/key|token|secret|password|credential|session|bearer|auth|email|phone|contact|url|uri|host|domain|address|location/i,P=/^(?=.*\d)[A-Za-z0-9+/=_-]{16,}$/,_=/:\/\//;function y(n){for(const t of n.split(/\s/)){const e=t.indexOf("@",1);if(e===-1)continue;const r=t.indexOf(".",e+2);if(r!==-1&&r<=t.length-2)return!0}return!1}function K(n){const t={enter(r,o){if(m(o.parent))return;const s=o.key.toString();O(s)&&b(n,s,r)}};return{any:{enter(r){if(!i(r))return;const o=r[l];o!==void 0&&b(n,d,o)}},SpecExtension:t,XCodeSampleList:t,ExamplesMap:t,EnumDescriptions:t,TagGroups:t,Logo:t,XServerList:t,XUsePkce:t,WebhooksMap:t}}function w(n){const t=Object.fromEntries(Object.entries(n).map(([e,{count:r,props:o}])=>[e,{count:r,props:Object.fromEntries(Object.entries(o).map(([s,c])=>[s,[...c].sort().join(", ")]))}]));return Object.keys(t).length>0?t:void 0}function b(n,t,e){const r=n[t]??={count:0,props:{}};if(r.count++,t===d){k(r.props,e);return}if(h.has(t)){j(r.props,e);return}for(const[o,s]of N(e)){const c=R.test(o)?E:A(s);u(r.props,$(o),c)}}function j(n,t){if(i(t))for(const[e,r]of Object.entries(t))u(n,x,`${X(e)}:${L(r)}`)}function k(n,t){if(i(t))for(const e of Object.values(t))u(n,f,A(e))}function L(n){return n===null?"null":Array.isArray(n)?"array":typeof n}function N(n){return i(n)?Object.entries(n):Array.isArray(n)?n.flatMap(t=>i(t)?Object.entries(t):[[f,t]]):[[f,n]]}function A(n){return n===null?"<null>":typeof n=="boolean"||typeof n=="number"?String(n):typeof n=="string"?P.test(n)||y(n)||_.test(n)?E:n.length<=p?n:`<string:${n.length}>`:Array.isArray(n)?`<array:${n.length}>`:i(n)?"$ref"in n?"<ref>":"<object>":"<unknown>"}function X(n){return y(n)||_.test(n)?E:n.length<=p?n:`<string:${n.length}>`}function u(n,t,e){!(t in n)&&Object.keys(n).length>=g&&(t=a),T(n[t]??=new Set,e)}function T(n,t){n.has(t)||n.has(a)||n.add(n.size>=S?a:t)}function $(n){return n.replace(/\./g,"_").replace(/([a-z0-9])([A-Z])/g,"$1_$2").toLowerCase()}function i(n){return typeof n=="object"&&n!==null&&!Array.isArray(n)}export{K as createExtensionsVisitor,w as toCollectedExtensions};
@@ -1 +1 @@
1
- const i="TranslationKey",u=async({getConfig:e,cache:t,fs:s})=>{const a=await e(),n=r(a),o=s.scan(/.*sidebars.yaml$/),c=await Promise.all(o.map(f=>t.load(f.relativePath,"yaml").then(d=>d.data)));return{...r(c),...n}},r=e=>{let t={};if(!e)return{};if(Array.isArray(e))for(const s of e)t={...t,...r(s)};if(typeof e=="object")for(const[s,a]of Object.entries(e))if(s.endsWith(i)&&typeof a=="string"){const n=s.slice(0,i.length*-1),o=e[n];if(!l(n)||!l(a)||!y(o))continue;t[a]=o||""}else t={...t,...r(a)};return t},l=e=>e.trim().length>0,y=e=>e==null||typeof e=="string";export{u as collectConfigTranslations};
1
+ const i="TranslationKey",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*as t from"react";import{Outlet as g,useLocation as h,useNavigate as P}from"react-router";import{useEffect as c,useMemo as u,useState as S,Suspense as D}from"react";import{withoutPathPrefix as T}from"@redocly/theme/core/utils";import{useThemeConfig as v}from"@redocly/theme/core/hooks";import{InternalServerErrorLayout as L}from"@redocly/theme/layouts/InternalServerErrorLayout";import{RootLayout as C}from"@redocly/theme/layouts/RootLayout";import{PageLayout as y}from"@redocly/theme/layouts/PageLayout";import{components as R}from"@redocly/theme/markdoc/default";import{Sidebar as _}from"./app/Sidebar/Sidebar";import{loadAndNavigate as I}from"./app/utils/loadAndNavigate";import{useActions as N}from"./app/Sidebar/useActions";import{useScrollTracker as O}from"./app/hooks/useScrollTracker";import{useAutoScroll as A}from"./app/hooks/useAutoScroll";import{API_DOCS_TEMPLATE_ID as f}from"../constants/common";import{removeTrailingSlash as k}from"../utils/url/remove-trailing-slash";import{removeLeadingSlash as M}from"../utils/url/remove-leading-slash";import*as b from"./app/markdoc/custom-components/index";import{DefaultStyles as x}from"./styling/default-styles";import{ThemeDataProvider as B}from"./providers/theme/ThemeDataProvider";import{PageDataContext as G}from"./providers/page-data/PageDataContext";import{SeoTags as V}from"./app/seo/SeoTags";import{useRouterForLocalLinks as F,useRunningEnvironmentCheck as w}from"./providers/hooks";import{usePageData as U,usePageDataLoader as j}from"./providers/page-data/hooks";import{ErrorBoundary as q}from"./ErrorBoundary";import{ErrorDetails as E,Loader as z}from"./server-entry";import"@styles";import{useRouteChangeTracker as H}from"./app/hooks/useRouteChangeTracker";import{isInIframe as J}from"./utils";import{useL10n as K}from"./app/l10n";import{PostMessageProvider as Q}from"./providers/post-message/PostMessageProvider";import{ScriptLoader as W}from"./ScriptLoader";import{clientRoutes as X}from"./runtime/generated/routes.js";import{DevModeFloatingBar as Y}from"./app/DevModeFloatingBar";import{usePageTimeTracker as Z}from"./app/hooks/usePageTimeTracker";import{useMarkdocRenderer as $}from"./app/hooks/markdown/useMarkdocRenderer";globalThis.__LOADER.markdocComponents={...b,...R};function Be(){const e=j(),[n,a]=S(e),o=h(),m=P();K();const l=t.useMemo(()=>function(){const{palette:s}=v();return t.createElement(x,{palette:s})},[]);c(()=>{e?a(e):I({navigate:m,to:o.pathname+o.search+o.hash}).then(()=>a(z.loadSync(o.pathname)))},[o,m]),F();const r=w();return r?(console.log(r),t.createElement(E,{error:{message:r,name:""}})):n?t.createElement(q,null,t.createElement(G.Provider,{value:e||n},t.createElement(B,null,t.createElement(l,null),t.createElement(Q,{enabled:process.env.NODE_ENV==="development"||J()},t.createElement(g,null))))):null}function ee(){return A(),null}function d(){H(),Z(),O();const e=U(),n=N(),{layout:a}=n,o=u(()=>({layout:a}),[a]),m=process.env.NODE_ENV!=="production",l=globalThis.SSR_OMIT_SUSPENSE,r=$(e?.props?.ast),p=k(e?.slug||"");c(()=>{document.documentElement.classList.add("ready")},[]);const s=u(()=>[f].includes(e?.templateId??"")?{...e?.props,apiOptions:o}:e?.props,[e?.props,e?.templateId,o]);if(e?.props.pagePropGetterError?.message)return m?t.createElement(E,{error:{...e?.props?.pagePropGetterError}}):t.createElement(L,null);if(!!e?.props?.compilationErrors?.length)return e?.Template?t.createElement(e.Template,{pageProps:e?.props,children:r}):null;const i=()=>t.createElement(C,null,e?.templateId!==f&&t.createElement(ee,null),t.createElement(y,{sidebar:t.createElement(_,{layoutControls:n})},t.createElement(V,{seo:e?.props.seo,slug:p}),e?.Template&&s?t.createElement(e.Template,{pageProps:s,children:r}):null),process.env.NODE_ENV!=="production"&&t.createElement(Y,null),t.createElement(W,null));return l?i():t.createElement(D,null,i())}const Ge=[...X.map(e=>({Component:d,path:M(T(e).substring(1)+"/*")})),{Component:d,path:"*"}];export{Be as App,d as Page,Ge as routes};
1
+ import*as o from"react";import{Outlet as g,useLocation as h,useNavigate as P}from"react-router";import{useEffect as i,useMemo as c,useState as S,Suspense as D}from"react";import{withoutPathPrefix as T}from"@redocly/theme/core/utils";import{useThemeConfig as v}from"@redocly/theme/core/hooks";import{InternalServerErrorLayout as L}from"@redocly/theme/layouts/InternalServerErrorLayout";import{RootLayout as C}from"@redocly/theme/layouts/RootLayout";import{Consent as y}from"@redocly/theme/components/Consent/Consent";import{PageLayout as R}from"@redocly/theme/layouts/PageLayout";import{components as _}from"@redocly/theme/markdoc/default";import{Sidebar as I}from"./app/Sidebar/Sidebar";import{loadAndNavigate as N}from"./app/utils/loadAndNavigate";import{useActions as O}from"./app/Sidebar/useActions";import{useScrollTracker as A}from"./app/hooks/useScrollTracker";import{useAutoScroll as b}from"./app/hooks/useAutoScroll";import{API_DOCS_TEMPLATE_ID as u}from"../constants/common";import{removeTrailingSlash as k}from"../utils/url/remove-trailing-slash";import{removeLeadingSlash as M}from"../utils/url/remove-leading-slash";import*as x from"./app/markdoc/custom-components/index";import{DefaultStyles as B}from"./styling/default-styles";import{ThemeDataProvider as G}from"./providers/theme/ThemeDataProvider";import{PageDataContext as V}from"./providers/page-data/PageDataContext";import{SeoTags as F}from"./app/seo/SeoTags";import{useRouterForLocalLinks as w,useRunningEnvironmentCheck as U}from"./providers/hooks";import{usePageData as W,usePageDataLoader as j}from"./providers/page-data/hooks";import{ErrorBoundary as q}from"./ErrorBoundary";import{ErrorDetails as f,Loader as z}from"./server-entry";import"@styles";import{useRouteChangeTracker as H}from"./app/hooks/useRouteChangeTracker";import{useWebMcpTools as J}from"./app/webmcp";import{isInIframe as K}from"./utils";import{useL10n as Q}from"./app/l10n";import{PostMessageProvider as X}from"./providers/post-message/PostMessageProvider";import{ScriptLoader as Y}from"./ScriptLoader";import{clientRoutes as Z}from"./runtime/generated/routes.js";import{DevModeFloatingBar as $}from"./app/DevModeFloatingBar";import{usePageTimeTracker as ee}from"./app/hooks/usePageTimeTracker";import{useMarkdocRenderer as oe}from"./app/hooks/markdown/useMarkdocRenderer";globalThis.__LOADER.markdocComponents={...x,..._};function te(){const{palette:e}=v();return o.createElement(B,{palette:e})}function Ue(){const e=j(),[r,n]=S(e),t=h(),m=P();Q(),i(()=>{e?n(e):N({navigate:m,to:t.pathname+t.search+t.hash}).then(()=>n(z.loadSync(t.pathname)))},[t,m]),w();const a=U();return a?(console.log(a),o.createElement(f,{error:{message:a,name:""}})):r?o.createElement(q,null,o.createElement(V.Provider,{value:e||r},o.createElement(G,null,o.createElement(te,null),o.createElement(X,{enabled:process.env.NODE_ENV==="development"||K()},o.createElement(g,null))))):null}function re(){return b(),null}function E(){H(),ee(),A(),J();const e=W(),r=O(),{layout:n}=r,t=c(()=>({layout:n}),[n]),m=process.env.NODE_ENV!=="production",a=globalThis.SSR_OMIT_SUSPENSE,s=oe(e?.props?.ast),d=k(e?.slug||"");i(()=>{document.documentElement.classList.add("ready")},[]);const l=c(()=>[u].includes(e?.templateId??"")?{...e?.props,apiOptions:t}:e?.props,[e?.props,e?.templateId,t]);if(e?.props.pagePropGetterError?.message)return m?o.createElement(f,{error:{...e?.props?.pagePropGetterError}}):o.createElement(L,null);if(!!e?.props?.compilationErrors?.length)return e?.Template?o.createElement(e.Template,{pageProps:e?.props,children:s}):null;const p=()=>o.createElement(C,null,e?.templateId!==u&&o.createElement(re,null),o.createElement(R,{sidebar:o.createElement(I,{layoutControls:r})},o.createElement(F,{seo:e?.props.seo,slug:d}),e?.Template&&l?o.createElement(e.Template,{pageProps:l,children:s}):null),process.env.NODE_ENV!=="production"&&o.createElement($,null),o.createElement(Y,null),o.createElement(y,null));return a?p():o.createElement(D,null,p())}const We=[...Z.map(e=>({Component:E,path:M(T(e).substring(1)+"/*")})),{Component:E,path:"*"}];export{Ue as App,E as Page,We as routes};
@@ -1,6 +1,8 @@
1
1
  import React from 'react';
2
2
  import type { ResolvedPageData } from '../types/index.js';
3
- export declare function TestProvider({ children, customPageData, }: React.PropsWithChildren<{
3
+ import type { UiAccessibleConfig } from '@redocly/theme/config';
4
+ export declare function TestProvider({ children, customPageData, config, }: React.PropsWithChildren<{
4
5
  customPageData?: Partial<ResolvedPageData>;
6
+ config?: UiAccessibleConfig;
5
7
  }>): React.JSX.Element;
6
8
  //# sourceMappingURL=TestProvider.d.ts.map
@@ -1 +1 @@
1
- import e from"react";import{BrowserRouter as o}from"react-router";import{ThemeDataContext as n,SearchSessionProvider as i}from"@redocly/theme/core/contexts";import u from"@redocly/theme/core/templates/Markdown";import{useAnchorPositioning as m,useBreadcrumbs as d,useBanner as l,useCatalogClassic as c,useCurrentProduct as p,useGlobalData as g,useI18n as h,useI18nConfig as f,useL10n as T,useL10nConfig as b,usePageData as C,usePageSharedData as k,usePageVersions as v,usePreloadHistory as P,useProducts as w,useUserMenu as y,useSubmitFeedback as S,useTranslate as D,useTranslationKeys as $,useSidebarSiblingsData as E,usePageProps as I,useUserTeams as L,useMarkdownText as M,useMarkdocRenderer as x,useCodeHighlight as F,useLoadAndNavigate as H,useCatalog as R,useCatalogSort as A,useCatalogSearch as B,useFetchCatalogEntities as G,useFetchCatalogEntitiesRelations as O,useTelemetry as r,useMcpData as U,useFetchCatalogEntityRevisions as K}from"./app/hooks";import{Link as N}from"./app/Link";import{useFacetQuery as Q,useSearch as V,useAiSearch as j}from"./app/search";import{useSidebarItems as q}from"./app/Sidebar/useSidebarItems";import{PageDataContext as z}from"./providers/page-data/PageDataContext";const s={Template:({pageProps:a,children:t})=>e.createElement(u,{pageProps:{...a,metadata:{...a.metadata,markdoc:{tagList:[]}}}},t),templateId:"markdown",isPublic:!0,props:{seo:{title:"Test"},ast:{$$mdtype:"Tag",name:"div",children:[{$$mdtype:"Tag",name:"Heading",attributes:{id:"github-flavored-markdown",level:1},children:["GitHub-flavored markdown"]},{$$mdtype:"Tag",name:"p",attributes:{},children:["These exercises assume you have",{$$mdtype:"Tag",name:"a",attributes:{href:"https://docs.redoc.ly/"},children:["basic markdown knowledge"]},"."]},{$$mdtype:"Tag",name:"Heading",attributes:{id:"create-a-new-plain-markdown-page",level:2},children:["Create a new plain markdown page"]}]},lastModified:new Date("2022-01-01").toISOString()},slug:"",userData:{isAuthenticated:!1,name:"test name",picture:""},sidebar:null,sharedData:{},sharedDataIds:{}},J={useAnchorPositioning:m,useBreadcrumbs:d,useBanner:l,useCatalog:R,useCatalogSort:A,useCatalogSearch:B,useFetchCatalogEntities:G,useFetchCatalogEntitiesRelations:O,useFetchCatalogEntityRevisions:K,useCatalogClassic:c,useCurrentProduct:p,useGlobalData:g,useSearch:V,useAiSearch:j,useFacetQuery:Q,useI18n:h,useI18nConfig:f,useL10n:T,useL10nConfig:b,usePageData:C,usePageSharedData:k,usePageVersions:v,usePreloadHistory:P,useProducts:w,useUserMenu:y,useSidebarItems:q,useSidebarSiblingsData:E,useSubmitFeedback:S,useTranslate:D,useTranslationKeys:$,useUserTeams:L,usePageProps:I,useMarkdownText:M,useMarkdocRenderer:x,useCodeHighlight:F,useLoadAndNavigate:H,useTelemetry:r,useOtelTelemetry:r,useMcpData:U},W={LinkComponent:N},X={hooks:J,components:W,config:{}};function ne({children:a,customPageData:t}){return e.createElement(o,null,e.createElement(i,null,e.createElement(z.Provider,{value:{...s,...t,props:{...s.props,...t?.props}}},e.createElement(n.Provider,{value:X},a))))}export{ne as TestProvider};
1
+ import e from"react";import{BrowserRouter as i}from"react-router";import{ThemeDataContext as u,SearchSessionProvider as m}from"@redocly/theme/core/contexts";import d from"@redocly/theme/core/templates/Markdown";import{useBreadcrumbs as l,useBanner as c,useConsent as p,useCatalogClassic as g,useCurrentProduct as h,useGlobalData as f,useI18n as T,useI18nConfig as b,useL10n as C,useL10nConfig as k,usePageData as v,usePageSharedData as S,usePageVersions as w,usePreloadHistory as y,useProducts as P,useUserMenu as D,useSubmitFeedback as $,useTranslate as E,useTranslationKeys as F,useSidebarSiblingsData as I,useNavigationTabs as L,usePageProps as M,useUserTeams as x,useMarkdownText as H,useMarkdocRenderer as R,useCodeHighlight as A,useLoadAndNavigate as B,useCatalog as G,useCatalogSort as N,useCatalogSearch as O,useFetchCatalogEntities as U,useFetchCatalogEntitiesRelations as K,useTelemetry as r,useMcpData as Q,useFetchCatalogEntityRevisions as V}from"./app/hooks";import{Link as j}from"./app/Link";import{useFacetQuery as q,useSearch as z,useSearchFeatures as J,useAiSearch as W}from"./app/search";import{useSidebarItems as X}from"./app/Sidebar/useSidebarItems";import{PageDataContext as Y}from"./providers/page-data/PageDataContext";const s={Template:({pageProps:a,children:t})=>e.createElement(d,{pageProps:{...a,metadata:{...a.metadata,markdoc:{tagList:[]}}}},t),templateId:"markdown",isPublic:!0,props:{seo:{title:"Test"},ast:{$$mdtype:"Tag",name:"div",children:[{$$mdtype:"Tag",name:"Heading",attributes:{id:"github-flavored-markdown",level:1},children:["GitHub-flavored markdown"]},{$$mdtype:"Tag",name:"p",attributes:{},children:["These exercises assume you have",{$$mdtype:"Tag",name:"a",attributes:{href:"https://docs.redoc.ly/"},children:["basic markdown knowledge"]},"."]},{$$mdtype:"Tag",name:"Heading",attributes:{id:"create-a-new-plain-markdown-page",level:2},children:["Create a new plain markdown page"]}]},lastModified:new Date("2022-01-01").toISOString()},slug:"",userData:{isAuthenticated:!1,name:"test name",picture:""},sidebar:null,sharedData:{},sharedDataIds:{}},Z={useBreadcrumbs:l,useBanner:c,useConsent:p,useCatalog:G,useCatalogSort:N,useCatalogSearch:O,useFetchCatalogEntities:U,useFetchCatalogEntitiesRelations:K,useFetchCatalogEntityRevisions:V,useCatalogClassic:g,useCurrentProduct:h,useGlobalData:f,useSearch:z,useSearchFeatures:J,useAiSearch:W,useFacetQuery:q,useI18n:T,useI18nConfig:b,useL10n:C,useL10nConfig:k,usePageData:v,usePageSharedData:S,usePageVersions:w,usePreloadHistory:y,useProducts:P,useUserMenu:D,useSidebarItems:X,useSidebarSiblingsData:I,useNavigationTabs:L,useSubmitFeedback:$,useTranslate:E,useTranslationKeys:F,useUserTeams:x,usePageProps:M,useMarkdownText:H,useMarkdocRenderer:R,useCodeHighlight:A,useLoadAndNavigate:B,useTelemetry:r,useOtelTelemetry:r,useMcpData:Q},_={LinkComponent:j},o={hooks:Z,components:_,config:{}};function me({children:a,customPageData:t,config:n}){return e.createElement(i,null,e.createElement(m,null,e.createElement(Y.Provider,{value:{...s,...t,props:{...s.props,...t?.props}}},e.createElement(u.Provider,{value:{...o,config:n??o.config}},a))))}export{me as TestProvider};
@@ -1,3 +1,3 @@
1
- /** @ts-ignore autogenerated module, @see src/server/esbuild/plugins/api-request-handlers-resolver.ts **/
1
+ /** @ts-expect-error autogenerated module, @see src/server/esbuild/plugins/api-request-handlers-resolver.ts **/
2
2
  export { requestHandlers } from '@portal/api-request-handlers';
3
3
  //# sourceMappingURL=api-request-handlers-entry.d.ts.map
@@ -1 +1 @@
1
- import*as s from"react";import u from"path";import{Link as U,useNavigate as z,useLocation as F}from"react-router";import{getPathnameForLocale as M,withPathPrefix as W}from"@redocly/theme/core/utils";import{removeTrailingSlash as I}from"../../utils/url/remove-trailing-slash";import{normalizeRouteSlug as h}from"../../utils/path/normalize-route-slug";import{isAbsoluteUrl as V}from"../../utils/url/is-absolute-url";import{isAssetsLink as j}from"../../utils/path/is-assets-link";import{useL10nConfig as q}from"./hooks/index.js";import{loadAndNavigate as B}from"./utils/loadAndNavigate.js";import{isForcedNavigationLinkClick as G}from"../utils/utils.js";async function g(o,t){if(V(o))return;await(typeof window<"u"?window:global).__LOADER.tryLoad(o,void 0,t)}function oe(o){const{to:t,children:l,className:v,style:a,innerRef:i,target:L,external:c,languageInsensitive:w,onClick:m,active:H,rel:y,reloadDocument:k,preventScrollReset:R,relative:P,viewTransition:C,state:E,replace:N,..._}=o,x=L||(c?"_blank":"_self"),A=c||t.match(/^(https?:\/\/|mailto:)/),f=y||(A?"noreferrer":void 0),n={className:v,children:l,target:x,...f&&{rel:f},onClick:m,..._},{defaultLocale:D,locales:S,currentLocale:b}=q(),O=F();let e=t;e.startsWith(".")&&(e=u.resolve(u.dirname(h(O.pathname)),h(t))),e=e.startsWith("#")?e:W(w?e:M(e,D,b,S));const r=e!=="/"?I(e):e,T=z(),d=typeof window<"u"?new URL(r,window.location.origin+window.location.pathname).search:void 0;return typeof t=="string"&&t.match(/^(https?:\/\/|mailto:)/)?s.createElement("a",{...n,ref:i,style:a,href:t,onMouseOver:async()=>g(t,d)}):j(r)?s.createElement("a",{...n,ref:i,style:a,href:r}):s.createElement(U,{...n,ref:i,style:a,to:r,reloadDocument:k,preventScrollReset:R,relative:P,viewTransition:C,state:E,replace:N,onClick:p=>{m?.(),!G(p,n.target)&&(p.preventDefault(),B({navigate:T,to:r}))},onMouseOver:async()=>g(r,d)})}export{oe as Link};
1
+ import*as l from"react";import d from"path";import{Link as U,useNavigate as z,useLocation as F}from"react-router";import{getPathnameForLocale as M,withPathPrefix as W}from"@redocly/theme/core/utils";import{removeTrailingSlash as I}from"../../utils/url/remove-trailing-slash";import{normalizeRouteSlug as h}from"../../utils/path/normalize-route-slug";import{isAbsoluteUrl as V}from"../../utils/url/is-absolute-url";import{isAssetsLink as j}from"../../utils/path/is-assets-link";import{useL10nConfig as q}from"./hooks/index.js";import{loadAndNavigate as B}from"./utils/loadAndNavigate.js";import{isForcedNavigationLinkClick as G}from"../utils/utils.js";async function g(o,t){if(V(o))return;await(typeof window<"u"?window:global).__LOADER.tryLoad(o,void 0,t)}function oe(o){const{to:t,children:n,className:v,style:i,innerRef:s,target:L,external:c,languageInsensitive:w,onClick:m,active:H,rel:y,reloadDocument:k,preventScrollReset:R,relative:P,viewTransition:C,state:E,replace:N,..._}=o,x=L||(c?"_blank":"_self"),A=c||t.match(/^(https?:\/\/|mailto:)/),f=y||(A?"noreferrer":void 0),a={className:v,target:x,...f&&{rel:f},onClick:m,..._},{defaultLocale:D,locales:S,currentLocale:b}=q(),O=F();let e=t;e.startsWith(".")&&(e=d.resolve(d.dirname(h(O.pathname)),h(t))),e=e.startsWith("#")?e:W(w?e:M(e,D,b,S));const r=e!=="/"?I(e):e,T=z(),p=typeof window<"u"?new URL(r,window.location.origin+window.location.pathname).search:void 0;return typeof t=="string"&&t.match(/^(https?:\/\/|mailto:)/)?l.createElement("a",{...a,ref:s,style:i,href:t,onMouseOver:async()=>g(t,p)},n):j(r)?l.createElement("a",{...a,ref:s,style:i,href:r},n):l.createElement(U,{...a,ref:s,style:i,to:r,reloadDocument:k,preventScrollReset:R,relative:P,viewTransition:C,state:E,replace:N,onClick:u=>{m?.(),!G(u,a.target)&&(u.preventDefault(),B({navigate:T,to:r}))},onMouseOver:async()=>g(r,p)},n)}export{oe as Link};
@@ -1,5 +1,5 @@
1
- import g,{useCallback as m,useEffect as b,useMemo as E,useRef as y}from"react";import{safeLoad as w,Kind as v}from"yaml-ast-parser";import{Helmet as N}from"@dr.pogodin/react-helmet";import{Source as P}from"@redocly/openapi-core";import{isBrowser as h}from"../../../utils/env/is-browser";import{usePageSharedData as k}from"../../providers/page-data/hooks";import{usePostMessage as S}from"../../providers/post-message/use-post-message";const f="___selected",A=10,C=h()&&window.location.search.includes("review-comments=true");function L(n){const[s="",i=""]=n.split("#"),[r,e]=i.split("-").map(o=>o.slice(1));return{fileName:s,fromLine:Number(r),toLine:Number(e)||Number(r)}}function O(n,s){Array.from(document.getElementsByClassName(f)).forEach(r=>{r.classList.remove(f)});let i;if(s)i=document.querySelectorAll(`[data-pointer="${s}"]`);else if(n){const{fileName:r,fromLine:e,toLine:o}=L(n);i=Array.from(document.querySelectorAll("[data-source]")).find(a=>{const d=a.attributes.getNamedItem("data-source")?.value||"",{fileName:p,fromLine:c,toLine:t}=L(d);return p===r&&e<=t&&o>=c})}if(i){let r=i,e=r.offsetTop;if(i instanceof NodeList){r=i[0],i.forEach(a=>{a.classList.add(f)});const l=window.pageYOffset||document.documentElement.scrollTop;e=r.getBoundingClientRect().top+l}r.classList.add(f);const o=document.querySelector("nav")?.offsetHeight||0;window.scrollTo({top:e-o-A,behavior:"smooth"})}}function T(n){return decodeURIComponent(n.replace(/~1/g,"/").replace(/~0/g,"~"))}function $(n){return n.substr(2).split("/").map(T)}function M(n,s,i){const r=$(s);if(n===void 0)return;let e=n;for(const o of r)if(e.kind===v.MAP){const l=e.mappings.find(a=>a.key.value===o);if(!l||(e=l,!l?.value))break;e=l.value}else if(e.kind===v.SEQ){const l=e.items[parseInt(o,10)];if(!l)break;e=l}if(i){const o=e.parent;return!o||o.kind===v.SEQ?e:o.kind===v.MAPPING?o.key:e}else return e}function D(n,s,i){let r=1,e=1,o={line:1,col:1};for(let a=0;a<i-1;a++){if(a===s-1&&(o={line:r,col:e+1}),n[a]===`
2
- `){r++,e=1,a===s-1&&(o={line:r,col:e}),n[a+1]==="\r"&&a++;continue}e++}const l=s===i?{...o}:{line:r,col:e+1};return{start:o,end:l}}function I(n){if(n.pointer===void 0)return n;const{source:s,pointer:i,reportOnKey:r}=n,e=s.getAst(w),o=M(e,i,!!r);return{...n,pointer:void 0,...D(s.body,o?.startPosition??1,o?.endPosition??1)}}function Q(){const n=k("openAPIDocsStore"),s=E(()=>!n||!n.source?{file:"",source:null}:{source:new P(n.source.absolutePath,n.source.content),file:n.source.relativePath},[n]),{sendMessage:i}=S(),r=m(c=>{const t=c.attributes["data-pointer"].value;if(!s.source)return{file:""};const u=I({pointer:`#${t}`,source:s.source});return{file:`${s.file}#L${u.start.line}${u.end?`-L${u.end.line}`:""}`,pointer:t}},[s]),e=m(c=>({file:c.attributes["data-source"].value}),[]),o=m(c=>{c.preventDefault();const t=p(c);let u={file:""};t.attributes["data-source"]&&(u=e(t)),t.attributes["data-pointer"]&&(u=r(t)),i({type:"add-review-comment",...u})},[r,e,i]),l=m(c=>{c.target.classList.remove(f),i({type:"review-hover-lines",file:""}),c.target.removeEventListener("mouseleave",l),c.target.removeEventListener("click",o)},[o,i]),a=m(c=>{const t=p(c);if(t&&t!==d.current){t.classList.add(f);let u={file:""};t.attributes["data-source"]&&(u=e(t)),t.attributes["data-pointer"]&&(u=r(t)),i({type:"review-hover-lines",...u}),t.addEventListener("mouseleave",l),t.addEventListener("click",o)}d.current=t},[o,l,e,r,i]),d=y(null);b(()=>{if(C)return document.body.addEventListener("mousemove",a),()=>{document.body.removeEventListener("mousemove",a)}},[a]);function p(c){let t=c.target;for(;t&&!t.attributes["data-source"]&&!t.attributes["data-pointer"];)t=t.parentElement;return t}return g.createElement(N,null,g.createElement("style",null,`
1
+ import v,{useCallback as m,useEffect as b,useMemo as E,useRef as y}from"react";import{safeLoad as w,Kind as p}from"yaml-ast-parser";import{Helmet as N}from"@dr.pogodin/react-helmet";import{Source as P}from"@redocly/openapi-core";import{isBrowser as h}from"../../../utils/env/is-browser";import{usePageSharedData as k}from"../../providers/page-data/hooks";import{usePostMessage as S}from"../../providers/post-message/use-post-message";const f="___selected",A=10,C=h()&&window.location.search.includes("review-comments=true");function g(t){const[o="",i=""]=t.split("#"),[r,e]=i.split("-").map(n=>n.slice(1));return{fileName:o,fromLine:Number(r),toLine:Number(e)||Number(r)}}function O(t,o){Array.from(document.getElementsByClassName(f)).forEach(r=>{r.classList.remove(f)});let i;if(o)i=document.querySelectorAll(`[data-pointer="${o}"]`);else if(t){const{fileName:r,fromLine:e,toLine:n}=g(t);i=Array.from(document.querySelectorAll("[data-source]")).find(a=>{const d=a.attributes.getNamedItem("data-source")?.value||"",{fileName:c,fromLine:s,toLine:u}=g(d);return c===r&&e<=u&&n>=s})}if(i){let r=i,e=r.offsetTop;if(i instanceof NodeList){r=i[0],i.forEach(a=>{a.classList.add(f)});const l=window.pageYOffset||document.documentElement.scrollTop;e=r.getBoundingClientRect().top+l}r.classList.add(f);const n=document.querySelector("nav")?.offsetHeight||0;window.scrollTo({top:e-n-A,behavior:"smooth"})}}function T(t){return decodeURIComponent(t.replace(/~1/g,"/").replace(/~0/g,"~"))}function $(t){return t.substr(2).split("/").map(T)}function M(t,o,i){const r=$(o);if(t===void 0)return;let e=t;for(const n of r)if(e.kind===p.MAP){const l=e.mappings.find(a=>a.key.value===n);if(!l||(e=l,!l?.value))break;e=l.value}else if(e.kind===p.SEQ){const l=e.items[parseInt(n,10)];if(!l)break;e=l}if(i){const n=e.parent;return!n||n.kind===p.SEQ?e:n.kind===p.MAPPING?n.key:e}else return e}function D(t,o,i){let r=1,e=1,n={line:1,col:1};for(let a=0;a<i-1;a++){if(a===o-1&&(n={line:r,col:e+1}),t[a]===`
2
+ `){r++,e=1,a===o-1&&(n={line:r,col:e}),t[a+1]==="\r"&&a++;continue}e++}const l=o===i?{...n}:{line:r,col:e+1};return{start:n,end:l}}function I(t){if(t.pointer===void 0)return t;const{source:o,pointer:i,reportOnKey:r}=t,e=o.getAst(w),n=M(e,i,!!r);return{...t,pointer:void 0,...D(o.body,n?.startPosition??1,n?.endPosition??1)}}function L(t){let o=t.target;for(;o&&!o.attributes["data-source"]&&!o.attributes["data-pointer"];)o=o.parentElement;return o}function Q(){const t=k("openAPIDocsStore"),o=E(()=>!t||!t.source?{file:"",source:null}:{source:new P(t.source.absolutePath,t.source.content),file:t.source.relativePath},[t]),{sendMessage:i}=S(),r=m(c=>{const s=c.attributes["data-pointer"].value;if(!o.source)return{file:""};const u=I({pointer:`#${s}`,source:o.source});return{file:`${o.file}#L${u.start.line}${u.end?`-L${u.end.line}`:""}`,pointer:s}},[o]),e=m(c=>({file:c.attributes["data-source"].value}),[]),n=m(c=>{c.preventDefault();const s=L(c);let u={file:""};s.attributes["data-source"]&&(u=e(s)),s.attributes["data-pointer"]&&(u=r(s)),i({type:"add-review-comment",...u})},[r,e,i]),l=m(c=>{c.target.classList.remove(f),i({type:"review-hover-lines",file:""}),c.target.removeEventListener("click",n)},[n,i]),a=m(c=>{const s=L(c);if(s&&s!==d.current){s.classList.add(f);let u={file:""};s.attributes["data-source"]&&(u=e(s)),s.attributes["data-pointer"]&&(u=r(s)),i({type:"review-hover-lines",...u}),s.addEventListener("mouseleave",l,{once:!0}),s.addEventListener("click",n)}d.current=s},[n,l,e,r,i]),d=y(null);return b(()=>{if(C)return document.body.addEventListener("mousemove",a),()=>{document.body.removeEventListener("mousemove",a)}},[a]),v.createElement(N,null,v.createElement("style",null,`
3
3
  .${f} {
4
4
  outline: 2px solid #1677ff;
5
5
  cursor: pointer;
@@ -1,4 +1,4 @@
1
- import e,{useEffect as y,useState as b}from"react";import h from"styled-components";import{Menu as w}from"@redocly/theme/components/Menu/Menu";import{SidebarActions as B}from"@redocly/theme/components/SidebarActions/SidebarActions";import{Sidebar as A}from"@redocly/theme/components/Sidebar/Sidebar";import{VersionPicker as D}from"@redocly/theme/components/VersionPicker/VersionPicker";import{Button as I}from"@redocly/theme/components/Button/Button";import{CatalogEntityHistoryButton as L}from"@redocly/theme/components/Catalog/CatalogEntity/CatalogEntityHistory/CatalogEntityHistoryButton";import{ArrowLeftIcon as P}from"@redocly/theme/icons/ArrowLeftIcon/ArrowLeftIcon";import{withPathPrefix as x,getBaseDataAttributes as C,generateBeforeAfterContext as T}from"@redocly/theme/core/utils";import{telemetry as v}from"../telemetry/index.js";import{usePreloadHistory as M}from"../usePreloadHistory";import{useTranslate as V}from"../hooks";import{usePageSharedData as H,usePageVersions as R}from"../../providers/page-data/hooks";import{useSidebarItems as q}from"./useSidebarItems";import{renderAdmonition as j,RequestAccessButton as z}from"./RequestAccessButton";function ae({layoutControls:s}){const{versions:l=[]}=R()||{},m=l.find(t=>t?.active),{translate:r}=V(),{currentItems:c,backLink:n,versionLabel:a,pushDrilldownState:g,popDrilldownState:k}=q(m),[d,S]=b(),{collapsedSidebar:i}=s,u=H("apiDocsStore")?.apiId,E=M(),[p,o]=b(void 0);return y(()=>{const t=setTimeout(()=>o(void 0),350);return()=>clearTimeout(t)},[p]),c.length?e.createElement(e.Fragment,null,e.createElement(A,{collapsed:i,menuItemsAnimation:p,versions:e.createElement(D,{versions:l,onChange:t=>{v.sendVersionPickerChangedMessage([...T("versionPicker","dropdown",{version:m?.version||""},{version:t?.version||""})]);const f=location.hash?t?.link+location.hash:t?.link;f&&E.push(x(f))}}),menu:e.createElement(w,{items:c,onDrilldownOpen:t=>{o("slideInRight"),g(t)}}),footer:e.createElement("div",{style:{width:"100%"}},!i&&j(d),e.createElement(B,{...s,requestAccessButton:u?e.createElement(z,{apiId:u,status:d,setStatus:S}):null})),header:(n||a)&&e.createElement(F,null,n&&e.createElement(K,{icon:e.createElement(P,null),iconPosition:"left",variant:"ghost",size:"medium","data-component-name":"Sidebar/BackButton",to:n.slug,onClick:()=>{o("slideInLeft"),k(),v.sendSidebarDrilldownBackClickedMessage([C("sidebarDrilldownBack","button")])}},i?"":n.label?e.createElement("div",{"data-translation-key":"sidebar.menu.backToLabel"},r("sidebar.menu.backToLabel",{value:r(n.labelTranslationKey,n.label)})):e.createElement("div",{"data-translation-key":"sidebar.menu.backLabel"},r("sidebar.menu.backLabel"))),a&&!i&&e.createElement(L,{version:a}))})):null}const F=h.div`
1
+ import e,{useEffect as y,useState as b}from"react";import h from"styled-components";import{Menu as w}from"@redocly/theme/components/Menu/Menu";import{SidebarActions as B}from"@redocly/theme/components/SidebarActions/SidebarActions";import{Sidebar as A}from"@redocly/theme/components/Sidebar/Sidebar";import{VersionPicker as D}from"@redocly/theme/components/VersionPicker/VersionPicker";import{Button as I}from"@redocly/theme/components/Button/Button";import{CatalogEntityHistoryButton as L}from"@redocly/theme/components/Catalog/CatalogEntity/CatalogEntityHistory/CatalogEntityHistoryButton";import{ArrowLeftIcon as P}from"@redocly/theme/icons/ArrowLeftIcon/ArrowLeftIcon";import{withPathPrefix as x,getBaseDataAttributes as C,generateBeforeAfterContext as T}from"@redocly/theme/core/utils";import{telemetry as g}from"../telemetry/index.js";import{usePreloadHistory as M}from"../usePreloadHistory";import{useTranslate as V}from"../hooks";import{usePageSharedData as H,usePageVersions as R}from"../../providers/page-data/hooks";import{useSidebarItems as q}from"./useSidebarItems";import{renderAdmonition as j,RequestAccessButton as z}from"./RequestAccessButton";function ae({layoutControls:l}){const{versions:r=[]}=R()||{},m=r.find(t=>t?.active),{translate:a}=V(),{currentItems:c,backLink:n,versionLabel:o,pushDrilldownState:v,popDrilldownState:k}=q(m),[d,S]=b(),{collapsedSidebar:i}=l,u=H("apiDocsStore")?.apiId,E=M(),[p,s]=b(void 0);return y(()=>{const t=setTimeout(()=>s(void 0),350);return()=>clearTimeout(t)},[p]),!c.length&&r.length<2?null:e.createElement(e.Fragment,null,e.createElement(A,{collapsed:i,menuItemsAnimation:p,versions:e.createElement(D,{versions:r,onChange:t=>{g.sendVersionPickerChangedMessage([...T("versionPicker","dropdown",{version:m?.version||""},{version:t?.version||""})]);const f=location.hash?t?.link+location.hash:t?.link;f&&E.push(x(f))}}),menu:e.createElement(w,{items:c,onDrilldownOpen:t=>{s("slideInRight"),v(t)}}),footer:e.createElement("div",{style:{width:"100%"}},!i&&j(d),e.createElement(B,{...l,requestAccessButton:u?e.createElement(z,{apiId:u,status:d,setStatus:S}):null})),header:(n||o)&&e.createElement(F,null,n&&e.createElement(K,{icon:e.createElement(P,null),iconPosition:"left",variant:"ghost",size:"medium","data-component-name":"Sidebar/BackButton",to:n.slug,onClick:()=>{s("slideInLeft"),k(),g.sendSidebarDrilldownBackClickedMessage([C("sidebarDrilldownBack","button")])}},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&&!i&&e.createElement(L,{version:o}))}))}const F=h.div`
2
2
  display: flex;
3
3
  flex-direction: column;
4
4
  gap: var(--menu-header-container-gap);
@@ -1 +1 @@
1
- import{useLocation as A}from"react-router";import{useEffect as w,useMemo as f,useRef as _,useState as k}from"react";import{useActiveSectionId as D}from"@redocly/theme/core/hooks";import{getMenuItemType as C}from"@redocly/theme/core/utils";import{MenuItemType as v}from"@redocly/theme/core/constants";import{CATALOG_BASE_SLUG as T,CATALOG_SLUGS as h}from"../../../constants/catalog-entities";import{usePageSharedData as y,useSidebarItemsData as G,useSidebarConnectedCatalogConfig as E,useSidebarConnectedCatalogEntity as O}from"../../providers/page-data/hooks";import{mapItemsPropsToState as b}from"./utils";import{injectCatalogItems as K}from"../../utils/catalog/inject-catalog-items";import{filterOutVersionedItems as R}from"./helpers/filter-out-versioned-items";const B="catalog.backToAllLabel",M=`${T}/${h.ALL}`;function U(o){const e=G();return f(()=>R(e,o),[e,o])}function J(o){const e=A(),t=D(e,!0),a=O(),g=E(),c=U(o),s=a?K(c,a.key,g?.slug,e.search):c,u=_(null),r=f(()=>b(s,e,t),[t,e,s]),l=y("current-catalog-info"),p=f(()=>S(r),[s]),[n,m]=k(p),i=n.length>0?n[n.length-1]:void 0,I=i&&b([...i.item.link?[{...i.item,items:[],menuStyle:void 0,separatorLine:!1}]:[],...i.item.items],e,t);w(()=>{if(!u.current||u.current!==t){const d=S(r);m(d),u.current=t}},[c,e,t]);const L=i?{slug:i.previousLink,event:"sidebar_drilldown_back_button.clicked"}:a?{label:"Back to Catalog",labelTranslationKey:B,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:I||r,allSidebarItems:r,popDrilldownState:()=>{n.length>0&&m(n.slice(0,n.length-1))},pushDrilldownState:d=>{m([...n,d])},backLink:L,versionLabel:a?.version??null}}function S(o,e=[]){for(const t of o){if(!t.active&&!t.hasActiveSubItem)continue;if(C(t)===v.DrillDown&&e.push({item:t}),t.active)return e;if(t.hasActiveSubItem)return S(t.items,e)}return e}export{U as useRawSidebarItems,J as useSidebarItems};
1
+ import{useLocation as A}from"react-router";import{useEffect as w,useMemo as c,useRef as _,useState as k}from"react";import{useActiveSectionId as D}from"@redocly/theme/core/hooks";import{getMenuItemType as C}from"@redocly/theme/core/utils";import{MenuItemType as v}from"@redocly/theme/core/constants";import{CATALOG_BASE_SLUG as T,CATALOG_SLUGS as h}from"../../../constants/catalog-entities";import{usePageSharedData as y,useSidebarItemsData as G,useSidebarConnectedCatalogConfig as E,useSidebarConnectedCatalogEntity as O}from"../../providers/page-data/hooks";import{mapItemsPropsToState as b}from"./utils";import{injectCatalogItems as K}from"../../utils/catalog/inject-catalog-items";import{filterOutVersionedItems as R}from"../../utils/filter-out-versioned-items";const B="catalog.backToAllLabel",M=`${T}/${h.ALL}`;function U(i){const e=G();return c(()=>R(e,i),[e,i])}function J(i){const e=A(),t=D(e,!0),a=O(),g=E(),s=U(i),u=a?K(s,a.key,g?.slug,e.search):s,m=_(null),r=c(()=>b(u,e,t),[t,e,u]),l=y("current-catalog-info"),p=c(()=>S(r),[u]),[n,d]=k(p),o=n.length>0?n[n.length-1]:void 0,I=c(()=>o&&b([...o.item.link?[{...o.item,items:[],menuStyle:void 0,separatorLine:!1}]:[],...o.item.items],e,t),[o,e,t]);w(()=>{if(!m.current||m.current!==t){const f=S(r);d(f),m.current=t}},[s,e,t]);const L=o?{slug:o.previousLink,event:"sidebar_drilldown_back_button.clicked"}:a?{label:"Back to Catalog",labelTranslationKey:B,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:I||r,allSidebarItems:r,popDrilldownState:()=>{n.length>0&&d(n.slice(0,n.length-1))},pushDrilldownState:f=>{d([...n,f])},backLink:L,versionLabel:a?.version??null}}function S(i,e=[]){for(const t of i){if(!t.active&&!t.hasActiveSubItem)continue;if(C(t)===v.DrillDown&&e.push({item:t}),t.active)return e;if(t.hasActiveSubItem)return S(t.items,e)}return e}export{U as useRawSidebarItems,J as useSidebarItems};
@@ -1 +1 @@
1
- function u(){return{root(e){this.addClassToHast(e.children?.[0],"tree-view-root")},line(e){this.addClassToHast(e,"tree-view-line");const r=e.children?.[0]?.children?.[0];if(r?.type!=="text")return e;const s=r.value||"",t=s.match(/^(.*?)(\s*#.*)?$/);let a=s,i="";t&&(a=(t[1]||"").trimEnd(),i=t[2]||"");const f=a.trim().split(" "),c=[],o=[];let p=!1;f.forEach(n=>{n.match(/(\w+|\.|\/|-|_)/g)||p?(o.push(n),p=!0):c.push(n)});const l=o.join(" ").trim(),m=l.split("."),h=m.length>1?m.pop():void 0;return e.children=[{type:"element",tagName:"span",properties:{class:"tree-view-branch"},children:[{type:"text",value:c.join(" ")}]},{type:"element",tagName:"span",properties:{class:`tree-view-file ${l?"ext-"+(h||"folder"):"no-file"}`},children:[{type:"text",value:l}]}],i&&e.children.push({type:"element",tagName:"span",properties:{class:"tree-view-comment"},children:[{type:"text",value:i}]}),e}}}export{u as default};
1
+ function u(){return{root(e){this.addClassToHast(e.children?.[0],"tree-view-root")},line(e){this.addClassToHast(e,"tree-view-line");const s=e.children?.[0]?.children?.[0];if(s?.type!=="text")return e;const r=s.value||"",t=r.match(/^([^#\n]*?)((?<=[^\s]|^)\s*#.*)?$/);let a=r,i="";t&&(a=(t[1]||"").trimEnd(),i=t[2]||"");const f=a.trim().split(" "),c=[],o=[];let p=!1;f.forEach(n=>{n.match(/(\w+|\.|\/|-|_)/g)||p?(o.push(n),p=!0):c.push(n)});const l=o.join(" ").trim(),m=l.split("."),h=m.length>1?m.pop():void 0;return e.children=[{type:"element",tagName:"span",properties:{class:"tree-view-branch"},children:[{type:"text",value:c.join(" ")}]},{type:"element",tagName:"span",properties:{class:`tree-view-file ${l?"ext-"+(h||"folder"):"no-file"}`},children:[{type:"text",value:l}]}],i&&e.children.push({type:"element",tagName:"span",properties:{class:"tree-view-comment"},children:[{type:"text",value:i}]}),e}}}export{u as default};
@@ -1 +1 @@
1
- import l from"shiki/langs/bash.mjs";import d from"shiki/langs/c.mjs";import g from"shiki/langs/coffee.mjs";import u from"shiki/langs/csharp.mjs";import k from"shiki/langs/css.mjs";import w from"shiki/langs/go.mjs";import b from"shiki/langs/graphql.mjs";import y from"shiki/langs/html.mjs";import N from"shiki/langs/http.mjs";import v from"shiki/langs/java.mjs";import x from"shiki/langs/javascript.mjs";import H from"shiki/langs/kotlin.mjs";import L from"shiki/langs/lua.mjs";import r from"shiki/langs/markdown.mjs";import _ from"shiki/langs/objective-c.mjs";import j from"shiki/langs/perl.mjs";import q from"shiki/langs/php.mjs";import T from"shiki/langs/python.mjs";import C from"shiki/langs/scala.mjs";import E from"shiki/langs/sql.mjs";import M from"shiki/langs/swift.mjs";import S from"shiki/langs/tsx.mjs";import I from"shiki/langs/typescript.mjs";import A from"shiki/langs/vim.mjs";import D from"shiki/langs/xml.mjs";import F from"shiki/langs/yaml.mjs";import R from"shiki/langs/jsx.mjs";import W from"shiki/langs/jsonl.mjs";import{transformerNotationDiff as G,transformerNotationHighlight as J,transformerNotationWordHighlight as U,transformerNotationFocus as V,transformerNotationErrorLevel as $,transformerMetaHighlight as z,transformerMetaWordHighlight as B,transformerRemoveNotationEscape as K}from"@shikijs/transformers";import{createHighlighterCoreSync as O}from"shiki/core";import{createJavaScriptRegexEngine as P}from"shiki/engine/javascript";import Q from"./ruby";import X from"./multipart-mixed";import Y from"./json-seq";import Z from"./theme";import rr from"./treeview-transformer";import or from"./node-transformer";import tr from"./line-numbers-transformer";import{mapLang as mr}from"./map-lang";const er=[{...r[0],displayName:"Markdoc",name:"markdoc",scopeName:"source.markdoc",aliases:[],repository:{...r[0].repository,fenced_code_block:{patterns:[...r[0].repository.fenced_code_block.patterns||[],{name:"markdoc",begin:".*{%",end:"%}",patterns:[{match:"(?<={%)\\s*(/\\w+(-\\w+)?|\\w+(-\\w+)?)",name:"markdoc.tag"},{match:"\\$\\w+",name:"markdoc.variable"},{match:'".*?"',name:"markdoc.string"},{match:"\\b\\w+(?=\\()",name:"markdoc.function"},{match:"\\s+\\w+(?==|\\s)",name:"markdoc.keyword"},{match:"(?<==)false|true(?=\\s)",name:"markdoc.boolean"}]}]}}}],n="text",ir=[l,d,g,u,k,w,b,y,N,v,x,H,L,r,_,j,q,T,Q,C,E,M,S,I,D,A,F,er,R,W,X,Y];let o;function t(){return o||(o=O({themes:[Z],langs:ir,engine:P()})),o}typeof window<"u"&&typeof requestIdleCallback=="function"&&requestIdleCallback(t);const ar=[G(),J(),U(),V(),$(),z(),B(),K(),or()],nr=(m,f,s)=>{const{withLineNumbers:p,startLineNumber:c,highlight:h,customTransformer:e}=s||{},i=mr(f?.toLowerCase()||n),a={lang:i,theme:"theme",meta:{__raw:h},transformers:[...i==="treeview"?[rr()]:[],...ar,...p?[tr(c)]:[],...e?[e]:[]]};try{return t().codeToHtml(m,a)}catch{return t().codeToHtml(m,{...a,lang:n})}};function Or(){return{highlight:nr}}export{nr as highlight,Or as useCodeHighlight};
1
+ import l from"shiki/langs/bash.mjs";import d from"shiki/langs/c.mjs";import g from"shiki/langs/coffee.mjs";import u from"shiki/langs/csharp.mjs";import k from"shiki/langs/css.mjs";import w from"shiki/langs/go.mjs";import b from"shiki/langs/graphql.mjs";import y from"shiki/langs/html.mjs";import N from"shiki/langs/http.mjs";import v from"shiki/langs/java.mjs";import H from"shiki/langs/javascript.mjs";import L from"shiki/langs/kotlin.mjs";import _ from"shiki/langs/lua.mjs";import r from"shiki/langs/markdown.mjs";import x from"shiki/langs/objective-c.mjs";import j from"shiki/langs/perl.mjs";import q from"shiki/langs/php.mjs";import T from"shiki/langs/python.mjs";import C from"shiki/langs/scala.mjs";import E from"shiki/langs/sql.mjs";import M from"shiki/langs/swift.mjs";import S from"shiki/langs/tsx.mjs";import I from"shiki/langs/typescript.mjs";import A from"shiki/langs/vim.mjs";import D from"shiki/langs/xml.mjs";import F from"shiki/langs/yaml.mjs";import R from"shiki/langs/jsonl.mjs";import{transformerNotationDiff as W,transformerNotationHighlight as G,transformerNotationWordHighlight as J,transformerNotationFocus as U,transformerNotationErrorLevel as V,transformerMetaHighlight as $,transformerMetaWordHighlight as z,transformerRemoveNotationEscape as B}from"@shikijs/transformers";import{createHighlighterCoreSync as K}from"shiki/core";import{createJavaScriptRegexEngine as O}from"shiki/engine/javascript";import P from"./ruby";import Q from"./multipart-mixed";import X from"./json-seq";import Y from"./theme";import Z from"./treeview-transformer";import rr from"./node-transformer";import or from"./line-numbers-transformer";import{mapLang as tr}from"./map-lang";const mr=[{...r[0],displayName:"Markdoc",name:"markdoc",scopeName:"source.markdoc",aliases:[],repository:{...r[0].repository,fenced_code_block:{patterns:[...r[0].repository.fenced_code_block.patterns||[],{name:"markdoc",begin:".*{%",end:"%}",patterns:[{match:"(?<={%)\\s*(/\\w+(-\\w+)?|\\w+(-\\w+)?)",name:"markdoc.tag"},{match:"\\$\\w+",name:"markdoc.variable"},{match:'".*?"',name:"markdoc.string"},{match:"\\b\\w+(?=\\()",name:"markdoc.function"},{match:"\\s+\\w+(?==|\\s)",name:"markdoc.keyword"},{match:"(?<==)false|true(?=\\s)",name:"markdoc.boolean"}]}]}}}],n="text",er=[l,d,g,u,k,w,b,y,N,v,H,L,_,r,x,j,q,T,P,C,E,M,S,I,D,A,F,mr,R,Q,X];let o;function t(){return o||(o=K({themes:[Y],langs:er,engine:O()})),o}typeof window<"u"&&typeof requestIdleCallback=="function"&&requestIdleCallback(t);const ir=[W(),G(),J(),U(),V(),$(),z(),B(),rr()],ar=(m,f,s)=>{const{withLineNumbers:p,startLineNumber:c,highlight:h,customTransformer:e}=s||{},i=tr(f?.toLowerCase()||n),a={lang:i,theme:"theme",meta:{__raw:h},transformers:[...i==="treeview"?[Z()]:[],...ir,...p?[or(c)]:[],...e?[e]:[]]};try{return t().codeToHtml(m,a)}catch{return t().codeToHtml(m,{...a,lang:n})}};function Br(){return{highlight:ar}}export{ar as highlight,Br as useCodeHighlight};
@@ -16,6 +16,7 @@ export { useSubmitFeedback } from '../Feedback/useSubmitFeedback';
16
16
  export { usePreloadHistory } from '../usePreloadHistory';
17
17
  export { useBreadcrumbs } from '../Sidebar/useBreadcrumbs';
18
18
  export { useBanner } from './useBanner';
19
+ export { useConsent } from './useConsent';
19
20
  export { useCatalog } from './catalog/useCatalog';
20
21
  export { useCatalogSort } from './catalog/useCatalogSort';
21
22
  export { useCatalogSearch } from './catalog/useCatalogSearch';
@@ -31,5 +32,4 @@ export { useCodeHighlight } from './codeHighlight/useCodeHighlight';
31
32
  export { useLoadAndNavigate } from './useLoadAndNavigate';
32
33
  export { useUserClaims } from './useUserClaims';
33
34
  export { useMcpData } from './useMcpData';
34
- export { useAnchorPositioning } from './useAnchorPositioning';
35
35
  //# sourceMappingURL=index.d.ts.map
@@ -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{useTranslationKeys as d}from"../l10n/hooks";import{useL10nConfig as L}from"./useL10nConfig";export*from"./useCurrentUserTeams";export*from"./products";import{usePageVersions as F}from"../../providers/page-data/hooks";import{useUserMenu as P}from"../UserMenu/useUserMenu";import{useSubmitFeedback as U}from"../Feedback/useSubmitFeedback";import{usePreloadHistory as D}from"../usePreloadHistory";import{useBreadcrumbs as R}from"../Sidebar/useBreadcrumbs";import{useBanner as A}from"./useBanner";import{useCatalog as H}from"./catalog/useCatalog";import{useCatalogSort as w}from"./catalog/useCatalogSort";import{useCatalogSearch as K}from"./catalog/useCatalogSearch";import{useFetchCatalogEntities as V}from"./catalog/useFetchCatalogEntities";import{useFetchCatalogEntitiesRelations as q}from"./catalog/useFetchCatalogEntitiesRelations";import{useFetchCatalogEntityRevisions as J}from"./catalog/useFetchCatalogEntityRevisions";import{useCatalogClassic as Q}from"./catalog/useCatalogClassic";import{useTelemetry as X}from"./useTelemetry";import{useUserTeams as Z}from"./useUserTeams";import{useMarkdownText as $}from"./markdown/useMarkdownText";import{useMarkdocRenderer as oe}from"./markdown/useMarkdocRenderer";import{useCodeHighlight as te}from"./codeHighlight/useCodeHighlight";import{useLoadAndNavigate as ae}from"./useLoadAndNavigate";import{useUserClaims as fe}from"./useUserClaims";import{useMcpData as pe}from"./useMcpData";import{useAnchorPositioning as ne}from"./useAnchorPositioning";export{ne as useAnchorPositioning,A as useBanner,R as useBreadcrumbs,H as useCatalog,Q as useCatalogClassic,K as useCatalogSearch,w as useCatalogSort,te as useCodeHighlight,V as useFetchCatalogEntities,q as useFetchCatalogEntitiesRelations,J as useFetchCatalogEntityRevisions,f as useGlobalData,p as useI18n,n as useI18nConfig,l as useL10n,L as useL10nConfig,ae as useLoadAndNavigate,a as useLoginUrl,oe as useMarkdocRenderer,$ as useMarkdownText,pe as useMcpData,t as usePageSharedData,F as usePageVersions,D as usePreloadHistory,U as useSubmitFeedback,X as useTelemetry,C as useTranslate,d as useTranslationKeys,fe as useUserClaims,P as useUserMenu,Z 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{useTranslationKeys as c}from"../l10n/hooks";import{useL10nConfig as L}from"./useL10nConfig";export*from"./useCurrentUserTeams";export*from"./products";import{usePageVersions as F}from"../../providers/page-data/hooks";import{useUserMenu as S}from"../UserMenu/useUserMenu";import{useSubmitFeedback as k}from"../Feedback/useSubmitFeedback";import{usePreloadHistory as E}from"../usePreloadHistory";import{useBreadcrumbs as R}from"../Sidebar/useBreadcrumbs";import{useBanner as B}from"./useBanner";import{useConsent as I}from"./useConsent";import{useCatalog as A}from"./catalog/useCatalog";import{useCatalogSort as K}from"./catalog/useCatalogSort";import{useCatalogSearch as V}from"./catalog/useCatalogSearch";import{useFetchCatalogEntities as q}from"./catalog/useFetchCatalogEntities";import{useFetchCatalogEntitiesRelations as J}from"./catalog/useFetchCatalogEntitiesRelations";import{useFetchCatalogEntityRevisions as Q}from"./catalog/useFetchCatalogEntityRevisions";import{useCatalogClassic as X}from"./catalog/useCatalogClassic";import{useTelemetry as Z}from"./useTelemetry";import{useUserTeams as $}from"./useUserTeams";import{useMarkdownText as oe}from"./markdown/useMarkdownText";import{useMarkdocRenderer as te}from"./markdown/useMarkdocRenderer";import{useCodeHighlight as ae}from"./codeHighlight/useCodeHighlight";import{useLoadAndNavigate as fe}from"./useLoadAndNavigate";import{useUserClaims as pe}from"./useUserClaims";import{useMcpData as ne}from"./useMcpData";export{B as useBanner,R as useBreadcrumbs,A as useCatalog,X as useCatalogClassic,V as useCatalogSearch,K as useCatalogSort,ae as useCodeHighlight,I as useConsent,q as useFetchCatalogEntities,J as useFetchCatalogEntitiesRelations,Q as useFetchCatalogEntityRevisions,f as useGlobalData,p as useI18n,n as useI18nConfig,l as useL10n,L as useL10nConfig,fe as useLoadAndNavigate,a as useLoginUrl,te as useMarkdocRenderer,oe as useMarkdownText,ne as useMcpData,t as usePageSharedData,F as usePageVersions,E as usePreloadHistory,k as useSubmitFeedback,Z as useTelemetry,C as useTranslate,c as useTranslationKeys,pe as useUserClaims,S as useUserMenu,$ as useUserTeams};