@redocly/realm 0.135.0-next.4 → 0.135.0-next.6

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 (112) hide show
  1. package/CHANGELOG.md +70 -0
  2. package/dist/cli/build/analytics/collect-analytics.js +1 -1
  3. package/dist/cli/build/analytics/collectors/get-nested-configs-usage.js +1 -1
  4. package/dist/cli/telemetry/get-portal-config-stats.js +1 -1
  5. package/dist/cli/telemetry/index.js +1 -1
  6. package/dist/client/app/Sidebar/RequestAccessButton.js +2 -2
  7. package/dist/client/app/Sidebar/Sidebar.js +3 -3
  8. package/dist/client/app/Sidebar/helpers/filter-out-versioned-items.d.ts +5 -2
  9. package/dist/client/app/Sidebar/helpers/filter-out-versioned-items.js +1 -1
  10. package/dist/client/app/hooks/catalog/useCatalogClassic.js +1 -1
  11. package/dist/client/app/hooks/catalog/useCatalogFilter.js +1 -1
  12. package/dist/client/app/hooks/useRouteChangeTracker.js +1 -1
  13. package/dist/client/app/markdoc/custom-components/openapi/openapi-code-sample.js +1 -1
  14. package/dist/client/app/markdoc/custom-components/openapi/openapi-response-sample.js +1 -1
  15. package/dist/client/app/markdoc/custom-components/openapi/replay-openapi.js +1 -1
  16. package/dist/client/app/pages/DevLogin/DevLogin.js +1 -1
  17. package/dist/client/app/search/useSearch.js +1 -1
  18. package/dist/client/providers/theme/ThemeDataProvider.js +1 -1
  19. package/dist/markdoc/helpers/get-operation/get-operation.js +1 -0
  20. package/dist/markdoc/helpers/get-operation/index.d.ts +4 -0
  21. package/dist/markdoc/helpers/get-operation/index.js +1 -0
  22. package/dist/markdoc/helpers/get-resolved-sample-code-block.d.ts +3 -0
  23. package/dist/markdoc/helpers/get-resolved-sample-code-block.js +5 -0
  24. package/dist/markdoc/tags/openapi-code-sample.js +1 -1
  25. package/dist/markdoc/tags/openapi-response-sample.js +1 -1
  26. package/dist/server/config/env-config.d.ts +2 -0
  27. package/dist/server/config/env-schema.d.ts +5 -0
  28. package/dist/server/config/env-schemas/feature-flags.d.ts +4 -0
  29. package/dist/server/config/env-schemas/feature-flags.js +1 -1
  30. package/dist/server/constants/common.d.ts +2 -0
  31. package/dist/server/constants/common.js +1 -1
  32. package/dist/server/constants/plugins/search.js +1 -1
  33. package/dist/server/plugins/markdown/attribute-resolvers/helpers/get-media-content-samples.d.ts +4 -0
  34. package/dist/server/plugins/markdown/attribute-resolvers/helpers/get-media-content-samples.js +1 -0
  35. package/dist/server/plugins/markdown/attribute-resolvers/helpers/load-openapi-bundle.d.ts +7 -0
  36. package/dist/server/plugins/markdown/attribute-resolvers/helpers/load-openapi-bundle.js +1 -0
  37. package/dist/server/plugins/markdown/attribute-resolvers/index.js +1 -1
  38. package/dist/server/plugins/markdown/attribute-resolvers/resolve-openapi-code-samples.d.ts +4 -0
  39. package/dist/server/plugins/markdown/attribute-resolvers/resolve-openapi-code-samples.js +1 -0
  40. package/dist/server/plugins/markdown/attribute-resolvers/resolve-openapi-response-samples.d.ts +4 -0
  41. package/dist/server/plugins/markdown/attribute-resolvers/resolve-openapi-response-samples.js +1 -0
  42. package/dist/server/plugins/markdown/attribute-resolvers/utils.d.ts +2 -0
  43. package/dist/server/plugins/markdown/attribute-resolvers/utils.js +1 -1
  44. package/dist/server/plugins/markdown/compiler.js +1 -1
  45. package/dist/server/plugins/markdown/extract-frontmatter.d.ts +6 -0
  46. package/dist/server/plugins/markdown/extract-frontmatter.js +1 -0
  47. package/dist/server/plugins/markdown/index.js +1 -1
  48. package/dist/server/plugins/markdown/markdoc/partials.js +1 -1
  49. package/dist/server/plugins/markdown/markdown-frontmatter-loader.js +1 -1
  50. package/dist/server/plugins/markdown/search/get-ai-search-documents.js +1 -1
  51. package/dist/server/plugins/markdown/search/search-resolver.js +1 -1
  52. package/dist/server/plugins/mcp/docs-mcp/codemode/build-execute-tool-description.d.ts +4 -0
  53. package/dist/server/plugins/mcp/docs-mcp/codemode/build-execute-tool-description.js +4 -0
  54. package/dist/server/plugins/mcp/docs-mcp/codemode/sandbox.d.ts +3 -0
  55. package/dist/server/plugins/mcp/docs-mcp/codemode/sandbox.js +7 -0
  56. package/dist/server/plugins/mcp/docs-mcp/codemode/types.d.ts +9 -0
  57. package/dist/server/plugins/mcp/docs-mcp/codemode/types.js +0 -0
  58. package/dist/server/plugins/mcp/docs-mcp/tool-schemas.d.ts +2 -0
  59. package/dist/server/plugins/mcp/docs-mcp/tool-schemas.js +1 -1
  60. package/dist/server/plugins/mcp/docs-mcp/tools/core/search.d.ts +2 -1
  61. package/dist/server/plugins/mcp/docs-mcp/tools/core/types.d.ts +6 -0
  62. package/dist/server/plugins/mcp/docs-mcp/tools/core/types.js +0 -0
  63. package/dist/server/plugins/mcp/docs-mcp/tools/core/whoami.d.ts +2 -1
  64. package/dist/server/plugins/mcp/docs-mcp/tools/execute.d.ts +9 -0
  65. package/dist/server/plugins/mcp/docs-mcp/tools/execute.js +1 -0
  66. package/dist/server/plugins/mcp/docs-mcp/tools/graphql/get-graphql-schema.d.ts +2 -3
  67. package/dist/server/plugins/mcp/docs-mcp/tools/graphql/get-graphql-type-list.d.ts +2 -9
  68. package/dist/server/plugins/mcp/docs-mcp/tools/graphql/get-graphql-type.d.ts +2 -5
  69. package/dist/server/plugins/mcp/docs-mcp/tools/graphql/list-graphql-apis.d.ts +2 -5
  70. package/dist/server/plugins/mcp/docs-mcp/tools/graphql/types.d.ts +21 -0
  71. package/dist/server/plugins/mcp/docs-mcp/tools/index.d.ts +11 -46
  72. package/dist/server/plugins/mcp/docs-mcp/tools/openapi/get-endpoint-info.d.ts +2 -6
  73. package/dist/server/plugins/mcp/docs-mcp/tools/openapi/get-endpoints.d.ts +2 -4
  74. package/dist/server/plugins/mcp/docs-mcp/tools/openapi/get-full-api-description.d.ts +2 -4
  75. package/dist/server/plugins/mcp/docs-mcp/tools/openapi/get-security-schemes.d.ts +2 -4
  76. package/dist/server/plugins/mcp/docs-mcp/tools/openapi/list-apis.d.ts +2 -5
  77. package/dist/server/plugins/mcp/docs-mcp/tools/openapi/types.d.ts +16 -0
  78. package/dist/server/plugins/mcp/docs-mcp/tools/openapi/types.js +0 -0
  79. package/dist/server/plugins/mcp/handlers/errors.js +1 -1
  80. package/dist/server/plugins/mcp/index.js +1 -1
  81. package/dist/server/plugins/mcp/mode.d.ts +9 -0
  82. package/dist/server/plugins/mcp/mode.js +1 -0
  83. package/dist/server/plugins/mcp/servers/docs-server.js +1 -1
  84. package/dist/server/plugins/mcp/types.d.ts +1 -0
  85. package/dist/server/plugins/mcp/workers/execute-mcp-tool.js +1 -1
  86. package/dist/server/plugins/mcp/workers/mcp-tool-telemetry.d.ts +4 -0
  87. package/dist/server/plugins/mcp/workers/mcp-tool-telemetry.js +1 -0
  88. package/dist/server/plugins/scorecard-classic/get-scorecard-config.d.ts +11 -0
  89. package/dist/server/plugins/search/engines/typesense/index.js +1 -1
  90. package/dist/server/ssr/server-side-props/get-server-props-from-system-handlers.js +1 -1
  91. package/dist/server/store.d.ts +0 -2
  92. package/dist/server/store.js +1 -1
  93. package/dist/server/telemetry/index.js +1 -1
  94. package/dist/server/types/plugins/common.d.ts +3 -0
  95. package/dist/types/markdoc.d.ts +5 -0
  96. package/package.json +12 -11
  97. package/dist/client/app/markdoc/custom-components/openapi/get-operation/get-operation.js +0 -1
  98. package/dist/client/app/markdoc/custom-components/openapi/get-operation/index.d.ts +0 -4
  99. package/dist/client/app/markdoc/custom-components/openapi/get-operation/index.js +0 -1
  100. /package/dist/{client/app/markdoc/custom-components/openapi → markdoc/helpers}/get-operation/get-operation-info-by-id.d.ts +0 -0
  101. /package/dist/{client/app/markdoc/custom-components/openapi → markdoc/helpers}/get-operation/get-operation-info-by-id.js +0 -0
  102. /package/dist/{client/app/markdoc/custom-components/openapi → markdoc/helpers}/get-operation/get-operation-info-by-pointer.d.ts +0 -0
  103. /package/dist/{client/app/markdoc/custom-components/openapi → markdoc/helpers}/get-operation/get-operation-info-by-pointer.js +0 -0
  104. /package/dist/{client/app/markdoc/custom-components/openapi → markdoc/helpers}/get-operation/get-operation.d.ts +0 -0
  105. /package/dist/{client/app/markdoc/custom-components/openapi → markdoc/helpers}/get-operation/types/index.d.ts +0 -0
  106. /package/dist/{client/app/markdoc/custom-components/openapi → markdoc/helpers}/get-operation/types/index.js +0 -0
  107. /package/dist/{client/app/markdoc/custom-components/openapi → markdoc/helpers}/get-operation/types/operation-identifier.d.ts +0 -0
  108. /package/dist/{client/app/markdoc/custom-components/openapi → markdoc/helpers}/get-operation/types/operation-identifier.js +0 -0
  109. /package/dist/{client/app/markdoc/custom-components/openapi → markdoc/helpers}/get-operation/types/operation-info.d.ts +0 -0
  110. /package/dist/{client/app/markdoc/custom-components/openapi → markdoc/helpers}/get-operation/types/operation-info.js +0 -0
  111. /package/dist/{client/app/markdoc/custom-components/openapi → markdoc/helpers}/get-operation/types/operation-parameters.d.ts +0 -0
  112. /package/dist/{client/app/markdoc/custom-components/openapi → markdoc/helpers}/get-operation/types/operation-parameters.js +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,57 @@
1
1
  # @redocly/realm
2
2
 
3
+ ## 0.135.0-next.6
4
+
5
+ ### Minor Changes
6
+
7
+ - 8358282927d: Added support for the `openapi-code-sample` and `openapi-response-sample` Markdoc tags in `llms.txt`.
8
+
9
+ ### Patch Changes
10
+
11
+ - 2046acf9c67: Updated `@redocly/openapi-core` to version `2.35.0`.
12
+ - 21155963477: Fixed layout shift in the sidebar that happened when users selected a sidebar item.
13
+ - f52a2b04b55: Fixed an issue where the deprecated badge didn't appear in search dialog results for the Typesense search engine.
14
+ - ead3c5da075: Fixed an issue where search results were incorrectly scoped to the selected product, version, or filter.
15
+ This issue occurred when names of products, versions or filters included the same word, for example: `Version` and `Version 2`.
16
+ - Updated dependencies [359a05ad5d]
17
+ - Updated dependencies [2046acf9c67]
18
+ - Updated dependencies [9df2991666]
19
+ - Updated dependencies [21155963477]
20
+ - Updated dependencies [8358282927d]
21
+ - Updated dependencies [33b827ed767]
22
+ - @redocly/realm-asyncapi-sdk@0.13.0-next.4
23
+ - @redocly/openapi-docs@3.23.0-next.6
24
+ - @redocly/theme@0.67.0-next.5
25
+ - @redocly/portal-plugin-mock-server@0.20.0-next.6
26
+ - @redocly/asyncapi-docs@1.12.0-next.6
27
+ - @redocly/graphql-docs@1.12.0-next.6
28
+
29
+ ## 0.135.0-next.5
30
+
31
+ ### Patch Changes
32
+
33
+ - 7e9f8d8c9e7: Updated `@redocly/openapi-core` to version `2.34.0`.
34
+ - 23c1666e2ac: Fixed security vulnerability `GHSA-cmwh-pvxp-8882` by upgrading `dompurify` to version `3.4.11`.
35
+ - 63244207e95: Fixed an issue where search results prioritized matches in page text over matches in page titles.
36
+ - 054f8d0400e: Fixed issues in the breadcrumbs dropdown component where the chevron icon did not change when opened and a focus outline was added on click.
37
+ - 413e45fabee: Fixed an issue where the selected version persisted across versioned content sets instead of resetting to each set's default version.
38
+ - a614929940f: Added annotations to the MCP tools.
39
+ - 9042008046d: Fixed security vulnerability `CVE-2026-53550` by removing `gray-matter`.
40
+ - 5af80849dfe: Updated `@redocly/openapi-core` to version `2.33.1`.
41
+ - Updated dependencies [7e9f8d8c9e7]
42
+ - Updated dependencies [5f5fcd52f7a]
43
+ - Updated dependencies [23c1666e2ac]
44
+ - Updated dependencies [63244207e95]
45
+ - Updated dependencies [054f8d0400e]
46
+ - Updated dependencies [7e9f8d8c9e7]
47
+ - Updated dependencies [5af80849dfe]
48
+ - @redocly/openapi-docs@3.23.0-next.5
49
+ - @redocly/theme@0.67.0-next.4
50
+ - @redocly/realm-asyncapi-sdk@0.13.0-next.3
51
+ - @redocly/portal-plugin-mock-server@0.20.0-next.5
52
+ - @redocly/asyncapi-docs@1.12.0-next.5
53
+ - @redocly/graphql-docs@1.12.0-next.5
54
+
3
55
  ## 0.135.0-next.4
4
56
 
5
57
  ### Minor Changes
@@ -85,6 +137,24 @@
85
137
  - @redocly/openapi-docs@3.23.0-next.0
86
138
  - @redocly/theme@0.67.0-next.0
87
139
 
140
+ ## 0.134.1
141
+
142
+ ### Patch Changes
143
+
144
+ - 593b45d834e: Fixed security vulnerabilities `CVE-2026-54286`, `CVE-2026-54287`, `CVE-2026-54288`, `CVE-2026-54289`, and `CVE-2026-54290` by upgrading `hono` to version `4.12.25`.
145
+ - 15517889222: Fixed security vulnerability `CVE-2026-53550` by upgrading `js-yaml` to version `4.2.0`.
146
+ - 21fcae7c24a: Fixed security vulnerabilities `GHSA-gvmj-g25r-r7wr`, `CVE-2026-49978`, `GHSA-x4vx-rjvf-j5p4`, `GHSA-vxr8-fq34-vvx9`, `CVE-2026-49459`, `CVE-2026-49458`, `GHSA-76mc-f452-cxcm`, and `GHSA-cmwh-pvxp-8882` by upgrading `dompurify` to version `3.4.11`.
147
+ - afdf3f12bf2: Fixed security vulnerability `GHSA-gv7w-rqvm-qjhr` by upgrading `esbuild` to version `0.28.1`.
148
+ - 89eec49eb26: Fixed security vulnerability `CVE-2026-54285` by upgrading `@opentelemetry/core` to version `2.8.0`.
149
+ - Updated dependencies [21fcae7c24a]
150
+ - Updated dependencies [89eec49eb26]
151
+ - @redocly/openapi-docs@3.22.1
152
+ - @redocly/realm-asyncapi-sdk@0.12.1
153
+ - @redocly/portal-plugin-mock-server@0.19.1
154
+ - @redocly/asyncapi-docs@1.11.1
155
+ - @redocly/graphql-docs@1.11.1
156
+ - @redocly/theme@0.66.0
157
+
88
158
  ## 0.134.0
89
159
 
90
160
  ### Minor Changes
@@ -1 +1 @@
1
- import{getApiFunctionsUsage as f}from"./collectors/get-api-functions-usage.js";import{getAsyncApiUsage as l}from"./collectors/get-async-api-usage.js";import{getConfigStatsUsage as c}from"./collectors/get-config-stats-usage.js";import{getFileExtensionsUsage as U}from"./collectors/get-file-extensions-usage.js";import{getFrontmatterUsage as d}from"./collectors/get-frontmatter-usage.js";import{getMarkdocUsage as p}from"./collectors/get-markdoc-usage.js";import{getNestedConfigsUsage as u}from"./collectors/get-nested-configs-usage.js";import{getProcessedConfigStatsUsage as S}from"./collectors/get-processed-config-stats-usage.js";import{getRefsUsage as x}from"./collectors/get-refs-usage.js";import{getThemeFolderUsage as y}from"./collectors/get-theme-folder-usage.js";import{telemetry as C}from"../../telemetry/index.js";async function w(r,i){const g=[f,l,c,U,d,p,u,S,x,y],n=await Promise.allSettled(g.map(t=>t({store:r,context:i}))),e={},s={};for(const t of n)if(t.status==="fulfilled"){const{name:o,value:a,version:m}=t.value;a&&(e[o]=a,s[o]=m)}C.sendBuildMessage({usageStats:e.usageStats,asyncApiUsage:e.asyncApiUsage,buildContext:e.buildContext,fileExtensions:e.fileExtensions,frontmatterUsage:e.frontmatterUsage,markdocUsage:e.markdocUsage,processedBuildContext:e.processedBuildContext,refsUsageStats:e.refsUsageStats,themeFolderUsage:e.themeFolderUsage,versions:JSON.stringify(s)})}export{w as collectAnalytics};
1
+ import{getApiFunctionsUsage as f}from"./collectors/get-api-functions-usage.js";import{getAsyncApiUsage as l}from"./collectors/get-async-api-usage.js";import{getConfigStatsUsage as c}from"./collectors/get-config-stats-usage.js";import{getFileExtensionsUsage as d}from"./collectors/get-file-extensions-usage.js";import{getFrontmatterUsage as U}from"./collectors/get-frontmatter-usage.js";import{getMarkdocUsage as p}from"./collectors/get-markdoc-usage.js";import{getNestedConfigsUsage as u}from"./collectors/get-nested-configs-usage.js";import{getProcessedConfigStatsUsage as S}from"./collectors/get-processed-config-stats-usage.js";import{getRefsUsage as C}from"./collectors/get-refs-usage.js";import{getThemeFolderUsage as x}from"./collectors/get-theme-folder-usage.js";import{telemetry as y}from"../../telemetry/index.js";async function w(r,i){const n=[f,l,c,d,U,p,u,S,C,x],g=await Promise.allSettled(n.map(t=>t({store:r,context:i}))),e={},s={};for(const t of g)if(t.status==="fulfilled"){const{name:o,value:a,version:m}=t.value;a&&(e[o]=a,s[o]=m)}y.sendBuildMessage({usageStats:e.usageStats,asyncApiUsage:e.asyncApiUsage,buildContext:e.buildContext,fileExtensions:e.fileExtensions,frontmatterUsage:e.frontmatterUsage,markdocUsage:e.markdocUsage,processedBuildContext:e.processedBuildContext,nestedConfigStats:e.nestedConfigStats,refsUsageStats:e.refsUsageStats,themeFolderUsage:e.themeFolderUsage,versions:JSON.stringify(s)})}export{w as collectAnalytics};
@@ -1 +1 @@
1
- import{dirname as a}from"node:path";import{getPortalConfigStats as i}from"../../../telemetry/get-portal-config-stats.js";const n=[],c=async({context:t})=>{for(const{relativePath:e,isVirtual:o}of t.fs.scan(/redocly\.yaml$/)){if(o||e==="redocly.yaml")continue;const s=await t.getConfig(a(e));n.push(s)}return{version:"1",name:"nestedConfigStats",value:i(n)}};export{c as getNestedConfigsUsage};
1
+ import{dirname as s}from"node:path";import{getPortalConfigStats as f}from"../../../telemetry/get-portal-config-stats.js";const r=20,g=512*1024,d=async({context:n})=>{const e=[];let o=0;for(const{relativePath:i,isVirtual:a}of n.fs.scan(/redocly\.yaml$/)){if(a||i==="redocly.yaml")continue;if(e.length>=r)break;const t=f(await n.getConfig(s(i)));if(t!==void 0){if(o+=Buffer.byteLength(t,"utf8"),o>g)break;e.push(t)}}return{version:"1",name:"nestedConfigStats",value:e.length>0?`[${e.join(",")}]`:void 0}};export{d as getNestedConfigsUsage};
@@ -1 +1 @@
1
- const i=[/.*secret.*/i],o=e=>i.some(r=>r.test(e)),t=e=>{if(!e)return e;if(Array.isArray(e))return e.map(r=>t(r)).filter(r=>r!==void 0);if(typeof e=="object"){const r={};for(const[n,s]of Object.entries(e))r[n]=o(n)?"**********":t(s);return r}return e},a=e=>{if(Array.isArray(e))return e.length>0?JSON.stringify(e.map(t)):void 0;const r=t(e);return r&&JSON.stringify(r)};export{a as getPortalConfigStats};
1
+ import{MARKDOC_PARTIALS_DATA_KEY as o}from"../../server/constants/common.js";const i=[/secret/i,/password|passphrase/i,/private[-_]?key/i],a="**********",f=e=>i.some(t=>t.test(e)),s=e=>{if(!e)return e;if(Array.isArray(e))return e.map(t=>s(t)).filter(t=>t!==void 0);if(typeof e=="object"){const t={};for(const[r,n]of Object.entries(e))t[r]=f(r)?a:s(n);return t}return e},c=e=>{const{[o]:t,...r}=e;return r},A=e=>{if(Array.isArray(e))return e.length>0?JSON.stringify(e.map(s)):void 0;const t=c(e),r=s(t);return r&&JSON.stringify(r)};export{A as getPortalConfigStats};
@@ -1 +1 @@
1
- import{AsyncApiRealmCLI as c}from"@redocly/realm-asyncapi-sdk";import{ulid as l}from"ulid";import{TELEMETRY_ENABLED as i}from"../../server/constants/common.js";import{shutdowner as s}from"../../server/tools/shutdowner.js";import{envConfig as r}from"../../server/config/env-config.js";import{PACKAGE_NAME as n}from"../../config/product-gates.js";class d extends c.Telemetry{#e=new Map;constructor(){super(),this.updateCloudEventData(()=>({organizationId:r.ORGANIZATION_ID||"",organizationSlug:r.ORGANIZATION_SLUG||"",projectId:r.PROJECT_ID||"",projectSlug:r.PROJECT_SLUG||"",origin:"realmCli",actor:{id:`ann_${l()}`,object:"user",uri:""},source:"cli",env:r.REDOCLY_ENV}))}initialize(e,t,o){const a=t!==void 0?!(t&&i):!i;this.init({otel:{serviceName:"realm-cli",serviceVersion:`${n}@${e}`,collectorTraceUrl:r.OTEL_TRACES_URL||"https://otel.cloud.redocly.com/v1/traces",isProd:r.isProductionEnv,version:"1.0",tracerName:"cli-telemetry"},disabled:a,verbose:o}),s.registerShutdownCallback(this.#r.bind(this))}addTraceStepCallbacks(e,{error:t,end:o}){this.#e.set(e,{error:t,end:o})}removeTraceStepCallbacks(e){this.#e.delete(e)}async#r(e){for(const[,{error:t,end:o}]of this.#e)e&&t(e),o();this.#e.clear(),await this.forceFlush(),await this.shutdown()}}const m=new d,A=m.tracer;export{m as telemetry,A as telemetryTracer};
1
+ import{AsyncApiRealmCLI as c}from"@redocly/realm-asyncapi-sdk";import{ulid as l}from"ulid";import{TELEMETRY_ENABLED as i}from"../../server/constants/common.js";import{shutdowner as s}from"../../server/tools/shutdowner.js";import{envConfig as r}from"../../server/config/env-config.js";import{PACKAGE_NAME as n}from"../../config/product-gates.js";class d extends c.Telemetry{#e=new Map;constructor(){super(),this.updateCloudEventData(()=>({organizationId:r.ORGANIZATION_ID||"",organizationSlug:r.ORGANIZATION_SLUG||"",projectId:r.PROJECT_ID||"",projectSlug:r.PROJECT_SLUG||"",origin:"realmCli",actor:{id:`ann_${l()}`,object:"user",uri:""},source:"urn:redocly:realm:cli",env:r.REDOCLY_ENV}))}initialize(e,t,o){const a=t!==void 0?!(t&&i):!i;this.init({otel:{serviceName:"realm-cli",serviceVersion:`${n}@${e}`,collectorTraceUrl:r.OTEL_TRACES_URL||"https://otel.cloud.redocly.com/v1/traces",isProd:r.isProductionEnv,version:"1.0",tracerName:"cli-telemetry"},disabled:a,verbose:o}),s.registerShutdownCallback(this.#r.bind(this))}addTraceStepCallbacks(e,{error:t,end:o}){this.#e.set(e,{error:t,end:o})}removeTraceStepCallbacks(e){this.#e.delete(e)}async#r(e){for(const[,{error:t,end:o}]of this.#e)e&&t(e),o();this.#e.clear(),await this.forceFlush(),await this.shutdown()}}const m=new d,A=m.tracer;export{m as telemetry,A as telemetryTracer};
@@ -1,4 +1,4 @@
1
- import r,{useEffect as C,useState as a}from"react";import D from"styled-components";import{Button as I}from"@redocly/theme/components/Button/Button";import{Admonition as N}from"@redocly/theme/markdoc/components/Admonition/Admonition";import{withPathPrefix as y}from"@redocly/theme/core/utils";import{usePageData as k}from"../hooks/usePageData";import{usePreloadHistory as w}from"../usePreloadHistory";import{telemetry as b}from"../telemetry/index.js";import{useLoginUrl as q}from"../hooks";const M=e=>{const{apiId:s,status:t,setStatus:i}=e,c=w(),{userData:n}=k("userData")||{},u=q(),[l,p]=a(),[h,g]=a(),[m,A]=a(!0);C(()=>{n?.isAuthenticated&&fetch(`/api/api-keys/api-products/${s}/access`).then(d=>d.json().then(o=>{d.ok?(i(o.status),g(o.appId)):p(o.message)}).catch(()=>p("Something went wrong")).finally(()=>A(!1)))},[n?.isAuthenticated,s,i]);const E=()=>{!n?.isAuthenticated&&u?window.location.href=y(u):t==="ACCEPTED"?c.push("/apps/"+h||""):t==="NONE"&&c.push("/apps/?createApp&apiId="+s),b.sendRequestApiAccessButtonClickedMessage([{object:"button",action:"click"}])},P=(t==="PENDING"||m||l!=null)&&n?.isAuthenticated;return r.createElement(r.Fragment,null,r.createElement(I,{disabled:P,onClick:E,fullWidth:!0,size:"small"},x(t,m,l,!!n?.isAuthenticated)))},x=(e,s,t,i)=>{if(!i)return"Request access";if(s)return"Loading...";if(t)return"Failed to check access";switch(e){case"NONE":return"Request access";case"ACCEPTED":return"Credentials";case"PENDING":return"Pending access..."}return null},O=e=>e==="ACCEPTED"?r.createElement(f,{type:"success",name:"You have access to this API"}):e==="PENDING"?r.createElement(f,{type:"info",name:"You have requested access to this API"}):null,f=D(N)`
1
+ import n,{useEffect as D,useState as a}from"react";import C from"styled-components";import{Button as I}from"@redocly/theme/components/Button/Button";import{Admonition as N}from"@redocly/theme/markdoc/components/Admonition/Admonition";import{withPathPrefix as y,getBaseDataAttributes as k}from"@redocly/theme/core/utils";import{usePageData as q}from"../hooks/usePageData";import{usePreloadHistory as w}from"../usePreloadHistory";import{telemetry as b}from"../telemetry/index.js";import{useLoginUrl as x}from"../hooks";const U=e=>{const{apiId:s,status:t,setStatus:i}=e,c=w(),{userData:r}=q("userData")||{},u=x(),[l,p]=a(),[h,A]=a(),[m,g]=a(!0);D(()=>{r?.isAuthenticated&&fetch(`/api/api-keys/api-products/${s}/access`).then(d=>d.json().then(o=>{d.ok?(i(o.status),A(o.appId)):p(o.message)}).catch(()=>p("Something went wrong")).finally(()=>g(!1)))},[r?.isAuthenticated,s,i]);const E=()=>{!r?.isAuthenticated&&u?window.location.href=y(u):t==="ACCEPTED"?c.push("/apps/"+h||""):t==="NONE"&&c.push("/apps/?createApp&apiId="+s),b.sendRequestApiAccessClickedMessage([k("requestApiAccess","button")])},P=(t==="PENDING"||m||l!=null)&&r?.isAuthenticated;return n.createElement(n.Fragment,null,n.createElement(I,{disabled:P,onClick:E,fullWidth:!0,size:"small"},R(t,m,l,!!r?.isAuthenticated)))},R=(e,s,t,i)=>{if(!i)return"Request access";if(s)return"Loading...";if(t)return"Failed to check access";switch(e){case"NONE":return"Request access";case"ACCEPTED":return"Credentials";case"PENDING":return"Pending access..."}return null},Y=e=>e==="ACCEPTED"?n.createElement(f,{type:"success",name:"You have access to this API"}):e==="PENDING"?n.createElement(f,{type:"info",name:"You have requested access to this API"}):null,f=C(N)`
2
2
  margin-top: 0px;
3
3
  margin-bottom: var(--spacing-sm);
4
- `;export{M as RequestAccessButton,O as renderAdmonition};
4
+ `;export{U as RequestAccessButton,Y as renderAdmonition};
@@ -1,11 +1,11 @@
1
- import e,{useEffect as y,useState as p}from"react";import b from"styled-components";import{Menu as I}from"@redocly/theme/components/Menu/Menu";import{SidebarActions as L}from"@redocly/theme/components/SidebarActions/SidebarActions";import{Sidebar as w}from"@redocly/theme/components/Sidebar/Sidebar";import{VersionPicker as A}from"@redocly/theme/components/VersionPicker/VersionPicker";import{Button as B}from"@redocly/theme/components/Button/Button";import{CatalogEntityHistoryButton as P}from"@redocly/theme/components/Catalog/CatalogEntity/CatalogEntityHistory/CatalogEntityHistoryButton";import{ArrowLeftIcon as x}from"@redocly/theme/icons/ArrowLeftIcon/ArrowLeftIcon";import{withPathPrefix as D}from"@redocly/theme/core/utils";import{telemetry as h}from"../telemetry/index.js";import{usePreloadHistory as T}from"../usePreloadHistory";import{useTranslate as C}from"../hooks";import{usePageSharedData as M,usePageVersions as V}from"../../providers/page-data/hooks";import{useSidebarItems as j}from"./useSidebarItems";import{renderAdmonition as H,RequestAccessButton as R}from"./RequestAccessButton";function ie({layoutControls:s}){const{versions:l=[]}=V()||{},k=l.find(t=>t?.active),{translate:o}=C(),{currentItems:m,backLink:n,versionLabel:a,pushDrilldownState:g,popDrilldownState:v}=j(k),[c,S]=p(),{collapsedSidebar:i}=s,d=M("openAPIDocsStore")?.definition.info?.["x-metadata"]?.apiId,E=T(),[u,r]=p(void 0);return y(()=>{const t=setTimeout(()=>r(void 0),350);return()=>clearTimeout(t)},[u]),m.length?e.createElement(e.Fragment,null,e.createElement(w,{collapsed:i,menuItemsAnimation:u,versions:e.createElement(A,{versions:l,onChange:t=>{h.sendVersionPickerSelectionChangeMessage([{object:"version_picker",action:"change"}]);const f=location.hash?t?.link+location.hash:t?.link;f&&E.push(D(f))}}),menu:e.createElement(I,{items:m,onDrilldownOpen:t=>{r("slideInRight"),g(t)}}),footer:e.createElement("div",{style:{width:"100%"}},!i&&H(c),e.createElement(L,{...s,requestAccessButton:d?e.createElement(R,{apiId:d,status:c,setStatus:S}):null})),header:(n||a)&&e.createElement(q,null,n&&e.createElement(J,{icon:e.createElement(x,null),iconPosition:"left",variant:"ghost",size:"medium","data-component-name":"Sidebar/BackButton",to:n.slug,onClick:()=>{r("slideInLeft"),v(),h.sendSidebarDrilldownBackButtonClickedMessage([{object:"button",action:"click"}])}},i?"":n.label?e.createElement("div",{"data-translation-key":"sidebar.menu.backToLabel"},o("sidebar.menu.backToLabel",{value:o(n.labelTranslationKey,n.label)})):e.createElement("div",{"data-translation-key":"sidebar.menu.backLabel"},o("sidebar.menu.backLabel"))),a&&!i&&e.createElement(P,{version:a}))})):null}const q=b.div`
1
+ import e,{useEffect as y,useState as b}from"react";import h from"styled-components";import{Menu as w}from"@redocly/theme/components/Menu/Menu";import{SidebarActions as A}from"@redocly/theme/components/SidebarActions/SidebarActions";import{Sidebar as B}from"@redocly/theme/components/Sidebar/Sidebar";import{VersionPicker as I}from"@redocly/theme/components/VersionPicker/VersionPicker";import{Button as L}from"@redocly/theme/components/Button/Button";import{CatalogEntityHistoryButton as P}from"@redocly/theme/components/Catalog/CatalogEntity/CatalogEntityHistory/CatalogEntityHistoryButton";import{ArrowLeftIcon as D}from"@redocly/theme/icons/ArrowLeftIcon/ArrowLeftIcon";import{withPathPrefix as x,getBaseDataAttributes as C,generateBeforeAfterContext as T}from"@redocly/theme/core/utils";import{telemetry as v}from"../telemetry/index.js";import{usePreloadHistory as M}from"../usePreloadHistory";import{useTranslate as V}from"../hooks";import{usePageSharedData as H,usePageVersions as R}from"../../providers/page-data/hooks";import{useSidebarItems as q}from"./useSidebarItems";import{renderAdmonition as J,RequestAccessButton as j}from"./RequestAccessButton";function re({layoutControls:s}){const{versions:l=[]}=R()||{},m=l.find(t=>t?.active),{translate:o}=V(),{currentItems:c,backLink:n,versionLabel:r,pushDrilldownState:g,popDrilldownState:k}=q(m),[d,E]=b(),{collapsedSidebar:i}=s,u=H("openAPIDocsStore")?.definition.info?.["x-metadata"]?.apiId,S=M(),[f,a]=b(void 0);return y(()=>{const t=setTimeout(()=>a(void 0),350);return()=>clearTimeout(t)},[f]),c.length?e.createElement(e.Fragment,null,e.createElement(B,{collapsed:i,menuItemsAnimation:f,versions:e.createElement(I,{versions:l,onChange:t=>{v.sendVersionPickerChangedMessage([...T("versionPicker","dropdown",{version:m?.version||""},{version:t?.version||""})]);const p=location.hash?t?.link+location.hash:t?.link;p&&S.push(x(p))}}),menu:e.createElement(w,{items:c,onDrilldownOpen:t=>{a("slideInRight"),g(t)}}),footer:e.createElement("div",{style:{width:"100%"}},!i&&J(d),e.createElement(A,{...s,requestAccessButton:u?e.createElement(j,{apiId:u,status:d,setStatus:E}):null})),header:(n||r)&&e.createElement(z,null,n&&e.createElement(F,{icon:e.createElement(D,null),iconPosition:"left",variant:"ghost",size:"medium","data-component-name":"Sidebar/BackButton",to:n.slug,onClick:()=>{a("slideInLeft"),k(),v.sendSidebarDrilldownBackClickedMessage([C("sidebarDrilldownBack","button")])}},i?"":n.label?e.createElement("div",{"data-translation-key":"sidebar.menu.backToLabel"},o("sidebar.menu.backToLabel",{value:o(n.labelTranslationKey,n.label)})):e.createElement("div",{"data-translation-key":"sidebar.menu.backLabel"},o("sidebar.menu.backLabel"))),r&&!i&&e.createElement(P,{version:r}))})):null}const z=h.div`
2
2
  display: flex;
3
3
  flex-direction: column;
4
4
  gap: var(--menu-header-container-gap);
5
5
  width: 100%;
6
- `,J=b(B)`
6
+ `,F=h(L)`
7
7
  padding: var(--menu-item-padding-vertical) 0;
8
8
  height: calc(var(--line-height-base) + var(--menu-item-padding-vertical) * 2);
9
9
  justify-content: flex-start;
10
10
  width: 100%;
11
- `;export{ie as Sidebar};
11
+ `;export{re as Sidebar};
@@ -16,8 +16,11 @@ import type { ResolvedNavItem, Version } from '@redocly/config';
16
16
  * /@latest
17
17
  *
18
18
  * So we foolow these rules:
19
- * - we prefer the items with the same version name as the active version
20
- * - if there are no items with the same version name, we pick the default version for folder
19
+ * - only the active version's own folder follows the active version
20
+ * - every other folder keeps its own default version, even if it happens to
21
+ * contain a version with the same name as the active version
22
+ * - if the active version name doesn't exist in its own folder, that folder
23
+ * falls back to its default version
21
24
  */
22
25
  export declare function filterOutVersionedItems(items: ResolvedNavItem[], activeVersion?: Version | null, versionNamesByFolderId?: Record<string, Set<string>>): ResolvedNavItem[];
23
26
  //# sourceMappingURL=filter-out-versioned-items.d.ts.map
@@ -1 +1 @@
1
- function l(f,e,n={}){for(const r of f)r.versionFolderId&&r.version&&(n[r.versionFolderId]=n[r.versionFolderId]??new Set).add(r.version);return f.filter(r=>r.version==null?r:e?r.version===e.version?!0:r.versionFolderId&&n[r.versionFolderId]?.has(e.version)?!1:r.isDefault:r.isDefault).map(r=>{if(Array.isArray(r.items)&&r.items.length){const s=l(r.items,e,n);return s.length===0?null:{...r,items:s}}return r}).filter(r=>r!==null)}export{l as filterOutVersionedItems};
1
+ function f(o,n,e={}){for(const r of o)r.versionFolderId&&r.version&&(e[r.versionFolderId]=e[r.versionFolderId]??new Set).add(r.version);return o.filter(r=>r.version==null?r:!n||r.versionFolderId!==n.folderId?r.isDefault:r.versionFolderId&&e[r.versionFolderId]?.has(n.version)?r.version===n.version:r.isDefault).map(r=>{if(Array.isArray(r.items)&&r.items.length){const s=f(r.items,n,e);return s.length===0?null:{...r,items:s}}return r}).filter(r=>r!==null)}export{f as filterOutVersionedItems};
@@ -1 +1 @@
1
- import*as h from"react";import{useLocation as _,useNavigate as B}from"react-router-dom";import{usePageData as $,usePageSharedData as R}from"../../hooks";import{withoutHash as M}from"@redocly/theme/core/utils";import{telemetry as w}from"../../telemetry/index.js";import{toStringIfDefined as A}from"../../../../utils/string/to-string-if-defined.js";import{findDeepFirst as V}from"../../../../utils/tree/find-deep-first.js";function te(e,o){const r=_(),i=B(),a=$(),t=q(r),s=R("catalog"),[n,p]=h.useState(()=>(e.filters??[]).map(l=>{if(l.type==="date-range"){const[c,u]=t.get(l.property)?.split("--")??[];return!c&&!u?{}:{from:c,to:u}}return new Set(t.getAll(l.property))})),[d,g]=h.useState(()=>t.get("filter")||"");o||(o=[...s]);const S=h.useMemo(()=>j(o??[],e.filters),[o,e.filters]),b=a?.props?.customFields,C=h.useMemo(()=>G(o??[],e,b||{}),[o,e,b]),v=h.useCallback((l,c)=>{p(u=>{const y=u[l]?u[l]:new Set;return y instanceof Set?(y.has(c)?u.forEach((f,m)=>{f instanceof Set&&f.has(c)&&f.delete(c)}):y.add(c),[...u.slice(0,l),y,...u.slice(l+1)]):u}),w.sendCatalogFilterChangedMessage([{object:"catalog_filter",type:"toggle"}]),window.scrollTo(0,0)},[]),I=h.useCallback((l,c)=>{p(u=>{const y=u[l]instanceof Set?new Set(c?[c]:[]):{from:c?.from,to:c?.to},f=S[l];return u.map((m,F)=>F===l?y:S[F].parentFilter===f.property?new Set:m)}),w.sendCatalogFilterChangedMessage([{object:"catalog_filter",type:"select"}]),window.scrollTo(0,0)},[S]),T=()=>{const l=new URLSearchParams(Array.from(t.entries()));d?t.set("filter",d):t.delete("filter"),n.forEach((u,y)=>{const f=e.filters?.[y];if(!f)return;const m=Z(u);J(f.property,m,l)});const c=l.toString();c!==r.search.substring(1)&&i({search:c})};h.useEffect(()=>{T()},[e.filters,n,d,i,r]);const P=h.useMemo(()=>H(e.filters),[e.filters]);return h.useMemo(()=>{const l=S.map((f,m)=>({...f,toggleOption:F=>v(m,F),selectOption:F=>I(m,F),selectedOptions:n[m]??new Set,isFilterUsed:(n[m]?.size??0)>0||!!n[m]?.from})),c=D(C,l,d),u=l.map((f,m)=>{const F=l.findIndex(O=>O.property===f.parentFilter),E=f.parentFilter?(n[F]?.size??0)>0||!!n[F].from:!0,N=l.filter((O,k)=>k!==m&&!P[m]?.has(k)),z=D(C,N,d),U=j(z.map(O=>({metadata:O})),e.filters);return{...f,parentUsed:E,filteredOptions:U[m].options}});return{groups:e.groupByFirstFilter&&u.length>0?K(u,c):[{title:"APIs",items:c}],filters:u,setFilterTerm:f=>{g(f),w.sendCatalogFilterChangedMessage([{object:"catalog_filter",type:"term"}])},filterTerm:d}},[S,C,d,e.groupByFirstFilter,e.filters,n,v,I,P])}function K(e,o){return e[0].options.map(r=>({title:r.value,items:o.filter(i=>{const a=i?.[e[0].property]||e[0].missingCategoryName||"Others";return Array.isArray(a)?a.includes(r.value):a===r.value})})).filter(r=>r.items.length>0)}function q(e){return h.useMemo(()=>new URLSearchParams(e.search),[e.search])}function G(e,o,r){let i;if(o.separateVersions)i=e.map(a);else{const t={};for(const s of e){if(!s.versionFolderId){const p=s.link||s.fsPath||JSON.stringify(s);t[p]=[s];continue}let n=s.versionFolderId;if(t[n]?.find(p=>p.version===s.version)){const p=s.fsPath?.replace(/\/@.*?\//,"/@version/")??"";n=`${n}-${p}`}t[n]||(t[n]=[]),t[n].push(s)}i=Object.values(t).map(s=>{s.sort((d,g)=>(d.version||"").localeCompare(g.version||""));const n=s.map(a);return{...a(s.find(d=>d.isDefault)||s[s.length-1]),versions:n}})}return i.sort((t,s)=>t.title.localeCompare(s.title)),i;function a(t){const s=t.metadata||{},n=r[t.fsPath||""]||{},p=t.link||V(t.items||[],g=>"link"in g&&!!g.link)?.link,d=t.sidebar?.[0];return{...s,...n,publishedAt:s.publishedAt||s.createdAt,title:A(s?.title)||t.label||"Untitled",description:A(s?.description),link:M(p)??"#",docsLink:M(d?.link),image:A(s?.image),version:t.version,versionFolderId:t.versionFolderId}}}function H(e){if(!e)return[];const o=[];for(let r=0;r<e.length;r++){const i=e[r];if(i.parentFilter){const a=e.findIndex(t=>t.property===i.parentFilter);o[a]=o[a]||new Set,o[a].add(r)}}return o}function j(e,o){return(o??[]).map(r=>{const i=r.options?Object.fromEntries(r.options.map(n=>[n,0])):void 0,a=i??{};let t=0;for(const n of e){const p=Array.isArray(n.metadata?.[r.property])?n.metadata?.[r.property]:[n.metadata?.[r.property]];for(const d of p){const g=L(String(d),r.valuesMapping);if(i){g in i&&(a[g]=a[g]+1);continue}d?a[g]=(a[g]??0)+1:t++}}const s=Object.entries(a).map(([n,p])=>({value:n,count:p}));return i||s.sort((n,p)=>n.value.localeCompare(p.value)),t&&s.push({value:r.missingCategoryNameTranslationKey||r.missingCategoryName||"Others",count:t}),{...r,options:s}})}function D(e,o,r){const i=e.filter(a=>o.every(t=>{if(t.selectedOptions&&!(t.selectedOptions instanceof Set))try{const n=new Date(a[t.property]).toISOString().split("T")[0];return n>=(t.selectedOptions.from??"")&&n<=(t.selectedOptions.to??"Z")}catch{return!0}if(t.selectedOptions.size===0)return!0;const s=L(a?.[t.property]||t.missingCategoryName||"Others",t.valuesMapping);return Array.isArray(s)?s.some(n=>t.selectedOptions.has(n)):t.selectedOptions.has(s)}));return r?(r=r.toLowerCase(),i.filter(a=>Object.values(a).some(t=>Array.isArray(t)?t.some(s=>String(s).toLowerCase().includes(r)):String(t).toLowerCase().includes(r)))):i}function L(e,o){return o?Array.isArray(e)?e.map(r=>o[String(r)]||r):o[String(e)]||e:e}function J(e,o,r){r.delete(e),o.forEach(i=>{r.append(e,i)})}function Z(e){const o=new Set;return e instanceof Set?e.forEach(r=>o.add(r)):(e.from||e.to)&&o.add(`${e.from||""}--${e.to||""}`),o}export{J as fillSearchParams,Z as getFilterValues,te as useCatalogClassic};
1
+ import*as h from"react";import{useLocation as $,useNavigate as R}from"react-router-dom";import{usePageData as V,usePageSharedData as K}from"../../hooks";import{withoutHash as D,getBaseDataAttributes as w}from"@redocly/theme/core/utils";import{telemetry as A}from"../../telemetry/index.js";import{toStringIfDefined as v}from"../../../../utils/string/to-string-if-defined.js";import{findDeepFirst as _}from"../../../../utils/tree/find-deep-first.js";function re(e,o){const r=$(),i=R(),a=V(),t=G(r),s=K("catalog"),[n,p]=h.useState(()=>(e.filters??[]).map(l=>{if(l.type==="date-range"){const[c,u]=t.get(l.property)?.split("--")??[];return!c&&!u?{}:{from:c,to:u}}return new Set(t.getAll(l.property))})),[d,g]=h.useState(()=>t.get("filter")||"");o||(o=[...s]);const S=h.useMemo(()=>L(o??[],e.filters),[o,e.filters]),I=a?.props?.customFields,C=h.useMemo(()=>H(o??[],e,I||{}),[o,e,I]),b=h.useCallback((l,c)=>{p(u=>{const F=u[l]?u[l]:new Set;return F instanceof Set?(F.has(c)?u.forEach((f,m)=>{f instanceof Set&&f.has(c)&&f.delete(c)}):F.add(c),[...u.slice(0,l),F,...u.slice(l+1)]):u}),A.sendCatalogFilterChangedMessage([{...w("catalogFilter","field"),type:"toggle"}]),window.scrollTo(0,0)},[]),P=h.useCallback((l,c)=>{p(u=>{const F=u[l]instanceof Set?new Set(c?[c]:[]):{from:c?.from,to:c?.to},f=S[l];return u.map((m,y)=>y===l?F:S[y].parentFilter===f.property?new Set:m)}),A.sendCatalogFilterChangedMessage([{...w("catalogFilter","field"),type:"select"}]),window.scrollTo(0,0)},[S]),N=()=>{const l=new URLSearchParams(Array.from(t.entries()));d?t.set("filter",d):t.delete("filter"),n.forEach((u,F)=>{const f=e.filters?.[F];if(!f)return;const m=Q(u);Z(f.property,m,l)});const c=l.toString();c!==r.search.substring(1)&&i({search:c})};h.useEffect(()=>{N()},[e.filters,n,d,i,r]);const k=h.useMemo(()=>J(e.filters),[e.filters]);return h.useMemo(()=>{const l=S.map((f,m)=>({...f,toggleOption:y=>b(m,y),selectOption:y=>P(m,y),selectedOptions:n[m]??new Set,isFilterUsed:(n[m]?.size??0)>0||!!n[m]?.from})),c=T(C,l,d),u=l.map((f,m)=>{const y=l.findIndex(O=>O.property===f.parentFilter),j=f.parentFilter?(n[y]?.size??0)>0||!!n[y].from:!0,z=l.filter((O,M)=>M!==m&&!k[m]?.has(M)),B=T(C,z,d),U=L(B.map(O=>({metadata:O})),e.filters);return{...f,parentUsed:j,filteredOptions:U[m].options}});return{groups:e.groupByFirstFilter&&u.length>0?q(u,c):[{title:"APIs",items:c}],filters:u,setFilterTerm:f=>{g(f),A.sendCatalogFilterChangedMessage([{...w("catalogFilter","field"),type:"term"}])},filterTerm:d}},[S,C,d,e.groupByFirstFilter,e.filters,n,b,P,k])}function q(e,o){return e[0].options.map(r=>({title:r.value,items:o.filter(i=>{const a=i?.[e[0].property]||e[0].missingCategoryName||"Others";return Array.isArray(a)?a.includes(r.value):a===r.value})})).filter(r=>r.items.length>0)}function G(e){return h.useMemo(()=>new URLSearchParams(e.search),[e.search])}function H(e,o,r){let i;if(o.separateVersions)i=e.map(a);else{const t={};for(const s of e){if(!s.versionFolderId){const p=s.link||s.fsPath||JSON.stringify(s);t[p]=[s];continue}let n=s.versionFolderId;if(t[n]?.find(p=>p.version===s.version)){const p=s.fsPath?.replace(/\/@.*?\//,"/@version/")??"";n=`${n}-${p}`}t[n]||(t[n]=[]),t[n].push(s)}i=Object.values(t).map(s=>{s.sort((d,g)=>(d.version||"").localeCompare(g.version||""));const n=s.map(a);return{...a(s.find(d=>d.isDefault)||s[s.length-1]),versions:n}})}return i.sort((t,s)=>t.title.localeCompare(s.title)),i;function a(t){const s=t.metadata||{},n=r[t.fsPath||""]||{},p=t.link||_(t.items||[],g=>"link"in g&&!!g.link)?.link,d=t.sidebar?.[0];return{...s,...n,publishedAt:s.publishedAt||s.createdAt,title:v(s?.title)||t.label||"Untitled",description:v(s?.description),link:D(p)??"#",docsLink:D(d?.link),image:v(s?.image),version:t.version,versionFolderId:t.versionFolderId}}}function J(e){if(!e)return[];const o=[];for(let r=0;r<e.length;r++){const i=e[r];if(i.parentFilter){const a=e.findIndex(t=>t.property===i.parentFilter);o[a]=o[a]||new Set,o[a].add(r)}}return o}function L(e,o){return(o??[]).map(r=>{const i=r.options?Object.fromEntries(r.options.map(n=>[n,0])):void 0,a=i??{};let t=0;for(const n of e){const p=Array.isArray(n.metadata?.[r.property])?n.metadata?.[r.property]:[n.metadata?.[r.property]];for(const d of p){const g=E(String(d),r.valuesMapping);if(i){g in i&&(a[g]=a[g]+1);continue}d?a[g]=(a[g]??0)+1:t++}}const s=Object.entries(a).map(([n,p])=>({value:n,count:p}));return i||s.sort((n,p)=>n.value.localeCompare(p.value)),t&&s.push({value:r.missingCategoryNameTranslationKey||r.missingCategoryName||"Others",count:t}),{...r,options:s}})}function T(e,o,r){const i=e.filter(a=>o.every(t=>{if(t.selectedOptions&&!(t.selectedOptions instanceof Set))try{const n=new Date(a[t.property]).toISOString().split("T")[0];return n>=(t.selectedOptions.from??"")&&n<=(t.selectedOptions.to??"Z")}catch{return!0}if(t.selectedOptions.size===0)return!0;const s=E(a?.[t.property]||t.missingCategoryName||"Others",t.valuesMapping);return Array.isArray(s)?s.some(n=>t.selectedOptions.has(n)):t.selectedOptions.has(s)}));return r?(r=r.toLowerCase(),i.filter(a=>Object.values(a).some(t=>Array.isArray(t)?t.some(s=>String(s).toLowerCase().includes(r)):String(t).toLowerCase().includes(r)))):i}function E(e,o){return o?Array.isArray(e)?e.map(r=>o[String(r)]||r):o[String(e)]||e:e}function Z(e,o,r){r.delete(e),o.forEach(i=>{r.append(e,i)})}function Q(e){const o=new Set;return e instanceof Set?e.forEach(r=>o.add(r)):(e.from||e.to)&&o.add(`${e.from||""}--${e.to||""}`),o}export{Z as fillSearchParams,Q as getFilterValues,re as useCatalogClassic};
@@ -1 +1 @@
1
- import{useCallback as h,useEffect as w,useMemo as y,useState as P}from"react";import{useSearchParams as Q}from"react-router-dom";import{telemetry as b}from"../../telemetry/index.js";import{parseFilterQuery as g,formatFilterQuery as C,collectFilterOptions as U}from"../../../utils";function O(r){return r instanceof Set?r.size>0:!!(r?.from||r?.to)}function k(r,d){const[u,m]=Q(),i=u.get("filter")||"",[o,f]=P(()=>g(i,r?.filters||[])),p=y(()=>U(r?.filters,d),[r?.filters,d]);w(()=>{const t=r?.filters||[];if(t.length>0&&o.length!==t.length){const e=g(i,t);f(e)}},[r?.filters,o.length,i]);const F=h((t,e)=>{f(l=>l.map((s,c)=>{if(c!==t||!(s instanceof Set))return s;const n=new Set(s);return n.has(e)?n.delete(e):n.add(e),n})),window.scrollTo(0,0)},[]),S=h((t,e)=>{f(l=>l.map((a,s)=>s!==t?a:a instanceof Set?e&&typeof e=="string"?new Set([e]):new Set:{from:typeof e=="object"?e?.from:void 0,to:typeof e=="object"?e?.to:void 0})),b.sendCatalogFilterChangedMessage([{object:"catalog_filter",type:"select"}]),window.scrollTo(0,0)},[]);return w(()=>{const t=new URLSearchParams(u),e=C(o,r?.filters||[]);e?t.set("filter",e):t.delete("filter"),m(t,{replace:!0})},[r?.filters,o,u,m]),y(()=>{const t=p.map((l,a)=>{const s=o[a],c=O(s);return{...l,toggleOption:n=>F(a,n),selectOption:n=>S(a,n),selectedOptions:s??new Set,isFilterUsed:c}});return{filters:t.map(l=>{const a=t.findIndex(n=>n.property===l.parentFilter),s=o[a],c=l.parentFilter?O(s):!0;return{...l,parentUsed:c}}),filterQuery:i}},[p,o,F,S,i])}export{k as useCatalogFilter};
1
+ import{useCallback as h,useEffect as w,useMemo as y,useState as P}from"react";import{useSearchParams as Q}from"react-router-dom";import{telemetry as b}from"../../telemetry/index.js";import{parseFilterQuery as g,formatFilterQuery as C,collectFilterOptions as U}from"../../../utils";import{getBaseDataAttributes as I}from"@redocly/theme/core/utils";function O(r){return r instanceof Set?r.size>0:!!(r?.from||r?.to)}function x(r,m){const[u,d]=Q(),o=u.get("filter")||"",[i,f]=P(()=>g(o,r?.filters||[])),p=y(()=>U(r?.filters,m),[r?.filters,m]);w(()=>{const t=r?.filters||[];if(t.length>0&&i.length!==t.length){const e=g(o,t);f(e)}},[r?.filters,i.length,o]);const F=h((t,e)=>{f(l=>l.map((s,c)=>{if(c!==t||!(s instanceof Set))return s;const n=new Set(s);return n.has(e)?n.delete(e):n.add(e),n})),window.scrollTo(0,0)},[]),S=h((t,e)=>{f(l=>l.map((a,s)=>s!==t?a:a instanceof Set?e&&typeof e=="string"?new Set([e]):new Set:{from:typeof e=="object"?e?.from:void 0,to:typeof e=="object"?e?.to:void 0})),b.sendCatalogFilterChangedMessage([{...I("catalogFilter","field"),type:"select"}]),window.scrollTo(0,0)},[]);return w(()=>{const t=new URLSearchParams(u),e=C(i,r?.filters||[]);e?t.set("filter",e):t.delete("filter"),d(t,{replace:!0})},[r?.filters,i,u,d]),y(()=>{const t=p.map((l,a)=>{const s=i[a],c=O(s);return{...l,toggleOption:n=>F(a,n),selectOption:n=>S(a,n),selectedOptions:s??new Set,isFilterUsed:c}});return{filters:t.map(l=>{const a=t.findIndex(n=>n.property===l.parentFilter),s=i[a],c=l.parentFilter?O(s):!0;return{...l,parentUsed:c}}),filterQuery:o}},[p,i,F,S,o])}export{x as useCatalogFilter};
@@ -1 +1 @@
1
- import{useLocation as f,useNavigate as d,useNavigationType as l}from"react-router-dom";import{useEffect as v,useState as P}from"react";import{useThemeConfig as w}from"@redocly/theme/core/hooks";import{normalizeRouteSlug as E}from"../../../utils/path/normalize-route-slug";import{onRouteChange as M}from"../../runtime/generated/browser-plugins.js";import{resolveRouteBySlug as y}from"../utils/resolveRouteBySlug.js";import{usePageData as b}from"./usePageData.js";import{usePostMessage as C}from"../../providers/post-message/use-post-message.js";import{isInIframe as R}from"../../utils/utils.js";import{waitForContentScripts as I}from"../../ScriptLoader.js";import{telemetry as N}from"../telemetry/index.js";const U=()=>{const e=f(),r=d(),a=l(),n=b(),[t,i]=P(),m=w(),{sendMessage:h}=C();v(()=>{if(e?.pathname.endsWith("/")&&e?.pathname!=="/"){r({pathname:E(e.pathname),search:e.search,hash:e.hash},{replace:!0,state:e.state});return}I().then(()=>{if(e.pathname!==t?.pathname||e.search!==t.search){M({location:e,prevLocation:t},m);const o=`${window.origin}${e.pathname+e.search+e.hash}`,s=t?`${window.origin}${t.pathname+t.search+t.hash}`:void 0;N.sendPageViewedMessage([{object:"page",uri:o,referrer:s||document.referrer||void 0}])}});const c=!!t;i(e);const{pathname:p,hash:g,state:u}=e;(process.env.NODE_ENV==="development"||R())&&c&&y(p+g,n?.templateId).then(o=>{const s=a==="POP"?"browser":u?.origin;s&&h({type:"route-updated",origin:s,...o})}).catch(o=>console.log("Resolve route by slug failed with error: ",o.message))},[e,a])};export{U as useRouteChangeTracker};
1
+ import{useLocation as f,useNavigate as d,useNavigationType as l}from"react-router-dom";import{useEffect as v,useState as P}from"react";import{useThemeConfig as w}from"@redocly/theme/core/hooks";import{normalizeRouteSlug as E}from"../../../utils/path/normalize-route-slug";import{getBaseDataAttributes as M}from"@redocly/theme/core/utils";import{onRouteChange as y}from"../../runtime/generated/browser-plugins.js";import{resolveRouteBySlug as b}from"../utils/resolveRouteBySlug.js";import{usePageData as C}from"./usePageData.js";import{usePostMessage as R}from"../../providers/post-message/use-post-message.js";import{isInIframe as D}from"../../utils/utils.js";import{waitForContentScripts as I}from"../../ScriptLoader.js";import{telemetry as N}from"../telemetry/index.js";const _=()=>{const e=f(),r=d(),a=l(),n=C(),[t,i]=P(),m=w(),{sendMessage:h}=R();v(()=>{if(e?.pathname.endsWith("/")&&e?.pathname!=="/"){r({pathname:E(e.pathname),search:e.search,hash:e.hash},{replace:!0,state:e.state});return}I().then(()=>{if(e.pathname!==t?.pathname||e.search!==t.search){y({location:e,prevLocation:t},m);const o=`${window.origin}${e.pathname+e.search+e.hash}`,s=t?`${window.origin}${t.pathname+t.search+t.hash}`:void 0;N.sendPageViewedMessage([{...M(o,"page",o),referrer:s||document.referrer||void 0}])}});const p=!!t;i(e);const{pathname:c,hash:g,state:u}=e;(process.env.NODE_ENV==="development"||D())&&p&&b(c+g,n?.templateId).then(o=>{const s=a==="POP"?"browser":u?.origin;s&&h({type:"route-updated",origin:s,...o})}).catch(o=>console.log("Resolve route by slug failed with error: ",o.message))},[e,a])};export{_ as useRouteChangeTracker};
@@ -1 +1 @@
1
- import*as o from"react";import{StoreProvider as v,RequestSamples as y,normalizeOptions as E}from"@redocly/openapi-docs";import{ErrorMessage as O,OpenApiComponentWrap as M}from"../styled.elements";import{useStore as b}from"../../hooks/use-store";import{getOperation as C}from"./get-operation/index";import{getMockServerDocsConfig as k}from"../../../../templates/openapi-docs/mock-server-config.js";function P(u){const{descriptionFile:d,operationId:a,pointer:m,exampleKey:s,mimeType:l,language:r,requestBody:f,parameters:g,environment:t,environments:n}=u,{store:e,error:S,baseSlug:c}=b(d),i=o.useMemo(()=>({...e?.options,...(r||null)&&{codeSamples:{languages:[{lang:r??""}]},mockServer:k(e?.options?.mockServer,c||"")}}),[r,e?.options,c]),p=o.useMemo(()=>{if(e)return C(e,{operationId:a,pointer:m},E(i),{exampleKey:s,mimeType:l,environments:n,environment:t})},[s,i,l,a,m,e,n,t]);return e?p?o.createElement(M,{"data-testid":"openapi-code-sample"},o.createElement(v,{options:i,definition:e.definition,withState:{environments:n,environment:t,operation:{pointer:p.pointer,state:{requestValues:{body:f,...g}}}}},o.createElement(y,{operation:p,disableFooter:!0}))):o.createElement("pre",{style:{color:"red"}},"Cannot find OpenAPI operation by operationId or pointer"):o.createElement(O,null,S)}export{P as OpenApiCodeSample};
1
+ import*as o from"react";import{StoreProvider as v,RequestSamples as y,normalizeOptions as E}from"@redocly/openapi-docs";import{ErrorMessage as O,OpenApiComponentWrap as M}from"../styled.elements";import{useStore as b}from"../../hooks/use-store";import{getOperation as C}from"../../../../../markdoc/helpers/get-operation/index.js";import{getMockServerDocsConfig as k}from"../../../../templates/openapi-docs/mock-server-config.js";function P(u){const{descriptionFile:d,operationId:a,pointer:m,exampleKey:s,mimeType:l,language:r,requestBody:f,parameters:g,environment:t,environments:n}=u,{store:e,error:S,baseSlug:c}=b(d),i=o.useMemo(()=>({...e?.options,...(r||null)&&{codeSamples:{languages:[{lang:r??""}]},mockServer:k(e?.options?.mockServer,c||"")}}),[r,e?.options,c]),p=o.useMemo(()=>{if(e)return C(e,{operationId:a,pointer:m},E(i),{exampleKey:s,mimeType:l,environments:n,environment:t})},[s,i,l,a,m,e,n,t]);return e?p?o.createElement(M,{"data-testid":"openapi-code-sample"},o.createElement(v,{options:i,definition:e.definition,withState:{environments:n,environment:t,operation:{pointer:p.pointer,state:{requestValues:{body:f,...g}}}}},o.createElement(y,{operation:p,disableFooter:!0}))):o.createElement("pre",{style:{color:"red"}},"Cannot find OpenAPI operation by operationId or pointer"):o.createElement(O,null,S)}export{P as OpenApiCodeSample};
@@ -1 +1 @@
1
- import*as e from"react";import{StoreProvider as S,ResponseSamples as v,normalizeOptions as g}from"@redocly/openapi-docs";import{ErrorMessage as b,OpenApiComponentWrap as E}from"../styled.elements";import{useStore as R}from"../../hooks/use-store";import{getOperation as C}from"./get-operation/index";import{getMockServerDocsConfig as O}from"../../../../templates/openapi-docs/mock-server-config.js";function x(a){const{descriptionFile:m,operationId:i,pointer:p,exampleKey:t}=a,{store:o,error:c,baseSlug:s}=R(m),[l,f]=e.useState(),r=e.useMemo(()=>({...o?.options,mockServer:O(o?.options?.mockServer,s||"")}),[o?.options,s]),n=e.useMemo(()=>{if(o)return C(o,{operationId:i,pointer:p},g(r),{exampleKey:t})},[t,r,i,p,o]),d=e.useCallback(u=>{f(u)},[]);return o?n?e.createElement(E,{"data-testid":"openapi-response-sample"},e.createElement(S,{options:r,definition:o.definition,withState:{operation:{pointer:n.pointer,state:{activeExampleName:t}}}},e.createElement(v,{operation:n,activeResponseTab:l,onTabChange:d}))):e.createElement("pre",{style:{color:"red"}},"Cannot find OpenAPI operation by operationId or pointer"):e.createElement(b,null,c)}export{x as OpenApiResponseSample};
1
+ import*as e from"react";import{StoreProvider as S,ResponseSamples as v,normalizeOptions as g}from"@redocly/openapi-docs";import{ErrorMessage as b,OpenApiComponentWrap as E}from"../styled.elements";import{useStore as R}from"../../hooks/use-store";import{getOperation as C}from"../../../../../markdoc/helpers/get-operation/index.js";import{getMockServerDocsConfig as O}from"../../../../templates/openapi-docs/mock-server-config.js";function x(a){const{descriptionFile:m,operationId:i,pointer:p,exampleKey:t}=a,{store:o,error:c,baseSlug:s}=R(m),[l,f]=e.useState(),r=e.useMemo(()=>({...o?.options,mockServer:O(o?.options?.mockServer,s||"")}),[o?.options,s]),n=e.useMemo(()=>{if(o)return C(o,{operationId:i,pointer:p},g(r),{exampleKey:t})},[t,r,i,p,o]),d=e.useCallback(u=>{f(u)},[]);return o?n?e.createElement(E,{"data-testid":"openapi-response-sample"},e.createElement(S,{options:r,definition:o.definition,withState:{operation:{pointer:n.pointer,state:{activeExampleName:t}}}},e.createElement(v,{operation:n,activeResponseTab:l,onTabChange:d}))):e.createElement("pre",{style:{color:"red"}},"Cannot find OpenAPI operation by operationId or pointer"):e.createElement(b,null,c)}export{x as OpenApiResponseSample};
@@ -1 +1 @@
1
- import o from"react";import{EmbeddedReplay as M,StoreProvider as b}from"@redocly/openapi-docs";import{useLocation as A}from"react-router-dom";import{Admonition as I}from"@redocly/theme/markdoc/components/Admonition/Admonition";import{ErrorMessage as P,OpenApiComponentWrap as x}from"../styled.elements.js";import{useStore as R}from"../../hooks/use-store.js";import{getOperation as C}from"./get-operation/index.js";import{getMockServerDocsConfig as y}from"../../../../templates/openapi-docs/mock-server-config.js";const L=S=>{const{descriptionFile:i,operationId:p,pointer:m,exampleKey:l,mimeType:u,requestBody:a,parameters:v,options:s,environment:r,environments:c,hideOtherSecuritySchemes:O}=S,h=A(),{store:e,error:g,baseSlug:t}=R(i),d=o.useMemo(()=>({...e?.options,...s}),[s,e?.options]),f=o.useMemo(()=>{const{mockServer:E,...k}=d;return{...k,mockServer:y(E,t??"")}},[d,t]),n=o.useMemo(()=>{if(e)return C(e,{operationId:p,pointer:m},f,{exampleKey:l,mimeType:u,environments:c,environment:r,requestBody:a})},[l,f,u,p,m,e,c,r,a]);return e?n?o.createElement(x,{"data-testid":"replay-openapi"},o.createElement(b,{key:`${h.pathname}-${i}-${p||m}`,options:{...s,disableRouter:!0,routingBasePath:t,mockServer:y(d.mockServer,t)},definition:e.definition,withState:{environments:c,allowedEnvironments:r?[r]:void 0,operation:{pointer:n.pointer,state:{requestValues:{body:a,...v}}}}},o.createElement(M,{activeOperationId:n.operationId||"",fullOpenApi:e.definition,corsProxyUrl:e.options.corsProxyUrl,pointer:n.pointer,hideOtherSecuritySchemes:O}))):o.createElement(I,{type:"danger"},"Cannot find OpenAPI operation by operationId or pointer in ",i):o.createElement(P,null,g)};export{L as ReplayOpenApi};
1
+ import o from"react";import{EmbeddedReplay as M,StoreProvider as b}from"@redocly/openapi-docs";import{useLocation as A}from"react-router-dom";import{Admonition as I}from"@redocly/theme/markdoc/components/Admonition/Admonition";import{ErrorMessage as P,OpenApiComponentWrap as x}from"../styled.elements.js";import{useStore as R}from"../../hooks/use-store.js";import{getOperation as C}from"../../../../../markdoc/helpers/get-operation/index.js";import{getMockServerDocsConfig as y}from"../../../../templates/openapi-docs/mock-server-config.js";const L=S=>{const{descriptionFile:i,operationId:p,pointer:m,exampleKey:l,mimeType:u,requestBody:a,parameters:v,options:s,environment:r,environments:c,hideOtherSecuritySchemes:O}=S,h=A(),{store:e,error:g,baseSlug:t}=R(i),d=o.useMemo(()=>({...e?.options,...s}),[s,e?.options]),f=o.useMemo(()=>{const{mockServer:E,...k}=d;return{...k,mockServer:y(E,t??"")}},[d,t]),n=o.useMemo(()=>{if(e)return C(e,{operationId:p,pointer:m},f,{exampleKey:l,mimeType:u,environments:c,environment:r,requestBody:a})},[l,f,u,p,m,e,c,r,a]);return e?n?o.createElement(x,{"data-testid":"replay-openapi"},o.createElement(b,{key:`${h.pathname}-${i}-${p||m}`,options:{...s,disableRouter:!0,routingBasePath:t,mockServer:y(d.mockServer,t)},definition:e.definition,withState:{environments:c,allowedEnvironments:r?[r]:void 0,operation:{pointer:n.pointer,state:{requestValues:{body:a,...v}}}}},o.createElement(M,{activeOperationId:n.operationId||"",fullOpenApi:e.definition,corsProxyUrl:e.options.corsProxyUrl,pointer:n.pointer,hideOtherSecuritySchemes:O}))):o.createElement(I,{type:"danger"},"Cannot find OpenAPI operation by operationId or pointer in ",i):o.createElement(P,null,g)};export{L as ReplayOpenApi};
@@ -1 +1 @@
1
- import t,{useEffect as g,useState as s}from"react";import{useNavigate as h}from"react-router-dom";import{Button as y}from"@redocly/theme/components/Button/Button";import{H3 as S}from"@redocly/theme/components/Typography/H3";import{H4 as v}from"@redocly/theme/components/Typography/H4";import{Admonition as w}from"@redocly/theme/components/Admonition/Admonition";import{getPathnameForLocale as E,withPathPrefix as P}from"@redocly/theme/core/utils";import{ServerRoutes as L}from"../../../../constants/api";import{telemetry as b}from"../../telemetry/index.js";import{buildLoginUrl as k}from"../../../../utils/auth/build-login-url";import{usePageProps as O}from"../../../providers/page-data/hooks";import{Wrapper as T,HeadingSection as C}from"./styled";import{DevLoginForm as R}from"./DevLoginForm";import{useL10nConfig as F}from"../../hooks";async function x(r){try{const{status:o}=await fetch(P(L.AUTHORIZATION),{method:"POST",body:JSON.stringify(r)});return o}catch(o){console.error(o)}}function G(){const{defaultLocale:r,locales:o,currentLocale:c}=F(),l=h(),[a,d]=s({values:{teams:[],email:"example@example.com"}}),[n,u]=s();g(()=>{const e=new URLSearchParams(window.location.search);u(e.get("redirectTo")||void 0)},[]);const i=O(),m=i?.authIdps,p=(i.rbac?.teams||[]).filter(e=>e!=="*"),f=async()=>{await x(a.values)===200&&(l(n||"/"),window.location.reload())};return t.createElement(T,null,t.createElement(C,null,t.createElement(S,{"data-cy":"login-title"},"Dev-mode login"),t.createElement(w,{type:"warning",name:"This is dev mode login simulator."},"Any email works and password is not checked.")),t.createElement(t.Fragment,null,t.createElement(R,{teams:p,formState:a,setFormState:d,onSubmit:f}),Object.keys(m||{}).length>0&&t.createElement(v,null,"Use SSO:"),Object.values(m||{}).map(e=>t.createElement("div",{key:e.idpId},t.createElement(y,{fullWidth:!0,size:"large","data-cy":"idp-login",to:k(e.idpId,E("",r,c,o),n),onClick:()=>b.sendLoginProviderButtonClickedMessage([{object:"button",provider:e.type}])},e.title||e.type)))))}export{G as default};
1
+ import t,{useEffect as g,useState as s}from"react";import{useNavigate as h}from"react-router-dom";import{Button as y}from"@redocly/theme/components/Button/Button";import{H3 as v}from"@redocly/theme/components/Typography/H3";import{H4 as S}from"@redocly/theme/components/Typography/H4";import{Admonition as w}from"@redocly/theme/components/Admonition/Admonition";import{getBaseDataAttributes as P,getPathnameForLocale as E,withPathPrefix as L}from"@redocly/theme/core/utils";import{ServerRoutes as b}from"../../../../constants/api";import{telemetry as k}from"../../telemetry/index.js";import{buildLoginUrl as O}from"../../../../utils/auth/build-login-url";import{usePageProps as T}from"../../../providers/page-data/hooks";import{Wrapper as C,HeadingSection as R}from"./styled";import{DevLoginForm as A}from"./DevLoginForm";import{useL10nConfig as F}from"../../hooks";async function x(r){try{const{status:o}=await fetch(L(b.AUTHORIZATION),{method:"POST",body:JSON.stringify(r)});return o}catch(o){console.error(o)}}function K(){const{defaultLocale:r,locales:o,currentLocale:c}=F(),l=h(),[a,d]=s({values:{teams:[],email:"example@example.com"}}),[i,u]=s();g(()=>{const e=new URLSearchParams(window.location.search);u(e.get("redirectTo")||void 0)},[]);const n=T(),m=n?.authIdps,p=(n.rbac?.teams||[]).filter(e=>e!=="*"),f=async()=>{await x(a.values)===200&&(l(i||"/"),window.location.reload())};return t.createElement(C,null,t.createElement(R,null,t.createElement(v,{"data-cy":"login-title"},"Dev-mode login"),t.createElement(w,{type:"warning",name:"This is dev mode login simulator."},"Any email works and password is not checked.")),t.createElement(t.Fragment,null,t.createElement(A,{teams:p,formState:a,setFormState:d,onSubmit:f}),Object.keys(m||{}).length>0&&t.createElement(S,null,"Use SSO:"),Object.values(m||{}).map(e=>t.createElement("div",{key:e.idpId},t.createElement(y,{fullWidth:!0,size:"large","data-cy":"idp-login",to:O(e.idpId,E("",r,c,o),i),onClick:()=>k.sendLoginProviderClickedMessage([{...P("loginProvider","button"),provider:e.type}])},e.title||e.type)))))}export{K as default};
@@ -1 +1 @@
1
- import{useCallback as b,useEffect as O,useState as E,useRef as w}from"react";import{SEARCH_DEBOUNCE_TIME_MS as q}from"@redocly/theme/core/constants";import{withPathPrefix as A}from"@redocly/theme/core/utils";import{ServerRoutes as j}from"../../../constants/api";import{SEARCH_GROUP_FACET_FIELD as v,SEARCH_PRODUCT_FIELD as L,SEARCH_VERSION_FIELD as M}from"../../../constants/common";import{debounce as Q}from"../../../utils/time/debounce.js";import{useSearchSession as U}from"@redocly/theme/core/contexts";import{useGlobalData as J,useI18nConfig as D}from"../hooks";import{usePageVersions as B}from"../../providers/page-data/hooks";import{useFacets as K}from"./useFacets";import{telemetry as $}from"../telemetry/index.js";const z=(o,c,r,a,s,u,f,n,l)=>{const{searchSessionId:y}=U(),{currentLocale:F}=D(),m=w(""),d=w(null),p=w(async(e,i)=>{try{u(null);const t=await fetch(A(j.SEARCH),i);if(!t.ok)throw new Error(t.statusText||`Search failed (${t.status})`);if(R(e)){const S=await t.json();a(S.facets),r(S.documents),d.current=null,e.trim().length>1&&$.sendSearchQueryMessage([{object:"search",query:e,resultCount:Object.keys(S.documents).length.toString(),searchSessionId:y,...n&&{product:n}}]),s(!1)}}catch(t){if(!R(e))return;d.current={query:e,requestParams:i},r({}),s(!1),u(t instanceof Error?t.message:"An unknown error occurred")}}),R=e=>m.current===e,h=b(Q(async(e,i,t,S)=>{if(!e.trim().length&&!i.length){r({}),a({}),s(!1),u(null),d.current=null;return}const I={method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({query:e,filter:H(i,S,f),locale:t})};await p.current(e,I)},q),[f?.version,f?.folderId,n]);return O(()=>{l||(s(!0),h(o,c,F,n),m.current=o)},[l,c,F,n,o,h,s]),{retrySearch:b(async()=>{const e=d.current;e&&(s(!0),m.current=e.query,await p.current(e.query,e.requestParams))},[s])}},W=(o,c,r,a,s,u,f,n,l)=>{const{currentLocale:y}=D();O(()=>{F(r,o,c,y,a,s,n,l)},[a,n,l?.version,l?.folderId]);const F=b(async(m,d,p,R,h,C,e,i)=>{if(h){const{groupKey:t}=h;f(!0);const I={method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({query:d,filter:(()=>{const g=C.find(_=>_.field===v);let P=p;return g&&(p.find(N=>N.field===g.field)||(P=[...p,{field:g.field,values:[t]}])),H(P,e,i)})(),loadMore:h,locale:R})},T=await(await fetch(A(j.SEARCH),I)).json(),k=m[t]||[],x=T.documents[t],G={...m,[t]:[...k,...x]};u(G),f(!1)}},[]);return{}};function ue(o,c){const{searchFeatures:r}=J(),[a,s]=E(""),[u,f]=E([]),[n,l]=E({}),[y,F]=E({}),[m,d]=E(),[p,R]=E(!1),[h,C]=E(null),{facets:e}=K(y),{versions:i=[]}=B()||{},t=i.find(I=>I?.active),{retrySearch:S}=z(a,u,l,F,R,C,t,o,c);return W(a,u,n,m,e,l,R,o,t),{query:a,setQuery:s,filter:u,setFilter:f,items:n,isSearchLoading:p,searchError:h,facets:e,groupField:v,setLoadMore:d,retrySearch:S,advancedSearch:r?.advanced?.enabled,askAi:r?.ai?.enabled}}function H(o,c,r){return[...o,...c?[{field:L,values:[c]}]:[],...r?[{field:M,values:[...r.default?["default"]:[r.folderId,r.version]]}]:[]]}export{ue as useSearch};
1
+ import{useCallback as b,useEffect as A,useState as E,useRef as w}from"react";import{SEARCH_DEBOUNCE_TIME_MS as Q}from"@redocly/theme/core/constants";import{getBaseDataAttributes as q,withPathPrefix as O}from"@redocly/theme/core/utils";import{ServerRoutes as D}from"../../../constants/api";import{SEARCH_GROUP_FACET_FIELD as v,SEARCH_PRODUCT_FIELD as L,SEARCH_VERSION_FIELD as M}from"../../../constants/common";import{debounce as U}from"../../../utils/time/debounce.js";import{useSearchSession as B}from"@redocly/theme/core/contexts";import{useGlobalData as J,useI18nConfig as H}from"../hooks";import{usePageVersions as K}from"../../providers/page-data/hooks";import{useFacets as $}from"./useFacets";import{telemetry as z}from"../telemetry/index.js";const W=(o,c,r,a,s,u,f,n,l)=>{const{searchSessionId:y}=B(),{currentLocale:F}=H(),m=w(""),d=w(null),p=w(async(e,i)=>{try{u(null);const t=await fetch(O(D.SEARCH),i);if(!t.ok)throw new Error(t.statusText||`Search failed (${t.status})`);if(R(e)){const S=await t.json();a(S.facets),r(S.documents),d.current=null,e.trim().length>1&&z.sendSearchQueryMessage([{...q("searchQuery","search"),query:e,resultCount:Object.keys(S.documents).length.toString(),searchSessionId:y,...n&&{product:n}}]),s(!1)}}catch(t){if(!R(e))return;d.current={query:e,requestParams:i},r({}),s(!1),u(t instanceof Error?t.message:"An unknown error occurred")}}),R=e=>m.current===e,h=b(U(async(e,i,t,S)=>{if(!e.trim().length&&!i.length){r({}),a({}),s(!1),u(null),d.current=null;return}const I={method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({query:e,filter:T(i,S,f),locale:t})};await p.current(e,I)},Q),[f?.version,f?.folderId,n]);return A(()=>{l||(s(!0),h(o,c,F,n),m.current=o)},[l,c,F,n,o,h,s]),{retrySearch:b(async()=>{const e=d.current;e&&(s(!0),m.current=e.query,await p.current(e.query,e.requestParams))},[s])}},X=(o,c,r,a,s,u,f,n,l)=>{const{currentLocale:y}=H();A(()=>{F(r,o,c,y,a,s,n,l)},[a,n,l?.version,l?.folderId]);const F=b(async(m,d,p,R,h,C,e,i)=>{if(h){const{groupKey:t}=h;f(!0);const I={method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({query:d,filter:(()=>{const g=C.find(_=>_.field===v);let P=p;return g&&(p.find(N=>N.field===g.field)||(P=[...p,{field:g.field,values:[t]}])),T(P,e,i)})(),loadMore:h,locale:R})},j=await(await fetch(O(D.SEARCH),I)).json(),k=m[t]||[],x=j.documents[t],G={...m,[t]:[...k,...x]};u(G),f(!1)}},[]);return{}};function le(o,c){const{searchFeatures:r}=J(),[a,s]=E(""),[u,f]=E([]),[n,l]=E({}),[y,F]=E({}),[m,d]=E(),[p,R]=E(!1),[h,C]=E(null),{facets:e}=$(y),{versions:i=[]}=K()||{},t=i.find(I=>I?.active),{retrySearch:S}=W(a,u,l,F,R,C,t,o,c);return X(a,u,n,m,e,l,R,o,t),{query:a,setQuery:s,filter:u,setFilter:f,items:n,isSearchLoading:p,searchError:h,facets:e,groupField:v,setLoadMore:d,retrySearch:S,advancedSearch:r?.advanced?.enabled,askAi:r?.ai?.enabled}}function T(o,c,r){return[...o,...c?[{field:L,values:[c]}]:[],...r?[{field:M,values:[...r.default?["default"]:[r.folderId,r.version]]}]:[]]}export{le as useSearch};
@@ -1 +1 @@
1
- import e from"react";import{ThemeDataContext as m,SearchSessionProvider as l}from"@redocly/theme/core/contexts";import{useAnchorPositioning as d,useBreadcrumbs as g,useBanner as p,useCatalogClassic as f,useCurrentProduct as b,useGlobalData as a,useI18n as h,useI18nConfig as C,useL10n as P,useL10nConfig as S,usePageData as r,usePageSharedData as T,usePageVersions as D,usePreloadHistory as k,useProducts as v,useUserMenu as F,useSubmitFeedback as M,useTranslate as E,useSidebarSiblingsData as L,usePageProps as R,useUserTeams as O,useMarkdownText as y,useMarkdocRenderer as A,useCodeHighlight as w,useLoadAndNavigate as x,useCatalog as I,useCatalogSort as j,useCatalogSearch as B,useFetchCatalogEntities as H,useFetchCatalogEntitiesRelations as N,useFetchCatalogEntityRevisions as U,useTelemetry as s,useMcpData as _}from"../../app/hooks";import{Link as G}from"../../app/Link";import{useFacetQuery as Q,useSearch as V,useAiSearch as W}from"../../app/search";import{useSidebarItems as q}from"../../app/Sidebar/useSidebarItems";import{deepMerge as z}from"../../../utils/object/deep-merge";import{allowlistObject as J}from"../../../utils/object/allowlist-object";const K=["title","description","seo","sidebar","excludeFromSearch","template","redirects","rbac","metadata","slug","codeSnippet","breadcrumbs","markdown","seo","navbar","footer","colorMode","feedback","navigation"],X={useAnchorPositioning:d,useBreadcrumbs:g,useBanner:p,useCatalog:I,useCatalogSort:j,useCatalogSearch:B,useFetchCatalogEntities:H,useFetchCatalogEntitiesRelations:N,useFetchCatalogEntityRevisions:U,useCatalogClassic:f,useCurrentProduct:b,useGlobalData:a,useSearch:V,useAiSearch:W,useFacetQuery:Q,useI18n:h,useI18nConfig:C,useL10n:P,useL10nConfig:S,usePageData:r,usePageSharedData:T,usePageVersions:D,usePreloadHistory:k,useProducts:v,useUserMenu:F,useSidebarItems:q,useSidebarSiblingsData:L,useSubmitFeedback:M,useTranslate:E,useUserTeams:O,usePageProps:R,useMarkdownText:y,useMarkdocRenderer:A,useCodeHighlight:w,useLoadAndNavigate:x,useTelemetry:s,useOtelTelemetry:s,useMcpData:_},Y={LinkComponent:G};function ne({children:n}){const{props:t}=r()||{},o=a()||{},u=e.useMemo(()=>{const c=J(t?.frontmatter||{},K);return z(o,c)},[o,t?.frontmatter]),i={hooks:X,components:Y,config:u};return e.createElement(l,null,e.createElement(m.Provider,{value:i},n))}export{ne as ThemeDataProvider};
1
+ import e from"react";import{ThemeDataContext as l,SearchSessionProvider as d}from"@redocly/theme/core/contexts";import{useAnchorPositioning as g,useBreadcrumbs as p,useBanner as b,useCatalogClassic as f,useCurrentProduct as h,useGlobalData as s,useI18n as C,useI18nConfig as P,useL10n as S,useL10nConfig as T,usePageData as r,usePageSharedData as D,usePageVersions as M,usePreloadHistory as k,useProducts as v,useUserMenu as F,useSubmitFeedback as E,useTranslate as L,useSidebarSiblingsData as R,usePageProps as y,useUserTeams as O,useMarkdownText as A,useMarkdocRenderer as w,useCodeHighlight as x,useLoadAndNavigate as I,useCatalog as j,useCatalogSort as B,useCatalogSearch as H,useFetchCatalogEntities as N,useFetchCatalogEntitiesRelations as U,useFetchCatalogEntityRevisions as _,useTelemetry as n,useMcpData as G}from"../../app/hooks";import{Link as Q}from"../../app/Link";import{useFacetQuery as V,useSearch as W,useAiSearch as q}from"../../app/search";import{useSidebarItems as z}from"../../app/Sidebar/useSidebarItems";import{deepMerge as J}from"../../../utils/object/deep-merge";import{allowlistObject as K}from"../../../utils/object/allowlist-object";const X=["title","description","seo","sidebar","excludeFromSearch","template","redirects","rbac","metadata","slug","codeSnippet","breadcrumbs","markdown","seo","navbar","footer","colorMode","feedback","navigation"],Y={useAnchorPositioning:g,useBreadcrumbs:p,useBanner:b,useCatalog:j,useCatalogSort:B,useCatalogSearch:H,useFetchCatalogEntities:N,useFetchCatalogEntitiesRelations:U,useFetchCatalogEntityRevisions:_,useCatalogClassic:f,useCurrentProduct:h,useGlobalData:s,useSearch:W,useAiSearch:q,useFacetQuery:V,useI18n:C,useI18nConfig:P,useL10n:S,useL10nConfig:T,usePageData:r,usePageSharedData:D,usePageVersions:M,usePreloadHistory:k,useProducts:v,useUserMenu:F,useSidebarItems:z,useSidebarSiblingsData:R,useSubmitFeedback:E,useTranslate:L,useUserTeams:O,usePageProps:y,useMarkdownText:A,useMarkdocRenderer:w,useCodeHighlight:x,useLoadAndNavigate:I,useTelemetry:n,useOtelTelemetry:n,useMcpData:G},Z={LinkComponent:Q};function ue({children:u}){const{props:t}=r()||{},a=s(),o=e.useMemo(()=>a||{},[a]),i=e.useMemo(()=>{const m=K(t?.frontmatter||{},X);return J(o,m)},[o,t?.frontmatter]),c={hooks:Y,components:Z,config:i};return e.createElement(d,null,e.createElement(l.Provider,{value:c},u))}export{ue as ThemeDataProvider};
@@ -0,0 +1 @@
1
+ import{getOperation as E,getServerEnvName as l,normalizeOptions as x,OpenAPIParser as h,getTagOrGroup as q}from"@redocly/openapi-docs";import{getOperationInfoById as v}from"./get-operation-info-by-id.js";import{getOperationInfoByPointer as y}from"./get-operation-info-by-pointer.js";function M(s,{operationId:i,pointer:f},m,{exampleKey:r,mimeType:a,environments:p,environment:d,requestBody:g}){let o;if(i?o=v(s.definition,i):f&&(o=y(s.definition,f)),!o)return;const O=new h(s.definition,void 0,x(s.options)),u=o.tags?.[0],B=u?q("group",{name:u},void 0):void 0,n=E(O,o,B,m,"");if(a&&n.requestBody?.content?.mediaTypes&&(n.requestBody.content.mediaTypes=n.requestBody?.content?.mediaTypes.filter(e=>e.name===a)),r&&(n.requestBody?.content?.mediaTypes.forEach(e=>{if(!e.examples)return;const t=e.examples[r];e.examples=t?{[r]:t}:{}}),n.responses?.forEach(e=>{e.content?.mediaTypes?.forEach(t=>{if(!t.examples)return;const c=t.examples[r];t.examples=c?{[r]:c}:{}})})),g&&n.requestBody?.content?.mediaTypes.forEach(e=>{e.examples={}}),p&&(n.servers=n.servers.map(e=>{const t=p?.[l(e)];return t?{...e,url:t.server||e.url}:e})),d){const e=n.servers.filter(t=>d===l(t));n.servers=e.length?e:n.servers}return n}export{M as getOperation};
@@ -0,0 +1,4 @@
1
+ export * from './get-operation-info-by-id.js';
2
+ export * from './get-operation-info-by-pointer.js';
3
+ export * from './get-operation.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ export*from"./get-operation-info-by-id.js";export*from"./get-operation-info-by-pointer.js";export*from"./get-operation.js";
@@ -0,0 +1,3 @@
1
+ import type { ResolvedSampleBlock } from '../../types/index.js';
2
+ export declare function getResolvedSampleCodeBlock({ lang, title, source }: ResolvedSampleBlock): string;
3
+ //# sourceMappingURL=get-resolved-sample-code-block.d.ts.map
@@ -0,0 +1,5 @@
1
+ function $({lang:n,title:e,source:o}){return`
2
+ \`\`\`${`${n||""}${e?`${n?" ":""}${e}`:""}`}
3
+ ${o.trimEnd()}
4
+ \`\`\`
5
+ `}export{$ as getResolvedSampleCodeBlock};
@@ -1 +1 @@
1
- import{DefinitionPath as t}from"../attributes/index.js";const a={schema:{attributes:{descriptionFile:{type:t,required:!0},pointer:{type:String,required:!1},operationId:{type:String,required:!1},exampleKey:{type:String,required:!1},mimeType:{type:String,required:!1},language:{type:String,required:!1},parameters:{type:Object,default:{},required:!1},requestBody:{type:Object,required:!1},environments:{type:Object,default:{},required:!1},environment:{type:String,required:!1}},validate(e){const r=[];return e.attributes.pointer&&e.attributes.operationId&&r.push({id:"pointer-and-operationId-attributes-are-mutually-exclusive",level:"error",message:'The "pointer" and "operationId" attributes are mutually exclusive, you can only use one.'}),!e.attributes.pointer&&!e.attributes.operationId&&r.push({id:"pointer-or-operationId-attribute-required",level:"error",message:'This tag requires the "pointer" or "operationId" attribute to render correctly.'}),r},render:"OpenApiCodeSample",selfClosing:!0,dynamicComponentLib:"openapi"},tagName:"openapi-code-sample"};export{a as openApiCodeSample};
1
+ import{DefinitionPath as a}from"../attributes/index.js";import{getNodeAttribute as o}from"../helpers/get-node-attribute.js";import{getResolvedSampleCodeBlock as p}from"../helpers/get-resolved-sample-code-block.js";const u={schema:{attributes:{descriptionFile:{type:a,required:!0},pointer:{type:String,required:!1},operationId:{type:String,required:!1},exampleKey:{type:String,required:!1},mimeType:{type:String,required:!1},language:{type:String,required:!1},parameters:{type:Object,default:{},required:!1},requestBody:{type:Object,required:!1},environments:{type:Object,default:{},required:!1},environment:{type:String,required:!1},codeSamplesResolved:{type:Array,required:!1,resolver:"openapiCodeSamples"}},validate(r){const e=[];return r.attributes.pointer&&r.attributes.operationId&&e.push({id:"pointer-and-operationId-attributes-are-mutually-exclusive",level:"error",message:'The "pointer" and "operationId" attributes are mutually exclusive, you can only use one.'}),!r.attributes.pointer&&!r.attributes.operationId&&e.push({id:"pointer-or-operationId-attribute-required",level:"error",message:'This tag requires the "pointer" or "operationId" attribute to render correctly.'}),e},render:"OpenApiCodeSample",selfClosing:!0,dynamicComponentLib:"openapi",renderForLlms(r){const e=o(r,"codeSamplesResolved");if(!Array.isArray(e)||e.length===0)return"";const t=e.find(({lang:i})=>i==="shell")??e[0];return p(t)}},tagName:"openapi-code-sample"};export{u as openApiCodeSample};
@@ -1 +1 @@
1
- import{DefinitionPath as r}from"../attributes/index.js";const o={schema:{attributes:{descriptionFile:{type:r,required:!0},pointer:{type:String,required:!1},operationId:{type:String,required:!1},exampleKey:{type:String,required:!1}},validate(e){const t=[];return e.attributes.pointer&&e.attributes.operationId&&t.push({id:"pointer-and-operationId-attributes-are-mutually-exclusive",level:"error",message:'The "pointer" and "operationId" attributes are mutually exclusive, you can only use one.'}),!e.attributes.pointer&&!e.attributes.operationId&&t.push({id:"pointer-or-operationId-attribute-required",level:"error",message:'This tag requires the "pointer" or "operationId" attribute to render correctly.'}),t},render:"OpenApiResponseSample",selfClosing:!0,dynamicComponentLib:"openapi"},tagName:"openapi-response-sample"};export{o as openApiResponseSample};
1
+ import{DefinitionPath as t}from"../attributes/index.js";import{getNodeAttribute as i}from"../helpers/get-node-attribute.js";import{getResolvedSampleCodeBlock as o}from"../helpers/get-resolved-sample-code-block.js";const n={schema:{attributes:{descriptionFile:{type:t,required:!0},pointer:{type:String,required:!1},operationId:{type:String,required:!1},exampleKey:{type:String,required:!1},responseSamplesResolved:{type:Array,required:!1,resolver:"openapiResponseSamples"}},validate(r){const e=[];return r.attributes.pointer&&r.attributes.operationId&&e.push({id:"pointer-and-operationId-attributes-are-mutually-exclusive",level:"error",message:'The "pointer" and "operationId" attributes are mutually exclusive, you can only use one.'}),!r.attributes.pointer&&!r.attributes.operationId&&e.push({id:"pointer-or-operationId-attribute-required",level:"error",message:'This tag requires the "pointer" or "operationId" attribute to render correctly.'}),e},render:"OpenApiResponseSample",selfClosing:!0,dynamicComponentLib:"openapi",renderForLlms(r){const e=i(r,"responseSamplesResolved");return!Array.isArray(e)||e.length===0?"":e.map(o).join("")}},tagName:"openapi-response-sample"};export{n as openApiResponseSample};
@@ -52,6 +52,7 @@ declare function loadEnvConfig(): {
52
52
  REDOCLY_EXP_LLMSTXT_AGENT_FEEDBACK_ENABLED?: boolean | undefined;
53
53
  REDOCLY_EXP_LLMSTXT_AGENT_FEEDBACK_URL?: string | undefined;
54
54
  REDOCLY_EXP_LLMSTXT_AGENT_ENDPOINT?: string | undefined;
55
+ REDOCLY_EXP_MCP_CODE_MODE_ENABLED?: boolean | undefined;
55
56
  SEARCH_DEV_REINIT?: string | undefined;
56
57
  SEARCH_DEV_DEBUG: boolean;
57
58
  TYPESENSE_API_URL?: string | undefined;
@@ -130,6 +131,7 @@ export declare const envConfig: {
130
131
  REDOCLY_EXP_LLMSTXT_AGENT_FEEDBACK_ENABLED?: boolean | undefined;
131
132
  REDOCLY_EXP_LLMSTXT_AGENT_FEEDBACK_URL?: string | undefined;
132
133
  REDOCLY_EXP_LLMSTXT_AGENT_ENDPOINT?: string | undefined;
134
+ REDOCLY_EXP_MCP_CODE_MODE_ENABLED?: boolean | undefined;
133
135
  SEARCH_DEV_REINIT?: string | undefined;
134
136
  SEARCH_DEV_DEBUG: boolean;
135
137
  TYPESENSE_API_URL?: string | undefined;
@@ -56,6 +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>;
59
60
  } & {
60
61
  SEARCH_DEV_REINIT: z.ZodOptional<z.ZodString>;
61
62
  SEARCH_DEV_DEBUG: z.ZodEffects<z.ZodDefault<z.ZodEnum<["true", "false"]>>, boolean, "false" | "true" | undefined>;
@@ -131,6 +132,7 @@ export declare const envSchema: z.ZodEffects<z.ZodObject<{
131
132
  REDOCLY_EXP_LLMSTXT_AGENT_FEEDBACK_ENABLED?: boolean | undefined;
132
133
  REDOCLY_EXP_LLMSTXT_AGENT_FEEDBACK_URL?: string | undefined;
133
134
  REDOCLY_EXP_LLMSTXT_AGENT_ENDPOINT?: string | undefined;
135
+ REDOCLY_EXP_MCP_CODE_MODE_ENABLED?: boolean | undefined;
134
136
  SEARCH_DEV_REINIT?: string | undefined;
135
137
  SEARCH_DEV_DEBUG: boolean;
136
138
  TYPESENSE_API_URL?: string | undefined;
@@ -199,6 +201,7 @@ export declare const envSchema: z.ZodEffects<z.ZodObject<{
199
201
  REDOCLY_EXP_LLMSTXT_AGENT_FEEDBACK_ENABLED?: "false" | "true" | undefined;
200
202
  REDOCLY_EXP_LLMSTXT_AGENT_FEEDBACK_URL?: string | undefined;
201
203
  REDOCLY_EXP_LLMSTXT_AGENT_ENDPOINT?: string | undefined;
204
+ REDOCLY_EXP_MCP_CODE_MODE_ENABLED?: "false" | "true" | undefined;
202
205
  SEARCH_DEV_REINIT?: string | undefined;
203
206
  SEARCH_DEV_DEBUG?: "false" | "true" | undefined;
204
207
  TYPESENSE_API_URL?: string | undefined;
@@ -267,6 +270,7 @@ export declare const envSchema: z.ZodEffects<z.ZodObject<{
267
270
  REDOCLY_EXP_LLMSTXT_AGENT_FEEDBACK_ENABLED?: boolean | undefined;
268
271
  REDOCLY_EXP_LLMSTXT_AGENT_FEEDBACK_URL?: string | undefined;
269
272
  REDOCLY_EXP_LLMSTXT_AGENT_ENDPOINT?: string | undefined;
273
+ REDOCLY_EXP_MCP_CODE_MODE_ENABLED?: boolean | undefined;
270
274
  SEARCH_DEV_REINIT?: string | undefined;
271
275
  SEARCH_DEV_DEBUG: boolean;
272
276
  TYPESENSE_API_URL?: string | undefined;
@@ -335,6 +339,7 @@ export declare const envSchema: z.ZodEffects<z.ZodObject<{
335
339
  REDOCLY_EXP_LLMSTXT_AGENT_FEEDBACK_ENABLED?: "false" | "true" | undefined;
336
340
  REDOCLY_EXP_LLMSTXT_AGENT_FEEDBACK_URL?: string | undefined;
337
341
  REDOCLY_EXP_LLMSTXT_AGENT_ENDPOINT?: string | undefined;
342
+ REDOCLY_EXP_MCP_CODE_MODE_ENABLED?: "false" | "true" | undefined;
338
343
  SEARCH_DEV_REINIT?: string | undefined;
339
344
  SEARCH_DEV_DEBUG?: "false" | "true" | undefined;
340
345
  TYPESENSE_API_URL?: string | undefined;
@@ -15,6 +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>;
18
20
  }, "strip", z.ZodTypeAny, {
19
21
  NEW_CATALOG_ENABLED?: boolean | undefined;
20
22
  NEW_SCORECARDS_ENABLED?: boolean | undefined;
@@ -25,6 +27,7 @@ export declare const featureFlagsSchema: z.ZodObject<{
25
27
  REDOCLY_EXP_LLMSTXT_AGENT_FEEDBACK_ENABLED?: boolean | undefined;
26
28
  REDOCLY_EXP_LLMSTXT_AGENT_FEEDBACK_URL?: string | undefined;
27
29
  REDOCLY_EXP_LLMSTXT_AGENT_ENDPOINT?: string | undefined;
30
+ REDOCLY_EXP_MCP_CODE_MODE_ENABLED?: boolean | undefined;
28
31
  }, {
29
32
  NEW_CATALOG_ENABLED?: "false" | "true" | undefined;
30
33
  NEW_SCORECARDS_ENABLED?: "false" | "true" | undefined;
@@ -35,5 +38,6 @@ export declare const featureFlagsSchema: z.ZodObject<{
35
38
  REDOCLY_EXP_LLMSTXT_AGENT_FEEDBACK_ENABLED?: "false" | "true" | undefined;
36
39
  REDOCLY_EXP_LLMSTXT_AGENT_FEEDBACK_URL?: string | undefined;
37
40
  REDOCLY_EXP_LLMSTXT_AGENT_ENDPOINT?: string | undefined;
41
+ REDOCLY_EXP_MCP_CODE_MODE_ENABLED?: "false" | "true" | undefined;
38
42
  }>;
39
43
  //# sourceMappingURL=feature-flags.d.ts.map
@@ -1 +1 @@
1
- import{z as E}from"zod";import{envBooleanStringOptional as _}from"../../utils/envs/env-boolean-string.js";const o=E.object({NEW_CATALOG_ENABLED:_(),NEW_SCORECARDS_ENABLED:_(),ENABLE_COMMENTS:E.string().optional(),REDOCLY_EXP_DISABLE_MD_VALIDATION:_(),ENABLE_SOURCE_MAPS:_(),PLAN_GATES:E.string().optional(),REDOCLY_EXP_LLMSTXT_AGENT_FEEDBACK_ENABLED:_(),REDOCLY_EXP_LLMSTXT_AGENT_FEEDBACK_URL:E.string().optional(),REDOCLY_EXP_LLMSTXT_AGENT_ENDPOINT:E.string().optional()});export{o 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_EXP_MCP_CODE_MODE_ENABLED:E()});export{o as featureFlagsSchema};
@@ -49,4 +49,6 @@ export declare const OTEL_TRACES_DEV_URL = "http://localhost:4318/v1/traces";
49
49
  export declare const OTEL_EXCLUDED_ROUTES: "/_health"[];
50
50
  export declare const SERVER_EDITOR_APP_URL: string;
51
51
  export declare const ALLOWED_CORS_ORIGINS: string[];
52
+ export declare const MARKDOC_PARTIALS_DATA_KEY = "markdown/partials";
53
+ export declare const MARKDOC_PARTIALS_DEPS_KEY = "markdown/partials-deps";
52
54
  //# sourceMappingURL=common.d.ts.map
@@ -1 +1 @@
1
- import{ServerRoutes as L}from"../../constants/api.js";import{USER_THEME_ALIAS as c}from"../../constants/common.js";import{envConfig as _}from"../config/env-config.js";const N="runtime",x="/assets",U="/_spec",P="/_bundle",l="static",M="redocly:::linkOriginal",a="@",i="default",m=new RegExp("((?!@i18n\\/|@l10n\\/)\\/?@.*?(?=\\/))","g"),H="@redocly/theme/plugin.js",F="styles.css",G=["@theme/plugin.js","@theme/plugin.cjs","@theme/plugin.mjs"],u=_.JWT_SECRET_KEY||"test_secret_key",A="@i18n",p="@l10n",Y=[c,A,p],d="https://redocly.com/auth/aud",g="catalog.json",B="scorecard.json",h="page-count.json",K="sitemap.xml",J="llms.txt",R=_.PROJECT_ID,e=_.PROJECT_SLUG,n=_.ORGANIZATION_ID,s=_.ORG_SLUG,E=_.BH_API_URL,t=E&&s&&e?`${E}/orgs/${s}/projects/${e}`:void 0,o=E&&n&&R?`${E}/orgs/${n}/projects/${R}`: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,$=t?`${t}/feedback`:"",f=o?`${o}/ai-agentic-conversations`:"",j=o?`${o}/semantic-search`:"",V=t&&`${t}/registry/apis`,X=t&&`${t}/registry/paths`,k="no-store",w=365*24*60*60,y="X-Redocly-Cache-Control",v="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_=[L.HEALTH],r=_.SERVER_EDITOR_APP_URL||"http://127.0.0.1:3000",e_=_.REDOCLY_CORS_ORIGINS?_.REDOCLY_CORS_ORIGINS.split(",").map(I=>I.trim()).filter(Boolean).concat(r):[r];export{e_ as ALLOWED_CORS_ORIGINS,d as ALTERNATIVE_AUD_CLAIM_NAME,f as ASK_AI_API_URL,Z as AUTH_URL,__ as BEGIN_CERTIFICATE_DELIMITER,t as BH_API_PROJECTS_URL,o as BH_API_PROJECTS_URL_V2,k as CACHE_CONTROL_NO_STORE_HEADER_VALUE,v as CACHE_CONTROL_PUBLIC_HTML,g as CATALOG_OUTPUT_FILE_NAME,w as DEFAULT_IMMUTABLE_CACHE_MAX_AGE,G as DEFAULT_PROJECT_PLUGIN_PATHS,H 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,W as ENTITLEMENTS_JWKS_URL,$ as FEEDBACK_API_URL,A as I18N_DIR_NAME,u as JWT_SECRET_KEY,p as L10N_DIR_NAME,M as LINK_ORIGINAL_ATTR_NAME,J as LLMS_TXT_FILE_NAME,n as ORG_ID,s as ORG_SLUG,R_ as OTEL_EXCLUDED_ROUTES,o_ as OTEL_TRACES_DEV_URL,h as PAGE_COUNT_OUTPUT_FILE_NAME,R as PROJECT_ID,e as PROJECT_SLUG,P as PUBLIC_API_DEFINITIONS_FOLDER,x as PUBLIC_ASSETS_FOLDER,l as PUBLIC_STATIC_FOLDER,V as REGISTRY_APIS_API_URL,X as REGISTRY_APIS_PATHS_API_URL,Y as RESERVED_DIR_NAMES,N as RUNTIME_RESOURCES_DIR,B as SCORECARD_OUTPUT_FILE_NAME,j as SEMANTIC_SEARCH_API_URL,r as SERVER_EDITOR_APP_URL,K as SITEMAP_FILE_NAME,T as SSR_RENDER_MODE,Q as SSR_WORKERS_MAX,z as SSR_WORKERS_MIN,F as STYLES_FILE,t_ as TELEMETRY_ENABLED,m as VERSIONED_FOLDER_REGEXP_MATCH,a as VERSION_SEPARATOR,y as X_REDOCLY_CACHE_CONTROL_HEADER,b as X_REDOCLY_CACHE_CONTROL_PUBLIC_HTML};
1
+ import{ServerRoutes as I}from"../../constants/api.js";import{USER_THEME_ALIAS as L}from"../../constants/common.js";import{envConfig as _}from"../config/env-config.js";const x="runtime",N="/assets",U="/_spec",P="/_bundle",a="static",l="redocly:::linkOriginal",M="@",i="default",m=new RegExp("((?!@i18n\\/|@l10n\\/)\\/?@.*?(?=\\/))","g"),H="@redocly/theme/plugin.js",F="styles.css",G=["@theme/plugin.js","@theme/plugin.cjs","@theme/plugin.mjs"],u=_.JWT_SECRET_KEY||"test_secret_key",c="@i18n",p="@l10n",Y=[L,c,p],d="https://redocly.com/auth/aud",K="catalog.json",g="scorecard.json",B="page-count.json",h="sitemap.xml",J="llms.txt",R=_.PROJECT_ID,e=_.PROJECT_SLUG,n=_.ORGANIZATION_ID,s=_.ORG_SLUG,E=_.BH_API_URL,t=E&&s&&e?`${E}/orgs/${s}/projects/${e}`:void 0,o=E&&n&&R?`${E}/orgs/${n}/projects/${R}`: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,$=t?`${t}/feedback`:"",f=o?`${o}/ai-agentic-conversations`:"",j=o?`${o}/semantic-search`:"",k=t&&`${t}/registry/apis`,w=t&&`${t}/registry/paths`,V="no-store",X=365*24*60*60,y="X-Redocly-Cache-Control",v="no-cache",b="public, s-maxage=86400, max-age=10, must-revalidate",Z=_.AUTH_URL,q="Developer Documentation",r=_.REDOCLY_SSR_RENDER_MODE==="worker"?"worker":"main",z=r==="main"?0:_.REDOCLY_SSR_WORKERS_MIN!=null?Number(_.REDOCLY_SSR_WORKERS_MIN):2,Q=r==="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],T=_.SERVER_EDITOR_APP_URL||"http://127.0.0.1:3000",e_=_.REDOCLY_CORS_ORIGINS?_.REDOCLY_CORS_ORIGINS.split(",").map(A=>A.trim()).filter(Boolean).concat(T):[T],n_="markdown/partials",s_="markdown/partials-deps";export{e_ as ALLOWED_CORS_ORIGINS,d as ALTERNATIVE_AUD_CLAIM_NAME,f as ASK_AI_API_URL,Z as AUTH_URL,__ as BEGIN_CERTIFICATE_DELIMITER,t as BH_API_PROJECTS_URL,o as BH_API_PROJECTS_URL_V2,V as CACHE_CONTROL_NO_STORE_HEADER_VALUE,v as CACHE_CONTROL_PUBLIC_HTML,K as CATALOG_OUTPUT_FILE_NAME,X as DEFAULT_IMMUTABLE_CACHE_MAX_AGE,G as DEFAULT_PROJECT_PLUGIN_PATHS,H 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,W as ENTITLEMENTS_JWKS_URL,$ as FEEDBACK_API_URL,c as I18N_DIR_NAME,u as JWT_SECRET_KEY,p as L10N_DIR_NAME,l as LINK_ORIGINAL_ATTR_NAME,J as LLMS_TXT_FILE_NAME,n_ as MARKDOC_PARTIALS_DATA_KEY,s_ as MARKDOC_PARTIALS_DEPS_KEY,n as ORG_ID,s as ORG_SLUG,R_ as OTEL_EXCLUDED_ROUTES,o_ as OTEL_TRACES_DEV_URL,B as PAGE_COUNT_OUTPUT_FILE_NAME,R as PROJECT_ID,e as PROJECT_SLUG,P as PUBLIC_API_DEFINITIONS_FOLDER,N as PUBLIC_ASSETS_FOLDER,a as PUBLIC_STATIC_FOLDER,k as REGISTRY_APIS_API_URL,w as REGISTRY_APIS_PATHS_API_URL,Y as RESERVED_DIR_NAMES,x as RUNTIME_RESOURCES_DIR,g as SCORECARD_OUTPUT_FILE_NAME,j as SEMANTIC_SEARCH_API_URL,T as SERVER_EDITOR_APP_URL,h as SITEMAP_FILE_NAME,r as SSR_RENDER_MODE,Q as SSR_WORKERS_MAX,z as SSR_WORKERS_MIN,F as STYLES_FILE,t_ as TELEMETRY_ENABLED,m as VERSIONED_FOLDER_REGEXP_MATCH,M as VERSION_SEPARATOR,y as X_REDOCLY_CACHE_CONTROL_HEADER,b as X_REDOCLY_CACHE_CONTROL_PUBLIC_HTML};
@@ -1 +1 @@
1
- import{DEFAULT_ANONYMOUS_VISITOR_TEAM as e,DEFAULT_AUTHENTICATED_TEAM as t}from"../../../constants/common.js";const _="flexsearch",A=["text","title","path","httpPath","parameters[]:name","parameters[]:description","parameters[]:place","parameters[]:path"],o="Documentation",r="API Reference",p="search",T=100,a=10,n=20,s=100,c=150,I="ai-search",S=50,C=250,R=Symbol("metadata"),D={id:"",url:"",title:"",text:"",security:[],parameters:[{place:"",mediaType:void 0,name:"",description:"",path:[],type:"object",required:!1,example:void 0,enum:void 0}],rbacTeams:[e,t]},N=!0,x=["title"];export{I as AI_INDEX_EXPORT_FOLDER,S as AI_SEARCH_CHUNK_SIZE,C as AI_SEARCH_DOCUMENT_CHUNK_SIZE,D as BASE_SEARCH_DOCUMENT,N as DEFAULT_AI_SEARCH_ENABLED,_ as DEFAULT_SEARCH_ENGINE,x as DISABLE_DEEP_LINK_IF_FIELDS_EXIST,c as HIGHLIGHTED_TEXT_MAX_LENGTH,p as SEARCH_DATA_EXPORT_FOLDER,R as SEARCH_DOCUMENT_METADATA_KEY,a as SEARCH_GROUP_LIMIT,r as SEARCH_GROUP_NAME_API,o as SEARCH_GROUP_NAME_DOCUMENTATION,A as SEARCH_INDEX_FIELDS,T as SEARCH_LIMIT,n as SEARCH_MAX_FACET_VALUES,s as SEARCH_MAX_INMEMORY_DOCUMENTS_COUNT};
1
+ import{DEFAULT_ANONYMOUS_VISITOR_TEAM as e,DEFAULT_AUTHENTICATED_TEAM as t}from"../../../constants/common.js";const _="flexsearch",A=["title","text","path","httpPath","parameters[]:name","parameters[]:description","parameters[]:place","parameters[]:path"],o="Documentation",r="API Reference",p="search",T=100,a=10,n=20,s=100,c=150,I="ai-search",S=50,C=250,R=Symbol("metadata"),D={id:"",url:"",title:"",text:"",security:[],parameters:[{place:"",mediaType:void 0,name:"",description:"",path:[],type:"object",required:!1,example:void 0,enum:void 0}],rbacTeams:[e,t]},N=!0,x=["title"];export{I as AI_INDEX_EXPORT_FOLDER,S as AI_SEARCH_CHUNK_SIZE,C as AI_SEARCH_DOCUMENT_CHUNK_SIZE,D as BASE_SEARCH_DOCUMENT,N as DEFAULT_AI_SEARCH_ENABLED,_ as DEFAULT_SEARCH_ENGINE,x as DISABLE_DEEP_LINK_IF_FIELDS_EXIST,c as HIGHLIGHTED_TEXT_MAX_LENGTH,p as SEARCH_DATA_EXPORT_FOLDER,R as SEARCH_DOCUMENT_METADATA_KEY,a as SEARCH_GROUP_LIMIT,r as SEARCH_GROUP_NAME_API,o as SEARCH_GROUP_NAME_DOCUMENTATION,A as SEARCH_INDEX_FIELDS,T as SEARCH_LIMIT,n as SEARCH_MAX_FACET_VALUES,s as SEARCH_MAX_INMEMORY_DOCUMENTS_COUNT};
@@ -0,0 +1,4 @@
1
+ import type { MediaContentModel } from '@redocly/openapi-docs/lib/models/types.js';
2
+ import type { ResolvedSampleBlock } from '../../../../../types/index.js';
3
+ export declare function getMediaContentSamples(content: MediaContentModel | undefined, exampleKey: string | undefined, titlePrefix: string): ResolvedSampleBlock[];
4
+ //# sourceMappingURL=get-media-content-samples.d.ts.map
@@ -0,0 +1 @@
1
+ import{convertSampleToString as p}from"@redocly/openapi-docs/lib/services/code-samples/convertSampleToString.js";import{langFromMime as r}from"@redocly/openapi-docs/lib/utils/openapi.js";import{getExampleValueByMimeType as c}from"@redocly/openapi-docs/lib/services/code-samples/get-example-value-by-mime-type.js";function d(o,t,l){const a=[];if(!o?.hasSample)return a;for(const e of o.mediaTypes??[]){const n=e.examples||e.formExamples||{},m=Object.keys(n);if(!m.length)continue;const s=m.length===1?n[m[0]]:t&&n[t]||n[m[0]],i=p(s.value,e.name,e.schema);i!==void 0&&a.push({lang:r(e.name),title:`${l} ${e.name}`,source:c(i,e.name,s.encoding)})}return a}export{d as getMediaContentSamples};
@@ -0,0 +1,7 @@
1
+ import type { Node } from '@markdoc/markdoc';
2
+ import type { LifecycleContext } from '../../../../types';
3
+ import type { BundledDefinition } from '../../../openapi-docs/load-definition.js';
4
+ type OpenapiBundle = Pick<BundledDefinition, 'definition' | 'rawOptions'>;
5
+ export declare function loadOpenapiBundle(node: Node, context: LifecycleContext): Promise<OpenapiBundle | undefined>;
6
+ export {};
7
+ //# sourceMappingURL=load-openapi-bundle.d.ts.map
@@ -0,0 +1 @@
1
+ import{OPENAPI_SHARED_DATA_PREFIX as n}from"../../../../constants/plugins/openapi-docs.js";import{getNodeAttribute as a}from"../../../../../markdoc/helpers/get-node-attribute.js";import{logger as d}from"../../../../tools/notifiers/logger.js";async function l(r,i){const e=a(r,"descriptionFile");if(typeof e!="string"||!e.startsWith(n))return;const o=e.slice(n.length);try{const{data:t}=await i.cache.load(o,"load-oas");return t?.[0]}catch(t){d.verbose(`Failed to load OpenAPI definition ${o} for the ${r.tag} tag: ${t instanceof Error?t.message:"Unknown error"}`);return}}export{l as loadOpenapiBundle};
@@ -1 +1 @@
1
- import{resolveOpenApiRef as e}from"./resolve-open-api-ref.js";import{resolveJsonSchemaRef as r}from"./resolve-json-schema-ref.js";import{resolveParsedYaml as o}from"./resolve-parsed-yaml.js";import{resolveRawContent as m}from"./resolve-raw-content.js";import{resolveSvgContent as t}from"./resolve-svg-content.js";import{resolveRelativePath as i}from"./resolve-relative-path.js";import{resolveLink as l}from"./resolve-link.js";import{resolveNativeMdLink as a}from"./resolve-native-md-link.js";import{resolveCodeSnippetFromFile as s}from"./resolve-code-snippet-from-file.js";import{resolveDiagramFromFile as p}from"./resolve-diagram-from-file.js";import{resolveHtmlSourceAttribute as n}from"./resolve-html-source-attribute.js";import{resolveHtmlHref as v}from"./resolve-html-href.js";import{resolveImageSrc as f}from"./resolve-image-src.js";import{resolveImageSrcSet as S}from"./resolve-image-src-set.js";import{resolveImageGallery as c}from"./resolve-image-gallery.js";import{resolveNavLinks as g}from"./resolve-nav-links.js";import{resolveRelativeOrCdnIcon as h}from"./resolve-relative-or-cdn-icon.js";import{resolveCodeWalkthroughFilesets as d}from"./code-walkthrough/filesets-resolver.js";import{resolveJsonExampleRef as F}from"./resolve-json-example-ref.js";import{resolveSampleFromJsonSchema as R}from"./resolve-sample-from-json-schema.js";const Y={openapiRef:e,jsonSchemaRef:r,parsedYaml:o,rawContent:m,svgContent:t,relativePath:i,link:l,nativeMdLink:a,codeSnippetFile:s,diagramFile:p,htmlSourceAttribute:n,htmlHref:v,imageSrc:f,imageSrcSet:S,imageGallery:c,navLinks:g,relativeOrCdnIcon:h,codeWalkthroughFilesets:d,jsonExampleRef:F,sampleFromJsonSchema:R};export{Y as attributeResolvers};
1
+ import{resolveOpenApiRef as e}from"./resolve-open-api-ref.js";import{resolveJsonSchemaRef as o}from"./resolve-json-schema-ref.js";import{resolveParsedYaml as r}from"./resolve-parsed-yaml.js";import{resolveRawContent as m}from"./resolve-raw-content.js";import{resolveSvgContent as t}from"./resolve-svg-content.js";import{resolveRelativePath as i}from"./resolve-relative-path.js";import{resolveLink as l}from"./resolve-link.js";import{resolveNativeMdLink as p}from"./resolve-native-md-link.js";import{resolveCodeSnippetFromFile as s}from"./resolve-code-snippet-from-file.js";import{resolveDiagramFromFile as a}from"./resolve-diagram-from-file.js";import{resolveHtmlSourceAttribute as n}from"./resolve-html-source-attribute.js";import{resolveHtmlHref as v}from"./resolve-html-href.js";import{resolveImageSrc as f}from"./resolve-image-src.js";import{resolveImageSrcSet as S}from"./resolve-image-src-set.js";import{resolveImageGallery as c}from"./resolve-image-gallery.js";import{resolveNavLinks as d}from"./resolve-nav-links.js";import{resolveRelativeOrCdnIcon as g}from"./resolve-relative-or-cdn-icon.js";import{resolveCodeWalkthroughFilesets as h}from"./code-walkthrough/filesets-resolver.js";import{resolveJsonExampleRef as R}from"./resolve-json-example-ref.js";import{resolveSampleFromJsonSchema as C}from"./resolve-sample-from-json-schema.js";import{resolveOpenapiCodeSamples as F}from"./resolve-openapi-code-samples.js";import{resolveOpenapiResponseSamples as k}from"./resolve-openapi-response-samples.js";const B={openapiRef:e,jsonSchemaRef:o,parsedYaml:r,rawContent:m,svgContent:t,relativePath:i,link:l,nativeMdLink:p,codeSnippetFile:s,diagramFile:a,htmlSourceAttribute:n,htmlHref:v,imageSrc:f,imageSrcSet:S,imageGallery:c,navLinks:d,relativeOrCdnIcon:g,codeWalkthroughFilesets:h,jsonExampleRef:R,sampleFromJsonSchema:C,openapiCodeSamples:F,openapiResponseSamples:k};export{B as attributeResolvers};
@@ -0,0 +1,4 @@
1
+ import type { Node } from '@markdoc/markdoc';
2
+ import type { MarkdocResolveContext } from '../../../types';
3
+ export declare function resolveOpenapiCodeSamples(node: Node, attrName: string, _relativePath: string, { context }: MarkdocResolveContext): Promise<void>;
4
+ //# sourceMappingURL=resolve-openapi-code-samples.d.ts.map
@@ -0,0 +1 @@
1
+ import{normalizeOptions as y}from"@redocly/openapi-docs";import{buildCodeSamples as f}from"@redocly/openapi-docs/lib/services/code-samples/build-code-samples.js";import{getOperation as v}from"../../../../markdoc/helpers/get-operation/index.js";import{setNodeAttributeValue as O}from"../../../../markdoc/helpers/set-node-attribute-value.js";import{getMediaContentSamples as S}from"./helpers/get-media-content-samples.js";import{loadOpenapiBundle as b}from"./helpers/load-openapi-bundle.js";import{getOptionalAttribute as a}from"./utils.js";const h={curl:"shell",JavaScript:"javascript","Node.js":"javascript",Python:"python",Java:"java","Java8+Apache":"java","C#":"csharp","C#+Newtonsoft":"csharp",PHP:"php",Go:"go",Ruby:"ruby",R:"r"},C=(e,n)=>typeof n=="string"?n:String(e??"");async function K(e,n,w,{context:u}){const o=await b(e,u);if(!o)return;const m=a(e,"language"),r={exampleKey:a(e,"exampleKey"),mimeType:a(e,"mimeType"),parameters:a(e,"parameters"),requestBody:a(e,"requestBody"),environments:a(e,"environments"),environment:a(e,"environment")},c=m?{...o.rawOptions,codeSamples:{...o.rawOptions.codeSamples,languages:[{lang:m}]}}:o.rawOptions,i=y(c),s=v({definition:o.definition,options:c},{operationId:a(e,"operationId"),pointer:a(e,"pointer")},i,r);if(!s)return;const p=f(s,i,o.definition,r,C).map(t=>({lang:h[t.lang]??t.lang.toLowerCase(),title:t.label??t.lang,source:t.source})),g=i.codeSamples.languages??[],l=g.find(({lang:t})=>t==="Payload");if(l){const t=S(s.payload?.requestBodyContent,r.exampleKey,l.label??"Payload"),d=g.indexOf(l);p.splice(d,0,...t)}p.length&&O(e,n,p)}export{K as resolveOpenapiCodeSamples};
@@ -0,0 +1,4 @@
1
+ import type { Node } from '@markdoc/markdoc';
2
+ import type { MarkdocResolveContext } from '../../../types';
3
+ export declare function resolveOpenapiResponseSamples(node: Node, attrName: string, _relativePath: string, { context }: MarkdocResolveContext): Promise<void>;
4
+ //# sourceMappingURL=resolve-openapi-response-samples.d.ts.map