@redocly/openapi-docs 3.15.0-rc.5 → 3.15.0

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 (72) hide show
  1. package/dist/redocly-openapi-docs.min.js +4324 -3482
  2. package/lib/components/ApiInfo/ApiInfo.js +1 -1
  3. package/lib/components/ApiInfo/Metadata.js +1 -1
  4. package/lib/components/ContentItem/ContentItem.js +1 -1
  5. package/lib/components/Discriminator/DefaultMappingOption.d.ts +5 -0
  6. package/lib/components/Discriminator/DefaultMappingOption.js +15 -0
  7. package/lib/components/Discriminator/Discriminator.js +16 -2
  8. package/lib/components/Download/DownloadSpecification.js +2 -2
  9. package/lib/components/ExpandAllButton/ExpandAllButton.js +1 -1
  10. package/lib/components/Language/LanguageList.js +1 -1
  11. package/lib/components/McpOverview/McpOverview.js +3 -7
  12. package/lib/components/McpTool/McpTool.d.ts +1 -1
  13. package/lib/components/McpTool/McpTool.js +1 -1
  14. package/lib/components/McpTool/index.d.ts +0 -2
  15. package/lib/components/McpTool/index.js +1 -1
  16. package/lib/components/Overview/Overview.js +1 -1
  17. package/lib/components/PanelItem/styled.js +5 -9
  18. package/lib/components/RedoclyOpenAPIDocs/Providers.js +1 -1
  19. package/lib/components/RedoclyOpenAPIDocs/RedoclyOpenAPIDocs.js +1 -1
  20. package/lib/components/RedoclyOpenAPIDocs/RedoclyOpenAPIDocsStandalone.js +1 -1
  21. package/lib/components/RedoclyOpenAPIDocs/styled.js +6 -2
  22. package/lib/components/RedoclyOpenAPIDocs/types.d.ts +3 -0
  23. package/lib/components/Replay/Replay.js +1 -1
  24. package/lib/components/RequestSamples/Example.js +1 -1
  25. package/lib/components/RequestSamples/RequestSamples.js +1 -1
  26. package/lib/components/RightPanel/RightPanel.js +1 -5
  27. package/lib/components/Samples/ExampleSwitch.js +1 -1
  28. package/lib/components/SchemaCatalogLink/tests/SchemaCatalogLink.test.js +1 -1
  29. package/lib/components/SectionContent/SectionContent.js +4 -4
  30. package/lib/components/ServerList/ServerList.js +11 -11
  31. package/lib/components/ServerListDropdown/ServerListDropdown.js +1 -1
  32. package/lib/components/SideMenu/hooks/useMenuItems.js +1 -1
  33. package/lib/components/TagItem/OperationsNavigation.js +2 -2
  34. package/lib/components/TagItem/TagItem.js +6 -7
  35. package/lib/components/common/Dropdown/Dropdown.d.ts +3 -3
  36. package/lib/components/common/Dropdown/Dropdown.js +9 -9
  37. package/lib/components/common/Fields/fields.js +3 -5
  38. package/lib/components/common/SchemaSelection/SchemaSelection.d.ts +2 -2
  39. package/lib/components/common/SchemaSelection/SchemaSelection.js +1 -1
  40. package/lib/hooks/index.d.ts +1 -1
  41. package/lib/hooks/index.js +1 -1
  42. package/lib/hooks/useRouter.js +1 -1
  43. package/lib/icons/DefaultMappingIcon/DefaultMappingIcon.d.ts +4 -0
  44. package/lib/icons/DefaultMappingIcon/DefaultMappingIcon.js +8 -0
  45. package/lib/icons/DefaultMappingIcon/index.d.ts +1 -0
  46. package/lib/icons/DefaultMappingIcon/index.js +1 -0
  47. package/lib/index.d.ts +0 -1
  48. package/lib/index.js +1 -1
  49. package/lib/models/group.js +1 -1
  50. package/lib/models/mediaType.js +1 -1
  51. package/lib/models/schema.d.ts +2 -1
  52. package/lib/models/schema.js +2 -2
  53. package/lib/models/types.d.ts +2 -0
  54. package/lib/services/menu/builder.js +1 -1
  55. package/lib/services/menu/markdown.js +1 -1
  56. package/lib/services/menu/tags.js +2 -4
  57. package/lib/services/types.d.ts +2 -7
  58. package/lib/standalone.js +1 -1
  59. package/lib/types/open-api.d.ts +3 -13
  60. package/lib/utils/loadAndBundleSpec.js +1 -1
  61. package/lib/utils/mcp.d.ts +1 -1
  62. package/lib/utils/mcp.js +1 -1
  63. package/lib/utils/menu.js +1 -1
  64. package/lib/utils/openapi.js +1 -1
  65. package/lib/utils/string.js +1 -1
  66. package/package.json +11 -9
  67. package/lib/components/McpTool/McpPrompt.d.ts +0 -6
  68. package/lib/components/McpTool/McpPrompt.js +0 -9
  69. package/lib/components/McpTool/McpResource.d.ts +0 -7
  70. package/lib/components/McpTool/McpResource.js +0 -14
  71. package/lib/components/RedoclyOpenAPIDocs/Error.d.ts +0 -3
  72. package/lib/components/RedoclyOpenAPIDocs/Error.js +0 -25
@@ -1,6 +1,6 @@
1
- import{jsx as r,jsxs as x}from"react/jsx-runtime";import{useMemo as A,memo as N,useState as j,useCallback as E}from"react";import{useNavigate as I}from"react-router-dom";import{LayoutVariant as W}from"@redocly/config";import{useAtomValue as B}from"jotai/index";import{SamplesPanel as _}from"../common/index.js";import{layoutAtom as V}from"../../jotai/app.js";import{OperationNavigationItems as p}from"./OperationNavigationItems.js";import{StyledButton as z}from"./styled.js";import{useTranslate as D}from"../../hooks/index.js";import{styled as K}from"../../styled-components.js";import{isRenderableMenuItem as L}from"../../utils/menu.js";const l=8;function X({items:m,routingBasePath:n}){const o=D(),[i,y]=j(!1),c=I(),P=B(V)===W.STACKED,{operations:u,webhooks:h,schemas:f,mcpTools:d,showMoreCount:g,totalCount:w,mcpResources:k,mcpPrompts:C}=A(()=>{const s=m.filter(e=>L(e)),b=i?s:s.slice(0,l),{operations:v,webhooks:S,schemas:M,mcpTools:T,mcpResources:O,mcpPrompts:R}=b.reduce((e,t)=>(t.type==="operation"&&t.isWebhook?e.webhooks.push(t):t.type==="operation"?e.operations.push(t):t.type==="schema"?e.schemas.push(t):t.type==="tool"?e.mcpTools.push(t):t.type==="rsrc"?e.mcpResources.push(t):t.type==="prompt"&&e.mcpPrompts.push(t),e),{operations:[],webhooks:[],schemas:[],mcpTools:[],mcpResources:[],mcpPrompts:[]});return{operations:v,schemas:M,mcpTools:T,webhooks:S,mcpResources:O,mcpPrompts:R,showMoreCount:!i&&s.length>l?s.length-l:0,totalCount:s.length}},[i,m]),a=E(s=>c(s),[c]);return w?x(q,{isStacked:P,"data-testid":"operation-navigation-list",children:[f.length>0&&r(p,{items:f,onClick:a,routingBasePath:n,translate:o,title:o("openapi.schemas","Schemas")}),d.length>0&&r(p,{items:d,onClick:a,routingBasePath:n,translate:o,title:o("openapi.mcp.tools","MCP Tools")}),k.length>0&&r(p,{items:k,onClick:a,routingBasePath:n,translate:o,title:o("openapi.mcp.resources","MCP Resources")}),C.length>0&&r(p,{items:C,onClick:a,routingBasePath:n,translate:o,title:o("openapi.mcp.prompts","MCP Prompts")}),u.length>0&&r(p,{items:u,onClick:a,routingBasePath:n,translate:o,title:o("openapi.operations","Operations")}),h.length>0&&r(p,{items:h,onClick:a,routingBasePath:n,translate:o,title:o("openapi.webhooks","Webhooks")}),!i&&!!g&&x(z,{variant:"link",size:"large","data-testid":"show-more-operations",fullWidth:!0,onClick:()=>y(!0),children:[o("openapi.actions.show","Show")," ",g," ",o("openapi.actions.more","more"),"..."]})]}):null}const no=N(X),q=K(_)`
1
+ import{jsx as r,jsxs as k}from"react/jsx-runtime";import{useMemo as O,memo as M,useState as A,useCallback as N}from"react";import{useNavigate as j}from"react-router-dom";import{LayoutVariant as E}from"@redocly/config";import{useAtomValue as I}from"jotai/index";import{SamplesPanel as P}from"../common/index.js";import{layoutAtom as W}from"../../jotai/app.js";import{OperationNavigationItems as l}from"./OperationNavigationItems.js";import{StyledButton as B}from"./styled.js";import{useTranslate as _}from"../../hooks/index.js";import{styled as R}from"../../styled-components.js";import{isRenderableMenuItem as V}from"../../utils/menu.js";const p=8;function z({items:m,routingBasePath:n}){const o=_(),[a,x]=A(!1),c=j(),C=I(W)===E.STACKED,{operations:h,webhooks:u,schemas:f,mcpTools:d,showMoreCount:g,totalCount:y}=O(()=>{const e=m.filter(s=>V(s)),w=a?e:e.slice(0,p),{operations:b,webhooks:v,schemas:S,mcpTools:T}=w.reduce((s,t)=>(t.type==="operation"&&t.isWebhook?s.webhooks.push(t):t.type==="operation"?s.operations.push(t):t.type==="schema"?s.schemas.push(t):t.type==="mcp"&&s.mcpTools.push(t),s),{operations:[],webhooks:[],schemas:[],mcpTools:[]});return{operations:b,schemas:S,mcpTools:T,webhooks:v,showMoreCount:!a&&e.length>p?e.length-p:0,totalCount:e.length}},[a,m]),i=N(e=>c(e),[c]);return y?k(D,{isStacked:C,"data-testid":"operation-navigation-list",children:[f.length>0&&r(l,{items:f,onClick:i,routingBasePath:n,translate:o,title:o("openapi.schemas","Schemas")}),d.length>0&&r(l,{items:d,onClick:i,routingBasePath:n,translate:o,title:o("openapi.mcp.tools","MCP Tools")}),h.length>0&&r(l,{items:h,onClick:i,routingBasePath:n,translate:o,title:o("openapi.operations","Operations")}),u.length>0&&r(l,{items:u,onClick:i,routingBasePath:n,translate:o,title:o("openapi.webhooks","Webhooks")}),!a&&!!g&&k(B,{variant:"link",size:"large","data-testid":"show-more-operations",fullWidth:!0,onClick:()=>x(!0),children:[o("openapi.actions.show","Show")," ",g," ",o("openapi.actions.more","more"),"..."]})]}):null}const oo=M(z),D=R(P)`
2
2
  display: flex;
3
3
  flex-direction: column;
4
4
  gap: var(--spacing-xxs);
5
5
  padding-top: var(--spacing-xxl);
6
- `;export{no as OperationsNavigation,X as OperationsNavigationComponent};
6
+ `;export{oo as OperationsNavigation,z as OperationsNavigationComponent};
@@ -1,4 +1,4 @@
1
- import{jsx as t,jsxs as a}from"react/jsx-runtime";import{memo as u,useCallback as v}from"react";import{useNavigate as x}from"react-router-dom";import{useAtomValue as k}from"jotai";import{LayoutVariant as b}from"@redocly/config";import{Markdown as w}from"@redocly/theme/components/Markdown/Markdown";import{breakpoints as S}from"@redocly/theme/core/openapi";import{Button as y}from"@redocly/theme/components/Button/Button";import{PageActions as M}from"@redocly/theme/components/PageActions/PageActions";import{H2 as T}from"@redocly/theme/components/Typography/H2";import{LinkIcon as $}from"@redocly/theme/icons/LinkIcon/LinkIcon";import{joinWithSeparator as j}from"../../services/history/helpers.js";import{Row as C,SamplesMiddlePanel as I,SamplesPanel as A,ShareLink as P}from"../common/index.js";import{Markdown as W}from"../Markdown/index.js";import{OperationsNavigation as B}from"./OperationsNavigation.js";import{layoutAtom as L}from"../../jotai/app.js";import{useTranslate as D}from"../../hooks/index.js";import{styled as n}from"../../styled-components.js";function H({item:o,routingBasePath:e="",isExpanded:m}){const l=D(),{description:c,name:s,href:g}=o,p=x(),d=k(L),i=j(e,o.href),f=v(()=>{p(i)},[p,i]),r=!!o.items.length,h=d===b.STACKED;return a(N,{expanded:m,children:[a(C,{layout:d,children:[a(I,{fullWidth:!r,isStacked:h,children:[a(_,{children:[t(P,{to:g,"aria-label":`link to ${s}`}),s,t(M,{pageSlug:i})]}),t(W,{source:c})]}),r&&t(B,{items:o.items,routingBasePath:e})]}),r&&!m&&a(V,{type:"button",variant:"text",size:"medium",onClick:f,children:["+ ",l("openapi.actions.show","Show")]})]})}const ro=u(H),N=n.div`
1
+ import{jsx as a,jsxs as t}from"react/jsx-runtime";import{memo as u,useCallback as v}from"react";import{useNavigate as x}from"react-router-dom";import{useAtomValue as k}from"jotai";import{LayoutVariant as b}from"@redocly/config";import{Markdown as S}from"@redocly/theme/components/Markdown/Markdown";import{breakpoints as w}from"@redocly/theme/core/openapi";import{Button as y}from"@redocly/theme/components/Button/Button";import{PageActions as M}from"@redocly/theme/components/PageActions/PageActions";import{H2 as T}from"@redocly/theme/components/Typography/H2";import{LinkIcon as $}from"@redocly/theme/icons/LinkIcon/LinkIcon";import{joinWithSeparator as j}from"../../services/history/helpers.js";import{Row as C,SamplesMiddlePanel as I,SamplesPanel as A,ShareLink as P}from"../common/index.js";import{Markdown as W}from"../Markdown/index.js";import{OperationsNavigation as B}from"./OperationsNavigation.js";import{layoutAtom as L}from"../../jotai/app.js";import{useTranslate as D}from"../../hooks/index.js";import{styled as r}from"../../styled-components.js";function H({item:o,routingBasePath:e="",isExpanded:m}){const l=D(),{description:c,name:s,href:g}=o,p=x(),d=k(L),i=j(e,o.href),f=v(()=>{p(i)},[p,i]),n=!!o.items.length,h=d===b.STACKED;return t(N,{expanded:m,children:[t(C,{layout:d,children:[t(I,{fullWidth:!n,isStacked:h,children:[t(_,{children:[a(P,{to:g,"aria-label":`link to ${s}`}),s,a(M,{pageSlug:i})]}),a(W,{source:c})]}),n&&a(B,{items:o.items,routingBasePath:e})]}),n&&!m&&t(V,{type:"button",variant:"text",size:"medium",onClick:f,children:["+ ",l("openapi.actions.show","Show")]})]})}const no=u(H),N=r.div`
2
2
  padding-top: var(--spacing-lg);
3
3
  padding-bottom: ${({expanded:o})=>o?"var(--spacing-xxl)":""};
4
4
 
@@ -7,22 +7,22 @@ import{jsx as t,jsxs as a}from"react/jsx-runtime";import{memo as u,useCallback a
7
7
  E.g. SchemaDefinition, McpTool
8
8
  padding is added by the TagItem itself
9
9
  */
10
- ${w} ${A} {
10
+ ${S} ${A} {
11
11
  padding-left: 0;
12
12
  padding-right: 0;
13
13
  }
14
- `,V=n(y)`
14
+ `,V=r(y)`
15
15
  margin: var(--spacing-md) var(--spacing-xl) var(--spacing-xxs);
16
16
  width: calc(100% - var(--spacing-xl) * 2);
17
17
 
18
- @media screen and (min-width: ${S.medium}) {
18
+ @media screen and (min-width: ${w.medium}) {
19
19
  --button-margin-md: calc(var(--spacing-xl) * 2);
20
20
 
21
21
  margin-left: var(--button-margin-md);
22
22
  margin-right: var(--button-margin-md);
23
23
  width: calc(100% - var(--button-margin-md) * 2);
24
24
  }
25
- `,_=n(T)`
25
+ `,_=r(T)`
26
26
  display: flex;
27
27
  :hover {
28
28
  ${$} {
@@ -30,5 +30,4 @@ import{jsx as t,jsxs as a}from"react/jsx-runtime";import{memo as u,useCallback a
30
30
  visibility: visible;
31
31
  }
32
32
  }
33
- overflow-wrap: break-word;
34
- `;export{ro as TagItem,H as TagItemComponent};
33
+ `;export{no as TagItem,H as TagItemComponent};
@@ -1,8 +1,8 @@
1
- import type { SelectOption } from '@redocly/theme/core/openapi';
1
+ import type { SegmentedOption } from '@redocly/theme/core/openapi';
2
2
  export interface DropdownProps<T> {
3
3
  value: T;
4
- onChange: ({ label, value }: SelectOption<T>) => void;
5
- options: SelectOption<T>[];
4
+ onChange: ({ label, value }: SegmentedOption<T>) => void;
5
+ options: SegmentedOption<T>[];
6
6
  className?: string;
7
7
  triggerVariant?: 'ghost' | 'outlined';
8
8
  triggerSize?: string;
@@ -1,8 +1,8 @@
1
- import{jsx as r,Fragment as p,jsxs as w}from"react/jsx-runtime";import{useMemo as y,useState as S}from"react";import{Dropdown as k}from"@redocly/theme/components/Dropdown/Dropdown";import{CheckmarkIcon as C}from"@redocly/theme/icons/CheckmarkIcon/CheckmarkIcon";import{DropdownMenu as D}from"@redocly/theme/components/Dropdown/DropdownMenu";import{DropdownMenuItem as I}from"@redocly/theme/components/Dropdown/DropdownMenuItem";import{Button as j}from"@redocly/theme/components/Button/Button";import{SearchIcon as z}from"@redocly/theme/icons/SearchIcon/SearchIcon";import{typedMemo as M}from"@redocly/theme/core/openapi";import{styled as n}from"../../../styled-components.js";import{useTranslate as N}from"../../../hooks/index.js";function A({options:o,value:t,onChange:l,className:f,triggerVariant:g="outlined",triggerSize:u="small",withSearch:v=!1}){const[i,s]=S(""),c=N(),d=o.find(e=>e.value===t)?.label,h=y(()=>o.filter(e=>e.label?.toLowerCase().includes(i.toLowerCase())??!1),[o,i]);if(o.length===1)return r(R,{children:d});const x=e=>{s(e.target.value)},b=()=>v?w(p,{children:[r(L,{prefix:r(_,{children:r(z,{color:"var(--icon-color-additional)",onClick:e=>e.stopPropagation()})}),content:r(F,{placeholder:c("openapi.discriminator.searchPlaceholder","Search items"),onClick:e=>e.stopPropagation(),onChange:x,value:i})}),r(T,{children:h.length?h.map(e=>r(a,{active:e.value===t,onAction:()=>l(e),suffix:e.value===t&&r(m,{}),children:e.label},e.label)):r(P,{content:c("openapi.discriminator.searchNoResults","No items found")})})]}):r(p,{children:o.map(e=>r(a,{active:e.value===t,onAction:()=>l(e),suffix:e.value===t&&r(m,{}),children:e.label},e.label))});return r(k,{className:f,trigger:r(j,{variant:g,size:u,type:"button",children:d}),withArrow:!0,onClose:()=>s(""),children:r(D,{children:b()})})}const U=M(A),m=n(C)`
1
+ import{jsx as r,jsxs as s,Fragment as f}from"react/jsx-runtime";import g,{useMemo as k,useState as C}from"react";import{Dropdown as D}from"@redocly/theme/components/Dropdown/Dropdown";import{CheckmarkIcon as I}from"@redocly/theme/icons/CheckmarkIcon/CheckmarkIcon";import{DropdownMenu as j}from"@redocly/theme/components/Dropdown/DropdownMenu";import{DropdownMenuItem as z}from"@redocly/theme/components/Dropdown/DropdownMenuItem";import{Button as M}from"@redocly/theme/components/Button/Button";import{SearchIcon as F}from"@redocly/theme/icons/SearchIcon/SearchIcon";import{typedMemo as N}from"@redocly/theme/core/openapi";import{styled as n}from"../../../styled-components.js";import{useTranslate as A}from"../../../hooks/index.js";function P({options:t,value:o,onChange:d,className:v,triggerVariant:x="outlined",triggerSize:b="small",withSearch:w=!1}){const[l,h]=C(""),m=A(),a=t.find(e=>e.value===o),p=k(()=>t.filter(e=>e.label?.toLowerCase().includes(l.toLowerCase())??!1),[t,l]);if(t.length===1)return r(V,{children:a?.element||a?.label});const y=e=>{h(e.target.value)},S=()=>w?s(f,{children:[r(R,{prefix:r(L,{children:r(F,{color:"var(--icon-color-additional)",onClick:e=>e.stopPropagation()})}),content:r(O,{placeholder:m("openapi.discriminator.searchPlaceholder","Search items"),onClick:e=>e.stopPropagation(),onChange:y,value:l})}),r(_,{children:p.length?p.map((e,c)=>s(g.Fragment,{children:[e.divider,r(i,{active:e.value===o,onAction:()=>d(e),suffix:e.value===o&&r(u,{}),children:e.element||e.label},e.label)]},c)):r(T,{content:m("openapi.discriminator.searchNoResults","No items found")})})]}):r(f,{children:t.map((e,c)=>s(g.Fragment,{children:[e.divider,r(i,{active:e.value===o,onAction:()=>d(e),suffix:e.value===o&&r(u,{}),children:e.element||e.label},e.label)]},c))});return r(D,{className:v,trigger:r(M,{variant:x,size:b,type:"button",children:a?.element||a?.label}),withArrow:!0,onClose:()=>h(""),children:r(j,{children:S()})})}const Y=N(P),u=n(I)`
2
2
  width: 16px;
3
3
  height: 16px;
4
4
  margin-left: auto;
5
- `,a=n(I)`
5
+ `,i=n(z)`
6
6
  --dropdown-menu-item-justify-content: space-between;
7
7
 
8
8
  width: 100%;
@@ -12,23 +12,23 @@ import{jsx as r,Fragment as p,jsxs as w}from"react/jsx-runtime";import{useMemo a
12
12
  padding: var(--spacing-xxs) var(--spacing-sm);
13
13
  font-size: var(--font-size-base);
14
14
  line-height: var(--line-height-base);
15
- `,L=n(a)`
15
+ `,R=n(i)`
16
16
  gap: 0;
17
17
  padding: var(--spacing-xxs) var(--spacing-xs);
18
18
  &:hover {
19
19
  background-color: transparent;
20
20
  }
21
- `,P=n(a)`
21
+ `,T=n(i)`
22
22
  height: 66px;
23
23
  justify-content: center;
24
24
  &:hover,
25
25
  &:focus-visible {
26
26
  background-color: transparent;
27
27
  }
28
- `,T=n.div`
28
+ `,_=n.div`
29
29
  overflow-y: auto;
30
30
  max-height: 300px;
31
- `,_=n.div`
31
+ `,L=n.div`
32
32
  display: flex;
33
33
  align-items: center;
34
34
  justify-content: center;
@@ -36,7 +36,7 @@ import{jsx as r,Fragment as p,jsxs as w}from"react/jsx-runtime";import{useMemo a
36
36
  height: 24px;
37
37
  cursor: pointer;
38
38
  flex-shrink: 0;
39
- `,F=n.input`
39
+ `,O=n.input`
40
40
  width: 100%;
41
41
  border: none;
42
42
  outline: none;
@@ -51,7 +51,7 @@ import{jsx as r,Fragment as p,jsxs as w}from"react/jsx-runtime";import{useMemo a
51
51
  &::placeholder {
52
52
  color: var(--search-trigger-color);
53
53
  }
54
- `,R=n.span`
54
+ `,V=n.span`
55
55
  margin-right: var(--spacing-unit);
56
56
  cursor: default;
57
57
  background: none;
@@ -62,4 +62,4 @@ import{jsx as r,Fragment as p,jsxs as w}from"react/jsx-runtime";import{useMemo a
62
62
  line-height: var(--line-height-lg);
63
63
  font-family: var(--font-family-base);
64
64
  font-weight: var(--font-weight-regular);
65
- `;export{U as Dropdown};
65
+ `;export{Y as Dropdown};
@@ -7,7 +7,7 @@ import{Button as t}from"@redocly/theme/components/Button/Button";import{styled a
7
7
  color: var(--schema-type-text-color);
8
8
  `,d=r(o)`
9
9
  color: var(--schema-type-text-color);
10
- `,p=r(o)`
10
+ `,m=r(o)`
11
11
  color: var(--schema-type-title-text-color);
12
12
  word-break: break-word;
13
13
  `,c=r(o).attrs({as:"div"})`
@@ -16,7 +16,7 @@ import{Button as t}from"@redocly/theme/components/Button/Button";import{styled a
16
16
  line-height: var(--schema-labels-line-height);
17
17
  font-weight: normal;
18
18
  display: block;
19
- `,m=r(o)`
19
+ `,p=r(o)`
20
20
  color: var(--schema-property-required-label-text-color);
21
21
  font-size: var(--font-size-base);
22
22
  line-height: var(--line-height-base);
@@ -32,8 +32,6 @@ import{Button as t}from"@redocly/theme/components/Button/Button";import{styled a
32
32
  color: var(--text-color-secondary);
33
33
  display: inline-flex;
34
34
  word-break: var(--code-word-break);
35
- align-items: center;
36
- gap: var(--spacing-xxs);
37
35
  `,v=r(e)`
38
36
  color: var(--schema-property-access-label-text-color);
39
37
  background-color: var(--bg-color);
@@ -91,4 +89,4 @@ import{Button as t}from"@redocly/theme/components/Button/Button";import{styled a
91
89
  padding: 0;
92
90
  font-size: var(--font-size-sm);
93
91
  line-height: var(--line-height-sm);
94
- `;export{v as AccessLabel,b as AdditionalPropertiesLabel,u as ConstraintItem,x as DefaultValue,g as EnumValue,l as ExampleValue,f as ExtensionValue,o as FieldLabel,a as FieldValueLabel,c as PropertyLabel,h as RecursiveLabel,m as RequiredLabel,e as Tag,y as ToggleButton,d as TypeName,i as TypePrefix,p as TypeTitle};
92
+ `;export{v as AccessLabel,b as AdditionalPropertiesLabel,u as ConstraintItem,x as DefaultValue,g as EnumValue,l as ExampleValue,f as ExtensionValue,o as FieldLabel,a as FieldValueLabel,c as PropertyLabel,h as RecursiveLabel,p as RequiredLabel,e as Tag,y as ToggleButton,d as TypeName,i as TypePrefix,m as TypeTitle};
@@ -1,7 +1,7 @@
1
- import type { SelectOption } from '@redocly/theme/core/openapi';
1
+ import type { SegmentedOption } from '@redocly/theme/core/openapi';
2
2
  import type { SchemaModel } from '../../../models/index.js';
3
3
  interface SchemaSelectionProps {
4
- options: SelectOption<number>[];
4
+ options: SegmentedOption<number>[];
5
5
  onChange?: (idx: number) => void;
6
6
  pointer: string;
7
7
  schema: SchemaModel;
@@ -1 +1 @@
1
- import{jsx as m}from"react/jsx-runtime";import{useCallback as h,useEffect as v,useRef as A,useState as T}from"react";import{useAtom as g}from"jotai";import{Segmented as w}from"@redocly/theme/components/Segmented/Segmented";import{isUndefined as I}from"@redocly/theme/core/openapi";import{Dropdown as x}from"../Dropdown/index.js";import{operationStore as y}from"../../../jotai/operation.js";const L=5,R=7;function _({options:t,onChange:r,pointer:u,schema:n,defaultOneOfIdx:d}){const[S,c]=g(y(u)),p=S.activeOneOf[n.pointer]??d,o=t[p]?.value,[i,E]=T(!1),s=A(null);v(()=>{if(!s.current)return;const e=()=>{const O=s.current?.querySelectorAll('button[role="tab"]'),a=Array.from(O||[]).some(l=>l.offsetWidth<l.scrollWidth);a!==i&&E(a)};return e(),window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[i,t]);const f=h(({value:e})=>{e!==void 0&&(r?r(e):c({activeExampleName:n.oneOf?.[e]?.title,activeOneOf:{[n.pointer]:e},requestValues:{body:null}}))},[r,n.oneOf,n.pointer,c]);return I(o)?null:t.length>L||i?m(x,{options:t,value:o,withSearch:t.length>=R,onChange:f}):m(w,{ref:s,value:o,onChange:f,options:t,size:"small","data-testid":"segmented-schema"})}const k=_;export{k as SchemaSelection};
1
+ import{jsx as m}from"react/jsx-runtime";import{useCallback as h,useEffect as v,useRef as A,useState as T}from"react";import{useAtom as g}from"jotai";import{isUndefined as w}from"@redocly/theme/core/openapi";import{Segmented as I}from"@redocly/theme/components/Segmented/Segmented";import{Dropdown as x}from"../Dropdown/index.js";import{operationStore as y}from"../../../jotai/operation.js";const L=5,R=7;function _({options:t,onChange:r,pointer:u,schema:n,defaultOneOfIdx:d}){const[S,c]=g(y(u)),p=S.activeOneOf[n.pointer]??d,o=t[p]?.value,[i,E]=T(!1),s=A(null);v(()=>{if(!s.current)return;const e=()=>{const O=s.current?.querySelectorAll('button[role="tab"]'),a=Array.from(O||[]).some(l=>l.offsetWidth<l.scrollWidth);a!==i&&E(a)};return e(),window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[i,t]);const f=h(({value:e})=>{e!==void 0&&(r?r(e):c({activeExampleName:n.oneOf?.[e]?.title,activeOneOf:{[n.pointer]:e},requestValues:{body:null}}))},[r,n.oneOf,n.pointer,c]);return w(o)?null:t.length>L||i?m(x,{options:t,value:o,withSearch:t.length>=R,onChange:f}):m(I,{ref:s,value:o,onChange:f,options:t,size:"small","data-testid":"segmented-schema"})}const k=_;export{k as SchemaSelection};
@@ -3,6 +3,6 @@ export { useRouter } from './useRouter.js';
3
3
  export { useContentItems } from './useContentItems.js';
4
4
  export { useActiveWithFallback } from './useActiveWithFallback.js';
5
5
  export { useTranslate } from './useTranslate.js';
6
- export { useUppercase2LowercaseRedirect } from './useUppercase2LowercaseRedirect.js';
7
6
  export { useTelemetry } from './useTelemetry.js';
7
+ export { useUppercase2LowercaseRedirect } from './useUppercase2LowercaseRedirect.js';
8
8
  export { usePerformanceMetrics } from './usePerformanceMetrics.js';
@@ -1 +1 @@
1
- import{useActivateExample as o}from"./useActivateExample.js";import{useRouter as s}from"./useRouter.js";import{useContentItems as p}from"./useContentItems.js";import{useActiveWithFallback as f}from"./useActiveWithFallback.js";import{useTranslate as x}from"./useTranslate.js";import{useUppercase2LowercaseRedirect as i}from"./useUppercase2LowercaseRedirect.js";import{useTelemetry as n}from"./useTelemetry.js";import{usePerformanceMetrics as A}from"./usePerformanceMetrics.js";export{o as useActivateExample,f as useActiveWithFallback,p as useContentItems,A as usePerformanceMetrics,s as useRouter,n as useTelemetry,x as useTranslate,i as useUppercase2LowercaseRedirect};
1
+ import{useActivateExample as o}from"./useActivateExample.js";import{useRouter as s}from"./useRouter.js";import{useContentItems as p}from"./useContentItems.js";import{useActiveWithFallback as f}from"./useActiveWithFallback.js";import{useTranslate as x}from"./useTranslate.js";import{useTelemetry as i}from"./useTelemetry.js";import{useUppercase2LowercaseRedirect as n}from"./useUppercase2LowercaseRedirect.js";import{usePerformanceMetrics as A}from"./usePerformanceMetrics.js";export{o as useActivateExample,f as useActiveWithFallback,p as useContentItems,A as usePerformanceMetrics,s as useRouter,i as useTelemetry,x as useTranslate,n as useUppercase2LowercaseRedirect};
@@ -1 +1 @@
1
- import{BrowserRouter as s,HashRouter as m,MemoryRouter as n}from"react-router-dom";const u={history:s,memory:n,hash:m},a=(o,r)=>{const e=u[o],t={...o!=="memory"&&{basename:r}};return{Router:e,routerProps:t}};export{a as useRouter};
1
+ import{BrowserRouter as s,HashRouter as a,MemoryRouter as n}from"react-router-dom";const m={history:s,memory:n,hash:a},R=(e,o)=>{const r=m[e],t={...e!=="memory"&&{basename:o,feature:{v7_startTransition:!1,v7_relativeSplatPath:!1}}};return{Router:r,routerProps:t}};export{R as useRouter};
@@ -0,0 +1,4 @@
1
+ type IconProps = React.SVGProps<SVGSVGElement>;
2
+ export declare const Icon: (props: IconProps) => import("react/jsx-runtime").JSX.Element;
3
+ export declare const DefaultMappingIcon: any;
4
+ export {};
@@ -0,0 +1,8 @@
1
+ import{jsx as t,jsxs as a}from"react/jsx-runtime";import{styled as C}from"../../styled-components.js";const r=o=>a("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg",...o,children:[t("path",{d:"M10.5 9.75H9.375V9H10.5V3H9.375V2.25H10.5C10.6988 2.25023 10.8895 2.32932 11.0301 2.46992C11.1707 2.61052 11.2498 2.80116 11.25 3V9C11.2497 9.19883 11.1706 9.38944 11.03 9.53003C10.8894 9.67063 10.6988 9.74973 10.5 9.75Z"}),t("path",{d:"M8.625 6.75C9.03921 6.75 9.375 6.41421 9.375 6C9.375 5.58579 9.03921 5.25 8.625 5.25C8.21079 5.25 7.875 5.58579 7.875 6C7.875 6.41421 8.21079 6.75 8.625 6.75Z"}),t("path",{d:"M6 6.75C6.41421 6.75 6.75 6.41421 6.75 6C6.75 5.58579 6.41421 5.25 6 5.25C5.58579 5.25 5.25 5.58579 5.25 6C5.25 6.41421 5.58579 6.75 6 6.75Z"}),t("path",{d:"M3.375 6.75C3.78921 6.75 4.125 6.41421 4.125 6C4.125 5.58579 3.78921 5.25 3.375 5.25C2.96079 5.25 2.625 5.58579 2.625 6C2.625 6.41421 2.96079 6.75 3.375 6.75Z"}),t("path",{d:"M2.625 9.75H1.5C1.30116 9.74977 1.11052 9.67068 0.969922 9.53008C0.829319 9.38948 0.750228 9.19884 0.75 9V3C0.750199 2.80115 0.82928 2.6105 0.969889 2.46989C1.1105 2.32928 1.30115 2.2502 1.5 2.25H2.625V3H1.5V9H2.625V9.75Z"})]}),p=C(r).attrs(()=>({"data-component-name":"icons/DefaultMappingIcon"}))`
2
+ path {
3
+ fill: var(--color-warm-grey-11);
4
+ html.dark & {
5
+ fill: var(--text-color-secondary);
6
+ }
7
+ }
8
+ `;export{p as DefaultMappingIcon,r as Icon};
@@ -0,0 +1 @@
1
+ export { DefaultMappingIcon } from './DefaultMappingIcon.js';
@@ -0,0 +1 @@
1
+ import{DefaultMappingIcon as a}from"./DefaultMappingIcon.js";export{a as DefaultMappingIcon};
package/lib/index.d.ts CHANGED
@@ -50,7 +50,6 @@ export { getValueFromMdParsedExtension } from './utils/helpers.js';
50
50
  export { ContentItem } from './components/ContentItem/index.js';
51
51
  export { ExampleSwitch } from './components/Samples/ExampleSwitch.js';
52
52
  export { CustomBadges } from './components/common/Badges.js';
53
- export { PanelItem } from './components/PanelItem/PanelItem.js';
54
53
  export { Metadata } from './components/ApiInfo/Metadata.js';
55
54
  export { useDownloadInfo } from './components/Download/useDownloadInfo.js';
56
55
  export { SECTION_ATTR } from './constants.js';
package/lib/index.js CHANGED
@@ -1 +1 @@
1
- import{useAtomValue as e}from"jotai";import{globalOptionsAtom as o}from"./jotai/store.js";import{simplifyAstStructure as n}from"./utils/simplifyAstStructure.js";import{getOperation as x}from"./models/operation.js";import{getServerEnvName as l}from"./utils/environments.js";import{getTagOrGroup as d}from"./models/group.js";import{generateDeepLink as c}from"./components/common/LinkToField.js";import{RequestSamples as S}from"./components/RequestSamples/RequestSamples.js";import{ResponseSamples as O}from"./components/ResponseSamples/ResponseSamples.js";import{RedocSchema as R}from"./components/pluggable/RedocSchema.js";import{RedocExample as w}from"./components/pluggable/RedocExample.js";import{RedoclyOpenAPIDocs as v}from"./components/RedoclyOpenAPIDocs/RedoclyOpenAPIDocs.js";import{StoreProvider as E}from"./components/RedoclyOpenAPIDocs/Providers.js";import{getMarkdownHeaderId as A}from"./components/RedoclyOpenAPIDocs/utils.js";import{safeSlugify as T}from"./utils/string.js";import{JsonPointer as h}from"./utils/JsonPointer.js";import{isOperationName as V}from"./utils/openapi.js";import{pathIncludesLink as F,normalizePath as H}from"./utils/path.js";import{saveTextBeforeHeading as z}from"./utils/saveTextBeforeHeading.js";import{OpenAPIParser as G}from"./services/OpenAPIParser.js";import{buildContentItems as _}from"./services/menu/builder.js";import{normalizeOptions as K}from"./services/config-options/normalizeOptions.js";import{makeDeepLink as U}from"./services/history/helpers.js";function p(){return e(o)}import{EmbeddedReplay as X}from"./components/Replay/EmbeddedReplay.js";import{convertOperationToReplayValue as Z}from"./components/Replay/utils.js";import{SectionContainer as ee}from"./components/SectionContent/index.js";import{Row as re}from"./components/common/panels.js";import{RightPanelContainer as pe}from"./components/SectionContent/index.js";import{Overview as ae}from"./components/Overview/index.js";import{SamplesMiddlePanel as fe,Section as xe,SamplesPanel as ie}from"./components/common/panels.js";import{Heading as se}from"./components/common/OperationItemTitle.js";import{Dropdown as ue}from"./components/common/Dropdown/index.js";import{Markdown as Pe}from"./components/Markdown/index.js";import{FieldValueLabel as ge,FieldLabel as Oe}from"./components/common/Fields/index.js";import{CodeBlockPanel as Re}from"./components/common/index.js";import{OperationSamplesPanel as we}from"./components/OperationItem/OperationItem.js";import{ExternalDocumentation as ve}from"./components/ExternalDocumentation/index.js";import{PropertyDetails as Ee}from"./components/PropertyDetails/PropertyDetails.js";import{addMarkdownItems as Ae}from"./services/menu/markdown.js";import{getValueFromMdParsedExtension as Te}from"./utils/helpers.js";import{ContentItem as he}from"./components/ContentItem/index.js";import{ExampleSwitch as Ve}from"./components/Samples/ExampleSwitch.js";import{CustomBadges as Fe}from"./components/common/Badges.js";import{PanelItem as Ne}from"./components/PanelItem/PanelItem.js";import{Metadata as qe}from"./components/ApiInfo/Metadata.js";import{useDownloadInfo as Je}from"./components/Download/useDownloadInfo.js";import{SECTION_ATTR as je}from"./constants.js";export{Re as CodeBlockPanel,he as ContentItem,Fe as CustomBadges,ue as Dropdown,X as EmbeddedReplay,Ve as ExampleSwitch,ve as ExternalDocumentation,Oe as FieldLabel,ge as FieldValueLabel,se as Heading,h as JsonPointer,Pe as Markdown,qe as Metadata,G as OpenAPIParser,we as OperationSamplesPanel,ae as Overview,Ne as PanelItem,Ee as PropertyDetails,w as RedocExample,R as RedocSchema,v as RedoclyOpenAPIDocs,S as RequestSamples,O as ResponseSamples,pe as RightPanelContainer,re as Row,je as SECTION_ATTR,fe as SamplesMiddlePanel,ie as SamplesPanel,xe as Section,ee as SectionContainer,E as StoreProvider,Ae as addMarkdownItems,_ as buildContentItems,Z as convertOperationToReplayValue,c as generateDeepLink,A as getMarkdownHeaderId,x as getOperation,l as getServerEnvName,d as getTagOrGroup,Te as getValueFromMdParsedExtension,V as isOperationName,U as makeDeepLink,K as normalizeOptions,H as normalizePath,F as pathIncludesLink,T as safeSlugify,z as saveTextBeforeHeading,n as simplifyAstStructure,Je as useDownloadInfo,p as useOpenapiDocsOptions};
1
+ import{useAtomValue as e}from"jotai";import{globalOptionsAtom as o}from"./jotai/store.js";import{simplifyAstStructure as n}from"./utils/simplifyAstStructure.js";import{getOperation as x}from"./models/operation.js";import{getServerEnvName as l}from"./utils/environments.js";import{getTagOrGroup as d}from"./models/group.js";import{generateDeepLink as c}from"./components/common/LinkToField.js";import{RequestSamples as g}from"./components/RequestSamples/RequestSamples.js";import{ResponseSamples as P}from"./components/ResponseSamples/ResponseSamples.js";import{RedocSchema as I}from"./components/pluggable/RedocSchema.js";import{RedocExample as w}from"./components/pluggable/RedocExample.js";import{RedoclyOpenAPIDocs as v}from"./components/RedoclyOpenAPIDocs/RedoclyOpenAPIDocs.js";import{StoreProvider as E}from"./components/RedoclyOpenAPIDocs/Providers.js";import{getMarkdownHeaderId as A}from"./components/RedoclyOpenAPIDocs/utils.js";import{safeSlugify as T}from"./utils/string.js";import{JsonPointer as h}from"./utils/JsonPointer.js";import{isOperationName as V}from"./utils/openapi.js";import{pathIncludesLink as F,normalizePath as H}from"./utils/path.js";import{saveTextBeforeHeading as z}from"./utils/saveTextBeforeHeading.js";import{OpenAPIParser as G}from"./services/OpenAPIParser.js";import{buildContentItems as _}from"./services/menu/builder.js";import{normalizeOptions as K}from"./services/config-options/normalizeOptions.js";import{makeDeepLink as U}from"./services/history/helpers.js";function p(){return e(o)}import{EmbeddedReplay as X}from"./components/Replay/EmbeddedReplay.js";import{convertOperationToReplayValue as Z}from"./components/Replay/utils.js";import{SectionContainer as ee}from"./components/SectionContent/index.js";import{Row as re}from"./components/common/panels.js";import{RightPanelContainer as pe}from"./components/SectionContent/index.js";import{Overview as ae}from"./components/Overview/index.js";import{SamplesMiddlePanel as fe,Section as xe,SamplesPanel as ie}from"./components/common/panels.js";import{Heading as se}from"./components/common/OperationItemTitle.js";import{Dropdown as ue}from"./components/common/Dropdown/index.js";import{Markdown as Se}from"./components/Markdown/index.js";import{FieldValueLabel as Oe,FieldLabel as Pe}from"./components/common/Fields/index.js";import{CodeBlockPanel as Ie}from"./components/common/index.js";import{OperationSamplesPanel as we}from"./components/OperationItem/OperationItem.js";import{ExternalDocumentation as ve}from"./components/ExternalDocumentation/index.js";import{PropertyDetails as Ee}from"./components/PropertyDetails/PropertyDetails.js";import{addMarkdownItems as Ae}from"./services/menu/markdown.js";import{getValueFromMdParsedExtension as Te}from"./utils/helpers.js";import{ContentItem as he}from"./components/ContentItem/index.js";import{ExampleSwitch as Ve}from"./components/Samples/ExampleSwitch.js";import{CustomBadges as Fe}from"./components/common/Badges.js";import{Metadata as Ne}from"./components/ApiInfo/Metadata.js";import{useDownloadInfo as qe}from"./components/Download/useDownloadInfo.js";import{SECTION_ATTR as Je}from"./constants.js";export{Ie as CodeBlockPanel,he as ContentItem,Fe as CustomBadges,ue as Dropdown,X as EmbeddedReplay,Ve as ExampleSwitch,ve as ExternalDocumentation,Pe as FieldLabel,Oe as FieldValueLabel,se as Heading,h as JsonPointer,Se as Markdown,Ne as Metadata,G as OpenAPIParser,we as OperationSamplesPanel,ae as Overview,Ee as PropertyDetails,w as RedocExample,I as RedocSchema,v as RedoclyOpenAPIDocs,g as RequestSamples,P as ResponseSamples,pe as RightPanelContainer,re as Row,Je as SECTION_ATTR,fe as SamplesMiddlePanel,ie as SamplesPanel,xe as Section,ee as SectionContainer,E as StoreProvider,Ae as addMarkdownItems,_ as buildContentItems,Z as convertOperationToReplayValue,c as generateDeepLink,A as getMarkdownHeaderId,x as getOperation,l as getServerEnvName,d as getTagOrGroup,Te as getValueFromMdParsedExtension,V as isOperationName,U as makeDeepLink,K as normalizeOptions,H as normalizePath,F as pathIncludesLink,T as safeSlugify,z as saveTextBeforeHeading,n as simplifyAstStructure,qe as useDownloadInfo,p as useOpenapiDocsOptions};
@@ -1 +1 @@
1
- import{REDOCLY_TEAMS_RBAC as o}from"@redocly/config";import{joinWithSeparator as h}from"../services/index.js";import{getValueFromMdParsedExtension as S,safeSlugify as n}from"../utils/index.js";import{getHref as r}from"../services/menu/operation.js";import{saveTextBeforeHeading as v}from"../utils/saveTextBeforeHeading.js";function A(s,e,i){let m;i?.id&&(s==="schema"||s==="tool"||s==="rsrc"||s==="prompt")?m=h(i.id,n(e.name)):m=e.id||n(e.name);const c=e["x-displayName"]||e.name,d=e.level||1,t=e.isSchema,f=e.ast||void 0,l=v(S(e,"description")||""),a=e.items||[],x=e.externalDocs;return{id:m.toLowerCase(),type:s,parent:i,name:c,level:d,badges:e["x-badges"]||[],depth:0,isSchema:t,description:l,items:a,ast:f,externalDocs:x,href:r({id:m}),[o]:e[o]||i?.[o]}}export{A as getTagOrGroup};
1
+ import{REDOCLY_TEAMS_RBAC as m}from"@redocly/config";import{joinWithSeparator as h}from"../services/index.js";import{getValueFromMdParsedExtension as S,safeSlugify as o}from"../utils/index.js";import{getHref as v}from"../services/menu/operation.js";import{saveTextBeforeHeading as w}from"../utils/saveTextBeforeHeading.js";function r(i,e,s){let n;s?.id&&(i==="schema"||i==="mcp")?n=h(s.id,o(e.name)):n=e.id||o(e.name);const d=e["x-displayName"]||e.name,c=e.level||1,t=e.isSchema,f=e.ast||void 0,l=w(S(e,"description")||""),a=e.items||[],x=e.externalDocs;return{id:n.toLowerCase(),type:i,parent:s,name:d,level:c,depth:0,isSchema:t,description:l,items:a,ast:f,externalDocs:x,href:v({id:n}),[m]:e[m]||s?.[m],keywords:i==="tag"?e["x-keywords"]:void 0}}export{r as getTagOrGroup};
@@ -1 +1 @@
1
- import{getSchema as E}from"./schema.js";import{isFormUrlEncoded as P,isJsonLike as b,isXmlLike as k,isMultipartFormData as j,JsonPointer as R,mapValues as w}from"../utils/index.js";import{getExamples as r}from"./example.js";import{safeSample as v}from"../services/code-samples/index.js";function g({parser:i,info:{encoding:e,schema:a},schema:l,mime:m,options:{isRequestType:s,onlyRequiredInSamples:u,generatedSamplesMaxDepth:p,format:d="json"}}){const f={skipReadOnly:s,skipWriteOnly:!s,skipNonRequired:s&&u,maxSampleDepth:p,quiet:!0,format:d};let n={};if(l&&l.oneOf)for(const o of l.oneOf){const t=v(o.rawSchema,f,i.definition);t!==null&&(l.discriminatorProp&&typeof t=="object"&&t&&t[l.discriminatorProp]&&(t[l.discriminatorProp]=o.title),n[o.title]=r({parser:i,infoOrRef:{value:t},mime:m,encoding:e}))}else if(l){const o=v(a,f,i.definition);o!==null?n={default:r({parser:i,infoOrRef:{value:o},mime:m,encoding:e})}:n={default:{value:null,rawValue:"null"}}}else n={default:{value:null,rawValue:"null"}};return n}function J(i,e,a,l,m,{operation:s,type:u,response:p,absolutePointer:d=""}){let f,n;const o=l.schema&&E({parser:i,schemaOrRef:l.schema,pointer:"",absolutePointer:R.join(d,["content",e,"schema"]),options:m,deps:{operation:s,type:u,response:p}}),{onlyRequiredInSamples:t,generatedSamplesMaxDepth:c}=m,{encoding:x,examples:O,example:S}=l;return m.unstable_skipSamples||(O!==void 0?f=w(O,h=>r({parser:i,infoOrRef:h,mime:e,encoding:x})):S!==void 0?f={default:r({parser:i,infoOrRef:{value:i.deref(S).resolved},mime:e,encoding:x})}:b(e)||k(e)?f=g({parser:i,info:l,schema:o,mime:e,options:{isRequestType:a,onlyRequiredInSamples:t,generatedSamplesMaxDepth:c,format:k(e)?"xml":"json"}}):(P(e)||j(e))&&(n=g({parser:i,info:l,schema:o,mime:e,options:{isRequestType:a,onlyRequiredInSamples:t,generatedSamplesMaxDepth:c}}))),{examples:f,schema:o,name:e,isRequestType:a,formExamples:n,onlyRequiredInSamples:t,operation:s}}export{J as getMediaType};
1
+ import{getSchema as E}from"./schema.js";import{isFormUrlEncoded as P,isJsonLike as b,isXmlLike as g,isMultipartFormData as j,JsonPointer as D,mapValues as M}from"../utils/index.js";import{getExamples as r}from"./example.js";import{safeSample as k}from"../services/code-samples/index.js";function v({parser:i,info:{encoding:e,schema:m},schema:l,mime:s,options:{isRequestType:a,onlyRequiredInSamples:u,generatedSamplesMaxDepth:p,format:d="json"}}){const f={skipReadOnly:a,skipWriteOnly:!a,skipNonRequired:a&&u,maxSampleDepth:p,quiet:!0,format:d};let n={};if(l&&l.oneOf)for(const o of l.oneOf){const t=k(o.rawSchema,f,i.definition);t!==null&&(l.discriminatorProp&&typeof t=="object"&&t&&t[l.discriminatorProp]&&!o.isDefaultMapping&&(t[l.discriminatorProp]=o.title),n[o.title]=r({parser:i,infoOrRef:{value:t},mime:s,encoding:e}))}else if(l){const o=k(m,f,i.definition);o!==null?n={default:r({parser:i,infoOrRef:{value:o},mime:s,encoding:e})}:n={default:{value:null,rawValue:"null"}}}else n={default:{value:null,rawValue:"null"}};return n}function J(i,e,m,l,s,{operation:a,type:u,response:p,absolutePointer:d=""}){let f,n;const o=l.schema&&E({parser:i,schemaOrRef:l.schema,pointer:"",absolutePointer:D.join(d,["content",e,"schema"]),options:s,deps:{operation:a,type:u,response:p}}),{onlyRequiredInSamples:t,generatedSamplesMaxDepth:c}=s,{encoding:x,examples:O,example:S}=l;return s.unstable_skipSamples||(O!==void 0?f=M(O,h=>r({parser:i,infoOrRef:h,mime:e,encoding:x})):S!==void 0?f={default:r({parser:i,infoOrRef:{value:i.deref(S).resolved},mime:e,encoding:x})}:b(e)||g(e)?f=v({parser:i,info:l,schema:o,mime:e,options:{isRequestType:m,onlyRequiredInSamples:t,generatedSamplesMaxDepth:c,format:g(e)?"xml":"json"}}):(P(e)||j(e))&&(n=v({parser:i,info:l,schema:o,mime:e,options:{isRequestType:m,onlyRequiredInSamples:t,generatedSamplesMaxDepth:c}}))),{examples:f,schema:o,name:e,isRequestType:m,formExamples:n,onlyRequiredInSamples:t,operation:a}}export{J as getMediaType};
@@ -1,12 +1,13 @@
1
1
  import type { OpenAPISchema, Referenced } from '../types/index.js';
2
2
  import type { OpenAPIParser, Options } from '../services/index.js';
3
3
  import type { Deps, SchemaModel } from './types.js';
4
- export declare function getSchema({ parser, schemaOrRef, pointer, options, isChild, baseRefsStack, deps, absolutePointer, }: {
4
+ export declare function getSchema({ parser, schemaOrRef, pointer, options, isChild, isDefaultMapping, baseRefsStack, deps, absolutePointer, }: {
5
5
  parser: OpenAPIParser;
6
6
  schemaOrRef: Referenced<OpenAPISchema>;
7
7
  pointer: string;
8
8
  options: Options;
9
9
  isChild?: boolean;
10
+ isDefaultMapping?: boolean;
10
11
  baseRefsStack?: string[];
11
12
  deps: Deps;
12
13
  absolutePointer?: string;
@@ -1,2 +1,2 @@
1
- import{REDOCLY_TEAMS_RBAC as h}from"@redocly/config";import{isObject as I}from"@redocly/theme/core/openapi";import{pushRef as M}from"../services/OpenAPIParser.js";import{detectType as w,extractExtensions as q,getValueFromMdParsedExtension as S,humanizeConstraints as C,isNamedDefinition as j,isPrimitiveType as E,JsonPointer as b,pluralizeType as B,sortByDeprecated as z,sortByRequired as L}from"../utils/index.js";import{getField as T}from"./field.js";function F({parser:i,schemaOrRef:n,pointer:u,options:a,isChild:y=!1,baseRefsStack:f=[],deps:o,absolutePointer:p}){const{resolved:c,refsStack:m}=i.deref(n,f,!0),r=n.$ref||u||p||"",l=M(m,r),e=i.mergeAllOf(c,r,l,n.$ref||p),d=e.type||w(e),t={operationPointer:o.operation?.pointer||p||"",schemaOrRef:n,isChild:y,typePrefix:"",pointer:r,absolutePointer:p,refsStack:l,rawSchema:c,type:d,isCircular:!!e["x-circular-ref"],isComplex:!!e["x-complex"],title:e.title||j(r)&&b.baseName(r)||"",description:S(e,"description")||"",format:e.format,enum:e.enum||[],example:e.example,deprecated:!!e.deprecated,pattern:e.pattern,externalDocs:e.externalDocs,displayFormat:e.format,isPrimitive:E(e,d),constraints:C(e),default:e.default,readOnly:!!e.readOnly,writeOnly:!!e.writeOnly,const:e.const||"",contentEncoding:e.contentEncoding,contentMediaType:e.contentMediaType,minItems:e.minItems,maxItems:e.maxItems,nullable:e.nullable||e["x-nullable"],schema:e,displayType:"",items:void 0,extensions:void 0,oneOfType:"",discriminatorProp:void 0,oneOf:void 0,[h]:e[h],"x-enumDescriptions":S(e,"x-enumDescriptions"),get fields(){if(!t.isCircular&&!t.isComplex&&($(t,"object")||$(t,"array")&&D(e)))return _(i,e,r,a,l,o)}};if((e.nullable||e["x-nullable"])&&(Array.isArray(t.type)&&!t.type.some(s=>s===null||s==="null")?t.type=[...t.type,"null"]:!Array.isArray(t.type)&&(t.type!==null||t.type!=="null")&&(t.type=[t.type,"null"])),t.displayType=Array.isArray(t.type)?t.type.map(s=>s===null?"null":s).join(" or "):t.type,t.isCircular)return t;if(e.if&&e.then||e.if&&e.else){const{oneOf:s,oneOfType:P}=V({schema:e,parser:i,pointer:r,options:a,deps:o,refsStack:l});return t.oneOf=s,t.oneOfType=P,t}if(!y&&v(e)!==void 0){const{oneOf:s,discriminatorProp:P}=J({schema:e,parser:i,deps:o,mergedSchema:e,options:a,pointer:r,refsStack:l});return t.oneOf=s,t.discriminatorProp=P,t}else y&&Array.isArray(e.oneOf)&&e.oneOf.find(s=>s.$ref===r)&&delete e.oneOf;if(e.oneOf!==void 0){const{oneOf:s,displayType:P}=k({schemaOneOf:e.oneOf,parser:i,deps:o,options:a,pointer:r,refsStack:l,schema:e});return t.oneOfType="One of",s&&(t.oneOf=s),t.displayType=P,e.anyOf!==void 0&&console.warn(`oneOf and anyOf are not supported on the same level. Skipping anyOf at ${r}`),t}if(e.anyOf!==void 0){const{oneOf:s,displayType:P}=k({schemaOneOf:e.anyOf,parser:i,deps:o,options:a,pointer:r,refsStack:l,schema:e});return s&&(t.oneOf=s),t.displayType=P,t.oneOfType="Any of",t}if($(t,"array")&&(e.items&&!D(e)&&(t.items=F({parser:i,schemaOrRef:Object.assign({type:"object"},e.items),pointer:r+"/items",options:a,baseRefsStack:l,deps:o,absolutePointer:b.join(e.absolutePointer||"",["items"])})),t.displayType=e.prefixItems||Array.isArray(e.items)?"items":B(t.items?.displayType||t.displayType),t.displayFormat=t.items?.format||"",t.typePrefix=t.items?.typePrefix||"Array of ",t.title=t.title||t.items?.title||"",t.isPrimitive=t.items?.isPrimitive!==void 0?t.items?.isPrimitive:t.isPrimitive,t.example===void 0&&t.items?.example!==void 0&&(t.example=[t.items.example]),t.items?.isPrimitive&&(t.enum=t.items.enum,t["x-enumDescriptions"]=S(t.items,"x-enumDescriptions")),Array.isArray(t.type))){const s=t.type.filter(P=>P!=="array");s.length&&(t.displayType+=` or ${s.join(" or ")}`)}return a.showExtensions&&(t.extensions=q(e,a.showExtensions)),t}function J({schema:i,parser:n,pointer:u,options:a,refsStack:y,deps:f,mergedSchema:o}){const p=v(i),c=p?.propertyName,m=n.findDerived([...o["x-parentRefs"]||[],u]);if(i.oneOf)for(const O of i.oneOf){if(O.$ref===void 0)continue;const x=b.baseName(O.$ref);m[O.$ref]=x}const r=p?.mapping||{};let l=p?.["x-explicitMappingOnly"]||!1;Object.keys(r).length===0&&(l=!1);const e={};for(const O in r){const x=r[O];Array.isArray(e[x])?e[x].push(O):e[x]=[O]}const d=l?{...e}:{...m,...e};let t=[];for(const O of Object.keys(d)){const x=d[O];if(Array.isArray(x))for(const A of x)t.push({$ref:O,name:A});else t.push({$ref:O,name:x})}const s=Object.keys(r);return s.length!==0&&(t=t.sort((O,x)=>{const A=s.indexOf(O.name),g=s.indexOf(x.name);return A<0&&g<0?O.name.localeCompare(x.name):A<0?1:g<0?-1:A-g})),{oneOf:t.map(({$ref:O,name:x},A)=>{const g=F({parser:n,schemaOrRef:{$ref:O},pointer:O,options:a,isChild:!0,baseRefsStack:y.slice(0,-1),deps:{...f,parentFieldFullPath:f.parentFieldFullPath?f.parentFieldFullPath+"&d="+A:"&d="+A.toString()},absolutePointer:o.absolutePointer});return g.title=x,g}),discriminatorProp:c}}function k({schemaOneOf:i,parser:n,refsStack:u,pointer:a,schema:y,options:f,deps:o}){const p=i.map((m,r)=>{const{resolved:l,refsStack:e}=n.deref(m,u,!0),d=n.mergeAllOf(l,a+"/oneOf/"+r,e),t=j(m.$ref)&&!d.title?b.baseName(m.$ref):`${d.title||""}${d.const&&JSON.stringify(d.const)||""}`;return F({parser:n,schemaOrRef:{...d,title:t,allOf:[{...y,oneOf:void 0,anyOf:void 0}],discriminator:l.allOf?void 0:d.discriminator},pointer:m.$ref||a+"/oneOf/"+r,options:f,baseRefsStack:e,deps:{...o,parentFieldFullPath:o.parentFieldFullPath?o.parentFieldFullPath+"&oneOf="+r:"&oneOf="+r.toString()}})}),c=[...new Set(p.map(m=>{let r=m.typePrefix+(m.title&&!f.hideSchemaTitles?`${m.title} (${m.displayType})`:m.displayType);return r.indexOf(" or ")>-1&&(r=`(${r})`),r}))].join(" or ");return{oneOf:p,displayType:c}}function V({schema:i,parser:n,pointer:u,options:a,refsStack:y,deps:f}){const{if:o,else:p={},then:c={},...m}=i;return{oneOf:[{allOf:[m,c,o],title:o&&o["x-displayName"]||o?.title||"case 1"},{allOf:[m,p],title:p&&p["x-displayName"]||p?.title||"case 2"}].map((d,t)=>F({parser:n,schemaOrRef:{...d},pointer:u+"/oneOf/"+t,options:a,baseRefsStack:y,deps:{...f,parentFieldFullPath:f.parentFieldFullPath?f.parentFieldFullPath+"&oneOf="+t:"&oneOf="+t.toString()}})),oneOfType:"One of"}}function R(i,n,u){return i||(console.warn(`Field "${n}" is invalid, skipping.
2
- Field must be an object but got ${typeof i} at "${u}"`),{})}function _(i,n,u,a,y,f){let o=n.properties||($(n,"array")?n.prefixItems||n.items:void 0)||{};const p=n.patternProperties||{},c=n.additionalProperties||n.unevaluatedProperties,m=n.prefixItems?n.items:n.additionalItems,r=n.default||{};let l=Object.keys(o).map(e=>{const d=R(o[e],e,u),t=n.required===void 0?!1:n.required.indexOf(e)>-1;return T(i,{name:n.properties?e:`[${e}]`,required:t,schema:{...d,example:n.example?.[e]||d.example,default:d.default===void 0&&r?r[e]:d.default}},u+"/properties/"+e,a,f,y,b.join(n.absolutePointer||"",["properties",e]))});return a.sortRequiredPropsFirst&&(l=L(l,n.required)),l.push(...Object.keys(p).map(e=>{const d=R(p[e],e,u);return T(i,{name:e,required:!1,schema:d,kind:"patternProperties"},`${u}/patternProperties/${e}`,a,f,y)})),(I(c)||c===!0)&&l.push(T(i,{name:(I(c)&&c["x-additionalPropertiesName"]||"property name").concat("*"),required:!1,schema:c===!0?{}:c,kind:"additionalProperties"},u+"/additionalProperties",a,f,y,b.join(n.absolutePointer||"",["additionalProperties"]))),l.push(...Y({parser:i,schema:m,fieldsCount:l.length,$ref:u,options:a,refsStack:y,deps:f})),z(l)}function Y({parser:i,schema:n=!1,fieldsCount:u,$ref:a,options:y,refsStack:f,deps:o}){return typeof n=="boolean"?n?[T(i,{name:`[${u}...]`,schema:{},kind:"additionalItems"},`${a}/additionalItems`,y,o,f)]:[]:Array.isArray(n)?[...n.map((p,c)=>T(i,{name:`[${u+c}]`,schema:p,kind:"additionalItems"},`${a}/additionalItems/${c}`,y,o,f))]:I(n)?[T(i,{name:`[${u}...]`,schema:n,kind:"additionalItems"},`${a}/additionalItems`,y,o,f)]:[]}function v(i){return i.discriminator||i["x-discriminator"]}function $(i,n){return i.type===n||Array.isArray(i.type)&&i.type.includes(n)}function D(i){return!!(Array.isArray(i.items)||Array.isArray(i.prefixItems))}export{F as getSchema};
1
+ import{REDOCLY_TEAMS_RBAC as S}from"@redocly/config";import{isObject as I}from"@redocly/theme/core/openapi";import{pushRef as w}from"../services/OpenAPIParser.js";import{detectType as q,extractExtensions as C,getValueFromMdParsedExtension as M,humanizeConstraints as E,isNamedDefinition as h,isPrimitiveType as B,JsonPointer as A,pluralizeType as z,sortByDeprecated as L,sortByRequired as J}from"../utils/index.js";import{getField as T}from"./field.js";function F({parser:i,schemaOrRef:n,pointer:u,options:l,isChild:P=!1,isDefaultMapping:f=!1,baseRefsStack:m=[],deps:o,absolutePointer:y}){const{resolved:p,refsStack:c}=i.deref(n,m,!0),s=n.$ref||u||y||"",r=w(c,s),e=i.mergeAllOf(p,s,r,n.$ref||y),O=e.type||q(e),t={operationPointer:o.operation?.pointer||y||"",schemaOrRef:n,isChild:P,isDefaultMapping:f,typePrefix:"",pointer:s,absolutePointer:y,refsStack:r,rawSchema:p,type:O,isCircular:!!e["x-circular-ref"],isComplex:!!e["x-complex"],title:e.title||h(s)&&A.baseName(s)||"",description:M(e,"description")||"",format:e.format,enum:e.enum||[],example:e.example,deprecated:!!e.deprecated,pattern:e.pattern,externalDocs:e.externalDocs,displayFormat:e.format,isPrimitive:B(e,O),constraints:E(e),default:e.default,readOnly:!!e.readOnly,writeOnly:!!e.writeOnly,const:e.const||"",contentEncoding:e.contentEncoding,contentMediaType:e.contentMediaType,minItems:e.minItems,maxItems:e.maxItems,nullable:e.nullable||e["x-nullable"],schema:e,displayType:"",items:void 0,extensions:void 0,oneOfType:"",discriminatorProp:void 0,oneOf:void 0,[S]:e[S],"x-enumDescriptions":M(e,"x-enumDescriptions"),get fields(){if(!t.isCircular&&!t.isComplex&&($(t,"object")||$(t,"array")&&v(e)))return K(i,e,s,l,r,o)}};if((e.nullable||e["x-nullable"])&&(Array.isArray(t.type)&&!t.type.some(d=>d===null||d==="null")?t.type=[...t.type,"null"]:!Array.isArray(t.type)&&(t.type!==null||t.type!=="null")&&(t.type=[t.type,"null"])),t.displayType=Array.isArray(t.type)?t.type.map(d=>d===null?"null":d).join(" or "):t.type,t.isCircular)return t;if(e.if&&e.then||e.if&&e.else){const{oneOf:d,oneOfType:a}=_({schema:e,parser:i,pointer:s,options:l,deps:o,refsStack:r});return t.oneOf=d,t.oneOfType=a,t}if(!P&&R(e)!==void 0){const{oneOf:d,discriminatorProp:a}=V({schema:e,parser:i,deps:o,mergedSchema:e,options:l,pointer:s,refsStack:r});return t.oneOf=d,t.discriminatorProp=a,t}else P&&Array.isArray(e.oneOf)&&e.oneOf.find(d=>d.$ref===s)&&delete e.oneOf;if(e.oneOf!==void 0){const{oneOf:d,displayType:a}=j({schemaOneOf:e.oneOf,parser:i,deps:o,options:l,pointer:s,refsStack:r,schema:e});return t.oneOfType="One of",d&&(t.oneOf=d),t.displayType=a,e.anyOf!==void 0&&console.warn(`oneOf and anyOf are not supported on the same level. Skipping anyOf at ${s}`),t}if(e.anyOf!==void 0){const{oneOf:d,displayType:a}=j({schemaOneOf:e.anyOf,parser:i,deps:o,options:l,pointer:s,refsStack:r,schema:e});return d&&(t.oneOf=d),t.displayType=a,t.oneOfType="Any of",t}if($(t,"array")&&(e.items&&!v(e)&&(t.items=F({parser:i,schemaOrRef:Object.assign({type:"object"},e.items),pointer:s+"/items",options:l,baseRefsStack:r,deps:o,absolutePointer:A.join(e.absolutePointer||"",["items"])})),t.displayType=e.prefixItems||Array.isArray(e.items)?"items":z(t.items?.displayType||t.displayType),t.displayFormat=t.items?.format||"",t.typePrefix=t.items?.typePrefix||"Array of ",t.title=t.title||t.items?.title||"",t.isPrimitive=t.items?.isPrimitive!==void 0?t.items?.isPrimitive:t.isPrimitive,t.example===void 0&&t.items?.example!==void 0&&(t.example=[t.items.example]),t.items?.isPrimitive&&(t.enum=t.items.enum,t["x-enumDescriptions"]=M(t.items,"x-enumDescriptions")),Array.isArray(t.type))){const d=t.type.filter(a=>a!=="array");d.length&&(t.displayType+=` or ${d.join(" or ")}`)}return l.showExtensions&&(t.extensions=C(e,l.showExtensions)),t}function V({schema:i,parser:n,pointer:u,options:l,refsStack:P,deps:f,mergedSchema:m}){const o=R(i),y=o?.propertyName,p=n.findDerived([...m["x-parentRefs"]||[],u]);if(i.oneOf)for(const a of i.oneOf){if(a.$ref===void 0)continue;const x=A.baseName(a.$ref);p[a.$ref]=x}const c=o?.mapping||{};let s=o?.["x-explicitMappingOnly"]||!1;Object.keys(c).length===0&&(s=!1);const r={};for(const a in c){const x=c[a];Array.isArray(r[x])?r[x].push(a):r[x]=[a]}const e=s?{...r}:{...p,...r};let O=[];for(const a of Object.keys(e)){const x=e[a];if(Array.isArray(x))for(const g of x)O.push({$ref:a,name:g});else O.push({$ref:a,name:x})}if(o?.defaultMapping){const a=O.findIndex(g=>g.name===A.baseName(o.defaultMapping)),x="Default mapping";~a?O[a]={$ref:o.defaultMapping,name:x,isDefaultMapping:!0}:O.push({$ref:o.defaultMapping,name:x,isDefaultMapping:!0})}const t=Object.keys(c);return t.length!==0&&(O=O.sort((a,x)=>{if(a.isDefaultMapping&&!x.isDefaultMapping)return 1;if(!a.isDefaultMapping&&x.isDefaultMapping)return-1;const g=t.indexOf(a.name),b=t.indexOf(x.name);return g<0&&b<0?a.name.localeCompare(x.name):g<0?1:b<0?-1:g-b})),{oneOf:O.map(({$ref:a,name:x,isDefaultMapping:g},b)=>{const D=F({parser:n,schemaOrRef:{$ref:a},pointer:a,options:l,isChild:!0,isDefaultMapping:g,baseRefsStack:P.slice(0,-1),deps:{...f,parentFieldFullPath:f.parentFieldFullPath?f.parentFieldFullPath+"&d="+b:"&d="+b.toString()},absolutePointer:m.absolutePointer});return D.title=x,D}),discriminatorProp:y}}function j({schemaOneOf:i,parser:n,refsStack:u,pointer:l,schema:P,options:f,deps:m}){const o=i.map((p,c)=>{const{resolved:s,refsStack:r}=n.deref(p,u,!0),e=n.mergeAllOf(s,l+"/oneOf/"+c,r),O=h(p.$ref)&&!e.title?A.baseName(p.$ref):`${e.title||""}${e.const&&JSON.stringify(e.const)||""}`;return F({parser:n,schemaOrRef:{...e,title:O,allOf:[{...P,oneOf:void 0,anyOf:void 0}],discriminator:s.allOf?void 0:e.discriminator},pointer:p.$ref||l+"/oneOf/"+c,options:f,baseRefsStack:r,deps:{...m,parentFieldFullPath:m.parentFieldFullPath?m.parentFieldFullPath+"&oneOf="+c:"&oneOf="+c.toString()}})}),y=[...new Set(o.map(p=>{let c=p.typePrefix+(p.title&&!f.hideSchemaTitles?`${p.title} (${p.displayType})`:p.displayType);return c.indexOf(" or ")>-1&&(c=`(${c})`),c}))].join(" or ");return{oneOf:o,displayType:y}}function _({schema:i,parser:n,pointer:u,options:l,refsStack:P,deps:f}){const{if:m,else:o={},then:y={},...p}=i;return{oneOf:[{allOf:[p,y,m],title:m&&m["x-displayName"]||m?.title||"case 1"},{allOf:[p,o],title:o&&o["x-displayName"]||o?.title||"case 2"}].map((e,O)=>F({parser:n,schemaOrRef:{...e},pointer:u+"/oneOf/"+O,options:l,baseRefsStack:P,deps:{...f,parentFieldFullPath:f.parentFieldFullPath?f.parentFieldFullPath+"&oneOf="+O:"&oneOf="+O.toString()}})),oneOfType:"One of"}}function k(i,n,u){return i||(console.warn(`Field "${n}" is invalid, skipping.
2
+ Field must be an object but got ${typeof i} at "${u}"`),{})}function K(i,n,u,l,P,f){let m=n.properties||($(n,"array")?n.prefixItems||n.items:void 0)||{};const o=n.patternProperties||{},y=n.additionalProperties||n.unevaluatedProperties,p=n.prefixItems?n.items:n.additionalItems,c=n.default||{};let s=Object.keys(m).map(r=>{const e=k(m[r],r,u),O=n.required===void 0?!1:n.required.indexOf(r)>-1;return T(i,{name:n.properties?r:`[${r}]`,required:O,schema:{...e,example:n.example?.[r]||e.example,default:e.default===void 0&&c?c[r]:e.default}},u+"/properties/"+r,l,f,P,A.join(n.absolutePointer||"",["properties",r]))});return l.sortRequiredPropsFirst&&(s=J(s,n.required)),s.push(...Object.keys(o).map(r=>{const e=k(o[r],r,u);return T(i,{name:r,required:!1,schema:e,kind:"patternProperties"},`${u}/patternProperties/${r}`,l,f,P)})),(I(y)||y===!0)&&s.push(T(i,{name:(I(y)&&y["x-additionalPropertiesName"]||"property name").concat("*"),required:!1,schema:y===!0?{}:y,kind:"additionalProperties"},u+"/additionalProperties",l,f,P,A.join(n.absolutePointer||"",["additionalProperties"]))),s.push(...Y({parser:i,schema:p,fieldsCount:s.length,$ref:u,options:l,refsStack:P,deps:f})),L(s)}function Y({parser:i,schema:n=!1,fieldsCount:u,$ref:l,options:P,refsStack:f,deps:m}){return typeof n=="boolean"?n?[T(i,{name:`[${u}...]`,schema:{},kind:"additionalItems"},`${l}/additionalItems`,P,m,f)]:[]:Array.isArray(n)?[...n.map((o,y)=>T(i,{name:`[${u+y}]`,schema:o,kind:"additionalItems"},`${l}/additionalItems/${y}`,P,m,f))]:I(n)?[T(i,{name:`[${u}...]`,schema:n,kind:"additionalItems"},`${l}/additionalItems`,P,m,f)]:[]}function R(i){return i.discriminator||i["x-discriminator"]}function $(i,n){return i.type===n||Array.isArray(i.type)&&i.type.includes(n)}function v(i){return!!(Array.isArray(i.items)||Array.isArray(i.prefixItems))}export{F as getSchema};
@@ -195,6 +195,7 @@ export type GroupModel = {
195
195
  depth: number;
196
196
  level: number;
197
197
  [REDOCLY_TEAMS_RBAC]?: Record<string, string>;
198
+ keywords?: unknown;
198
199
  };
199
200
  export type OperationMenuItem = {
200
201
  id: string;
@@ -245,6 +246,7 @@ export type SchemaModel = {
245
246
  oneOf?: SchemaModel[];
246
247
  oneOfType: string;
247
248
  discriminatorProp?: string;
249
+ isDefaultMapping?: boolean;
248
250
  rawSchema: OpenAPISchema;
249
251
  schema: MergedOpenAPISchema;
250
252
  extensions?: GenericObject;
@@ -1 +1 @@
1
- import{getTagGroupsItems as d,getTagsItems as c,getTagsWithOperations as p}from"./tags.js";import{addMarkdownItems as g}from"./markdown.js";import{flattenByProp as h,getValueFromMdParsedExtension as l}from"../../utils/index.js";import{DEFAULT_WEBHOOKS_TAG_NAME as r}from"../../constants.js";function x(o,s){const{definition:e}=o,{schemaDefinitionsTagName:i}=s,a=[{id:"",name:e?.info?.["x-seo"]?.title||e?.info?.title||"Overview",href:"/",depth:1,level:1,type:"section",infoDefinition:e.info,items:[]}],t=[...e.tags||[]];if(t.some(n=>n.name===r)||t.push({name:r}),!t.find(n=>n?.name===i)&&i&&t.push({name:i}),e["x-mcp"])for(const n of["Tools","Resources","Prompts"])e["x-mcp"][n]&&(t.find(u=>u?.name===n)||t.push({name:n}));const m=p(o,t),f=e["x-tagGroups"];return a.push(...g(l(e.info,"description")||"",void 0,1)),f&&f.length>0?a.push(...d(o,void 0,f,m,s)):a.push(...c(o,m,void 0,void 0,s)),a}function O(o,s){const e=x(o,s),i=h(e||[],"items");return{contentItems:e,flatItems:i}}export{O as buildContentItems,x as buildMenuStructure};
1
+ import{getTagGroupsItems as d,getTagsItems as c,getTagsWithOperations as p}from"./tags.js";import{addMarkdownItems as g}from"./markdown.js";import{flattenByProp as h,getValueFromMdParsedExtension as l}from"../../utils/index.js";import{DEFAULT_WEBHOOKS_TAG_NAME as r}from"../../constants.js";function x(o,s){const{definition:e}=o,{schemaDefinitionsTagName:i}=s,a=[{id:"",name:e?.info?.["x-seo"]?.title||e?.info?.title||"Overview",href:"/",depth:1,level:1,type:"section",infoDefinition:e.info,items:[],keywords:e["x-keywords"]}],t=[...e.tags||[]];if(t.some(n=>n.name===r)||t.push({name:r}),!t.find(n=>n?.name===i)&&i&&t.push({name:i}),e["x-mcp"])for(const n of["Tools","Resources","Prompts"])e["x-mcp"][n]&&(t.find(u=>u?.name===n)||t.push({name:n}));const m=p(o,t),f=e["x-tagGroups"];return a.push(...g(l(e.info,"description")||"",void 0,1)),f&&f.length>0?a.push(...d(o,void 0,f,m,s)):a.push(...c(o,m,void 0,void 0,s)),a}function E(o,s){const e=x(o,s),i=h(e||[],"items");return{contentItems:e,flatItems:i}}export{E as buildContentItems,x as buildMenuStructure};
@@ -1 +1 @@
1
- import h from"@markdoc/markdoc";import{isString as T}from"@redocly/theme/core/openapi";import{getTagOrGroup as d}from"../../models/index.js";import{safeSlugify as y,unescapeHTMLChars as A}from"../../utils/index.js";function x(e,n,a){const i=T(e)?h.parse(e):h.Ast.fromJSON(JSON.stringify(e?.result)),s=[];let o;const l=(t,u,g=s,r,p)=>{t=A(t);let f;r.attributes.id?f=r.attributes.id:(f=p?`${p}/${y(t)}`:`section/${y(t)}`,r.attributes.id=f);const b={id:f.toLowerCase(),name:t,level:u,items:[],ast:[r]};return g.push(b),b},c=(t,u)=>{t[t.length-1]?.ast?.push(u)},m=t=>{const u=C(t)||"",r=n&&n.type==="tag"?n.id:void 0;t.type==="heading"&&t.attributes.level===1?o=l(u,t.attributes.level,void 0,t,r):t.attributes.level?l(u,t.attributes.level,o?.items,t,o?.id??r):o?.items?.length?c(o?.items,t):s?.length&&c(s,t)};if(Array.isArray(i))for(const t of i)m(t);else m(i);return v(n,s,a)}function v(e,n,a=1){return n.map(i=>{const s=d("section",i,e);return s.depth=a,i.items&&(s.items=v(s,i.items,a+1)),s})}function C(e){if(typeof e?.attributes?.content=="string")return e.attributes?.content;if(e?.children)return C(e.children[0])}export{x as addMarkdownItems};
1
+ import y from"@markdoc/markdoc";import{isString as A}from"@redocly/theme/core/openapi";import{getTagOrGroup as S}from"../../models/index.js";import{safeSlugify as h,unescapeHTMLChars as T}from"../../utils/index.js";import{simplifyAstStructure as d}from"../../utils/simplifyAstStructure.js";function O(e,u,f){const i=A(e)?d(y.parse(e)):y.Ast.fromJSON(JSON.stringify(e?.result)),s=[];let o;const l=(t,n,g=s,r,p)=>{t=T(t);let a;r.attributes.id?a=r.attributes.id:(a=p?`${p}/${h(t)}`:`section/${h(t)}`,r.attributes.id=a);const b={id:a.toLowerCase(),name:t,level:n,items:[],ast:[r]};return g.push(b),b},c=(t,n)=>{t[t.length-1]?.ast?.push(n)},m=t=>{const n=C(t)||"",r=u&&u.type==="tag"?u.id:void 0;t.type==="heading"&&t.attributes.level===1?o=l(n,t.attributes.level,void 0,t,r):t.attributes.level?l(n,t.attributes.level,o?.items,t,o?.id??r):o?.items?.length?c(o?.items,t):s?.length&&c(s,t)};if(Array.isArray(i))for(const t of i)m(t);else m(i);return v(u,s,f)}function v(e,u,f=1){return u.map(i=>{const s=S("section",i,e);return s.depth=f,i.items&&(s.items=v(s,i.items,f+1)),s})}function C(e){if(typeof e?.attributes?.content=="string")return e.attributes?.content;if(e?.children)return C(e.children[0])}export{O as addMarkdownItems};
@@ -1,4 +1,2 @@
1
- import{getTagOrGroup as l}from"../../models/group.js";import{DEFAULT_WEBHOOKS_TAG_NAME as g,GROUP_DEPTH as h}from"../../constants.js";import{getValueFromMdParsedExtension as T,isOperationName as P,JsonPointer as S,safeSlugify as b}from"../../utils/index.js";import{getOperationsItems as x}from"./operation.js";import{addMarkdownItems as y}from"./markdown.js";import{joinWithSeparator as k}from"../history/helpers.js";const O=["tools","resources","prompts"];function v(i,c,o,e,r){let t;if(e===void 0?t=Object.keys(c):t=e.tags,!Array.isArray(t))return console.warn("Unexpected values of tags. Check tags or x-tagGroups in your definition."),[];const f=t.map(s=>c[s]?(c[s].used=!0,c[s]):(console.warn(`Non-existing tag "${s}" is added to the group "${e?.name}"`),null)),n=[];for(const s of f){if(!s)continue;const a=l("tag",s,o);if(a.depth=h+1,s.name===""){const u=[...y(T(s,"description")||"",a,a.depth+1),...x(void 0,s,a.depth+1)];n.push(...u);continue}const p=w({definition:i.definition,tag:s,parent:a,schemaDefinitionsTagName:r.schemaDefinitionsTagName}),m=E(i.definition,s,a);a.items=[...p,...m,...y(T(s,"description")||"",a,a.depth+1),...x(a,s,a.depth+1)],n.push(a)}return n.filter(({name:s,items:a})=>s!==g||a.length>0)}function R(i,c,o,e,r){const t=[];for(const f of o){const n=l("group",f,c);n.depth=h,n.items=v(i,e,n,f,r),t.push(n)}return t}function w({definition:i,tag:c,parent:o,schemaDefinitionsTagName:e}){const r=e?[e]:[];return Object.entries(i.components?.schemas||{}).map(([t,f])=>{if(!(f["x-tags"]||r).includes(c.name))return null;const s=l("schema",{name:t,"x-displayName":`${f.title||t}`,description:`{% schemaDefinition showWriteOnly="true" schemaRef="#/components/schemas/${t}" /%}`,isSchema:!0,level:2},o);return s.depth=o.depth+1,s}).filter(Boolean)}function E(i,c,o){const e=[];for(const r of O)if(i["x-mcp"]?.[r]){const t=$(r),f=[t];for(const n of i["x-mcp"]?.[r]||[])if((n.tags?.length?n.tags:f).includes(c.name)){const a=k(o.id,b(n.name)),p=r==="tools"?`Tool name: \`${n.name}\`
2
-
3
- `:"",u=l(r==="tools"?"tool":r==="resources"?"rsrc":"prompt",{name:n.name,"x-displayName":n.title||n.name,description:`${p}${n.description||""}
4
- {% mcp${t.slice(0,-1)} name="${n.name}" id="${a}" /%}`,isSchema:!0,level:2},o);u.depth=o.depth+1,e.push(u)}}return e}function U(i,c){const{definition:o}=i,e={},r=o["x-webhooks"]||o.webhooks,t=o["x-mcp"];for(const f of c||[])e[f.name]={...f,operations:[]};return o.paths&&d(i,o.paths,e),r&&d(i,r,e,!0),t&&N(t,e),e}function N(i,c){for(const o of O)if(i[o])for(const e of i[o]){const r=e.tags&&e.tags.length?e.tags:[$(o)];for(const t of r){let f=c[t];f===void 0&&(f={name:t,operations:[],used:!0},c[t]=f)}}}function d(i,c,o,e){for(const r of Object.keys(c||{})){const t=c[r],f=Object.keys(t).filter(P);for(const n of f){const s=t[n];if(t.$ref){const{resolved:p}=i.deref(t);d(i,{[r]:p},o,e);continue}let a=s?.tags;(!a||!a.length)&&(a=e?[g]:[""]);for(const p of a){let m=o[p];m===void 0&&(m={name:p,operations:[]},o[p]=m),!m["x-traitTag"]&&m.operations.push({...s,pathName:r,pointer:S.compile(["paths",r,n]),httpVerb:n,pathParameters:t.parameters||[],pathServers:t.servers,isWebhook:!!e})}}}}function $(i){return i.charAt(0).toUpperCase()+i.slice(1)}export{$ as capitalize,R as getTagGroupsItems,v as getTagsItems,U as getTagsWithOperations};
1
+ import{getTagOrGroup as d}from"../../models/group.js";import{DEFAULT_WEBHOOKS_TAG_NAME as l,GROUP_DEPTH as g}from"../../constants.js";import{getValueFromMdParsedExtension as h,isOperationName as S,JsonPointer as k,safeSlugify as w}from"../../utils/index.js";import{getOperationsItems as T}from"./operation.js";import{addMarkdownItems as x}from"./markdown.js";import{joinWithSeparator as $}from"../history/helpers.js";const y=["tools"];function N(s,c,o,e,a){let t;if(e===void 0?t=Object.keys(c):t=e.tags,!Array.isArray(t))return console.warn("Unexpected values of tags. Check tags or x-tagGroups in your definition."),[];const f=t.map(n=>c[n]?(c[n].used=!0,c[n]):(console.warn(`Non-existing tag "${n}" is added to the group "${e?.name}"`),null)),i=[];for(const n of f){if(!n)continue;const r=d("tag",n,o);if(r.depth=g+1,n.name===""){const P=[...x(h(n,"description")||"",r,r.depth+1),...T(void 0,n,r.depth+1)];i.push(...P);continue}const p=b({definition:s.definition,tag:n,parent:r,schemaDefinitionsTagName:a.schemaDefinitionsTagName}),m=v(s.definition,n,r);r.items=[...p,...m,...x(h(n,"description")||"",r,r.depth+1),...T(r,n,r.depth+1)],i.push(r)}return i.filter(({name:n,items:r})=>n!==l||r.length>0)}function R(s,c,o,e,a){const t=[];for(const f of o){const i=d("group",f,c);i.depth=g,i.items=N(s,e,i,f,a),t.push(i)}return t}function b({definition:s,tag:c,parent:o,schemaDefinitionsTagName:e}){const a=e?[e]:[];return Object.entries(s.components?.schemas||{}).map(([t,f])=>{if(!(f["x-tags"]||a).includes(c.name))return null;const n=d("schema",{name:t,"x-displayName":`${f.title||t}`,description:`{% schemaDefinition showWriteOnly="true" schemaRef="#/components/schemas/${t}" /%}`,isSchema:!0,level:2},o);return n.depth=o.depth+1,n}).filter(Boolean)}function v(s,c,o){const e=[];for(const a of y)if(s["x-mcp"]?.[a]){const t=O(a),f=[t];for(const i of s["x-mcp"]?.[a]||[])if((i.tags?.length?i.tags:f).includes(c.name)){const r=$(o.id,w(i.name)),p=d("mcp",{name:i.name,"x-displayName":i.title||i.name,description:`${i.description||""}
2
+ {% mcp${t.slice(0,-1)} toolName="${i.name}" id="${r}" /%}`,isSchema:!0,level:2},o);p.depth=o.depth+1,e.push(p)}}return e}function U(s,c){const{definition:o}=s,e={},a=o["x-webhooks"]||o.webhooks,t=o["x-mcp"];for(const f of c||[])e[f.name]={...f,operations:[]};return o.paths&&u(s,o.paths,e),a&&u(s,a,e,!0),t&&E(t,e),e}function E(s,c){for(const o of y)if(s[o])for(const e of s[o]){const a=e.tags&&e.tags.length?e.tags:[O(o)];for(const t of a){let f=c[t];f===void 0&&(f={name:t,operations:[],used:!0},c[t]=f)}}}function u(s,c,o,e){for(const a of Object.keys(c||{})){const t=c[a],f=Object.keys(t).filter(S);for(const i of f){const n=t[i];if(t.$ref){const{resolved:p}=s.deref(t);u(s,{[a]:p},o,e);continue}let r=n?.tags;(!r||!r.length)&&(r=e?[l]:[""]);for(const p of r){let m=o[p];m===void 0&&(m={name:p,operations:[]},o[p]=m),!m["x-traitTag"]&&m.operations.push({...n,pathName:a,pointer:k.compile(["paths",a,i]),httpVerb:i,pathParameters:t.parameters||[],pathServers:t.servers,isWebhook:!!e,keywords:n["x-keywords"]})}}}}function O(s){return s.charAt(0).toUpperCase()+s.slice(1)}export{O as capitalize,R as getTagGroupsItems,N as getTagsItems,U as getTagsWithOperations};
@@ -17,7 +17,7 @@ export type ExternalLinkSeparator = {
17
17
  separator?: string;
18
18
  separatorLine?: boolean;
19
19
  };
20
- export type MenuItemGroupType = 'group' | 'tag' | 'section' | 'schema' | 'tool' | 'rsrc' | 'prompt';
20
+ export type MenuItemGroupType = 'group' | 'tag' | 'section' | 'schema' | 'mcp';
21
21
  export type MenuItemType = MenuItemGroupType | 'operation';
22
22
  /** Generic interface for MenuItems */
23
23
  export interface IMenuItem {
@@ -51,6 +51,7 @@ export type ExtendedOpenAPIOperation = {
51
51
  pathServers: Array<OpenAPIServer> | undefined;
52
52
  isWebhook: boolean;
53
53
  defaultSampleName?: string | false;
54
+ keywords?: unknown;
54
55
  } & OpenAPIOperation;
55
56
  export type TagsInfoMap = Record<string, TagInfo>;
56
57
  export interface TagGroup {
@@ -91,9 +92,6 @@ export interface HooksConfig {
91
92
  AfterApiTitle?: HookConfig<{
92
93
  info: OpenAPIInfo;
93
94
  }>;
94
- AfterOpenApiDescription?: HookConfig<{
95
- info: OpenAPIInfo;
96
- }>;
97
95
  BeforeOperation?: HookConfig<{
98
96
  operation: OperationModel;
99
97
  }>;
@@ -115,9 +113,6 @@ export interface HooksConfig {
115
113
  sanitize?: (raw: string) => string;
116
114
  MiddlePanelFooter?: HookConfig<undefined>;
117
115
  MiddlePanelHeader?: HookConfig<undefined>;
118
- AfterOpenApiInfo?: HookConfig<{
119
- info: OpenAPIInfo;
120
- }>;
121
116
  }
122
117
  export type ExtendedMenuItem = Omit<IMenuItem, 'type'> & {
123
118
  type: MenuItemType | 'spec';
package/lib/standalone.js CHANGED
@@ -1 +1 @@
1
- import{jsx as i}from"react/jsx-runtime";import{createElement as p}from"react";import{createRoot as u,hydrateRoot as m}from"react-dom/client";import{querySelector as a}from"./utils/dom.js";import{RedoclyOpenAPIDocs as l}from"./components/RedoclyOpenAPIDocs/RedoclyOpenAPIDocs.js";import{RedoclyOpenAPIDocsStandalone as f}from"./components/RedoclyOpenAPIDocs/RedoclyOpenAPIDocsStandalone.js";import{setSecurityDetails as P,setSecurityDetailsVariants as V}from"./utils/security-details.js";import{setParameterValue as D}from"./utils/parameters.js";function d(t){const e={},o=t.attributes;for(let r=0;r<o.length;r++){const n=o[r];e[n.name]=n.value}return e}function E(t){const e=d(t),o={};for(const r in e){const n=r.replace(/-(.)/g,(c,s)=>s.toUpperCase());o[n]=e[r]}return o}function A(t,e=document.querySelector("redoc")){m(e,i(l,{store:t}),{onRecoverableError:(o,r)=>{o.message.includes("Minified React error #418")||console.error(o.message,r)}})}function _(t,e={},o=a("redoc")){if(o===null)throw new Error('"element" argument is not provided and <redoc> tag is not found on the page');const{router:r,...n}=e;let c,s;typeof t=="string"?c=t:typeof t=="object"&&(s=t),u(o).render(p(f,{definition:s,definitionUrl:c,options:{...n,...E(o)},router:r??"hash"},["Loading..."]))}const N=__REDOCLY_API_REFERENCE_VERSION__,v=__REDOCLY_API_REFERENCE_REVISION__;function R(){const t=a("redoc");if(!t)return;const e=t.getAttribute("spec-url");e&&_(e,{},t)}R();export{A as hydrate,_ as init,v as revision,D as setParameterValue,P as setSecurityDetails,V as setSecurityDetailsVariants,N as version};
1
+ import{jsx as i}from"react/jsx-runtime";import{createElement as p}from"react";import{createRoot as u,hydrateRoot as m}from"react-dom/client";import{querySelector as a}from"./utils/dom.js";import{RedoclyOpenAPIDocs as l}from"./components/RedoclyOpenAPIDocs/RedoclyOpenAPIDocs.js";import{RedoclyOpenAPIDocsStandalone as f}from"./components/RedoclyOpenAPIDocs/RedoclyOpenAPIDocsStandalone.js";import{setSecurityDetails as P,setSecurityDetailsVariants as V}from"./utils/security-details.js";import{setParameterValue as D}from"./utils/parameters.js";function d(t){const e={},o=t.attributes;for(let r=0;r<o.length;r++){const n=o[r];e[n.name]=n.value}return e}function E(t){const e=d(t),o={};for(const r in e){const n=r.replace(/-(.)/g,(c,s)=>s.toUpperCase());o[n]=e[r]}return o}function A(t,e=document.querySelector("redoc")){m(e,i(l,{store:t}),{onRecoverableError:(o,r)=>{o.message.includes("Minified React error #418")||console.error(o.message,r)}})}function _(t,e={},o=a("redoc")){if(o===null)throw new Error('"element" argument is not provided and <redoc> tag is not found on the page');const{router:r,...n}={...e,...E(o)};let c,s;typeof t=="string"?c=t:typeof t=="object"&&(s=t),u(o).render(p(f,{definition:s,definitionUrl:c,options:n,router:r??"hash"},["Loading..."]))}const N=__REDOCLY_API_REFERENCE_VERSION__,v=__REDOCLY_API_REFERENCE_REVISION__;function R(){const t=a("redoc");if(!t)return;const e=t.getAttribute("spec-url");e&&_(e,{},t)}R();export{A as hydrate,_ as init,v as revision,D as setParameterValue,P as setSecurityDetails,V as setSecurityDetailsVariants,N as version};
@@ -4,7 +4,6 @@ export interface OpenAPIDefinition {
4
4
  openapi: string;
5
5
  info: OpenAPIInfo;
6
6
  servers?: OpenAPIServer[];
7
- 'x-servers'?: OpenAPIServer[];
8
7
  paths: OpenAPIPaths;
9
8
  components?: OpenAPIComponents;
10
9
  security?: OpenAPISecurityRequirement[];
@@ -19,6 +18,7 @@ export interface OpenAPIDefinition {
19
18
  }>;
20
19
  'x-feedback'?: any;
21
20
  'x-schema-catalog-link'?: string;
21
+ 'x-keywords'?: unknown;
22
22
  }
23
23
  export interface OpenAPIInfo extends ParsedDescriptionWithSummary {
24
24
  title: string;
@@ -51,12 +51,6 @@ export interface OpenAPIServer extends ParsedDescription {
51
51
  description?: string;
52
52
  name?: string;
53
53
  variables?: OpenAPIServerVariables;
54
- 'x-isLive'?: boolean;
55
- 'x-labels'?: {
56
- label?: string;
57
- color?: string;
58
- value: string;
59
- }[];
60
54
  }
61
55
  export interface OpenAPIServerVariables {
62
56
  [name: string]: OpenAPIServerVariable;
@@ -214,6 +208,7 @@ export interface OpenAPIDiscriminator {
214
208
  [name: string]: string;
215
209
  };
216
210
  'x-explicitMappingOnly'?: boolean;
211
+ defaultMapping?: string;
217
212
  }
218
213
  export interface OpenAPIMediaType {
219
214
  schema?: Referenced<OpenAPISchema>;
@@ -368,6 +363,7 @@ export interface OpenAPITag extends ParsedDescription {
368
363
  externalDocs?: OpenAPIExternalDocumentation;
369
364
  'x-displayName'?: string;
370
365
  'x-rbac'?: Record<string, unknown>;
366
+ 'x-keywords'?: unknown;
371
367
  }
372
368
  export interface OpenAPIExternalDocumentation extends ParsedDescription {
373
369
  description?: string;
@@ -422,8 +418,6 @@ export interface McpResource {
422
418
  description?: string;
423
419
  uri: string;
424
420
  mimeType: string;
425
- blob?: string;
426
- text?: string;
427
421
  security?: OpenAPISecurityRequirement[];
428
422
  tags?: string[];
429
423
  'x-badges'?: OpenAPIXBadges[];
@@ -433,13 +427,9 @@ export interface McpPrompt {
433
427
  title?: string;
434
428
  description: string;
435
429
  arguments: McpPromptArgument[];
436
- security?: OpenAPISecurityRequirement[];
437
- tags?: string[];
438
- 'x-badges'?: OpenAPIXBadges[];
439
430
  }
440
431
  export interface McpPromptArgument {
441
432
  name: string;
442
433
  description: string;
443
434
  required: boolean;
444
- example?: string;
445
435
  }
@@ -1 +1 @@
1
- import{bundle as a,loadConfig as r}from"@redocly/openapi-core";import{combineUrls as s}from"@redocly/theme/core/openapi";import{convertSwagger2OpenAPI as c}from"./convertSwagger2OpenAPI.js";import{IS_BROWSER as t}from"./dom.js";import{REDOCLY_CONFIG_FILE as f}from"../constants.js";async function w(){const o=t?window.location.origin:typeof globalThis.process<"u"?globalThis.process.cwd():"";try{return(await r({configPath:s(o,f)}))?.resolvedConfig.openapi||{}}catch{return{}}}async function b(o){const n=await r(),e={config:n,base:t?window.location.origin:typeof globalThis.process<"u"?globalThis.process.cwd():""};t&&(n.resolve.http.customFetch=globalThis.fetch),typeof o=="object"&&o!==null?e.doc=d(o):e.ref=o;const{bundle:{parsed:i}}=await a(e);return i.swagger!==void 0?c(i):i}function d(o){return{source:{absoluteRef:""},parsed:o}}export{b as loadAndBundleDefinition,w as loadOpenapiConfig};
1
+ import{bundleOas as r,createEmptyRedoclyConfig as i}from"@redocly/openapi-core/lib/bundle-oas";import{convertSwagger2OpenAPI as c}from"./convertSwagger2OpenAPI.js";import{IS_BROWSER as a}from"./dom.js";async function l(){try{return(await i())?.resolvedConfig.openapi||{}}catch{return{}}}async function p(o){const t=await i(),e={config:t,base:a?window.location.origin:typeof globalThis.process<"u"?globalThis.process.cwd():""};a&&(t.resolve.http.customFetch=globalThis.fetch),typeof o=="object"&&o!==null?e.doc=s(o):e.ref=o;const{bundle:{parsed:n}}=await r(e);return n.swagger!==void 0?c(n):n}function s(o){return{source:{absoluteRef:""},parsed:o}}export{p as loadAndBundleDefinition,l as loadOpenapiConfig};
@@ -1,3 +1,3 @@
1
1
  export declare const MCP_SERVER_CAPABILITIES: string[];
2
2
  export declare const MCP_SERVER_EXPERIMENTAL_CAPABILITIES = "experimental";
3
- export declare const PAGE_ACTIONS_MCP: "mcp-json"[];
3
+ export declare const PAGE_ACTIONS_MCP: "mcp-cursor"[];
package/lib/utils/mcp.js CHANGED
@@ -1 +1 @@
1
- const o=["tools","resources","prompts","logging","subscribe","completions"],s="experimental",e=["mcp-json"];export{o as MCP_SERVER_CAPABILITIES,s as MCP_SERVER_EXPERIMENTAL_CAPABILITIES,e as PAGE_ACTIONS_MCP};
1
+ const o=["tools","resources","prompts","logging","subscribe","completions"],s="experimental",e=["mcp-cursor"];export{o as MCP_SERVER_CAPABILITIES,s as MCP_SERVER_EXPERIMENTAL_CAPABILITIES,e as PAGE_ACTIONS_MCP};