@redocly/revel 0.138.0-next.1 → 0.138.0-next.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. package/CHANGELOG.md +48 -0
  2. package/dist/client/App.js +1 -1
  3. package/dist/client/TestProvider.d.ts +3 -1
  4. package/dist/client/TestProvider.js +1 -1
  5. package/dist/client/app/Sidebar/Sidebar.js +1 -1
  6. package/dist/client/app/hooks/codeHighlight/useCodeHighlight.js +1 -1
  7. package/dist/client/app/hooks/index.d.ts +1 -0
  8. package/dist/client/app/hooks/index.js +1 -1
  9. package/dist/client/app/hooks/useConsent.d.ts +11 -0
  10. package/dist/client/app/hooks/useConsent.js +1 -0
  11. package/dist/client/app/l10n/L10nContext.d.ts +10 -0
  12. package/dist/client/app/l10n/L10nContext.js +1 -0
  13. package/dist/client/app/l10n/hooks/useL10n.js +1 -1
  14. package/dist/client/app/l10n/hooks/useTranslate.js +1 -1
  15. package/dist/client/app/l10n/hooks/useTranslationKeys.d.ts +2 -0
  16. package/dist/client/app/l10n/hooks/useTranslationKeys.js +1 -1
  17. package/dist/client/app/l10n/ssrL10n.d.ts +4 -0
  18. package/dist/client/app/l10n/ssrL10n.js +1 -0
  19. package/dist/client/app/webmcp/index.d.ts +2 -0
  20. package/dist/client/app/webmcp/index.js +1 -0
  21. package/dist/client/app/webmcp/tools/api-tools.d.ts +8 -0
  22. package/dist/client/app/webmcp/tools/api-tools.js +1 -0
  23. package/dist/client/app/webmcp/tools/shared.d.ts +13 -0
  24. package/dist/client/app/webmcp/tools/shared.js +1 -0
  25. package/dist/client/app/webmcp/tools/site-tools.d.ts +5 -0
  26. package/dist/client/app/webmcp/tools/site-tools.js +3 -0
  27. package/dist/client/app/webmcp/types.d.ts +36 -0
  28. package/dist/client/app/webmcp/types.js +0 -0
  29. package/dist/client/app/webmcp/useWebMcpTools.d.ts +9 -0
  30. package/dist/client/app/webmcp/useWebMcpTools.js +1 -0
  31. package/dist/client/providers/theme/ThemeDataProvider.js +1 -1
  32. package/dist/client/server-entry.d.ts +2 -1
  33. package/dist/client/server-entry.js +1 -1
  34. package/dist/constants/common.d.ts +1 -0
  35. package/dist/constants/common.js +1 -1
  36. package/dist/constants/l10n/langs/ar.js +1 -1
  37. package/dist/constants/l10n/langs/de.js +1 -1
  38. package/dist/constants/l10n/langs/en.js +1 -1
  39. package/dist/constants/l10n/langs/es.js +1 -1
  40. package/dist/constants/l10n/langs/fr.js +1 -1
  41. package/dist/constants/l10n/langs/hi.js +1 -1
  42. package/dist/constants/l10n/langs/it.js +1 -1
  43. package/dist/constants/l10n/langs/ja.js +1 -1
  44. package/dist/constants/l10n/langs/ko.js +1 -1
  45. package/dist/constants/l10n/langs/pl.js +1 -1
  46. package/dist/constants/l10n/langs/pt-BR.js +1 -1
  47. package/dist/constants/l10n/langs/pt.js +1 -1
  48. package/dist/constants/l10n/langs/ru.js +1 -1
  49. package/dist/constants/l10n/langs/uk.js +1 -1
  50. package/dist/constants/l10n/langs/zh.js +1 -1
  51. package/dist/markdoc/nodes/table.d.ts +2 -0
  52. package/dist/markdoc/nodes/table.js +1 -1
  53. package/dist/server/constants/common.d.ts +2 -0
  54. package/dist/server/constants/common.js +1 -1
  55. package/dist/server/constants/entitlements.js +1 -1
  56. package/dist/server/constants/plugins/consent.d.ts +3 -0
  57. package/dist/server/constants/plugins/consent.js +1 -0
  58. package/dist/server/constants/plugins/search.js +1 -1
  59. package/dist/server/plugins/analytics/adobe/index.js +1 -1
  60. package/dist/server/plugins/analytics/amplitude/browser-hooks.js +1 -1
  61. package/dist/server/plugins/analytics/amplitude/index.js +1 -1
  62. package/dist/server/plugins/analytics/fullstory/index.js +1 -1
  63. package/dist/server/plugins/analytics/ga/index.js +1 -1
  64. package/dist/server/plugins/analytics/gtm/browser-hooks.js +1 -1
  65. package/dist/server/plugins/analytics/gtm/index.js +1 -1
  66. package/dist/server/plugins/analytics/heap/browser-hooks.js +1 -1
  67. package/dist/server/plugins/analytics/rudderstack/index.js +1 -1
  68. package/dist/server/plugins/analytics/segment/index.js +1 -1
  69. package/dist/server/plugins/catalog-entities/database/repositories/common/revision-repository.d.ts +1 -1
  70. package/dist/server/plugins/catalog-entities/database/repositories/common/revision-repository.js +1 -1
  71. package/dist/server/plugins/catalog-entities/database/repositories/common/version-repository.d.ts +5 -1
  72. package/dist/server/plugins/catalog-entities/database/repositories/common/version-repository.js +7 -1
  73. package/dist/server/plugins/catalog-entities/database/repositories/entities/entities-write-repository.js +1 -1
  74. package/dist/server/plugins/config-parser/format-custom-tags.d.ts +1 -0
  75. package/dist/server/plugins/config-parser/format-custom-tags.js +1 -1
  76. package/dist/server/plugins/config-parser/index.js +1 -1
  77. package/dist/server/plugins/config-parser/loaders/redocly-config-loader.js +1 -1
  78. package/dist/server/plugins/config-parser/loaders/versions-config-loader.js +1 -1
  79. package/dist/server/plugins/consent/build-consent-script.d.ts +6 -0
  80. package/dist/server/plugins/consent/build-consent-script.js +230 -0
  81. package/dist/server/plugins/consent/gate-ssr-components.d.ts +5 -0
  82. package/dist/server/plugins/consent/gate-ssr-components.js +1 -0
  83. package/dist/server/plugins/consent/index.d.ts +3 -0
  84. package/dist/server/plugins/consent/index.js +1 -0
  85. package/dist/server/plugins/consent/is-consent-enabled.d.ts +8 -0
  86. package/dist/server/plugins/consent/is-consent-enabled.js +1 -0
  87. package/dist/server/plugins/consent/zone-modes.d.ts +8 -0
  88. package/dist/server/plugins/consent/zone-modes.js +1 -0
  89. package/dist/server/plugins/lifecycle.js +2 -2
  90. package/dist/server/plugins/markdown/markdoc/markdoc-options.d.ts +2 -0
  91. package/dist/server/plugins/markdown/search/get-ai-search-documents.js +9 -9
  92. package/dist/server/plugins/markdown/search/nodes/tag-node.d.ts +1 -1
  93. package/dist/server/plugins/markdown/search/nodes/tag-node.js +1 -1
  94. package/dist/server/plugins/mcp/audit/audit-log.js +1 -1
  95. package/dist/server/plugins/mcp/auth/assistant-anonymous-token.d.ts +10 -0
  96. package/dist/server/plugins/mcp/auth/assistant-anonymous-token.js +1 -0
  97. package/dist/server/plugins/mcp/auth/auth-handlers.d.ts +5 -3
  98. package/dist/server/plugins/mcp/auth/auth-handlers.js +1 -1
  99. package/dist/server/plugins/mcp/codemode/build-tool-type-declarations.js +4 -4
  100. package/dist/server/plugins/mcp/codemode/capabilities/types.d.ts +0 -1
  101. package/dist/server/plugins/mcp/codemode/capabilities/utils.d.ts +1 -2
  102. package/dist/server/plugins/mcp/codemode/capabilities/utils.js +4 -4
  103. package/dist/server/plugins/mcp/codemode/tools/describe-tools.js +2 -2
  104. package/dist/server/plugins/mcp/codemode/tools/execute-schema.d.ts +0 -2
  105. package/dist/server/plugins/mcp/codemode/tools/execute-schema.js +1 -1
  106. package/dist/server/plugins/mcp/codemode/tools/execute.js +1 -1
  107. package/dist/server/plugins/mcp/codemode/tools/manage-credentials.js +2 -2
  108. package/dist/server/plugins/mcp/docs-mcp/tool-schemas.js +1 -1
  109. package/dist/server/plugins/mcp/docs-mcp/tools/core/create-anonymous-session.js +1 -1
  110. package/dist/server/plugins/mcp/docs-mcp/tools/openapi/constants.d.ts +2 -0
  111. package/dist/server/plugins/mcp/docs-mcp/tools/openapi/constants.js +1 -1
  112. package/dist/server/plugins/mcp/docs-mcp/tools/openapi/endpoint-suggestions.d.ts +6 -0
  113. package/dist/server/plugins/mcp/docs-mcp/tools/openapi/endpoint-suggestions.js +1 -1
  114. package/dist/server/plugins/mcp/docs-mcp/tools/openapi/get-endpoint-info.js +1 -1
  115. package/dist/server/plugins/mcp/docs-mcp/tools/openapi/load-api-description.d.ts +2 -0
  116. package/dist/server/plugins/mcp/docs-mcp/tools/openapi/load-api-description.js +1 -1
  117. package/dist/server/plugins/mcp/docs-mcp/tools/openapi/utils.d.ts +5 -0
  118. package/dist/server/plugins/mcp/docs-mcp/tools/openapi/utils.js +1 -1
  119. package/dist/server/plugins/mcp/docs-mcp/utils/resolve-refs.d.ts +20 -14
  120. package/dist/server/plugins/mcp/docs-mcp/utils/resolve-refs.js +1 -1
  121. package/dist/server/plugins/mcp/handlers/docs-mcp-handler.js +1 -1
  122. package/dist/server/plugins/mcp/servers/docs-server.js +1 -1
  123. package/dist/server/plugins/mcp/servers/mcp-server.js +3 -3
  124. package/dist/server/plugins/mcp/utils/disabled-tools.d.ts +3 -0
  125. package/dist/server/plugins/mcp/utils/disabled-tools.js +1 -0
  126. package/dist/server/plugins/mcp/utils/tool-registration.d.ts +2 -1
  127. package/dist/server/plugins/mcp/utils/tool-registration.js +1 -1
  128. package/dist/server/plugins/mcp/workers/execute-mcp-tool.js +1 -1
  129. package/dist/server/plugins/search/engines/flexsearch/search-index.js +1 -1
  130. package/dist/server/ssr/render.js +1 -1
  131. package/dist/server/types/plugins/search.d.ts +1 -1
  132. package/dist/server/utils/rbac-expand.js +1 -1
  133. package/dist/server/utils/rbac.js +1 -1
  134. package/dist/server/utils/redact-url.d.ts +6 -0
  135. package/dist/server/utils/redact-url.js +1 -0
  136. package/dist/server/utils/search/highlight-text-for-search.d.ts +1 -0
  137. package/dist/server/utils/search/highlight-text-for-search.js +1 -1
  138. package/dist/server/utils/search/text-match.d.ts +6 -0
  139. package/dist/server/utils/search/text-match.js +1 -0
  140. package/dist/server/web-server/jwt/jwt.js +1 -1
  141. package/dist/server/web-server/jwt/types.d.ts +4 -4
  142. package/dist/server/web-server/jwt/types.js +1 -1
  143. package/dist/server/web-server/middleware/telemetry-middleware.js +1 -1
  144. package/dist/server/web-server/routes/ask-ai.js +1 -1
  145. package/dist/server/web-server/routes/mcp-routes/mcp-server-card.js +1 -1
  146. package/dist/types/entitlements.d.ts +1 -0
  147. package/package.json +5 -5
package/CHANGELOG.md CHANGED
@@ -1,5 +1,53 @@
1
1
  # @redocly/revel
2
2
 
3
+ ## 0.138.0-next.3
4
+
5
+ ### Minor Changes
6
+
7
+ - 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.
8
+ - 220a3f8f7ae: Improved the **Expand all** and **Collapse all** controls in JSON samples.
9
+ - 5f0afdc4135: Added WebMCP support, which enables AI agents in the reader's browser to search, read, and navigate your documentation.
10
+
11
+ ### Patch Changes
12
+
13
+ - 220a3f8f7ae: Fixed an issue where JSON samples displayed the **Expand all** and **Collapse all** buttons even when there was nothing to expand or collapse.
14
+ - 0002ecc776e: Added vertical alignment support for cells in the Markdoc `table` tag.
15
+ - Updated dependencies [220a3f8f7ae]
16
+ - Updated dependencies [b8d94643e53]
17
+ - Updated dependencies [1368d8594d7]
18
+ - Updated dependencies [f47542f0aaa]
19
+ - Updated dependencies [220a3f8f7ae]
20
+ - Updated dependencies [ba418fbe7bd]
21
+ - Updated dependencies [0002ecc776e]
22
+ - Updated dependencies [bb5bd25ddf2]
23
+ - Updated dependencies [bb5bd25ddf2]
24
+ - Updated dependencies [5f0afdc4135]
25
+ - @redocly/theme@0.70.0-next.3
26
+ - @redocly/api-docs@0.3.0-next.3
27
+ - @redocly/realm-asyncapi-sdk@0.16.0-next.1
28
+
29
+ ## 0.138.0-next.2
30
+
31
+ ### Minor Changes
32
+
33
+ - 51256dcd1b9: Added output schema to the MCP `execute` tool and complete tool annotations to the MCP server tools.
34
+
35
+ ### Patch Changes
36
+
37
+ - 47f024b52c3: Fixed the AI assistant providing answers without using the project API tools on projects with protected content.
38
+ - 6567a12696e: Hardened RBAC enforcement for page content.
39
+ - cff70028280: Fixed an issue where the AI assistant send button had no accessible name for screen readers.
40
+ - e62106befe7: Fixed server-side rendering of localized projects where UI labels appeared in the wrong language alongside hydration warnings.
41
+ - f7fa203bf8f: Fixed an issue where the version picker listed versions of a page that RBAC hid from the user.
42
+ - f7fa203bf8f: Fixed an issue where the version picker disappeared on pages that had no items in the sidebar.
43
+ - Updated dependencies [0ada389a199]
44
+ - Updated dependencies [715697934a0]
45
+ - Updated dependencies [22f646e90b2]
46
+ - Updated dependencies [46dd0b49501]
47
+ - Updated dependencies [cff70028280]
48
+ - @redocly/api-docs@0.3.0-next.2
49
+ - @redocly/theme@0.70.0-next.2
50
+
3
51
  ## 0.138.0-next.1
4
52
 
5
53
  ### Patch Changes
@@ -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 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{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 M}from"./app/hooks/useAutoScroll";import{API_DOCS_TEMPLATE_ID as f}from"../constants/common";import{removeTrailingSlash as b}from"../utils/url/remove-trailing-slash";import{removeLeadingSlash as k}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 E,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 we(){const e=j(),[n,a]=S(e),t=h(),m=P();Q();const l=o.useMemo(()=>function(){const{palette:s}=v();return o.createElement(B,{palette:s})},[]);c(()=>{e?a(e):N({navigate:m,to:t.pathname+t.search+t.hash}).then(()=>a(z.loadSync(t.pathname)))},[t,m]),w();const r=U();return r?(console.log(r),o.createElement(E,{error:{message:r,name:""}})):n?o.createElement(q,null,o.createElement(V.Provider,{value:e||n},o.createElement(G,null,o.createElement(l,null),o.createElement(X,{enabled:process.env.NODE_ENV==="development"||K()},o.createElement(g,null))))):null}function te(){return M(),null}function d(){H(),ee(),A(),J();const e=W(),n=O(),{layout:a}=n,t=u(()=>({layout:a}),[a]),m=process.env.NODE_ENV!=="production",l=globalThis.SSR_OMIT_SUSPENSE,r=oe(e?.props?.ast),p=b(e?.slug||"");c(()=>{document.documentElement.classList.add("ready")},[]);const s=u(()=>[f].includes(e?.templateId??"")?{...e?.props,apiOptions:t}:e?.props,[e?.props,e?.templateId,t]);if(e?.props.pagePropGetterError?.message)return m?o.createElement(E,{error:{...e?.props?.pagePropGetterError}}):o.createElement(L,null);if(!!e?.props?.compilationErrors?.length)return e?.Template?o.createElement(e.Template,{pageProps:e?.props,children:r}):null;const i=()=>o.createElement(C,null,e?.templateId!==f&&o.createElement(te,null),o.createElement(R,{sidebar:o.createElement(I,{layoutControls:n})},o.createElement(F,{seo:e?.props.seo,slug:p}),e?.Template&&s?o.createElement(e.Template,{pageProps:s,children:r}):null),process.env.NODE_ENV!=="production"&&o.createElement($,null),o.createElement(Y,null),o.createElement(y,null));return l?i():o.createElement(D,null,i())}const Ue=[...Z.map(e=>({Component:d,path:k(T(e).substring(1)+"/*")})),{Component:d,path:"*"}];export{we as App,d as Page,Ue 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{useBreadcrumbs as m,useBanner as d,useCatalogClassic as l,useCurrentProduct as c,useGlobalData as p,useI18n as g,useI18nConfig as h,useL10n as f,useL10nConfig as T,usePageData as b,usePageSharedData as C,usePageVersions as k,usePreloadHistory as v,useProducts as w,useUserMenu as y,useSubmitFeedback as P,useTranslate as S,useTranslationKeys as D,useSidebarSiblingsData as $,usePageProps as E,useUserTeams as I,useMarkdownText as L,useMarkdocRenderer as M,useCodeHighlight as x,useLoadAndNavigate as F,useCatalog as H,useCatalogSort as R,useCatalogSearch as A,useFetchCatalogEntities as B,useFetchCatalogEntitiesRelations as G,useTelemetry as r,useMcpData as O,useFetchCatalogEntityRevisions as U}from"./app/hooks";import{Link as K}from"./app/Link";import{useFacetQuery as N,useSearch as Q,useAiSearch as V}from"./app/search";import{useSidebarItems as j}from"./app/Sidebar/useSidebarItems";import{PageDataContext as q}from"./providers/page-data/PageDataContext";const s={Template:({pageProps:a,children:t})=>e.createElement(u,{pageProps:{...a,metadata:{...a.metadata,markdoc:{tagList:[]}}}},t),templateId:"markdown",isPublic:!0,props:{seo:{title:"Test"},ast:{$$mdtype:"Tag",name:"div",children:[{$$mdtype:"Tag",name:"Heading",attributes:{id:"github-flavored-markdown",level:1},children:["GitHub-flavored markdown"]},{$$mdtype:"Tag",name:"p",attributes:{},children:["These exercises assume you have",{$$mdtype:"Tag",name:"a",attributes:{href:"https://docs.redoc.ly/"},children:["basic markdown knowledge"]},"."]},{$$mdtype:"Tag",name:"Heading",attributes:{id:"create-a-new-plain-markdown-page",level:2},children:["Create a new plain markdown page"]}]},lastModified:new Date("2022-01-01").toISOString()},slug:"",userData:{isAuthenticated:!1,name:"test name",picture:""},sidebar:null,sharedData:{},sharedDataIds:{}},z={useBreadcrumbs:m,useBanner:d,useCatalog:H,useCatalogSort:R,useCatalogSearch:A,useFetchCatalogEntities:B,useFetchCatalogEntitiesRelations:G,useFetchCatalogEntityRevisions:U,useCatalogClassic:l,useCurrentProduct:c,useGlobalData:p,useSearch:Q,useAiSearch:V,useFacetQuery:N,useI18n:g,useI18nConfig:h,useL10n:f,useL10nConfig:T,usePageData:b,usePageSharedData:C,usePageVersions:k,usePreloadHistory:v,useProducts:w,useUserMenu:y,useSidebarItems:j,useSidebarSiblingsData:$,useSubmitFeedback:P,useTranslate:S,useTranslationKeys:D,useUserTeams:I,usePageProps:E,useMarkdownText:L,useMarkdocRenderer:M,useCodeHighlight:x,useLoadAndNavigate:F,useTelemetry:r,useOtelTelemetry:r,useMcpData:O},J={LinkComponent:K},W={hooks:z,components:J,config:{}};function oe({children:a,customPageData:t}){return e.createElement(o,null,e.createElement(i,null,e.createElement(q.Provider,{value:{...s,...t,props:{...s.props,...t?.props}}},e.createElement(n.Provider,{value:W},a))))}export{oe 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 C,useI18nConfig as T,useL10n as b,useL10nConfig as k,usePageData as v,usePageSharedData as w,usePageVersions as y,usePreloadHistory as P,useProducts as S,useUserMenu as D,useSubmitFeedback as $,useTranslate as E,useTranslationKeys as I,useSidebarSiblingsData as L,usePageProps as M,useUserTeams as x,useMarkdownText as F,useMarkdocRenderer as H,useCodeHighlight as R,useLoadAndNavigate as A,useCatalog as B,useCatalogSort as G,useCatalogSearch as O,useFetchCatalogEntities as U,useFetchCatalogEntitiesRelations as K,useTelemetry as r,useMcpData as N,useFetchCatalogEntityRevisions as Q}from"./app/hooks";import{Link as V}from"./app/Link";import{useFacetQuery as j,useSearch as q,useAiSearch as z}from"./app/search";import{useSidebarItems as J}from"./app/Sidebar/useSidebarItems";import{PageDataContext as W}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:{}},X={useBreadcrumbs:l,useBanner:c,useConsent:p,useCatalog:B,useCatalogSort:G,useCatalogSearch:O,useFetchCatalogEntities:U,useFetchCatalogEntitiesRelations:K,useFetchCatalogEntityRevisions:Q,useCatalogClassic:g,useCurrentProduct:h,useGlobalData:f,useSearch:q,useAiSearch:z,useFacetQuery:j,useI18n:C,useI18nConfig:T,useL10n:b,useL10nConfig:k,usePageData:v,usePageSharedData:w,usePageVersions:y,usePreloadHistory:P,useProducts:S,useUserMenu:D,useSidebarItems:J,useSidebarSiblingsData:L,useSubmitFeedback:$,useTranslate:E,useTranslationKeys:I,useUserTeams:x,usePageProps:M,useMarkdownText:F,useMarkdocRenderer:H,useCodeHighlight:R,useLoadAndNavigate:A,useTelemetry:r,useOtelTelemetry:r,useMcpData:N},Y={LinkComponent:V},o={hooks:X,components:Y,config:{}};function ie({children:a,customPageData:t,config:n}){return e.createElement(i,null,e.createElement(m,null,e.createElement(W.Provider,{value:{...s,...t,props:{...s.props,...t?.props}}},e.createElement(u.Provider,{value:{...o,config:n??o.config}},a))))}export{ie as TestProvider};
@@ -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 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';
@@ -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 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{useCatalog as I}from"./catalog/useCatalog";import{useCatalogSort as A}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";export{B as useBanner,R as useBreadcrumbs,I as useCatalog,Q as useCatalogClassic,K as useCatalogSearch,A 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,E as usePreloadHistory,k as useSubmitFeedback,X as useTelemetry,C as useTranslate,c as useTranslationKeys,fe as useUserClaims,S 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};
@@ -0,0 +1,11 @@
1
+ import type { ConsentRuntime, UseConsentResult } from '@redocly/theme/core/types';
2
+ declare global {
3
+ interface Window {
4
+ redocly?: {
5
+ consent?: ConsentRuntime;
6
+ };
7
+ }
8
+ }
9
+ export declare function getConsentRuntime(): ConsentRuntime | undefined;
10
+ export declare function useConsent(): UseConsentResult;
11
+ //# sourceMappingURL=useConsent.d.ts.map
@@ -0,0 +1 @@
1
+ import{useCallback as c,useEffect as h,useState as C}from"react";import{useThemeConfig as D}from"@redocly/theme/core/hooks";function a(){return typeof window>"u"?void 0:window.redocly?.consent}function O(t){return{mode:t.mode,state:{...t.state},decided:t.decided,gpc:t.gpc,isDialogOpen:t.dialogOpen}}function b(){const{consent:t}=D()||{},[s,d]=C(void 0);h(()=>{const e=a();if(!e)return;const n=()=>d(O(e));n();const g=e.on("change",n),u=e.on("open",n),m=e.on("close",n);return()=>{g(),u(),m()}},[]);const o=c(e=>{const n=a();n&&e(n)},[]),i=c(()=>o(e=>e.open()),[o]),f=c(()=>o(e=>e.close()),[o]),p=c(()=>o(e=>e.accept()),[o]),l=c(()=>o(e=>e.reject()),[o]),r=c(e=>o(n=>n.save(e)),[o]);return{enabled:!!s,config:t,mode:s?.mode,state:s?.state,decided:s?.decided??!1,gpc:s?.gpc??!1,isDialogOpen:s?.isDialogOpen??!1,openDialog:i,closeDialog:f,accept:p,reject:l,save:r}}export{a as getConsentRuntime,b as useConsent};
@@ -0,0 +1,10 @@
1
+ import type { TFunction as I18nextTFunction } from 'i18next';
2
+ import type { TFunction } from '@redocly/theme/core/types';
3
+ export type L10nContextValue = {
4
+ lang: string;
5
+ translate: TFunction;
6
+ changeLanguage: () => Promise<I18nextTFunction>;
7
+ getKeys: () => string[];
8
+ };
9
+ export declare const L10nContext: import("react").Context<L10nContextValue | null>;
10
+ //# sourceMappingURL=L10nContext.d.ts.map
@@ -0,0 +1 @@
1
+ import{createContext as t}from"react";const e=t(null);export{e as L10nContext};
@@ -1 +1 @@
1
- import e from"i18next";import{useSyncExternalStore as g}from"react";const t=n=>(e.on("languageChanged",n),()=>e.off("languageChanged",n)),a=()=>e.language,u=()=>{const n=g(t,a,a);return{changeLanguage:e.changeLanguage,lang:n}};export{u as useL10n};
1
+ import e from"i18next";import{useContext as t,useSyncExternalStore as o}from"react";import{L10nContext as r}from"../L10nContext";const u=n=>(e.on("languageChanged",n),()=>e.off("languageChanged",n)),a=()=>e.language,L=()=>{const n=t(r),g=o(u,a,a);return n?{changeLanguage:n.changeLanguage,lang:n.lang}:{changeLanguage:e.changeLanguage,lang:g}};export{L as useL10n};
@@ -1 +1 @@
1
- import r from"i18next";import{useMemo as e}from"react";import{createTranslate as o}from"../../../../utils/l10n/create-translate.js";import{useL10n as n}from"./useL10n";const p=()=>{const{lang:t}=n();return{translate:e(()=>o(r.t),[t])}};export{p as useTranslate};
1
+ import e from"i18next";import{useContext as n,useMemo as a}from"react";import{createTranslate as s}from"../../../../utils/l10n/create-translate.js";import{L10nContext as m}from"../L10nContext";import{useL10n as l}from"./useL10n";const x=()=>{const o=n(m),{lang:t}=l(),r=a(()=>s(e.t),[t]);return{translate:o?.translate??r}};export{x as useTranslate};
@@ -1,2 +1,4 @@
1
+ import type { i18n } from 'i18next';
2
+ export declare function collectTranslationKeys(instance: i18n, lang: string | undefined): string[];
1
3
  export declare const useTranslationKeys: () => string[];
2
4
  //# sourceMappingURL=useTranslationKeys.d.ts.map
@@ -1 +1 @@
1
- import a from"i18next";import{useL10n as l}from"./useL10n";let i,d=[],u=!1;function g(){if(u)return;u=!0;const t=()=>{i=void 0,d=[]};a.on("added",t),a.on("removed",t),a.on("languageChanged",t)}function y(t){const e=new Set,o=new Set,s=n=>{if(!(!n||o.has(n))){o.add(n);for(const c of f(a.getResourceBundle(n,"translation")))e.add(c)}};s(t),s(a.language);for(const n of a.languages??[])s(n);const r=a.options?.resources??{};for(const n of Object.keys(r))if(!o.has(n)){o.add(n);for(const c of f(r[n]?.translation))e.add(c)}return[...e]}const k=()=>{const{lang:t}=l();return g(),i!==t&&(d=y(t),i=t),d};function f(t,e=""){if(!t||typeof t!="object"||Array.isArray(t))return e?[e]:[];const o=[];for(const s of Object.keys(t)){const r=e?`${e}.${s}`:s;o.push(...f(t[s],r))}return o}export{k as useTranslationKeys};
1
+ import a from"i18next";import{useContext as g}from"react";import{L10nContext as y}from"../L10nContext";import{useL10n as h}from"./useL10n";let c,f=[],l=!1;function m(){if(l)return;l=!0;const t=()=>{c=void 0,f=[]};a.on("added",t),a.on("removed",t),a.on("languageChanged",t)}function p(t,n){if(!t.isInitialized)return[];const s=new Set,e=new Set,r=o=>{if(!(!o||e.has(o))){e.add(o);for(const i of d(t.getResourceBundle(o,"translation")))s.add(i)}};r(n),r(t.language);for(const o of t.languages??[])r(o);const u=t.options?.resources??{};for(const o of Object.keys(u))if(!e.has(o)){e.add(o);for(const i of d(u[o]?.translation))s.add(i)}return[...s]}const j=()=>{const t=g(y),{lang:n}=h();return t?t.getKeys():(m(),c!==n&&(f=p(a,n),c=n),f)};function d(t,n=""){if(!t||typeof t!="object"||Array.isArray(t))return n?[n]:[];const s=[];for(const e of Object.keys(t)){const r=n?`${n}.${e}`:e;s.push(...d(t[e],r))}return s}export{p as collectTranslationKeys,j as useTranslationKeys};
@@ -0,0 +1,4 @@
1
+ import type { GlobalData } from '../../../types/index.js';
2
+ import type { L10nContextValue } from './L10nContext';
3
+ export declare function createSsrL10nContext(l10n: GlobalData['l10n'], locale: string): Promise<L10nContextValue>;
4
+ //# sourceMappingURL=ssrL10n.d.ts.map
@@ -0,0 +1 @@
1
+ import i from"i18next";import{DEFAULT_LOCALE_PLACEHOLDER as o}from"../../../constants/common.js";import{buildI18nConfig as s}from"../../../utils/l10n/build-i18n-config.js";import{createTranslate as c}from"../../../utils/l10n/create-translate.js";import{collectTranslationKeys as f}from"./hooks/useTranslationKeys";async function d(a,t){const e=i.createInstance(),r=a?.defaultLocale||o;await e.init(await s(a,r));let n;return{lang:t,translate:c(e.getFixedT(t)),changeLanguage:async()=>e.getFixedT(t),getKeys:()=>(n||(n=f(e,t)),n)}}export{d as createSsrL10nContext};
@@ -0,0 +1,2 @@
1
+ export { useWebMcpTools } from './useWebMcpTools.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ import{useWebMcpTools as p}from"./useWebMcpTools.js";export{p as useWebMcpTools};
@@ -0,0 +1,8 @@
1
+ import type { AgentTool } from '@redocly/api-docs';
2
+ import type { ApiDocsPageData, ToolContext } from '../types.js';
3
+ /**
4
+ * The API reference tools come from api-docs. Realm supplies the two host-specific pieces: its
5
+ * path prefix, and operation detail read from the page's Markdown mirror.
6
+ */
7
+ export declare function buildApiTools(context: ToolContext, apiDocs: ApiDocsPageData): AgentTool[];
8
+ //# sourceMappingURL=api-tools.d.ts.map
@@ -0,0 +1 @@
1
+ import{buildApiDocsAgentTools as e}from"@redocly/api-docs";import{fetchText as i,markdownPathForRoute as l}from"./shared.js";function u(o,r){return e({items:r.items,store:r.store,resolveDocUrl:o.withPrefix,getOperationDetail:t=>i(o.routeUrl(l(t.url)))})}export{u as buildApiTools};
@@ -0,0 +1,13 @@
1
+ export declare function isRecord(value: unknown): value is Record<string, unknown>;
2
+ /**
3
+ * Markdown mirror of a prefixed route, mirroring `getLlmsTxtMdPathBySlug` on the server. The site
4
+ * root resolves to `index.html.md`; every other route gains a `.md` suffix. The query and the
5
+ * fragment are dropped, so the suffix always lands on the pathname and can never select another route.
6
+ */
7
+ export declare function markdownPathForRoute(pathname: string): string;
8
+ /** Returns the normalized path only when it stays on this site, so a tool can never navigate off-origin. */
9
+ export declare function toSitePath(target: string): string | undefined;
10
+ export declare function fetchText(url: string): Promise<string | undefined>;
11
+ export declare function clampLimit(value: unknown, fallback: number, max: number): number;
12
+ export declare function joinField(value: string | string[] | undefined): string;
13
+ //# sourceMappingURL=shared.d.ts.map
@@ -0,0 +1 @@
1
+ import{withPathPrefix as s,withoutPathPrefix as c}from"@redocly/theme/core/utils";function a(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function f(t){const[r=t]=t.split("#"),[n=r]=r.split("?"),e=c(n),i=e.length>1?e.replace(/\/$/,""):"/";return s(`${i}${i==="/"?"index.html.md":".md"}`)}const o="https://site.invalid";function p(t){const r=t.trim();if(!r.startsWith("/"))return;const n=URL.parse(r,o);if(n?.origin===o)return`${n.pathname}${n.search}${n.hash}`}async function h(t){const r=await fetch(t,{headers:{accept:"text/plain"}});if(r.ok)return await r.text()}function d(t,r,n){const e=typeof t=="number"?t:Number(t);return!Number.isFinite(e)||e<=0?r:Math.min(Math.floor(e),n)}function m(t){return Array.isArray(t)?t.join(" "):t??""}export{d as clampLimit,h as fetchText,a as isRecord,m as joinField,f as markdownPathForRoute,p as toSitePath};
@@ -0,0 +1,5 @@
1
+ import type { AgentTool } from '@redocly/api-docs';
2
+ import type { ToolContext } from '../types.js';
3
+ /** Tools registered on every page of the site. */
4
+ export declare function buildSiteTools(context: ToolContext): AgentTool[];
5
+ //# sourceMappingURL=site-tools.d.ts.map
@@ -0,0 +1,3 @@
1
+ import{agentErrorResult as o,agentJsonResult as h,agentTextResult as d,collectOperations as v}from"@redocly/api-docs";import{ServerRoutes as b}from"../../../../constants/api.js";import{AGENT_SKILLS_BASE as S}from"../../../../constants/common.js";import{clampLimit as P,fetchText as g,isRecord as m,joinField as f,markdownPathForRoute as T,toSitePath as y}from"./shared.js";const A=`${S}/index.json`,_="mcp",O="webmcp-browser-agent",R="/llms.txt",w=10,E=50,H=3;function G(e){return[...e.feedbackHidden?[]:[$(e)],{name:"get_current_page",title:"Get current page",description:"Report which documentation page the user is looking at right now, including the product and version in scope and whether it is an API reference page. Call this first so an answer matches what is on screen.",inputSchema:{type:"object",properties:{},additionalProperties:!1},annotations:{readOnlyHint:!0},execute:async()=>j(e)},{name:"search_docs",title:"Search documentation",description:"Search this documentation site and return matching pages with their titles and URLs. Use it to find the page that answers a question before reading it.",inputSchema:{type:"object",properties:{query:{type:"string",description:"What to search for"},limit:{type:"integer",description:`Maximum number of results, ${w} by default`}},required:["query"],additionalProperties:!1},annotations:{readOnlyHint:!0,untrustedContentHint:!0},execute:async t=>C(e,t)},{name:"read_page",title:"Read a page",description:"Return the full Markdown source of a documentation page. Omit the url to read the page the user is currently on.",inputSchema:{type:"object",properties:{url:{type:"string",description:"Site-relative page path, for example /guides/quickstart"}},additionalProperties:!1},annotations:{readOnlyHint:!0,untrustedContentHint:!0},execute:async t=>L(e,t)},{name:"get_site_overview",title:"Get site overview",description:"Return the outline of this documentation site: its sections and the pages inside them, limited to what the current user may see. Use it to orient before searching.",inputSchema:{type:"object",properties:{},additionalProperties:!1},annotations:{readOnlyHint:!0,untrustedContentHint:!0},execute:async()=>q(e)},{name:"read_skill",title:"Read an agent skill",description:"List the agent skills this site publishes, or read one by name. A skill explains how to carry out a task against the documented product.",inputSchema:{type:"object",properties:{name:{type:"string",description:"Skill name; omit to list every skill"}},additionalProperties:!1},annotations:{readOnlyHint:!0,untrustedContentHint:!0},execute:async t=>U(e,t)},{name:"navigate_page",title:"Open a page",description:"Move the browser tab to another page of this documentation site, so the user sees what an answer is based on. Accepts site-relative paths only.",inputSchema:{type:"object",properties:{url:{type:"string",description:"Site-relative page path, optionally with a #section anchor"}},required:["url"],additionalProperties:!1},annotations:{readOnlyHint:!1},execute:async t=>M(e,t)}]}async function j(e){const t=e.versions.find(n=>n.active);return h({url:e.pathname,title:e.pageTitle??document.title,locale:e.locale,product:e.product,version:t?.label??t?.version,isApiReference:!!e.apiDocs,...e.apiDocs?{apiBasePath:e.withPrefix(e.apiDocs.baseSlug),apiSpecType:e.apiDocs.store.specType,operationCount:v(e.apiDocs.items).length}:{}})}async function C(e,t){const n=typeof t.query=="string"?t.query.trim():"";if(!n)return o("Provide a query to search for.");const i=P(t.limit,w,E),a=await fetch(e.sitePathUrl(b.SEARCH),{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({query:n,locale:e.locale})});if(!a.ok)return o(`Search failed with status ${a.status}.`);const r=await a.json(),s=m(r)&&m(r.documents)?r.documents:{},u=Object.entries(s).flatMap(([l,p])=>(Array.isArray(p)?p:[]).map(c=>({group:l,item:c}))).slice(0,i).map(({group:l,item:p})=>{const c=p.document;return{title:f(c?.title),url:c?.url&&e.withPrefix(c.url),section:l,...c?.httpMethod?{method:c.httpMethod.toUpperCase(),path:f(c.httpPath)}:{},...c?.deprecated?{deprecated:!0}:{},snippet:f(c?.text).slice(0,300)}});return u.length?h({query:n,resultCount:u.length,results:u}):d(`No documentation pages matched "${n}".`)}async function L(e,t){const n=typeof t.url=="string"&&t.url.trim()?t.url.trim():e.pathname,i=y(n);if(!i)return o('Provide a site-relative path that starts with "/".');const a=await g(e.routeUrl(T(i)));return a?d(a):o(`${i} has no Markdown version. Either the path is wrong, or the page is built from code rather than Markdown. Use search_docs to find a documentation page.`)}async function q(e){const t=k(e.sidebarItems,e.withPrefix,0);if(t.length)return h({product:e.product,pages:t});const n=await g(e.sitePathUrl(R));return n?d(n):o("This site publishes no navigation tree.")}function k(e,t,n){if(n>=H)return[];const i=[];for(const a of e){if(!m(a))continue;const r=typeof a.label=="string"?a.label:"",s=typeof a.link=="string"?a.link:void 0;if(!r&&!s)continue;const u=Array.isArray(a.items)?k(a.items,t,n+1):[];i.push({title:r,...s?{url:t(s)}:{},...u.length?{pages:u}:{}})}return i}async function U(e,t){const n=await fetch(e.sitePathUrl(A),{headers:{accept:"application/json"}});if(!n.ok)return o("This site does not publish agent skills.");const i=await n.json(),a=m(i)&&Array.isArray(i.skills)?i.skills:[],r=typeof t.name=="string"?t.name.trim():"";if(!r)return h({skills:a.map(l=>({name:l.name,description:l.description}))});const s=a.find(l=>l.name.toLowerCase()===r.toLowerCase());if(!s){const l=a.map(p=>p.name).join(", ");return o(`No skill named "${r}". Available skills: ${l||"none"}.`)}const u=await g(e.routeUrl(s.url));return u?d(u):o(`The "${s.name}" skill could not be read.`)}function $(e){return{name:"leave_feedback",title:"Leave feedback on a page",description:"Report that a documentation page is wrong, outdated, confusing or incomplete. Use it only when the user agrees, and summarize the problem in their words. Reports reach the team that owns the page.",inputSchema:{type:"object",properties:{summary:{type:"string",description:"One sentence naming the problem"},details:{type:"string",description:"What is wrong and what the page should say"},url:{type:"string",description:"Site-relative path of the page; the current page by default"}},required:["summary"],additionalProperties:!1},annotations:{readOnlyHint:!1,consequentialHint:!0},execute:async t=>D(e,t)}}async function D(e,t){const n=typeof t.summary=="string"?t.summary.trim():"";if(!n)return o("Describe the problem in one sentence.");const i=typeof t.details=="string"?t.details.trim():"",a=typeof t.url=="string"&&t.url.trim()?t.url.trim():e.pathname,r=y(a);if(!r)return o('Provide a site-relative path that starts with "/".');const s=await fetch(e.sitePathUrl(b.FEEDBACK),{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({component:"comment",path:e.routeUrl(r),comment:i?`${n}
2
+
3
+ ${i}`:n,agent:O,origin:_})});return s.ok?d(`Thanks. The feedback about ${r} reached the documentation team.`):o(s.status===403||s.status===404?`Feedback cannot be left for ${r}.`:`Feedback could not be sent, status ${s.status}.`)}async function M(e,t){const n=typeof t.url=="string"?y(t.url):void 0;return n?(await e.navigate(n),d(`Opened ${n}.`)):o('Provide a site-relative path that starts with "/". This tool cannot leave the documentation site.')}export{G as buildSiteTools};
@@ -0,0 +1,36 @@
1
+ import type { ApiItem, ApiStore } from '@redocly/api-docs';
2
+ /** The api-docs payload the portal publishes as shared page data on API reference pages. */
3
+ export type ApiDocsPageData = {
4
+ items: ApiItem[];
5
+ store: ApiStore;
6
+ baseSlug: string;
7
+ };
8
+ export type PageVersion = {
9
+ label?: string;
10
+ version?: string;
11
+ active?: boolean;
12
+ };
13
+ /** Everything the tool builders need from the running page. */
14
+ export type ToolContext = {
15
+ /** Current route pathname, path prefix included. */
16
+ pathname: string;
17
+ pageTitle?: string;
18
+ locale: string;
19
+ product?: string;
20
+ versions: PageVersion[];
21
+ /** The site's navigation tree, already filtered by what this reader may see. */
22
+ sidebarItems: unknown[];
23
+ /** Client-side navigation that resolves once the new page has loaded. */
24
+ navigate: (to: string) => Promise<void>;
25
+ /** Absolute URL for a route that already carries the path prefix. */
26
+ routeUrl: (route: string) => string;
27
+ /** Absolute URL for a root-relative path that still needs the path prefix. */
28
+ sitePathUrl: (path: string) => string;
29
+ /** Applies the site's path prefix to a link that the page data stores un-prefixed. */
30
+ withPrefix: (path: string) => string;
31
+ /** `feedback.hide` is set, so the site publishes no feedback tool. */
32
+ feedbackHidden: boolean;
33
+ /** Present only on API reference pages. */
34
+ apiDocs?: ApiDocsPageData;
35
+ };
36
+ //# sourceMappingURL=types.d.ts.map
File without changes
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Publishes this site's tools to browser AI agents through WebMCP.
3
+ *
4
+ * Site-wide tools register once and read the live page context on every call. API reference tools
5
+ * register only while the reader is on an API page and unregister on the way out, which fires
6
+ * `toolchange` so the agent re-reads the tool list.
7
+ */
8
+ export declare function useWebMcpTools(): void;
9
+ //# sourceMappingURL=useWebMcpTools.d.ts.map
@@ -0,0 +1 @@
1
+ import{useEffect as u,useRef as S}from"react";import{useLocation as h,useNavigate as A}from"react-router";import{withPathPrefix as g}from"@redocly/theme/core/utils";import{useThemeConfig as R}from"@redocly/theme/core/hooks";import{usePageProps as v,usePageSharedData as C,usePageVersions as L,useSidebarItemsData as x}from"../../providers/page-data/hooks";import{useCurrentProduct as D}from"../hooks/products/useCurrentProduct";import{useL10nConfig as U}from"../hooks/useL10nConfig";import{loadAndNavigate as E}from"../utils/loadAndNavigate";import{telemetry as m}from"../telemetry/index.js";import{registerAgentTools as p}from"@redocly/api-docs";import{buildApiTools as O}from"./tools/api-tools.js";import{buildSiteTools as y}from"./tools/site-tools.js";function z(){const r=h(),o=A(),{currentLocale:n}=U(),{versions:b}=L(),T=x(),i=D(),P=v(),s=C("apiDocsStore"),w=s?.baseSlug,a=R().feedback?.hide===!0,c={pathname:r.pathname,pageTitle:P.seo?.title,locale:n,product:i?.name??i?.slug,versions:b,sidebarItems:T,apiDocs:s,feedbackHidden:a,navigate:e=>E({navigate:o,to:e}),withPrefix:g,routeUrl:e=>new URL(e,window.location.origin).toString(),sitePathUrl:e=>new URL(g(e),window.location.origin).toString()},t=S(c);Object.assign(t.current,c),u(()=>{const e=new AbortController;return p(y(t.current),e.signal,d("site")),()=>e.abort()},[a]),u(()=>{const e=t.current.apiDocs;if(!e)return;const l=new AbortController;return p(O(t.current,e),l.signal,d("apiReference")),()=>l.abort()},[w])}const f={id:"agentTools",object:"feature",uri:"urn:redocly:realm:ui:feature:agentTools"};function d(r){return{registered:o=>m.sendAgentToolsRegisteredMessage([{...f,toolCount:o,scope:r}]),called:(o,n)=>m.sendAgentToolCalledMessage([{...f,toolName:o,outcome:n}])}}export{z as useWebMcpTools};
@@ -1 +1 @@
1
- import e from"react";import{ThemeDataContext as m,SearchSessionProvider as d}from"@redocly/theme/core/contexts";import{useBreadcrumbs as g,useBanner as p,useCatalogClassic as b,useCurrentProduct as f,useGlobalData as s,useI18n as C,useI18nConfig as h,useL10n as S,useL10nConfig as P,usePageData as r,usePageSharedData as T,usePageVersions as D,usePreloadHistory as M,useProducts as k,useUserMenu as v,useSubmitFeedback as F,useTranslate as y,useTranslationKeys as E,useSidebarSiblingsData as L,usePageProps as R,useUserTeams as O,useMarkdownText as w,useMarkdocRenderer as x,useCodeHighlight as A,useLoadAndNavigate as I,useCatalog as j,useCatalogSort as B,useCatalogSearch as H,useFetchCatalogEntities as N,useFetchCatalogEntitiesRelations as U,useFetchCatalogEntityRevisions as _,useTelemetry as n,useMcpData as G}from"../../app/hooks";import{Link as K}from"../../app/Link";import{useFacetQuery as Q,useSearch as V,useAiSearch as W}from"../../app/search";import{useSidebarItems as q}from"../../app/Sidebar/useSidebarItems";import{deepMerge as z}from"../../../utils/object/deep-merge";import{allowlistObject as J}from"../../../utils/object/allowlist-object";const X=["title","description","seo","sidebar","excludeFromSearch","template","redirects","rbac","metadata","slug","codeSnippet","breadcrumbs","markdown","seo","navbar","footer","colorMode","feedback","navigation"],Y={useBreadcrumbs:g,useBanner:p,useCatalog:j,useCatalogSort:B,useCatalogSearch:H,useFetchCatalogEntities:N,useFetchCatalogEntitiesRelations:U,useFetchCatalogEntityRevisions:_,useCatalogClassic:b,useCurrentProduct:f,useGlobalData:s,useSearch:V,useAiSearch:W,useFacetQuery:Q,useI18n:C,useI18nConfig:h,useL10n:S,useL10nConfig:P,usePageData:r,usePageSharedData:T,usePageVersions:D,usePreloadHistory:M,useProducts:k,useUserMenu:v,useSidebarItems:q,useSidebarSiblingsData:L,useSubmitFeedback:F,useTranslate:y,useTranslationKeys:E,useUserTeams:O,usePageProps:R,useMarkdownText:w,useMarkdocRenderer:x,useCodeHighlight:A,useLoadAndNavigate:I,useTelemetry:n,useOtelTelemetry:n,useMcpData:G},Z={LinkComponent:K};function ue({children:u}){const{props:t}=r()||{},a=s(),o=e.useMemo(()=>a||{},[a]),i=e.useMemo(()=>{const l=J(t?.frontmatter||{},X);return z(o,l)},[o,t?.frontmatter]),c={hooks:Y,components:Z,config:i};return e.createElement(d,null,e.createElement(m.Provider,{value:c},u))}export{ue as ThemeDataProvider};
1
+ import e from"react";import{ThemeDataContext as m,SearchSessionProvider as d}from"@redocly/theme/core/contexts";import{useBreadcrumbs as g,useBanner as p,useConsent as b,useCatalogClassic as f,useCurrentProduct as C,useGlobalData as s,useI18n as h,useI18nConfig as S,useL10n as P,useL10nConfig as T,usePageData as r,usePageSharedData as D,usePageVersions as M,usePreloadHistory as k,useProducts as v,useUserMenu as F,useSubmitFeedback as y,useTranslate as E,useTranslationKeys as L,useSidebarSiblingsData as R,usePageProps as O,useUserTeams as w,useMarkdownText as x,useMarkdocRenderer as A,useCodeHighlight as I,useLoadAndNavigate as j,useCatalog as B,useCatalogSort as H,useCatalogSearch as N,useFetchCatalogEntities as U,useFetchCatalogEntitiesRelations as _,useFetchCatalogEntityRevisions as G,useTelemetry as n,useMcpData as K}from"../../app/hooks";import{Link as Q}from"../../app/Link";import{useFacetQuery as V,useSearch as W,useAiSearch as q}from"../../app/search";import{useSidebarItems as z}from"../../app/Sidebar/useSidebarItems";import{deepMerge as J}from"../../../utils/object/deep-merge";import{allowlistObject as X}from"../../../utils/object/allowlist-object";const Y=["title","description","seo","sidebar","excludeFromSearch","template","redirects","rbac","metadata","slug","codeSnippet","breadcrumbs","markdown","seo","navbar","footer","colorMode","feedback","navigation"],Z={useBreadcrumbs:g,useBanner:p,useConsent:b,useCatalog:B,useCatalogSort:H,useCatalogSearch:N,useFetchCatalogEntities:U,useFetchCatalogEntitiesRelations:_,useFetchCatalogEntityRevisions:G,useCatalogClassic:f,useCurrentProduct:C,useGlobalData:s,useSearch:W,useAiSearch:q,useFacetQuery:V,useI18n:h,useI18nConfig:S,useL10n:P,useL10nConfig:T,usePageData:r,usePageSharedData:D,usePageVersions:M,usePreloadHistory:k,useProducts:v,useUserMenu:F,useSidebarItems:z,useSidebarSiblingsData:R,useSubmitFeedback:y,useTranslate:E,useTranslationKeys:L,useUserTeams:w,usePageProps:O,useMarkdownText:x,useMarkdocRenderer:A,useCodeHighlight:I,useLoadAndNavigate:j,useTelemetry:n,useOtelTelemetry:n,useMcpData:K},$={LinkComponent:Q};function ie({children:u}){const{props:t}=r()||{},a=s(),o=e.useMemo(()=>a||{},[a]),i=e.useMemo(()=>{const l=X(t?.frontmatter||{},Y);return J(o,l)},[o,t?.frontmatter]),c={hooks:Z,components:$,config:i};return e.createElement(d,null,e.createElement(m.Provider,{value:c},u))}export{ie as ThemeDataProvider};
@@ -2,5 +2,6 @@ export { App, routes } from './App.js';
2
2
  export { ErrorDetails } from './app/Error/ErrorDetails.js';
3
3
  export { Loader } from './runtime/loader.js';
4
4
  export { ServerStyleSheet, StyleSheetManager } from 'styled-components';
5
- export declare const initL10n: (locale: string) => Promise<void>;
5
+ export { L10nContext } from './app/l10n/L10nContext.js';
6
+ export { createSsrL10nContext } from './app/l10n/ssrL10n.js';
6
7
  //# sourceMappingURL=server-entry.d.ts.map
@@ -1 +1 @@
1
- import{initL10n as e}from"./app/l10n/initL10n.js";import{globalData as o}from"./runtime/loader.js";import{App as m,routes as l}from"./App.js";import{ErrorDetails as x}from"./app/Error/ErrorDetails.js";import{Loader as s}from"./runtime/loader.js";import{ServerStyleSheet as g,StyleSheetManager as h}from"styled-components";const a=r=>e(o?.l10n,r);export{m as App,x as ErrorDetails,s as Loader,g as ServerStyleSheet,h as StyleSheetManager,a as initL10n,l as routes};
1
+ import{App as o,routes as t}from"./App.js";import{ErrorDetails as x}from"./app/Error/ErrorDetails.js";import{Loader as m}from"./runtime/loader.js";import{ServerStyleSheet as a,StyleSheetManager as n}from"styled-components";import{L10nContext as s}from"./app/l10n/L10nContext.js";import{createSsrL10nContext as h}from"./app/l10n/ssrL10n.js";export{o as App,x as ErrorDetails,s as L10nContext,m as Loader,a as ServerStyleSheet,n as StyleSheetManager,h as createSsrL10nContext,t as routes};
@@ -112,6 +112,7 @@ export declare const FEATURE: {
112
112
  readonly gatewayFetchQuotaPerDay: 'gatewayFetchQuotaPerDay';
113
113
  readonly gatewayFetchBudgetPerExec: 'gatewayFetchBudgetPerExec';
114
114
  readonly banner: 'banner';
115
+ readonly cookieConsent: 'cookieConsent';
115
116
  };
116
117
  export declare const GATEWAY_FETCH_LIMIT_DEFAULTS: {
117
118
  readonly ratePerMin: 60;
@@ -1 +1 @@
1
- const s={AUTHORIZATION:"authorization",IDP_ID_TOKEN:"idp_id_token",IDP_ACCESS_TOKEN:"idp_access_token",IDP_REFRESH_TOKEN:"idp_refresh_token",FEDERATED_ACCESS_TOKEN:"federated_access_token",FEDERATED_ID_TOKEN:"federated_id_token"},n="post_logout",_="openapi_docs",E="asyncapi_docs",p="graphql_docs",A="api_docs",i="/_spec-gql",S="markdoc",d="tags",c="*",L={[c]:"read"},T=["openid","email"],I=1440*60,O=720*60*60,R="anonymous",l="authenticated",x="**",C="Reunite",P="translations.yaml",D="redocly.yaml",N="@redocly/theme",g="@theme",m="@skills",u="SKILL.md",M="/.well-known/agent-skills",U="/.well-known/agent-card.json",F="/a2a",h="/.well-known/mcp/server-card.json",y="/app-data.json",k="/eject-component";var t;(function(e){e.BUILD="build",e.DEVELOP="develop",e.PREPARE="prepare"})(t||(t={}));var o;(function(e){e.RATING="rating",e.SENTIMENT="sentiment",e.COMMENT="comment",e.MOOD="mood",e.PROBLEM="problem",e.SCALE="scale"})(o||(o={}));var r;(function(e){e.AI_SEARCH="aiSearch",e.MCP="mcp"})(r||(r={}));const b="/login",G="/invite",v={AUTH0_PASS:"/auth/auth0-pass"},H={NotExist:"ENOENT"},w="default_locale",K="sidebar-",B="PUBLIC_",f="branch.",V=["BROKEN_LINK","MARKDOC","RESOLVE"],j=["logo","navbar","products","footer","sidebar","scripts","links","feedback","search","aiAssistant","colorMode","palette","navigation","codeSnippet","markdown","openapi","graphql","analytics","userMenu","versionPicker","breadcrumbs","catalog","entitiesCatalog","scorecard","scorecards","scorecardClassic","mcp","banner"],a="redocly_category",q="redocly_product",Q="redocly_version",X="redocly_teams",W=a,z={asyncapi:"asyncapi",apiFunctions:"apiFunctions",reactPages:"reactPages",catalog:"catalog",catalogClassic:"catalogClassic",lint:"lint",scorecard:"scorecard",scorecards:"scorecards",l10n:"l10n",openapi:"openapi",graphql:"graphql",markdown:"markdown",devOnboarding:"devOnboarding",seo:"seo",redirects:"redirects",customPlugins:"customPlugins",themeEjecting:"themeEjecting",products:"products",breadcrumbs:"breadcrumbs",mockServer:"mockServer",sso:"sso",rbac:"rbac",analytics:"analytics",removeAttribution:"removeAttribution",advancedSearch:"advancedSearch",soap:"soap",ssoDirect:"ssoDirect",codeWalkthrough:"codeWalkthrough",aiSearchLimit:"aiSearchLimit",kvStorageLimit:"kvStorageLimit",mcp:"mcp",mcpGateway:"mcpGateway",mcpMode:"mcpMode",gatewayFetchRatePerMin:"gatewayFetchRatePerMin",gatewayFetchQuotaPerDay:"gatewayFetchQuotaPerDay",gatewayFetchBudgetPerExec:"gatewayFetchBudgetPerExec",banner:"banner"},J={ratePerMin:60,quotaPerDay:2e3,budgetPerExec:25};export{F as A2A_SLUG,U as AGENT_CARD_SLUG,M as AGENT_SKILLS_BASE,A as API_DOCS_TEMPLATE_ID,E as ASYNC_API_DOCS_TEMPLATE_ID,s as AuthCookieNames,f as BRANCH_ENV_PREFIX,D as CONFIG_FILE_NAME,S as CUSTOM_MARKDOC_OPTIONS_PATH,d as CUSTOM_MARKDOC_TAGS_PATH,R as DEFAULT_ANONYMOUS_VISITOR_TEAM,l as DEFAULT_AUTHENTICATED_TEAM,I as DEFAULT_COOKIE_EXPIRATION,w as DEFAULT_LOCALE_PLACEHOLDER,x as DEFAULT_RBAC_SCOPE,C as DEFAULT_SSO_IDP_TITLE,N as DEFAULT_THEME_NAME,b as DEV_LOGIN_SLUG,k as EJECT_COMPONENT_URL,v as ExternalRoutes,z as FEATURE,o as FEEDBACK_TYPES,H as FsErrors,J as GATEWAY_FETCH_LIMIT_DEFAULTS,y as GLOBAL_DATA_URL,i as GRAPHQL_SPEC_SLUG,p as GRAPHQL_TEMPLATE_ID,G as INVITE_SLUG,V as MARKDOC_ERROR_TYPES,h as MCP_SERVER_CARD_SLUG,_ as OPENAPI_DOCS_TEMPLATE_ID,O as POST_LOGOUT_COOKIE_EXPIRATION,n as POST_LOGOUT_COOKIE_NAME,B as PUBLIC_ENV_PREFIX,L as PUBLIC_RBAC_SCOPE_ITEM,c as RBAC_ALL_OTHER_TEAMS,T as REQUIRED_OIDC_SCOPES,r as RbacFeatures,a as SEARCH_CATEGORY_FIELD,W as SEARCH_GROUP_FACET_FIELD,q as SEARCH_PRODUCT_FIELD,X as SEARCH_RBAC_FIELD,Q as SEARCH_VERSION_FIELD,K as SIDEBAR_PREFIX,P as TRANSLATIONS_FILE_NAME,j as UI_ACCESSIBLE_CONFIG_PROPS,m as USER_SKILLS_ALIAS,u as USER_SKILL_FILENAME,g as USER_THEME_ALIAS,t as cliCommandNames};
1
+ const s={AUTHORIZATION:"authorization",IDP_ID_TOKEN:"idp_id_token",IDP_ACCESS_TOKEN:"idp_access_token",IDP_REFRESH_TOKEN:"idp_refresh_token",FEDERATED_ACCESS_TOKEN:"federated_access_token",FEDERATED_ID_TOKEN:"federated_id_token"},n="post_logout",_="openapi_docs",E="asyncapi_docs",p="graphql_docs",i="api_docs",A="/_spec-gql",S="markdoc",d="tags",c="*",L={[c]:"read"},T=["openid","email"],I=1440*60,O=720*60*60,R="anonymous",l="authenticated",C="**",x="Reunite",P="translations.yaml",D="redocly.yaml",N="@redocly/theme",g="@theme",m="@skills",u="SKILL.md",M="/.well-known/agent-skills",U="/.well-known/agent-card.json",F="/a2a",h="/.well-known/mcp/server-card.json",y="/app-data.json",k="/eject-component";var t;(function(e){e.BUILD="build",e.DEVELOP="develop",e.PREPARE="prepare"})(t||(t={}));var o;(function(e){e.RATING="rating",e.SENTIMENT="sentiment",e.COMMENT="comment",e.MOOD="mood",e.PROBLEM="problem",e.SCALE="scale"})(o||(o={}));var r;(function(e){e.AI_SEARCH="aiSearch",e.MCP="mcp"})(r||(r={}));const b="/login",G="/invite",v={AUTH0_PASS:"/auth/auth0-pass"},H={NotExist:"ENOENT"},w="default_locale",K="sidebar-",B="PUBLIC_",f="branch.",V=["BROKEN_LINK","MARKDOC","RESOLVE"],j=["logo","navbar","products","footer","sidebar","scripts","links","feedback","search","aiAssistant","colorMode","palette","navigation","codeSnippet","markdown","openapi","graphql","analytics","consent","userMenu","versionPicker","breadcrumbs","catalog","entitiesCatalog","scorecard","scorecards","scorecardClassic","mcp","banner"],a="redocly_category",q="redocly_product",Q="redocly_version",X="redocly_teams",W=a,z={asyncapi:"asyncapi",apiFunctions:"apiFunctions",reactPages:"reactPages",catalog:"catalog",catalogClassic:"catalogClassic",lint:"lint",scorecard:"scorecard",scorecards:"scorecards",l10n:"l10n",openapi:"openapi",graphql:"graphql",markdown:"markdown",devOnboarding:"devOnboarding",seo:"seo",redirects:"redirects",customPlugins:"customPlugins",themeEjecting:"themeEjecting",products:"products",breadcrumbs:"breadcrumbs",mockServer:"mockServer",sso:"sso",rbac:"rbac",analytics:"analytics",removeAttribution:"removeAttribution",advancedSearch:"advancedSearch",soap:"soap",ssoDirect:"ssoDirect",codeWalkthrough:"codeWalkthrough",aiSearchLimit:"aiSearchLimit",kvStorageLimit:"kvStorageLimit",mcp:"mcp",mcpGateway:"mcpGateway",mcpMode:"mcpMode",gatewayFetchRatePerMin:"gatewayFetchRatePerMin",gatewayFetchQuotaPerDay:"gatewayFetchQuotaPerDay",gatewayFetchBudgetPerExec:"gatewayFetchBudgetPerExec",banner:"banner",cookieConsent:"cookieConsent"},J={ratePerMin:60,quotaPerDay:2e3,budgetPerExec:25};export{F as A2A_SLUG,U as AGENT_CARD_SLUG,M as AGENT_SKILLS_BASE,i as API_DOCS_TEMPLATE_ID,E as ASYNC_API_DOCS_TEMPLATE_ID,s as AuthCookieNames,f as BRANCH_ENV_PREFIX,D as CONFIG_FILE_NAME,S as CUSTOM_MARKDOC_OPTIONS_PATH,d as CUSTOM_MARKDOC_TAGS_PATH,R as DEFAULT_ANONYMOUS_VISITOR_TEAM,l as DEFAULT_AUTHENTICATED_TEAM,I as DEFAULT_COOKIE_EXPIRATION,w as DEFAULT_LOCALE_PLACEHOLDER,C as DEFAULT_RBAC_SCOPE,x as DEFAULT_SSO_IDP_TITLE,N as DEFAULT_THEME_NAME,b as DEV_LOGIN_SLUG,k as EJECT_COMPONENT_URL,v as ExternalRoutes,z as FEATURE,o as FEEDBACK_TYPES,H as FsErrors,J as GATEWAY_FETCH_LIMIT_DEFAULTS,y as GLOBAL_DATA_URL,A as GRAPHQL_SPEC_SLUG,p as GRAPHQL_TEMPLATE_ID,G as INVITE_SLUG,V as MARKDOC_ERROR_TYPES,h as MCP_SERVER_CARD_SLUG,_ as OPENAPI_DOCS_TEMPLATE_ID,O as POST_LOGOUT_COOKIE_EXPIRATION,n as POST_LOGOUT_COOKIE_NAME,B as PUBLIC_ENV_PREFIX,L as PUBLIC_RBAC_SCOPE_ITEM,c as RBAC_ALL_OTHER_TEAMS,T as REQUIRED_OIDC_SCOPES,r as RbacFeatures,a as SEARCH_CATEGORY_FIELD,W as SEARCH_GROUP_FACET_FIELD,q as SEARCH_PRODUCT_FIELD,X as SEARCH_RBAC_FIELD,Q as SEARCH_VERSION_FIELD,K as SIDEBAR_PREFIX,P as TRANSLATIONS_FILE_NAME,j as UI_ACCESSIBLE_CONFIG_PROPS,m as USER_SKILLS_ALIAS,u as USER_SKILL_FILENAME,g as USER_THEME_ALIAS,t as cliCommandNames};