@redocly/redoc 0.137.0-next.6 → 0.137.0-next.8

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 (213) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/client/app/markdoc/custom-components/openapi/replay-openapi.js +1 -1
  3. package/dist/client/templates/api-docs/helpers.d.ts +4 -1
  4. package/dist/client/templates/api-docs/helpers.js +5 -1
  5. package/dist/client/templates/api-docs/template.js +1 -1
  6. package/dist/constants/l10n/langs/ar.js +1 -1
  7. package/dist/constants/l10n/langs/de.js +1 -1
  8. package/dist/constants/l10n/langs/en.js +1 -1
  9. package/dist/constants/l10n/langs/es.js +1 -1
  10. package/dist/constants/l10n/langs/fr.js +1 -1
  11. package/dist/constants/l10n/langs/hi.js +1 -1
  12. package/dist/constants/l10n/langs/it.js +1 -1
  13. package/dist/constants/l10n/langs/ja.js +1 -1
  14. package/dist/constants/l10n/langs/ko.js +1 -1
  15. package/dist/constants/l10n/langs/pl.js +1 -1
  16. package/dist/constants/l10n/langs/pt-BR.js +1 -1
  17. package/dist/constants/l10n/langs/pt.js +1 -1
  18. package/dist/constants/l10n/langs/ru.js +1 -1
  19. package/dist/constants/l10n/langs/uk.js +1 -1
  20. package/dist/constants/l10n/langs/zh.js +1 -1
  21. package/dist/server/config/env-config.d.ts +2 -0
  22. package/dist/server/config/env-schema.d.ts +5 -0
  23. package/dist/server/config/env-schemas/feature-flags.d.ts +4 -0
  24. package/dist/server/config/env-schemas/feature-flags.js +1 -1
  25. package/dist/server/esbuild/esbuild.js +3 -3
  26. package/dist/server/esbuild/plugins/mcp-tool-handlers-resolver.js +1 -1
  27. package/dist/server/plugins/api-docs/options.js +1 -1
  28. package/dist/server/plugins/{openapi-docs/is-openapi-doc.d.ts → api-docs/utils/is-api-doc.d.ts} +4 -2
  29. package/dist/server/plugins/api-docs/utils/is-api-doc.js +1 -0
  30. package/dist/server/plugins/arazzo-docs/arazzo-doc-loader.d.ts +1 -1
  31. package/dist/server/plugins/arazzo-docs/arazzo-doc-loader.js +1 -1
  32. package/dist/server/plugins/entitlements/index.js +1 -1
  33. package/dist/server/plugins/l10n/index.js +1 -1
  34. package/dist/server/plugins/lifecycle.js +2 -2
  35. package/dist/server/plugins/markdown/attribute-resolvers/resolve-link.js +1 -1
  36. package/dist/server/plugins/markdown/attribute-resolvers/resolve-open-api-ref.js +1 -1
  37. package/dist/server/plugins/mcp/codemode/capabilities/fetch/index.js +4 -4
  38. package/dist/server/plugins/mcp/codemode/code-execution-telemetry.d.ts +3 -1
  39. package/dist/server/plugins/mcp/codemode/code-execution-telemetry.js +1 -1
  40. package/dist/server/plugins/mcp/codemode/invoke-tool.js +1 -1
  41. package/dist/server/plugins/mcp/codemode/prompts.js +1 -1
  42. package/dist/server/plugins/mcp/codemode/sandbox/polyfills/fetch-shim.d.ts +1 -1
  43. package/dist/server/plugins/mcp/codemode/sandbox/polyfills/fetch-shim.js +9 -3
  44. package/dist/server/plugins/mcp/codemode/tools/execute.js +1 -1
  45. package/dist/server/plugins/mcp/codemode/tools/manage-credentials.js +1 -1
  46. package/dist/server/plugins/mcp/codemode/types.d.ts +1 -0
  47. package/dist/server/plugins/mcp/constants.d.ts +1 -0
  48. package/dist/server/plugins/mcp/constants.js +1 -1
  49. package/dist/server/plugins/mcp/custom-tools/extract-tool-definition.d.ts +13 -0
  50. package/dist/server/plugins/mcp/custom-tools/extract-tool-definition.js +1 -0
  51. package/dist/server/plugins/mcp/custom-tools/scan-custom-tools.d.ts +6 -0
  52. package/dist/server/plugins/mcp/custom-tools/scan-custom-tools.js +1 -0
  53. package/dist/server/plugins/mcp/custom-tools/validate-tool-definition.d.ts +3 -0
  54. package/dist/server/plugins/mcp/custom-tools/validate-tool-definition.js +1 -0
  55. package/dist/server/plugins/mcp/docs-mcp/tool-schemas.d.ts +2 -0
  56. package/dist/server/plugins/mcp/docs-mcp/tool-schemas.js +1 -1
  57. package/dist/server/plugins/mcp/docs-mcp/tools/core/search.js +2 -2
  58. package/dist/server/plugins/mcp/docs-mcp/tools/openapi/get-endpoints.js +1 -1
  59. package/dist/server/plugins/mcp/docs-mcp/tools/openapi/list-apis.js +1 -1
  60. package/dist/server/plugins/mcp/docs-mcp/tools/openapi/utils.js +1 -1
  61. package/dist/server/plugins/mcp/gateway-mcp/callable-apis.d.ts +10 -0
  62. package/dist/server/plugins/mcp/gateway-mcp/callable-apis.js +1 -0
  63. package/dist/server/plugins/mcp/gateway-mcp/fetch/fetch-bridge.js +1 -1
  64. package/dist/server/plugins/mcp/gateway-mcp/fetch-capability.d.ts +1 -9
  65. package/dist/server/plugins/mcp/gateway-mcp/fetch-capability.js +1 -1
  66. package/dist/server/plugins/mcp/handlers/docs-mcp-handler.js +1 -1
  67. package/dist/server/plugins/mcp/handlers/errors.d.ts +7 -2
  68. package/dist/server/plugins/mcp/handlers/errors.js +1 -1
  69. package/dist/server/plugins/mcp/index.js +1 -1
  70. package/dist/server/plugins/mcp/servers/docs-server.d.ts +2 -2
  71. package/dist/server/plugins/mcp/servers/docs-server.js +1 -1
  72. package/dist/server/plugins/mcp/servers/mcp-server.d.ts +2 -11
  73. package/dist/server/plugins/mcp/servers/mcp-server.js +3 -3
  74. package/dist/server/plugins/mcp/types.d.ts +29 -3
  75. package/dist/server/plugins/mcp/utils/available-sandbox-tools.d.ts +4 -0
  76. package/dist/server/plugins/mcp/utils/available-sandbox-tools.js +1 -0
  77. package/dist/server/plugins/mcp/utils/find-gated-tool-names.d.ts +2 -3
  78. package/dist/server/plugins/mcp/utils/find-gated-tool-names.js +1 -1
  79. package/dist/server/plugins/mcp/utils/mcp-client.d.ts +13 -0
  80. package/dist/server/plugins/mcp/utils/mcp-client.js +1 -0
  81. package/dist/server/plugins/mcp/workers/execute-mcp-tool.d.ts +6 -1
  82. package/dist/server/plugins/mcp/workers/execute-mcp-tool.js +1 -1
  83. package/dist/server/plugins/mcp/workers/import-mcp-tool-handlers.d.ts +5 -0
  84. package/dist/server/plugins/mcp/workers/import-mcp-tool-handlers.js +1 -0
  85. package/dist/server/plugins/mcp/workers/mcp-tool-telemetry.d.ts +6 -11
  86. package/dist/server/plugins/mcp/workers/mcp-tool-telemetry.js +1 -1
  87. package/dist/server/plugins/mcp/workers/tool-file-system.d.ts +6 -0
  88. package/dist/server/plugins/mcp/workers/tool-file-system.js +1 -0
  89. package/dist/server/sandbox/sandbox.js +2 -2
  90. package/dist/server/sandbox/utils/returns-from-top-level.d.ts +4 -0
  91. package/dist/server/sandbox/utils/returns-from-top-level.js +1 -0
  92. package/dist/server/store.d.ts +1 -0
  93. package/dist/server/store.js +1 -1
  94. package/dist/server/types/plugins/common.d.ts +2 -1
  95. package/dist/server/web-server/routes/resolve-route.js +1 -1
  96. package/dist/server/web-server/utils/get-request-origin.d.ts +2 -0
  97. package/dist/server/web-server/utils/get-request-origin.js +1 -1
  98. package/dist/server/workers/mcp-tool-worker-pool.d.ts +1 -0
  99. package/dist/server/workers/mcp-tool-worker-pool.js +1 -1
  100. package/dist/server/workers/mcp-tool-worker.js +1 -1
  101. package/dist/server/workers/types.d.ts +9 -2
  102. package/dist/server/workers/worker-pool.d.ts +1 -0
  103. package/dist/server/workers/worker-pool.js +1 -1
  104. package/dist/utils/guards/is-plain-object.d.ts +19 -0
  105. package/dist/utils/guards/is-plain-object.js +1 -0
  106. package/package.json +8 -11
  107. package/dist/client/templates/asyncapi-docs/helpers.d.ts +0 -12
  108. package/dist/client/templates/asyncapi-docs/helpers.js +0 -1
  109. package/dist/client/templates/asyncapi-docs/template.d.ts +0 -15
  110. package/dist/client/templates/asyncapi-docs/template.js +0 -9
  111. package/dist/client/templates/openapi-docs/helpers.d.ts +0 -18
  112. package/dist/client/templates/openapi-docs/helpers.js +0 -5
  113. package/dist/client/templates/openapi-docs/template.d.ts +0 -6
  114. package/dist/client/templates/openapi-docs/template.js +0 -14
  115. package/dist/server/esbuild/plugins/api-docs-module-replacer/empty-check.d.ts +0 -9
  116. package/dist/server/esbuild/plugins/api-docs-module-replacer/empty-check.js +0 -1
  117. package/dist/server/esbuild/plugins/api-docs-module-replacer/empty-overlay.d.ts +0 -2
  118. package/dist/server/esbuild/plugins/api-docs-module-replacer/empty-overlay.js +0 -1
  119. package/dist/server/esbuild/plugins/api-docs-module-replacer/index.d.ts +0 -6
  120. package/dist/server/esbuild/plugins/api-docs-module-replacer/index.js +0 -1
  121. package/dist/server/esbuild/plugins/openapi-docs-module-replacer/empty-check.d.ts +0 -8
  122. package/dist/server/esbuild/plugins/openapi-docs-module-replacer/empty-check.js +0 -1
  123. package/dist/server/esbuild/plugins/openapi-docs-module-replacer/empty-overlay.d.ts +0 -2
  124. package/dist/server/esbuild/plugins/openapi-docs-module-replacer/empty-overlay.js +0 -1
  125. package/dist/server/esbuild/plugins/openapi-docs-module-replacer/empty-use-license-key.d.ts +0 -5
  126. package/dist/server/esbuild/plugins/openapi-docs-module-replacer/empty-use-license-key.js +0 -1
  127. package/dist/server/esbuild/plugins/openapi-docs-module-replacer/index.d.ts +0 -6
  128. package/dist/server/esbuild/plugins/openapi-docs-module-replacer/index.js +0 -1
  129. package/dist/server/esbuild/plugins/openapi-docs-module-replacer/loadAndBundleSpec.mock.d.ts +0 -3
  130. package/dist/server/esbuild/plugins/openapi-docs-module-replacer/loadAndBundleSpec.mock.js +0 -1
  131. package/dist/server/plugins/asyncapi-docs/asyncapi-doc-loader.d.ts +0 -18
  132. package/dist/server/plugins/asyncapi-docs/asyncapi-doc-loader.js +0 -5
  133. package/dist/server/plugins/asyncapi-docs/get-server-props.d.ts +0 -4
  134. package/dist/server/plugins/asyncapi-docs/get-server-props.js +0 -1
  135. package/dist/server/plugins/asyncapi-docs/get-template-path.d.ts +0 -2
  136. package/dist/server/plugins/asyncapi-docs/get-template-path.js +0 -1
  137. package/dist/server/plugins/asyncapi-docs/index.d.ts +0 -3
  138. package/dist/server/plugins/asyncapi-docs/index.js +0 -1
  139. package/dist/server/plugins/asyncapi-docs/is-asyncapi-doc.d.ts +0 -3
  140. package/dist/server/plugins/asyncapi-docs/is-asyncapi-doc.js +0 -1
  141. package/dist/server/plugins/asyncapi-docs/search/get-ai-search-documents.d.ts +0 -9
  142. package/dist/server/plugins/asyncapi-docs/search/get-ai-search-documents.js +0 -56
  143. package/dist/server/plugins/asyncapi-docs/search/schema-processor.d.ts +0 -8
  144. package/dist/server/plugins/asyncapi-docs/search/schema-processor.js +0 -1
  145. package/dist/server/plugins/asyncapi-docs/search/search-facets.d.ts +0 -8
  146. package/dist/server/plugins/asyncapi-docs/search/search-facets.js +0 -1
  147. package/dist/server/plugins/asyncapi-docs/search/search-resolver.d.ts +0 -5
  148. package/dist/server/plugins/asyncapi-docs/search/search-resolver.js +0 -1
  149. package/dist/server/plugins/asyncapi-docs/store-definition-bundles.d.ts +0 -4
  150. package/dist/server/plugins/asyncapi-docs/store-definition-bundles.js +0 -1
  151. package/dist/server/plugins/graphql-docs/constants.d.ts +0 -2
  152. package/dist/server/plugins/graphql-docs/constants.js +0 -1
  153. package/dist/server/plugins/graphql-docs/get-template-path.d.ts +0 -2
  154. package/dist/server/plugins/graphql-docs/get-template-path.js +0 -1
  155. package/dist/server/plugins/graphql-docs/graphql-doc-loader.d.ts +0 -17
  156. package/dist/server/plugins/graphql-docs/graphql-doc-loader.js +0 -1
  157. package/dist/server/plugins/graphql-docs/index.d.ts +0 -4
  158. package/dist/server/plugins/graphql-docs/index.js +0 -1
  159. package/dist/server/plugins/graphql-docs/is-graphql-doc.d.ts +0 -2
  160. package/dist/server/plugins/graphql-docs/is-graphql-doc.js +0 -1
  161. package/dist/server/plugins/graphql-docs/search/ai/get-ai-search-document.d.ts +0 -17
  162. package/dist/server/plugins/graphql-docs/search/ai/get-ai-search-document.js +0 -4
  163. package/dist/server/plugins/graphql-docs/search/ai/utils.d.ts +0 -14
  164. package/dist/server/plugins/graphql-docs/search/ai/utils.js +0 -36
  165. package/dist/server/plugins/graphql-docs/search/search-facets.d.ts +0 -8
  166. package/dist/server/plugins/graphql-docs/search/search-facets.js +0 -1
  167. package/dist/server/plugins/graphql-docs/search/search-resolver.d.ts +0 -5
  168. package/dist/server/plugins/graphql-docs/search/search-resolver.js +0 -1
  169. package/dist/server/plugins/graphql-docs/spec-download.api.d.ts +0 -3
  170. package/dist/server/plugins/graphql-docs/spec-download.api.js +0 -1
  171. package/dist/server/plugins/graphql-docs/template/GraphQLDocs.d.ts +0 -5
  172. package/dist/server/plugins/graphql-docs/template/GraphQLDocs.js +0 -4
  173. package/dist/server/plugins/graphql-docs/types.d.ts +0 -40
  174. package/dist/server/plugins/graphql-docs/types.js +0 -0
  175. package/dist/server/plugins/openapi-docs/ai-search-indexer.d.ts +0 -14
  176. package/dist/server/plugins/openapi-docs/ai-search-indexer.js +0 -1
  177. package/dist/server/plugins/openapi-docs/decorators.d.ts +0 -25
  178. package/dist/server/plugins/openapi-docs/decorators.js +0 -1
  179. package/dist/server/plugins/openapi-docs/format-bundle-error.d.ts +0 -6
  180. package/dist/server/plugins/openapi-docs/format-bundle-error.js +0 -5
  181. package/dist/server/plugins/openapi-docs/get-server-props.d.ts +0 -4
  182. package/dist/server/plugins/openapi-docs/get-server-props.js +0 -1
  183. package/dist/server/plugins/openapi-docs/get-template-path.d.ts +0 -2
  184. package/dist/server/plugins/openapi-docs/get-template-path.js +0 -1
  185. package/dist/server/plugins/openapi-docs/index.d.ts +0 -3
  186. package/dist/server/plugins/openapi-docs/index.js +0 -1
  187. package/dist/server/plugins/openapi-docs/is-openapi-doc.js +0 -1
  188. package/dist/server/plugins/openapi-docs/load-definition.d.ts +0 -31
  189. package/dist/server/plugins/openapi-docs/load-definition.js +0 -3
  190. package/dist/server/plugins/openapi-docs/openapi-search-builder.d.ts +0 -24
  191. package/dist/server/plugins/openapi-docs/openapi-search-builder.js +0 -1
  192. package/dist/server/plugins/openapi-docs/search/get-ai-search-documents.d.ts +0 -18
  193. package/dist/server/plugins/openapi-docs/search/get-ai-search-documents.js +0 -94
  194. package/dist/server/plugins/openapi-docs/search/search-facets.d.ts +0 -11
  195. package/dist/server/plugins/openapi-docs/search/search-facets.js +0 -1
  196. package/dist/server/plugins/openapi-docs/search/search-resolver.d.ts +0 -5
  197. package/dist/server/plugins/openapi-docs/search/search-resolver.js +0 -1
  198. package/dist/server/plugins/openapi-docs/search-indexer.d.ts +0 -17
  199. package/dist/server/plugins/openapi-docs/search-indexer.js +0 -1
  200. package/dist/server/plugins/openapi-docs/spec-download.api.d.ts +0 -4
  201. package/dist/server/plugins/openapi-docs/spec-download.api.js +0 -1
  202. package/dist/server/plugins/openapi-docs/store-definition-bundles.d.ts +0 -4
  203. package/dist/server/plugins/openapi-docs/store-definition-bundles.js +0 -1
  204. package/dist/server/plugins/openapi-docs/types.d.ts +0 -17
  205. package/dist/server/plugins/openapi-docs/types.js +0 -0
  206. package/dist/server/plugins/openapi-docs/utils.d.ts +0 -25
  207. package/dist/server/plugins/openapi-docs/utils.js +0 -1
  208. /package/dist/client/templates/{openapi-docs → api-docs}/mock-server-config.d.ts +0 -0
  209. /package/dist/client/templates/{openapi-docs → api-docs}/mock-server-config.js +0 -0
  210. /package/dist/{server/plugins → markdoc}/helpers/parse-partials.d.ts +0 -0
  211. /package/dist/{server/plugins → markdoc}/helpers/parse-partials.js +0 -0
  212. /package/dist/server/plugins/{openapi-docs → api-docs/utils}/ast-utils.d.ts +0 -0
  213. /package/dist/server/plugins/{openapi-docs → api-docs/utils}/ast-utils.js +0 -0
@@ -1,94 +0,0 @@
1
- import{REDOCLY_TEAMS_RBAC as x}from"@redocly/config";import{basename as C,join as q}from"node:path";import _ from"@markdoc/markdoc";import{joinSectionContent as G}from"../../../plugins/markdown/search/join-section-content.js";import{toMarkdown as J}from"../../../plugins/markdown/search/to-markdown.js";import{AstToSearchNodeTransformer as B}from"../../../plugins/markdown/search/walk-sections.js";import{createRenderTagFn as z}from"../../../plugins/markdown/search/create-render-tag-fn.js";import{getBuildTranslateContext as v}from"../../../utils/l10n/get-build-translate-context.js";import{canDownloadApiDefinition as Y,isResourcePubliclyAccessible as H}from"../../../utils/rbac.js";import{PUBLIC_API_DEFINITIONS_FOLDER as V}from"../../../constants/common.js";import{ANONYMOUS_AUTH_DETAILS as K}from"../../../constants/rbac.js";import{getLlmsTxtMdPathBySlug as Q}from"../../../utils/llmstxt/get-llms-txt-md-path-by-slug.js";import{AiSearchIndexer as W}from"../ai-search-indexer.js";import{getLocaleFromRelativePath as X}from"../../../fs/utils/get-locale-from-relative-path.js";import{extractDocumentSearchFacets as Z}from"./search-facets.js";import{formatDocumentMetadata as I}from"../../search/utils.js";import{llmsTxtLink as M}from"../../search/llmstxt/index.js";import{replaceFileExtension as ee}from"../store-definition-bundles.js";const j=new Map,Ee=({parser:s,options:c,info:n,tagOperations:r,relativePath:t,openapiContentItem:e,metadata:i,getSearchFacets:u,includeInLLMsTxt:a,excludeFromSearch:f})=>async(o,p,l,O)=>{if(f)return;const U=await o.getNavText?.()||C(o.fsPath),w=new W(s,c,o.baseSlug||o.slug),m=w.addItem(e);if(!m)return;const T=await l.getConfig(),D=Array.isArray(m.title)?m.title.join(" "):m.title;let $,d,y=j.get(t);if((e.type==="tag"||e.type==="section"&&e.infoDefinition)&&!y){const{all:A,publiclyAccessible:g}=ue(r.tagged,w,T),{all:S,publiclyAccessible:b}=le(r.untagged,w,T);j.set(t,{taggedSearchDocuments:new Map(A),untaggedSearchDocuments:S,publiclyAccessibleTaggedSearchDocuments:new Map(g),publiclyAccessibleUntaggedSearchDocuments:b})}y=j.get(t);const h="#";switch(e.type){case"operation":const A=w.getOperation(e);$=d=ce({title:D,security:s.definition.security,document:m,version:m.version||n.version,headingLevel:h,operation:A});break;case"section":if(e.infoDefinition){y=j.get(t),d=await N({parser:s,info:n,staticData:p,relativePath:t,headingLevel:h,pageName:U,config:T}),d+=`
2
- `;for(const[S,b]of y?.publiclyAccessibleTaggedSearchDocuments?.entries()||[]){if(!b.length)continue;const k=s.definition.tags?.find(L=>L.name===S);d+=E({title:k?.["x-displayName"]||S,description:k?.description,operationSearchDocuments:b,headingLevel:`${h}#`})}const g=y?.publiclyAccessibleUntaggedSearchDocuments||[];g.length&&(d+=E({title:"Other",description:void 0,operationSearchDocuments:g,headingLevel:`${h}#`})),$=await N({parser:s,info:n,staticData:p,relativePath:t,headingLevel:h,pageName:U,config:T})}else if(e.ast){const g=new _.Ast.Node("document",{},e.ast),{locale:S,translate:b}=await v(o.slug,O.getGlobalData?.().l10n),k=Array.from(new B({ast:g,partials:{},renderTag:z(O.markdocOptions.tags,S,b),getInnerContent:J,skipConditionals:!0}).transform());d=$=G(k)}break;case"tag":d=E({title:D,description:e.description,operationSearchDocuments:y?.publiclyAccessibleTaggedSearchDocuments.get(e.name)||[],headingLevel:h}),$=E({title:D,description:e.description,operationSearchDocuments:[],headingLevel:h});break;case"rsrc":case"prompt":case"tool":d=re({title:D,description:e.description,name:e.name,xMcpConfig:s.definition["x-mcp"],headingLevel:h}),$=d;break}return{async getLLMsTxts(){return[{title:e.name,description:e.type==="tag"?e.description:void 0,content:d||"",slug:o.slug,fsPath:o.fsPath,includeInLLMsTxt:a}]},async getSearchDocuments(){if(e.type==="operation"||e.type==="section"&&(e.infoDefinition||e.ast)||e.type==="tag"){const A=X(o.fsPath),g=Z({...m,...i},n,u);return[{title:D,description:Array.isArray(m.text)?m.text.join(" "):m.text,content:$||"",url:m.url??o.slug,fsPath:o.fsPath,locale:A,product:o.product?.name,rbacTeams:m.rbacTeams,facets:g}]}return[]}}};async function N({parser:s,info:c,staticData:n,relativePath:r,pageName:t,headingLevel:e,config:i}){const u=I(c["x-metadata"]);let a=c.title?`${e} ${c.title}
3
-
4
- `:`${e} ${t}
5
-
6
- `;return a+=c.description?`${c.description}
7
-
8
- `:"",a+=c.summary?`${c.summary}
9
-
10
- `:"",a+=c.version?`Version: ${c.version}
11
- `:"",a+=c.license?`License: ${c.license.name}
12
- `:"",e=`${e}#`,a+=u.length?`Metadata:
13
- ${u}
14
- `:"",a+=`
15
- `,a+=ne({parser:s,headingLevel:e}),a+=se({parser:s,headingLevel:e}),a+=await te({info:c,staticData:n,relativePath:r,pageName:t,headingLevel:e,config:i}),a}function E({title:s="",description:c,operationSearchDocuments:n,headingLevel:r}){let t=`${r} ${s}
16
-
17
- `;return c&&(t+=`${c}
18
-
19
- `),n.length&&n.forEach(e=>{const i=Array.isArray(e.title)?e.title.join(" "):e.title;t+=`${r}# ${i}${e.deprecated?" (deprecated)":""}
20
-
21
- `,t+=` - ${M({title:`${e.httpMethod?.toUpperCase()} ${e.httpPath}`,description:Array.isArray(e.text)?e.text.join(" "):e.text,slug:Q(e.url)})}`,t+=`
22
- `}),t}function ne({parser:s,headingLevel:c}){const{servers:n}=s.definition;if(n&&n.length){let r=`${c} Servers
23
-
24
- `;return n.forEach(t=>{r+=t.description?`${t.description}
25
- `:"",r+=`\`\`\`
26
- ${t.url}
27
- \`\`\`
28
-
29
- `,t.variables&&(r+=`Variables:
30
- `,Object.entries(t.variables).forEach(([e,i])=>{r+=`- \`${e}\`${i.description?`: ${i.description}`:""}
31
- `,r+=i.default?`Default: ${JSON.stringify(i.default)}
32
- `:"",r+=i.enum?`Enum: ${i.enum.map(u=>JSON.stringify(u)).join(", ")}
33
- `:""}),r+=`
34
- `)}),r}return""}async function te({info:s,staticData:c,relativePath:n,pageName:r,headingLevel:t,config:e}){const i=q(c.props?.outdir||"",V,ee(n,".yaml")),u=e.access?.rbac,a=e.access?.requiresLogin;if(Y(i,u??{},a??!1,K)){let f=`${t} Download OpenAPI description
35
-
36
- `;return f+=M({title:s.title||r||"OpenAPI definition",description:void 0,slug:i}),f}return""}function se({parser:s,headingLevel:c}){if(!s.definition.components?.securitySchemes)return"";let n=`${c} Security
37
-
38
- `;const{securitySchemes:r}=s.definition.components;return Object.keys(r).forEach(t=>{const e=r[t];e&&(n+=`${c}# ${t}
39
-
40
- `,n+=e.description?`${e.description}
41
-
42
- `:"",e.type&&(n+=`Type: ${e.type}
43
- `),e.openIdConnectUrl&&(n+=`OpenID Connect URL: ${e.openIdConnectUrl}
44
- `),e.in&&(n+=`In: ${e.in}
45
- `),e.name&&(n+=`Name: ${e.name}
46
- `),e.scheme&&(n+=`Scheme: ${e.scheme}
47
- `),e.bearerFormat&&(n+=`Bearer Format: ${e.bearerFormat}
48
- `),e.flows?.implicit?.authorizationUrl&&(n+=`Authorization URL: ${e.flows.implicit?.authorizationUrl}
49
- `),e.flows?.implicit?.scopes&&(n+=`Scopes:
50
- `,Object.entries(e.flows?.implicit?.scopes||{}).forEach(([i,u])=>{n+=`- \`${i}\`: ${u}
51
- `})),e.flows?.password?.tokenUrl&&(n+=`Token URL: ${e.flows.password?.tokenUrl}
52
- `),e.flows?.password?.scopes&&(n+=`Scopes:
53
- `,Object.entries(e.flows?.password?.scopes||{}).forEach(([i,u])=>{n+=`- \`${i}\`: ${u}
54
- `})),n+=`
55
- `)}),n}function ce({title:s,security:c,document:n,version:r,headingLevel:t,operation:e}){const{text:i,httpMethod:u,httpPath:a,deprecated:f}=n,o=ae(n.parameters||[],`${t}#`),p=ie(`${t}#`,n.parameters,e);let l=s?`${t} ${s}${f?" (deprecated)":""}
56
-
57
- `:"";return l+=i?`${i}
58
-
59
- `:"",l+=`Endpoint: ${u?.toUpperCase()} ${a}
60
- `,l+=r?`Version: ${r}
61
- `:"",l+=n.security?.length?`Security: ${n.security.join(", ")}
62
- `:c?.length?`Security: ${c.map(O=>O.id).join(", ")}
63
- `:"",l+=`
64
- `,l+=o?`${o}
65
- `:"",l+=`
66
- `,l+=`${p.join(`
67
- `)}`,l}function re({title:s,name:c,xMcpConfig:n,headingLevel:r}){const t=n?.tools.find(i=>i.name===c);if(!t)return"";let e=`${r} ${s}
68
-
69
- `;return e+=t.description?`${t.description}
70
-
71
- `:"",e+=`${r}# Input schema:
72
-
73
- `,e+=`\`\`\`json
74
- ${JSON.stringify(t.inputSchema,null,2)}
75
- \`\`\`
76
-
77
- `,t.outputSchema&&(e+=`${r}# Output schema:
78
-
79
- `,e+=`\`\`\`json
80
- ${JSON.stringify(t.outputSchema,null,2)}
81
- \`\`\`
82
-
83
- `),e}function ie(s,c,n){return!c&&!n||!n?.responses?[]:n?.responses.filter(t=>!t.content?.mediaTypes[0]?.schema).map(t=>`${s} ${R(`response ${t.code} fields`)}
84
- `)}function oe(s,c,n,r){const t=JSON.stringify(s),e=r.get(t);return e?`${n}Enum: same as ${e} (${s.length} values)
85
- `:(r.set(t,c),`${n}Enum: ${s.map(i=>JSON.stringify(i)).join(", ")}
86
- `)}function P(s,c,n,r){const t=`${c} `,e=s.oneOf,u=[...s.path||[],s.name].join("."),a=Array.isArray(s.description)?s.description.join(" "):s.description,f=!!e&&e.variants.length>1;let o=`${c}- \`${u}\` (${s.type}${s.required?", required":""})`;if(f&&(o+=e.discriminator?` \u2014 one of (discriminator: ${e.discriminator}):`:" \u2014 one of:"),o+=`
87
- `,o+=a?`${t}${a.trim()}
88
- `:"",s.enum){const p=r?`\`${u}\` in "${r}"`:`\`${u}\``;o+=oe(s.enum,p,t,n)}else s.example&&(o+=`${t}Example: ${s.example}
89
- `);if(f)for(const p of e.variants){o+=`${c} - ${p.title}:
90
- `;for(const l of p.parameters)o+=P(l,`${c} `,n,p.title)}else if(e)for(const p of e.variants[0].parameters)o+=P(p,`${c} `,n);return o}function ae(s,c){const n={};for(const e of s){const i=`${e.place}${e.mediaType?` (${e.mediaType})`:""}`;n[i]=[...n[i]||[],e]}const r=new Map;return Object.entries(n).map(([e,i])=>{const u=i.map(a=>P(a," ",r));return`${c} ${R(e)}:
91
-
92
- ${u.join(`
93
- `)}`}).join(`
94
- `)}function ue(s,c,n){const r=[],t=[];return s.forEach((e,i)=>{const u=[],a=[];e.forEach(f=>{const o=c.addItem(f);o&&(u.push(o),F({[x]:f[x],slug:o.url},n)&&a.push(o))}),r.push([i,u]),t.push([i,a])}),{all:r,publiclyAccessible:t}}function le(s,c,n){const r=[],t=[];return s.forEach(e=>{const i=c.addItem(e);i&&(r.push(i),F({[x]:e[x],slug:i.url},n)&&t.push(i))}),{all:r,publiclyAccessible:t}}function R(s){return s.charAt(0).toUpperCase()+s.slice(1)}function F(s,c){return c.access?.requiresLogin?!0:H(s,c)}export{Ee as getAiDocumentsStore};
@@ -1,11 +0,0 @@
1
- import type { SearchFacet } from '@redocly/theme/core/types';
2
- import type { OpenAPIInfo } from '@redocly/openapi-docs/lib/types';
3
- export declare function setDocumentSearchFacets(documentSearchFacets: {
4
- [key: string]: string | Set<string>;
5
- }, getSearchFacets: () => Map<string, SearchFacet>, setSearchFacets: (searchFacets: Map<string, SearchFacet>) => void): void;
6
- export declare function extractDocumentSearchFacets(metadata: {
7
- [key: string]: any;
8
- }, info: OpenAPIInfo, getSearchFacets: () => Map<string, SearchFacet>): {
9
- [key: string]: string;
10
- };
11
- //# sourceMappingURL=search-facets.d.ts.map
@@ -1 +0,0 @@
1
- import{SEARCH_GROUP_FACET_FIELD as f}from"../../../../constants/common.js";import{SEARCH_GROUP_NAME_API as u}from"../../../constants/plugins/search.js";function h(t,o,s){const e=o();for(const[n,r]of Object.entries(t)){const c=e.get(n);if(c){const i=new Set(c.values??[]);r instanceof Set?[...r].forEach(a=>c.values=Array.from(i.add(a))):c.values=Array.from(i.add(r))}}s(e)}function p(t,o,s){const e={[f]:u,apiTitle:o.title,apiVersion:o.version?.toString()};if(!t)return e;const n=s();for(const[r,c]of Object.entries(t))n.has(r)&&(e[r]=String(c));return t.title&&(e.apiTitle=t.title),e}export{p as extractDocumentSearchFacets,h as setDocumentSearchFacets};
@@ -1,5 +0,0 @@
1
- import type { SearchFacet } from '@redocly/theme/core/types';
2
- import type { ContentItemModel, OpenAPIParser, Options } from '@redocly/openapi-docs';
3
- import type { PageRouteDetails, SearchDocument } from '../../../types';
4
- export declare function searchResolver(parser: OpenAPIParser, options: Options, flatItems: ContentItemModel[], getSearchFacets: () => Map<string, SearchFacet>, setSearchFacets: (searchFacets: Map<string, SearchFacet>) => void, excludeFromSearch?: boolean): (route: PageRouteDetails) => Promise<SearchDocument[]>;
5
- //# sourceMappingURL=search-resolver.d.ts.map
@@ -1 +0,0 @@
1
- import{REDOCLY_ROUTE_RBAC as f,REDOCLY_TEAMS_RBAC as s}from"@redocly/config";import{SearchIndexer as R}from"../search-indexer.js";import{extractDocumentSearchFacets as g,setDocumentSearchFacets as S}from"./search-facets.js";function E(n,i,m,c,d,l){return async t=>{if(l)return[];const o=t.metadata||{},a=new R(n,i,t.baseSlug||t.slug);a.addInfo(n.definition.info,o);for(const e of m)a.addItem(e);const h={},r=g(o,n.definition.info,c),u=a.getResult().map(e=>({...e,[s]:e[s]||t[s],[f]:t[f]||{slug:t.slug,fsPath:t.fsPath},facets:r}));return S({...r,...h},c,d),u}}export{E as searchResolver};
@@ -1,17 +0,0 @@
1
- import type { OpenAPIParser, ContentItemModel, OperationModel, Options, SchemaModel } from '@redocly/openapi-docs';
2
- import type { OpenAPIInfo } from '@redocly/openapi-docs/lib/types';
3
- import type { OperationParameter } from '@redocly/theme/core/types';
4
- import type { SearchDocument } from '../../types';
5
- import { OpenApiSearchBuilder } from './openapi-search-builder.js';
6
- export declare class SearchIndexer extends OpenApiSearchBuilder {
7
- #private;
8
- constructor(parser: OpenAPIParser, options: Options, basePath: string);
9
- addItem(item: ContentItemModel): SearchDocument | undefined;
10
- addInfo(info: OpenAPIInfo, metadata: Record<string, unknown>): SearchDocument & {
11
- metadata: Record<string, unknown>;
12
- };
13
- getResult(): SearchDocument[];
14
- protected buildOperationDocument(operation: OperationModel, rbac: Record<string, string> | undefined): SearchDocument | undefined;
15
- protected addSchema(parameters: Record<string, OperationParameter>, schema: SchemaModel | undefined, mediaType: string | undefined, place: string, isResponse: boolean, path?: string[], visitedPointers?: Set<string>, level?: number): void;
16
- }
17
- //# sourceMappingURL=search-indexer.d.ts.map
@@ -1 +0,0 @@
1
- import{REDOCLY_TEAMS_RBAC as f}from"@redocly/config";import{SEARCH_DOCUMENT_METADATA_KEY as h}from"../../constants/plugins/search.js";import{removeMarkdownLinks as m,stripFormatting as l}from"./utils.js";import{OpenApiSearchBuilder as p}from"./openapi-search-builder.js";import{normalizeFrontmatterKeywords as x}from"../helpers/normalize-frontmatter-keywords.js";class b extends p{#t=[];#e;constructor(e,t,r){super(e,t,r)}addItem(e){const{result:t}=x(e.keywords||e.operationDefinition?.keywords);t?.excludes&&e.type==="section"&&e.id===""&&(this.#e=t.excludes);try{const r=this.buildSearchDocument(e);if(!r)return;const n=[...new Set([...t?.excludes?t.excludes:[],...this.#e?this.#e:[]])];return(t||n.length)&&(r[h]={curated:!0,...t,excludes:n}),this.#t.push(r),r}catch(r){console.error("Cannot add item to search indexer",r.message)}}addInfo(e,t){const r=this.basePath,n={id:r,url:r,text:l(m(e.description||"")),title:l(`${e.title} (${e.version})`),metadata:t};return this.#t.push(n),n}getResult(){return this.#t}buildOperationDocument(e,t){const r=this.createOperationDocumentBase(e,t);if(r)return{...r,isAdditionalOperation:e.isAdditionalOperation,badges:e.badges.length?e.badges:void 0}}addSchema(e,t,r,n,o,s=[],d=new Set,a=0){if(!(!t||t.isCircular)){if(t.pointer){if(d.has(t.pointer))return;d.add(t.pointer)}if(!(a>this.options.generatedSamplesMaxDepth)){if(t.fields)for(const i of t.fields){if(t[f]||i.kind==="additionalProperties"||i.schema?.readOnly&&!o||i.schema?.writeOnly&&o)continue;const c=this.createSchemaFieldParameter(i,t,n,r,s),u=this.getParameterId(c);e[u]==null&&(e[u]=c,this.addSchema(e,i.schema,r,n,o,s.concat([i.name]),d,a+1))}t.items&&this.addSchema(e,t.items,r,n,o,s,d,a+1)}}}}export{b as SearchIndexer};
@@ -1,4 +0,0 @@
1
- import type { ApiRoutesHandler } from '@redocly/config';
2
- declare const specDownloadApi: ApiRoutesHandler;
3
- export default specDownloadApi;
4
- //# sourceMappingURL=spec-download.api.d.ts.map
@@ -1 +0,0 @@
1
- import o from"node:path";import{readFile as L,existsSync as P}from"node:fs";import{promisify as N}from"node:util";import S from"js-yaml";import{withoutPathPrefix as _}from"@redocly/theme/core/utils";import{DEPRECATED_PUBLIC_API_DEFINITIONS_FOLDER as F,PUBLIC_API_DEFINITIONS_FOLDER as y}from"../../constants/common.js";import{canDownloadApiDefinition as C,filterDataByAccessDeep as O}from"../../utils/rbac.js";import{replaceFileExtension as I}from"./store-definition-bundles.js";const U=N(L),g=async(A,s,n)=>{const{isAuthenticated:e,teams:a,claims:{email:i}}=s.user,D=new URL(A.url),r=_(D.pathname),t=decodeURIComponent(r.replace(y,"").replace(F,"")),c=s.config.access??{},p=c.rbac??{},l=c.requiresLogin??!1;if(!C(r,p,l,{isAuthenticated:e,email:i,teams:a}))return new Response("Unauthorized",{status:e?403:401});const m=o.join(n.props?.outdir||"",y,I(t,".json")),f=o.join(n.props?.outdir||"",F,I(t,".json")),u=P(m),E=P(f);if(!u&&!E)return new Response("Not found",{status:404});const R=await U(u?m:f,"utf-8"),w=JSON.parse(R),d=O(w,{isAuthenticated:e,email:i,teams:a},p,l),h=o.extname(t),x=h===".yaml"?S.dump(d):JSON.stringify(d,null,2);return new Response(x,{headers:{"Content-Type":h===".yaml"?"application/yaml":"application/json"}})};var K=g;export{K as default};
@@ -1,4 +0,0 @@
1
- import type { BundledDefinition } from './load-definition';
2
- export declare function storeDefinitionBundles(definitions: BundledDefinition[], outDir: string): void;
3
- export declare function replaceFileExtension(filePath: string, fileExt: string): string;
4
- //# sourceMappingURL=store-definition-bundles.d.ts.map
@@ -1 +0,0 @@
1
- import{writeFileSync as l}from"fs";import o from"path";import{dump as d}from"js-yaml";import{PUBLIC_API_DEFINITIONS_FOLDER as u,PUBLIC_STATIC_FOLDER as c}from"../../constants/common.js";import{logger as x}from"../../tools/notifiers/logger.js";import{ensureDir as g}from"../../utils/fs.js";const a=new Map;function O(i,t){const r=u.slice(1);try{for(const e of i){const{definition:s,relativePath:n,hash:f}=e;if(a.get(n)!==f){if(n.startsWith(c+"/")){const p=o.posix.extname(n);m({outDir:t,definitionFolder:".",relativePath:n.replace(c+"/",""),definitionString:p===".json"?JSON.stringify(s,null,2):d(s)}),a.set(n,f);continue}m({outDir:t,definitionFolder:r,relativePath:h(n,".json"),definitionString:JSON.stringify(s,null,2)}),a.set(n,f)}}}catch(e){x.error("failed to store definition bundles",e)}}function h(i,t){const r=o.posix.dirname(i),e=o.posix.basename(i,o.posix.extname(i))+t;return o.posix.join(r,e)}function m({outDir:i,definitionString:t,relativePath:r,definitionFolder:e}){l(g(o.resolve(i,`${e}/${r}`)),t,"utf8")}export{h as replaceFileExtension,O as storeDefinitionBundles};
@@ -1,17 +0,0 @@
1
- import type { OperationMenuItem } from '@redocly/openapi-docs/lib/models';
2
- import type { OperationParameter } from '@redocly/theme/core/types';
3
- export type TagOperations = {
4
- untagged: OperationMenuItem[];
5
- tagged: Map<string, OperationMenuItem[]>;
6
- };
7
- export type SchemaVariant = {
8
- title: string;
9
- parameters: OperationParameter[];
10
- };
11
- export type OperationParameterWithVariants = OperationParameter & {
12
- oneOf?: {
13
- discriminator?: string;
14
- variants: SchemaVariant[];
15
- };
16
- };
17
- //# sourceMappingURL=types.d.ts.map
File without changes
@@ -1,25 +0,0 @@
1
- import type { IMenuItem, SchemaModel } from '@redocly/openapi-docs';
2
- import type { ItemBadge, NavItem, ResolvedNavItem } from '@redocly/config';
3
- export type IMenuItemExtended = {
4
- httpVerb?: string;
5
- isWebhook?: boolean;
6
- badges?: ItemBadge[];
7
- } & IMenuItem;
8
- export declare function convertOpenAPIDocs2Sidebar(data: {
9
- contentItems: IMenuItemExtended[];
10
- sidebarItems: ResolvedNavItem[];
11
- routeSlug: string;
12
- navItem?: NavItem;
13
- }): void;
14
- export declare function shouldAddRoute({ item }: {
15
- item: IMenuItem;
16
- }): boolean;
17
- export declare const removeMarkdownLinks: (text: string | Record<string, any>) => any;
18
- export declare function normalizeFeedbackOptions(feedbackOptions: Record<string, any> | null | undefined): Record<string, any> | undefined;
19
- export declare function stripFormatting(text: string | Record<string, any> | null): string;
20
- /**
21
- * Returns the oneOf schema when `schema` (or, for an array, its items) is a
22
- * oneOf/anyOf/discriminator — the single `oneOf` property the model uses for all of them.
23
- */
24
- export declare function getOneOfSchema(schema: SchemaModel | undefined): SchemaModel | undefined;
25
- //# sourceMappingURL=utils.d.ts.map
@@ -1 +0,0 @@
1
- import{REDOCLY_TEAMS_RBAC as i}from"@redocly/config";import{combineUrls as l}from"@redocly/theme/core/utils";import{FEEDBACK_TYPES as c}from"../../../constants/common.js";import{normalizeRouteSlug as f}from"../../../utils/path/normalize-route-slug.js";function u(t){const{contentItems:r,sidebarItems:a,routeSlug:o,navItem:s}=t;let m=!0;for(const e of r){let n;switch(e.type){case"group":a.push({type:"separator",label:e.name,hideWhenEmpty:!0,[i]:e[i]}),u({...t,contentItems:e.items,sidebarItems:a});break;case"tag":n=l(o,e.href);const b={type:"group",label:e.name,items:[],link:n,routeSlug:n,[i]:e[i]};a.push(b),u({routeSlug:o,contentItems:e.items,sidebarItems:b.items||[],navItem:s});break;case"operation":case"schema":case"rsrc":case"prompt":case"tool":e.isWebhook&&m&&(a.push({type:"separator",label:"Webhooks",variant:"secondary",hideWhenEmpty:!0}),m=!1),n=l(o,e.href),a.push({type:"link",label:e.name,httpVerb:e.type==="operation"?e.httpVerb:e.type,routeSlug:f(n),badges:e.badges,link:n,deprecated:e.deprecated,isAdditionalOperation:e.isAdditionalOperation,[i]:e[i]});break;case"section":if(e.depth===-1)continue;n=l(o,e.href);const p=e.href==="/",d={type:e.items.length?"group":"link",label:p&&s?.label?s.label:e.name,labelTranslationKey:s?.labelTranslationKey,routeSlug:n.split("#")[0]===o?o:f(n),link:n,items:[],...p&&s?.icon&&{icon:typeof s.icon=="object"?s.icon.srcSet:s.icon},...p&&s?.badges&&{badges:s.badges}};a.push(d),e.items.length&&u({routeSlug:o,contentItems:e.items,sidebarItems:d.items});break}}}function S({item:t}){return t.id===""?!0:t.type!=="group"||t.description!==""}const I=t=>(typeof t=="string"?t:t?.raw)?.replace(/\[(.*?)\][\[\(].*?[\]\)]/g,"$1")||"";function E(t){if(!t)return;let r="";const{type:a,settings:o}=t;switch(a){case c.RATING:r="Rate this section";break;case c.SENTIMENT:r="Was this section helpful?";break;case c.MOOD:r="Was this section helpful?";break;case c.COMMENT:r="Share your feedback about this section";break;case c.SCALE:r="How would you rate this section?";break}return{...t,settings:{...o,label:o?.label||r}}}function O(t){return(typeof t=="string"?t:t?.raw||"").replace(/<[^>]*>/g,"").replace(/```([\s\S]*?)```/g,"$1").replace(/`([^`]+)`/g,"$1").replace(/\*\*(.*?)\*\*/g,"$1").replace(/\*(.*?)\*/g,"$1").trim()}function A(t){if(t?.oneOf)return t;if(t?.items?.oneOf)return t.items}export{u as convertOpenAPIDocs2Sidebar,A as getOneOfSchema,E as normalizeFeedbackOptions,I as removeMarkdownLinks,S as shouldAddRoute,O as stripFormatting};