@redocly/realm 0.136.0-next.1 → 0.136.0-next.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (495) hide show
  1. package/CHANGELOG.md +191 -0
  2. package/dist/bin.js +1 -1
  3. package/dist/cli/build/analytics/collect-analytics.js +1 -1
  4. package/dist/cli/build/index.js +1 -1
  5. package/dist/cli/eject/ejectComponent.d.ts +1 -1
  6. package/dist/cli/eject/ejectTheme.d.ts +1 -1
  7. package/dist/cli/eject/resolveEjectParams.js +1 -1
  8. package/dist/cli/eject/themeOperations.d.ts +2 -2
  9. package/dist/cli/stats/collectors/openapi/index.js +1 -1
  10. package/dist/cli/stats/index.js +1 -1
  11. package/dist/client/App.js +1 -1
  12. package/dist/client/ErrorBoundary.js +1 -1
  13. package/dist/client/TestProvider.d.ts +1 -1
  14. package/dist/client/TestProvider.js +1 -1
  15. package/dist/client/api-docs-builder-entry.d.ts +3 -0
  16. package/dist/client/api-docs-builder-entry.js +1 -0
  17. package/dist/client/app/ConditionalLink.d.ts +1 -1
  18. package/dist/client/app/Feedback/useSubmitFeedback.js +1 -1
  19. package/dist/client/app/Sidebar/Sidebar.js +3 -3
  20. package/dist/client/app/Sidebar/helpers/hide-empty-separators.d.ts +13 -0
  21. package/dist/client/app/Sidebar/helpers/hide-empty-separators.js +1 -0
  22. package/dist/client/app/Sidebar/useActions.js +1 -1
  23. package/dist/client/app/Sidebar/utils.js +1 -1
  24. package/dist/client/app/hooks/catalog/useCatalogFilter.d.ts +1 -1
  25. package/dist/client/app/hooks/catalog/useCatalogViewMode.js +1 -1
  26. package/dist/client/app/hooks/catalog/useFetchCatalogEntities.d.ts +1 -1
  27. package/dist/client/app/hooks/catalog/useFetchCatalogEntities.js +1 -1
  28. package/dist/client/app/hooks/catalog/useFetchCatalogEntitiesRelations.d.ts +2 -2
  29. package/dist/client/app/hooks/catalog/useFetchCatalogEntitiesRelations.js +1 -1
  30. package/dist/client/app/hooks/catalog/useFetchCatalogEntityRevisions.d.ts +1 -1
  31. package/dist/client/app/hooks/catalog/useSearchTracker.d.ts +2 -5
  32. package/dist/client/app/hooks/catalog/useSearchTracker.js +1 -1
  33. package/dist/client/app/hooks/codeHighlight/useCodeHighlight.d.ts +1 -6
  34. package/dist/client/app/hooks/codeHighlight/useCodeHighlight.js +1 -1
  35. package/dist/client/app/hooks/index.d.ts +1 -0
  36. package/dist/client/app/hooks/index.js +1 -1
  37. package/dist/client/app/hooks/useAutoScroll.js +1 -1
  38. package/dist/client/app/hooks/useUserClaims.js +1 -1
  39. package/dist/client/app/l10n/hooks/index.d.ts +1 -0
  40. package/dist/client/app/l10n/hooks/index.js +1 -1
  41. package/dist/client/app/l10n/hooks/useTranslate.js +1 -1
  42. package/dist/client/app/l10n/hooks/useTranslationKeys.d.ts +2 -0
  43. package/dist/client/app/l10n/hooks/useTranslationKeys.js +1 -0
  44. package/dist/client/app/l10n/initL10n.js +1 -1
  45. package/dist/client/app/markdoc/custom-components/openapi/json-schema.d.ts +1 -1
  46. package/dist/client/app/markdoc/custom-components/openapi/json-schema.js +1 -1
  47. package/dist/client/app/markdoc/custom-components/openapi/openapi-code-sample.d.ts +1 -5
  48. package/dist/client/app/markdoc/custom-components/openapi/openapi-code-sample.js +1 -1
  49. package/dist/client/app/markdoc/custom-components/openapi/openapi-example.js +1 -1
  50. package/dist/client/app/markdoc/custom-components/openapi/openapi-response-sample.js +1 -1
  51. package/dist/client/app/markdoc/custom-components/openapi/replay-openapi.d.ts +8 -24
  52. package/dist/client/app/markdoc/custom-components/openapi/replay-openapi.js +1 -1
  53. package/dist/client/app/markdoc/hooks/use-store.d.ts +8 -6
  54. package/dist/client/app/markdoc/utils/build-replay-operation-source-map.d.ts +20 -0
  55. package/dist/client/app/markdoc/utils/build-replay-operation-source-map.js +1 -0
  56. package/dist/client/app/markdoc/utils/find-api-item.d.ts +15 -0
  57. package/dist/client/app/markdoc/utils/find-api-item.js +1 -0
  58. package/dist/client/app/markdoc/utils/find-code-sample-panel.d.ts +11 -0
  59. package/dist/client/app/markdoc/utils/find-code-sample-panel.js +1 -0
  60. package/dist/client/app/markdoc/utils/find-openapi-response-samples.d.ts +15 -0
  61. package/dist/client/app/markdoc/utils/find-openapi-response-samples.js +1 -0
  62. package/dist/client/app/markdoc/utils/openapi-panel-entry.d.ts +18 -0
  63. package/dist/client/app/markdoc/utils/openapi-panel-entry.js +1 -0
  64. package/dist/client/app/pages/DevLogin/DevLoginForm.d.ts +1 -1
  65. package/dist/client/app/useGlobalData.d.ts +1 -1
  66. package/dist/client/app/usePreloadHistory.d.ts +2 -2
  67. package/dist/client/app/usePreloadHistory.js +1 -1
  68. package/dist/client/app/utils/loadAndNavigate.d.ts +1 -1
  69. package/dist/client/app/utils/loadAndNavigate.js +1 -1
  70. package/dist/client/app/utils/resolveRouteBySlug.js +1 -1
  71. package/dist/client/app/utils/same-resolved-route.d.ts +5 -0
  72. package/dist/client/app/utils/same-resolved-route.js +1 -0
  73. package/dist/client/browser-entry.js +2 -2
  74. package/dist/client/providers/page-data/hooks.d.ts +2 -2
  75. package/dist/client/providers/post-message/PostMessageProvider.js +1 -1
  76. package/dist/client/providers/post-message/use-post-message.d.ts +1 -1
  77. package/dist/client/providers/theme/ThemeDataProvider.js +1 -1
  78. package/dist/client/runtime/loader.js +1 -1
  79. package/dist/client/templates/api-docs/helpers.d.ts +10 -0
  80. package/dist/client/templates/api-docs/helpers.js +1 -0
  81. package/dist/client/templates/api-docs/template.d.ts +17 -0
  82. package/dist/client/templates/api-docs/template.js +14 -0
  83. package/dist/client/templates/openapi-docs/helpers.d.ts +1 -1
  84. package/dist/client/templates/openapi-docs/helpers.js +2 -2
  85. package/dist/client/types/sidebar.d.ts +0 -1
  86. package/dist/client/utils/utils.d.ts +0 -2
  87. package/dist/client/utils/utils.js +1 -1
  88. package/dist/constants/common.d.ts +14 -1
  89. package/dist/constants/common.js +1 -1
  90. package/dist/constants/l10n/langs/ar.js +1 -1
  91. package/dist/constants/l10n/langs/de.js +1 -1
  92. package/dist/constants/l10n/langs/en.js +1 -1
  93. package/dist/constants/l10n/langs/es.js +1 -1
  94. package/dist/constants/l10n/langs/fr.js +1 -1
  95. package/dist/constants/l10n/langs/hi.js +1 -1
  96. package/dist/constants/l10n/langs/it.js +1 -1
  97. package/dist/constants/l10n/langs/ja.js +1 -1
  98. package/dist/constants/l10n/langs/ko.js +1 -1
  99. package/dist/constants/l10n/langs/pl.js +1 -1
  100. package/dist/constants/l10n/langs/pt-BR.js +1 -1
  101. package/dist/constants/l10n/langs/pt.js +1 -1
  102. package/dist/constants/l10n/langs/ru.js +1 -1
  103. package/dist/constants/l10n/langs/uk.js +1 -1
  104. package/dist/constants/l10n/langs/zh.js +1 -1
  105. package/dist/markdoc/tags/index.d.ts +48 -2
  106. package/dist/server/api-routes/helpers/enhance-context.js +1 -1
  107. package/dist/server/api-routes/helpers/read-stream-with-size-limit.d.ts +1 -1
  108. package/dist/server/api-routes/run-api-routes-worker.d.ts +1 -1
  109. package/dist/server/api-routes/run-api-routes-worker.js +1 -1
  110. package/dist/server/config/env-config.d.ts +2 -4
  111. package/dist/server/config/env-schema.d.ts +5 -10
  112. package/dist/server/config/env-schemas/feature-flags.d.ts +4 -8
  113. package/dist/server/config/env-schemas/feature-flags.js +1 -1
  114. package/dist/server/constants/common.d.ts +2 -0
  115. package/dist/server/constants/common.js +1 -1
  116. package/dist/server/constants/entitlements.js +1 -1
  117. package/dist/server/constants/plugins/api-docs.d.ts +3 -0
  118. package/dist/server/constants/plugins/api-docs.js +1 -0
  119. package/dist/server/esbuild/esbuild-logger.js +3 -3
  120. package/dist/server/esbuild/esbuild.js +3 -3
  121. package/dist/server/esbuild/plugins/api-docs-module-replacer/empty-check.d.ts +9 -0
  122. package/dist/server/esbuild/plugins/api-docs-module-replacer/empty-check.js +1 -0
  123. package/dist/server/esbuild/plugins/api-docs-module-replacer/empty-overlay.d.ts +2 -0
  124. package/dist/server/esbuild/plugins/api-docs-module-replacer/empty-overlay.js +1 -0
  125. package/dist/server/esbuild/plugins/api-docs-module-replacer/index.d.ts +6 -0
  126. package/dist/server/esbuild/plugins/api-docs-module-replacer/index.js +1 -0
  127. package/dist/server/persistence/cache/mappers/create-cache-db-record.d.ts +1 -1
  128. package/dist/server/persistence/file-hashes/mappers/create-file-hash-db-record.d.ts +1 -1
  129. package/dist/server/persistence/kv/mappers/create-kv-db-record.d.ts +1 -1
  130. package/dist/server/plugins/api-docs/get-server-props.d.ts +4 -0
  131. package/dist/server/plugins/api-docs/get-server-props.js +1 -0
  132. package/dist/server/plugins/api-docs/get-template-path.d.ts +2 -0
  133. package/dist/server/plugins/api-docs/get-template-path.js +1 -0
  134. package/dist/server/plugins/api-docs/import-api-docs-builder.d.ts +8 -0
  135. package/dist/server/plugins/api-docs/import-api-docs-builder.js +1 -0
  136. package/dist/server/plugins/api-docs/index.d.ts +19 -0
  137. package/dist/server/plugins/api-docs/index.js +1 -0
  138. package/dist/server/plugins/api-docs/loader.d.ts +35 -0
  139. package/dist/server/plugins/api-docs/loader.js +3 -0
  140. package/dist/server/plugins/api-docs/options.d.ts +14 -0
  141. package/dist/server/plugins/api-docs/options.js +1 -0
  142. package/dist/server/plugins/api-docs/search/get-ai-search-documents.d.ts +20 -0
  143. package/dist/server/plugins/api-docs/search/get-ai-search-documents.js +105 -0
  144. package/dist/server/plugins/api-docs/search/search-facets.d.ts +10 -0
  145. package/dist/server/plugins/api-docs/search/search-facets.js +1 -0
  146. package/dist/server/plugins/api-docs/search/search-indexer.d.ts +9 -0
  147. package/dist/server/plugins/api-docs/search/search-indexer.js +1 -0
  148. package/dist/server/plugins/api-docs/search/search-resolver.d.ts +5 -0
  149. package/dist/server/plugins/api-docs/search/search-resolver.js +1 -0
  150. package/dist/server/plugins/api-docs/spec-download.api.d.ts +4 -0
  151. package/dist/server/plugins/api-docs/spec-download.api.js +1 -0
  152. package/dist/server/plugins/api-docs/store-definition-bundles.d.ts +3 -0
  153. package/dist/server/plugins/api-docs/store-definition-bundles.js +1 -0
  154. package/dist/server/plugins/api-docs/utils/build-item-positions.d.ts +17 -0
  155. package/dist/server/plugins/api-docs/utils/build-item-positions.js +1 -0
  156. package/dist/server/plugins/api-docs/utils/build-routes-mapping.d.ts +3 -0
  157. package/dist/server/plugins/api-docs/utils/build-routes-mapping.js +1 -0
  158. package/dist/server/plugins/api-docs/utils/collect-item-routes.d.ts +12 -0
  159. package/dist/server/plugins/api-docs/utils/collect-item-routes.js +1 -0
  160. package/dist/server/plugins/api-docs/utils/decorators.d.ts +26 -0
  161. package/dist/server/plugins/api-docs/utils/decorators.js +1 -0
  162. package/dist/server/plugins/api-docs/utils/format-bundle-error.d.ts +6 -0
  163. package/dist/server/plugins/api-docs/utils/format-bundle-error.js +5 -0
  164. package/dist/server/plugins/api-docs/utils/normalize-api-version.d.ts +2 -0
  165. package/dist/server/plugins/api-docs/utils/normalize-api-version.js +1 -0
  166. package/dist/server/plugins/api-docs/utils/normalize-feedback-options.d.ts +2 -0
  167. package/dist/server/plugins/api-docs/utils/normalize-feedback-options.js +1 -0
  168. package/dist/server/plugins/api-docs/utils/relative-path-to-base-slug.d.ts +20 -0
  169. package/dist/server/plugins/api-docs/utils/relative-path-to-base-slug.js +1 -0
  170. package/dist/server/plugins/api-docs/utils/replace-file-extension.d.ts +2 -0
  171. package/dist/server/plugins/api-docs/utils/replace-file-extension.js +1 -0
  172. package/dist/server/plugins/api-docs/utils/resolve-api-doc-title.d.ts +3 -0
  173. package/dist/server/plugins/api-docs/utils/resolve-api-doc-title.js +1 -0
  174. package/dist/server/plugins/api-docs/utils/resolve-config-rbac.d.ts +10 -0
  175. package/dist/server/plugins/api-docs/utils/resolve-config-rbac.js +1 -0
  176. package/dist/server/plugins/api-docs/utils/to-relative-slug.d.ts +2 -0
  177. package/dist/server/plugins/api-docs/utils/to-relative-slug.js +1 -0
  178. package/dist/server/plugins/api-functions/index.js +1 -1
  179. package/dist/server/plugins/arazzo-docs/index.js +1 -1
  180. package/dist/server/plugins/asyncapi-docs/index.js +1 -1
  181. package/dist/server/plugins/catalog-classic/index.js +1 -1
  182. package/dist/server/plugins/catalog-entities/database/catalog-entities-diff-publisher.d.ts +1 -1
  183. package/dist/server/plugins/catalog-entities/database/catalog-entities-revisions-pruner.d.ts +4 -2
  184. package/dist/server/plugins/catalog-entities/database/catalog-entities-revisions-pruner.js +23 -3
  185. package/dist/server/plugins/catalog-entities/database/catalog-entities-service.d.ts +5 -5
  186. package/dist/server/plugins/catalog-entities/database/mappers/create-entity-attributes-db-record.d.ts +1 -1
  187. package/dist/server/plugins/catalog-entities/database/mappers/create-entity-db-record.d.ts +1 -1
  188. package/dist/server/plugins/catalog-entities/database/mappers/create-entity-relation-db-record-from-file-schema.d.ts +1 -1
  189. package/dist/server/plugins/catalog-entities/database/remote-publish-lock-service.d.ts +3 -3
  190. package/dist/server/plugins/catalog-entities/database/repositories/bffEntities/bff-entities-read-repository.d.ts +2 -2
  191. package/dist/server/plugins/catalog-entities/database/repositories/catalog-entities-repository.js +1 -1
  192. package/dist/server/plugins/catalog-entities/database/repositories/common/filters-repository.d.ts +1 -1
  193. package/dist/server/plugins/catalog-entities/database/repositories/common/revision-repository.d.ts +1 -1
  194. package/dist/server/plugins/catalog-entities/database/repositories/entities/entities-read-repository.d.ts +1 -1
  195. package/dist/server/plugins/catalog-entities/database/repositories/entities/entities-write-repository.d.ts +2 -2
  196. package/dist/server/plugins/catalog-entities/database/repositories/entities/entities-write-repository.js +1 -1
  197. package/dist/server/plugins/catalog-entities/database/repositories/entityAttributes/entity-attributes-write-repository.d.ts +1 -1
  198. package/dist/server/plugins/catalog-entities/database/repositories/relations/relations-read-repository.d.ts +1 -1
  199. package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/arazzo-entities-extractor.js +1 -1
  200. package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/asyncapi-entities-extractor.d.ts +13 -5
  201. package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/asyncapi-entities-extractor.js +1 -1
  202. package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/base.d.ts +5 -2
  203. package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/base.js +1 -1
  204. package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/graphql-entities-extractor.d.ts +6 -5
  205. package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/graphql-entities-extractor.js +2 -2
  206. package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/openapi-entities-extractor.d.ts +12 -5
  207. package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/openapi-entities-extractor.js +1 -1
  208. package/dist/server/plugins/catalog-entities/extensions/extractors/fs-entities-extractor.d.ts +1 -1
  209. package/dist/server/plugins/catalog-entities/plugin.js +1 -1
  210. package/dist/server/plugins/catalog-entities/template/index.js +1 -1
  211. package/dist/server/plugins/catalog-entities/types/openapi.d.ts +1 -1
  212. package/dist/server/plugins/catalog-entities/utils/get-not-accessible-catalog-resources.d.ts +1 -1
  213. package/dist/server/plugins/catalog-entities/utils/openapi-component-content-extractor.d.ts +4 -4
  214. package/dist/server/plugins/catalog-entities/utils/openapi-component-content-extractor.js +1 -1
  215. package/dist/server/plugins/catalog-entities/utils/openapi-schema-resolver.d.ts +4 -3
  216. package/dist/server/plugins/catalog-entities/utils/openapi-schema-resolver.js +1 -1
  217. package/dist/server/plugins/config-parser/index.js +1 -1
  218. package/dist/server/plugins/config-parser/loaders/utils/read-and-validate-config.js +1 -1
  219. package/dist/server/plugins/create-slugify.d.ts +17 -0
  220. package/dist/server/plugins/create-slugify.js +1 -0
  221. package/dist/server/plugins/default-theme/index.js +1 -1
  222. package/dist/server/plugins/dev-onboarding/index.d.ts +1 -1
  223. package/dist/server/plugins/dev-onboarding/index.js +1 -1
  224. package/dist/server/plugins/dev-onboarding/template/components/RevokeAPIKey.d.ts +1 -1
  225. package/dist/server/plugins/dev-onboarding/template/components/RollAPIKey.d.ts +1 -1
  226. package/dist/server/plugins/entitlements/index.js +1 -1
  227. package/dist/server/plugins/graphql-docs/index.js +1 -1
  228. package/dist/server/plugins/graphql-docs/search/ai/utils.d.ts +1 -1
  229. package/dist/server/plugins/helpers/parse-partials.d.ts +3 -0
  230. package/dist/server/plugins/helpers/parse-partials.js +1 -0
  231. package/dist/server/plugins/l10n/index.js +1 -1
  232. package/dist/server/plugins/lifecycle.js +2 -2
  233. package/dist/server/plugins/markdown/attribute-resolvers/helpers/load-openapi-bundle.d.ts +5 -3
  234. package/dist/server/plugins/markdown/attribute-resolvers/helpers/load-openapi-bundle.js +1 -1
  235. package/dist/server/plugins/markdown/attribute-resolvers/resolve-json-example-ref.js +1 -1
  236. package/dist/server/plugins/markdown/attribute-resolvers/resolve-open-api-ref.js +1 -1
  237. package/dist/server/plugins/markdown/attribute-resolvers/resolve-openapi-code-samples.js +1 -1
  238. package/dist/server/plugins/markdown/attribute-resolvers/resolve-openapi-response-samples.js +1 -1
  239. package/dist/server/plugins/markdown/index.js +1 -1
  240. package/dist/server/plugins/markdown/markdoc/markdoc-options.d.ts +9 -9
  241. package/dist/server/plugins/markdown/markdoc/plugins/utils.d.ts +5 -0
  242. package/dist/server/plugins/markdown/markdoc/plugins/utils.js +1 -1
  243. package/dist/server/plugins/markdown/runtime-transform.js +1 -1
  244. package/dist/server/plugins/markdown/search/create-render-tag-fn.d.ts +2 -1
  245. package/dist/server/plugins/markdown/search/create-render-tag-fn.js +1 -1
  246. package/dist/server/plugins/markdown/search/get-ai-search-documents.js +9 -9
  247. package/dist/server/plugins/markdown/search/walk-sections.js +1 -1
  248. package/dist/server/plugins/markdown/utils/resolve-markdown-template.d.ts +1 -1
  249. package/dist/server/plugins/mcp/auth/auth-handlers.d.ts +3 -0
  250. package/dist/server/plugins/mcp/auth/auth-handlers.js +1 -1
  251. package/dist/server/plugins/mcp/codemode/capabilities/types.d.ts +1 -1
  252. package/dist/server/plugins/mcp/codemode/capabilities/utils.d.ts +1 -1
  253. package/dist/server/plugins/mcp/codemode/code-audit.d.ts +12 -0
  254. package/dist/server/plugins/mcp/codemode/code-audit.js +1 -0
  255. package/dist/server/plugins/mcp/codemode/code-execution-telemetry.d.ts +11 -0
  256. package/dist/server/plugins/mcp/codemode/code-execution-telemetry.js +1 -0
  257. package/dist/server/plugins/mcp/codemode/constants.js +1 -1
  258. package/dist/server/plugins/mcp/codemode/prompts.js +1 -1
  259. package/dist/server/plugins/mcp/codemode/tools/describe-tools.d.ts +2 -3
  260. package/dist/server/plugins/mcp/codemode/tools/execute-schema.d.ts +1 -1
  261. package/dist/server/plugins/mcp/codemode/tools/execute-schema.js +1 -1
  262. package/dist/server/plugins/mcp/codemode/tools/execute.d.ts +1 -0
  263. package/dist/server/plugins/mcp/codemode/tools/execute.js +1 -1
  264. package/dist/server/plugins/mcp/constants.d.ts +2 -1
  265. package/dist/server/plugins/mcp/constants.js +1 -1
  266. package/dist/server/plugins/mcp/docs-mcp/tool-schemas.d.ts +1 -0
  267. package/dist/server/plugins/mcp/docs-mcp/tool-schemas.js +1 -1
  268. package/dist/server/plugins/mcp/docs-mcp/tools/core/create-anonymous-session.d.ts +11 -0
  269. package/dist/server/plugins/mcp/docs-mcp/tools/core/create-anonymous-session.js +1 -0
  270. package/dist/server/plugins/mcp/docs-mcp/tools/graphql/constants.d.ts +4 -0
  271. package/dist/server/plugins/mcp/docs-mcp/tools/graphql/constants.js +1 -0
  272. package/dist/server/plugins/mcp/docs-mcp/tools/graphql/get-graphql-type-list.js +1 -1
  273. package/dist/server/plugins/mcp/docs-mcp/tools/graphql/get-graphql-type.js +7 -4
  274. package/dist/server/plugins/mcp/docs-mcp/tools/graphql/types.d.ts +7 -1
  275. package/dist/server/plugins/mcp/docs-mcp/tools/graphql/types.js +0 -1
  276. package/dist/server/plugins/mcp/docs-mcp/tools/graphql/utils.d.ts +5 -1
  277. package/dist/server/plugins/mcp/docs-mcp/tools/graphql/utils.js +4 -2
  278. package/dist/server/plugins/mcp/docs-mcp/tools/index.d.ts +4 -0
  279. package/dist/server/plugins/mcp/docs-mcp/tools/index.js +1 -1
  280. package/dist/server/plugins/mcp/docs-mcp/tools/openapi/constants.d.ts +2 -0
  281. package/dist/server/plugins/mcp/docs-mcp/tools/openapi/constants.js +1 -0
  282. package/dist/server/plugins/mcp/docs-mcp/tools/openapi/get-endpoint-info.js +1 -1
  283. package/dist/server/plugins/mcp/docs-mcp/tools/openapi/get-endpoints.js +1 -1
  284. package/dist/server/plugins/mcp/docs-mcp/tools/openapi/get-full-api-description.js +1 -1
  285. package/dist/server/plugins/mcp/docs-mcp/tools/openapi/get-security-schemes.js +1 -1
  286. package/dist/server/plugins/mcp/docs-mcp/tools/openapi/list-apis.js +1 -1
  287. package/dist/server/plugins/mcp/docs-mcp/tools/openapi/load-api-description.d.ts +6 -2
  288. package/dist/server/plugins/mcp/docs-mcp/tools/openapi/load-api-description.js +1 -1
  289. package/dist/server/plugins/mcp/docs-mcp/tools/openapi/types.d.ts +2 -0
  290. package/dist/server/plugins/mcp/docs-mcp/tools/openapi/utils.d.ts +2 -2
  291. package/dist/server/plugins/mcp/docs-mcp/tools/openapi/utils.js +1 -1
  292. package/dist/server/plugins/mcp/docs-mcp/utils.d.ts +3 -3
  293. package/dist/server/plugins/mcp/docs-mcp/utils.js +1 -1
  294. package/dist/server/plugins/mcp/gateway-mcp/elicitation.d.ts +28 -0
  295. package/dist/server/plugins/mcp/gateway-mcp/elicitation.js +2 -0
  296. package/dist/server/plugins/mcp/gateway-mcp/eligibility.d.ts +5 -17
  297. package/dist/server/plugins/mcp/gateway-mcp/eligibility.js +1 -1
  298. package/dist/server/plugins/mcp/gateway-mcp/fetch/allowed-hosts.d.ts +9 -9
  299. package/dist/server/plugins/mcp/gateway-mcp/fetch/allowed-hosts.js +1 -1
  300. package/dist/server/plugins/mcp/gateway-mcp/fetch/fetch-bridge.d.ts +17 -1
  301. package/dist/server/plugins/mcp/gateway-mcp/fetch/fetch-bridge.js +1 -1
  302. package/dist/server/plugins/mcp/gateway-mcp/fetch/fetch-errors.d.ts +11 -0
  303. package/dist/server/plugins/mcp/gateway-mcp/fetch/fetch-errors.js +1 -0
  304. package/dist/server/plugins/mcp/gateway-mcp/fetch/fetch-telemetry.d.ts +14 -0
  305. package/dist/server/plugins/mcp/gateway-mcp/fetch/fetch-telemetry.js +1 -0
  306. package/dist/server/plugins/mcp/gateway-mcp/fetch/normalize-path.d.ts +6 -0
  307. package/dist/server/plugins/mcp/gateway-mcp/fetch/normalize-path.js +1 -0
  308. package/dist/server/plugins/mcp/gateway-mcp/fetch/redact.d.ts +4 -0
  309. package/dist/server/plugins/mcp/gateway-mcp/fetch/redact.js +1 -0
  310. package/dist/server/plugins/mcp/gateway-mcp/fetch/ssrf-blocklist.d.ts +22 -0
  311. package/dist/server/plugins/mcp/gateway-mcp/fetch/ssrf-blocklist.js +1 -0
  312. package/dist/server/plugins/mcp/gateway-mcp/fetch/ssrf-guard.d.ts +1 -1
  313. package/dist/server/plugins/mcp/gateway-mcp/fetch/ssrf-guard.js +1 -1
  314. package/dist/server/plugins/mcp/gateway-mcp/fetch/ssrf-safe-lookup.d.ts +13 -0
  315. package/dist/server/plugins/mcp/gateway-mcp/fetch/ssrf-safe-lookup.js +1 -0
  316. package/dist/server/plugins/mcp/gateway-mcp/fetch-capability.d.ts +8 -1
  317. package/dist/server/plugins/mcp/gateway-mcp/fetch-capability.js +1 -1
  318. package/dist/server/plugins/mcp/gateway-mcp/rate-limit/apply-edge-rate-limit.d.ts +3 -0
  319. package/dist/server/plugins/mcp/gateway-mcp/rate-limit/apply-edge-rate-limit.js +1 -0
  320. package/dist/server/plugins/mcp/gateway-mcp/rate-limit/edge-limiter.d.ts +16 -0
  321. package/dist/server/plugins/mcp/gateway-mcp/rate-limit/edge-limiter.js +1 -0
  322. package/dist/server/plugins/mcp/gateway-mcp/rate-limit/ip-key.d.ts +2 -0
  323. package/dist/server/plugins/mcp/gateway-mcp/rate-limit/ip-key.js +1 -0
  324. package/dist/server/plugins/mcp/gateway-mcp/rate-limit/limits.d.ts +7 -0
  325. package/dist/server/plugins/mcp/gateway-mcp/rate-limit/limits.js +1 -0
  326. package/dist/server/plugins/mcp/gateway-mcp/rate-limit/rate-limit-telemetry.d.ts +8 -0
  327. package/dist/server/plugins/mcp/gateway-mcp/rate-limit/rate-limit-telemetry.js +1 -0
  328. package/dist/server/plugins/mcp/gateway-mcp/rate-limit/window-counter.d.ts +15 -0
  329. package/dist/server/plugins/mcp/gateway-mcp/rate-limit/window-counter.js +1 -0
  330. package/dist/server/plugins/mcp/gateway-mcp/secret-store.d.ts +24 -0
  331. package/dist/server/plugins/mcp/gateway-mcp/secret-store.js +1 -0
  332. package/dist/server/plugins/mcp/gateway-mcp/subject.d.ts +20 -0
  333. package/dist/server/plugins/mcp/gateway-mcp/subject.js +1 -0
  334. package/dist/server/plugins/mcp/gateway-mcp/upstream-auth-scheme.d.ts +18 -0
  335. package/dist/server/plugins/mcp/gateway-mcp/upstream-auth-scheme.js +1 -0
  336. package/dist/server/plugins/mcp/gateway-mcp/upstream-auth.d.ts +10 -0
  337. package/dist/server/plugins/mcp/gateway-mcp/upstream-auth.js +1 -0
  338. package/dist/server/plugins/mcp/handlers/docs-mcp-handler.js +1 -1
  339. package/dist/server/plugins/mcp/handlers/errors.d.ts +3 -3
  340. package/dist/server/plugins/mcp/handlers/errors.js +1 -1
  341. package/dist/server/plugins/mcp/handlers/handle-mcp-request.js +1 -1
  342. package/dist/server/plugins/mcp/handlers/mcp-credentials-handler.d.ts +5 -0
  343. package/dist/server/plugins/mcp/handlers/mcp-credentials-handler.js +101 -0
  344. package/dist/server/plugins/mcp/index.d.ts +1 -0
  345. package/dist/server/plugins/mcp/index.js +1 -1
  346. package/dist/server/plugins/mcp/servers/docs-server.d.ts +3 -1
  347. package/dist/server/plugins/mcp/servers/docs-server.js +1 -1
  348. package/dist/server/plugins/mcp/servers/mcp-server.d.ts +15 -8
  349. package/dist/server/plugins/mcp/servers/mcp-server.js +1 -1
  350. package/dist/server/plugins/mcp/types.d.ts +16 -20
  351. package/dist/server/plugins/mcp/utils/json-schema-validator.d.ts +9 -0
  352. package/dist/server/plugins/mcp/utils/json-schema-validator.js +1 -0
  353. package/dist/server/plugins/mcp/utils/jwt.d.ts +0 -9
  354. package/dist/server/plugins/mcp/utils/jwt.js +1 -1
  355. package/dist/server/plugins/mcp/utils/mode.d.ts +12 -2
  356. package/dist/server/plugins/mcp/utils/mode.js +1 -1
  357. package/dist/server/plugins/mcp/utils/telemetry-attributes.d.ts +8 -0
  358. package/dist/server/plugins/mcp/utils/telemetry-attributes.js +1 -0
  359. package/dist/server/plugins/mcp/utils/xmcp-utils.d.ts +1 -1
  360. package/dist/server/plugins/mcp/utils.d.ts +17 -5
  361. package/dist/server/plugins/mcp/utils.js +1 -1
  362. package/dist/server/plugins/mcp/workers/execute-mcp-tool.js +1 -1
  363. package/dist/server/plugins/mcp/workers/mcp-tool-telemetry.d.ts +10 -2
  364. package/dist/server/plugins/mcp/workers/mcp-tool-telemetry.js +1 -1
  365. package/dist/server/plugins/openapi-docs/index.js +1 -1
  366. package/dist/server/plugins/openapi-docs/search/get-ai-search-documents.js +16 -16
  367. package/dist/server/plugins/openapi-docs/utils.js +1 -1
  368. package/dist/server/plugins/pages/index.js +1 -1
  369. package/dist/server/plugins/scorecard-classic/compute-scorecard.d.ts +1 -1
  370. package/dist/server/plugins/scorecard-classic/compute-scorecard.js +4 -4
  371. package/dist/server/plugins/scorecard-classic/index.d.ts +1 -1
  372. package/dist/server/plugins/scorecard-classic/index.js +1 -1
  373. package/dist/server/plugins/scorecard-classic/template/components.d.ts +1 -1
  374. package/dist/server/plugins/scorecard-classic/template/useData.d.ts +1 -1
  375. package/dist/server/plugins/scorecards/plugin.js +1 -1
  376. package/dist/server/plugins/search/ai-indexer/prepare-semantic-documents.d.ts +1 -1
  377. package/dist/server/plugins/search/ai-indexer/prepare-semantic-documents.js +2 -2
  378. package/dist/server/plugins/search/documents/search-documents.js +1 -1
  379. package/dist/server/plugins/search/engines/flexsearch/index.js +1 -1
  380. package/dist/server/plugins/search/engines/flexsearch/search-index.js +1 -1
  381. package/dist/server/plugins/search/engines/search-engine.d.ts +1 -1
  382. package/dist/server/plugins/search/engines/typesense/index.js +1 -1
  383. package/dist/server/plugins/search/index.js +1 -1
  384. package/dist/server/plugins/search/llmstxt/index.d.ts +1 -1
  385. package/dist/server/plugins/search/llmstxt/index.js +4 -4
  386. package/dist/server/plugins/sidebars/index.d.ts +1 -1
  387. package/dist/server/plugins/sidebars/index.js +1 -1
  388. package/dist/server/plugins/sitemap/index.js +1 -1
  389. package/dist/server/plugins/sso/index.js +1 -1
  390. package/dist/server/providers/database/database-path-generator.d.ts +2 -2
  391. package/dist/server/providers/database/utils/storage-limit-validator.d.ts +1 -1
  392. package/dist/server/sandbox/sandbox.js +2 -2
  393. package/dist/server/sandbox/types.d.ts +3 -2
  394. package/dist/server/sandbox/utils/execution-budget.d.ts +4 -3
  395. package/dist/server/sandbox/utils/execution-budget.js +1 -1
  396. package/dist/server/ssr/render.js +1 -1
  397. package/dist/server/ssr/server-side-props/get-default-static-props.d.ts +1 -1
  398. package/dist/server/ssr/server-side-props/get-server-props-from-user-handler.d.ts +1 -1
  399. package/dist/server/ssr/template.d.ts +1 -1
  400. package/dist/server/ssr/utils.d.ts +1 -0
  401. package/dist/server/ssr/utils.js +5 -5
  402. package/dist/server/store.d.ts +2 -6
  403. package/dist/server/store.js +1 -1
  404. package/dist/server/tools/notifiers/logger.js +1 -1
  405. package/dist/server/tools/notifiers/reporter.js +6 -6
  406. package/dist/server/types/plugins/common.d.ts +4 -6
  407. package/dist/server/types/plugins/markdown.d.ts +1 -3
  408. package/dist/server/types/plugins/search.d.ts +1 -0
  409. package/dist/server/utils/catalog-classic/get-route-slug-to-catalog-slug-map.test.js +1 -1
  410. package/dist/server/utils/crypto/constants.d.ts +5 -0
  411. package/dist/server/utils/crypto/constants.js +1 -0
  412. package/dist/server/utils/crypto/decrypt-aes-gcm.d.ts +6 -0
  413. package/dist/server/utils/crypto/decrypt-aes-gcm.js +1 -0
  414. package/dist/server/utils/crypto/decrypt-claim-value.d.ts +6 -0
  415. package/dist/server/utils/crypto/decrypt-claim-value.js +1 -0
  416. package/dist/server/utils/crypto/derive-key.d.ts +5 -0
  417. package/dist/server/utils/crypto/derive-key.js +1 -0
  418. package/dist/server/utils/crypto/encrypt-aes-gcm.d.ts +6 -0
  419. package/dist/server/utils/crypto/encrypt-aes-gcm.js +1 -0
  420. package/dist/server/utils/crypto/encrypt-claim-value.d.ts +6 -0
  421. package/dist/server/utils/crypto/encrypt-claim-value.js +1 -0
  422. package/dist/server/utils/l10n/get-build-translate-context.d.ts +7 -0
  423. package/dist/server/utils/l10n/get-build-translate-context.js +1 -0
  424. package/dist/server/utils/llmstxt/agent-feedback-llms-footer.js +1 -1
  425. package/dist/server/utils/rbac.d.ts +4 -0
  426. package/dist/server/utils/rbac.js +1 -1
  427. package/dist/server/utils/report-all-errors.js +1 -1
  428. package/dist/server/utils/sandbox-context.d.ts +18 -0
  429. package/dist/server/utils/sandbox-context.js +1 -0
  430. package/dist/server/utils/shared-data.js +1 -1
  431. package/dist/server/web-server/auth.d.ts +34 -4
  432. package/dist/server/web-server/auth.js +3 -3
  433. package/dist/server/web-server/handle-api-route-request.js +1 -1
  434. package/dist/server/web-server/middleware/catalogAuthMiddleware.d.ts +1 -1
  435. package/dist/server/web-server/middleware/telemetry-middleware.js +1 -1
  436. package/dist/server/web-server/routes/api-routes/api-routes.js +1 -1
  437. package/dist/server/web-server/routes/auth.js +1 -1
  438. package/dist/server/web-server/routes/catalog/bff-catalog-related-entities.js +1 -1
  439. package/dist/server/web-server/routes/catalog/bff-catalog-revisions.js +1 -1
  440. package/dist/server/web-server/routes/catalog/bff-catalog.js +1 -1
  441. package/dist/server/web-server/routes/catalog/catalog-relations.js +1 -1
  442. package/dist/server/web-server/routes/catalog/catalog.js +1 -1
  443. package/dist/server/web-server/routes/catalog/helpers/has-access-to-entity.d.ts +1 -1
  444. package/dist/server/web-server/routes/catalog/helpers/upsert-pages-stats.d.ts +1 -1
  445. package/dist/server/web-server/routes/dynamic-route.js +1 -1
  446. package/dist/server/web-server/routes/feedback.d.ts +1 -1
  447. package/dist/server/web-server/routes/helpers/process-redirects.d.ts +1 -1
  448. package/dist/server/web-server/routes/mcp-routes/a2a.js +1 -1
  449. package/dist/server/web-server/routes/mcp-routes/agent-card.js +1 -1
  450. package/dist/server/web-server/routes/mcp-routes/mcp-oauth.d.ts +10 -6
  451. package/dist/server/web-server/routes/mcp-routes/mcp-oauth.js +1 -1
  452. package/dist/server/web-server/routes/mcp-routes/mcp-routes.js +1 -1
  453. package/dist/server/web-server/routes/mcp-routes/mcp-server-card.js +1 -1
  454. package/dist/server/web-server/routes/mcp-routes/utils/build-agent-card.d.ts +1 -1
  455. package/dist/server/web-server/routes/page-data.js +1 -1
  456. package/dist/server/web-server/routes/resolve-route.js +1 -1
  457. package/dist/server/web-server/routes/search.js +1 -1
  458. package/dist/server/web-server/routes/skills/skill-markdown.js +1 -1
  459. package/dist/server/web-server/routes/skills/skills-index.js +1 -1
  460. package/dist/server/web-server/utils/prepare-list-response.d.ts +1 -1
  461. package/dist/server/workers/api-routes-worker-pool.js +1 -1
  462. package/dist/server/workers/mcp-tool-worker-pool.js +1 -1
  463. package/dist/server/workers/worker-pool.d.ts +1 -0
  464. package/dist/server/workers/worker-pool.js +1 -1
  465. package/dist/types/entitlements.d.ts +6 -1
  466. package/dist/types/markdoc.d.ts +2 -1
  467. package/dist/utils/l10n/build-i18n-config.d.ts +24 -0
  468. package/dist/utils/l10n/build-i18n-config.js +1 -0
  469. package/dist/utils/l10n/create-translate.d.ts +19 -0
  470. package/dist/utils/l10n/create-translate.js +1 -0
  471. package/dist/utils/url/get-shared-data-fetch-url.d.ts +17 -0
  472. package/dist/utils/url/get-shared-data-fetch-url.js +1 -0
  473. package/dist/utils/url/parse-preview-url.d.ts +22 -0
  474. package/dist/utils/url/parse-preview-url.js +1 -0
  475. package/package.json +15 -14
  476. package/dist/markdoc/helpers/get-operation/get-operation-info-by-id.d.ts +0 -4
  477. package/dist/markdoc/helpers/get-operation/get-operation-info-by-id.js +0 -1
  478. package/dist/markdoc/helpers/get-operation/get-operation-info-by-pointer.d.ts +0 -4
  479. package/dist/markdoc/helpers/get-operation/get-operation-info-by-pointer.js +0 -1
  480. package/dist/markdoc/helpers/get-operation/get-operation.d.ts +0 -14
  481. package/dist/markdoc/helpers/get-operation/get-operation.js +0 -1
  482. package/dist/markdoc/helpers/get-operation/index.d.ts +0 -4
  483. package/dist/markdoc/helpers/get-operation/index.js +0 -1
  484. package/dist/markdoc/helpers/get-operation/types/index.d.ts +0 -4
  485. package/dist/markdoc/helpers/get-operation/types/index.js +0 -0
  486. package/dist/markdoc/helpers/get-operation/types/operation-identifier.d.ts +0 -5
  487. package/dist/markdoc/helpers/get-operation/types/operation-identifier.js +0 -0
  488. package/dist/markdoc/helpers/get-operation/types/operation-info.d.ts +0 -6
  489. package/dist/markdoc/helpers/get-operation/types/operation-info.js +0 -0
  490. package/dist/markdoc/helpers/get-operation/types/operation-parameters.d.ts +0 -3
  491. package/dist/markdoc/helpers/get-operation/types/operation-parameters.js +0 -0
  492. package/dist/server/plugins/markdown/attribute-resolvers/helpers/get-media-content-samples.d.ts +0 -4
  493. package/dist/server/plugins/markdown/attribute-resolvers/helpers/get-media-content-samples.js +0 -1
  494. package/dist/server/plugins/mcp/handlers/sse-keepalive.d.ts +0 -15
  495. package/dist/server/plugins/mcp/handlers/sse-keepalive.js +0 -3
@@ -56,8 +56,7 @@ export declare const envSchema: z.ZodEffects<z.ZodObject<{
56
56
  REDOCLY_EXP_LLMSTXT_AGENT_FEEDBACK_ENABLED: z.ZodEffects<z.ZodOptional<z.ZodEnum<["true", "false"]>>, boolean | undefined, "false" | "true" | undefined>;
57
57
  REDOCLY_EXP_LLMSTXT_AGENT_FEEDBACK_URL: z.ZodOptional<z.ZodString>;
58
58
  REDOCLY_EXP_LLMSTXT_AGENT_ENDPOINT: z.ZodOptional<z.ZodString>;
59
- REDOCLY_EXP_MCP_CODE_MODE_ENABLED: z.ZodEffects<z.ZodOptional<z.ZodEnum<["true", "false"]>>, boolean | undefined, "false" | "true" | undefined>;
60
- REDOCLY_EXP_MCP_GATEWAY_SERVER_ENABLED: z.ZodEffects<z.ZodOptional<z.ZodEnum<["true", "false"]>>, boolean | undefined, "false" | "true" | undefined>;
59
+ REDOCLY_DISABLE_API_FUNCTION_SANDBOX: z.ZodEffects<z.ZodOptional<z.ZodEnum<["true", "false"]>>, boolean | undefined, "false" | "true" | undefined>;
61
60
  } & {
62
61
  SEARCH_DEV_REINIT: z.ZodOptional<z.ZodString>;
63
62
  SEARCH_DEV_DEBUG: z.ZodEffects<z.ZodDefault<z.ZodEnum<["true", "false"]>>, boolean, "false" | "true" | undefined>;
@@ -134,8 +133,7 @@ export declare const envSchema: z.ZodEffects<z.ZodObject<{
134
133
  REDOCLY_EXP_LLMSTXT_AGENT_FEEDBACK_ENABLED?: boolean | undefined;
135
134
  REDOCLY_EXP_LLMSTXT_AGENT_FEEDBACK_URL?: string | undefined;
136
135
  REDOCLY_EXP_LLMSTXT_AGENT_ENDPOINT?: string | undefined;
137
- REDOCLY_EXP_MCP_CODE_MODE_ENABLED?: boolean | undefined;
138
- REDOCLY_EXP_MCP_GATEWAY_SERVER_ENABLED?: boolean | undefined;
136
+ REDOCLY_DISABLE_API_FUNCTION_SANDBOX?: boolean | undefined;
139
137
  SEARCH_DEV_REINIT?: string | undefined;
140
138
  SEARCH_DEV_DEBUG: boolean;
141
139
  TYPESENSE_API_URL?: string | undefined;
@@ -205,8 +203,7 @@ export declare const envSchema: z.ZodEffects<z.ZodObject<{
205
203
  REDOCLY_EXP_LLMSTXT_AGENT_FEEDBACK_ENABLED?: "false" | "true" | undefined;
206
204
  REDOCLY_EXP_LLMSTXT_AGENT_FEEDBACK_URL?: string | undefined;
207
205
  REDOCLY_EXP_LLMSTXT_AGENT_ENDPOINT?: string | undefined;
208
- REDOCLY_EXP_MCP_CODE_MODE_ENABLED?: "false" | "true" | undefined;
209
- REDOCLY_EXP_MCP_GATEWAY_SERVER_ENABLED?: "false" | "true" | undefined;
206
+ REDOCLY_DISABLE_API_FUNCTION_SANDBOX?: "false" | "true" | undefined;
210
207
  SEARCH_DEV_REINIT?: string | undefined;
211
208
  SEARCH_DEV_DEBUG?: "false" | "true" | undefined;
212
209
  TYPESENSE_API_URL?: string | undefined;
@@ -276,8 +273,7 @@ export declare const envSchema: z.ZodEffects<z.ZodObject<{
276
273
  REDOCLY_EXP_LLMSTXT_AGENT_FEEDBACK_ENABLED?: boolean | undefined;
277
274
  REDOCLY_EXP_LLMSTXT_AGENT_FEEDBACK_URL?: string | undefined;
278
275
  REDOCLY_EXP_LLMSTXT_AGENT_ENDPOINT?: string | undefined;
279
- REDOCLY_EXP_MCP_CODE_MODE_ENABLED?: boolean | undefined;
280
- REDOCLY_EXP_MCP_GATEWAY_SERVER_ENABLED?: boolean | undefined;
276
+ REDOCLY_DISABLE_API_FUNCTION_SANDBOX?: boolean | undefined;
281
277
  SEARCH_DEV_REINIT?: string | undefined;
282
278
  SEARCH_DEV_DEBUG: boolean;
283
279
  TYPESENSE_API_URL?: string | undefined;
@@ -347,8 +343,7 @@ export declare const envSchema: z.ZodEffects<z.ZodObject<{
347
343
  REDOCLY_EXP_LLMSTXT_AGENT_FEEDBACK_ENABLED?: "false" | "true" | undefined;
348
344
  REDOCLY_EXP_LLMSTXT_AGENT_FEEDBACK_URL?: string | undefined;
349
345
  REDOCLY_EXP_LLMSTXT_AGENT_ENDPOINT?: string | undefined;
350
- REDOCLY_EXP_MCP_CODE_MODE_ENABLED?: "false" | "true" | undefined;
351
- REDOCLY_EXP_MCP_GATEWAY_SERVER_ENABLED?: "false" | "true" | undefined;
346
+ REDOCLY_DISABLE_API_FUNCTION_SANDBOX?: "false" | "true" | undefined;
352
347
  SEARCH_DEV_REINIT?: string | undefined;
353
348
  SEARCH_DEV_DEBUG?: "false" | "true" | undefined;
354
349
  TYPESENSE_API_URL?: string | undefined;
@@ -15,10 +15,8 @@ export declare const featureFlagsSchema: z.ZodObject<{
15
15
  REDOCLY_EXP_LLMSTXT_AGENT_FEEDBACK_URL: z.ZodOptional<z.ZodString>;
16
16
  /** (Optional) API endpoint for the agent feedback endpoint;**/
17
17
  REDOCLY_EXP_LLMSTXT_AGENT_ENDPOINT: z.ZodOptional<z.ZodString>;
18
- /** Experimental: serve the Docs MCP server in codemode (a single `execute` tool). */
19
- REDOCLY_EXP_MCP_CODE_MODE_ENABLED: z.ZodEffects<z.ZodOptional<z.ZodEnum<["true", "false"]>>, boolean | undefined, "false" | "true" | undefined>;
20
- /** Experimental: give the docs MCP `execute` sandbox a guarded `fetch` that can call gateway-eligible APIs. */
21
- REDOCLY_EXP_MCP_GATEWAY_SERVER_ENABLED: z.ZodEffects<z.ZodOptional<z.ZodEnum<["true", "false"]>>, boolean | undefined, "false" | "true" | undefined>;
18
+ /** Escape hatch: disables the Node Permission Model sandbox on API function and MCP tool worker processes (hosted Reunite environments only). */
19
+ REDOCLY_DISABLE_API_FUNCTION_SANDBOX: z.ZodEffects<z.ZodOptional<z.ZodEnum<["true", "false"]>>, boolean | undefined, "false" | "true" | undefined>;
22
20
  }, "strip", z.ZodTypeAny, {
23
21
  NEW_CATALOG_ENABLED?: boolean | undefined;
24
22
  NEW_SCORECARDS_ENABLED?: boolean | undefined;
@@ -29,8 +27,7 @@ export declare const featureFlagsSchema: z.ZodObject<{
29
27
  REDOCLY_EXP_LLMSTXT_AGENT_FEEDBACK_ENABLED?: boolean | undefined;
30
28
  REDOCLY_EXP_LLMSTXT_AGENT_FEEDBACK_URL?: string | undefined;
31
29
  REDOCLY_EXP_LLMSTXT_AGENT_ENDPOINT?: string | undefined;
32
- REDOCLY_EXP_MCP_CODE_MODE_ENABLED?: boolean | undefined;
33
- REDOCLY_EXP_MCP_GATEWAY_SERVER_ENABLED?: boolean | undefined;
30
+ REDOCLY_DISABLE_API_FUNCTION_SANDBOX?: boolean | undefined;
34
31
  }, {
35
32
  NEW_CATALOG_ENABLED?: "false" | "true" | undefined;
36
33
  NEW_SCORECARDS_ENABLED?: "false" | "true" | undefined;
@@ -41,7 +38,6 @@ export declare const featureFlagsSchema: z.ZodObject<{
41
38
  REDOCLY_EXP_LLMSTXT_AGENT_FEEDBACK_ENABLED?: "false" | "true" | undefined;
42
39
  REDOCLY_EXP_LLMSTXT_AGENT_FEEDBACK_URL?: string | undefined;
43
40
  REDOCLY_EXP_LLMSTXT_AGENT_ENDPOINT?: string | undefined;
44
- REDOCLY_EXP_MCP_CODE_MODE_ENABLED?: "false" | "true" | undefined;
45
- REDOCLY_EXP_MCP_GATEWAY_SERVER_ENABLED?: "false" | "true" | undefined;
41
+ REDOCLY_DISABLE_API_FUNCTION_SANDBOX?: "false" | "true" | undefined;
46
42
  }>;
47
43
  //# sourceMappingURL=feature-flags.d.ts.map
@@ -1 +1 @@
1
- import{z as _}from"zod";import{envBooleanStringOptional as E}from"../../utils/envs/env-boolean-string.js";const D=_.object({NEW_CATALOG_ENABLED:E(),NEW_SCORECARDS_ENABLED:E(),ENABLE_COMMENTS:_.string().optional(),REDOCLY_EXP_DISABLE_MD_VALIDATION:E(),ENABLE_SOURCE_MAPS:E(),PLAN_GATES:_.string().optional(),REDOCLY_EXP_LLMSTXT_AGENT_FEEDBACK_ENABLED:E(),REDOCLY_EXP_LLMSTXT_AGENT_FEEDBACK_URL:_.string().optional(),REDOCLY_EXP_LLMSTXT_AGENT_ENDPOINT:_.string().optional(),REDOCLY_EXP_MCP_CODE_MODE_ENABLED:E(),REDOCLY_EXP_MCP_GATEWAY_SERVER_ENABLED:E()});export{D as featureFlagsSchema};
1
+ import{z as _}from"zod";import{envBooleanStringOptional as E}from"../../utils/envs/env-boolean-string.js";const o=_.object({NEW_CATALOG_ENABLED:E(),NEW_SCORECARDS_ENABLED:E(),ENABLE_COMMENTS:_.string().optional(),REDOCLY_EXP_DISABLE_MD_VALIDATION:E(),ENABLE_SOURCE_MAPS:E(),PLAN_GATES:_.string().optional(),REDOCLY_EXP_LLMSTXT_AGENT_FEEDBACK_ENABLED:E(),REDOCLY_EXP_LLMSTXT_AGENT_FEEDBACK_URL:_.string().optional(),REDOCLY_EXP_LLMSTXT_AGENT_ENDPOINT:_.string().optional(),REDOCLY_DISABLE_API_FUNCTION_SANDBOX:E()});export{o as featureFlagsSchema};
@@ -11,6 +11,8 @@ export declare const DEFAULT_THEME_PLUGIN_PATH = "@redocly/theme/plugin.js";
11
11
  export declare const STYLES_FILE = "styles.css";
12
12
  export declare const DEFAULT_PROJECT_PLUGIN_PATHS: string[];
13
13
  export declare const JWT_SECRET_KEY: string;
14
+ export declare const MCP_ACCESS_TOKEN_TTL_SEC: number;
15
+ export declare const MCP_REFRESH_SESSION_LIFETIME_SEC: number;
14
16
  export declare const I18N_DIR_NAME = "@i18n";
15
17
  export declare const L10N_DIR_NAME = "@l10n";
16
18
  export declare const RESERVED_DIR_NAMES: string[];
@@ -1 +1 @@
1
- import{ServerRoutes as A}from"../../constants/api.js";import{USER_THEME_ALIAS as I}from"../../constants/common.js";import{envConfig as _}from"../config/env-config.js";const N="runtime",x="/assets",U="/_spec",l="/_bundle",M="static",a="redocly:::linkOriginal",P="@",i="default",m=new RegExp("((?!@i18n\\/|@l10n\\/)\\/?@.*?(?=\\/))","g"),F="@redocly/theme/plugin.js",H="styles.css",u=["@theme/plugin.js","@theme/plugin.cjs","@theme/plugin.mjs"],d=_.JWT_SECRET_KEY||"test_secret_key",c="@i18n",p="@l10n",G=[I,c,p],Y="https://redocly.com/auth/aud",K="catalog.json",B="scorecard.json",g="page-count.json",h="sitemap.xml",J="llms.txt",o=_.PROJECT_ID,R=_.PROJECT_SLUG,e=_.ORGANIZATION_ID,n=_.ORG_SLUG,E=_.BH_API_URL,s=E&&n&&R?`${E}/orgs/${n}/projects/${R}`:void 0,t=E&&e&&o?`${E}/orgs/${e}/projects/${o}`:void 0,S=E?`${E}/entitlements/.well-known/jwks`:"https://app.cloud.redocly.com/api/entitlements/.well-known/jwks",W=_.ENTITLEMENTS_JWKS_CDN_URL||S,f=s?`${s}/feedback`:"",j=t?`${t}/ai-agentic-conversations`:"",k=t?`${t}/semantic-search`:"",w="no-store",V=365*24*60*60,X="X-Redocly-Cache-Control",$="no-cache",v="public, s-maxage=86400, max-age=10, must-revalidate",y=_.AUTH_URL,b="Developer Documentation",T=_.REDOCLY_SSR_RENDER_MODE==="worker"?"worker":"main",Z=T==="main"?0:_.REDOCLY_SSR_WORKERS_MIN!=null?Number(_.REDOCLY_SSR_WORKERS_MIN):2,q=T==="main"?1:_.REDOCLY_SSR_WORKERS_MAX!=null?Number(_.REDOCLY_SSR_WORKERS_MAX):5,z="-----BEGIN CERTIFICATE-----",Q="-----END CERTIFICATE-----",__=!_.isDevelopMode&&_.REDOCLY_TELEMETRY!=="off"||_.REDOCLY_TELEMETRY==="on",E_="http://localhost:4318/v1/traces",t_=[A.HEALTH],r=_.SERVER_EDITOR_APP_URL||"http://127.0.0.1:3000",o_=_.REDOCLY_CORS_ORIGINS?_.REDOCLY_CORS_ORIGINS.split(",").map(L=>L.trim()).filter(Boolean).concat(r):[r],R_="markdown/partials",e_="markdown/partials-deps";export{o_ as ALLOWED_CORS_ORIGINS,Y as ALTERNATIVE_AUD_CLAIM_NAME,j as ASK_AI_API_URL,y as AUTH_URL,z as BEGIN_CERTIFICATE_DELIMITER,s as BH_API_PROJECTS_URL,t as BH_API_PROJECTS_URL_V2,w as CACHE_CONTROL_NO_STORE_HEADER_VALUE,$ as CACHE_CONTROL_PUBLIC_HTML,K as CATALOG_OUTPUT_FILE_NAME,V as DEFAULT_IMMUTABLE_CACHE_MAX_AGE,u as DEFAULT_PROJECT_PLUGIN_PATHS,F as DEFAULT_THEME_PLUGIN_PATH,b as DEFAULT_TITLE,i as DEFAULT_VERSION_NAME,U as DEPRECATED_PUBLIC_API_DEFINITIONS_FOLDER,Q as END_CERTIFICATE_DELIMITER,W as ENTITLEMENTS_JWKS_URL,f as FEEDBACK_API_URL,c as I18N_DIR_NAME,d as JWT_SECRET_KEY,p as L10N_DIR_NAME,a as LINK_ORIGINAL_ATTR_NAME,J as LLMS_TXT_FILE_NAME,R_ as MARKDOC_PARTIALS_DATA_KEY,e_ as MARKDOC_PARTIALS_DEPS_KEY,e as ORG_ID,n as ORG_SLUG,t_ as OTEL_EXCLUDED_ROUTES,E_ as OTEL_TRACES_DEV_URL,g as PAGE_COUNT_OUTPUT_FILE_NAME,o as PROJECT_ID,R as PROJECT_SLUG,l as PUBLIC_API_DEFINITIONS_FOLDER,x as PUBLIC_ASSETS_FOLDER,M as PUBLIC_STATIC_FOLDER,G as RESERVED_DIR_NAMES,N as RUNTIME_RESOURCES_DIR,B as SCORECARD_OUTPUT_FILE_NAME,k as SEMANTIC_SEARCH_API_URL,r as SERVER_EDITOR_APP_URL,h as SITEMAP_FILE_NAME,T as SSR_RENDER_MODE,q as SSR_WORKERS_MAX,Z as SSR_WORKERS_MIN,H as STYLES_FILE,__ as TELEMETRY_ENABLED,m as VERSIONED_FOLDER_REGEXP_MATCH,P as VERSION_SEPARATOR,X as X_REDOCLY_CACHE_CONTROL_HEADER,v as X_REDOCLY_CACHE_CONTROL_PUBLIC_HTML};
1
+ import{ServerRoutes as I}from"../../constants/api.js";import{USER_THEME_ALIAS as A}from"../../constants/common.js";import{envConfig as _}from"../config/env-config.js";const N="runtime",x="/assets",U="/_spec",M="/_bundle",P="static",l="redocly:::linkOriginal",a="@",i="default",m=new RegExp("((?!@i18n\\/|@l10n\\/)\\/?@.*?(?=\\/))","g"),F="@redocly/theme/plugin.js",H="styles.css",u=["@theme/plugin.js","@theme/plugin.cjs","@theme/plugin.mjs"],d=_.JWT_SECRET_KEY||"test_secret_key",G=3600,K=1440*60,c="@i18n",S="@l10n",Y=[A,c,S],B="https://redocly.com/auth/aud",g="catalog.json",h="scorecard.json",J="page-count.json",W="sitemap.xml",f="llms.txt",o=_.PROJECT_ID,R=_.PROJECT_SLUG,e=_.ORGANIZATION_ID,n=_.ORG_SLUG,E=_.BH_API_URL,s=E&&n&&R?`${E}/orgs/${n}/projects/${R}`:void 0,t=E&&e&&o?`${E}/orgs/${e}/projects/${o}`:void 0,p=E?`${E}/entitlements/.well-known/jwks`:"https://app.cloud.redocly.com/api/entitlements/.well-known/jwks",j=_.ENTITLEMENTS_JWKS_CDN_URL||p,k=s?`${s}/feedback`:"",w=t?`${t}/ai-agentic-conversations`:"",V=t?`${t}/semantic-search`:"",X="no-store",$=365*24*60*60,v="X-Redocly-Cache-Control",y="no-cache",b="public, s-maxage=86400, max-age=10, must-revalidate",Z=_.AUTH_URL,q="Developer Documentation",T=_.REDOCLY_SSR_RENDER_MODE==="worker"?"worker":"main",z=T==="main"?0:_.REDOCLY_SSR_WORKERS_MIN!=null?Number(_.REDOCLY_SSR_WORKERS_MIN):2,Q=T==="main"?1:_.REDOCLY_SSR_WORKERS_MAX!=null?Number(_.REDOCLY_SSR_WORKERS_MAX):5,__="-----BEGIN CERTIFICATE-----",E_="-----END CERTIFICATE-----",t_=!_.isDevelopMode&&_.REDOCLY_TELEMETRY!=="off"||_.REDOCLY_TELEMETRY==="on",o_="http://localhost:4318/v1/traces",R_=[I.HEALTH],r=_.SERVER_EDITOR_APP_URL||"http://127.0.0.1:3000",e_=_.REDOCLY_CORS_ORIGINS?_.REDOCLY_CORS_ORIGINS.split(",").map(L=>L.trim()).filter(Boolean).concat(r):[r],n_="markdown/partials",s_="markdown/partials-deps";export{e_ as ALLOWED_CORS_ORIGINS,B as ALTERNATIVE_AUD_CLAIM_NAME,w as ASK_AI_API_URL,Z as AUTH_URL,__ as BEGIN_CERTIFICATE_DELIMITER,s as BH_API_PROJECTS_URL,t as BH_API_PROJECTS_URL_V2,X as CACHE_CONTROL_NO_STORE_HEADER_VALUE,y as CACHE_CONTROL_PUBLIC_HTML,g as CATALOG_OUTPUT_FILE_NAME,$ as DEFAULT_IMMUTABLE_CACHE_MAX_AGE,u as DEFAULT_PROJECT_PLUGIN_PATHS,F as DEFAULT_THEME_PLUGIN_PATH,q as DEFAULT_TITLE,i as DEFAULT_VERSION_NAME,U as DEPRECATED_PUBLIC_API_DEFINITIONS_FOLDER,E_ as END_CERTIFICATE_DELIMITER,j as ENTITLEMENTS_JWKS_URL,k as FEEDBACK_API_URL,c as I18N_DIR_NAME,d as JWT_SECRET_KEY,S as L10N_DIR_NAME,l as LINK_ORIGINAL_ATTR_NAME,f as LLMS_TXT_FILE_NAME,n_ as MARKDOC_PARTIALS_DATA_KEY,s_ as MARKDOC_PARTIALS_DEPS_KEY,G as MCP_ACCESS_TOKEN_TTL_SEC,K as MCP_REFRESH_SESSION_LIFETIME_SEC,e as ORG_ID,n as ORG_SLUG,R_ as OTEL_EXCLUDED_ROUTES,o_ as OTEL_TRACES_DEV_URL,J as PAGE_COUNT_OUTPUT_FILE_NAME,o as PROJECT_ID,R as PROJECT_SLUG,M as PUBLIC_API_DEFINITIONS_FOLDER,x as PUBLIC_ASSETS_FOLDER,P as PUBLIC_STATIC_FOLDER,Y as RESERVED_DIR_NAMES,N as RUNTIME_RESOURCES_DIR,h as SCORECARD_OUTPUT_FILE_NAME,V as SEMANTIC_SEARCH_API_URL,r as SERVER_EDITOR_APP_URL,W as SITEMAP_FILE_NAME,T as SSR_RENDER_MODE,Q as SSR_WORKERS_MAX,z as SSR_WORKERS_MIN,H as STYLES_FILE,t_ as TELEMETRY_ENABLED,m as VERSIONED_FOLDER_REGEXP_MATCH,a as VERSION_SEPARATOR,v as X_REDOCLY_CACHE_CONTROL_HEADER,b as X_REDOCLY_CACHE_CONTROL_PUBLIC_HTML};
@@ -1 +1 @@
1
- const e={pro:{rbac:!1,sso:!1,analytics:!0,removeAttribution:!1,advancedSearch:!1,ssoDirect:!1,aiSearchLimit:0,kvStorageLimit:.5,mcp:!1},enterprise:{rbac:!0,sso:!0,analytics:!0,removeAttribution:!0,advancedSearch:!0,ssoDirect:!1,aiSearchLimit:750,kvStorageLimit:5,mcp:!0}},t=["@redocly/portal-plugin-async-api/plugin.js","@redocly/portal-plugin-mock-server/plugin.js","@redocly/portal-plugin-soap-api/plugin.js"],r={"code-walkthrough":"codeWalkthrough",step:"codeWalkthrough",toggle:"codeWalkthrough",input:"codeWalkthrough"};export{r as GATED_MARKDOC_TAGS,t as GATED_PLUGINS,e as PLAN_GATES_DEFAULTS};
1
+ import{GATEWAY_FETCH_LIMIT_DEFAULTS as e}from"../../constants/common.js";const a={pro:{rbac:!1,sso:!1,analytics:!0,removeAttribution:!1,advancedSearch:!1,ssoDirect:!1,aiSearchLimit:0,kvStorageLimit:.5,mcp:!1,mcpGateway:!1,mcpMode:"tools",gatewayFetchRatePerMin:e.ratePerMin,gatewayFetchQuotaPerDay:e.quotaPerDay,gatewayFetchBudgetPerExec:e.budgetPerExec},enterprise:{rbac:!0,sso:!0,analytics:!0,removeAttribution:!0,advancedSearch:!0,ssoDirect:!1,aiSearchLimit:750,kvStorageLimit:5,mcp:!0,mcpGateway:!0,mcpMode:"code",gatewayFetchRatePerMin:e.ratePerMin,gatewayFetchQuotaPerDay:e.quotaPerDay,gatewayFetchBudgetPerExec:e.budgetPerExec}},r=["@redocly/portal-plugin-async-api/plugin.js","@redocly/portal-plugin-mock-server/plugin.js","@redocly/portal-plugin-soap-api/plugin.js"],o={"code-walkthrough":"codeWalkthrough",step:"codeWalkthrough",toggle:"codeWalkthrough",input:"codeWalkthrough"};export{o as GATED_MARKDOC_TAGS,r as GATED_PLUGINS,a as PLAN_GATES_DEFAULTS};
@@ -0,0 +1,3 @@
1
+ export declare const API_DOCS_SHARED_DATA_PREFIX = "api-docs-";
2
+ export declare const MAX_BUNDLING_ERRORS_TO_PRINT = 5;
3
+ //# sourceMappingURL=api-docs.d.ts.map
@@ -0,0 +1 @@
1
+ const _="api-docs-",R=5;export{_ as API_DOCS_SHARED_DATA_PREFIX,R as MAX_BUNDLING_ERRORS_TO_PRINT};
@@ -1,3 +1,3 @@
1
- import*as E from"esbuild";import{logger as c}from"../tools/notifiers/logger.js";import{reporter as f}from"../tools/notifiers/reporter.js";import{envConfig as u}from"../config/env-config.js";import{telemetry as m}from"../../cli/telemetry/index.js";import{stopAllCompilers as C}from"./esbuild.js";import{getCodeframe as M}from"../utils/codeframes/codeframes.js";import{shutdowner as w}from"../tools/shutdowner.js";class S extends Error{errors;warnings;constructor({errors:e=[],warnings:r=[]}){super(),this.errors=e,this.warnings=r}}async function T({errors:n,warnings:e}){const r=await d(n,"error"),s=await d(e,"warning");e.forEach((t,o)=>{c.warn(s[o])}),n.forEach((t,o)=>{const i=t.location?.file||"";i&&i.includes("node_modules/")?(c.error(r[o]),m.sendCliErrorCaughtMessage({message:JSON.stringify(t)})):(c.contentError(r[o]),m.sendCliErrorCaughtMessage({message:JSON.stringify(t),scope:"content"}))}),n.length&&u.isBuildMode&&(await C(),await w.exitWithCode(1))}async function d(n,e){return u.REDOCLY_LOG_FORMAT==="JSON"?n.map(r=>JSON.stringify(r)):await E.formatMessages(n,{kind:e,color:!1,terminalWidth:0})}function x(n,e){if(!e?.lineText)return{line:1,column:1,lines:n.split(`
2
- `),hasMatched:!1};const r=n.split(`
3
- `),{lineText:s}=e,t=i=>{const a=i.indexOf(s);return a===-1?null:a};if(e.line&&e.line<=r.length&&t(r[e.line-1]))return{line:e.line,column:e.column||1,lines:r,hasMatched:!0};const o=r.findIndex(i=>t(i)!==null);if(o>=0){const i=t(r[o]);return{line:o+1,column:(i??0)+1,lines:r,hasMatched:!0}}return{line:1,column:1,lines:r,hasMatched:!1}}function _(n,e,r,s){const{line:t,column:o,lines:i,hasMatched:a}=x(r,s),{frame:h,start:p}=M({start:{line:t,character:o},end:{line:t,character:o+(s?.lineText?.length||0)},lines:i},!0),g=`${n}::${e}::${t}`,l={message:n,sourceFileRelativePath:e,sourceFileLocation:p,codeframe:h,hasMatched:a};return f.getCompilationProblem(g)||f.reportCompilationError({type:"ERROR",severity:"ERROR",...l}),l}export{S as EsbuildError,T as esbuildLogger,_ as reportEsbuildError};
1
+ import*as E from"esbuild";import{logger as c}from"../tools/notifiers/logger.js";import{reporter as u}from"../tools/notifiers/reporter.js";import{envConfig as f}from"../config/env-config.js";import{telemetry as d}from"../../cli/telemetry/index.js";import{stopAllCompilers as y}from"./esbuild.js";import{getCodeframe as C}from"../utils/codeframes/codeframes.js";import{shutdowner as M}from"../tools/shutdowner.js";class S extends Error{errors;warnings;constructor({errors:r=[],warnings:e=[]}){super(),this.errors=r,this.warnings=e}}async function T({errors:n,warnings:r}){const e=await m(n,"error"),s=await m(r,"warning");r.forEach((t,o)=>{c.warn(s[o])}),n.forEach((t,o)=>{const i=t.location?.file||"";i&&i.includes("node_modules/")?(c.error(e[o]),d.sendCliErrorCaughtMessage([{id:"cli",object:"error",uri:"urn:redocly:realm:cli:error:cli",message:JSON.stringify(t)}])):(c.contentError(e[o]),d.sendCliErrorCaughtMessage([{id:"cli",object:"error",uri:"urn:redocly:realm:cli:error:cli",message:JSON.stringify(t),scope:"content"}]))}),n.length&&f.isBuildMode&&(await y(),await M.exitWithCode(1))}async function m(n,r){return f.REDOCLY_LOG_FORMAT==="JSON"?n.map(e=>JSON.stringify(e)):await E.formatMessages(n,{kind:r,color:!1,terminalWidth:0})}function w(n,r){if(!r?.lineText)return{line:1,column:1,lines:n.split(`
2
+ `),hasMatched:!1};const e=n.split(`
3
+ `),{lineText:s}=r,t=i=>{const l=i.indexOf(s);return l===-1?null:l};if(r.line&&r.line<=e.length&&t(e[r.line-1]))return{line:r.line,column:r.column||1,lines:e,hasMatched:!0};const o=e.findIndex(i=>t(i)!==null);if(o>=0){const i=t(e[o]);return{line:o+1,column:(i??0)+1,lines:e,hasMatched:!0}}return{line:1,column:1,lines:e,hasMatched:!1}}function _(n,r,e,s){const{line:t,column:o,lines:i,hasMatched:l}=w(e,s),{frame:h,start:p}=C({start:{line:t,character:o},end:{line:t,character:o+(s?.lineText?.length||0)},lines:i},!0),g=`${n}::${r}::${t}`,a={message:n,sourceFileRelativePath:r,sourceFileLocation:p,codeframe:h,hasMatched:l};return u.getCompilationProblem(g)||u.reportCompilationError({type:"ERROR",severity:"ERROR",...a}),a}export{S as EsbuildError,T as esbuildLogger,_ as reportEsbuildError};
@@ -1,3 +1,3 @@
1
- import{context as m}from"esbuild";import{mkdirSync as b,writeFileSync as M,existsSync as Y}from"node:fs";import*as a from"node:path";import{RUNTIME_RESOURCES_DIR as k,TELEMETRY_ENABLED as V}from"../constants/common.js";import{fromCurrentDir as r}from"../utils/paths.js";import{NodeBrowserPlugin as P}from"./plugins/node-browser.js";import{PortalImport as l}from"./plugins/portal-import.js";import{ThemesResolver as u}from"./plugins/themes-resolver.js";import{AssetsResolver as E}from"./plugins/assets-resolver.js";import{EsbuildErrorCollector as R}from"./plugins/esbuild-compile-resolver.js";import{OpenapiDocsModuleReplacer as _}from"./plugins/openapi-docs-module-replacer/index.js";import{ServerPropsResolver as d}from"./plugins/server-props-resolver.js";import{StyledComponentsSSR as f}from"./plugins/styled-components-ssr.js";import{DependencyResolver as v}from"./plugins/dependency-resolver.js";import{YamlLoader as D}from"./plugins/yaml-loader.js";import{ApiRequestHandlersResolver as T}from"./plugins/api-request-handlers-resolver.js";import{McpToolHandlersResolver as A}from"./plugins/mcp-tool-handlers-resolver.js";import{MiddlewareResolver as S}from"./plugins/middleware-resolver.js";import{OnRebuild as N}from"./plugins/on-rebuild.js";import{getPublicEnvVariables as $}from"../utils/envs/get-public-env-variables.js";import{PORTAL_VERSION as I}from"../version.js";import{AsyncApiPatch as L}from"./plugins/async-api-patch.js";import{telemetryTraceStep as w}from"../../cli/telemetry/helpers/trace-step.js";import{initServerRebuildTrigger as q}from"./generate.js";const O={bundle:!0,format:"esm",chunkNames:"chunks/[name]-[hash]"};function y(e){const o=a.join(e,"tsconfig.json");return Y(o)?o:void 0}const c=new Set;async function ae(){await Promise.all([...c].map(e=>e.dispose())),c.clear()}async function le(e,o,t="production",n){return await w("build.create_client_compiler",async()=>{const p=$(),i={};Object.entries(p).map(([h,j])=>i[`process.env.${h}`]=JSON.stringify(j));const s=[...n?[N(n)]:[],P({path:"path-browserify",fs:"{}",tty:"tty-browserify",os:"os-browserify",http:"stream-http",https:"stream-http",readline:"{}",crypto:"{}",stream:"{}",zlib:"{}","https-proxy-agent":"{}"}),u(e,e.contentDir),E(e,e.contentDir),R(e,e.contentDir),d(e),v(),l(),D(),L(),f(),_()],g=[r(import.meta.url,"../../client/browser-entry.js"),r(import.meta.url,"../../client/user-tags-entry.js")],C=await m({...O,entryPoints:g,outdir:a.join(o,k),sourcemap:t!=="production"&&process.env.ENABLE_SOURCE_MAPS==="true",plugins:s,tsconfig:y(e.contentDir),mainFields:["browser","module","main"],metafile:t!=="production",minify:t==="production",splitting:!0,external:["constants","zlib","stream","https","vm","module","worker_threads","child_process","@swc/core"],inject:[process.env.INSPECT_MODE==="true"?r(import.meta.url,"../../client/inspect-mode-hooks.js"):"",r(import.meta.url,"./web-shim.js")].filter(Boolean),define:{...i,"process.env.NODE_ENV":`"${t}"`,...process.env.REDOCLY_INTERNAL_DEV!==void 0&&{"process.env.REDOCLY_INTERNAL_DEV":`"${process.env.REDOCLY_INTERNAL_DEV}"`},"process.env.SERVER_EDITOR_APP_URL":`"${process.env.SERVER_EDITOR_APP_URL}"`,"process.env.ENABLE_COMMENTS":`"${process.env.ENABLE_COMMENTS}"`,"process.env.REDOCLY_TELEMETRY":V?'"on"':'"off"',"process.env.REDOCLY_PORTAL_VERSION":`"${I}"`,"process.env":`{"NODE_ENV": "${t}"}`,"process.platform":'"browser"',"process.browser":"true","module.hot":"false",global:"{}",...process.env.REDOCLY_PREFIX_PATHS&&{"process.env.REDOCLY_PREFIX_PATHS":`"${process.env.REDOCLY_PREFIX_PATHS}"`},...process.env.INSPECT_MODE==="true"&&{"process.env.INSPECT_MODE":`${process.env.INSPECT_MODE}`},...process.env.MAIN_API_URL&&{"process.env.MAIN_API_URL":`"${process.env.MAIN_API_URL}"`}},logLevel:"silent"});return c.add(C),C})}async function ue(e,o,t="development",n){b(o,{recursive:!0}),q(o),M(a.join(o,"package.json"),JSON.stringify({name:"@redocly/portal/server-cache",type:"module"}));const p=[...n?[N(n)]:[],u(e,e.contentDir),E(e,e.contentDir),R(e,e.contentDir),d(e),T(e),A(e),S(e),v(),l(),D(),L(),f(),_()],i=[{in:r(import.meta.url,"../../client/server-entry.js"),out:"server-entry"},{in:r(import.meta.url,"../../client/user-tags-entry.js"),out:"user-tags-entry"},{in:r(import.meta.url,"../../client/server-props-entry.js"),out:"server-props-entry"},{in:r(import.meta.url,"../../client/api-request-handlers-entry.js"),out:"api-request-handlers-entry"},{in:r(import.meta.url,"../workers/mcp-tool-worker.js"),out:"mcp-tool-worker"},{in:r(import.meta.url,"../../client/middleware-entry.js"),out:"middleware-entry"}],s=await m({...O,entryPoints:i,outdir:o,plugins:p,sourcemap:t!=="production"&&process.env.ENABLE_SOURCE_MAPS==="true",minify:t==="production",tsconfig:y(e.contentDir),mainFields:["module","main"],splitting:!0,external:["react","react-router-dom","@dr.pogodin/react-helmet","@swc/core","pnpapi","canvas"],banner:{js:`import { createRequire as topLevelCreateRequire } from 'module';
2
- const require = topLevelCreateRequire(import.meta.url);`},platform:"node",define:{"process.env.NODE_ENV":`"${t}"`,...process.env.REDOCLY_INTERNAL_DEV!==void 0&&{"process.env.REDOCLY_INTERNAL_DEV":`"${process.env.REDOCLY_INTERNAL_DEV}"`},"module.hot":"false"},logLevel:"silent"});return c.add(s),s}async function Ee(e,o,t="production",n){return await w("build.create_server_compiler",async()=>{const p=[...n?[N(n)]:[],P({"node-fetch":"{}",webpack:"{}",swagger2openapi:"{}"}),u(e,e.contentDir),E(e,e.contentDir),R(e,e.contentDir),d(e),T(e),A(e),S(e),v(),l(),D(),L(),f(),_()],i=[{in:r(import.meta.url,"../node-bundle-entry.js"),out:"index"},{in:r(import.meta.url,"../../client/user-tags-entry.js"),out:"user-tags-entry"},{in:r(import.meta.url,"../workers/api-routes-worker.js"),out:"api-routes-worker"},{in:r(import.meta.url,"../workers/scorecards-worker.js"),out:"scorecards-worker"},{in:r(import.meta.url,"../workers/mcp-tool-worker.js"),out:"mcp-tool-worker"}],s=await m({...O,entryPoints:i,outExtension:{".js":".mjs"},outdir:o,platform:"node",plugins:p,tsconfig:y(e.contentDir),mainFields:["module","main"],metafile:t!=="production",minify:t==="production",splitting:!1,define:{"process.env.NODE_ENV":`"${t}"`,...process.env.REDOCLY_INTERNAL_DEV!==void 0&&{"process.env.REDOCLY_INTERNAL_DEV":`"${process.env.REDOCLY_INTERNAL_DEV}"`},"process.env.REDOCLY_EXECUTION_MODE":'"runtime"',"process.env.REDOCLY_PORTAL_VERSION":`"${I}"`,"module.hot":"false",...process.env.REDOCLY_PREFIX_PATHS&&{"process.env.REDOCLY_PREFIX_PATHS":`"${process.env.REDOCLY_PREFIX_PATHS}"`}},banner:{js:`import { createRequire as topLevelCreateRequire } from 'module';
3
- const require = topLevelCreateRequire(import.meta.url);`},logLevel:"silent"});return c.add(s),s})}export{le as createClientCompiler,Ee as createNodeBundleCompiler,ue as createServerCompiler,ae as stopAllCompilers};
1
+ import{context as m}from"esbuild";import{mkdirSync as M,writeFileSync as Y,existsSync as k}from"node:fs";import*as a from"node:path";import{RUNTIME_RESOURCES_DIR as V,TELEMETRY_ENABLED as $}from"../constants/common.js";import{fromCurrentDir as r}from"../utils/paths.js";import{NodeBrowserPlugin as P}from"./plugins/node-browser.js";import{PortalImport as l}from"./plugins/portal-import.js";import{ThemesResolver as u}from"./plugins/themes-resolver.js";import{AssetsResolver as E}from"./plugins/assets-resolver.js";import{EsbuildErrorCollector as d}from"./plugins/esbuild-compile-resolver.js";import{OpenapiDocsModuleReplacer as R}from"./plugins/openapi-docs-module-replacer/index.js";import{ApiDocsModuleReplacer as _}from"./plugins/api-docs-module-replacer/index.js";import{ServerPropsResolver as f}from"./plugins/server-props-resolver.js";import{StyledComponentsSSR as v}from"./plugins/styled-components-ssr.js";import{DependencyResolver as D}from"./plugins/dependency-resolver.js";import{YamlLoader as N}from"./plugins/yaml-loader.js";import{ApiRequestHandlersResolver as S}from"./plugins/api-request-handlers-resolver.js";import{McpToolHandlersResolver as T}from"./plugins/mcp-tool-handlers-resolver.js";import{MiddlewareResolver as I}from"./plugins/middleware-resolver.js";import{OnRebuild as L}from"./plugins/on-rebuild.js";import{getPublicEnvVariables as q}from"../utils/envs/get-public-env-variables.js";import{PORTAL_VERSION as w}from"../version.js";import{AsyncApiPatch as y}from"./plugins/async-api-patch.js";import{telemetryTraceStep as g}from"../../cli/telemetry/helpers/trace-step.js";import{initServerRebuildTrigger as x}from"./generate.js";const O={bundle:!0,format:"esm",chunkNames:"chunks/[name]-[hash]"};function C(e){const o=a.join(e,"tsconfig.json");return k(o)?o:void 0}const c=new Set;async function ue(){await Promise.all([...c].map(e=>e.dispose())),c.clear()}async function Ee(e,o,t="production",n){return await g("com.redocly.build.createClientCompiler",async()=>{const p=q(),i={};Object.entries(p).map(([j,b])=>i[`process.env.${j}`]=JSON.stringify(b));const s=[...n?[L(n)]:[],P({path:"path-browserify",fs:"{}",tty:"tty-browserify",os:"os-browserify",http:"stream-http",https:"stream-http",readline:"{}",crypto:"{}",stream:"{}",zlib:"{}","https-proxy-agent":"{}"}),u(e,e.contentDir),E(e,e.contentDir),d(e,e.contentDir),f(e),D(),l(),N(),y(),v(),R(),_()],h=[r(import.meta.url,"../../client/browser-entry.js"),r(import.meta.url,"../../client/user-tags-entry.js")],A=await m({...O,entryPoints:h,outdir:a.join(o,V),sourcemap:t!=="production"&&process.env.ENABLE_SOURCE_MAPS==="true",plugins:s,tsconfig:C(e.contentDir),mainFields:["browser","module","main"],metafile:t!=="production",minify:t==="production",splitting:!0,external:["constants","zlib","stream","https","vm","module","worker_threads","child_process","@swc/core"],inject:[process.env.INSPECT_MODE==="true"?r(import.meta.url,"../../client/inspect-mode-hooks.js"):"",r(import.meta.url,"./web-shim.js")].filter(Boolean),define:{...i,"process.env.NODE_ENV":`"${t}"`,...process.env.REDOCLY_INTERNAL_DEV!==void 0&&{"process.env.REDOCLY_INTERNAL_DEV":`"${process.env.REDOCLY_INTERNAL_DEV}"`},"process.env.SERVER_EDITOR_APP_URL":`"${process.env.SERVER_EDITOR_APP_URL}"`,"process.env.ENABLE_COMMENTS":`"${process.env.ENABLE_COMMENTS}"`,"process.env.REDOCLY_TELEMETRY":$?'"on"':'"off"',"process.env.REDOCLY_PORTAL_VERSION":`"${w}"`,"process.env":`{"NODE_ENV": "${t}"}`,"process.platform":'"browser"',"process.browser":"true","module.hot":"false",global:"{}",...process.env.REDOCLY_PREFIX_PATHS&&{"process.env.REDOCLY_PREFIX_PATHS":`"${process.env.REDOCLY_PREFIX_PATHS}"`},...process.env.INSPECT_MODE==="true"&&{"process.env.INSPECT_MODE":`${process.env.INSPECT_MODE}`},...process.env.MAIN_API_URL&&{"process.env.MAIN_API_URL":`"${process.env.MAIN_API_URL}"`}},logLevel:"silent"});return c.add(A),A})}async function de(e,o,t="development",n){M(o,{recursive:!0}),x(o),Y(a.join(o,"package.json"),JSON.stringify({name:"@redocly/portal/server-cache",type:"module"}));const p=[...n?[L(n)]:[],u(e,e.contentDir),E(e,e.contentDir),d(e,e.contentDir),f(e),S(e),T(e),I(e),D(),l(),N(),y(),v(),R(),_()],i=[{in:r(import.meta.url,"../../client/server-entry.js"),out:"server-entry"},{in:r(import.meta.url,"../../client/user-tags-entry.js"),out:"user-tags-entry"},{in:r(import.meta.url,"../../client/server-props-entry.js"),out:"server-props-entry"},{in:r(import.meta.url,"../../client/api-request-handlers-entry.js"),out:"api-request-handlers-entry"},{in:r(import.meta.url,"../../client/api-docs-builder-entry.js"),out:"api-docs-builder-entry"},{in:r(import.meta.url,"../workers/mcp-tool-worker.js"),out:"mcp-tool-worker"},{in:r(import.meta.url,"../../client/middleware-entry.js"),out:"middleware-entry"}],s=await m({...O,entryPoints:i,outdir:o,plugins:p,sourcemap:t!=="production"&&process.env.ENABLE_SOURCE_MAPS==="true",minify:t==="production",tsconfig:C(e.contentDir),mainFields:["module","main"],splitting:!0,external:["react","react-router-dom","@dr.pogodin/react-helmet","@swc/core","pnpapi","canvas"],banner:{js:`import { createRequire as topLevelCreateRequire } from 'module';
2
+ const require = topLevelCreateRequire(import.meta.url);`},platform:"node",define:{"process.env.NODE_ENV":`"${t}"`,...process.env.REDOCLY_INTERNAL_DEV!==void 0&&{"process.env.REDOCLY_INTERNAL_DEV":`"${process.env.REDOCLY_INTERNAL_DEV}"`},"module.hot":"false"},logLevel:"silent"});return c.add(s),s}async function Re(e,o,t="production",n){return await g("com.redocly.build.createServerCompiler",async()=>{const p=[...n?[L(n)]:[],P({"node-fetch":"{}",webpack:"{}",swagger2openapi:"{}"}),u(e,e.contentDir),E(e,e.contentDir),d(e,e.contentDir),f(e),S(e),T(e),I(e),D(),l(),N(),y(),v(),R(),_()],i=[{in:r(import.meta.url,"../node-bundle-entry.js"),out:"index"},{in:r(import.meta.url,"../../client/user-tags-entry.js"),out:"user-tags-entry"},{in:r(import.meta.url,"../../client/api-docs-builder-entry.js"),out:"api-docs-builder-entry"},{in:r(import.meta.url,"../workers/api-routes-worker.js"),out:"api-routes-worker"},{in:r(import.meta.url,"../workers/scorecards-worker.js"),out:"scorecards-worker"},{in:r(import.meta.url,"../workers/mcp-tool-worker.js"),out:"mcp-tool-worker"}],s=await m({...O,entryPoints:i,outExtension:{".js":".mjs"},outdir:o,platform:"node",plugins:p,tsconfig:C(e.contentDir),mainFields:["module","main"],metafile:t!=="production",minify:t==="production",splitting:!1,define:{"process.env.NODE_ENV":`"${t}"`,...process.env.REDOCLY_INTERNAL_DEV!==void 0&&{"process.env.REDOCLY_INTERNAL_DEV":`"${process.env.REDOCLY_INTERNAL_DEV}"`},"process.env.REDOCLY_EXECUTION_MODE":'"runtime"',"process.env.REDOCLY_PORTAL_VERSION":`"${w}"`,"module.hot":"false",...process.env.REDOCLY_PREFIX_PATHS&&{"process.env.REDOCLY_PREFIX_PATHS":`"${process.env.REDOCLY_PREFIX_PATHS}"`}},banner:{js:`import { createRequire as topLevelCreateRequire } from 'module';
3
+ const require = topLevelCreateRequire(import.meta.url);`},logLevel:"silent"});return c.add(s),s})}export{Ee as createClientCompiler,Re as createNodeBundleCompiler,de as createServerCompiler,ue as stopAllCompilers};
@@ -0,0 +1,9 @@
1
+ export declare function useLicense(): {
2
+ licenseInfo: {
3
+ allowed: boolean;
4
+ valid: boolean;
5
+ };
6
+ isValid: boolean;
7
+ isPending: boolean;
8
+ };
9
+ //# sourceMappingURL=empty-check.d.ts.map
@@ -0,0 +1 @@
1
+ function e(){return{licenseInfo:{allowed:!0,valid:!0},isValid:!0,isPending:!1}}export{e as useLicense};
@@ -0,0 +1,2 @@
1
+ export declare function LicenseOverlay(): null;
2
+ //# sourceMappingURL=empty-overlay.d.ts.map
@@ -0,0 +1 @@
1
+ function e(){return null}export{e as LicenseOverlay};
@@ -0,0 +1,6 @@
1
+ import type { PluginBuild } from 'esbuild';
2
+ export declare const ApiDocsModuleReplacer: () => {
3
+ name: string;
4
+ setup: (build: PluginBuild) => void;
5
+ };
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ import{createRequire as o}from"module";const s=o(import.meta.url),t=()=>({name:"esbuild-redocly-api-docs-module-replacer",setup:r=>{r.onResolve({filter:/\/hooks\/useLicense\.js$/},async e=>{if(e.resolveDir.endsWith("/api-docs/lib"))return{path:s.resolve("./empty-check.js")}}),r.onResolve({filter:/\/components\/LicenseOverlay\.js$/},async e=>{if(e.resolveDir.endsWith("/api-docs/lib"))return{path:s.resolve("./empty-overlay.js")}})}});export{t as ApiDocsModuleReplacer};
@@ -1,5 +1,5 @@
1
1
  import type { DatabaseCacheDto } from '../../../providers/database/databases/sqlite-db/schemas/cache-table.js';
2
- export declare function createCacheDbRecord({ key, value, namespace, ttlInSeconds }: {
2
+ export declare function createCacheDbRecord({ key, value, namespace, ttlInSeconds, }: {
3
3
  key: string;
4
4
  value: Record<string, unknown> | unknown[];
5
5
  namespace: string;
@@ -1,6 +1,6 @@
1
1
  import type { FileType, FileHashStatus } from '../types.js';
2
2
  import type { DatabaseFileHashDto } from '../../../providers/database/databases/sqlite-db/schemas/file-hashes-table.js';
3
- export declare function createFileHashDbRecord({ id, fileType, filePath, hash, status }: {
3
+ export declare function createFileHashDbRecord({ id, fileType, filePath, hash, status, }: {
4
4
  id?: string;
5
5
  fileType: FileType;
6
6
  filePath: string;
@@ -1,7 +1,7 @@
1
1
  import type { KvValue, KvKey } from '@redocly/config';
2
2
  import type { DatabaseKvDbInsertSchema } from '../../../providers/database/databases/sqlite-db/schemas/kv-table.js';
3
3
  export declare const KV_KEY_SEPARATOR = "\u0001";
4
- export declare function createKvDbRecord({ key, value, ttlInSeconds }: {
4
+ export declare function createKvDbRecord({ key, value, ttlInSeconds, }: {
5
5
  key: KvKey;
6
6
  value: KvValue;
7
7
  ttlInSeconds?: number;
@@ -0,0 +1,4 @@
1
+ import type { GetServerPropsFn } from '../../types';
2
+ declare const getServerProps: GetServerPropsFn;
3
+ export default getServerProps;
4
+ //# sourceMappingURL=get-server-props.d.ts.map
@@ -0,0 +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};
@@ -0,0 +1,2 @@
1
+ export declare function getTemplatePath(relativePath: string): string;
2
+ //# sourceMappingURL=get-template-path.d.ts.map
@@ -0,0 +1 @@
1
+ import{fromCurrentDir as t}from"../../utils/paths.js";function m(r){return t(import.meta.url,r)}export{m as getTemplatePath};
@@ -0,0 +1,8 @@
1
+ import type { buildItems } from '@redocly/api-docs/src/adapters/build.js';
2
+ import type { simplifyAstStructure } from '@redocly/api-docs/src/adapters/utils/simplifyAstStructure.js';
3
+ export type ApiDocsBuilder = {
4
+ buildItems: typeof buildItems;
5
+ simplifyAstStructure: typeof simplifyAstStructure;
6
+ };
7
+ export declare function importApiDocsBuilder(serverOutDir: string): Promise<ApiDocsBuilder>;
8
+ //# sourceMappingURL=import-api-docs-builder.d.ts.map
@@ -0,0 +1 @@
1
+ import{existsSync as m,statSync as a}from"node:fs";import{pathToFileURL as c}from"node:url";import{buildItems as p,simplifyAstStructure as n}from"@redocly/api-docs";import{slash as u}from"../../../utils/path/slash.js";import{logger as l}from"../../tools/notifiers/logger.js";async function h(i){const s=u(i),r=`${s}/api-docs-builder-entry.mjs`,e=`${s}/api-docs-builder-entry.js`,o=m(r)?r:e;try{const t=a(o).mtimeMs;return await import(c(o).toString()+"?"+t)}catch(t){return l.verbose(`api-docs: using statically imported builder (remapped bundle not found in '${i}'): ${t?.message}`),{buildItems:p,simplifyAstStructure:n}}}export{h as importApiDocsBuilder};
@@ -0,0 +1,19 @@
1
+ import type { LifecyclePluginInstance } from '../../types';
2
+ export declare function apiDocsPlugin(): Promise<LifecyclePluginInstance>;
3
+ /**
4
+ * Item links are absolute (adapter contract: basePath baked in at build time),
5
+ * but routes register relative to fsPath. Map the link to route-slug fields so
6
+ * core route creation runs slugify(fsPath) and keeps content-slugs transforms
7
+ * (versioned `@x.y` folders, custom slugs) applied — an explicit `slug` bypasses
8
+ * them and 404s the public URLs:
9
+ * - under basePath → `{ slugSuffix }` (also feeds getPageVersions, so the
10
+ * version picker retains the current page)
11
+ * - the base route (or an empty suffix) → `{}` — register at fsPath alone
12
+ * - outside basePath → `{ slug }` (explicit fallback)
13
+ */
14
+ export declare function toRouteSlugFields(link: string, basePath: string): {
15
+ slugSuffix: string;
16
+ } | {
17
+ slug: string;
18
+ } | Record<string, never>;
19
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ import{REDOCLY_ROUTE_RBAC as w,REDOCLY_TEAMS_RBAC as v}from"@redocly/config";import{mcpTagSchemas as Z,schemaDefinitionTag as ee,markdocParser as N}from"@redocly/api-docs";import{withPathPrefix as B}from"@redocly/theme/core/utils";import{API_DOCS_TEMPLATE_ID as U,GRAPHQL_SPEC_SLUG as te,PUBLIC_RBAC_SCOPE_ITEM as q}from"../../../constants/common.js";import{DEPRECATED_PUBLIC_API_DEFINITIONS_FOLDER as oe,PUBLIC_API_DEFINITIONS_FOLDER as re}from"../../constants/common.js";import{API_DOCS_SHARED_DATA_PREFIX as C}from"../../constants/plugins/api-docs.js";import{fromCurrentDir as ae}from"../../utils/paths.js";import{normalizeRouteSlug as se}from"../../../utils/path/normalize-route-slug.js";import{createSlugify as ne}from"../create-slugify.js";import{apiDocLoader as ie,apiDocsLoader as ce}from"./loader.js";import{getTemplatePath as V}from"./get-template-path.js";import{storeDefinitionBundles as pe}from"./store-definition-bundles.js";import{telemetryTraceStep as ue}from"../../../cli/telemetry/helpers/trace-step.js";import{searchResolver as de}from"./search/search-resolver.js";import{getAiDocumentsStore as le}from"./search/get-ai-search-documents.js";import{getApiConfigByPath as me}from"../get-api-config.js";import{getRouteSlugsForPath as fe}from"../utils.js";import{collectItemRoutes as ge}from"./utils/collect-item-routes.js";import{buildRoutesMapping as he}from"./utils/build-routes-mapping.js";import{buildItemPositions as De}from"./utils/build-item-positions.js";import{resolveApiDocTitle as Se}from"./utils/resolve-api-doc-title.js";import{resolveConfigRbac as Pe}from"./utils/resolve-config-rbac.js";import{relativePathToBaseSlug as ye}from"./utils/relative-path-to-base-slug.js";import{normalizeApiVersion as Ie}from"./utils/normalize-api-version.js";import{importApiDocsBuilder as j}from"./import-api-docs-builder.js";import{envConfig as x}from"../../config/env-config.js";import{logger as Ae}from"../../tools/notifiers/logger.js";const T="openapi-spec-download",ve={asyncapi:"AsyncAPI Docs",graphql:"GraphQL Docs",openapi:"OpenAPI Docs"};async function rt(){let t=[],r=new Map;const s=new WeakMap;let i=new Set,m={};function k(o,g,A){const P=s.get(o)??new Map;s.set(o,P);const h=g??"";return P.get(h)===A?!1:(P.set(h,A),!0)}return{id:"api-docs",requiredEntitlements:["openapi","asyncapi","graphql"],loaders:{"api-doc":ie,"api-docs":ce},processContent:async(o,g)=>{await ue("com.redocly.build.plugin.apiDocs",async()=>{o.createRequestHandler(T,ae(import.meta.url,"./spec-download.api.js")),o.addApiRoute({slug:re+"/*",requestHandlerId:T,httpMethod:"all",[v]:q,getStaticData:async()=>({props:{}})}),o.addApiRoute({slug:oe+"/*",requestHandlerId:T,httpMethod:"all",[v]:q,getStaticData:async()=>({props:{}})}),o.addApiRoute({slug:te+"/*",requestHandlerId:T,httpMethod:"all",[v]:q,getStaticData:async()=>({props:{}})});const A=o.createTemplate(U,V("../../../client/templates/api-docs/template.js")),P=o.registerServerPropsGetter(U,V("./get-server-props.js")),h=await g.getConfig();r=new Map,m={};const y=await o.loadApiDocuments(g);pe(y,o.outdir);const E=!!h.plugins?.some(e=>typeof e=="string"&&e.startsWith("@redocly/portal-plugin-async-api/"));E&&y.some(e=>e.type==="asyncapi")&&Ae.warn("The plugin '@redocly/portal-plugin-async-api' is deprecated. Please remove it from your config to use built-in AsyncAPI docs.");const c=E?y.filter(e=>e.type!=="asyncapi"):y;t=c.map(({markdocChunks:e,relativePath:I,isVirtual:u,customOutputRelativeFile:a,realRelativePath:f})=>({chunks:e??[],relativePath:I,realRelativePath:f,isVirtual:a!=null||u}));const{buildItems:n}=await j(o.serverOutDir),D=(await g.cache.load("content-slugs","content-slugs")).data,S=ne(D),O=e=>se(S(e));for(const e of c){const I=e.customOutputRelativeFile||e.relativePath,u=O(I);_e(e,u);const{items:a,store:f}=await n({type:e.type,document:e.document,options:e.options,basePath:u,markdownParser:N}),R=`${C}${e.relativePath}`,M=x.isDevelopMode?e.relativePath:void 0,p=we(e.document),b=p?.["x-metadata"],_=e.isVirtual?void 0:b?.apiId,$={document:e,basePath:u,sourcePath:M,apiId:_};await o.createSharedData(R,W($,a,f));const z=Pe(e.config),F=!!e.options.excludeFromSearch,K=e.type==="openapi",d=ge(a,z).map(l=>{const J=l.metadata?.seo,H={...Ee(l.link,u),fsPath:I,templateId:A,sharedData:[{key:"apiDocsStore",id:R}],serverPropsGetterIds:[P],excludeFromSearch:F,getStaticData:be(l.label,J),[v]:l[v]};return K?{...H,...l.httpVerb?{httpVerb:l.httpVerb,metadata:{subType:"openapi-operation"}}:{}}:H});if(!d.length)continue;const G=Se(p,e.type,a),Y=Ie(p?.version),L={type:e.type,title:G,version:Y,description:typeof p?.description=="string"?p.description:void 0,summary:typeof p?.summary=="string"?p.summary:void 0,...p?.["x-metadata"]&&typeof p["x-metadata"]=="object"?p["x-metadata"]:{}};d[0]={...d[0],metadata:L,hasClientRoutes:!0,getSidebar:()=>Q(a),getNavText:()=>G??ve[e.type]??"API Docs",getSearchDocuments:de(a,L,o.getSearchFacets,o.setSearchFacets,F,f,e.document),getAiDocumentsStore:le({items:a,metadata:L,store:f,document:e.document,specType:e.type,excludeFromSearch:F,basePath:u,getSearchFacets:o.getSearchFacets,markdocTags:{...Z,schemaDefinition:ee}})};const X=d[0];d[0]=d[d.length-1],d[d.length-1]=X;for(const l of d)o.addRoute(l);if(_){const l=me(e.config?.apis,e.realRelativePath);m[_]={[v]:l.rbac,[w]:{fsPath:I}}}r.set(R,$)}})},afterRoutesCreated:async(o,g)=>{const{buildItems:A,simplifyAstStructure:P}=await j(o.serverOutDir),h=new Set,y=new Set;for(const{chunks:c,relativePath:n,isVirtual:D}of t){const S=`${C}${n}`,O=fe(o.getAllRoutes(),n);for(const{node:e,markdown:I,pointer:u,key:a,relativePath:f}of c){const{ast:R,compoundHash:M}=await o.parseMarkdoc({input:{content:I,relativePath:f,isVirtual:D},resource:u,context:g,deps:{sharedDataIds:[`${C}${f}`],routeSlugs:O}});if(h.add(u),!(a==="graphql-docs"?e?.description?.value!==void 0:!!(a&&e[a]))||!k(e,a,M))continue;y.add(S);const b=P(R);if(a==="graphql-docs"){e.description&&(e.description.value=b);const _=`${C}${f}`;Re(r.get(_),b)}else a&&(e[a]=b)}}const E=i.difference(h);for(const c of E)g.cache.delete(c);i=h,Object.entries(m).forEach(([c,n])=>{const D=n[w]?.fsPath;if(!D)return;const S=o.getRouteByFsPath(D)?.baseSlug;m[c]={...n,[w]:{...n[w],slug:S},slug:S}}),o.setGlobalData({apiProducts:m});for(const[c,n]of r){if(!y.has(c))continue;const{items:D,store:S}=await A({type:n.document.type,document:n.document.document,options:n.document.options,basePath:n.basePath,markdownParser:N});await o.createSharedData(c,W(n,D,S))}}}}function W({document:t,basePath:r,sourcePath:s,apiId:i},m,k){return{items:m,store:k,options:t.options,baseSlug:r,routesMapping:x.isDevelopMode?he(m,r):{},graphqlPositions:x.isDevelopMode&&t.type==="graphql"?De(m,r):void 0,sourcePath:s,apiId:i}}function Re(t,r){t?.document.type!=="graphql"||!t.document.options||(t.document.options.info={...t.document.options.info||{},description:r})}function be(t,r){return async function(s){return{props:{settings:{baseUrlPath:B(s.baseSlug)},disableAutoScroll:!0,seo:{title:t,...r}}}}}function _e(t,r){const s=t.options?.mockServer,i=B(`/_mock${ye(t.relativePath)}`);s?.url===i&&(t.options={...t.options,mockServer:{...s,url:B(`/_mock${r}`)}})}function Ee(t,r){if(t===r)return{};const s=r==="/"?"/":`${r}/`;if(t.startsWith(s)){const i=t.slice(s.length);return i?{slugSuffix:i}:{}}return{slug:t}}function we(t){if(t&&typeof t=="object"&&"info"in t)return t.info}function Q(t){return t.map(({content:r,items:s,...i})=>({...i,...s&&{items:Q(s)}}))}export{rt as apiDocsPlugin,Ee as toRouteSlugFields};
@@ -0,0 +1,35 @@
1
+ import type { OpenAPIDefinition, AsyncApiDefinition, ApiSpecType } from '@redocly/api-docs';
2
+ import type { Node as MarkdocNode } from '@markdoc/markdoc';
3
+ import type { ASTNode, DocumentNode } from 'graphql';
4
+ import type { LifecycleContext } from '../../types';
5
+ import type { RawApiDocsOptions } from '@redocly/api-docs';
6
+ import type { RedoclyConfig } from '@redocly/config';
7
+ export type MarkdocChunk = {
8
+ node: Record<string, unknown> & {
9
+ description?: {
10
+ value?: string | ASTNode[] | ASTNode | MarkdocNode | MarkdocNode[];
11
+ };
12
+ };
13
+ pointer: string;
14
+ markdown: string;
15
+ relativePath: string;
16
+ key: string | null;
17
+ };
18
+ export type BundledApiDefinition = {
19
+ type: ApiSpecType;
20
+ document: OpenAPIDefinition | AsyncApiDefinition | DocumentNode;
21
+ config: Partial<RedoclyConfig & NonNullable<RedoclyConfig['apis']>[string]>;
22
+ relativePath: string;
23
+ realRelativePath: string;
24
+ customOutputRelativeFile?: string;
25
+ markdocChunks?: MarkdocChunk[];
26
+ isVirtual?: boolean;
27
+ hash: string;
28
+ options: RawApiDocsOptions;
29
+ };
30
+ type PartialDefinition = Omit<BundledApiDefinition, 'hash'>;
31
+ export declare function apiDocLoader(relativePath: string, context: LifecycleContext): Promise<PartialDefinition[]>;
32
+ export declare function apiDocsLoader(_: string, context: LifecycleContext): Promise<BundledApiDefinition[]>;
33
+ export declare function collectGraphqlMarkdocChunks(schemaAst: DocumentNode): MarkdocChunk[];
34
+ export {};
35
+ //# sourceMappingURL=loader.d.ts.map
@@ -0,0 +1,3 @@
1
+ import*as p from"node:path";import{parse as B,visit as x}from"graphql";import{Source as N,bundle as _,createConfig as D,getTotals as M,resolvePlugins as V}from"@redocly/openapi-core";import{convertSwagger2OpenAPI as j}from"@redocly/api-docs/lib/adapters/utils/convertSwagger2OpenAPI.js";import{CONFIG_FILE_NAME as k}from"../../../constants/common.js";import{MAX_BUNDLING_ERRORS_TO_PRINT as S}from"../../constants/plugins/api-docs.js";import{unique as F}from"../../../utils/array/unique.js";import{deepMerge as G}from"../../../utils/object/deep-merge.js";import{pluralize as C}from"../../../utils/string/pluralize.js";import{replaceEnvVariablesDeep as L}from"../../utils/envs/replace-env-variables-deep.js";import{logger as q}from"../../tools/notifiers/logger.js";import{reporter as h}from"../../tools/notifiers/reporter.js";import{ExternalResolver as b}from"../../fs/utils/external-ref-resolver.js";import{injectDecoratorIntoConfig as z,isPlainNonMarkdownText as H}from"./utils/decorators.js";import{getAllApiConfigsByPath as J,getApiConfigByPath as Q}from"../get-api-config.js";import{formatBundleError as U}from"./utils/format-bundle-error.js";import{createOptions as O}from"./options.js";const X=/(\.ya?ml|\.json|\.gql|\.graphql)$/,P=/(\.gql|\.graphql)$/;async function kn(n,r){if(p.posix.basename(n)===k)return[];if(P.test(n)){if(await r.isPathIgnored(n))return[];const u=await tn(n,r);return u?[u]:[]}let o;try{o=(await r.cache.load(n,"yaml")).data}catch{return[]}const t=Y(n,o);if(!t||!o||t==="graphql")return t===null&&q.verbose(`${n} file is not a recognized API spec. Skipping`),[];const{fs:c,getConfig:a,isPathIgnored:s}=r,e=t==="openapi"?await a("."):null,i=c.getFileInfo(n),f=await a(p.posix.dirname(n)),l=J(f?.apis,n,f.configPath),w=await s(n),d=[];for(const u of l){if(!u.output&&w)continue;const y=f.configPath?p.posix.dirname(f.configPath):".",g=u.output?p.posix.join(y,u.output):n;if(!await s(g)){i&&u.output&&!c.exists(g)&&c.addVirtualFile(g,i);try{const m=await on({relativePath:n,outputRelativePath:g,loaded:o,specType:t,rootConfig:e,config:f,apiConfig:u,fileRecord:i,fs:c});m&&d.push(m)}catch(m){await h.panicOnBuildContentError(m)}}}return d}async function qn(n,r){const{fs:o,cache:t}=r,c=[];for(const a of o.scan(X)){let s;try{s=await t.load(a.relativePath,"api-doc")}catch{continue}if(s.data?.length)for(const e of s.data)c.push({...e,isVirtual:a.isVirtual||e.isVirtual,hash:s.compoundHash})}return c}function K(n){const r=[];return x(n,{leave:o=>{!("description"in o)||!o.description?.value||!("name"in o)||H(o.description.value)||r.push({node:o,pointer:`#/types/${o?.name?.value}`,markdown:o.description.value,relativePath:"",key:"graphql-docs"})}}),r}async function W(n){try{const r=B(n);return{document:r,markdocChunks:K(r)}}catch(r){await h.panicOnBuildContentError(r);return}}function Y(n,r){return P.test(n)?"graphql":r?.openapi||r?.swagger?"openapi":r?.asyncapi?"asyncapi":null}function $(n,r){return r?{...n,info:{...n.info,"x-metadata":{...n.info?.["x-metadata"],...r}}}:n}async function Z(n,r,o){if(n==="openapi"){const t=r.swagger!==void 0?await j(r):r;return $(t,o)}return $(r,o)}async function nn(n){const{outputRelativePath:r,rootConfig:o,config:t,apiConfig:c,fs:a}=n,s=G({decorators:o?.decorators},t,{rbac:void 0},c),{resolvedObj:e}=L(s);if(e.decorators&&typeof e.decorators!="object"){await h.panicOnBuildContentError(`'decorators' must be an object at redocly.yaml, got '${typeof e.decorators}'`);return}if(e.plugins&&!Array.isArray(e.plugins)){await h.panicOnBuildContentError(`'plugins' must be an array at redocly.yaml, got '${typeof e.plugins}'`);return}const i=p.resolve(a.cwd,t.realConfigPath||k),f=new b(a),l=await D(z(e,r,a.cwd),{configPath:i,externalRefResolver:f});return o?.plugins&&o.configPath!==t.configPath&&(l.plugins=F([...l.plugins||[],...await V(o.plugins,a.cwd)],w=>w.id)),{coreConfig:l,mergedConfig:e}}async function rn(n,r,o){const t=M(n),c=[t.errors&&`${t.errors} ${C(t.errors,"error","errors")}`,t.warnings&&`${t.warnings} ${C(t.warnings,"warning","warnings")}`,t.ignored&&`${t.ignored} ignored`].filter(Boolean).join(", ");if(t.errors){const a=n.filter(i=>i.severity==="error");let s=`${c} while bundling ${r} definition:
2
+ `;const e=Math.min(a.length,S);for(let i=0;i<e;i++){const f=await U(a[i],o);s+=`${f}
3
+ `}if(a.length>e){const i=a.length-e;s+=`... and ${i} more ${C(i,"error","errors")}`}return await h.panicOnBuild(s),!0}return t.warnings&&q.warn(`${c} while bundling %rp definition`,r),!1}async function on(n){const{relativePath:r,outputRelativePath:o,loaded:t,specType:c,rootConfig:a,config:s,apiConfig:e,fileRecord:i,fs:f}=n,l=await nn(n);if(!l)return;const{coreConfig:w,mergedConfig:d}=l,u=p.resolve(f.cwd,r),y=new b(f),g={config:w,base:p.dirname(u),doc:{source:new N(u,await f.read(r)),parsed:JSON.parse(JSON.stringify(t))},externalRefResolver:y},{bundle:{parsed:R},problems:m,visitorsData:v}=await _(g);if(await rn(m,o,f.cwd))return;const I=v["markdown/markdown"]?.markdocChunks??[],A=d.metadata,E=await Z(c,R,A),T=O(c,E,{rootConfig:a,config:s,apiConfig:e,mergedConfig:d,relativePath:o});return{type:c,document:E,config:d,relativePath:o,realRelativePath:i?.realRelativePath||o,customOutputRelativeFile:e.output?o:void 0,markdocChunks:I,isVirtual:i?.isVirtual,options:T}}async function tn(n,r){const{fs:o,getConfig:t}=r,c=await o.read(n),a=o.getFileInfo(n),{document:s,markdocChunks:e}=await W(c)||{};if(!s){await h.panicOnBuildContentError(new Error("Failed to build GraphQL document"));return}const i=await t(),f=Q(i.apis,n);i.graphql?.info?.description&&e?.unshift({node:{description:{value:i.graphql?.info?.description}},pointer:"#/info",markdown:i.graphql?.info?.description,relativePath:"",key:"graphql-docs"});const l=O("graphql",s,{rootConfig:null,config:i,apiConfig:f??{},mergedConfig:{graphql:{...i.graphql??{},...f?.graphql??{}}},relativePath:n});return{type:"graphql",document:s,config:{...i,...f},relativePath:n,realRelativePath:a?.realRelativePath||n,markdocChunks:e,isVirtual:a?.isVirtual,options:l}}export{kn as apiDocLoader,qn as apiDocsLoader,K as collectGraphqlMarkdocChunks};
@@ -0,0 +1,14 @@
1
+ import type { ApiSpecType, OpenAPIDefinition, AsyncApiDefinition, DownloadUrl, RawApiDocsOptions } from '@redocly/api-docs';
2
+ import type { DocumentNode } from 'graphql';
3
+ export type DocumentBuildContext = {
4
+ rootConfig: Record<string, unknown> | null;
5
+ config: Record<string, unknown>;
6
+ apiConfig: Record<string, unknown>;
7
+ mergedConfig: Record<string, unknown>;
8
+ relativePath: string;
9
+ };
10
+ type CreateOptionsDocument = OpenAPIDefinition | AsyncApiDefinition | DocumentNode;
11
+ export declare function buildDownloadUrls(relativePath: string, specType: ApiSpecType): DownloadUrl[];
12
+ export declare function createOptions(specType: ApiSpecType, document: CreateOptionsDocument, context: DocumentBuildContext): RawApiDocsOptions;
13
+ export {};
14
+ //# sourceMappingURL=options.d.ts.map
@@ -0,0 +1 @@
1
+ import*as w from"node:path";import{findFirstBinding as M,markdocParser as P}from"@redocly/api-docs";import{combineUrls as i}from"@redocly/theme/core/openapi";import{withPathPrefix as p}from"@redocly/theme/core/utils";import{GRAPHQL_SPEC_SLUG as _}from"../../../constants/common.js";import{PUBLIC_API_DEFINITIONS_FOLDER as f}from"../../constants/common.js";import{deepMerge as B}from"../../../utils/object/deep-merge.js";import{normalizeFeedbackOptions as E}from"./utils/normalize-feedback-options.js";import{replaceFileExtension as u}from"./utils/replace-file-extension.js";import{relativePathToBaseSlug as I}from"./utils/relative-path-to-base-slug.js";const U={tags:{},nodes:{},components:{}};function A(o,r){if(!(o?.off!==!0))return o;const t=I(r);return{url:p(`/_mock${t}`),position:"first",description:"Mock server",...o}}function L(o,r){return(r==="graphql"?[i(_,`${u(o,w.posix.extname(o))}?download`)]:[i(f,`${u(o,".json")}?download`),i(f,`${u(o,".yaml")}?download`)]).map(t=>({url:p(t)}))}function H(o,r,m){const{rootConfig:t,config:c,apiConfig:d,mergedConfig:e,relativePath:s}=m,a=B(t?.[o]||{},c[o]||{},d[o]||d.theme?.[o]||{}),b=r["x-feedback"]||a.feedback||c.feedback,S=!!e[o]?.excludeFromSearch||!!e.theme?.[o]?.excludeFromSearch||!!t?.[o]?.excludeFromSearch||!!t?.theme?.[o]?.excludeFromSearch,x=e.rbac||d.rbac,g=E(b),h=c.metadata,O={...g&&{feedback:g},hideSidebar:!0,mockServer:A(e?.mockServer||t?.mockServer,s),disableRouter:!0,downloadUrls:a.downloadUrls||L(s,o),excludeFromSearch:S,rbac:x,markdownParser:P};let l;if(o==="graphql"){const n=a;l={title:n.info?.title,...h,...n.metadata??{}}}else{const n=r.info,F=n?.["x-metadata"];l={title:n?.title,description:n?.description,...o==="openapi"&&{summary:n?.summary},...h,...F}}o==="openapi"&&a.showSchemaCatalogLinks&&(r["x-schema-catalog-link"]=i(f,s));const C=a.markdocOptions??U,k={...a,...O,specType:o,markdocOptions:C,metadata:l};return o==="asyncapi"&&(k.protocol=M(r)??void 0),k}export{L as buildDownloadUrls,H as createOptions};
@@ -0,0 +1,20 @@
1
+ import type { SearchFacet } from '@redocly/theme/core/types';
2
+ import type { ApiItem, ApiDocsMetadata, ApiStore, ApiSpecType, OpenAPIDefinition, AsyncApiDefinition } from '@redocly/api-docs';
3
+ import type { AfterRoutesCreatedActions, AfterRoutesCreatedLifecycleContext, PageRouteDetails } from '../../../types';
4
+ import type { MarkdocTagSchema } from '@redocly/theme/markdoc/tags/types';
5
+ import type { AiDocumentsStore } from '../../../plugins/search/types.js';
6
+ type ApiDocument = OpenAPIDefinition | AsyncApiDefinition | Record<string, unknown>;
7
+ type AiDocumentsStoreParams = {
8
+ items: ApiItem[];
9
+ metadata: ApiDocsMetadata;
10
+ store?: ApiStore;
11
+ document?: ApiDocument;
12
+ specType: ApiSpecType;
13
+ excludeFromSearch?: boolean;
14
+ basePath: string;
15
+ getSearchFacets: () => Map<string, SearchFacet>;
16
+ markdocTags?: Record<string, MarkdocTagSchema>;
17
+ };
18
+ export declare function getAiDocumentsStore({ items, metadata, store, document, specType, excludeFromSearch, basePath, getSearchFacets, markdocTags, }: AiDocumentsStoreParams): (route: PageRouteDetails, _staticData: unknown, context: AfterRoutesCreatedLifecycleContext, actions: AfterRoutesCreatedActions) => Promise<AiDocumentsStore | undefined>;
19
+ export {};
20
+ //# sourceMappingURL=get-ai-search-documents.d.ts.map
@@ -0,0 +1,105 @@
1
+ import P from"node:path";import{REDOCLY_TEAMS_RBAC as O}from"@redocly/config";import{nodeTypes as h,contentType as g}from"@redocly/api-docs";import{normalizeApiVersion as sn}from"../utils/normalize-api-version.js";import{replaceFileExtension as v}from"../utils/replace-file-extension.js";import{isResourcePubliclyAccessible as cn,canDownloadApiDefinition as ln,extractTeamsFromScopeItems as fn}from"../../../utils/rbac.js";import{getLlmsTxtMdPathBySlug as J}from"../../../utils/llmstxt/get-llms-txt-md-path-by-slug.js";import{PUBLIC_API_DEFINITIONS_FOLDER as Q}from"../../../constants/common.js";import{DEFAULT_ANONYMOUS_VISITOR_TEAM as an,GRAPHQL_SPEC_SLUG as pn}from"../../../../constants/common.js";import{toMarkdown as N}from"../../markdown/search/to-markdown.js";import{createRenderTagFn as un}from"../../markdown/search/create-render-tag-fn.js";import{getLocaleFromRelativePath as dn}from"../../../fs/utils/get-locale-from-relative-path.js";import{getBuildTranslateContext as hn}from"../../../utils/l10n/get-build-translate-context.js";import{llmsTxtLink as w}from"../../search/llmstxt/index.js";import{formatDocumentMetadata as mn}from"../../search/utils.js";import{extractDocumentSearchFacets as $n}from"./search-facets.js";import{ApiDocsSearchIndexer as gn}from"./search-indexer.js";function A(t,r){return r==="openapi"&&"openapi"in t}function Y(t,r){return r==="asyncapi"&&"asyncapi"in t}function Jn({items:t,metadata:r,store:c,document:n,specType:o,excludeFromSearch:i,basePath:e,getSearchFacets:l,markdocTags:s}){return async(f,a,u,d)=>{if(i)return;const m={...d.markdocOptions?.tags,...s},{locale:X,translate:Z}=await hn(f.slug,d.getGlobalData?.().l10n),C=un(m,X,Z),x=await u.getConfig(),R=dn(f.fsPath),M=new gn(e,c?.schemaStore,n),j=y=>{for(const p of y)M.addItem(p),p.items?.length&&j(p.items)};j(t);const nn=M.getResult(),V=new Map;for(const y of nn)V.set(y.url,y);const L=typeof r.title=="string"?r.title:void 0,_=sn(r.version),E=$n(f.metadata||{},L,_,l),I=[],S=[],F=yn(r,n,o),q=bn(o,r,f.fsPath,x),tn=Sn(t,x,C),en=F+q+`
2
+ `+tn,on=F+q;S.push({title:L||"API Overview",description:typeof r.description=="string"?r.description:void 0,content:en,slug:e,fsPath:f.fsPath,includeInLLMsTxt:!0}),I.push({title:L||"API Overview",content:on,url:e,fsPath:f.fsPath,locale:R,product:f.product?.name,facets:E});const rn=n&&A(n,o)?n.security:void 0,D=y=>{for(const p of y){if(!p.content||!p.link){p.items?.length&&D(p.items);continue}const k=V.get(p.link),G=p.content.contentType,z=p[O],W=z?fn(z):void 0,B=W?.length?W:void 0;if(G===g.ITEM){const $=Pn(p,n,o)??H(p,k,o,_,rn,C);if($){const b=p.label||"";S.push({title:b,description:void 0,content:$,slug:p.link,fsPath:f.fsPath,includeInLLMsTxt:!1}),I.push({title:b,content:$,url:p.link,fsPath:f.fsPath,locale:R,product:f.product?.name,facets:E,rbacTeams:B})}}else if(G===g.GROUP){const $=On(p,x,o,C);if($){const b=p.label||"";S.push({title:b,description:k?Ln(k.text):void 0,content:$.llmstxt,slug:p.link,fsPath:f.fsPath,includeInLLMsTxt:!1}),I.push({title:b,content:$.aiSearch,url:p.link,fsPath:f.fsPath,locale:R,product:f.product?.name,facets:E,rbacTeams:B})}}p.items?.length&&D(p.items)}};return D(t),{async getLLMsTxts(){return S},async getSearchDocuments(){return I}}}}function yn(t,r,c){const n=typeof t.title=="string"?t.title:"",o=typeof t.description=="string"?t.description:"",i=typeof t.summary=="string"?t.summary:"",e=typeof t.version=="string"?t.version:"";let l=n?`# ${n}
3
+
4
+ `:"";if(l+=o?`${o}
5
+
6
+ `:"",l+=i?`${i}
7
+
8
+ `:"",l+=e?`Version: ${e}
9
+ `:"",r){if(A(r,c)){const{info:s}=r;s?.license?.name&&(l+=`License: ${s.license.name}
10
+ `);const f=s["x-metadata"],a=mn(f);a&&(l+=`
11
+ Metadata:
12
+ ${a}
13
+ `)}else if(Y(r,c)){const{info:s}=r;s?.license?.name&&(l+=`License: ${s.license.name}
14
+ `)}}return l+=`
15
+ `,l+=An(r,c),l+=In(r,c),l}function bn(t,r,c,n){if(!c)return"";let o,i,e;if(t==="openapi")o=P.posix.join(Q,v(c,".yaml")),i="## Download OpenAPI description",e="OpenAPI definition";else if(t==="asyncapi")o=P.posix.join(Q,v(c,".yaml")),i="## Download AsyncAPI description",e="AsyncAPI definition";else if(t==="graphql"){const f=P.posix.extname(c)||".graphql";o=P.posix.join(pn,v(c,f)),i="## Download GraphQL schema",e="GraphQL schema"}else return"";if(!ln(o,n.access?.rbac??{},n.access?.requiresLogin??!1,{isAuthenticated:!1,teams:[an]}))return"";const s=typeof r.title=="string"&&r.title||e;return`${i}
16
+
17
+ - ${w({title:s,description:void 0,slug:o})}`}function An(t,r){if(!t)return"";if(A(t,r)){const{servers:c}=t;if(!c?.length)return"";let n=`## Servers
18
+
19
+ `;for(const o of c)if(o.description&&(n+=`${o.description}
20
+ `),n+=`\`\`\`
21
+ ${o.url}
22
+ \`\`\`
23
+
24
+ `,o.variables){n+=`Variables:
25
+ `;for(const[i,e]of Object.entries(o.variables))n+=`- \`${i}\`${e.description?`: ${e.description}`:""}
26
+ `,e.default&&(n+=` Default: ${JSON.stringify(e.default)}
27
+ `),e.enum&&(n+=` Enum: ${e.enum.map(l=>JSON.stringify(l)).join(", ")}
28
+ `);n+=`
29
+ `}return n}if(Y(t,r)){const{servers:c}=t;if(!c||!Object.keys(c).length)return"";let n=`## Servers
30
+
31
+ `;for(const[o,i]of Object.entries(c))n+=`### ${o}
32
+
33
+ `,i.description&&(n+=`${i.description}
34
+ `),i.host&&(n+=`Host: ${i.host}
35
+ `),i.protocol&&(n+=`Protocol: ${i.protocol}
36
+ `),i.protocolVersion&&(n+=`Protocol Version: ${i.protocolVersion}
37
+ `),i.pathname&&(n+=`Pathname: ${i.pathname}
38
+ `),n+=`
39
+ `;return n}return""}function In(t,r){if(!t||!A(t,r))return"";const c=t.components?.securitySchemes;if(!c)return"";let n=`## Security
40
+
41
+ `;for(const[o,i]of Object.entries(c)){if(!i||"$ref"in i)continue;const e=i;n+=`### ${o}
42
+
43
+ `,e.description&&(n+=`${e.description}
44
+
45
+ `),e.type&&(n+=`Type: ${e.type}
46
+ `),e.in&&(n+=`In: ${e.in}
47
+ `),e.name&&(n+=`Name: ${e.name}
48
+ `),e.scheme&&(n+=`Scheme: ${e.scheme}
49
+ `),e.bearerFormat&&(n+=`Bearer Format: ${e.bearerFormat}
50
+ `),e.openIdConnectUrl&&(n+=`OpenID Connect URL: ${e.openIdConnectUrl}
51
+ `);const l=e.flows,s=l?.implicit||l?.password||l?.clientCredentials||l?.authorizationCode;if(s&&("authorizationUrl"in s&&s.authorizationUrl&&(n+=`Authorization URL: ${s.authorizationUrl}
52
+ `),"tokenUrl"in s&&s.tokenUrl&&(n+=`Token URL: ${s.tokenUrl}
53
+ `),s.scopes)){n+=`Scopes:
54
+ `;for(const[f,a]of Object.entries(s.scopes))n+=`- \`${f}\`: ${a}
55
+ `}n+=`
56
+ `}return n}function Sn(t,r,c){let n="";const o=(i,e)=>{for(const l of i)if(l.link){if(l.content?.contentType===g.GROUP)n+=`${e} ${l.label||""}
57
+
58
+ `,l.items?.length&&o(l.items,e+"#");else if(l.content?.contentType===g.ITEM){if(!U(l,r))continue;const s=l,f=s.httpVerb,a=s.httpPath,u=f&&a?`${f.toUpperCase()} ${a}`:l.label||"",d=l.content?T(l.content.children,c):void 0;n+=` - ${w({title:u,description:d?d.slice(0,200):void 0,slug:J(l.link)})}`}}};return o(t,"##"),n}function H(t,r,c,n,o,i){if(!t.content)return;const e=t,l=t.label||"",s=T(t.content.children,i),f=t.content.meta?.deprecated;let a=`# ${l}${f?" (deprecated)":""}
59
+
60
+ `;if(s&&(a+=`${s}
61
+
62
+ `),c==="openapi"||c==="asyncapi"){const u=e.httpVerb,d=e.httpPath;u&&d?a+=`Endpoint: ${u.toUpperCase()} ${d}
63
+ `:u&&(a+=`Method: ${u.toUpperCase()}
64
+ `),n&&(a+=`Version: ${n}
65
+ `);const m=Tn(t.content.children,o);m&&(a+=`Security: ${m}
66
+ `)}return r?.parameters?.length&&c!=="graphql"&&(a+=`
67
+ `+Cn(r.parameters)+`
68
+ `),c==="graphql"&&(a+=xn(t.content.children)),a}function Pn(t,r,c){if(t.httpVerb!=="tool"||!r||!A(r,c))return;const n=t.content?.meta?.name,o=n?r["x-mcp"]?.tools?.find(e=>e.name===n):void 0;if(!o)return;let i=`# ${t.label||o.name}
69
+
70
+ `;return typeof o.description=="string"&&o.description&&(i+=`${o.description}
71
+
72
+ `),i+=`## Input schema:
73
+
74
+ `,i+=`\`\`\`json
75
+ ${JSON.stringify(o.inputSchema,null,2)}
76
+ \`\`\`
77
+
78
+ `,o.outputSchema&&(i+=`## Output schema:
79
+
80
+ `,i+=`\`\`\`json
81
+ ${JSON.stringify(o.outputSchema,null,2)}
82
+ \`\`\`
83
+
84
+ `),i}function On(t,r,c,n){if(!t.content)return;const o=t.label||"",i=T(t.content.children,n);let e=`# ${o}
85
+
86
+ `;if(i&&(e+=`${i}
87
+
88
+ `),c==="graphql"){let s="";const f=a=>{for(const u of a??[])if(!(!u.content||!U(u,r)))if(u.content.contentType===g.ITEM){const d=H(u,void 0,c,void 0,void 0,n);d&&(s+=`${d}
89
+
90
+ ---
91
+
92
+ `)}else u.content.contentType===g.GROUP&&f(u.items)};return f(t.items),{llmstxt:e+s,aiSearch:e}}let l="";if(t.items?.length)for(const s of t.items){if(!s.link||!s.content||s.content.contentType!==g.ITEM||!U(s,r))continue;const f=s,a=f.httpVerb,u=f.httpPath,d=a&&u?`${a.toUpperCase()} ${u}`:s.label||"",m=s.content?T(s.content.children,n):void 0;l+=` - ${w({title:d,description:m?m.slice(0,200):void 0,slug:J(s.link)})}`}return{llmstxt:e+l,aiSearch:e}}function Tn(t,r){const c=[],n=o=>{for(const i of o)if(i.nodeType===h.SECURITY){const e=i;for(const l of e.requirements)for(const s of l.schemes)s[O]||s.name&&!c.includes(s.name)&&c.push(s.name)}else(i.nodeType===h.CONTAINER||i.nodeType===h.OVERVIEW_SECTION_WRAPPER)&&n(i.children)};if(n(t),c.length)return c.join(", ");if(r?.length){const o=r.flatMap(i=>Object.keys(i));if(o.length)return[...new Set(o)].join(", ")}}function Cn(t){const r={};for(const n of t){const o=`${n.place}${n.mediaType?` (${n.mediaType})`:""}`;r[o]||(r[o]=[]),r[o].push(n)}return Object.entries(r).map(([n,o])=>{const i=o.map(e=>{const l=[...e.path||[],e.name],s=Array.isArray(e.description)?e.description.join(" "):e.description;let f=` - \`${l.join(".")}\` (${e.type}${e.required?", required":""})
93
+ `;return s&&(f+=` ${s.trim()}
94
+ `),e.enum?f+=` Enum: ${e.enum.map(a=>JSON.stringify(a)).join(", ")}
95
+ `:e.example&&(f+=` Example: ${e.example}
96
+ `),f});return`## ${K(n)}:
97
+
98
+ ${i.join(`
99
+ `)}`}).join(`
100
+ `)}function xn(t){let r="";const c=n=>{for(const o of n)if(o.nodeType===h.ITEM){const i=o;i.graphqlSchema&&(r+=Rn(i.graphqlSchema,i.variant))}else(o.nodeType===h.CONTAINER||o.nodeType===h.OVERVIEW_SECTION_WRAPPER)&&c(o.children)};return c(t),r}function Rn(t,r){let n=`
101
+ ## ${K(r==="return-type"?"Return type":r==="graphql-args"||r==="arguments"?"Arguments":r==="graphql-fields"?"Fields":r)}:
102
+
103
+ `;const o=i=>{const e=i.description?N(Array.isArray(i.description)?i.description:[i.description]).trim():"";return` - \`${i.name}\` (${i.type})${e?`: ${e}`:""}
104
+ `};if(!Array.isArray(t)){const i=t.description?N(Array.isArray(t.description)?t.description:[t.description]).trim():"";n+=` Type: ${t.type}`,i&&(n+=` - ${i}`),n+=`
105
+ `;for(const e of t.fields??[])n+=o(e);return n}if(!t.length)return"";for(const i of t)n+=o(i);return n}function T(t,r){const c=[],n=i=>{for(const e of i)if(e.nodeType===h.MARKDOC){const l=e.content,s=Array.isArray(l)?l:[l],f=N(s,{renderTag:r}).trim();f&&c.push(f)}else(e.nodeType===h.CONTAINER||e.nodeType===h.OVERVIEW_SECTION_WRAPPER)&&n(e.children)};return n(t),c.join(" ").trim()||void 0}function Ln(t){return(Array.isArray(t)?t.join(" "):t)||void 0}function K(t){return t.charAt(0).toUpperCase()+t.slice(1)}function U(t,r){return r.access?.requiresLogin?!0:cn({slug:t.link||"",[O]:t[O]},r)}export{Jn as getAiDocumentsStore};
@@ -0,0 +1,10 @@
1
+ import type { SearchFacet } from '@redocly/theme/core/types';
2
+ export declare function setDocumentSearchFacets(documentSearchFacets: {
3
+ [key: string]: string | Set<string>;
4
+ }, getSearchFacets: () => Map<string, SearchFacet>, setSearchFacets: (searchFacets: Map<string, SearchFacet>) => void): void;
5
+ export declare function extractDocumentSearchFacets(metadata: {
6
+ [key: string]: unknown;
7
+ }, apiTitle: string | undefined, apiVersion: string | undefined, getSearchFacets: () => Map<string, SearchFacet>): {
8
+ [key: string]: string;
9
+ };
10
+ //# sourceMappingURL=search-facets.d.ts.map
@@ -0,0 +1 @@
1
+ import{SEARCH_GROUP_FACET_FIELD as a}from"../../../../constants/common.js";import{SEARCH_GROUP_NAME_API as u}from"../../../constants/plugins/search.js";function F(e,n,s){const f=n();for(const[t,o]of Object.entries(e)){const c=f.get(t);if(c){const r=new Set(c.values??[]);if(o instanceof Set)for(const i of o)r.add(i);else r.add(o);c.values=Array.from(r)}}s(f)}function h(e,n,s,f){const t={[a]:u,...n&&{apiTitle:n},...s&&{apiVersion:s}};if(!e)return t;const o=f();for(const[c,r]of Object.entries(e))o.has(c)&&(t[c]=String(r));return e.title&&(t.apiTitle=String(e.title)),t}export{h as extractDocumentSearchFacets,F as setDocumentSearchFacets};
@@ -0,0 +1,9 @@
1
+ import type { ApiItem, SchemaEntry } from '@redocly/api-docs';
2
+ import type { SearchDocument } from '../../../types';
3
+ export declare class ApiDocsSearchIndexer {
4
+ #private;
5
+ constructor(basePath: string, schemaStore?: Record<string, SchemaEntry>, document?: Record<string, unknown>);
6
+ addItem(item: ApiItem): void;
7
+ getResult(): SearchDocument[];
8
+ }
9
+ //# sourceMappingURL=search-indexer.d.ts.map