@redocly/reef 0.132.0-next.0 → 0.132.0-next.2

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 (121) hide show
  1. package/CHANGELOG.md +62 -0
  2. package/dist/client/App.js +1 -1
  3. package/dist/client/TestProvider.js +1 -1
  4. package/dist/client/app/hooks/catalog/useCatalogSort.d.ts +3 -4
  5. package/dist/client/app/hooks/catalog/useFetchCatalogEntities.js +1 -1
  6. package/dist/client/app/hooks/catalog/useFetchCatalogEntitiesRelations.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/markdown/useMarkdocRenderer.d.ts +3 -0
  10. package/dist/client/app/hooks/markdown/useMarkdocRenderer.js +1 -0
  11. package/dist/client/app/hooks/useBanner.d.ts +3 -5
  12. package/dist/client/app/hooks/useBanner.js +1 -1
  13. package/dist/client/app/hooks/utils/match-banner-target.d.ts +2 -2
  14. package/dist/client/app/hooks/utils/match-banner-target.js +1 -1
  15. package/dist/client/app/l10n/hooks/useTranslate.js +1 -1
  16. package/dist/client/app/markdoc/custom-components/ExcalidrawRenderer.d.ts +8 -0
  17. package/dist/client/app/markdoc/custom-components/ExcalidrawRenderer.js +14 -0
  18. package/dist/client/app/markdoc/custom-components/index.d.ts +1 -0
  19. package/dist/client/app/markdoc/custom-components/index.js +1 -1
  20. package/dist/client/app/utils/loadAndNavigate.js +1 -1
  21. package/dist/client/app/utils/scroll-to-anchor.d.ts +3 -0
  22. package/dist/client/app/utils/scroll-to-anchor.js +1 -0
  23. package/dist/client/providers/theme/ThemeDataProvider.js +1 -1
  24. package/dist/constants/common.js +1 -1
  25. package/dist/markdoc/nodes/fence/index.js +1 -1
  26. package/dist/markdoc/tags/excalidraw.d.ts +3 -0
  27. package/dist/markdoc/tags/excalidraw.js +1 -0
  28. package/dist/markdoc/tags/index.d.ts +4 -0
  29. package/dist/markdoc/tags/index.js +1 -1
  30. package/dist/server/config/env-schema.d.ts +3 -0
  31. package/dist/server/config/env-schemas/auth.d.ts +3 -0
  32. package/dist/server/config/env-schemas/auth.js +1 -1
  33. package/dist/server/fs/fast-mtime.js +3 -3
  34. package/dist/server/plugins/api-functions/helpers/parse-route-fs-path-for-hono.js +1 -1
  35. package/dist/server/plugins/api-functions/index.js +1 -1
  36. package/dist/server/plugins/arazzo-docs/index.js +1 -1
  37. package/dist/server/plugins/asyncapi-docs/get-server-props.js +1 -1
  38. package/dist/server/plugins/asyncapi-docs/index.js +1 -1
  39. package/dist/server/plugins/asyncapi-docs/search/get-ai-search-documents.js +3 -3
  40. package/dist/server/plugins/catalog-entities/database/mappers/create-bff-related-entity.js +1 -1
  41. package/dist/server/plugins/catalog-entities/database/mappers/field-transformations.d.ts +2 -2
  42. package/dist/server/plugins/catalog-entities/database/mappers/field-transformations.js +1 -1
  43. package/dist/server/plugins/catalog-entities/database/repositories/utils/create-merged-entity-fields-for-select.d.ts +1 -0
  44. package/dist/server/plugins/catalog-entities/database/repositories/utils/create-merged-entity-fields-for-select.js +8 -8
  45. package/dist/server/plugins/catalog-entities/database/repositories/utils.d.ts +4 -0
  46. package/dist/server/plugins/catalog-entities/database/repositories/utils.js +1 -1
  47. package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/arazzo-entities-extractor.js +1 -1
  48. package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/asyncapi-entities-extractor.js +1 -1
  49. package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/base.d.ts +13 -1
  50. package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/base.js +1 -1
  51. package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/graphql-entities-extractor.js +2 -2
  52. package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/openapi-entities-extractor.js +1 -1
  53. package/dist/server/plugins/catalog-entities/get-server-props.js +1 -1
  54. package/dist/server/plugins/catalog-entities/plugin.js +1 -1
  55. package/dist/server/plugins/catalog-entities/schemas/database-schemas.d.ts +6 -6
  56. package/dist/server/plugins/catalog-entities/schemas/database-schemas.js +1 -1
  57. package/dist/server/plugins/config-parser/index.js +1 -1
  58. package/dist/server/plugins/config-parser/loaders/redocly-config-loader.js +1 -1
  59. package/dist/server/plugins/config-parser/loaders/utils/read-and-validate-config.d.ts +1 -0
  60. package/dist/server/plugins/config-parser/loaders/utils/read-and-validate-config.js +1 -1
  61. package/dist/server/plugins/default-theme/index.js +1 -1
  62. package/dist/server/plugins/dev-onboarding/index.js +1 -1
  63. package/dist/server/plugins/enforce-login/index.d.ts +3 -0
  64. package/dist/server/plugins/enforce-login/index.js +1 -0
  65. package/dist/server/plugins/graphql-docs/spec-download.api.js +1 -1
  66. package/dist/server/plugins/lifecycle.js +2 -2
  67. package/dist/server/plugins/markdown/compiler.d.ts +1 -1
  68. package/dist/server/plugins/markdown/compiler.js +1 -1
  69. package/dist/server/plugins/markdown/get-server-props.js +1 -1
  70. package/dist/server/plugins/markdown/index.js +1 -1
  71. package/dist/server/plugins/markdown/markdoc/partials.js +1 -1
  72. package/dist/server/plugins/markdown/markdown-static-data-loader.js +1 -1
  73. package/dist/server/plugins/markdown/search/get-ai-search-documents.js +10 -10
  74. package/dist/server/plugins/mcp/handlers/docs-mcp-handler.js +1 -1
  75. package/dist/server/plugins/openapi-docs/get-server-props.js +1 -1
  76. package/dist/server/plugins/openapi-docs/index.js +1 -1
  77. package/dist/server/plugins/openapi-docs/load-definition.js +3 -3
  78. package/dist/server/plugins/openapi-docs/search/get-ai-search-documents.js +32 -32
  79. package/dist/server/plugins/openapi-docs/spec-download.api.js +1 -1
  80. package/dist/server/plugins/scorecard-classic/compute-scorecard.js +4 -4
  81. package/dist/server/plugins/scorecard-classic/loaders/scorecard-config.js +1 -1
  82. package/dist/server/plugins/scorecard-classic/loaders/scorecard.js +1 -1
  83. package/dist/server/plugins/search/ai-indexer/prepare-semantic-documents.js +1 -1
  84. package/dist/server/plugins/search/documents/search-documents.js +1 -1
  85. package/dist/server/plugins/search/engines/flexsearch/search-index.js +1 -1
  86. package/dist/server/plugins/search/index.js +1 -1
  87. package/dist/server/plugins/search/llmstxt/index.d.ts +0 -1
  88. package/dist/server/plugins/search/llmstxt/index.js +4 -4
  89. package/dist/server/plugins/sso/index.js +1 -1
  90. package/dist/server/plugins/utils.d.ts +4 -0
  91. package/dist/server/plugins/utils.js +1 -1
  92. package/dist/server/ssr/index.js +1 -1
  93. package/dist/server/store.d.ts +2 -3
  94. package/dist/server/store.js +1 -1
  95. package/dist/server/tools/notifiers/terminal-manager.js +5 -5
  96. package/dist/server/types/plugins/common.d.ts +4 -4
  97. package/dist/server/types/plugins/markdown.d.ts +7 -1
  98. package/dist/server/utils/llmstxt/get-llms-txt-md-path-by-slug.d.ts +19 -0
  99. package/dist/server/utils/llmstxt/get-llms-txt-md-path-by-slug.js +1 -0
  100. package/dist/server/utils/rbac/is-rbac-scope-items.d.ts +3 -0
  101. package/dist/server/utils/rbac/is-rbac-scope-items.js +1 -0
  102. package/dist/server/utils/rbac.js +1 -1
  103. package/dist/server/utils/search/highlight-text-for-search.d.ts +2 -0
  104. package/dist/server/utils/search/highlight-text-for-search.js +1 -0
  105. package/dist/server/web-server/routes/api-routes/api-routes.js +1 -1
  106. package/dist/server/web-server/routes/app-data.js +1 -1
  107. package/dist/server/web-server/routes/ask-ai.js +1 -1
  108. package/dist/server/web-server/routes/auth.d.ts +2 -1
  109. package/dist/server/web-server/routes/auth.js +1 -1
  110. package/dist/server/web-server/routes/catalog/bff-catalog-related-entities.js +1 -1
  111. package/dist/server/web-server/routes/catalog/bff-catalog.js +1 -1
  112. package/dist/server/web-server/routes/catalog/helpers/has-access-to-entity.js +1 -1
  113. package/dist/server/web-server/routes/dynamic-route.js +1 -1
  114. package/dist/server/web-server/routes/feedback.js +1 -1
  115. package/dist/server/web-server/routes/helpers/get-rbac-restrictions-data-for-catalog.js +1 -1
  116. package/dist/server/web-server/routes/page-data.js +1 -1
  117. package/dist/server/web-server/routes/search.js +1 -1
  118. package/dist/server/web-server/routes/static-content.js +1 -1
  119. package/package.json +11 -10
  120. package/dist/server/web-server/routes/helpers/get-md-asset-pathname.d.ts +0 -2
  121. package/dist/server/web-server/routes/helpers/get-md-asset-pathname.js +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,54 @@
1
1
  # @redocly/reef
2
2
 
3
+ ## 0.132.0-next.2
4
+
5
+ ### Patch Changes
6
+
7
+ - a09344768fc: Fixed an issue where pressing the `Q` key in the terminal in preview mode would not stop the preview.
8
+ - e9058cf9add: Fixed security vulnerability `CVE-2026-0540` by upgrading `dompurify` to version `3.3.3`.
9
+ - e9058cf9add: Fixed security vulnerabilities `CVE-2026-29085`, `CVE-2026-29045`, and `GHSA-v8w9-8mx6-g223` by upgrading `hono` to version `4.12.8`.
10
+ - 19e40b5dbbd: Fixed agent and crawler requests so static files such as `sitemap.xml` are served instead of a non-existent Markdown path, and the site root resolved `index.html.md` correctly instead of a hidden `.index.html.md` path.
11
+ - bc50b469cf5: Fixed an issue where rules in `targets` were not applied correctly to `scorecardClassic` levels.
12
+ - e9058cf9add: Fixed security vulnerabilities `CVE-2026-27904` and `CVE-2026-27903` by upgrading `minimatch` to version `10.2.4`.
13
+ - 9db8221b3f0: Updated `@redocly/openapi-core` to version `2.24.0`.
14
+ - a09344768fc: Fixed an issue where the process did not terminate after certain short-lived CLI commands were executed.
15
+ - d54ca044f01: Fixed an issue where filters on code walkthrough pages overlapped the **Search** dialog.
16
+ - 1f95c1a87f6: Improved performance when building AI search documents for Markdown by avoiding repeated work while merging content chunks.
17
+ - f156e274867: Fixed an issue where navigating to a page with a hash anchor from another page occasionally failed to scroll to the anchor.
18
+ - Updated dependencies [8f8430a807c]
19
+ - Updated dependencies [e9058cf9add]
20
+ - Updated dependencies [ed553fa1387]
21
+ - Updated dependencies [9db8221b3f0]
22
+ - Updated dependencies [d54ca044f01]
23
+ - @redocly/theme@0.64.0-next.2
24
+ - @redocly/openapi-docs@3.20.0-next.2
25
+ - @redocly/asyncapi-docs@1.9.0-next.2
26
+ - @redocly/graphql-docs@1.9.0-next.2
27
+ - @redocly/portal-plugin-mock-server@0.17.0-next.2
28
+
29
+ ## 0.132.0-next.1
30
+
31
+ ### Minor Changes
32
+
33
+ - 4003b73d9ca: Added `excalidraw` Markdoc tag to support Excalidraw integration.
34
+
35
+ ### Patch Changes
36
+
37
+ - 6561be12489: Fixed an issue where the "Last updated" date displayed incorrect values on project pages.
38
+ - 60b9b77bc39: Fixed a bug that caused search result highlighting to break in Flexsearch when the query contained duplicate words.
39
+ - ae3272861b4: Added support for `x-badges` in OpenAPI and AsyncAPI parameters and schema properties.
40
+ Badges can now be rendered before and after field names.
41
+ - 87a97521127: Fixed an issue where `partial` Markdoc tags in OpenAPI and AsyncAPI `description` fields did not resolve when path separators differed.
42
+ - Updated dependencies [4003b73d9ca]
43
+ - Updated dependencies [ae3272861b4]
44
+ - Updated dependencies [87a97521127]
45
+ - Updated dependencies [b24ffd4d9fb]
46
+ - @redocly/theme@0.64.0-next.1
47
+ - @redocly/asyncapi-docs@1.9.0-next.1
48
+ - @redocly/openapi-docs@3.20.0-next.1
49
+ - @redocly/graphql-docs@1.9.0-next.1
50
+ - @redocly/portal-plugin-mock-server@0.17.0-next.1
51
+
3
52
  ## 0.132.0-next.0
4
53
 
5
54
  ### Minor Changes
@@ -21,6 +70,19 @@
21
70
  - @redocly/openapi-docs@3.20.0-next.0
22
71
  - @redocly/theme@0.64.0-next.0
23
72
 
73
+ ## 0.131.1
74
+
75
+ ### Patch Changes
76
+
77
+ - 3ec346dba7: Fixed security vulnerability `CVE-2026-0540` by upgrading `dompurify` to version `3.3.3`.
78
+ - 3ec346dba7: Fixed security vulnerabilities `CVE-2026-29085`, `CVE-2026-29045`, and `GHSA-v8w9-8mx6-g223` by upgrading `hono` to version `4.12.8`.
79
+ - 3ec346dba7: Fixed security vulnerabilities `CVE-2026-27904` and `CVE-2026-27903` by upgrading `minimatch` to version `10.2.4`.
80
+ - 180aa06763: Fixed security vulnerability `CVE-2026-28292` by upgrading `simple-git` to version `3.32.3`.
81
+ - Updated dependencies [3ec346dba7]
82
+ - @redocly/openapi-docs@3.19.1
83
+ - @redocly/asyncapi-docs@1.8.1
84
+ - @redocly/portal-plugin-mock-server@0.16.1
85
+
24
86
  ## 0.131.0
25
87
 
26
88
  ### Minor Changes
@@ -1 +1 @@
1
- import*as o from"react";import{useEffect as l}from"react";import{Outlet as E,useLocation as g,useNavigate as d}from"react-router-dom";import{components as h}from"@redocly-markdoc/components";import P from"@markdoc/markdoc/dist/react";import{withoutPathPrefix as T}from"@redocly/theme/core/utils";import{InternalServerErrorLayout as D}from"@redocly/theme/layouts/InternalServerErrorLayout";import{RootLayout as S}from"@redocly/theme/layouts/RootLayout";import{PageLayout as L}from"@redocly/theme/layouts/PageLayout";import{components as i}from"@redocly/theme/markdoc/default";import{Sidebar as _}from"./app/Sidebar/Sidebar";import{loadAndNavigate as v}from"./app/utils/loadAndNavigate";import{useActions as C}from"./app/Sidebar/useActions";import{useScrollTracker as A}from"./app/hooks/useScrollTracker";import{useAutoScroll as y}from"./app/hooks/useAutoScroll";import{OPENAPI_DOCS_TEMPLATE_ID as O,ASYNC_API_DOCS_TEMPLATE_ID as R,GRAPHQL_TEMPLATE_ID as N}from"../constants/common";import{removeTrailingSlash as I}from"../utils/url/remove-trailing-slash";import{removeLeadingSlash as b}from"../utils/url/remove-leading-slash";import*as k from"./app/markdoc/custom-components/index";import{DefaultStyles as M}from"./styling/default-styles";import{ThemeDataProvider as x}from"./providers/theme/ThemeDataProvider";import{PageDataContext as B}from"./providers/page-data/PageDataContext";import{SeoTags as G}from"./app/seo/SeoTags";import{useRouterForLocalLinks as V,useRunningEnvironmentCheck as F}from"./providers/hooks";import{usePageData as $,usePageDataLoader as w}from"./providers/page-data/hooks";import{ErrorBoundary as H}from"./ErrorBoundary";import{ErrorDetails as c,Loader as Q}from"./server-entry";import"@styles";import{useRouteChangeTracker as U}from"./app/hooks/useRouteChangeTracker";import{isInIframe as Y}from"./utils";import{useL10n as j}from"./app/l10n";import{PostMessageProvider as q}from"./providers/post-message/PostMessageProvider";import{ScriptLoader as z}from"./ScriptLoader";import{clientRoutes as J}from"./runtime/generated/routes.js";import{DevModeFloatingBar as K}from"./app/DevModeFloatingBar";import{usePageTimeTracker as W}from"./app/hooks/usePageTimeTracker";globalThis.__LOADER.markdocComponents={...k,...i};function ke(){const e=w(),[t,n]=o.useState(e),r=g(),m=d();j(),l(()=>{e?n(e):v({navigate:m,to:r.pathname+r.search+r.hash}).then(()=>n(Q.loadSync(r.pathname)))},[r,m]),V();const a=F();return a?(console.log(a),o.createElement(c,{error:{message:a,name:""}})):t?o.createElement(H,null,o.createElement(M,null),o.createElement(B.Provider,{value:e||t},o.createElement(x,null,o.createElement(q,{enabled:process.env.NODE_ENV==="development"||Y()},o.createElement(E,null))))):null}function u(){U(),W(),A(),y();const e=$(),t=C(),{layout:n}=t,r={layout:n},m=process.env.NODE_ENV!=="production",a=globalThis.SSR_OMIT_SUSPENSE,s=e?.props.ast&&e.props.ast.$$mdtype==="Tag"?P(e.props.ast,o,{components:{...globalThis.__LOADER.markdocComponents,...i,...h}}):null,f=I(e?.slug||"");if(l(()=>{document.documentElement.classList.add("ready")},[]),e?.props.pagePropGetterError?.message)return m?o.createElement(c,{error:{...e?.props?.pagePropGetterError}}):o.createElement(D,null);if(!!e?.props?.compilationErrors?.length)return e?.Template?o.createElement(e.Template,{pageProps:e?.props,children:s}):null;const p=()=>o.createElement(S,null,o.createElement(L,{sidebar:o.createElement(_,{layoutControls:t})},o.createElement(G,{seo:e?.props.seo,slug:f}),e?.Template?o.createElement(e.Template,{pageProps:[O,R,N].includes(e.templateId)?{...e.props,apiOptions:r}:e?.props,children:s}):null),process.env.NODE_ENV!=="production"&&o.createElement(K,null),o.createElement(z,null));return a?p():o.createElement(o.Suspense,null,p())}const Me=[...J.map(e=>({Component:u,path:b(T(e).substring(1)+"/*")})),{Component:u,path:"*"}];export{ke as App,u as Page,Me as routes};
1
+ import*as o from"react";import{useEffect as l}from"react";import{Outlet as f,useLocation as E,useNavigate as g}from"react-router-dom";import{withoutPathPrefix as d}from"@redocly/theme/core/utils";import{InternalServerErrorLayout as P}from"@redocly/theme/layouts/InternalServerErrorLayout";import{RootLayout as h}from"@redocly/theme/layouts/RootLayout";import{PageLayout as D}from"@redocly/theme/layouts/PageLayout";import{components as S}from"@redocly/theme/markdoc/default";import{Sidebar as T}from"./app/Sidebar/Sidebar";import{loadAndNavigate as L}from"./app/utils/loadAndNavigate";import{useActions as v}from"./app/Sidebar/useActions";import{useScrollTracker as _}from"./app/hooks/useScrollTracker";import{useAutoScroll as C}from"./app/hooks/useAutoScroll";import{OPENAPI_DOCS_TEMPLATE_ID as A,ASYNC_API_DOCS_TEMPLATE_ID as N,GRAPHQL_TEMPLATE_ID as O}from"../constants/common";import{removeTrailingSlash as R}from"../utils/url/remove-trailing-slash";import{removeLeadingSlash as y}from"../utils/url/remove-leading-slash";import*as I from"./app/markdoc/custom-components/index";import{DefaultStyles as b}from"./styling/default-styles";import{ThemeDataProvider as k}from"./providers/theme/ThemeDataProvider";import{PageDataContext as M}from"./providers/page-data/PageDataContext";import{SeoTags as x}from"./app/seo/SeoTags";import{useRouterForLocalLinks as B,useRunningEnvironmentCheck as G}from"./providers/hooks";import{usePageData as V,usePageDataLoader as F}from"./providers/page-data/hooks";import{ErrorBoundary as w}from"./ErrorBoundary";import{ErrorDetails as i,Loader as H}from"./server-entry";import"@styles";import{useRouteChangeTracker as Q}from"./app/hooks/useRouteChangeTracker";import{isInIframe as U}from"./utils";import{useL10n as Y}from"./app/l10n";import{PostMessageProvider as j}from"./providers/post-message/PostMessageProvider";import{ScriptLoader as q}from"./ScriptLoader";import{clientRoutes as z}from"./runtime/generated/routes.js";import{DevModeFloatingBar as J}from"./app/DevModeFloatingBar";import{usePageTimeTracker as K}from"./app/hooks/usePageTimeTracker";import{useMarkdocRenderer as W}from"./app/hooks/markdown/useMarkdocRenderer";import{globalData as X}from"./runtime/loader";globalThis.__LOADER.markdocComponents={...I,...S};function ke(){const e=F(),[t,n]=o.useState(e),r=E(),m=g();Y(),l(()=>{e?n(e):L({navigate:m,to:r.pathname+r.search+r.hash}).then(()=>n(H.loadSync(r.pathname)))},[r,m]),B();const a=G();return a?(console.log(a),o.createElement(i,{error:{message:a,name:""}})):t?o.createElement(w,null,o.createElement(b,{palette:X?.palette}),o.createElement(M.Provider,{value:e||t},o.createElement(k,null,o.createElement(j,{enabled:process.env.NODE_ENV==="development"||U()},o.createElement(f,null))))):null}function c(){Q(),K(),_(),C();const e=V(),t=v(),{layout:n}=t,r={layout:n},m=process.env.NODE_ENV!=="production",a=globalThis.SSR_OMIT_SUSPENSE,s=W(e?.props?.ast),u=R(e?.slug||"");if(l(()=>{document.documentElement.classList.add("ready")},[]),e?.props.pagePropGetterError?.message)return m?o.createElement(i,{error:{...e?.props?.pagePropGetterError}}):o.createElement(P,null);if(!!e?.props?.compilationErrors?.length)return e?.Template?o.createElement(e.Template,{pageProps:e?.props,children:s}):null;const p=()=>o.createElement(h,null,o.createElement(D,{sidebar:o.createElement(T,{layoutControls:t})},o.createElement(x,{seo:e?.props.seo,slug:u}),e?.Template?o.createElement(e.Template,{pageProps:[A,N,O].includes(e.templateId)?{...e.props,apiOptions:r}:e?.props,children:s}):null),process.env.NODE_ENV!=="production"&&o.createElement(J,null),o.createElement(q,null));return a?p():o.createElement(o.Suspense,null,p())}const Me=[...z.map(e=>({Component:c,path:y(d(e).substring(1)+"/*")})),{Component:c,path:"*"}];export{ke as App,c as Page,Me as routes};
@@ -1 +1 @@
1
- import e from"react";import{BrowserRouter as o}from"react-router-dom";import{ThemeDataContext as n,SearchSessionProvider as i}from"@redocly/theme/core/contexts";import u from"@redocly/theme/core/templates/Markdown";import{useAnchorPositioning as m,useBreadcrumbs as d,useBanner as l,useCatalogClassic as c,useCurrentProduct as p,useGlobalData as g,useI18n as h,useI18nConfig as f,useL10n as b,useL10nConfig as C,usePageData as T,usePageSharedData as k,usePageVersions as v,usePreloadHistory as P,useProducts as w,useUserMenu as S,useSubmitFeedback as y,useTranslate as D,useSidebarSiblingsData as $,usePageProps as E,useUserTeams as I,useMarkdownText as L,useCodeHighlight as x,useLoadAndNavigate as F,useCatalog as H,useCatalogSort as M,useCatalogSearch as A,useFetchCatalogEntities as R,useFetchCatalogEntitiesRelations as B,useTelemetry as r,useMcpData as G,useFetchCatalogEntityRevisions as O}from"./app/hooks";import{Link as U}from"./app/Link";import{useFacetQuery as N,useSearch as Q,useAiSearch as V}from"./app/search";import{useSidebarItems as j}from"./app/Sidebar/useSidebarItems";import{PageDataContext as q}from"./providers/page-data/PageDataContext";const s={Template:({pageProps:a,children:t})=>e.createElement(u,{pageProps:{...a,metadata:{...a.metadata,markdoc:{tagList:[]}}}},t),templateId:"markdown",isPublic:!0,props:{seo:{title:"Test"},ast:{$$mdtype:"Tag",name:"div",children:[{$$mdtype:"Tag",name:"Heading",attributes:{id:"github-flavored-markdown",level:1},children:["GitHub-flavored markdown"]},{$$mdtype:"Tag",name:"p",attributes:{},children:["These exercises assume you have",{$$mdtype:"Tag",name:"a",attributes:{href:"https://docs.redoc.ly/"},children:["basic markdown knowledge"]},"."]},{$$mdtype:"Tag",name:"Heading",attributes:{id:"create-a-new-plain-markdown-page",level:2},children:["Create a new plain markdown page"]}]},lastModified:new Date("2022-01-01").toISOString()},slug:"",userData:{isAuthenticated:!1,name:"test name",picture:""},sidebar:null,sharedData:{},sharedDataIds:{}},z={useAnchorPositioning:m,useBreadcrumbs:d,useBanner:l,useCatalog:H,useCatalogSort:M,useCatalogSearch:A,useFetchCatalogEntities:R,useFetchCatalogEntitiesRelations:B,useFetchCatalogEntityRevisions:O,useCatalogClassic:c,useCurrentProduct:p,useGlobalData:g,useSearch:Q,useAiSearch:V,useFacetQuery:N,useI18n:h,useI18nConfig:f,useL10n:b,useL10nConfig:C,usePageData:T,usePageSharedData:k,usePageVersions:v,usePreloadHistory:P,useProducts:w,useUserMenu:S,useSidebarItems:j,useSidebarSiblingsData:$,useSubmitFeedback:y,useTranslate:D,useUserTeams:I,usePageProps:E,useMarkdownText:L,useCodeHighlight:x,useLoadAndNavigate:F,useTelemetry:r,useOtelTelemetry:r,useMcpData:G},J={LinkComponent:U},K={hooks:z,components:J,config:{}};function se({children:a,customPageData:t}){return e.createElement(o,null,e.createElement(i,null,e.createElement(q.Provider,{value:{...s,...t,props:{...s.props,...t?.props}}},e.createElement(n.Provider,{value:K},a))))}export{se as TestProvider};
1
+ import e from"react";import{BrowserRouter as o}from"react-router-dom";import{ThemeDataContext as n,SearchSessionProvider as i}from"@redocly/theme/core/contexts";import u from"@redocly/theme/core/templates/Markdown";import{useAnchorPositioning as m,useBreadcrumbs as d,useBanner as l,useCatalogClassic as c,useCurrentProduct as p,useGlobalData as g,useI18n as h,useI18nConfig as f,useL10n as b,useL10nConfig as C,usePageData as T,usePageSharedData as k,usePageVersions as v,usePreloadHistory as P,useProducts as w,useUserMenu as S,useSubmitFeedback as y,useTranslate as D,useSidebarSiblingsData as $,usePageProps as E,useUserTeams as I,useMarkdownText as L,useMarkdocRenderer as M,useCodeHighlight as x,useLoadAndNavigate as F,useCatalog as H,useCatalogSort as R,useCatalogSearch as A,useFetchCatalogEntities as B,useFetchCatalogEntitiesRelations as G,useTelemetry as r,useMcpData as O,useFetchCatalogEntityRevisions as U}from"./app/hooks";import{Link as N}from"./app/Link";import{useFacetQuery as Q,useSearch as V,useAiSearch as j}from"./app/search";import{useSidebarItems as q}from"./app/Sidebar/useSidebarItems";import{PageDataContext as z}from"./providers/page-data/PageDataContext";const s={Template:({pageProps:a,children:t})=>e.createElement(u,{pageProps:{...a,metadata:{...a.metadata,markdoc:{tagList:[]}}}},t),templateId:"markdown",isPublic:!0,props:{seo:{title:"Test"},ast:{$$mdtype:"Tag",name:"div",children:[{$$mdtype:"Tag",name:"Heading",attributes:{id:"github-flavored-markdown",level:1},children:["GitHub-flavored markdown"]},{$$mdtype:"Tag",name:"p",attributes:{},children:["These exercises assume you have",{$$mdtype:"Tag",name:"a",attributes:{href:"https://docs.redoc.ly/"},children:["basic markdown knowledge"]},"."]},{$$mdtype:"Tag",name:"Heading",attributes:{id:"create-a-new-plain-markdown-page",level:2},children:["Create a new plain markdown page"]}]},lastModified:new Date("2022-01-01").toISOString()},slug:"",userData:{isAuthenticated:!1,name:"test name",picture:""},sidebar:null,sharedData:{},sharedDataIds:{}},J={useAnchorPositioning:m,useBreadcrumbs:d,useBanner:l,useCatalog:H,useCatalogSort:R,useCatalogSearch:A,useFetchCatalogEntities:B,useFetchCatalogEntitiesRelations:G,useFetchCatalogEntityRevisions:U,useCatalogClassic:c,useCurrentProduct:p,useGlobalData:g,useSearch:V,useAiSearch:j,useFacetQuery:Q,useI18n:h,useI18nConfig:f,useL10n:b,useL10nConfig:C,usePageData:T,usePageSharedData:k,usePageVersions:v,usePreloadHistory:P,useProducts:w,useUserMenu:S,useSidebarItems:q,useSidebarSiblingsData:$,useSubmitFeedback:y,useTranslate:D,useUserTeams:I,usePageProps:E,useMarkdownText:L,useMarkdocRenderer:M,useCodeHighlight:x,useLoadAndNavigate:F,useTelemetry:r,useOtelTelemetry:r,useMcpData:O},K={LinkComponent:N},W={hooks:J,components:K,config:{}};function oe({children:a,customPageData:t}){return e.createElement(o,null,e.createElement(i,null,e.createElement(z.Provider,{value:{...s,...t,props:{...s.props,...t?.props}}},e.createElement(n.Provider,{value:W},a))))}export{oe as TestProvider};
@@ -1,7 +1,6 @@
1
- import type { SortOption } from '@redocly/theme/core/types';
2
- export declare function useCatalogSort(defaultSortOption?: SortOption | null): {
3
- sortOption: SortOption | null;
4
- setSortOption: import("react").Dispatch<import("react").SetStateAction<SortOption | null>>;
1
+ export declare function useCatalogSort(defaultSortOption?: string | null): {
2
+ sortOption: string | null;
3
+ setSortOption: import("react").Dispatch<import("react").SetStateAction<string | null>>;
5
4
  handleSortClick: (sortKey: string, direction: "asc" | "desc") => void;
6
5
  isColumnSorted: (sortKey: string, direction: "asc" | "desc") => boolean;
7
6
  };
@@ -1 +1 @@
1
- import{useInfiniteQuery as y}from"@tanstack/react-query";import{useMemo as m,useRef as w}from"react";import{withPathPrefix as R}from"@redocly/theme/core/utils";import{getNextPageParam as S}from"../../../utils/catalog/get-next-page-param";import{useSearchTracker as F}from"./useSearchTracker";function x({limit:o=20,filter:i,sort:s="type,title",search:n}={},r){const l=r?r.items.map(e=>e.key).join("-"):[],c=w(!0),d=c.current&&r;c.current&&(c.current=!1);const a=y({queryFn:async e=>{const t=new URLSearchParams;i&&t.append("filter",i),s&&t.append("sort",s),o&&t.append("limit",o.toString()),n&&t.append("search",n),e.pageParam&&Object.entries(e.pageParam).forEach(([P,f])=>{f!=null&&t.append(P,f.toString())});const p=new URL(R("/bff/catalog-entities"),window.location.origin);p.search=t.toString();const u=await fetch(p.toString());if(!u.ok)throw new Error(`Failed to fetch catalog entities from ${p.pathname}`);return u.json()},queryKey:["bff/catalog-entities",{limit:o,filter:i,sort:s,search:n,initialDataKeys:l}],initialData:d?{pages:[r],pageParams:[null]}:void 0,initialPageParam:null,getNextPageParam:S,refetchOnMount:!0,placeholderData:e=>e}),h=m(()=>{const e=a.data?.pages||[];return e[e.length-1]?.page.total},[a.data?.pages]),g=m(()=>(a.data?.pages||[]).flatMap(e=>e.items||[]),[a.data?.pages]);return F({isLoading:a.isLoading||a.isFetching,items:g,apiResource:"entities",searchQuery:n??""}),{query:a,items:g,total:h}}export{x as useFetchCatalogEntities};
1
+ import{useInfiniteQuery as y}from"@tanstack/react-query";import{useMemo as d,useRef as w}from"react";import{withPathPrefix as R}from"@redocly/theme/core/utils";import{getNextPageParam as S}from"../../../utils/catalog/get-next-page-param";import{useSearchTracker as F}from"./useSearchTracker";function x({limit:o=20,filter:i,sort:s="updated_at",search:n}={},r){const m=r?r.items.map(e=>e.key).join("-"):[],c=w(!0),l=c.current&&r;c.current&&(c.current=!1);const a=y({queryFn:async e=>{const t=new URLSearchParams;i&&t.append("filter",i),s&&t.append("sort",s),o&&t.append("limit",o.toString()),n&&t.append("search",n),e.pageParam&&Object.entries(e.pageParam).forEach(([P,f])=>{f!=null&&t.append(P,f.toString())});const p=new URL(R("/bff/catalog-entities"),window.location.origin);p.search=t.toString();const u=await fetch(p.toString());if(!u.ok)throw new Error(`Failed to fetch catalog entities from ${p.pathname}`);return u.json()},queryKey:["bff/catalog-entities",{limit:o,filter:i,sort:s,search:n,initialDataKeys:m}],initialData:l?{pages:[r],pageParams:[null]}:void 0,initialPageParam:null,getNextPageParam:S,refetchOnMount:!0,placeholderData:e=>e}),h=d(()=>{const e=a.data?.pages||[];return e[e.length-1]?.page.total},[a.data?.pages]),g=d(()=>(a.data?.pages||[]).flatMap(e=>e.items||[]),[a.data?.pages]);return F({isLoading:a.isLoading||a.isFetching,items:g,apiResource:"entities",searchQuery:n??""}),{query:a,items:g,total:h}}export{x as useFetchCatalogEntities};
@@ -1 +1 @@
1
- import{useInfiniteQuery as y}from"@tanstack/react-query";import{useMemo as d,useRef as S}from"react";import{withPathPrefix as F}from"@redocly/theme/core/utils";import{getNextPageParam as R}from"../../../utils/catalog/get-next-page-param";import{useSearchTracker as b}from"./useSearchTracker";function E({entityKey:g,limit:o=20,filter:i,sort:s="title",search:r},n){const l=n?n.items.map(e=>e.key).join("-"):[],c=S(!0),h=c.current&&n;c.current&&(c.current=!1);const t=y({queryFn:async e=>{const a=new URLSearchParams;i&&a.append("filter",i),s&&a.append("sort",s),o&&a.append("limit",o.toString()),r&&a.append("search",r),e.pageParam&&Object.entries(e.pageParam).forEach(([w,p])=>{p!=null&&a.append(w,p.toString())});const f=new URL(F(`/bff/catalog-related-entities/${g}`),window.location.origin);f.search=a.toString();const m=await fetch(f.toString());if(!m.ok)throw new Error(`Failed to fetch catalog entity relations from ${f.pathname}`);return m.json()},queryKey:["bff/catalog-entities-relations",{limit:o,filter:i,sort:s,search:r,entityKey:g,initialDataKeys:l}],initialPageParam:null,initialData:h?{pages:[n],pageParams:[null]}:void 0,refetchOnMount:!0,getNextPageParam:R}),P=d(()=>{const e=t.data?.pages||[];return e[e.length-1]?.page?.total},[t.data?.pages]),u=d(()=>(t.data?.pages||[]).flatMap(e=>e.items||[]),[t.data?.pages]);return b({isLoading:t.isLoading||t.isFetching,items:u,apiResource:"related_entities",searchQuery:r??""}),{query:t,items:u,total:P}}export{E as useFetchCatalogEntitiesRelations};
1
+ import{useInfiniteQuery as y}from"@tanstack/react-query";import{useMemo as m,useRef as S}from"react";import{withPathPrefix as F}from"@redocly/theme/core/utils";import{getNextPageParam as R}from"../../../utils/catalog/get-next-page-param";import{useSearchTracker as b}from"./useSearchTracker";function E({entityKey:g,limit:o=20,filter:i,sort:s="updated_at",search:r},n){const l=n?n.items.map(e=>e.key).join("-"):[],c=S(!0),h=c.current&&n;c.current&&(c.current=!1);const t=y({queryFn:async e=>{const a=new URLSearchParams;i&&a.append("filter",i),s&&a.append("sort",s),o&&a.append("limit",o.toString()),r&&a.append("search",r),e.pageParam&&Object.entries(e.pageParam).forEach(([w,f])=>{f!=null&&a.append(w,f.toString())});const p=new URL(F(`/bff/catalog-related-entities/${g}`),window.location.origin);p.search=a.toString();const d=await fetch(p.toString());if(!d.ok)throw new Error(`Failed to fetch catalog entity relations from ${p.pathname}`);return d.json()},queryKey:["bff/catalog-entities-relations",{limit:o,filter:i,sort:s,search:r,entityKey:g,initialDataKeys:l}],initialPageParam:null,initialData:h?{pages:[n],pageParams:[null]}:void 0,refetchOnMount:!0,getNextPageParam:R}),P=m(()=>{const e=t.data?.pages||[];return e[e.length-1]?.page?.total},[t.data?.pages]),u=m(()=>(t.data?.pages||[]).flatMap(e=>e.items||[]),[t.data?.pages]);return b({isLoading:t.isLoading||t.isFetching,items:u,apiResource:"related_entities",searchQuery:r??""}),{query:t,items:u,total:P}}export{E as useFetchCatalogEntitiesRelations};
@@ -25,6 +25,7 @@ export { useCatalogClassic } from './catalog/useCatalogClassic';
25
25
  export { useTelemetry } from './useTelemetry';
26
26
  export { useUserTeams } from './useUserTeams';
27
27
  export { useMarkdownText } from './markdown/useMarkdownText';
28
+ export { useMarkdocRenderer } from './markdown/useMarkdocRenderer';
28
29
  export { useCodeHighlight } from './codeHighlight/useCodeHighlight';
29
30
  export { useLoadAndNavigate } from './useLoadAndNavigate';
30
31
  export { useUserClaims } from './useUserClaims';
@@ -1 +1 @@
1
- export*from"../../providers/page-data/hooks";import{usePageSharedData as t}from"../../providers/hooks";import{useLoginUrl as a}from"./useLoginUrl";import{useGlobalData as f}from"../useGlobalData";import{useL10n as p}from"../l10n/hooks";import{useL10nConfig as n}from"./useL10nConfig";import{useL10n as g}from"../l10n/hooks";import{useTranslate as C}from"../l10n/hooks";import{useL10nConfig as d}from"./useL10nConfig";export*from"./useCurrentUserTeams";export*from"./products";import{usePageVersions as F}from"../../providers/page-data/hooks";import{useUserMenu as S}from"../UserMenu/useUserMenu";import{useSubmitFeedback as U}from"../Feedback/useSubmitFeedback";import{usePreloadHistory as D}from"../usePreloadHistory";import{useBreadcrumbs as M}from"../Sidebar/useBreadcrumbs";import{useBanner as v}from"./useBanner";import{useCatalog as B}from"./catalog/useCatalog";import{useCatalogSort as I}from"./catalog/useCatalogSort";import{useCatalogSearch as w}from"./catalog/useCatalogSearch";import{useFetchCatalogEntities as N}from"./catalog/useFetchCatalogEntities";import{useFetchCatalogEntitiesRelations as j}from"./catalog/useFetchCatalogEntitiesRelations";import{useFetchCatalogEntityRevisions as z}from"./catalog/useFetchCatalogEntityRevisions";import{useCatalogClassic as K}from"./catalog/useCatalogClassic";import{useTelemetry as Q}from"./useTelemetry";import{useUserTeams as X}from"./useUserTeams";import{useMarkdownText as Z}from"./markdown/useMarkdownText";import{useCodeHighlight as $}from"./codeHighlight/useCodeHighlight";import{useLoadAndNavigate as oe}from"./useLoadAndNavigate";import{useUserClaims as te}from"./useUserClaims";import{useMcpData as ae}from"./useMcpData";import{useAnchorPositioning as fe}from"./useAnchorPositioning";export{fe as useAnchorPositioning,v as useBanner,M as useBreadcrumbs,B as useCatalog,K as useCatalogClassic,w as useCatalogSearch,I as useCatalogSort,$ as useCodeHighlight,N as useFetchCatalogEntities,j as useFetchCatalogEntitiesRelations,z as useFetchCatalogEntityRevisions,f as useGlobalData,p as useI18n,n as useI18nConfig,g as useL10n,d as useL10nConfig,oe as useLoadAndNavigate,a as useLoginUrl,Z as useMarkdownText,ae as useMcpData,t as usePageSharedData,F as usePageVersions,D as usePreloadHistory,U as useSubmitFeedback,Q as useTelemetry,C as useTranslate,te as useUserClaims,S as useUserMenu,X as useUserTeams};
1
+ export*from"../../providers/page-data/hooks";import{usePageSharedData as t}from"../../providers/hooks";import{useLoginUrl as a}from"./useLoginUrl";import{useGlobalData as f}from"../useGlobalData";import{useL10n as p}from"../l10n/hooks";import{useL10nConfig as n}from"./useL10nConfig";import{useL10n as g}from"../l10n/hooks";import{useTranslate as C}from"../l10n/hooks";import{useL10nConfig as d}from"./useL10nConfig";export*from"./useCurrentUserTeams";export*from"./products";import{usePageVersions as F}from"../../providers/page-data/hooks";import{useUserMenu as P}from"../UserMenu/useUserMenu";import{useSubmitFeedback as T}from"../Feedback/useSubmitFeedback";import{usePreloadHistory as k}from"../usePreloadHistory";import{useBreadcrumbs as D}from"../Sidebar/useBreadcrumbs";import{useBanner as R}from"./useBanner";import{useCatalog as A}from"./catalog/useCatalog";import{useCatalogSort as H}from"./catalog/useCatalogSort";import{useCatalogSearch as w}from"./catalog/useCatalogSearch";import{useFetchCatalogEntities as N}from"./catalog/useFetchCatalogEntities";import{useFetchCatalogEntitiesRelations as j}from"./catalog/useFetchCatalogEntitiesRelations";import{useFetchCatalogEntityRevisions as z}from"./catalog/useFetchCatalogEntityRevisions";import{useCatalogClassic as K}from"./catalog/useCatalogClassic";import{useTelemetry as Q}from"./useTelemetry";import{useUserTeams as X}from"./useUserTeams";import{useMarkdownText as Z}from"./markdown/useMarkdownText";import{useMarkdocRenderer as $}from"./markdown/useMarkdocRenderer";import{useCodeHighlight as oe}from"./codeHighlight/useCodeHighlight";import{useLoadAndNavigate as te}from"./useLoadAndNavigate";import{useUserClaims as ae}from"./useUserClaims";import{useMcpData as fe}from"./useMcpData";import{useAnchorPositioning as pe}from"./useAnchorPositioning";export{pe as useAnchorPositioning,R as useBanner,D as useBreadcrumbs,A as useCatalog,K as useCatalogClassic,w as useCatalogSearch,H as useCatalogSort,oe as useCodeHighlight,N as useFetchCatalogEntities,j as useFetchCatalogEntitiesRelations,z as useFetchCatalogEntityRevisions,f as useGlobalData,p as useI18n,n as useI18nConfig,g as useL10n,d as useL10nConfig,te as useLoadAndNavigate,a as useLoginUrl,$ as useMarkdocRenderer,Z as useMarkdownText,fe as useMcpData,t as usePageSharedData,F as usePageVersions,k as usePreloadHistory,T as useSubmitFeedback,Q as useTelemetry,C as useTranslate,ae as useUserClaims,P as useUserMenu,X as useUserTeams};
@@ -0,0 +1,3 @@
1
+ import * as React from 'react';
2
+ export declare const useMarkdocRenderer: (ast: unknown) => React.ReactNode;
3
+ //# sourceMappingURL=useMarkdocRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ import*as t from"react";import{useMemo as n}from"react";import m from"@markdoc/markdoc";import{components as s}from"@redocly-markdoc/components";import{components as p}from"@redocly/theme/markdoc/default";import{isTag as c}from"../../../../markdoc/helpers/guards/is-tag";const d=r=>n(()=>{if(!r)return null;let o;if(typeof r=="string")try{o=JSON.parse(r)}catch(e){return console.error("Error parsing AST string:",e),null}else o=r;return c(o)?m.renderers.react(o,t,{components:{...globalThis.__LOADER?.markdocComponents,...p,...s}}):null},[r]);export{d as useMarkdocRenderer};
@@ -1,12 +1,10 @@
1
- import type { BannerConfig } from '@redocly/config';
1
+ import type { ResolvedBannerConfig } from '@redocly/config';
2
2
  type BannerResult = {
3
- banner: BannerConfig | undefined;
4
- dismissBanner: (content: string) => void;
3
+ banner: ResolvedBannerConfig | undefined;
4
+ dismissBanner: (hash: string) => void;
5
5
  };
6
6
  export declare const STORAGE_KEY = "redocly-dismissed-banners";
7
- export declare const STORAGE_KEY_PER_SLUG = "redocly-dismissed-banners-per-slug";
8
7
  export declare function getDismissedBannersFromStorage(): Set<string>;
9
- export declare function getDismissedSlugsFromStorage(): Set<string>;
10
8
  export declare function useBanner(): BannerResult;
11
9
  export {};
12
10
  //# sourceMappingURL=useBanner.d.ts.map
@@ -1 +1 @@
1
- import{useMemo as p,useState as f}from"react";import{useLocation as l}from"react-router-dom";import{useThemeConfig as y}from"@redocly/theme/core/hooks";import{usePageData as w}from"../../providers/page-data/hooks";import{getBannerForSlug as A}from"./utils/match-banner-target.js";const u="redocly-dismissed-banners",m="redocly-dismissed-banners-per-slug";function B(){if(typeof window>"u")return new Set;const e=localStorage.getItem(u);if(e){const r=JSON.parse(e);if(Array.isArray(r))return new Set(r)}return new Set}function D(){if(typeof window>"u")return new Set;const e=localStorage.getItem(m);if(e){const r=JSON.parse(e);if(Array.isArray(r))return new Set(r)}return new Set}function N(){const{banner:e}=y()||{},n=w()?.props?.frontmatter?.banner,c=l(),[s,S]=f(B()),[o,g]=f(D()),t=c.pathname;return{banner:p(()=>{if(n&&Array.isArray(n)&&n.length){if(o.has(t))return;for(const a of n)if(!s.has(a.content))return a;return}if(!(!e||!Array.isArray(e)||e.length===0)&&!o.has(t))return A(e,t,s)},[e,n,t,s,o]),dismissBanner:a=>{const i=new Set(s);i.add(a),S(i);const d=new Set(o);d.add(t),g(d),localStorage.setItem(u,JSON.stringify(Array.from(i))),localStorage.setItem(m,JSON.stringify(Array.from(d)))}}}export{u as STORAGE_KEY,m as STORAGE_KEY_PER_SLUG,B as getDismissedBannersFromStorage,D as getDismissedSlugsFromStorage,N as useBanner};
1
+ import{useMemo as f,useState as u}from"react";import{useLocation as d}from"react-router-dom";import{useThemeConfig as p}from"@redocly/theme/core/hooks";import{usePageData as g}from"../../providers/page-data/hooks";import{getBannerForSlug as S}from"./utils/match-banner-target.js";const i="redocly-dismissed-banners";function y(){if(typeof window>"u")return new Set;const r=localStorage.getItem(i);if(r){const s=JSON.parse(r);if(Array.isArray(s))return new Set(s)}return new Set}function x(){const{banner:r}=p()||{},o=g()?.props?.frontmatter?.banner,m=d(),[n,c]=u(y()),a=m.pathname;return{banner:f(()=>{const t=(Array.isArray(o)?o:[]).find(e=>!n.has(e.hash));if(t)return t;if(!(!r||!Array.isArray(r)||r.length===0))return S(r,a,n)},[r,o,a,n]),dismissBanner:t=>{const e=new Set(n);e.add(t),c(e),localStorage.setItem(i,JSON.stringify(Array.from(e)))}}}export{i as STORAGE_KEY,y as getDismissedBannersFromStorage,x as useBanner};
@@ -1,4 +1,4 @@
1
- import type { BannerConfig } from '@redocly/config';
1
+ import type { ResolvedBannerConfig } from '@redocly/config';
2
2
  /**
3
3
  * Checks if a slug matches a target pattern
4
4
  */
@@ -6,5 +6,5 @@ export declare function matchesBannerTarget(slug: string, target: string | undef
6
6
  /**
7
7
  * Returns the first matching banner for a slug, or undefined if none match
8
8
  */
9
- export declare function getBannerForSlug(banners: BannerConfig[], slug: string, dismissedBanners?: Set<string>): BannerConfig | undefined;
9
+ export declare function getBannerForSlug(banners: ResolvedBannerConfig[], slug: string, dismissedBanners?: Set<string>): ResolvedBannerConfig | undefined;
10
10
  //# sourceMappingURL=match-banner-target.d.ts.map
@@ -1 +1 @@
1
- import a from"picomatch";import{removeTrailingSlash as s}from"../../../../utils/url/remove-trailing-slash";import{normalizeRouteSlug as f}from"../../../../utils/path/normalize-route-slug";const u={};function c(t){if(!t)return!0;const r=t.trim();return r===""||r==="**"||r==="/**"}function l(t){const r=t.trim();if(c(r))return"**";let e=r.toLowerCase();return e.startsWith("/")&&(e=e.slice(1)),e.endsWith("/")&&!e.endsWith("*/")&&(e=e.slice(0,-1)),e}function m(t){return u[t]||(u[t]=a(t,{nocase:!0})),u[t]}function h(t,r){if(c(r)||!r)return!0;const e=s(f(t)).toLowerCase(),n=e.startsWith("/")?e.slice(1):e,i=l(r);if(!i.includes("*")){const o=i.startsWith("/")?i.slice(1):i;return n===s(o)}if(i.endsWith("**")){const o=s(i.slice(0,-2));if(n===o)return!0}return m(i)(n)}function S(t,r,e=new Set){if(!(!t||t.length===0)){for(const n of t)if(!e.has(n.content)&&h(r,n.target))return n}}export{S as getBannerForSlug,h as matchesBannerTarget};
1
+ import a from"picomatch";import{removeTrailingSlash as s}from"../../../../utils/url/remove-trailing-slash";import{normalizeRouteSlug as f}from"../../../../utils/path/normalize-route-slug";const u={};function c(t){if(!t)return!0;const r=t.trim();return r===""||r==="**"||r==="/**"}function l(t){const r=t.trim();if(c(r))return"**";let e=r.toLowerCase();return e.startsWith("/")&&(e=e.slice(1)),e.endsWith("/")&&!e.endsWith("*/")&&(e=e.slice(0,-1)),e}function h(t){return u[t]||(u[t]=a(t,{nocase:!0})),u[t]}function m(t,r){if(c(r)||!r)return!0;const e=s(f(t)).toLowerCase(),i=e.startsWith("/")?e.slice(1):e,n=l(r);if(!n.includes("*")){const o=n.startsWith("/")?n.slice(1):n;return i===s(o)}if(n.endsWith("**")){const o=s(n.slice(0,-2));if(i===o)return!0}return h(n)(i)}function S(t,r,e=new Set){if(!(!t||t.length===0)){for(const i of t)if(!e.has(i.hash)&&m(r,i.target))return i}}export{S as getBannerForSlug,m as matchesBannerTarget};
@@ -1 +1 @@
1
- import a from"i18next";import{useCallback as l}from"react";const s=(t,e)=>{let n=e&&typeof e=="string"?e:void 0,r=n?void 0:e;return t?a.t(t,{defaultValue:n,...r})||n||t||"":n??""},c=()=>({translate:l(s,[])});export{c as useTranslate};
1
+ import a from"i18next";import{useMemo as u}from"react";import{useL10n as o}from"./useL10n";const d=()=>{const{lang:r}=o();return{translate:u(()=>(n,t)=>{let e=t&&typeof t=="string"?t:void 0,s=e?void 0:t;return n?a.t(n,{defaultValue:e,...s})||e||n||"":e??""},[r])}};export{d as useTranslate};
@@ -0,0 +1,8 @@
1
+ import type { JSX } from 'react';
2
+ type ExcalidrawRendererProps = {
3
+ diagramSource: string;
4
+ className?: string;
5
+ };
6
+ export declare function ExcalidrawRenderer({ diagramSource, className, }: ExcalidrawRendererProps): JSX.Element;
7
+ export {};
8
+ //# sourceMappingURL=ExcalidrawRenderer.d.ts.map
@@ -0,0 +1,14 @@
1
+ import o,{useState as f,useEffect as g,useMemo as h,useRef as b}from"react";import x from"styled-components";import{useColorSwitcher as y}from"@redocly/theme/core/hooks";import{ExcalidrawDiagram as k}from"@redocly/theme/markdoc/components/ExcalidrawDiagram/ExcalidrawDiagram";import{SpinnerLoader as S}from"@redocly/theme/components/Loaders/SpinnerLoader";function F({diagramSource:n,className:v}){const{activeColorMode:w}=y(),[u,l]=f(null),[m,r]=f(null),c=b({}),i=w==="dark",s=i?"dark":"light",e=h(()=>{try{return{data:JSON.parse(n),error:null}}catch(a){return{data:null,error:a instanceof Error?a.message:"Failed to parse Excalidraw diagram"}}},[n]);return g(()=>{c.current={},l(null),r(null)},[n]),g(()=>{if(e.error){r(e.error);return}if(!e.data){r("Failed to parse Excalidraw diagram");return}const a=c.current[s];if(a){l(a),r(null);return}let d=!1;async function E(){try{const{exportToSvg:t}=await import("@excalidraw/excalidraw"),p=await t({elements:e.data?.elements||[],appState:{...e.data?.appState||{},exportWithDarkMode:i,exportBackground:!1},files:e.data?.files||null});d||(c.current[s]=p.outerHTML,l(p.outerHTML),r(null))}catch(t){d||r(t instanceof Error?t.message:"Failed to render Excalidraw diagram")}}return r(null),E(),()=>{d=!0}},[e,i,s]),m?o.createElement(M,{className:"excalidraw-wrapper"},m):u?o.createElement(k,{diagramHtml:u,className:v}):o.createElement(H,{className:"excalidraw-wrapper"},o.createElement(S,{color:"var(--border-color-secondary)",size:"32px"}))}const H=x.div`
2
+ background-color: var(--excalidraw-bg-color);
3
+ border-radius: var(--excalidraw-border-radius);
4
+ min-height: 200px;
5
+ display: flex;
6
+ align-items: center;
7
+ justify-content: center;
8
+ `,M=x.div`
9
+ background-color: var(--admonition-danger-bg-color);
10
+ color: var(--admonition-danger-text-color);
11
+ border-radius: var(--excalidraw-border-radius);
12
+ padding: var(--spacing-md);
13
+ font-size: var(--font-size-sm);
14
+ `;export{F as ExcalidrawRenderer};
@@ -1,3 +1,4 @@
1
1
  export * from './html-script.js';
2
+ export * from './ExcalidrawRenderer.js';
2
3
  export declare function openapi(): Promise<typeof import("./openapi/index.js")>;
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- export*from"./html-script.js";async function n(){return await import("./openapi/index.js")}export{n as openapi};
1
+ export*from"./html-script.js";export*from"./ExcalidrawRenderer.js";async function n(){return await import("./openapi/index.js")}export{n as openapi};
@@ -1 +1 @@
1
- import{withPathPrefix as p,getNavbarElement as g}from"@redocly/theme/core/utils";import{isLocalLink as b}from"../../../utils/path/is-local-link.js";import{withLoadProgress as T}from"./withLoadProgress";let d;async function v({navigate:r,to:o,origin:a="browser",options:s}){o===""&&(o="/"),d=o;const{pathname:n,hash:w,search:i}=new URL(o,window.location.origin+window.location.pathname),t=decodeURIComponent(w),h=decodeURIComponent(window.location.hash),m=window.__LOADER,e=await T(m.tryLoad(n,void 0,i));if(e?.redirectTo){if(!b(e.redirectTo)){window.location.href=e.redirectTo;return}return v({navigate:r,to:e.redirectTo,origin:a,options:s})}if(o.startsWith(p("/_auth/"))){window.location.href=o;return}if(e&&d===o){if((n!==window.location.pathname||i!==window.location.search||t!==h)&&r({pathname:n,search:i,hash:t},{...s,state:{origin:a},unstable_flushSync:!0}),e.props?.disableAutoScroll)return;requestAnimationFrame(()=>{if(t){const c=t.slice(1),l=document.getElementById(c)||document.getElementsByName(c)[0];if(l){const f=g()?.offsetHeight??0,u=l.getBoundingClientRect().top+window.scrollY-f;window.scrollTo({top:u,behavior:"smooth"})}}else window.scrollTo(0,0)})}}export{v as loadAndNavigate};
1
+ import{withPathPrefix as f}from"@redocly/theme/core/utils";import{isLocalLink as m}from"../../../utils/path/is-local-link.js";import{withLoadProgress as u}from"./withLoadProgress";import{scrollToAnchor as p}from"./scroll-to-anchor";let s;async function L({navigate:n,to:o,origin:a="browser",options:c}){o===""&&(o="/"),s=o;const{pathname:e,hash:d,search:i}=new URL(o,window.location.origin+window.location.pathname),t=decodeURIComponent(d),l=decodeURIComponent(window.location.hash),w=window.__LOADER,r=await u(w.tryLoad(e,void 0,i));if(r?.redirectTo){if(!m(r.redirectTo)){window.location.href=r.redirectTo;return}return L({navigate:n,to:r.redirectTo,origin:a,options:c})}if(o.startsWith(f("/_auth/"))){window.location.href=o;return}if(r&&s===o){if((e!==window.location.pathname||i!==window.location.search||t!==l)&&n({pathname:e,search:i,hash:t},{...c,state:{origin:a},unstable_flushSync:!0}),r.props?.disableAutoScroll)return;requestAnimationFrame(()=>{if(t){const h=t.slice(1);p(h)}else window.scrollTo(0,0)})}}export{L as loadAndNavigate};
@@ -0,0 +1,3 @@
1
+ export declare const MAX_ANCHOR_ATTEMPTS = 3;
2
+ export declare function scrollToAnchor(anchor: string, attempt?: number): void;
3
+ //# sourceMappingURL=scroll-to-anchor.d.ts.map
@@ -0,0 +1 @@
1
+ import{getNavbarElement as l}from"@redocly/theme/core/utils";const r=3;function s(e,o=0){const t=document.getElementById(e)||document.getElementsByName(e)[0];if(t){const n=l()?.offsetHeight??0,i=t.getBoundingClientRect().top+window.scrollY;window.scrollTo({top:i-n,behavior:"smooth"})}else o<r&&requestAnimationFrame(()=>s(e,o+1))}export{r as MAX_ANCHOR_ATTEMPTS,s as scrollToAnchor};
@@ -1 +1 @@
1
- import e from"react";import{ThemeDataContext as m,SearchSessionProvider as l}from"@redocly/theme/core/contexts";import{useAnchorPositioning as d,useBreadcrumbs as g,useBanner as p,useCatalogClassic as f,useCurrentProduct as b,useGlobalData as o,useI18n as h,useI18nConfig as C,useL10n as P,useL10nConfig as S,usePageData as r,usePageSharedData as T,usePageVersions as D,usePreloadHistory as v,useProducts as F,useUserMenu as k,useSubmitFeedback as E,useTranslate as L,useSidebarSiblingsData as M,usePageProps as O,useUserTeams as R,useMarkdownText as y,useCodeHighlight as A,useLoadAndNavigate as w,useCatalog as x,useCatalogSort as I,useCatalogSearch as j,useFetchCatalogEntities as B,useFetchCatalogEntitiesRelations as H,useFetchCatalogEntityRevisions as N,useTelemetry as s,useMcpData as U}from"../../app/hooks";import{Link as _}from"../../app/Link";import{useFacetQuery as G,useSearch as Q,useAiSearch as V}from"../../app/search";import{useSidebarItems as W}from"../../app/Sidebar/useSidebarItems";import{deepMerge as q}from"../../../utils/object/deep-merge";import{allowlistObject as z}from"../../../utils/object/allowlist-object";const J=["title","description","seo","sidebar","excludeFromSearch","template","redirects","rbac","metadata","slug","codeSnippet","breadcrumbs","markdown","seo","navbar","footer","colorMode","feedback","navigation","banner"],K={useAnchorPositioning:d,useBreadcrumbs:g,useBanner:p,useCatalog:x,useCatalogSort:I,useCatalogSearch:j,useFetchCatalogEntities:B,useFetchCatalogEntitiesRelations:H,useFetchCatalogEntityRevisions:N,useCatalogClassic:f,useCurrentProduct:b,useGlobalData:o,useSearch:Q,useAiSearch:V,useFacetQuery:G,useI18n:h,useI18nConfig:C,useL10n:P,useL10nConfig:S,usePageData:r,usePageSharedData:T,usePageVersions:D,usePreloadHistory:v,useProducts:F,useUserMenu:k,useSidebarItems:W,useSidebarSiblingsData:M,useSubmitFeedback:E,useTranslate:L,useUserTeams:R,usePageProps:O,useMarkdownText:y,useCodeHighlight:A,useLoadAndNavigate:w,useTelemetry:s,useOtelTelemetry:s,useMcpData:U},X={LinkComponent:_};function se({children:n}){const{props:t}=r()||{},a=o()||{},u=e.useMemo(()=>{const c=z(t?.frontmatter||{},J);return q(a,c)},[a,t?.frontmatter]),i={hooks:K,components:X,config:u};return e.createElement(l,null,e.createElement(m.Provider,{value:i},n))}export{se as ThemeDataProvider};
1
+ import e from"react";import{ThemeDataContext as m,SearchSessionProvider as l}from"@redocly/theme/core/contexts";import{useAnchorPositioning as d,useBreadcrumbs as g,useBanner as p,useCatalogClassic as f,useCurrentProduct as b,useGlobalData as a,useI18n as h,useI18nConfig as C,useL10n as P,useL10nConfig as S,usePageData as r,usePageSharedData as T,usePageVersions as D,usePreloadHistory as k,useProducts as v,useUserMenu as F,useSubmitFeedback as M,useTranslate as E,useSidebarSiblingsData as L,usePageProps as R,useUserTeams as O,useMarkdownText as y,useMarkdocRenderer as A,useCodeHighlight as w,useLoadAndNavigate as x,useCatalog as I,useCatalogSort as j,useCatalogSearch as B,useFetchCatalogEntities as H,useFetchCatalogEntitiesRelations as N,useFetchCatalogEntityRevisions as U,useTelemetry as s,useMcpData as _}from"../../app/hooks";import{Link as G}from"../../app/Link";import{useFacetQuery as Q,useSearch as V,useAiSearch as W}from"../../app/search";import{useSidebarItems as q}from"../../app/Sidebar/useSidebarItems";import{deepMerge as z}from"../../../utils/object/deep-merge";import{allowlistObject as J}from"../../../utils/object/allowlist-object";const K=["title","description","seo","sidebar","excludeFromSearch","template","redirects","rbac","metadata","slug","codeSnippet","breadcrumbs","markdown","seo","navbar","footer","colorMode","feedback","navigation"],X={useAnchorPositioning:d,useBreadcrumbs:g,useBanner:p,useCatalog:I,useCatalogSort:j,useCatalogSearch:B,useFetchCatalogEntities:H,useFetchCatalogEntitiesRelations:N,useFetchCatalogEntityRevisions:U,useCatalogClassic:f,useCurrentProduct:b,useGlobalData:a,useSearch:V,useAiSearch:W,useFacetQuery:Q,useI18n:h,useI18nConfig:C,useL10n:P,useL10nConfig:S,usePageData:r,usePageSharedData:T,usePageVersions:D,usePreloadHistory:k,useProducts:v,useUserMenu:F,useSidebarItems:q,useSidebarSiblingsData:L,useSubmitFeedback:M,useTranslate:E,useUserTeams:O,usePageProps:R,useMarkdownText:y,useMarkdocRenderer:A,useCodeHighlight:w,useLoadAndNavigate:x,useTelemetry:s,useOtelTelemetry:s,useMcpData:_},Y={LinkComponent:G};function ne({children:n}){const{props:t}=r()||{},o=a()||{},u=e.useMemo(()=>{const c=J(t?.frontmatter||{},K);return z(o,c)},[o,t?.frontmatter]),i={hooks:X,components:Y,config:u};return e.createElement(l,null,e.createElement(m.Provider,{value:i},n))}export{ne as ThemeDataProvider};
@@ -1 +1 @@
1
- const E="openapi_docs",n="asyncapi_docs",A="graphql_docs",T="/_spec-gql",O="markdoc",i="tags",p="*",L={"*":"read"},C=["openid","email"],R=1440*60,I="anonymous",l="authenticated",S="**",d="Reunite",N="translations.yaml",u="redocly.yaml",P="@redocly/theme",D="@theme",h="/app-data.json",x="/eject-component";var e;(function(t){t.BUILD="build",t.DEVELOP="develop",t.PREPARE="prepare"})(e||(e={}));var a;(function(t){t.RATING="rating",t.SENTIMENT="sentiment",t.COMMENT="comment",t.MOOD="mood",t.PROBLEM="problem",t.SCALE="scale"})(a||(a={}));const o="entityKey",_="entityId",c="entityRelationId",g={CORS_PROXY:"/_api/cors",INFO:"/_info",EJECT_COMPONENT:"/eject-component/:componentName",SHARED_PAGE_DATA:"/page-data/shared/*",PAGE_DATA:"/page-data/*",APP_DATA:"/app-data.json",AUTHORIZATION:"/authorize",OIDC_CALLBACK:"/_auth/oidc",SAML_CALLBACK:"/_auth/saml2",REDOCLY_CALLBACK:"/_auth/redocly",REPLAY_OAUTH2_CALLBACK:"/_auth/replay-oauth2",REDOCLY_LOGIN_CALLBACK:"/_auth/redocly/redocly-login",REDOCLY_TOKEN_LOGIN:"/_auth/redocly-token-login",SEARCH:"/_search",SEARCH_FACETS:"/_search-facets",SEMANTIC_SEARCH:"/_semantic-search",LOGOUT:"/logout",POST_LOGOUT:"/post-logout",LOGIN:"/login",IDP_LOGIN:"/_auth/idp-login",INVITE:"/invite/:code",RESOLVE_ROUTE_BY_PATH:"/resolve-route-by-path",RESOLVE_ROUTES_BY_PATHS:"/resolve-routes-by-paths",RESOLVE_ROUTE_BY_SLUG:"/resolve-route-by-slug",GET_ROUTES_BY_LINE:"/get-routes-by-line",FEEDBACK:"/feedback",TELEMETRY:"/_events",OTEL_TRACES:"/_otel/v1/traces",HEALTH:"/_health",ASK_AI:"/_ask-ai",CATALOG_ENTITIES:`/catalog-entities/:${_}?`,CATALOG_ENTITIES_RELATIONS:`/catalog-entities-relations/:${c}?`,BFF_CATALOG_ENTITIES:`/bff/catalog-entities/:${o}?`,BFF_CATALOG_RELATED_ENTITIES:`/bff/catalog-related-entities/:${o}`,BFF_CATALOG_REVISIONS:`/bff/catalog-revisions/:${o}`,MCP_OAUTH_AUTHORIZATION_SERVER:"/.well-known/oauth-authorization-server",MCP_OAUTH_PROTECTED_RESOURCE:"/.well-known/oauth-protected-resource",MCP_DYNAMIC_CLIENT_REGISTRATION:"/_mcp/register",MCP_AUTHORIZATION:"/_mcp/oauth2/auth",MCP_TOKEN_PORTAL:"/_mcp/oauth2/token-portal",MCP_CALLBACK:"/_mcp/oauth/callback",SCORECARDS:"/scorecards"};var r;(function(t){t.AI_SEARCH="aiSearch"})(r||(r={}));const U="/login",m="/invite",M={AUTH0_PASS:"/auth/auth0-pass"},b={NotExist:"ENOENT"},G="default_locale",H="sidebar-",F="PUBLIC_",y="branch.",v=["BROKEN_LINK","MARKDOC","RESOLVE"],B=["logo","navbar","products","footer","sidebar","scripts","links","feedback","search","aiAssistant","colorMode","navigation","codeSnippet","markdown","openapi","graphql","analytics","userMenu","versionPicker","breadcrumbs","catalog","entitiesCatalog","scorecard","scorecards","scorecardClassic","mcp","banner"],s="redocly_category",k="redocly_product",f="redocly_version",K="redocly_teams",Y=s,V={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",mcp:"mcp",banner:"banner"};export{n as ASYNC_API_DOCS_TEMPLATE_ID,y as BRANCH_ENV_PREFIX,_ as CATALOG_ENTITY_ID,o as CATALOG_ENTITY_KEY,c as CATALOG_ENTITY_RELATION_ID,u as CONFIG_FILE_NAME,O as CUSTOM_MARKDOC_OPTIONS_PATH,i as CUSTOM_MARKDOC_TAGS_PATH,I as DEFAULT_ANONYMOUS_VISITOR_TEAM,l as DEFAULT_AUTHENTICATED_TEAM,R as DEFAULT_COOKIE_EXPIRATION,G as DEFAULT_LOCALE_PLACEHOLDER,S as DEFAULT_RBAC_SCOPE,d as DEFAULT_SSO_IDP_TITLE,P as DEFAULT_THEME_NAME,U as DEV_LOGIN_SLUG,x as EJECT_COMPONENT_URL,M as ExternalRoutes,V as FEATURE,a as FEEDBACK_TYPES,b as FsErrors,h as GLOBAL_DATA_URL,T as GRAPHQL_SPEC_SLUG,A as GRAPHQL_TEMPLATE_ID,m as INVITE_SLUG,v as MARKDOC_ERROR_TYPES,E as OPENAPI_DOCS_TEMPLATE_ID,F as PUBLIC_ENV_PREFIX,L as PUBLIC_RBAC_SCOPE_ITEM,p as RBAC_ALL_OTHER_TEAMS,C as REQUIRED_OIDC_SCOPES,r as RbacFeatures,s as SEARCH_CATEGORY_FIELD,Y as SEARCH_GROUP_FACET_FIELD,k as SEARCH_PRODUCT_FIELD,K as SEARCH_RBAC_FIELD,f as SEARCH_VERSION_FIELD,H as SIDEBAR_PREFIX,g as ServerRoutes,N as TRANSLATIONS_FILE_NAME,B as UI_ACCESSIBLE_CONFIG_PROPS,D as USER_THEME_ALIAS,e as cliCommandNames};
1
+ const E="openapi_docs",n="asyncapi_docs",A="graphql_docs",T="/_spec-gql",O="markdoc",p="tags",i="*",L={"*":"read"},C=["openid","email"],R=1440*60,I="anonymous",l="authenticated",S="**",d="Reunite",N="translations.yaml",u="redocly.yaml",P="@redocly/theme",D="@theme",h="/app-data.json",x="/eject-component";var e;(function(t){t.BUILD="build",t.DEVELOP="develop",t.PREPARE="prepare"})(e||(e={}));var a;(function(t){t.RATING="rating",t.SENTIMENT="sentiment",t.COMMENT="comment",t.MOOD="mood",t.PROBLEM="problem",t.SCALE="scale"})(a||(a={}));const o="entityKey",_="entityId",c="entityRelationId",g={CORS_PROXY:"/_api/cors",INFO:"/_info",EJECT_COMPONENT:"/eject-component/:componentName",SHARED_PAGE_DATA:"/page-data/shared/*",PAGE_DATA:"/page-data/*",APP_DATA:"/app-data.json",AUTHORIZATION:"/authorize",OIDC_CALLBACK:"/_auth/oidc",SAML_CALLBACK:"/_auth/saml2",REDOCLY_CALLBACK:"/_auth/redocly",REPLAY_OAUTH2_CALLBACK:"/_auth/replay-oauth2",REDOCLY_LOGIN_CALLBACK:"/_auth/redocly/redocly-login",REDOCLY_TOKEN_LOGIN:"/_auth/redocly-token-login",SEARCH:"/_search",SEARCH_FACETS:"/_search-facets",SEMANTIC_SEARCH:"/_semantic-search",LOGOUT:"/logout",POST_LOGOUT:"/post-logout",LOGIN:"/login",IDP_LOGIN:"/_auth/idp-login",INVITE:"/invite/:code",RESOLVE_ROUTE_BY_PATH:"/resolve-route-by-path",RESOLVE_ROUTES_BY_PATHS:"/resolve-routes-by-paths",RESOLVE_ROUTE_BY_SLUG:"/resolve-route-by-slug",GET_ROUTES_BY_LINE:"/get-routes-by-line",FEEDBACK:"/feedback",TELEMETRY:"/_events",OTEL_TRACES:"/_otel/v1/traces",HEALTH:"/_health",ASK_AI:"/_ask-ai",CATALOG_ENTITIES:`/catalog-entities/:${_}?`,CATALOG_ENTITIES_RELATIONS:`/catalog-entities-relations/:${c}?`,BFF_CATALOG_ENTITIES:`/bff/catalog-entities/:${o}?`,BFF_CATALOG_RELATED_ENTITIES:`/bff/catalog-related-entities/:${o}`,BFF_CATALOG_REVISIONS:`/bff/catalog-revisions/:${o}`,MCP_OAUTH_AUTHORIZATION_SERVER:"/.well-known/oauth-authorization-server",MCP_OAUTH_PROTECTED_RESOURCE:"/.well-known/oauth-protected-resource",MCP_DYNAMIC_CLIENT_REGISTRATION:"/_mcp/register",MCP_AUTHORIZATION:"/_mcp/oauth2/auth",MCP_TOKEN_PORTAL:"/_mcp/oauth2/token-portal",MCP_CALLBACK:"/_mcp/oauth/callback",SCORECARDS:"/scorecards"};var r;(function(t){t.AI_SEARCH="aiSearch"})(r||(r={}));const U="/login",m="/invite",M={AUTH0_PASS:"/auth/auth0-pass"},b={NotExist:"ENOENT"},G="default_locale",H="sidebar-",F="PUBLIC_",y="branch.",v=["BROKEN_LINK","MARKDOC","RESOLVE"],B=["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"],s="redocly_category",k="redocly_product",f="redocly_version",K="redocly_teams",Y=s,V={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",mcp:"mcp",banner:"banner"};export{n as ASYNC_API_DOCS_TEMPLATE_ID,y as BRANCH_ENV_PREFIX,_ as CATALOG_ENTITY_ID,o as CATALOG_ENTITY_KEY,c as CATALOG_ENTITY_RELATION_ID,u as CONFIG_FILE_NAME,O as CUSTOM_MARKDOC_OPTIONS_PATH,p as CUSTOM_MARKDOC_TAGS_PATH,I as DEFAULT_ANONYMOUS_VISITOR_TEAM,l as DEFAULT_AUTHENTICATED_TEAM,R as DEFAULT_COOKIE_EXPIRATION,G as DEFAULT_LOCALE_PLACEHOLDER,S as DEFAULT_RBAC_SCOPE,d as DEFAULT_SSO_IDP_TITLE,P as DEFAULT_THEME_NAME,U as DEV_LOGIN_SLUG,x as EJECT_COMPONENT_URL,M as ExternalRoutes,V as FEATURE,a as FEEDBACK_TYPES,b as FsErrors,h as GLOBAL_DATA_URL,T as GRAPHQL_SPEC_SLUG,A as GRAPHQL_TEMPLATE_ID,m as INVITE_SLUG,v as MARKDOC_ERROR_TYPES,E as OPENAPI_DOCS_TEMPLATE_ID,F as PUBLIC_ENV_PREFIX,L as PUBLIC_RBAC_SCOPE_ITEM,i as RBAC_ALL_OTHER_TEAMS,C as REQUIRED_OIDC_SCOPES,r as RbacFeatures,s as SEARCH_CATEGORY_FIELD,Y as SEARCH_GROUP_FACET_FIELD,k as SEARCH_PRODUCT_FIELD,K as SEARCH_RBAC_FIELD,f as SEARCH_VERSION_FIELD,H as SIDEBAR_PREFIX,g as ServerRoutes,N as TRANSLATIONS_FILE_NAME,B as UI_ACCESSIBLE_CONFIG_PROPS,D as USER_THEME_ALIAS,e as cliCommandNames};
@@ -1 +1 @@
1
- import a from"@markdoc/markdoc";import{isPrimitive as m}from"../../../utils/guards/is-primitive.js";import{isStringNode as s}from"../../helpers/guards/is-string-node.js";import{isTag as u}from"../../helpers/guards/is-tag.js";const g=a.nodes.fence,w={...g,attributes:{...g.attributes,label:{type:String,render:"data-label"},title:{type:String,render:"data-title"},highlight:{type:String,render:"data-highlight"}},transform(r,i){const e=r.transformAttributes(i);let t=r.transformChildren(i);const o=e["data-language"],l=e["data-title"];switch(r.attributes.process===!1&&(t=[r.attributes.content]),o){case"mermaid":return s(t[0])?new a.Tag("Mermaid",{...e,diagramSource:t[0]},t):new a.Tag(r.tag,e,t);default:const c=t.map(n=>m(n)?n.toString():u(n)?n?.attributes?.rawtag:"").join("");return s(t[0])?new a.Tag("CodeBlock",{...e,header:{title:l,controls:{copy:{}}},source:c,lang:o},[]):new a.Tag(r.tag,e,t)}}};export{w as fence};
1
+ import a from"@markdoc/markdoc";import{isPrimitive as u}from"../../../utils/guards/is-primitive.js";import{isStringNode as i}from"../../helpers/guards/is-string-node.js";import{isTag as m}from"../../helpers/guards/is-tag.js";const g=a.nodes.fence,h={...g,attributes:{...g.attributes,label:{type:String,render:"data-label"},title:{type:String,render:"data-title"},highlight:{type:String,render:"data-highlight"}},transform(e,s){const r=e.transformAttributes(s);let t=e.transformChildren(s);const o=r["data-language"],c=r["data-title"];switch(e.attributes.process===!1&&(t=[e.attributes.content]),o){case"mermaid":return i(t[0])?new a.Tag("Mermaid",{...r,diagramSource:t[0]},t):new a.Tag(e.tag,r,t);case"excalidraw":return i(t[0])?new a.Tag("ExcalidrawRenderer",{...r,diagramSource:t[0]},t):new a.Tag(e.tag,r,t);default:const l=t.map(n=>u(n)?n.toString():m(n)?n?.attributes?.rawtag:"").join("");return i(t[0])?new a.Tag("CodeBlock",{...r,header:{title:c,controls:{copy:{}}},source:l,lang:o},[]):new a.Tag(e.tag,r,t)}}};export{h as fence};
@@ -0,0 +1,3 @@
1
+ import type { CustomMarkdocTag } from '../types.js';
2
+ export declare const excalidraw: CustomMarkdocTag;
3
+ //# sourceMappingURL=excalidraw.d.ts.map
@@ -0,0 +1 @@
1
+ import a from"@markdoc/markdoc";import{RawContent as s}from"../attributes/raw-content.js";const c={schema:{attributes:{src:{type:s,required:!0},srcRawContent:{type:String,render:!1}},render:"ExcalidrawRenderer",selfClosing:!0,transform:(r,n)=>{const t=r.transformAttributes(n),e=r.attributes.srcRawContent;return typeof e=="string"?new a.Tag("ExcalidrawRenderer",{...t,diagramSource:e},[]):new a.Tag(r.tag,t,[])}},tagName:"excalidraw"};export{c as excalidraw};
@@ -4,6 +4,7 @@ import { openApiExample } from './openapi-example.js';
4
4
  import { replayOpenApi } from './replay-openapi.js';
5
5
  import { openApiResponseSample } from './openapi-response-sample.js';
6
6
  import { jsonExample } from './json-example.js';
7
+ import { excalidraw } from './excalidraw.js';
7
8
  declare const _default: {
8
9
  [jsonSchema.tagName]: import("@markdoc/markdoc").Schema & {
9
10
  dynamicComponentLib?: string;
@@ -23,6 +24,9 @@ declare const _default: {
23
24
  [jsonExample.tagName]: import("@markdoc/markdoc").Schema & {
24
25
  dynamicComponentLib?: string;
25
26
  };
27
+ [excalidraw.tagName]: import("@markdoc/markdoc").Schema & {
28
+ dynamicComponentLib?: string;
29
+ };
26
30
  };
27
31
  export default _default;
28
32
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- import{jsonSchema as m}from"./json-schema.js";import{openApiCodeSample as e}from"./openapi-code-sample.js";import{openApiExample as a}from"./openapi-example.js";import{replayOpenApi as p}from"./replay-openapi.js";import{openApiResponseSample as o}from"./openapi-response-sample.js";import{jsonExample as r}from"./json-example.js";var n={[m.tagName]:m.schema,[e.tagName]:e.schema,[a.tagName]:a.schema,[p.tagName]:p.schema,[o.tagName]:o.schema,[r.tagName]:r.schema};export{n as default};
1
+ import{jsonSchema as m}from"./json-schema.js";import{openApiCodeSample as a}from"./openapi-code-sample.js";import{openApiExample as e}from"./openapi-example.js";import{replayOpenApi as o}from"./replay-openapi.js";import{openApiResponseSample as p}from"./openapi-response-sample.js";import{jsonExample as r}from"./json-example.js";import{excalidraw as t}from"./excalidraw.js";var n={[m.tagName]:m.schema,[a.tagName]:a.schema,[e.tagName]:e.schema,[o.tagName]:o.schema,[p.tagName]:p.schema,[r.tagName]:r.schema,[t.tagName]:t.schema};export{n as default};
@@ -41,6 +41,7 @@ export declare const envSchema: z.ZodObject<{
41
41
  OIDC_ISSUER_URL: z.ZodOptional<z.ZodString>;
42
42
  LOCALHOST_LOGIN: z.ZodOptional<z.ZodEnum<["true", "false"]>>;
43
43
  REDOCLY_OAUTH_USE_INTROSPECT: z.ZodOptional<z.ZodString>;
44
+ REDOCLY_ENFORCE_LOGIN: z.ZodOptional<z.ZodEnum<["true", "false"]>>;
44
45
  } & {
45
46
  REDOCLY_SSR_RENDER_MODE: z.ZodOptional<z.ZodEnum<["worker", "main"]>>;
46
47
  REDOCLY_SSR_WORKERS_MIN: z.ZodOptional<z.ZodNumber>;
@@ -121,6 +122,7 @@ export declare const envSchema: z.ZodObject<{
121
122
  OIDC_ISSUER_URL: z.ZodOptional<z.ZodString>;
122
123
  LOCALHOST_LOGIN: z.ZodOptional<z.ZodEnum<["true", "false"]>>;
123
124
  REDOCLY_OAUTH_USE_INTROSPECT: z.ZodOptional<z.ZodString>;
125
+ REDOCLY_ENFORCE_LOGIN: z.ZodOptional<z.ZodEnum<["true", "false"]>>;
124
126
  } & {
125
127
  REDOCLY_SSR_RENDER_MODE: z.ZodOptional<z.ZodEnum<["worker", "main"]>>;
126
128
  REDOCLY_SSR_WORKERS_MIN: z.ZodOptional<z.ZodNumber>;
@@ -201,6 +203,7 @@ export declare const envSchema: z.ZodObject<{
201
203
  OIDC_ISSUER_URL: z.ZodOptional<z.ZodString>;
202
204
  LOCALHOST_LOGIN: z.ZodOptional<z.ZodEnum<["true", "false"]>>;
203
205
  REDOCLY_OAUTH_USE_INTROSPECT: z.ZodOptional<z.ZodString>;
206
+ REDOCLY_ENFORCE_LOGIN: z.ZodOptional<z.ZodEnum<["true", "false"]>>;
204
207
  } & {
205
208
  REDOCLY_SSR_RENDER_MODE: z.ZodOptional<z.ZodEnum<["worker", "main"]>>;
206
209
  REDOCLY_SSR_WORKERS_MIN: z.ZodOptional<z.ZodNumber>;
@@ -14,6 +14,7 @@ export declare const authSchema: z.ZodObject<{
14
14
  OIDC_ISSUER_URL: z.ZodOptional<z.ZodString>;
15
15
  LOCALHOST_LOGIN: z.ZodOptional<z.ZodEnum<["true", "false"]>>;
16
16
  REDOCLY_OAUTH_USE_INTROSPECT: z.ZodOptional<z.ZodString>;
17
+ REDOCLY_ENFORCE_LOGIN: z.ZodOptional<z.ZodEnum<["true", "false"]>>;
17
18
  }, "strip", z.ZodTypeAny, {
18
19
  JWT_SECRET_KEY?: string | undefined;
19
20
  AUTH_URL?: string | undefined;
@@ -26,6 +27,7 @@ export declare const authSchema: z.ZodObject<{
26
27
  OIDC_ISSUER_URL?: string | undefined;
27
28
  LOCALHOST_LOGIN?: "true" | "false" | undefined;
28
29
  REDOCLY_OAUTH_USE_INTROSPECT?: string | undefined;
30
+ REDOCLY_ENFORCE_LOGIN?: "true" | "false" | undefined;
29
31
  }, {
30
32
  JWT_SECRET_KEY?: string | undefined;
31
33
  AUTH_URL?: string | undefined;
@@ -38,5 +40,6 @@ export declare const authSchema: z.ZodObject<{
38
40
  OIDC_ISSUER_URL?: string | undefined;
39
41
  LOCALHOST_LOGIN?: "true" | "false" | undefined;
40
42
  REDOCLY_OAUTH_USE_INTROSPECT?: string | undefined;
43
+ REDOCLY_ENFORCE_LOGIN?: "true" | "false" | undefined;
41
44
  }>;
42
45
  //# sourceMappingURL=auth.d.ts.map
@@ -1 +1 @@
1
- import{z as o}from"zod";const n=o.object({JWT_SECRET_KEY:o.string().optional(),AUTH_URL:o.string().url().optional(),BH_API_URL:o.string().url().optional(),ENTITLEMENTS_JWKS_CDN_URL:o.string().url().optional(),OAUTH_CLIENT_ID:o.string().optional(),OAUTH_CLIENT_SECRET:o.string().optional(),OIDC_CLIENT_ID:o.string().optional(),OIDC_CLIENT_SECRET:o.string().optional(),OIDC_ISSUER_URL:o.string().url().optional(),LOCALHOST_LOGIN:o.enum(["true","false"]).optional(),REDOCLY_OAUTH_USE_INTROSPECT:o.string().optional()});export{n as authSchema};
1
+ import{z as o}from"zod";const n=o.object({JWT_SECRET_KEY:o.string().optional(),AUTH_URL:o.string().url().optional(),BH_API_URL:o.string().url().optional(),ENTITLEMENTS_JWKS_CDN_URL:o.string().url().optional(),OAUTH_CLIENT_ID:o.string().optional(),OAUTH_CLIENT_SECRET:o.string().optional(),OIDC_CLIENT_ID:o.string().optional(),OIDC_CLIENT_SECRET:o.string().optional(),OIDC_ISSUER_URL:o.string().url().optional(),LOCALHOST_LOGIN:o.enum(["true","false"]).optional(),REDOCLY_OAUTH_USE_INTROSPECT:o.string().optional(),REDOCLY_ENFORCE_LOGIN:o.enum(["true","false"]).optional()});export{n as authSchema};
@@ -1,3 +1,3 @@
1
- import{spawn as h}from"child_process";import w from"path";async function v(a,l){if(!l)return new Map;let r,c;try{const t=await l.revparse(["--show-toplevel"]);r=new Set((await l.raw("ls-files",a)).split(`
2
- `).map(s=>s.trim()));const e=t&&w.relative(t,a);c=e&&e.length&&e.length+1||0}catch(t){if(t.message.includes("not a git repository"))return new Map;throw t}return new Promise(t=>{const e=new Map;let s=0;const o=h("git",["whatchanged","--pretty=%at","--",a],{stdio:"pipe"});let p="";function u(f){p+=String(f);const m=p.split(`
3
- `);p=m.pop()||"",m.forEach(i=>{if(i=i.trim(),!!i){if(i.startsWith(":")){const n=i.split(" ").slice(-1)[0].slice(c);if(e.has(n))return;r.has(n)&&r.delete(n),e.set(n,new Date(s*1e3).toISOString())}else s=Number(i);r.size===0&&(o.kill(),t(e))}})}o.stdout.on("data",f=>{u(f)}),o.stdout.on("end",()=>{u(""),o.kill(),t(e)})})}export{v as fastMtime};
1
+ import{spawn as w}from"child_process";import h from"path";async function v(a,l){if(!l)return new Map;let i,c;try{const t=await l.revparse(["--show-toplevel"]);i=new Set((await l.raw("ls-files",a)).split(`
2
+ `).map(s=>s.trim()));const e=t&&h.relative(t,a);c=e&&e.length&&e.length+1||0}catch(t){if(t.message.includes("not a git repository"))return new Map;throw t}return new Promise(t=>{const e=new Map;let s=0;const o=w("git",["log","--raw","--no-merges","--pretty=%at","--",a],{stdio:"pipe"});let p="";function m(f){p+=String(f);const u=p.split(`
3
+ `);p=u.pop()||"",u.forEach(r=>{if(r=r.trim(),!!r){if(r.startsWith(":")){const n=r.split(" ").slice(-1)[0].slice(c);if(e.has(n))return;i.has(n)&&i.delete(n),e.set(n,new Date(s*1e3).toISOString())}else s=Number(r);i.size===0&&(o.kill(),t(e))}})}o.stdout.on("data",f=>{m(f)}),o.stdout.on("end",()=>{m(""),o.kill(),t(e)})})}export{v as fastMtime};
@@ -1 +1 @@
1
- import{parse as d}from"path";function N(p){const a=p.split("/");let i=-1;for(let t=0;t<a.length;t++)if(a[t]==="@api"){i=t;break}let e="",r=p;i!==-1&&(e=a.slice(0,i).join("/"),r=a.slice(i+1).join("/"),e=e?`/${e}/api`:"/api");const{dir:c,name:o}=d(r),s=o.match(/\.(get|post|put|delete|patch)$/i),h=s?s[1]:"all",l=o.replace(/\.(get|post|put|delete|patch)$/,"");let n=c.split("/");l!=="index"&&n.push(l);const m=n.map(t=>t.startsWith("[...")&&t.endsWith("]")?`:${t.slice(4,-1)}{.+}`:t.startsWith("[")&&t.endsWith("]")?`:${t.slice(1,-1)}`:t).join("/");return{path:`${e}/${m}`.replace(/\/+/g,"/").replace(/\/$/,""),method:h,handler:p}}export{N as parseRouteFsPathForHono};
1
+ import{parse as o}from"path";function p(t){const e=t.split("/");let a=-1;for(let i=0;i<e.length;i++)if(e[i]==="@api"){a=i;break}if(a===-1)return{prefixPath:"",apiPath:t};const n=e.slice(0,a).join("/"),r=e.slice(a+1).join("/");return{prefixPath:n?`/${n}/api`:"/api",apiPath:r}}function c(t){const{dir:e,name:a}=o(t),n=a.match(/\.(get|post|put|delete|patch)$/i);return{dir:e,method:n?n[1]:"all",routeName:a.replace(/\.(get|post|put|delete|patch)$/,"")}}function s(t){return t.startsWith("[...")&&t.endsWith("]")?`:${t.slice(4,-1)}{.+}`:t.startsWith("[")&&t.endsWith("]")?`:${t.slice(1,-1)}`:t}function h(t,e){const a=t.split("/");return e!=="index"&&a.push(e),a}function u(t,e){return`${t}/${e.join("/")}`.replace(/\/+/g,"/").replace(/\/$/,"")}function f(t){const{prefixPath:e,apiPath:a}=p(t),{dir:n,routeName:r,method:i}=c(a);return{path:u(e,h(n,r).map(s)),method:i,handler:t}}export{f as parseRouteFsPathForHono};
@@ -1 +1 @@
1
- import{join as f}from"path";import{REDOCLY_ROUTE_RBAC as c}from"@redocly/config";import{removeTrailingSlash as d}from"../../../utils/url/remove-trailing-slash.js";import{removeLeadingSlash as m}from"../../../utils/url/remove-leading-slash.js";import{USER_DEFINED_API_FUNCTIONS_COUNTER_KEY as h}from"../../../server/store.js";import{parseRouteFsPathForHono as g}from"./helpers/parse-route-fs-path-for-hono.js";import{telemetryTraceStep as F}from"../../../cli/telemetry/helpers/trace-step.js";const R="api-functions";async function S(){return{id:"ApiFunctions",requiredEntitlements:["apiFunctions"],async processContent(n,i){await F("build.plugin.api_functions",async r=>{const s=await i.getConfig(),a=(s.apiFunctions?.folders||[]).map(e=>`^${m(d(e))}`);r?.setAttribute("config",JSON.stringify(s.apiFunctions||{})),a.push(".*@api");const l=new RegExp(`(${a.join("|")})/.*.(ts|js)$`);let o=0;for(const e of i.fs.scan(l)){if(e.isVirtual)continue;const t=g(e.relativePath);if(!t)continue;const u=`${R}:${t.handler}`,p=f(n.contentDir,t.handler);n.createRequestHandler(u,p),n.addApiRoute({requestHandlerId:u,slug:t.path,fsPath:e.relativePath,httpMethod:t.method,[c]:{fsPath:e.relativePath,slug:t.path}}),o++}r?.setAttribute("definedApiFunctions",String(o)),n.setGlobalConfig({[h]:o})})}}}export{R as API_FUNCTIONS_REQUEST_HANDLER_ID,S as apiFunctionsPlugin};
1
+ import{join as p}from"path";import{REDOCLY_ROUTE_RBAC as f}from"@redocly/config";import{removeTrailingSlash as l}from"../../../utils/url/remove-trailing-slash.js";import{removeLeadingSlash as d}from"../../../utils/url/remove-leading-slash.js";import{USER_DEFINED_API_FUNCTIONS_COUNTER_KEY as m}from"../../../server/store.js";import{parseRouteFsPathForHono as h}from"./helpers/parse-route-fs-path-for-hono.js";import{telemetryTraceStep as F}from"../../../cli/telemetry/helpers/trace-step.js";const g="api-functions";function A(t){return d(l(t))}function R(t){return`^${A(t)}`}function E(t){const i=t.map(R);return i.push(".*@api"),new RegExp(`(${i.join("|")})/.*.(ts|js)$`)}async function T(){return{id:"ApiFunctions",requiredEntitlements:["apiFunctions"],async processContent(t,i){await F("build.plugin.api_functions",async r=>{const s=await i.getConfig();r?.setAttribute("config",JSON.stringify(s.apiFunctions||{}));const a=E(s.apiFunctions?.folders||[]);let o=0;for(const e of i.fs.scan(a)){if(e.isVirtual)continue;const n=h(e.relativePath);if(!n)continue;const u=`${g}:${n.handler}`,c=p(t.contentDir,n.handler);t.createRequestHandler(u,c),t.addApiRoute({requestHandlerId:u,slug:n.path,fsPath:e.relativePath,httpMethod:n.method,[f]:{fsPath:e.relativePath,slug:n.path}}),o++}r?.setAttribute("definedApiFunctions",String(o)),t.setGlobalConfig({[m]:o})})}}}export{g as API_FUNCTIONS_REQUEST_HANDLER_ID,T as apiFunctionsPlugin};
@@ -1 +1 @@
1
- import{simplifyAstStructure as h}from"@redocly/openapi-docs/lib/utils/simplifyAstStructure.js";import{storeDefinitionBundles as p}from"./store-definition-bundles.js";import{arazzoDocLoader as y,arazzoDocsLoader as P}from"./arazzo-doc-loader.js";import{telemetryTraceStep as k}from"../../../cli/telemetry/helpers/trace-step.js";const u="arazzo-docs-";async function $(w){let l=[];return{id:"arazzo",loaders:{"arazzo-doc":y,"arazzo-docs":P},processContent:async(e,o)=>{await k("build.plugin.arazzo_docs",async()=>{for(const t of await o.fs.scan(/(\.ya?ml|\.json)$/))if(!await o.isPathIgnored(t.relativePath))try{const{data:a,compoundHash:i}=await o.cache.load(t.realRelativePath,"arazzo-doc");if(!a?.length)continue;l=a.map(({markdocChunks:r,relativePath:c,isVirtual:n,customOutputRelativeFile:s,realRelativePath:d})=>({chunks:r,relativePath:c,realRelativePath:d,isVirtual:s!=null||t.isVirtual||n})),p(a,e.outdir,i);for(const r of a){const c=`${u}${r.relativePath}`;await e.createSharedData(c,{document:r.document})}}catch(a){console.error(a)}})},afterRoutesCreated:async(e,o)=>{for(const{chunks:t,relativePath:a,isVirtual:i,realRelativePath:r}of l)await o.cache.load(a,{loader:async function(){await o.cache.load(r,"arazzo-doc");for(const{node:n,markdown:s,pointer:d,key:z,relativePath:m}of t){const{ast:f}=await e.parseMarkdoc({content:s,relativePath:d,isVirtual:i},o,{sharedDataIds:[`${u}${m}`]});n[`x-parsed-md-${z}`]={result:h(f)}}},name:"arazzo-markdoc-inline-parser"})}}}export{$ as arazzoDocsPlugin};
1
+ import{simplifyAstStructure as h}from"@redocly/openapi-docs/lib/utils/simplifyAstStructure.js";import{storeDefinitionBundles as p}from"./store-definition-bundles.js";import{arazzoDocLoader as y,arazzoDocsLoader as P}from"./arazzo-doc-loader.js";import{telemetryTraceStep as k}from"../../../cli/telemetry/helpers/trace-step.js";const u="arazzo-docs-";async function $(w){let l=[];return{id:"arazzo",loaders:{"arazzo-doc":y,"arazzo-docs":P},processContent:async(e,o)=>{await k("build.plugin.arazzo_docs",async()=>{for(const t of await o.fs.scan(/(\.ya?ml|\.json)$/))if(!await o.isPathIgnored(t.relativePath))try{const{data:a,compoundHash:c}=await o.cache.load(t.realRelativePath,"arazzo-doc");if(!a?.length)continue;l=a.map(({markdocChunks:r,relativePath:n,isVirtual:i,customOutputRelativeFile:s,realRelativePath:d})=>({chunks:r,relativePath:n,realRelativePath:d,isVirtual:s!=null||t.isVirtual||i})),p(a,e.outdir,c);for(const r of a){const n=`${u}${r.relativePath}`;await e.createSharedData(n,{document:r.document})}}catch(a){console.error(a)}})},afterRoutesCreated:async(e,o)=>{for(const{chunks:t,relativePath:a,isVirtual:c,realRelativePath:r}of l)await o.cache.load(a,{loader:async function(){await o.cache.load(r,"arazzo-doc");for(const{node:i,markdown:s,pointer:d,key:z,relativePath:m}of t){const{ast:f}=await e.parseMarkdoc({input:{content:s,relativePath:d,isVirtual:c},context:o,deps:{sharedDataIds:[`${u}${m}`]}});i[`x-parsed-md-${z}`]={result:h(f)}}},name:"arazzo-markdoc-inline-parser"})}}}export{$ as arazzoDocsPlugin};
@@ -1 +1 @@
1
- import{getPublicEnvVariables as n}from"../../utils/envs/get-public-env-variables.js";const l=async({fsPath:r,slug:e},t,{partials:a,variables:i},o)=>{const s=o.getPartialsForRoute?.(e)||a;return{definitionId:r,...t.props,markdown:{partials:s,variables:{...i,env:n()}}}};var d=l;export{d as default};
1
+ import{getPublicEnvVariables as n}from"../../utils/envs/get-public-env-variables.js";const l=async({fsPath:r,slug:t},a,{partials:i,variables:o},s)=>{const e=s.getPartialsForRoute?.(t);return{definitionId:r,...a.props,markdown:{partials:e&&Object.keys(e).length>0?e:i,variables:{...o,env:n()}}}};var c=l;export{c as default};
@@ -1 +1 @@
1
- import A from"path";import{simplifyAstStructure as E}from"@redocly/openapi-docs/lib/utils/simplifyAstStructure.js";import{buildMenuItems as $}from"@redocly/asyncapi-docs/lib/utils/build-menu-items.js";import{findFirstBinding as T}from"@redocly/asyncapi-docs/lib/utils/find-first-binding.js";import{ASYNC_API_DOCS_TEMPLATE_ID as v}from"../../../constants/common.js";import{combineUrls as D}from"@redocly/theme/core/utils";import{PUBLIC_API_DEFINITIONS_FOLDER as b}from"../../constants/common.js";import{logger as x}from"../../tools/notifiers/logger.js";import{getTemplatePath as R}from"./get-template-path.js";import{storeDefinitionBundles as O}from"./store-definition-bundles.js";import{asyncapiDocLoader as F,asyncapiDocsLoader as N}from"./asyncapi-doc-loader.js";import{searchResolver as j}from"./search/search-resolver.js";import{getAiDocumentsStore as L}from"./search/get-ai-search-documents.js";import{telemetryTraceStep as G}from"../../../cli/telemetry/helpers/trace-step.js";const _="asyncapi-docs-";async function tt(d){let p=[],u=new Set;return{id:"asyncapi",requiredEntitlements:["asyncapi"],loaders:{"asyncapi-doc":F,"asyncapi-docs":N},processContent:async(e,a)=>{await G("build.plugin.asyncapi_docs",async()=>{if((await a.getConfig()).plugins?.some(l=>l.startsWith("@redocly/portal-plugin-async-api/"))){x.warn("The plugin '@redocly/portal-plugin-async-api' is deprecated. Please remove it from your config to use built-in AsyncAPI docs.");return}const c=e.createTemplate(v,R("../../../client/templates/asyncapi-docs/template.js")),g=e.registerServerPropsGetter(v,R("./get-server-props.js"));for(const l of await a.fs.scan(/(\.ya?ml|\.json)$/))if(!await a.isPathIgnored(l.relativePath))try{const{data:s,compoundHash:w}=await a.cache.load(l.realRelativePath,"asyncapi-doc");if(!s?.length)continue;p=s.map(({markdocChunks:t,relativePath:o,isVirtual:m,customOutputRelativeFile:f,realRelativePath:y})=>({chunks:t,relativePath:o,realRelativePath:y,isVirtual:f!=null||l.isVirtual||m})),O(s,e.outdir,w);for(const t of s){const o=`${_}${t.relativePath}`,m=T(t.document),{navItems:f,apiItems:y}=$({asyncApiDoc:t.document,protocol:m||""}),I=[{url:D(b,`${C(t.relativePath,".json")}?download`)},{url:D(b,`${C(t.relativePath,".yaml")}?download`)}];await e.createSharedData(o,{document:t.document,apiItems:y,protocol:m,downloadUrls:I}),f.forEach(r=>{const n={fsPath:t.relativePath,slugSuffix:`/${r.link}`,templateId:c,sharedData:[{key:"AsyncApiDefinition",id:o}],getStaticData:S(a.withPathPrefix,r.label),serverPropsGetterIds:[g]};e.addRoute(n),r.items&&r.items.forEach(i=>{e.addRoute({...n,slugSuffix:`/${i.link}`,getStaticData:S(a.withPathPrefix,i.label)}),i.items&&i.items.forEach(h=>{e.addRoute({...n,slugSuffix:`/${h.link}`,getStaticData:S(a.withPathPrefix,i.label)})})})}),e.addRoute({fsPath:t.customOutputRelativeFile||t.relativePath,templateId:c,hasClientRoutes:!0,getSidebar:r=>{const n=i=>{const h={...i};return i.link&&(h.routeSlug=D(r.slug,i.link),h.link=D(r.slug,i.link)),i.items&&(h.items=i.items.map(n)),h};return[{type:"link",label:t.document.info?.title??"AsyncAPI Overview",routeSlug:r.slug,link:r.slug},...f.map(n)]},getSearchDocuments:j(e,t.document),getStaticData:S(a.withPathPrefix,t.document.info?.title??"AsyncAPI Docs"),getAiDocumentsStore:L({actions:e,document:t.document,metadata:{type:"asyncapi",title:t.document.info?.title??"AsyncAPI Docs",description:t.document.info?.description??"",...t.document.info?.["x-metadata"]??{}}}),metadata:{type:"asyncapi",title:t.document.info?.title??"AsyncAPI Docs",description:t.document.info?.description??"",...t.document.info?.["x-metadata"]??{}},sharedData:[{key:"AsyncApiDefinition",id:o}]})}}catch(s){console.error(s)}})},afterRoutesCreated:async(e,a)=>{const P=new Set;for(const{chunks:c,relativePath:g,isVirtual:l,realRelativePath:s}of p){const w=e.getAllRoutes().filter(o=>o.fsPath===g).map(o=>o.slug),t=(await a.cache.load(s,"asyncapi-doc")).compoundHash;await a.cache.load(g,{loader:async function(){for(const{node:m,markdown:f,pointer:y,key:I,relativePath:r}of c){const{ast:n}=await e.parseMarkdoc({content:f,relativePath:y,isVirtual:l},a,{sharedDataIds:[`${_}${r}`],routeSlugs:w});m[`x-parsed-md-${I}`]={result:E(n)}}},name:"asyncapi-markdoc-inline-parser"},[t]);for(const{pointer:o}of c)P.add(o)}const k=u.difference(P);for(const c of k)a.cache.delete(c);u=P}}}function S(d,p){return async function(u,e){return{props:{settings:{baseUrlPath:d(u.baseSlug)},disableAutoScroll:!0,seo:{title:p}}}}}function C(d,p){const u=A.posix.dirname(d),e=A.posix.basename(d,A.posix.extname(d))+p;return A.posix.join(u,e)}export{tt as asyncAPIDocsPlugin};
1
+ import A from"path";import{simplifyAstStructure as E}from"@redocly/openapi-docs/lib/utils/simplifyAstStructure.js";import{buildMenuItems as $}from"@redocly/asyncapi-docs/lib/utils/build-menu-items.js";import{findFirstBinding as T}from"@redocly/asyncapi-docs/lib/utils/find-first-binding.js";import{ASYNC_API_DOCS_TEMPLATE_ID as v}from"../../../constants/common.js";import{combineUrls as D}from"@redocly/theme/core/utils";import{PUBLIC_API_DEFINITIONS_FOLDER as R}from"../../constants/common.js";import{logger as x}from"../../tools/notifiers/logger.js";import{getRouteSlugsForPath as F}from"../utils.js";import{getTemplatePath as b}from"./get-template-path.js";import{storeDefinitionBundles as O}from"./store-definition-bundles.js";import{asyncapiDocLoader as N,asyncapiDocsLoader as j}from"./asyncapi-doc-loader.js";import{searchResolver as L}from"./search/search-resolver.js";import{getAiDocumentsStore as G}from"./search/get-ai-search-documents.js";import{telemetryTraceStep as M}from"../../../cli/telemetry/helpers/trace-step.js";const _="asyncapi-docs-";async function ot(d){let p=[],u=new Set;return{id:"asyncapi",requiredEntitlements:["asyncapi"],loaders:{"asyncapi-doc":N,"asyncapi-docs":j},processContent:async(e,o)=>{await M("build.plugin.asyncapi_docs",async()=>{if((await o.getConfig()).plugins?.some(l=>l.startsWith("@redocly/portal-plugin-async-api/"))){x.warn("The plugin '@redocly/portal-plugin-async-api' is deprecated. Please remove it from your config to use built-in AsyncAPI docs.");return}const c=e.createTemplate(v,b("../../../client/templates/asyncapi-docs/template.js")),g=e.registerServerPropsGetter(v,b("./get-server-props.js"));for(const l of await o.fs.scan(/(\.ya?ml|\.json)$/))if(!await o.isPathIgnored(l.relativePath))try{const{data:r,compoundHash:w}=await o.cache.load(l.realRelativePath,"asyncapi-doc");if(!r?.length)continue;p=r.map(({markdocChunks:t,relativePath:s,isVirtual:m,customOutputRelativeFile:f,realRelativePath:y})=>({chunks:t,relativePath:s,realRelativePath:y,isVirtual:f!=null||l.isVirtual||m})),O(r,e.outdir,w);for(const t of r){const s=`${_}${t.relativePath}`,m=T(t.document),{navItems:f,apiItems:y}=$({asyncApiDoc:t.document,protocol:m||""}),I=[{url:D(R,`${C(t.relativePath,".json")}?download`)},{url:D(R,`${C(t.relativePath,".yaml")}?download`)}];await e.createSharedData(s,{document:t.document,apiItems:y,protocol:m,downloadUrls:I}),f.forEach(i=>{const n={fsPath:t.relativePath,slugSuffix:`/${i.link}`,templateId:c,sharedData:[{key:"AsyncApiDefinition",id:s}],getStaticData:S(o.withPathPrefix,i.label),serverPropsGetterIds:[g]};e.addRoute(n),i.items&&i.items.forEach(a=>{e.addRoute({...n,slugSuffix:`/${a.link}`,getStaticData:S(o.withPathPrefix,a.label)}),a.items&&a.items.forEach(h=>{e.addRoute({...n,slugSuffix:`/${h.link}`,getStaticData:S(o.withPathPrefix,a.label)})})})}),e.addRoute({fsPath:t.customOutputRelativeFile||t.relativePath,templateId:c,hasClientRoutes:!0,getSidebar:i=>{const n=a=>{const h={...a};return a.link&&(h.routeSlug=D(i.slug,a.link),h.link=D(i.slug,a.link)),a.items&&(h.items=a.items.map(n)),h};return[{type:"link",label:t.document.info?.title??"AsyncAPI Overview",routeSlug:i.slug,link:i.slug},...f.map(n)]},getSearchDocuments:L(e,t.document),getStaticData:S(o.withPathPrefix,t.document.info?.title??"AsyncAPI Docs"),getAiDocumentsStore:G({actions:e,document:t.document,metadata:{type:"asyncapi",title:t.document.info?.title??"AsyncAPI Docs",description:t.document.info?.description??"",...t.document.info?.["x-metadata"]??{}}}),metadata:{type:"asyncapi",title:t.document.info?.title??"AsyncAPI Docs",description:t.document.info?.description??"",...t.document.info?.["x-metadata"]??{}},sharedData:[{key:"AsyncApiDefinition",id:s}]})}}catch(r){console.error(r)}})},afterRoutesCreated:async(e,o)=>{const P=new Set;for(const{chunks:c,relativePath:g,isVirtual:l,realRelativePath:r}of p){const w=F(e.getAllRoutes(),g),t=(await o.cache.load(r,"asyncapi-doc")).compoundHash;await o.cache.load(g,{loader:async function(){for(const{node:m,markdown:f,pointer:y,key:I,relativePath:i}of c){const{ast:n}=await e.parseMarkdoc({input:{content:f,relativePath:y,isVirtual:l},context:o,deps:{sharedDataIds:[`${_}${i}`],routeSlugs:w}});m[`x-parsed-md-${I}`]={result:E(n)}}},name:"asyncapi-markdoc-inline-parser"},[t]);for(const{pointer:s}of c)P.add(s)}const k=u.difference(P);for(const c of k)o.cache.delete(c);u=P}}}function S(d,p){return async function(u,e){return{props:{settings:{baseUrlPath:d(u.baseSlug)},disableAutoScroll:!0,seo:{title:p}}}}}function C(d,p){const u=A.posix.dirname(d),e=A.posix.basename(d,A.posix.extname(d))+p;return A.posix.join(u,e)}export{ot as asyncAPIDocsPlugin};
@@ -1,4 +1,4 @@
1
- import{basename as C}from"node:path";import{REDOCLY_TEAMS_RBAC as y}from"@redocly/config";import{isResourcePubliclyAccessible as P}from"../../../utils/rbac.js";import{getLocaleFromRelativePath as A}from"../../../fs/utils/get-locale-from-relative-path.js";import{extractDocumentSearchFacets as L}from"./search-facets.js";import{removeMarkdownLinks as m}from"../../openapi-docs/utils.js";import{processSchema as d}from"./schema-processor.js";import{llmsTxtLink as j,getLLMsTxtMdSlug as k}from"../../search/llmstxt/index.js";const X=({actions:n,document:e,metadata:i})=>async(t,s,r)=>{const a=t.getSidebar?.(t)||[],c=await r.getConfig(),{allSearchDocuments:o,publiclyAccessibleSearchDocuments:l}=b(t,a,e,n,i,c);if(o.length)return{async getLLMsTxts(){return l.map(f=>({slug:f.url,fsPath:t.fsPath,title:f.title,content:f.content,includeInLLMsTxt:f.includeInLLMsTxt}))},async getSearchDocuments(){return o}}};function b(n,e,i,t,s,r,a){const c=[],o=[];for(const l of e){if(l.type==="group"){const h=l.apiItemData?.type==="channel"?l:a,{allSearchDocuments:D,publiclyAccessibleSearchDocuments:S}=b(n,l.items||[],i,t,s,r,h);c.push(...D),o.push(...S)}const f=M(n,l,i,t,s,r);f&&(c.push(f),G(l,r,a)&&o.push(f))}return{allSearchDocuments:c,publiclyAccessibleSearchDocuments:o}}function M(n,e,i,t,s,r){const a=q(e,i);if(!a)return null;const c=e.link||"",o=e.httpVerb||"",l=A(n.fsPath),f=L(t,s),h=I(n,e,i,a,o,c,r);return{url:c||n.slug,fsPath:n.fsPath,content:h.trim(),title:m(a.title||"")||C(n.fsPath),locale:l,product:n.product?.name,facets:f,includeInLLMsTxt:!e.apiItemData}}function I(n,e,i,t,s,r,a){let c="";const o=m(t.title||""),l=m(t.description||"")+m(t.summary||"");return o&&(c+=`# ${o}
1
+ import{basename as S}from"node:path";import{REDOCLY_TEAMS_RBAC as y}from"@redocly/config";import{isResourcePubliclyAccessible as C}from"../../../utils/rbac.js";import{getLlmsTxtMdPathBySlug as A}from"../../../utils/llmstxt/get-llms-txt-md-path-by-slug.js";import{getLocaleFromRelativePath as L}from"../../../fs/utils/get-locale-from-relative-path.js";import{extractDocumentSearchFacets as j}from"./search-facets.js";import{removeMarkdownLinks as m}from"../../openapi-docs/utils.js";import{processSchema as d}from"./schema-processor.js";import{llmsTxtLink as k}from"../../search/llmstxt/index.js";const Z=({actions:n,document:e,metadata:i})=>async(t,s,r)=>{const a=t.getSidebar?.(t)||[],c=await r.getConfig(),{allSearchDocuments:o,publiclyAccessibleSearchDocuments:l}=b(t,a,e,n,i,c);if(o.length)return{async getLLMsTxts(){return l.map(f=>({slug:f.url,fsPath:t.fsPath,title:f.title,content:f.content,includeInLLMsTxt:f.includeInLLMsTxt}))},async getSearchDocuments(){return o}}};function b(n,e,i,t,s,r,a){const c=[],o=[];for(const l of e){if(l.type==="group"){const h=l.apiItemData?.type==="channel"?l:a,{allSearchDocuments:D,publiclyAccessibleSearchDocuments:P}=b(n,l.items||[],i,t,s,r,h);c.push(...D),o.push(...P)}const f=I(n,l,i,t,s,r);f&&(c.push(f),B(l,r,a)&&o.push(f))}return{allSearchDocuments:c,publiclyAccessibleSearchDocuments:o}}function I(n,e,i,t,s,r){const a=F(e,i);if(!a)return null;const c=e.link||"",o=e.httpVerb||"",l=L(n.fsPath),f=j(t,s),h=M(n,e,i,a,o,c,r);return{url:c||n.slug,fsPath:n.fsPath,content:h.trim(),title:m(a.title||"")||S(n.fsPath),locale:l,product:n.product?.name,facets:f,includeInLLMsTxt:!e.apiItemData}}function M(n,e,i,t,s,r,a){let c="";const o=m(t.title||""),l=m(t.description||"")+m(t.summary||"");return o&&(c+=`# ${o}
2
2
 
3
3
  `),l&&(c+=`${l}
4
4
 
@@ -17,7 +17,7 @@ import{basename as C}from"node:path";import{REDOCLY_TEAMS_RBAC as y}from"@redocl
17
17
  `),e+=`
18
18
  `;return e}function T(n,e){const i=n.getSidebar?.(n)||[],t=$(i,e);if(Object.keys(t).length===0)return"";let s="";for(const[,r]of Object.entries(t))if(r.length>0)for(const a of r){const c=a.label||"Untitled",o=a.link||a.routeSlug||"";s+=`#### ${c}
19
19
 
20
- `,o&&(s+=` - ${j({title:c,description:void 0,slug:k(o)})}
20
+ `,o&&(s+=` - ${k({title:c,description:void 0,slug:A(o)})}
21
21
 
22
22
  `)}return s}function x(n,e,i,t){const s=n.apiItemData?.id;if(!s)return"";const r=e.channels?.[s];if(!r)return"";let a="";if(r.parameters&&Object.keys(r.parameters).length>0){a+=`## Parameters
23
23
 
@@ -53,4 +53,4 @@ import{basename as C}from"node:path";import{REDOCLY_TEAMS_RBAC as y}from"@redocl
53
53
  `,r.description&&(s+=`${r.description}
54
54
  `),r.summary&&(s+=`${r.summary}
55
55
  `),s+=`
56
- `}}return s}function $(n,e){const i={};for(const t of n)t.type==="group"?t.apiItemData?.type==="channel"?V(t,i,e):E(t,i,e):t.apiItemData?.type==="channel"&&F(t,i,e);return i}function V(n,e,i){const t=n.label||"Channel";if(p(u(n),i)&&(e[t]||(e[t]=[]),e[t].push(n),n.items))for(const s of n.items)s.apiItemData?.type==="operation"&&p(u(s),i)&&e[t].push(s)}function E(n,e,i){if(n.items){const t=$(n.items,i);for(const[s,r]of Object.entries(t))e[s]||(e[s]=[]),e[s].push(...r)}}function F(n,e,i){const t=n.label||"Channel";if(p(u(n),i)&&(e[t]||(e[t]=[]),e[t].push(n),n.items))for(const s of n.items)s.apiItemData?.type==="operation"&&p(u(s),i)&&e[t].push(s)}function q(n,e){const{apiItemData:i,type:t}=n;return i?.type?w(i,e):t==="link"?_(e):null}function w(n,e){switch(n.type){case"channel":return e.channels?.[n.id]||null;case"operation":return e.operations?.[n.id]||null;default:return null}}function _(n){return{description:n.info?.description||"",title:n.info?.title||"",summary:""}}function G(n,e,i){const t=p(u(n),e);if(n.apiItemData?.type==="operation"&&i){const s=p(u(i),e);return t&&s}return t}function u(n){return{slug:n.link||"",[y]:n[y]}}function p(n,e){return e.requiresLogin?!0:P(n,e)}export{X as getAiDocumentsStore};
56
+ `}}return s}function $(n,e){const i={};for(const t of n)t.type==="group"?t.apiItemData?.type==="channel"?q(t,i,e):V(t,i,e):t.apiItemData?.type==="channel"&&E(t,i,e);return i}function q(n,e,i){const t=n.label||"Channel";if(p(u(n),i)&&(e[t]||(e[t]=[]),e[t].push(n),n.items))for(const s of n.items)s.apiItemData?.type==="operation"&&p(u(s),i)&&e[t].push(s)}function V(n,e,i){if(n.items){const t=$(n.items,i);for(const[s,r]of Object.entries(t))e[s]||(e[s]=[]),e[s].push(...r)}}function E(n,e,i){const t=n.label||"Channel";if(p(u(n),i)&&(e[t]||(e[t]=[]),e[t].push(n),n.items))for(const s of n.items)s.apiItemData?.type==="operation"&&p(u(s),i)&&e[t].push(s)}function F(n,e){const{apiItemData:i,type:t}=n;return i?.type?w(i,e):t==="link"?_(e):null}function w(n,e){switch(n.type){case"channel":return e.channels?.[n.id]||null;case"operation":return e.operations?.[n.id]||null;default:return null}}function _(n){return{description:n.info?.description||"",title:n.info?.title||"",summary:""}}function B(n,e,i){const t=p(u(n),e);if(n.apiItemData?.type==="operation"&&i){const s=p(u(i),e);return t&&s}return t}function u(n){return{slug:n.link||"",[y]:n[y]}}function p(n,e){return e.access?.requiresLogin?!0:C(n,e)}export{Z as getAiDocumentsStore};