@redocly/openapi-docs 3.12.0-next.2 → 3.12.0-next.20

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 (146) hide show
  1. package/dist/redocly-openapi-docs.min.js +7496 -7418
  2. package/lib/components/ApiInfo/ApiInfo.d.ts +1 -1
  3. package/lib/components/ApiInfo/ApiInfo.js +1 -1
  4. package/lib/components/ApiInfo/Metadata.d.ts +1 -1
  5. package/lib/components/ApiInfo/Metadata.js +1 -1
  6. package/lib/components/ApiInfo/styled.js +6 -6
  7. package/lib/components/CallbackSamples/CallbackSamples.d.ts +1 -1
  8. package/lib/components/CallbackSamples/CallbackSamples.js +1 -1
  9. package/lib/components/Callbacks/CallbackDetails.d.ts +1 -1
  10. package/lib/components/Callbacks/CallbackDetails.js +1 -1
  11. package/lib/components/Callbacks/CallbackSummary.d.ts +2 -1
  12. package/lib/components/Callbacks/CallbackSummary.js +2 -2
  13. package/lib/components/Callbacks/styled.js +1 -1
  14. package/lib/components/Content/useAutoScroll.js +1 -1
  15. package/lib/components/ContentItem/useIsExpanded.js +1 -1
  16. package/lib/components/ContentItems/VirtualList.js +1 -1
  17. package/lib/components/ContentItems/useScrollOnRender.js +1 -1
  18. package/lib/components/Discriminator/Discriminator.d.ts +1 -1
  19. package/lib/components/Download/DownloadSpecification.js +2 -2
  20. package/lib/components/ExpandAllButton/ExpandAllButton.js +1 -1
  21. package/lib/components/ExternalDocumentation/ExternalDocumentation.js +1 -1
  22. package/lib/components/Language/LanguageDropdown.js +1 -1
  23. package/lib/components/Language/LanguageItem.js +1 -1
  24. package/lib/components/Language/LanguageList.js +1 -1
  25. package/lib/components/Language/styled.js +9 -9
  26. package/lib/components/Markdown/Markdown.d.ts +1 -1
  27. package/lib/components/Markdown/Markdown.js +1 -1
  28. package/lib/components/Markdown/types.d.ts +11 -2
  29. package/lib/components/OperationItem/Description.d.ts +1 -4
  30. package/lib/components/OperationItem/Description.js +1 -1
  31. package/lib/components/OperationItem/OperationItem.js +3 -3
  32. package/lib/components/Overview/Overview.d.ts +1 -1
  33. package/lib/components/Overview/Overview.js +1 -1
  34. package/lib/components/PageFooter/PageFooter.js +1 -1
  35. package/lib/components/Panel/ResponsePanel.js +1 -1
  36. package/lib/components/PanelItem/styled.js +1 -1
  37. package/lib/components/PayloadSamples/ExampleValue.js +1 -1
  38. package/lib/components/PayloadSamples/styled.js +1 -1
  39. package/lib/components/PropertyDetails/Extensions.js +1 -1
  40. package/lib/components/PropertyDetails/FieldDetails.js +1 -1
  41. package/lib/components/PropertyDetails/styled.js +1 -1
  42. package/lib/components/PropertyDetails/types.d.ts +1 -1
  43. package/lib/components/RedoclyOpenAPIDocs/Providers.js +1 -1
  44. package/lib/components/RedoclyOpenAPIDocs/RedoclyOpenAPIDocs.js +1 -1
  45. package/lib/components/RedoclyOpenAPIDocs/RedoclyOpenAPIDocsStandalone.js +1 -1
  46. package/lib/components/RedoclyOpenAPIDocs/types.d.ts +2 -2
  47. package/lib/components/Replay/EmbeddedReplay.js +3 -3
  48. package/lib/components/Replay/Replay.js +1 -1
  49. package/lib/components/Replay/utils.d.ts +1 -1
  50. package/lib/components/Replay/utils.js +1 -1
  51. package/lib/components/Request/RequestDetails.js +2 -2
  52. package/lib/components/Request/types.d.ts +1 -1
  53. package/lib/components/RequestParameters/ParametersGroup.js +1 -1
  54. package/lib/components/RequestSamples/CodeSample.js +1 -1
  55. package/lib/components/RequestSamples/Example.js +1 -1
  56. package/lib/components/RequestSamples/RequestSamples.js +1 -1
  57. package/lib/components/ResponseSamples/ResponseSamples.js +1 -1
  58. package/lib/components/ResponseSamples/Summary.js +1 -1
  59. package/lib/components/RightPanel/RightPanel.js +1 -1
  60. package/lib/components/Samples/ExampleSwitch.js +1 -1
  61. package/lib/components/Schema/helpers.js +1 -1
  62. package/lib/components/SchemaDefinition/SchemaDefinition.js +1 -1
  63. package/lib/components/SectionContent/SectionContent.js +5 -5
  64. package/lib/components/SectionItem/SectionItem.d.ts +1 -1
  65. package/lib/components/SectionItem/SectionItem.js +1 -1
  66. package/lib/components/Security/OAuthScopes.js +1 -1
  67. package/lib/components/Security/Security.js +1 -1
  68. package/lib/components/Security/SecurityButton.js +2 -2
  69. package/lib/components/Security/SecurityModal.js +5 -5
  70. package/lib/components/ServerList/ServerList.js +1 -1
  71. package/lib/components/ServerList/types.d.ts +1 -1
  72. package/lib/components/ServerListDropdown/ServerListDropdown.js +1 -1
  73. package/lib/components/ServerListDropdown/styled.js +6 -6
  74. package/lib/components/SideMenu/SideMenu.js +1 -1
  75. package/lib/components/SideMenu/hooks/useMenuItems.js +1 -1
  76. package/lib/components/StickySidebar/SidebarActions.js +2 -2
  77. package/lib/components/StickySidebar/StickyResponsiveSidebar.js +3 -3
  78. package/lib/components/Tabs/Tabs.js +1 -1
  79. package/lib/components/Tabs/useTabsState.js +1 -1
  80. package/lib/components/TagItem/OperationNavigationItems.d.ts +1 -1
  81. package/lib/components/TagItem/OperationsNavigation.js +1 -1
  82. package/lib/components/TagItem/TagItem.js +7 -7
  83. package/lib/components/TagItem/styled.js +1 -1
  84. package/lib/components/ViewNested/ViewNested.js +1 -1
  85. package/lib/components/common/Badges.js +1 -1
  86. package/lib/components/common/BodyContent/BodyContent.js +1 -1
  87. package/lib/components/common/CodeBlockPanel.js +3 -3
  88. package/lib/components/common/Dropdown/Dropdown.d.ts +1 -1
  89. package/lib/components/common/Dropdown/Dropdown.js +4 -4
  90. package/lib/components/common/ExpandableExample/ExpandableExample.js +1 -1
  91. package/lib/components/common/Extensions.js +1 -1
  92. package/lib/components/common/Fields/fields-layout.js +1 -1
  93. package/lib/components/common/Fields/fields.js +1 -1
  94. package/lib/components/common/LinkToField.js +1 -1
  95. package/lib/components/common/OperationItemTitle.js +3 -3
  96. package/lib/components/common/SchemaSelection/SchemaSelection.d.ts +1 -1
  97. package/lib/components/common/SchemaSelection/SchemaSelection.js +1 -1
  98. package/lib/components/common/Select/styled.js +1 -1
  99. package/lib/components/common/Skeleton/Skeleton.js +1 -1
  100. package/lib/components/common/linkify.js +1 -1
  101. package/lib/components/common/panels.js +9 -13
  102. package/lib/components/common/styled.js +1 -1
  103. package/lib/hoc/types.d.ts +1 -1
  104. package/lib/hoc/withRouter.js +1 -1
  105. package/lib/hooks/usePerformanceMetrics.js +1 -1
  106. package/lib/hooks/useTelemetry.d.ts +1 -1
  107. package/lib/hooks/useTelemetry.js +1 -1
  108. package/lib/hooks/useTranslate.d.ts +1 -1
  109. package/lib/hooks/useTranslate.js +1 -1
  110. package/lib/index.d.ts +1 -0
  111. package/lib/index.js +1 -1
  112. package/lib/jotai/app.d.ts +2 -2
  113. package/lib/jotai/app.js +1 -1
  114. package/lib/models/callback.d.ts +1 -1
  115. package/lib/models/mediaType.js +1 -1
  116. package/lib/models/operation.d.ts +1 -1
  117. package/lib/models/operation.js +1 -1
  118. package/lib/models/schema.js +2 -2
  119. package/lib/services/OpenAPIParser.js +1 -1
  120. package/lib/services/code-samples/generator.d.ts +4 -1
  121. package/lib/services/code-samples/generator.js +1 -1
  122. package/lib/services/code-samples/httpsnippet/helpers/code-builder.d.ts +5 -1
  123. package/lib/services/code-samples/httpsnippet/helpers/code-builder.js +2 -2
  124. package/lib/services/code-samples/httpsnippet/helpers/code-helpers.d.ts +2 -2
  125. package/lib/services/code-samples/httpsnippet/helpers/code-helpers.js +2 -2
  126. package/lib/services/code-samples/httpsnippet/index.js +1 -1
  127. package/lib/services/code-samples/httpsnippet/targets/csharp/httpclient.js +1 -1
  128. package/lib/services/config-options/normalizeOptions.js +1 -1
  129. package/lib/services/config-options/types.d.ts +3 -11
  130. package/lib/services/menu/markdown.js +1 -1
  131. package/lib/services/utils.js +1 -1
  132. package/lib/types/open-api.d.ts +3 -1
  133. package/lib/utils/configure-helpers.d.ts +1 -1
  134. package/lib/utils/configure-helpers.js +1 -1
  135. package/lib/utils/helpers.js +2 -2
  136. package/lib/utils/index.d.ts +1 -0
  137. package/lib/utils/index.js +1 -1
  138. package/lib/utils/loadAndBundleSpec.js +1 -1
  139. package/lib/utils/local-storage.js +1 -1
  140. package/lib/utils/openapi.js +1 -1
  141. package/lib/utils/saveTextBeforeHeading.js +1 -1
  142. package/lib/utils/security-details.js +1 -1
  143. package/lib/utils/session-storage.js +1 -1
  144. package/lib/utils/telemetry.d.ts +1 -0
  145. package/lib/utils/telemetry.js +1 -0
  146. package/package.json +6 -6
@@ -1,5 +1,5 @@
1
- import{Panel as o,PanelBody as a}from"@redocly/theme";import{styled as e}from"../../styled-components.js";const d=e(o)`
2
- ${a} {
1
+ import{Panel as o}from"@redocly/theme/components/Panel/Panel";import{PanelBody as r}from"@redocly/theme/components/Panel/PanelBody";import{styled as m}from"../../styled-components.js";const p=m(o)`
2
+ ${r} {
3
3
  padding: var(--spacing-sm) 0 0;
4
4
  }
5
- `;export{d as CodeBlockPanel};
5
+ `;export{p as CodeBlockPanel};
@@ -1,4 +1,4 @@
1
- import type { SelectOption } from '@redocly/theme';
1
+ import type { SelectOption } from '@redocly/theme/core/openapi';
2
2
  export interface DropdownProps<T> {
3
3
  value: T;
4
4
  onChange: ({ label, value }: SelectOption<T>) => void;
@@ -1,8 +1,8 @@
1
- import{jsx as n}from"react/jsx-runtime";import{Dropdown as c,typedMemo as m,CheckmarkIcon as g,DropdownMenu as h,DropdownMenuItem as p,Button as f}from"@redocly/theme";import{styled as i}from"../../../styled-components.js";function u({options:t,value:r,onChange:o,className:l,triggerVariant:s="outlined",triggerSize:d="small"}){const a=t.find(e=>e.value===r)?.label;return t.length===1?n(b,{children:a}):n(c,{className:l,trigger:n(f,{variant:s,size:d,type:"button",children:a}),withArrow:!0,children:n(h,{children:t.map(e=>n(w,{active:e.value===r,onAction:()=>o(e),suffix:e.value===r&&n(v,{}),children:e.label},e.label))})})}const k=m(u),v=i(g)`
1
+ import{jsx as n}from"react/jsx-runtime";import{Dropdown as d}from"@redocly/theme/components/Dropdown/Dropdown";import{CheckmarkIcon as c}from"@redocly/theme/icons/CheckmarkIcon/CheckmarkIcon";import{DropdownMenu as p}from"@redocly/theme/components/Dropdown/DropdownMenu";import{DropdownMenuItem as f}from"@redocly/theme/components/Dropdown/DropdownMenuItem";import{Button as g}from"@redocly/theme/components/Button/Button";import{typedMemo as h}from"@redocly/theme/core/openapi";import{styled as o}from"../../../styled-components.js";function u({options:r,value:t,onChange:a,className:l,triggerVariant:m="outlined",triggerSize:s="small"}){const i=r.find(e=>e.value===t)?.label;return r.length===1?n(b,{children:i}):n(d,{className:l,trigger:n(g,{variant:m,size:s,type:"button",children:i}),withArrow:!0,children:n(p,{children:r.map(e=>n(w,{active:e.value===t,onAction:()=>a(e),suffix:e.value===t&&n(v,{}),children:e.label},e.label))})})}const C=h(u),v=o(c)`
2
2
  width: 16px;
3
3
  height: 16px;
4
4
  margin-left: auto;
5
- `,w=i(p)`
5
+ `,w=o(f)`
6
6
  --dropdown-menu-item-justify-content: space-between;
7
7
 
8
8
  width: 100%;
@@ -12,7 +12,7 @@ import{jsx as n}from"react/jsx-runtime";import{Dropdown as c,typedMemo as m,Chec
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
- `,b=i.span`
15
+ `,b=o.span`
16
16
  margin-right: var(--spacing-unit);
17
17
  cursor: default;
18
18
  background: none;
@@ -23,4 +23,4 @@ import{jsx as n}from"react/jsx-runtime";import{Dropdown as c,typedMemo as m,Chec
23
23
  line-height: var(--line-height-lg);
24
24
  font-family: var(--font-family-base);
25
25
  font-weight: var(--font-weight-regular);
26
- `;export{k as Dropdown};
26
+ `;export{C as Dropdown};
@@ -1,4 +1,4 @@
1
- import{jsx as o,jsxs as p}from"react/jsx-runtime";import{Button as l}from"@redocly/theme";import{useMemo as m,useState as c}from"react";import{Markdown as d}from"../../Markdown/index.js";import{ExampleValue as x}from"../Fields/index.js";import{useTranslate as E}from"../../../hooks/index.js";import{styled as a}from"../../../styled-components.js";const f=150;function A({value:e}){const s=E(),[n,i]=c(!1),t=m(()=>e.slice(0,f),[e]),r=()=>{i(!n)};return p(u,{children:[o(d,{source:n?e:t}),(e!==t||n)&&o(h,{children:o(l,{variant:"link",size:"small",onClick:r,children:n?s("openapi.hideExample","Hide example"):s("openapi.showExample","Show example")})})]})}const u=a(x)`
1
+ import{jsx as o,jsxs as p}from"react/jsx-runtime";import{useMemo as l,useState as m}from"react";import{Button as c}from"@redocly/theme/components/Button/Button";import{Markdown as d}from"../../Markdown/index.js";import{ExampleValue as x}from"../Fields/index.js";import{useTranslate as E}from"../../../hooks/index.js";import{styled as a}from"../../../styled-components.js";const f=150;function A({value:e}){const s=E(),[n,i]=m(!1),t=l(()=>e.slice(0,f),[e]),r=()=>{i(!n)};return p(u,{children:[o(d,{source:n?e:t}),(e!==t||n)&&o(h,{children:o(c,{variant:"link",size:"small",onClick:r,children:n?s("openapi.hideExample","Hide example"):s("openapi.showExample","Show example")})})]})}const u=a(x)`
2
2
  display: inline;
3
3
 
4
4
  & * {
@@ -1,3 +1,3 @@
1
- import{jsxs as t,jsx as n}from"react/jsx-runtime";import{memo as i}from"react";import{useAtomValue as m}from"jotai";import{Markdown as p}from"@redocly/theme";import{ExtensionValue as e,FieldLabel as l}from"./index.js";import{globalOptionsAtom as a}from"../../jotai/store.js";import{styled as f}from"../../styled-components.js";const c=f(p)`
1
+ import{jsxs as t,jsx as n}from"react/jsx-runtime";import{memo as i}from"react";import{useAtomValue as m}from"jotai";import{Markdown as p}from"@redocly/theme/components/Markdown/Markdown";import{ExtensionValue as e,FieldLabel as l}from"./index.js";import{globalOptionsAtom as a}from"../../jotai/store.js";import{styled as f}from"../../styled-components.js";const c=f(p)`
2
2
  margin: 2px 0;
3
3
  `;function d({extensions:r}){const{showExtensions:s}=m(a);return s?n("div",{children:Object.keys(r).map(o=>t(c,{children:[t(l,{children:[o.substring(2),": "]})," ",n(e,{children:typeof r[o]=="string"?r[o]:JSON.stringify(r[o])})]},o))}):null}const w=i(d);export{w as Extensions};
@@ -1,4 +1,4 @@
1
- import{css as i}from"styled-components";import{breakpoints as r}from"@redocly/theme";import{typography as n}from"../../../utils/index.js";import{deprecatedCss as l}from"../mixins.js";import{styled as a}from"../../../styled-components.js";const p=o=>typeof document<"u"?getComputedStyle(document.documentElement).getPropertyValue(o).trim():"",h=a.caption`
1
+ import{css as i}from"styled-components";import{breakpoints as r}from"@redocly/theme/core/openapi";import{typography as n}from"../../../utils/index.js";import{deprecatedCss as l}from"../mixins.js";import{styled as a}from"../../../styled-components.js";const p=o=>typeof document<"u"?getComputedStyle(document.documentElement).getPropertyValue(o).trim():"",h=a.caption`
2
2
  text-align: right;
3
3
  font-size: 0.9em;
4
4
  font-weight: normal;
@@ -1,4 +1,4 @@
1
- import{Button as t}from"@redocly/theme";import{styled as r}from"../../../styled-components.js";const o=r.span`
1
+ import{Button as t}from"@redocly/theme/components/Button/Button";import{styled as r}from"../../../styled-components.js";const o=r.span`
2
2
  vertical-align: middle;
3
3
  line-height: var(--schema-labels-line-height);
4
4
  font-size: var(--schema-property-labels-font-size);
@@ -1,4 +1,4 @@
1
- import{jsx as c}from"react/jsx-runtime";import{css as p}from"styled-components";import{useLocation as l}from"react-router-dom";import{LinkIcon as r}from"@redocly/theme";import{encodeBackSlashes as m}from"../../utils/string.js";import{constructFieldDeepFragment as d,joinWithSeparator as n}from"../../services/history/helpers.js";import{ShareLink as f}from"./linkify.js";import{styled as h}from"../../styled-components.js";function F(i,s){const o=i.deps.operation,e=d(i,s);if(!o?.id&&!o.isCallback)return"#"+e.toLowerCase();const t=n(o.href,n(o.id,e),"#");return m(t.toLowerCase())}const S=({to:i,className:s})=>{const o=i,e=l(),t=o?.split("#")[1],a=e?e.hash===`#${t}`:!1;return c(k,{ariaLabel:`link to ${o}`,className:s,isActive:a,to:o,id:t})},k=h(f)`
1
+ import{jsx as c}from"react/jsx-runtime";import{css as p}from"styled-components";import{useLocation as l}from"react-router-dom";import{LinkIcon as r}from"@redocly/theme/icons/LinkIcon/LinkIcon";import{encodeBackSlashes as m}from"../../utils/string.js";import{constructFieldDeepFragment as d,joinWithSeparator as n}from"../../services/history/helpers.js";import{ShareLink as f}from"./linkify.js";import{styled as h}from"../../styled-components.js";function F(i,s){const o=i.deps.operation,e=d(i,s);if(!o?.id&&!o.isCallback)return"#"+e.toLowerCase();const t=n(o.href,n(o.id,e),"#");return m(t.toLowerCase())}const S=({to:i,className:s})=>{const o=i,e=l(),t=o?.split("#")[1],a=e?e.hash===`#${t}`:!1;return c(k,{ariaLabel:`link to ${o}`,className:s,isActive:a,to:o,id:t})},k=h(f)`
2
2
  display: flex;
3
3
  ${r} {
4
4
  visibility: hidden;
@@ -1,4 +1,4 @@
1
- import{LinkIcon as i,H2 as t}from"@redocly/theme";import{styled as e}from"../../styled-components.js";const r=e.h4`
1
+ import{LinkIcon as i}from"@redocly/theme/icons/LinkIcon/LinkIcon";import{H2 as e}from"@redocly/theme/components/Typography/H2";import{styled as t}from"../../styled-components.js";const a=t.h4`
2
2
  font-size: var(--h4-font-size);
3
3
  font-weight: var(--h4-font-weight);
4
4
  line-height: var(--h4-line-height);
@@ -16,7 +16,7 @@ import{LinkIcon as i,H2 as t}from"@redocly/theme";import{styled as e}from"../../
16
16
  visibility: visible;
17
17
  }
18
18
  }
19
- `,a=e(t)`
19
+ `,l=t(e)`
20
20
  position: relative;
21
21
  display: flex;
22
22
  align-items: center;
@@ -29,4 +29,4 @@ import{LinkIcon as i,H2 as t}from"@redocly/theme";import{styled as e}from"../../
29
29
  visibility: visible;
30
30
  }
31
31
  }
32
- `;export{a as Heading,r as Title};
32
+ `;export{l as Heading,a as Title};
@@ -1,4 +1,4 @@
1
- import type { SelectOption } from '@redocly/theme';
1
+ import type { SelectOption } from '@redocly/theme/core/openapi';
2
2
  import type { SchemaModel } from '../../../models/index.js';
3
3
  interface SchemaSelectionProps {
4
4
  options: SelectOption<number>[];
@@ -1 +1 @@
1
- import{jsx as u}from"react/jsx-runtime";import{useCallback as E,useEffect as I,useRef as T,useState as g}from"react";import{useAtom as h}from"jotai";import{Segmented as w,isUndefined as x}from"@redocly/theme";import{Dropdown as y}from"../Dropdown/index.js";import{operationStore as A}from"../../../jotai/operation.js";const b=5;function z({options:t,onChange:r,pointer:m,schema:n,defaultOneOfIdx:d}){const[p,c]=h(A(m)),S=p.activeOneOf[n.pointer]??d,o=t[S]?.value,[i,O]=g(!1),s=T(null);I(()=>{if(!s.current)return;const e=()=>{const v=s.current?.querySelectorAll('button[role="tab"]'),a=Array.from(v||[]).some(l=>l.offsetWidth<l.scrollWidth);a!==i&&O(a)};return e(),window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[i,t]);const f=E(({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 x(o)?null:t.length>b||i?u(y,{options:t,value:o,onChange:f}):u(w,{ref:s,value:o,onChange:f,options:t,size:"small","data-testid":"segmented-schema"})}const q=z;export{q as SchemaSelection};
1
+ import{jsx as m}from"react/jsx-runtime";import{useCallback as E,useEffect as I,useRef as T,useState as g}from"react";import{useAtom as h}from"jotai";import{Segmented as w}from"@redocly/theme/components/Segmented/Segmented";import{isUndefined as x}from"@redocly/theme/core/openapi";import{Dropdown as y}from"../Dropdown/index.js";import{operationStore as A}from"../../../jotai/operation.js";const b=5;function z({options:t,onChange:r,pointer:u,schema:n,defaultOneOfIdx:d}){const[p,c]=h(A(u)),S=p.activeOneOf[n.pointer]??d,o=t[S]?.value,[i,O]=g(!1),s=T(null);I(()=>{if(!s.current)return;const e=()=>{const v=s.current?.querySelectorAll('button[role="tab"]'),a=Array.from(v||[]).some(l=>l.offsetWidth<l.scrollWidth);a!==i&&O(a)};return e(),window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[i,t]);const f=E(({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 x(o)?null:t.length>b||i?m(y,{options:t,value:o,onChange:f}):m(w,{ref:s,value:o,onChange:f,options:t,size:"small","data-testid":"segmented-schema"})}const D=z;export{D as SchemaSelection};
@@ -1,4 +1,4 @@
1
- import{css as n}from"styled-components";import{ChevronDownIcon as t}from"@redocly/theme";import{Select as i}from"./Select.js";import{styled as e}from"../../../styled-components.js";const r=n`
1
+ import{css as n}from"styled-components";import{ChevronDownIcon as t}from"@redocly/theme/icons/ChevronDownIcon/ChevronDownIcon";import{Select as i}from"./Select.js";import{styled as e}from"../../../styled-components.js";const r=n`
2
2
  background-color: var(--panel-samples-dropdown-bg-color);
3
3
  border: var(--panel-samples-dropdown-border);
4
4
  color: var(--panel-samples-dropdown-color);
@@ -1,4 +1,4 @@
1
- import{jsx as r,jsxs as o}from"react/jsx-runtime";import{keyframes as e}from"styled-components";import{H2 as a}from"@redocly/theme";import{Section as n,SamplesMiddlePanel as s}from"../panels.js";import{styled as d}from"../../../styled-components.js";const l=e`
1
+ import{jsx as r,jsxs as o}from"react/jsx-runtime";import{keyframes as e}from"styled-components";import{H2 as a}from"@redocly/theme/components/Typography/H2";import{Section as n,SamplesMiddlePanel as s}from"../panels.js";import{styled as d}from"../../../styled-components.js";const l=e`
2
2
  100% {
3
3
  transform: translateX(100%);
4
4
  }
@@ -1,4 +1,4 @@
1
- import{jsx as n,jsxs as c}from"react/jsx-runtime";import{useAtomValue as m}from"jotai";import{Link as d}from"react-router-dom";import{LinkIcon as e}from"@redocly/theme";import{globalOptionsAtom as h}from"../../jotai/store.js";import{tryDecodeURIComponent as u}from"../../utils/index.js";import{styled as f}from"../../styled-components.js";function k(i){const{routingBasePath:a,unstable_hooks:r,onDeepLinkClick:o}=m(h),t=i.security?r?.replaceSecurityLink?.({securityRequirementId:i.to}):i.to,l=o&&{onClick:s=>{s.preventDefault(),o((a||"")+t)}};return t?n(d,{"aria-label":i["aria-label"]||`link to ${t}`,id:u(i.id||""),className:i.className||"",to:t?.startsWith("#")?t:(a||"")+t,...l,children:i.children}):i.children?c("span",{"aria-label":i["aria-label"]||`link to ${t}`,className:i.className,children:[" ",i.children," "]}):null}const y=f(k)`
1
+ import{jsx as n,jsxs as c}from"react/jsx-runtime";import{useAtomValue as m}from"jotai";import{Link as d}from"react-router-dom";import{LinkIcon as e}from"@redocly/theme/icons/LinkIcon/LinkIcon";import{globalOptionsAtom as h}from"../../jotai/store.js";import{tryDecodeURIComponent as u}from"../../utils/index.js";import{styled as f}from"../../styled-components.js";function k(i){const{routingBasePath:a,unstable_hooks:r,onDeepLinkClick:o}=m(h),t=i.security?r?.replaceSecurityLink?.({securityRequirementId:i.to}):i.to,l=o&&{onClick:s=>{s.preventDefault(),o((a||"")+t)}};return t?n(d,{"aria-label":i["aria-label"]||`link to ${t}`,id:u(i.id||""),className:i.className||"",to:t?.startsWith("#")?t:(a||"")+t,...l,children:i.children}):i.children?c("span",{"aria-label":i["aria-label"]||`link to ${t}`,className:i.className,children:[" ",i.children," "]}):null}const y=f(k)`
2
2
  position: absolute;
3
3
  top: 50%;
4
4
  left: 0;
@@ -1,9 +1,9 @@
1
- import{H2 as l,LayoutVariant as p,breakpoints as t,Markdown as d}from"@redocly/theme";import{css as o}from"styled-components";import{SECTION_ATTR as c}from"../../constants.js";import{styled as n}from"../../styled-components.js";const h=n.div`
2
- ${({compact:a,isStacked:i,fullWidth:e})=>{const r=a?0:"var(--spacing-vertical)";return o`
1
+ import{css as o}from"styled-components";import{LayoutVariant as p}from"@redocly/config";import{H2 as l}from"@redocly/theme/components/Typography/H2";import{Markdown as d}from"@redocly/theme/components/Markdown/Markdown";import{breakpoints as t}from"@redocly/theme/core/openapi";import{SECTION_ATTR as c}from"../../constants.js";import{styled as r}from"../../styled-components.js";const f=r.div`
2
+ ${({compact:a,isStacked:i,fullWidth:e})=>{const n=a?0:"var(--spacing-vertical)";return o`
3
3
  display: flex;
4
4
  flex-direction: column;
5
5
  width: 100%;
6
- padding: ${r} var(--panel-gap-horizontal);
6
+ padding: ${n} var(--panel-gap-horizontal);
7
7
 
8
8
  &:empty {
9
9
  display: none;
@@ -19,20 +19,16 @@ import{H2 as l,LayoutVariant as p,breakpoints as t,Markdown as d}from"@redocly/t
19
19
 
20
20
  @media print {
21
21
  width: 100%;
22
- padding-top: ${r};
23
- padding-bottom: ${r};
22
+ padding-top: ${n};
23
+ padding-bottom: ${n};
24
24
  }
25
25
  `}};
26
- & & {
27
- padding-left: 0;
28
- padding-right: 0;
29
- }
30
26
 
31
27
  &:last-child > ${d} :last-child,
32
28
  ${d} article :last-child {
33
29
  margin-bottom: 0;
34
30
  }
35
- `,b=n.div.attrs(a=>({[c]:a.sectionId,id:a.id}))`
31
+ `,w=r.div.attrs(a=>({[c]:a.sectionId,id:a.id}))`
36
32
  z-index: 0;
37
33
  padding: 0;
38
34
  width: 100%;
@@ -75,7 +71,7 @@ import{H2 as l,LayoutVariant as p,breakpoints as t,Markdown as d}from"@redocly/t
75
71
  ${l} {
76
72
  position: relative;
77
73
  }
78
- `,$=n.div`
74
+ `,x=r.div`
79
75
  color: var(--panel-samples-text-color);
80
76
  width: 100%;
81
77
  height: fit-content;
@@ -105,7 +101,7 @@ import{H2 as l,LayoutVariant as p,breakpoints as t,Markdown as d}from"@redocly/t
105
101
  padding-top: var(--spacing-vertical);
106
102
  padding-bottom: var(--spacing-vertical);
107
103
  }
108
- `,w=n.div`
104
+ `,y=r.div`
109
105
  display: flex;
110
106
  flex-direction: column;
111
107
  justify-content: space-between;
@@ -119,4 +115,4 @@ import{H2 as l,LayoutVariant as p,breakpoints as t,Markdown as d}from"@redocly/t
119
115
  @media print {
120
116
  flex-direction: column;
121
117
  }
122
- `;export{w as Row,h as SamplesMiddlePanel,$ as SamplesPanel,b as Section};
118
+ `;export{y as Row,f as SamplesMiddlePanel,x as SamplesPanel,w as Section};
@@ -1,4 +1,4 @@
1
- import{Tag as o}from"@redocly/theme";import{styled as r}from"../../styled-components.js";const t=r.div`
1
+ import{Tag as o}from"@redocly/theme/components/Tag/Tag";import{styled as r}from"../../styled-components.js";const t=r.div`
2
2
  display: flex;
3
3
  flex-direction: column;
4
4
  margin: var(--spacing-unit) var(--spacing-md) var(--spacing-sm);
@@ -1,4 +1,4 @@
1
- import type { LayoutVariant } from '@redocly/theme';
1
+ import type { LayoutVariant } from '@redocly/config';
2
2
  import type { Options } from '../services/config-options/types.js';
3
3
  import type { RouterType } from '../types/index.js';
4
4
  import type { OpenAPIParser } from '../services/OpenAPIParser.js';
@@ -1 +1 @@
1
- import{jsx as s}from"react/jsx-runtime";import{createElement as c}from"react";import{IS_BROWSER as f}from"@redocly/theme";import{useRouter as R}from"../hooks/index.js";import{getDisplayName as h}from"./utils.js";function P(r){const e=({disableRouter:i=!1,...t})=>{const o=t.basePath??"/",m=t.router??"history",{Router:u,routerProps:a}=R(m,o);return f&&!i?c(u,{...a,key:o},s(r,{...t})):s(r,{...t})};return e.displayName=`WithRouter(${h(r)})`,e}export{P as withRouter};
1
+ import{jsx as s}from"react/jsx-runtime";import{createElement as c}from"react";import{IS_BROWSER as f}from"@redocly/theme/core/openapi";import{useRouter as R}from"../hooks/index.js";import{getDisplayName as h}from"./utils.js";function P(r){const e=({disableRouter:i=!1,...t})=>{const o=t.basePath??"/",m=t.router??"history",{Router:u,routerProps:a}=R(m,o);return f&&!i?c(u,{...a,key:o},s(r,{...t})):s(r,{...t})};return e.displayName=`WithRouter(${h(r)})`,e}export{P as withRouter};
@@ -1 +1 @@
1
- import{useMount as t}from"@redocly/theme";import{onCLS as u,onLCP as l,onFCP as i,onTTFB as P}from"web-vitals";function f({sendTelemetry:a}){t(()=>{const n={},r=[new Promise(o=>u(e=>o({name:"CLS",value:e.value}))),new Promise(o=>l(e=>o({name:"LCP",value:e.value}))),new Promise(o=>i(e=>o({name:"FCP",value:e.value}))),new Promise(o=>P(e=>o({name:"TTFB",value:e.value})))];Promise.allSettled(r).then(o=>{o.forEach(e=>{if(e.status==="fulfilled"){const{name:m,value:s}=e.value;n[m]=Math.round(s)}}),a(n)})})}export{f as usePerformanceMetrics};
1
+ import{onCLS as t,onLCP as u,onFCP as l,onTTFB as i}from"web-vitals";import{useMount as P}from"@redocly/theme/core/openapi";function f({sendTelemetry:a}){P(()=>{const n={},r=[new Promise(o=>t(e=>o({name:"CLS",value:e.value}))),new Promise(o=>u(e=>o({name:"LCP",value:e.value}))),new Promise(o=>l(e=>o({name:"FCP",value:e.value}))),new Promise(o=>i(e=>o({name:"TTFB",value:e.value})))];Promise.allSettled(r).then(o=>{o.forEach(e=>{if(e.status==="fulfilled"){const{name:m,value:s}=e.value;n[m]=Math.round(s)}}),a(n)})})}export{f as usePerformanceMetrics};
@@ -1,2 +1,2 @@
1
- import { useThemeHooks } from '@redocly/theme';
1
+ import { useThemeHooks } from '@redocly/theme/core/openapi';
2
2
  export declare function useTelemetry(): ReturnType<ReturnType<typeof useThemeHooks>['useTelemetry']>;
@@ -1 +1 @@
1
- import{useThemeHooks as e}from"@redocly/theme";function o(){return e().useTelemetry()}export{o as useTelemetry};
1
+ import{useThemeHooks as e}from"@redocly/theme/core/openapi";function o(){return e().useTelemetry()}export{o as useTelemetry};
@@ -1,2 +1,2 @@
1
- import type { TFunction } from '@redocly/theme';
1
+ import { type TFunction } from '@redocly/theme/core/openapi';
2
2
  export declare function useTranslate(): TFunction;
@@ -1 +1 @@
1
- import{useThemeHooks as t}from"@redocly/theme";function s(){const{translate:e}=t().useTranslate();return e}export{s as useTranslate};
1
+ import{useThemeHooks as t}from"@redocly/theme/core/openapi";function s(){const{translate:e}=t().useTranslate();return e}export{s as useTranslate};
package/lib/index.d.ts CHANGED
@@ -24,6 +24,7 @@ export { safeSlugify } from './utils/string.js';
24
24
  export { JsonPointer } from './utils/JsonPointer.js';
25
25
  export { isOperationName } from './utils/openapi.js';
26
26
  export { pathIncludesLink, normalizePath } from './utils/path.js';
27
+ export { saveTextBeforeHeading } from './utils/saveTextBeforeHeading.js';
27
28
  export { OpenAPIParser } from './services/OpenAPIParser.js';
28
29
  export { buildContentItems } from './services/menu/builder.js';
29
30
  export { normalizeOptions } from './services/config-options/normalizeOptions.js';
package/lib/index.js CHANGED
@@ -1 +1 @@
1
- import{useAtomValue as o}from"jotai";import{globalOptionsAtom as e}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 O}from"./components/RequestSamples/RequestSamples.js";import{ResponseSamples as g}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 C}from"./components/RedoclyOpenAPIDocs/RedoclyOpenAPIDocs.js";import{StoreProvider as v}from"./components/RedoclyOpenAPIDocs/Providers.js";import{getMarkdownHeaderId as A}from"./components/RedoclyOpenAPIDocs/utils.js";import{safeSlugify as h}from"./utils/string.js";import{JsonPointer as M}from"./utils/JsonPointer.js";import{isOperationName as V}from"./utils/openapi.js";import{pathIncludesLink as N,normalizePath as z}from"./utils/path.js";import{OpenAPIParser as H}from"./services/OpenAPIParser.js";import{buildContentItems as G}from"./services/menu/builder.js";import{normalizeOptions as _}from"./services/config-options/normalizeOptions.js";import{makeDeepLink as K}from"./services/history/helpers.js";function p(){return o(e)}import{EmbeddedReplay as U}from"./components/Replay/EmbeddedReplay.js";import{convertOperationToReplayValue as X}from"./components/Replay/utils.js";import{SectionContainer as Z}from"./components/SectionContent/index.js";import{Row as oo}from"./components/common/panels.js";import{RightPanelContainer as ro}from"./components/SectionContent/index.js";import{Overview as po}from"./components/Overview/index.js";import{SamplesMiddlePanel as ao,Section as no,SamplesPanel as fo}from"./components/common/panels.js";import{Heading as io}from"./components/common/OperationItemTitle.js";import{Dropdown as so}from"./components/common/Dropdown/index.js";import{Markdown as co}from"./components/Markdown/index.js";import{FieldValueLabel as Oo,FieldLabel as Po}from"./components/common/Fields/index.js";import{CodeBlockPanel as Ro}from"./components/common/index.js";import{OperationSamplesPanel as ko}from"./components/OperationItem/OperationItem.js";import{ExternalDocumentation as Do}from"./components/ExternalDocumentation/index.js";import{PropertyDetails as Eo}from"./components/PropertyDetails/PropertyDetails.js";import{addMarkdownItems as yo}from"./services/menu/markdown.js";import{getValueFromMdParsedExtension as bo}from"./utils/helpers.js";import{ContentItem as Lo}from"./components/ContentItem/index.js";import{ExampleSwitch as To}from"./components/Samples/ExampleSwitch.js";import{CustomBadges as Fo}from"./components/common/Badges.js";import{useDownloadInfo as zo}from"./components/Download/useDownloadInfo.js";import{SECTION_ATTR as Ho}from"./constants.js";export{Ro as CodeBlockPanel,Lo as ContentItem,Fo as CustomBadges,so as Dropdown,U as EmbeddedReplay,To as ExampleSwitch,Do as ExternalDocumentation,Po as FieldLabel,Oo as FieldValueLabel,io as Heading,M as JsonPointer,co as Markdown,H as OpenAPIParser,ko as OperationSamplesPanel,po as Overview,Eo as PropertyDetails,w as RedocExample,I as RedocSchema,C as RedoclyOpenAPIDocs,O as RequestSamples,g as ResponseSamples,ro as RightPanelContainer,oo as Row,Ho as SECTION_ATTR,ao as SamplesMiddlePanel,fo as SamplesPanel,no as Section,Z as SectionContainer,v as StoreProvider,yo as addMarkdownItems,G as buildContentItems,X as convertOperationToReplayValue,c as generateDeepLink,A as getMarkdownHeaderId,x as getOperation,l as getServerEnvName,d as getTagOrGroup,bo as getValueFromMdParsedExtension,V as isOperationName,K as makeDeepLink,_ as normalizeOptions,z as normalizePath,N as pathIncludesLink,h as safeSlugify,n as simplifyAstStructure,zo 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 b}from"./utils/string.js";import{JsonPointer as L}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 be}from"./utils/helpers.js";import{ContentItem as Le}from"./components/ContentItem/index.js";import{ExampleSwitch as Ve}from"./components/Samples/ExampleSwitch.js";import{CustomBadges as Fe}from"./components/common/Badges.js";import{useDownloadInfo as Ne}from"./components/Download/useDownloadInfo.js";import{SECTION_ATTR as qe}from"./constants.js";export{Ie as CodeBlockPanel,Le 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,L as JsonPointer,Se as Markdown,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,qe 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,be as getValueFromMdParsedExtension,V as isOperationName,U as makeDeepLink,K as normalizeOptions,H as normalizePath,F as pathIncludesLink,b as safeSlugify,z as saveTextBeforeHeading,n as simplifyAstStructure,Ne as useDownloadInfo,p as useOpenapiDocsOptions};
@@ -1,7 +1,7 @@
1
- import { LayoutVariant } from '@redocly/theme';
2
- import type { UserClaims } from '@redocly/theme';
1
+ import { LayoutVariant } from '@redocly/config';
3
2
  import type { AsyncLocalStorage } from 'node:async_hooks';
4
3
  import type { TabType } from '../models/tab.js';
4
+ import { type UserClaims } from '@redocly/theme/core/openapi';
5
5
  declare global {
6
6
  var redoclyCookieStorage: AsyncLocalStorage<string> | undefined;
7
7
  }
package/lib/jotai/app.js CHANGED
@@ -1 +1 @@
1
- import{atom as a}from"jotai";import{atomWithStorage as v,createJSONStorage as d}from"jotai/utils";import{IS_BROWSER as f,LayoutVariant as u}from"@redocly/theme";import{getCookie as y,removeCookie as A,setCookie as k}from"../utils/cookies.js";import{globalOptionsAtom as O}from"./store.js";import{mergeEnvData as m}from"../utils/environments.js";import{fromSessionStorage as x,safeJsonParse as S,toSessionStorage as C}from"../utils/index.js";const l={isSidebarOpened:!0,activeMimeName:"",layout:u.THREE_PANEL,language:"",environment:"",environments:{},userClaims:{}},b={getItem:e=>{const t=S(y(e,globalThis.redoclyCookieStorage?.getStore?.())),o=S(x(e));return{...l,...o,...t}},setItem:(e,t)=>{const{environments:o,...n}=t,r={environments:o};k(e,JSON.stringify(n)),C(e,JSON.stringify(r))},removeItem:e=>{A(e),sessionStorage.removeItem(e)}},s=v("redoc.appStore",l,b),g=a({}),T=a(e=>{const t=e(s),o=e(g);return m(t.environments,o?.environments||{})}),h=a(e=>{const t=e(s),o=e(g),n=m(t.environments,o?.environments||{}),r=o?.environment||t.environment,i=n[r]?r:Object.keys(n)[0];return[n[i]||{},i||""]},(e,t,{environment:o,environments:n})=>{const r=e(s);t(s,{...r,environment:o||r.environment,environments:m(r.environments||{},n)})}),D=a(e=>e(s).isSidebarOpened,(e,t,o)=>{const n=e(s);t(s,{...n,isSidebarOpened:o})}),K=a(e=>e(s).activeMimeName,(e,t,o)=>{const n=e(s);t(s,{...n,activeMimeName:o})}),P=a(e=>e(s).layout,(e,t,o=u.STACKED)=>{const n=e(s);t(s,{...n,layout:o})}),W=a(e=>e(s).userClaims,(e,t,o)=>{const n=e(s);t(s,{...n,userClaims:o})}),c=v("redoc.appSessionStore",{collapsedSidebar:!1,unsupportedFeatureScreen:!1},f?d(()=>sessionStorage):void 0),_=a(e=>e(c).collapsedSidebar,(e,t,o)=>{const n=e(c);t(c,{...n,collapsedSidebar:o})});function N({lang:e,label:t}){return(t||e).toLowerCase()}const j=a(e=>{const{codeSamples:t}=e(O),o=t.languages.map(({lang:r,label:i},p)=>({key:N({lang:r,label:i}),lang:r,title:i||r,order:p})),n=e(s).language||o[0]?.key;return{languages:o,activeLanguage:o.find(({key:r})=>r===n)?.key||o[0]?.key}},(e,t,o)=>{const n=e(s);t(s,{...n,language:o})});export{K as activeMimeNameAtom,c as appSessionStore,s as appStore,g as appStoreOverrideAtom,_ as collapsedSidebarAtom,h as environmentAtom,T as environmentsAtom,N as getLangKey,D as isSidebarOpenedAtom,j as languageAtom,P as layoutAtom,W as userClaimsAtom};
1
+ import{atom as a}from"jotai";import{atomWithStorage as v,createJSONStorage as d}from"jotai/utils";import{LayoutVariant as u}from"@redocly/config";import{IS_BROWSER as f}from"@redocly/theme/core/openapi";import{getCookie as y,removeCookie as A,setCookie as k}from"../utils/cookies.js";import{globalOptionsAtom as O}from"./store.js";import{mergeEnvData as m}from"../utils/environments.js";import{fromSessionStorage as x,safeJsonParse as S,toSessionStorage as C}from"../utils/index.js";const l={isSidebarOpened:!0,activeMimeName:"",layout:u.THREE_PANEL,language:"",environment:"",environments:{},userClaims:{}},b={getItem:e=>{const t=S(y(e,globalThis.redoclyCookieStorage?.getStore?.())),o=S(x(e));return{...l,...o,...t}},setItem:(e,t)=>{const{environments:o,...n}=t,r={environments:o};k(e,JSON.stringify(n)),C(e,JSON.stringify(r))},removeItem:e=>{A(e),sessionStorage.removeItem(e)}},s=v("redoc.appStore",l,b),g=a({}),h=a(e=>{const t=e(s),o=e(g);return m(t.environments,o?.environments||{})}),D=a(e=>{const t=e(s),o=e(g),n=m(t.environments,o?.environments||{}),r=o?.environment||t.environment,i=n[r]?r:Object.keys(n)[0];return[n[i]||{},i||""]},(e,t,{environment:o,environments:n})=>{const r=e(s);t(s,{...r,environment:o||r.environment,environments:m(r.environments||{},n)})}),K=a(e=>e(s).isSidebarOpened,(e,t,o)=>{const n=e(s);t(s,{...n,isSidebarOpened:o})}),P=a(e=>e(s).activeMimeName,(e,t,o)=>{const n=e(s);t(s,{...n,activeMimeName:o})}),W=a(e=>e(s).layout,(e,t,o=u.STACKED)=>{const n=e(s);t(s,{...n,layout:o})}),_=a(e=>e(s).userClaims,(e,t,o)=>{const n=e(s);t(s,{...n,userClaims:o})}),c=v("redoc.appSessionStore",{collapsedSidebar:!1,unsupportedFeatureScreen:!1},f?d(()=>sessionStorage):void 0),j=a(e=>e(c).collapsedSidebar,(e,t,o)=>{const n=e(c);t(c,{...n,collapsedSidebar:o})});function N({lang:e,label:t}){return(t||e).toLowerCase()}const w=a(e=>{const{codeSamples:t}=e(O),o=t.languages.map(({lang:r,label:i},p)=>({key:N({lang:r,label:i}),lang:r,title:i||r,order:p})),n=e(s).language||o[0]?.key;return{languages:o,activeLanguage:o.find(({key:r})=>r===n)?.key||o[0]?.key}},(e,t,o)=>{const n=e(s);t(s,{...n,language:o})});export{P as activeMimeNameAtom,c as appSessionStore,s as appStore,g as appStoreOverrideAtom,j as collapsedSidebarAtom,D as environmentAtom,h as environmentsAtom,N as getLangKey,K as isSidebarOpenedAtom,w as languageAtom,W as layoutAtom,_ as userClaimsAtom};
@@ -1,5 +1,5 @@
1
1
  import type { Options, OpenAPIParser } from '../services/index.js';
2
2
  import type { OpenAPICallback, Referenced } from '../types/index.js';
3
3
  import type { CallbackModel, GroupModel } from './types.js';
4
- import type { UserClaims } from '@redocly/theme';
4
+ import type { UserClaims } from '@redocly/theme/core/openapi';
5
5
  export declare function getCallback(parser: OpenAPIParser, name: string, infoOrRef: Referenced<OpenAPICallback>, parentPointer: string, options: Options, href: string, parent?: GroupModel, userClaims?: UserClaims): CallbackModel;
@@ -1 +1 @@
1
- import*as k from"openapi-sampler";import{getSchema as E}from"./schema.js";import{isFormUrlEncoded as P,isJsonLike as b,isXmlLike as g,isMultipartFormData as j,JsonPointer as R,mapValues as D}from"../utils/index.js";import{getExamples as a}from"./example.js";function h({parser:o,info:{encoding:e,schema:r},schema:i,mime:m,options:{isRequestType:s,onlyRequiredInSamples:p,generatedSamplesMaxDepth:d,format:u="json"}}){const t={skipReadOnly:s,skipWriteOnly:!s,skipNonRequired:s&&p,maxSampleDepth:d,quiet:!0,format:u};let n={};if(i&&i.oneOf)for(const f of i.oneOf){const l=k.sample(f.rawSchema,t,o.definition);i.discriminatorProp&&typeof l=="object"&&l&&l[i.discriminatorProp]&&(l[i.discriminatorProp]=f.title),n[f.title]=a({parser:o,infoOrRef:{value:l},mime:m,encoding:e})}else i?n={default:a({parser:o,infoOrRef:{value:k.sample(r,t,o.definition)},mime:m,encoding:e})}:n={default:{value:null,rawValue:"null"}};return n}function J(o,e,r,i,m,{operation:s,type:p,response:d,absolutePointer:u=""}){let t,n;const f=i.schema&&E({parser:o,schemaOrRef:i.schema,pointer:"",absolutePointer:R.join(u,["content",e,"schema"]),options:m,deps:{operation:s,type:p,response:d}}),{onlyRequiredInSamples:l,generatedSamplesMaxDepth:c}=m,{encoding:x,examples:O,example:S}=i;return m.unstable_skipSamples||(O!==void 0?t=D(O,v=>a({parser:o,infoOrRef:v,mime:e,encoding:x})):S!==void 0?t={default:a({parser:o,infoOrRef:{value:o.deref(S).resolved},mime:e,encoding:x})}:b(e)||g(e)?t=h({parser:o,info:i,schema:f,mime:e,options:{isRequestType:r,onlyRequiredInSamples:l,generatedSamplesMaxDepth:c,format:g(e)?"xml":"json"}}):(P(e)||j(e))&&(n=h({parser:o,info:i,schema:f,mime:e,options:{isRequestType:r,onlyRequiredInSamples:l,generatedSamplesMaxDepth:c}}))),{examples:t,schema:f,name:e,isRequestType:r,formExamples:n,onlyRequiredInSamples:l,operation:s}}export{J as getMediaType};
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,7 +1,7 @@
1
- import type { UserClaims } from '@redocly/theme';
2
1
  import type { ExtendedOpenAPIOperation, Unstable_ExternalCodeSample, OpenAPIParser, Options } from '../services/index.js';
3
2
  import type { OpenAPIServer, OpenAPIXCodeSample } from '../types/index.js';
4
3
  import type { MediaContentModel, OperationModel, GroupModel } from './types.js';
4
+ import { type UserClaims } from '@redocly/theme/core/openapi';
5
5
  export interface Sample {
6
6
  lang: string;
7
7
  label?: string;
@@ -1 +1 @@
1
- import{configure as b,removeLeadingSlash as v}from"@redocly/theme";import{REDOCLY_TEAMS_RBAC as y}from"@redocly/config";import{extractExtensions as x,getOperationId as R,getOperationName as q,getStatusCodeType as P,getValueFromMdParsedExtension as B,isStatusCode as E,JsonPointer as C,mergeParams as k,normalizeServers as o,sortByDeprecated as V,sortByRequired as I,updateOperationWithRequestValues as O,updateParametersWithUserValues as N}from"../utils/index.js";import{getCallback as W}from"./callback.js";import{getField as w}from"./field.js";import{getRequestBody as A}from"./request.js";import{getSecurity as S}from"./security.js";import{getResponse as F}from"./response.js";import{getHref as M}from"../services/menu/operation.js";function X(s){return s.lang==="Payload"&&"requestBodyContent"in s}function Z(s,e,t,a,c,d,m){const h=e.isWebhook,r={operationDefinition:e,parent:t,pointer:e.pointer,description:B(e,"description"),externalDocs:e.externalDocs,deprecated:!!e.deprecated,httpVerb:e.httpVerb,operationId:e.operationId,path:e.pathName,isWebhook:h,isCallback:!!d?.isCallback,isEvent:d?.isCallback||h,name:q(e),defaultExampleName:e.defaultSampleName,[y]:e[y]||t?.[y],type:"operation",callbackId:d?.id,href:c,get callbacks(){return Object.keys(e.callbacks||[]).map(u=>W(s,u,e.callbacks?.[u],r.pointer,a,c,t,m))},get responses(){let u=!1;return Object.keys(e.responses||[]).filter(l=>l==="default"?!0:(P(l)==="success"&&(u=!0),E(l))).map(l=>F({parser:s,code:l,defaultAsError:u,infoOrRef:e.responses[l],options:a,isEvent:r.isEvent,operation:r}))},get parameters(){return j(s,e,r,a,g)}};if(d?.isCallback)r.security=S(e.security,s),r.servers=o("",e.servers||e.pathServers||[]),r.id=v(c);else{r.id=R(e,t),r.href=r.href||M(r),r.security=S(e.security||s.definition.security,s);const u=e.servers||(e.pathServers?.length?e.pathServers:null)||s.definition.servers||[];r.servers=o(s.definitionUrl,L(u,a.mockServer))}a.showExtensions&&(r.extensions=x(e,a.showExtensions)),r.requestBody=e.requestBody?A({parser:s,infoOrRef:e.requestBody,options:a,operation:r,isEvent:r.isEvent}):void 0;const p=r.requestBody?.content;r.payload={lang:"Payload",source:"",requestBodyContent:p?.hasSample?p:void 0},r.definitionSamples=e["x-codeSamples"]||[],r.badges=e["x-badges"]?.map(({name:u,color:l,position:n})=>({name:u,color:l||"var(--color-info-base)",position:n||"after"}))||[],r.hasSamples=p?.hasSample||r.definitionSamples.length>0,r.hideReplay=e["x-hideReplay"]===!0;const f={userClaims:m,operation:{operationId:r.operationId,name:r.name,path:r.path,href:r.href,method:r.httpVerb},servers:r.servers},g=(b(f)||{}).requestValues||{};return O(r,g),r}function j(s,e,t,a,c){let d=k(s,e.pathParameters,e.parameters,{pathPointer:C.dirName(t.pointer),operationPointer:t.pointer}).map(({paramOrRef:m,pointer:h})=>{const r=w(s,m,h,a,{operation:t,type:"request"});return N(r,c),r});return a.sortRequiredPropsFirst&&(d=I(d)),V(d)}function L(s,e){if(!e)return s;const t={url:e.url,description:e.description};switch(e.position){case"first":return[t,...s];case"last":return[...s,t];case"replace":return[t];default:return s}}export{Z as getOperation,X as isPayloadSample,L as mergeInMockServer};
1
+ import{REDOCLY_TEAMS_RBAC as y}from"@redocly/config";import{removeLeadingSlash as b}from"@redocly/theme/core/openapi";import{configure as v}from"@redocly/theme/ext/configure";import{extractExtensions as x,getOperationId as R,getOperationName as q,getStatusCodeType as P,getValueFromMdParsedExtension as B,isStatusCode as E,JsonPointer as C,mergeParams as k,normalizeServers as o,sortByDeprecated as V,sortByRequired as I,updateOperationWithRequestValues as O,updateParametersWithUserValues as N}from"../utils/index.js";import{getCallback as W}from"./callback.js";import{getField as w}from"./field.js";import{getRequestBody as A}from"./request.js";import{getSecurity as S}from"./security.js";import{getResponse as F}from"./response.js";import{getHref as M}from"../services/menu/operation.js";function Z(s){return s.lang==="Payload"&&"requestBodyContent"in s}function $(s,e,t,a,m,d,c){const h=e.isWebhook,r={operationDefinition:e,parent:t,pointer:e.pointer,description:B(e,"description"),externalDocs:e.externalDocs,deprecated:!!e.deprecated,httpVerb:e.httpVerb,operationId:e.operationId,path:e.pathName,isWebhook:h,isCallback:!!d?.isCallback,isEvent:d?.isCallback||h,name:q(e),defaultExampleName:e.defaultSampleName,[y]:e[y]||t?.[y],type:"operation",callbackId:d?.id,href:m,get callbacks(){return Object.keys(e.callbacks||[]).map(u=>W(s,u,e.callbacks?.[u],r.pointer,a,m,t,c))},get responses(){let u=!1;return Object.keys(e.responses||[]).filter(l=>l==="default"?!0:(P(l)==="success"&&(u=!0),E(l))).map(l=>F({parser:s,code:l,defaultAsError:u,infoOrRef:e.responses[l],options:a,isEvent:r.isEvent,operation:r}))},get parameters(){return j(s,e,r,a,g)}};if(d?.isCallback)r.security=S(e.security,s),r.servers=o("",e.servers||e.pathServers||[]),r.id=b(m);else{r.id=R(e,t),r.href=r.href||M(r),r.security=S(e.security||s.definition.security,s);const u=e.servers||(e.pathServers?.length?e.pathServers:null)||s.definition.servers||[];r.servers=o(s.definitionUrl,L(u,a.mockServer))}a.showExtensions&&(r.extensions=x(e,a.showExtensions)),r.requestBody=e.requestBody?A({parser:s,infoOrRef:e.requestBody,options:a,operation:r,isEvent:r.isEvent}):void 0;const p=r.requestBody?.content;r.payload={lang:"Payload",source:"",requestBodyContent:p?.hasSample?p:void 0},r.definitionSamples=e["x-codeSamples"]||[],r.badges=e["x-badges"]?.map(({name:u,color:l,position:n})=>({name:u,color:l||"var(--color-info-base)",position:n||"after"}))||[],r.hasSamples=p?.hasSample||r.definitionSamples.length>0,r.hideReplay=e["x-hideReplay"]===!0;const f={userClaims:c,operation:{operationId:r.operationId,name:r.name,path:r.path,href:r.href,method:r.httpVerb},servers:r.servers},g=(v(f)||{}).requestValues||{};return O(r,g),r}function j(s,e,t,a,m){let d=k(s,e.pathParameters,e.parameters,{pathPointer:C.dirName(t.pointer),operationPointer:t.pointer}).map(({paramOrRef:c,pointer:h})=>{const r=w(s,c,h,a,{operation:t,type:"request"});return N(r,m),r});return a.sortRequiredPropsFirst&&(d=I(d)),V(d)}function L(s,e){if(!e)return s;const t={url:e.url,description:e.description};switch(e.position){case"first":return[t,...s];case"last":return[...s,t];case"replace":return[t];default:return s}}export{$ as getOperation,Z as isPayloadSample,L as mergeInMockServer};
@@ -1,2 +1,2 @@
1
- import{isObject as I}from"@redocly/theme";import{REDOCLY_TEAMS_RBAC as S}from"@redocly/config";import{pushRef as M}from"../services/OpenAPIParser.js";import{detectType as q,extractExtensions as w,getValueFromMdParsedExtension as k,humanizeConstraints as C,isNamedDefinition as h,isPrimitiveType as E,JsonPointer as T,pluralizeType as B,sortByDeprecated as z,sortByRequired as L}from"../utils/index.js";import{getField as b}from"./field.js";function F({parser:i,schemaOrRef:n,pointer:d,options:a,isChild:y=!1,baseRefsStack:u=[],deps:o,absolutePointer:f}){const{resolved:c,refsStack:m}=i.deref(n,u,!0),r=n.$ref||d||f||"",l=M(m,r),e=i.mergeAllOf(c,r,l,n.$ref||f),p=e.type||q(e),t={operationPointer:o.operation?.pointer||f||"",schemaOrRef:n,isChild:y,typePrefix:"",pointer:r,absolutePointer:f,refsStack:l,rawSchema:c,type:p,isCircular:!!e["x-circular-ref"],isComplex:!!e["x-complex"],title:e.title||h(r)&&T.baseName(r)||"",description:k(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,p),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,[S]:e[S],"x-enumDescriptions":k(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}=j({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}=j({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:e.items,pointer:r+"/items",options:a,baseRefsStack:l,deps:o,absolutePointer:T.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"]=k(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=w(e,a.showExtensions)),t}function J({schema:i,parser:n,pointer:d,options:a,refsStack:y,deps:u,mergedSchema:o}){const f=v(i),c=f?.propertyName,m=n.findDerived([...o["x-parentRefs"]||[],d]);if(i.oneOf)for(const O of i.oneOf){if(O.$ref===void 0)continue;const x=T.baseName(O.$ref);m[O.$ref]=x}const r=f?.mapping||{};let l=f?.["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 p=l?{...e}:{...m,...e};let t=[];for(const O of Object.keys(p)){const x=p[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:{...u,parentFieldFullPath:u.parentFieldFullPath?u.parentFieldFullPath+"&d="+A:"&d="+A.toString()},absolutePointer:o.absolutePointer});return g.title=x,g}),discriminatorProp:c}}function j({schemaOneOf:i,parser:n,refsStack:d,pointer:a,schema:y,options:u,deps:o}){const f=i.map((m,r)=>{const{resolved:l,refsStack:e}=n.deref(m,d,!0),p=n.mergeAllOf(l,a+"/oneOf/"+r,e),t=h(m.$ref)&&!p.title?T.baseName(m.$ref):`${p.title||""}${p.const&&JSON.stringify(p.const)||""}`;return F({parser:n,schemaOrRef:{...p,title:t,allOf:[{...y,oneOf:void 0,anyOf:void 0}],discriminator:l.allOf?void 0:p.discriminator},pointer:m.$ref||a+"/oneOf/"+r,options:u,baseRefsStack:e,deps:{...o,parentFieldFullPath:o.parentFieldFullPath?o.parentFieldFullPath+"&oneOf="+r:"&oneOf="+r.toString()}})}),c=f.map(m=>{let r=m.typePrefix+(m.title?`${m.title} (${m.displayType})`:m.displayType);return r.indexOf(" or ")>-1&&(r=`(${r})`),r}).join(" or ");return{oneOf:f,displayType:c}}function V({schema:i,parser:n,pointer:d,options:a,refsStack:y,deps:u}){const{if:o,else:f={},then:c={},...m}=i;return{oneOf:[{allOf:[m,c,o],title:o&&o["x-displayName"]||o?.title||"case 1"},{allOf:[m,f],title:f&&f["x-displayName"]||f?.title||"case 2"}].map((p,t)=>F({parser:n,schemaOrRef:{...p},pointer:d+"/oneOf/"+t,options:a,baseRefsStack:y,deps:{...u,parentFieldFullPath:u.parentFieldFullPath?u.parentFieldFullPath+"&oneOf="+t:"&oneOf="+t.toString()}})),oneOfType:"One of"}}function R(i,n,d){return i||(console.warn(`Field "${n}" is invalid, skipping.
2
- Field must be an object but got ${typeof i} at "${d}"`),{})}function _(i,n,d,a,y,u){let o=n.properties||($(n,"array")?n.prefixItems||n.items:void 0)||{};const f=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 p=R(o[e],e,d),t=n.required===void 0?!1:n.required.indexOf(e)>-1;return b(i,{name:n.properties?e:`[${e}]`,required:t,schema:{...p,example:n.example?.[e]||p.example,default:p.default===void 0&&r?r[e]:p.default}},d+"/properties/"+e,a,u,y,T.join(n.absolutePointer||"",["properties",e]))});return a.sortRequiredPropsFirst&&(l=L(l,n.required)),l.push(...Object.keys(f).map(e=>{const p=R(f[e],e,d);return b(i,{name:e,required:!1,schema:p,kind:"patternProperties"},`${d}/patternProperties/${e}`,a,u,y)})),(I(c)||c===!0)&&l.push(b(i,{name:(I(c)&&c["x-additionalPropertiesName"]||"property name").concat("*"),required:!1,schema:c===!0?{}:c,kind:"additionalProperties"},d+"/additionalProperties",a,u,y,T.join(n.absolutePointer||"",["additionalProperties"]))),l.push(...Y({parser:i,schema:m,fieldsCount:l.length,$ref:d,options:a,refsStack:y,deps:u})),z(l)}function Y({parser:i,schema:n=!1,fieldsCount:d,$ref:a,options:y,refsStack:u,deps:o}){return typeof n=="boolean"?n?[b(i,{name:`[${d}...]`,schema:{},kind:"additionalItems"},`${a}/additionalItems`,y,o,u)]:[]:Array.isArray(n)?[...n.map((f,c)=>b(i,{name:`[${d+c}]`,schema:f,kind:"additionalItems"},`${a}/additionalItems/${c}`,y,o,u))]:I(n)?[b(i,{name:`[${d}...]`,schema:n,kind:"additionalItems"},`${a}/additionalItems`,y,o,u)]:[]}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 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 +1 @@
1
- import{IS_BROWSER as q,isObject as S,isString as E,isUndefined as o}from"@redocly/theme";import{tryDecodeURIComponent as B,getDefinitionName as v}from"../utils/index.js";import{JsonPointer as x}from"../utils/JsonPointer.js";import{normalizeOptions as W}from"./config-options/normalizeOptions.js";function A(m,e){return e&&m[m.length-1]!==e?[...m,e]:m}function R(m,e){return e?m.concat(e):m}class V{options;definitionUrl;definition;allowMergeRefs=!1;constructor(e,t,l=W({})){this.options=l,this.definition=Object.assign({},e),this.validate(e),this.definition=e,this.allowMergeRefs=e.openapi.startsWith("3.1");const n=q?window.location.href:"";E(t)&&(this.definitionUrl=new URL(t,n).href)}validate(e){if(o(e.openapi))throw new Error("Document must be valid OpenAPI 3.0.0 definition")}byRef=e=>{let t;if(this.definition){e.charAt(0)!=="#"&&(e="#"+e),e=B(e);try{t=x.get(this.definition,e)}catch{}return t||{}}};isRef(e){return e?(e=e,e.$ref!==void 0&&e.$ref!==null):!1}deref(e,t=[],l=!1,n=0){const i=e?.["x-refsStack"];if(t=R(t,i),n>5)return{resolved:Object.assign({},e,{"x-complex":!0}),refsStack:t};if(this.isRef(e)){const r=v(e.$ref);if(r&&this.options.ignoreNamedSchemas.has(r))return{resolved:{type:"object",title:r},refsStack:t};let s=this.byRef(e.$ref);if(!s)throw new Error(`Failed to resolve $ref "${e.$ref}"`);return t.includes(e.$ref)?s=Object.assign({},s,{"x-circular-ref":!0}):this.isRef(s)&&(s=this.deref(s,t,l,n).resolved),this.allowMergeRefs&&(s=this.mergeRefs(e,s,l)),{resolved:s,refsStack:A(t,e.$ref)}}return{resolved:e,refsStack:R(t,i)}}mergeRefs(e,t,l){const{$ref:n,...i}=e,r=Object.keys(i);if(r.length===0)return t;if(l&&r.some(s=>!["description","title","externalDocs","x-refsStack","x-parentRefs","readOnly","writeOnly","x-complex"].includes(s))){const{description:s,title:p,readOnly:u,writeOnly:d,...O}=i;return{allOf:[{description:s,title:p,readOnly:u,writeOnly:d},t,O]}}else return{...t,...i}}mergeAllOf(e,t,l,n="",i=0){if(e["x-circular-ref"])return e;if(e=this.hoistOneOfs(e),e.allOf===void 0)return{absolutePointer:n,...e};let r={...e,"x-parentRefs":[],absolutePointer:x.join(n,["allOf"]),allOf:void 0,title:i===0?e.title||v(t):e.title};!o(r.properties)&&S(r.properties)&&(r.properties={...r.properties}),!o(r.items)&&S(r.items)&&(r.items={...r.items});const s=e.allOf.map((p,u)=>{const{resolved:d,refsStack:O}=this.deref(p,l,!0,i),f=p.$ref,y=f||x.join(n,[String(u)]);if(d["x-complex"])return{$ref:f,refsStack:A(O,f),schema:{"x-complex":!0},absolutePointer:y};const a=this.mergeAllOf(d,f,O,y,i+1);if(!(a["x-circular-ref"]&&a.allOf))return f&&r["x-parentRefs"]?.push(...a["x-parentRefs"]||[],f),{$ref:f,refsStack:A(O,f),schema:a,absolutePointer:y}}).filter(Boolean);for(const[p,{schema:u,refsStack:d,absolutePointer:O}]of s.entries()){const{type:f,enum:y,properties:a,items:b,required:w,title:I,description:D,readOnly:C,writeOnly:M,oneOf:$,anyOf:k,"x-circular-ref":g,"x-complex":P,...N}=u||{};if(!(r.type!==f&&!o(r.type)&&!o(f)&&!i)){if(o(f)||(Array.isArray(f)&&Array.isArray(r.type)?r.type=[...f,...r.type]:r.type=f),o(y)||(Array.isArray(y)&&Array.isArray(r.enum)?r.enum=Array.from(new Set([...y,...r.enum])):r.enum=y),!o(a)&&S(a)){r.properties=r.properties||{};for(const c in a){const h=R(d,a[c]?.["x-refsStack"]);if(!r.properties[c])r.properties[c]={...a[c],absolutePointer:x.join(O,["properties",c]),"x-refsStack":h};else if(!g){const U=this.mergeAllOf({allOf:[r.properties[c],a[c]],"x-refsStack":h},t+"/properties/"+c,h,x.join(O,["allOf",String(p),"properties",c]),i+1);r.properties[c]=U}}}if(!o(b)&&!g&&!P){const c=typeof r.items=="boolean"?{}:Object.assign({},r.items),h=typeof u.items=="boolean"?{}:Object.assign({},u.items);r.items=this.mergeAllOf({allOf:[c,h]},t+"/items",d,"",i+1)}o($)||(r.oneOf=$),o(k)||(r.anyOf=k),Array.isArray(w)&&(r.required=[...r.required||[],...w]),r={...r,title:r.title||I,description:r.description||D,readOnly:o(r.readOnly)?C:r.readOnly,writeOnly:o(r.writeOnly)?M:r.writeOnly,"x-circular-ref":r["x-circular-ref"]||g,"x-complex":r["x-complex"]||P,...N}}}return r}findDerived(e){const t={},l=this.definition.components&&this.definition.components.schemas||{};for(const n in l){const{resolved:i}=this.deref(l[n]);!o(i.allOf)&&i.allOf.find(r=>!o(r.$ref)&&e.indexOf(r.$ref)>-1)&&(t["#/components/schemas/"+n]=[i["x-discriminator-value"]||n])}return t}hoistOneOfs(e){if(o(e.allOf))return e;const{allOf:t,...l}=e;for(let n=0;n<t.length;n++){const{oneOf:i,...r}=t[n];if(i&&Array.isArray(i)){const s=t.slice(0,n),p=t.slice(n+1),u=Object.keys(r).length>0?[r]:[];return{...l,oneOf:i.map(d=>({allOf:[...s,...u,d,...p]}))}}}return e}}export{V as OpenAPIParser,R as concatRefStacks,A as pushRef};
1
+ import{IS_BROWSER as q,isObject as S,isString as E,isUndefined as o}from"@redocly/theme/core/openapi";import{tryDecodeURIComponent as B,getDefinitionName as v}from"../utils/index.js";import{JsonPointer as x}from"../utils/JsonPointer.js";import{normalizeOptions as W}from"./config-options/normalizeOptions.js";function A(m,e){return e&&m[m.length-1]!==e?[...m,e]:m}function R(m,e){return e?m.concat(e):m}class V{options;definitionUrl;definition;allowMergeRefs=!1;constructor(e,t,l=W({})){this.options=l,this.definition=Object.assign({},e),this.validate(e),this.definition=e,this.allowMergeRefs=e.openapi.startsWith("3.1");const n=q?window.location.href:"";E(t)&&(this.definitionUrl=new URL(t,n).href)}validate(e){if(o(e.openapi))throw new Error("Document must be valid OpenAPI 3.0.0 definition")}byRef=e=>{let t;if(this.definition){e.charAt(0)!=="#"&&(e="#"+e),e=B(e);try{t=x.get(this.definition,e)}catch{}return t||{}}};isRef(e){return e?(e=e,e.$ref!==void 0&&e.$ref!==null):!1}deref(e,t=[],l=!1,n=0){const i=e?.["x-refsStack"];if(t=R(t,i),n>5)return{resolved:Object.assign({},e,{"x-complex":!0}),refsStack:t};if(this.isRef(e)){const r=v(e.$ref);if(r&&this.options.ignoreNamedSchemas.has(r))return{resolved:{type:"object",title:r},refsStack:t};let s=this.byRef(e.$ref);if(!s)throw new Error(`Failed to resolve $ref "${e.$ref}"`);return t.includes(e.$ref)?s=Object.assign({},s,{"x-circular-ref":!0}):this.isRef(s)&&(s=this.deref(s,t,l,n).resolved),this.allowMergeRefs&&(s=this.mergeRefs(e,s,l)),{resolved:s,refsStack:A(t,e.$ref)}}return{resolved:e,refsStack:R(t,i)}}mergeRefs(e,t,l){const{$ref:n,...i}=e,r=Object.keys(i);if(r.length===0)return t;if(l&&r.some(s=>!["description","title","externalDocs","x-refsStack","x-parentRefs","readOnly","writeOnly","x-complex"].includes(s))){const{description:s,title:p,readOnly:u,writeOnly:d,...O}=i;return{allOf:[{description:s,title:p,readOnly:u,writeOnly:d},t,O]}}else return{...t,...i}}mergeAllOf(e,t,l,n="",i=0){if(e["x-circular-ref"])return e;if(e=this.hoistOneOfs(e),e.allOf===void 0)return{absolutePointer:n,...e};let r={...e,"x-parentRefs":[],absolutePointer:x.join(n,["allOf"]),allOf:void 0,title:i===0?e.title||v(t):e.title};!o(r.properties)&&S(r.properties)&&(r.properties={...r.properties}),!o(r.items)&&S(r.items)&&(r.items={...r.items});const s=e.allOf.map((p,u)=>{const{resolved:d,refsStack:O}=this.deref(p,l,!0,i),f=p.$ref,y=f||x.join(n,[String(u)]);if(d["x-complex"])return{$ref:f,refsStack:A(O,f),schema:{"x-complex":!0},absolutePointer:y};const a=this.mergeAllOf(d,f,O,y,i+1);if(!(a["x-circular-ref"]&&a.allOf))return f&&r["x-parentRefs"]?.push(...a["x-parentRefs"]||[],f),{$ref:f,refsStack:A(O,f),schema:a,absolutePointer:y}}).filter(Boolean);for(const[p,{schema:u,refsStack:d,absolutePointer:O}]of s.entries()){const{type:f,enum:y,properties:a,items:b,required:w,title:I,description:D,readOnly:C,writeOnly:M,oneOf:$,anyOf:k,"x-circular-ref":g,"x-complex":P,...N}=u||{};if(!(r.type!==f&&!o(r.type)&&!o(f)&&!i)){if(o(f)||(Array.isArray(f)&&Array.isArray(r.type)?r.type=[...f,...r.type]:r.type=f),o(y)||(Array.isArray(y)&&Array.isArray(r.enum)?r.enum=Array.from(new Set([...y,...r.enum])):r.enum=y),!o(a)&&S(a)){r.properties=r.properties||{};for(const c in a){const h=R(d,a[c]?.["x-refsStack"]);if(!r.properties[c])r.properties[c]={...a[c],absolutePointer:x.join(O,["properties",c]),"x-refsStack":h};else if(!g){const U=this.mergeAllOf({allOf:[r.properties[c],a[c]],"x-refsStack":h},t+"/properties/"+c,h,x.join(O,["allOf",String(p),"properties",c]),i+1);r.properties[c]=U}}}if(!o(b)&&!g&&!P){const c=typeof r.items=="boolean"?{}:Object.assign({},r.items),h=typeof u.items=="boolean"?{}:Object.assign({},u.items);r.items=this.mergeAllOf({allOf:[c,h]},t+"/items",d,"",i+1)}o($)||(r.oneOf=$),o(k)||(r.anyOf=k),Array.isArray(w)&&(r.required=[...r.required||[],...w]),r={...r,title:r.title||I,description:r.description||D,readOnly:o(r.readOnly)?C:r.readOnly,writeOnly:o(r.writeOnly)?M:r.writeOnly,"x-circular-ref":r["x-circular-ref"]||g,"x-complex":r["x-complex"]||P,...N}}}return r}findDerived(e){const t={},l=this.definition.components&&this.definition.components.schemas||{};for(const n in l){const{resolved:i}=this.deref(l[n]);!o(i.allOf)&&i.allOf.find(r=>!o(r.$ref)&&e.indexOf(r.$ref)>-1)&&(t["#/components/schemas/"+n]=[i["x-discriminator-value"]||n])}return t}hoistOneOfs(e){if(o(e.allOf))return e;const{allOf:t,...l}=e;for(let n=0;n<t.length;n++){const{oneOf:i,...r}=t[n];if(i&&Array.isArray(i)){const s=t.slice(0,n),p=t.slice(n+1),u=Object.keys(r).length>0?[r]:[];return{...l,oneOf:i.map(d=>({allOf:[...s,...u,d,...p]}))}}}return e}}export{V as OpenAPIParser,R as concatRefStacks,A as pushRef};
@@ -1,7 +1,9 @@
1
+ import * as Sampler from 'openapi-sampler';
2
+ import type { JSONSchema7 } from 'json-schema';
1
3
  import type { OperationModel } from '../../models/index.js';
2
4
  import type * as HAR from './har.js';
3
5
  import type { Languages } from './types.js';
4
- import type { TFunction } from '@redocly/theme';
6
+ import { type TFunction } from '@redocly/theme/core/openapi';
5
7
  export type CustomHAR = HAR.Request & {
6
8
  securityOAuth2ExtraCalls?: HAR.Request[];
7
9
  basicAuth?: {
@@ -14,6 +16,7 @@ export type CustomHAR = HAR.Request & {
14
16
  serverVariables?: Record<string, string>;
15
17
  allResponseCodes?: string[];
16
18
  };
19
+ export declare function safeSample(schema: JSONSchema7, options: Sampler.Options, document: object): any;
17
20
  export declare function getCodeSample({ lang, operation, exampleName, pathParams, properties, options, environment, translate, }: {
18
21
  lang: Languages;
19
22
  operation: OperationModel;
@@ -1 +1 @@
1
- import*as v from"openapi-sampler";import $ from"deepmerge";import{isObject as oe}from"@redocly/theme";import{areArraysEqual as ce,serializeParameterValue as P,getSecurityDetails as ie,getParameterValue as M,queryString as j,isArrayOfObjects as ue,deleteEmptyArrayItem as le}from"../../utils/index.js";import{normalizeMimeType as pe,arrayMergeStrategy as z}from"../utils.js";import{MediaTypes as m}from"../../constants.js";import{HTTPSnippet as me}from"./httpsnippet/index.js";import{getActiveMediaType as fe}from"../../models/mediaContent.js";import J from"./httpsnippet/helpers/string-utility.js";function de(t,a){return t.find(n=>{const u=n.schemes.map(c=>c.id);return ce(u,a||[])})}function ye(t,{exampleName:a="",skipOptionalParameters:n=!1,withOAuth2Call:u=!1,spec:c,generatedPayloadSamplesMaxDepth:r=8,pathParams:o={},properties:i={},activeMimeName:s=""},{environment:d,requestValues:k,activeSecuritySchemeIds:T}){const l=d.server,b=t.servers.find(e=>e.url===l)||t.servers[0],w=de(t.security,T),{securityHeaders:A,securityCookies:F,securityQueries:X,securityOAuth2ExtraCalls:K,basicAuth:Q}=he(w||t.security?.[0],u,d),p=t?.requestBody?.content&&fe(t.requestBody.content,s),O={skipNonRequired:n,skipReadOnly:!0,maxSampleDepth:r,quiet:!0},h=k;let q=!1;const H=t.parameters.filter(e=>e.in==="header").filter(e=>!(n&&!e.required)).map(e=>({name:e.name,value:h.header?.[e.name]||M("header",e.name)||e.serverValues?.[l]?.example||e.example||P(e,v.sample(e.schema.rawSchema,O,c))})).map(e=>(p?.name&&e.name.toLowerCase()==="content-type"&&(q=!0,e.value=p.name),e)).concat(A);!q&&p?.name&&H.unshift({name:"Content-Type",value:p?.name});const G=t.parameters.filter(e=>e.in==="cookie").filter(e=>!(n&&!e.required)).map(e=>j.parse(P(e,e.serverValues?.[l]?.example||e.example||v.sample(e.schema.rawSchema,O,c)))).reduce((e,_)=>{for(const[y,S]of Object.entries(_))e.push({name:y,value:String(h.cookie?.[y]||S)});return e},[]).concat(F),W=t.parameters.filter(e=>e.in==="query").filter(e=>!(n&&!e.required)).map(e=>j.parse(P(e,e.serverValues?.[l]?.example||e.example||v.sample(e.schema.rawSchema,O,c)))).reduce((e,_)=>{for(const[y,S]of Object.entries(_))e.push({name:y,value:ue(h.query?.[y])&&JSON.stringify(le(h.query?.[y]))||String(h.query?.[y]||S)});return e},[]).concat(X),Z=b?.url.replace(/\/$/,""),ee=t.path.replace(/^\//,""),te=`${Z}/${ee}`,re=t.parameters.filter(e=>e.in==="path").reduce((e,_)=>{const{in:y,name:S}=_;return e[S]=h.path?.[S]||_.serverValues?.[l]?.example||_.example||o[S]||M(y,S),e},{}),E=p?.name.toLowerCase(),I=E===m.MULTIPART||E===m.URL_ENCODED,R=I?p?.formExamples?.[a]:p?.examples?.[a],ae=I?p?.formExamples||{}:p?.examples||{},[U]=Object.values(ae),N=R?.serverValues?.[l]?.value||U?.serverValues?.[l]?.value,D=e=>!e||typeof e!="object"||!p?.schema?.rawSchema?null:v.sample(Oe(p.schema.rawSchema,e),{...O,format:"xml"},c),C=(()=>{if(h?.body)return h.body;if(E===m.XML){const e=D(N)||D(R?.value)||D(U?.value);if(e)return e;if(p?.schema)return v.sample(p.schema.rawSchema,{...O,format:"xml"},c)}else return N||R?.value||U?.value||p?.schema&&v.sample(p.schema.rawSchema,{...O,format:"json"},c);return""})();let g="",L=[];switch(pe(E)){case m.JSON:g=JSON.stringify(V(C,i));break;case m.XML:g=C;break;case m.URL_ENCODED:case m.MULTIPART:g=j.stringify(V(C,i)),L=Y(V(C,i));break;default:g=String(C||"")}const se=g?{mimeType:p?.name||m.OCTET_STREAM,text:g,params:L}:void 0,ne=t.responses.map(e=>e.code);return{method:t.httpVerb,url:te,httpVersion:"HTTP/1.1",cookies:G,headers:H,queryString:W,postData:se,headersSize:-1,bodySize:-1,securityOAuth2ExtraCalls:K,basicAuth:Q,pathParameters:re,serverVariables:d,allResponseCodes:ne}}const f={withImports:!0,withComments:!1},x={curl:{code:"shell",defaultTarget:"curl",defaultOptions:{...f,short:!0}},JavaScript:{code:"javascript",defaultTarget:"fetch",defaultOptions:{...f,withImports:!1}},"Node.js":{code:"node",defaultTarget:"fetch",defaultOptions:{...f}},Python:{code:"python",defaultTarget:"requests",defaultOptions:{...f}},"Java8+Apache":{code:"java8",defaultTarget:"apachehttp",defaultOptions:{...f}},Java:{code:"java",defaultTarget:"httpclient",defaultOptions:{...f}},"C#":{code:"csharp",defaultTarget:"httpclient",defaultOptions:{...f}},"C#+Newtonsoft":{code:"csharpNewtonsoft",defaultTarget:"httpclient",defaultOptions:{...f}},Go:{code:"go",defaultTarget:"http.DefaultClient",defaultOptions:{...f}},PHP:{code:"php",defaultTarget:"curl",defaultOptions:{...f}},Ruby:{code:"ruby",defaultTarget:"net::http",defaultOptions:{...f}},R:{code:"r",defaultTarget:"httr",defaultOptions:{...f}}};function Re({lang:t,operation:a,exampleName:n,pathParams:u,properties:c,options:r={},environment:o,translate:i}){try{const{skipOptionalParameters:s,withOAuth2Call:d,spec:k,generatedPayloadSamplesMaxDepth:T,store:l,activeMimeName:b}=r,w=ye(a,{exampleName:n,pathParams:u,properties:c,skipOptionalParameters:s,withOAuth2Call:d,spec:k,generatedPayloadSamplesMaxDepth:T,activeMimeName:b},{environment:o,requestValues:l.requestValues,activeSecuritySchemeIds:l.activeSecuritySchemeIds}),A=new me(w);return x[t]?A.convert(x[t].code,x[t].defaultTarget,{...x[t].defaultOptions,...r}):i("openapi.unsupportedLanguage","Language is not supported.")}catch(s){return console.error(s),i("openapi.failedToGenerateCodeSample","Failed to generate code sample.")}}function he(t,a,n){const u={securityHeaders:[],securityCookies:[],securityQueries:[],securityOAuth2ExtraCalls:[],basicAuth:void 0},c=n?.server;for(const r of t?.schemes||[]){const o=ie(r.id,n),i=c&&r.serverValues&&r.serverValues[c],s={access_token:i?.["x-defaultAccessToken"]||r["x-defaultAccessToken"],token_type:i?.["x-defaultTokenType"]||r["x-defaultTokenType"],client_id:i?.["x-defaultClientId"]||r["x-defaultClientId"],client_secret:i?.["x-defaultClientSecret"]||r["x-defaultClientSecret"]},d=i?.["x-defaultUsername"]||r["x-defaultUsername"],k=i?.["x-defaultPassword"]||r["x-defaultPassword"],T=i&&"scopes"in i?i.scopes||[]:r.scopes||[];switch(r.type){case"openIdConnect":u.securityHeaders?.push({name:"Authorization",value:s.access_token?`${s.token_type||"Bearer"} ${s.access_token}`:o.token?`${s.token_type||o.token.token_type||"Bearer"} ${o.token.access_token}`:"Bearer <YOUR_TOKEN_HERE>"});break;case"oauth2":{const l=s.access_token?`${s.token_type||"Bearer"} ${s.access_token}`:o.token?`${o.token.token_type||"Bearer"} ${o.token.access_token}`:"Bearer <YOUR_TOKEN_HERE>";r.flows.clientCredentials&&a?u.securityOAuth2ExtraCalls.push(_e(r.flows.clientCredentials,T,{...o,client_id:s.client_id||o.client_id,client_secret:s.client_secret||o.client_secret})):r.flows.password&&a&&u.securityOAuth2ExtraCalls.push(Se(r.flows.password,T,{...o,client_id:s.client_id||o.client_id,client_secret:s.client_secret||o.client_secret})),u.securityHeaders?.push({name:"Authorization",value:l});break}case"apiKey":{const l=s.access_token||o.raw||"YOUR_API_KEY_HERE";r.in==="header"&&u.securityHeaders?.push({name:r.name,value:l}),r.in==="cookie"&&u.securityCookies.push({name:r.name,value:l}),r.in==="query"&&u.securityQueries.push({name:r.name,value:l});break}case"http":if(r.scheme==="basic")u.basicAuth={username:d||o.username||`<${J.toSnakeCase("Username")}>`,password:k||o.password||`<${J.toSnakeCase("Password")}>`};else{const l=s?.access_token||o.token?.access_token||`<YOUR_${r.bearerFormat||"TOKEN"}_HERE>`;u.securityHeaders?.push({name:"Authorization",value:`${Te(r.scheme||"bearer")} ${l}`})}break}}return u}function Se(t,a,n){return{method:"POST",url:t.tokenUrl,httpVersion:"HTTP/1.1",headers:[{name:"Content-Type",value:m.URL_ENCODED},{name:"Accept",value:m.JSON}],queryString:[],postData:{mimeType:m.URL_ENCODED,text:"",params:[{name:"grant_type",value:"password"},{name:"client_id",value:n.client_id||"YOUR_CLIENT_ID"},{name:"client_secret",value:n.client_secret||"YOUR_CLIENT_SECRET"},{name:"username",value:n.username||"<username>"},{name:"password",value:n.password||"<password>"},a.length?{name:"scope",value:a.join(" ")}:void 0].filter(B)},cookies:[],headersSize:-1,bodySize:-1,securityOAuth2ExtraCalls:[]}}function _e(t,a,n){return{method:"POST",url:t.tokenUrl,httpVersion:"HTTP/1.1",headers:[{name:"Content-Type",value:m.URL_ENCODED},{name:"Accept",value:m.JSON}],queryString:[],postData:{mimeType:m.URL_ENCODED,text:"",params:[{name:"grant_type",value:"client_credentials"},{name:"client_id",value:n.client_id||"YOUR_CLIENT_ID"},{name:"client_secret",value:n.client_secret||"YOUR_CLIENT_SECRET"},a.length?{name:"scope",value:a.join(" ")}:void 0].filter(B)},cookies:[],headersSize:-1,bodySize:-1,securityOAuth2ExtraCalls:[]}}function V(t,a){if(t){if(oe(t))return Object.keys(t).length>0&&Object.keys(a).length===0?t:$(t,a,{arrayMerge:z});try{return $(JSON.parse(t),a,{arrayMerge:z})}catch{return!1}}return!1}function Y(t,a=""){const n=[];for(const[u,c]of Object.entries(t)){const r=a?`${a}[${u}]`:u;if(typeof c=="object"&&c!==null)n.push(...Y(c,r));else{const o=Array.isArray(t)&&typeof c=="string"&&a?a:r;n.push({name:o,value:String(c)})}}return n}function B(t){return t!==void 0}function Te(t){return t.charAt(0).toUpperCase()+t.slice(1)}function Oe(t,a){if(!t||typeof t!="object"||!a||typeof a!="object")return t;const n=JSON.parse(JSON.stringify(t));function u(c,r){if(!(!c||!r||typeof c!="object"||typeof r!="object")&&c.properties){for(const o in c.properties)if(r[o]!==void 0){const i=c.properties[o],s=r[o];if(i.type==="object"&&typeof s=="object"&&!Array.isArray(s))u(i,s);else if(i.type==="array"&&Array.isArray(s)&&s.length>0){const d=s[0];i.items&&i.items.properties&&u(i.items,d)}else i.example=s}}}return u(n,a),n}export{Te as capitalizeFirst,Re as getCodeSample,V as getDataRequest,B as isDefined};
1
+ import*as oe from"openapi-sampler";import L from"deepmerge";import{isObject as ce}from"@redocly/theme/core/openapi";import{areArraysEqual as ie,serializeParameterValue as P,getSecurityDetails as ue,getParameterValue as M,queryString as j,isArrayOfObjects as le,deleteEmptyArrayItem as pe}from"../../utils/index.js";import{normalizeMimeType as me,arrayMergeStrategy as z}from"../utils.js";import{MediaTypes as m}from"../../constants.js";import{HTTPSnippet as fe}from"./httpsnippet/index.js";import{getActiveMediaType as de}from"../../models/mediaContent.js";import J from"./httpsnippet/helpers/string-utility.js";function v(t,a,s){try{return oe.sample(t,a,s)}catch(c){return console.error(`Error sampling schema: ${c.message}`),null}}function ye(t,a){return t.find(s=>{const c=s.schemes.map(i=>i.id);return ie(c,a||[])})}function he(t,{exampleName:a="",skipOptionalParameters:s=!1,withOAuth2Call:c=!1,spec:i,generatedPayloadSamplesMaxDepth:r=8,pathParams:o={},properties:u={},activeMimeName:n=""},{environment:d,requestValues:k,activeSecuritySchemeIds:T}){const l=d.server,b=t.servers.find(e=>e.url===l)||t.servers[0],w=ye(t.security,T),{securityHeaders:A,securityCookies:F,securityQueries:X,securityOAuth2ExtraCalls:K,basicAuth:Q}=Se(w||t.security?.[0],c,d),p=t?.requestBody?.content&&de(t.requestBody.content,n),O={skipNonRequired:s,skipReadOnly:!0,maxSampleDepth:r,quiet:!0},h=k;let q=!1;const H=t.parameters.filter(e=>e.in==="header").filter(e=>!(s&&!e.required)).map(e=>({name:e.name,value:h.header?.[e.name]||M("header",e.name)||e.serverValues?.[l]?.example||e.example||P(e,v(e.schema.rawSchema,O,i))})).map(e=>(p?.name&&e.name.toLowerCase()==="content-type"&&(q=!0,e.value=p.name),e)).concat(A);!q&&p?.name&&H.unshift({name:"Content-Type",value:p?.name});const G=t.parameters.filter(e=>e.in==="cookie").filter(e=>!(s&&!e.required)).map(e=>j.parse(P(e,e.serverValues?.[l]?.example||e.example||v(e.schema.rawSchema,O,i)))).reduce((e,_)=>{for(const[y,S]of Object.entries(_))e.push({name:y,value:String(h.cookie?.[y]||S)});return e},[]).concat(F),W=t.parameters.filter(e=>e.in==="query").filter(e=>!(s&&!e.required)).map(e=>j.parse(P(e,e.serverValues?.[l]?.example||e.example||v(e.schema.rawSchema,O,i)))).reduce((e,_)=>{for(const[y,S]of Object.entries(_))e.push({name:y,value:le(h.query?.[y])&&JSON.stringify(pe(h.query?.[y]))||String(h.query?.[y]||S)});return e},[]).concat(X),Z=b?.url.replace(/\/$/,""),ee=t.path.replace(/^\//,""),te=`${Z}/${ee}`,re=t.parameters.filter(e=>e.in==="path").reduce((e,_)=>{const{in:y,name:S}=_;return e[S]=h.path?.[S]||_.serverValues?.[l]?.example||_.example||o[S]||M(y,S),e},{}),E=p?.name.toLowerCase(),I=E===m.MULTIPART||E===m.URL_ENCODED,R=I?p?.formExamples?.[a]:p?.examples?.[a],ae=I?p?.formExamples||{}:p?.examples||{},[U]=Object.values(ae),N=R?.serverValues?.[l]?.value||U?.serverValues?.[l]?.value,D=e=>!e||typeof e!="object"||!p?.schema?.rawSchema?null:v(ge(p.schema.rawSchema,e),{...O,format:"xml"},i),C=(()=>{if(h?.body)return h.body;if(E===m.XML){const e=D(N)||D(R?.value)||D(U?.value);if(e)return e;if(p?.schema)return v(p.schema.rawSchema,{...O,format:"xml"},i)}else{const e=p?.schema&&v(p.schema.rawSchema,{...O,format:"json"},i);return N||R?.value||U?.value||e}return""})();let g="",$=[];switch(me(E)){case m.JSON:g=JSON.stringify(V(C,u));break;case m.XML:g=C;break;case m.URL_ENCODED:case m.MULTIPART:g=j.stringify(V(C,u)),$=Y(V(C,u));break;default:g=String(C||"")}const se=g?{mimeType:p?.name||m.OCTET_STREAM,text:g,params:$}:void 0,ne=t.responses.map(e=>e.code);return{method:t.httpVerb,url:te,httpVersion:"HTTP/1.1",cookies:G,headers:H,queryString:W,postData:se,headersSize:-1,bodySize:-1,securityOAuth2ExtraCalls:K,basicAuth:Q,pathParameters:re,serverVariables:d,allResponseCodes:ne}}const f={withImports:!0,withComments:!1},x={curl:{code:"shell",defaultTarget:"curl",defaultOptions:{...f,short:!0}},JavaScript:{code:"javascript",defaultTarget:"fetch",defaultOptions:{...f,withImports:!1}},"Node.js":{code:"node",defaultTarget:"fetch",defaultOptions:{...f}},Python:{code:"python",defaultTarget:"requests",defaultOptions:{...f}},"Java8+Apache":{code:"java8",defaultTarget:"apachehttp",defaultOptions:{...f}},Java:{code:"java",defaultTarget:"httpclient",defaultOptions:{...f}},"C#":{code:"csharp",defaultTarget:"httpclient",defaultOptions:{...f}},"C#+Newtonsoft":{code:"csharpNewtonsoft",defaultTarget:"httpclient",defaultOptions:{...f}},Go:{code:"go",defaultTarget:"http.DefaultClient",defaultOptions:{...f}},PHP:{code:"php",defaultTarget:"curl",defaultOptions:{...f}},Ruby:{code:"ruby",defaultTarget:"net::http",defaultOptions:{...f}},R:{code:"r",defaultTarget:"httr",defaultOptions:{...f}}};function Ue({lang:t,operation:a,exampleName:s,pathParams:c,properties:i,options:r={},environment:o,translate:u}){try{const{skipOptionalParameters:n,withOAuth2Call:d,spec:k,generatedPayloadSamplesMaxDepth:T,store:l,activeMimeName:b}=r,w=he(a,{exampleName:s,pathParams:c,properties:i,skipOptionalParameters:n,withOAuth2Call:d,spec:k,generatedPayloadSamplesMaxDepth:T,activeMimeName:b},{environment:o,requestValues:l.requestValues,activeSecuritySchemeIds:l.activeSecuritySchemeIds}),A=new fe(w);return x[t]?A.convert(x[t].code,x[t].defaultTarget,{...x[t].defaultOptions,...r}):u("openapi.unsupportedLanguage","Language is not supported.")}catch(n){return console.error(n),u("openapi.failedToGenerateCodeSample","Failed to generate code sample.")}}function Se(t,a,s){const c={securityHeaders:[],securityCookies:[],securityQueries:[],securityOAuth2ExtraCalls:[],basicAuth:void 0},i=s?.server;for(const r of t?.schemes||[]){const o=ue(r.id,s),u=i&&r.serverValues&&r.serverValues[i],n={access_token:u?.["x-defaultAccessToken"]||r["x-defaultAccessToken"],token_type:u?.["x-defaultTokenType"]||r["x-defaultTokenType"],client_id:u?.["x-defaultClientId"]||r["x-defaultClientId"],client_secret:u?.["x-defaultClientSecret"]||r["x-defaultClientSecret"]},d=u?.["x-defaultUsername"]||r["x-defaultUsername"],k=u?.["x-defaultPassword"]||r["x-defaultPassword"],T=u&&"scopes"in u?u.scopes||[]:r.scopes||[];switch(r.type){case"openIdConnect":c.securityHeaders?.push({name:"Authorization",value:n.access_token?`${n.token_type||"Bearer"} ${n.access_token}`:o.token?`${n.token_type||o.token.token_type||"Bearer"} ${o.token.access_token}`:"Bearer <YOUR_TOKEN_HERE>"});break;case"oauth2":{const l=n.access_token?`${n.token_type||"Bearer"} ${n.access_token}`:o.token?`${o.token.token_type||"Bearer"} ${o.token.access_token}`:"Bearer <YOUR_TOKEN_HERE>";r.flows.clientCredentials&&a?c.securityOAuth2ExtraCalls.push(Te(r.flows.clientCredentials,T,{...o,client_id:n.client_id||o.client_id,client_secret:n.client_secret||o.client_secret})):r.flows.password&&a&&c.securityOAuth2ExtraCalls.push(_e(r.flows.password,T,{...o,client_id:n.client_id||o.client_id,client_secret:n.client_secret||o.client_secret})),c.securityHeaders?.push({name:"Authorization",value:l});break}case"apiKey":{const l=n.access_token||o.raw||"YOUR_API_KEY_HERE";r.in==="header"&&c.securityHeaders?.push({name:r.name,value:l}),r.in==="cookie"&&c.securityCookies.push({name:r.name,value:l}),r.in==="query"&&c.securityQueries.push({name:r.name,value:l});break}case"http":if(r.scheme==="basic")c.basicAuth={username:d||o.username||`<${J.toSnakeCase("Username")}>`,password:k||o.password||`<${J.toSnakeCase("Password")}>`};else{const l=n?.access_token||o.token?.access_token||`<YOUR_${r.bearerFormat||"TOKEN"}_HERE>`;c.securityHeaders?.push({name:"Authorization",value:`${Oe(r.scheme||"bearer")} ${l}`})}break}}return c}function _e(t,a,s){return{method:"POST",url:t.tokenUrl,httpVersion:"HTTP/1.1",headers:[{name:"Content-Type",value:m.URL_ENCODED},{name:"Accept",value:m.JSON}],queryString:[],postData:{mimeType:m.URL_ENCODED,text:"",params:[{name:"grant_type",value:"password"},{name:"client_id",value:s.client_id||"YOUR_CLIENT_ID"},{name:"client_secret",value:s.client_secret||"YOUR_CLIENT_SECRET"},{name:"username",value:s.username||"<username>"},{name:"password",value:s.password||"<password>"},a.length?{name:"scope",value:a.join(" ")}:void 0].filter(B)},cookies:[],headersSize:-1,bodySize:-1,securityOAuth2ExtraCalls:[]}}function Te(t,a,s){return{method:"POST",url:t.tokenUrl,httpVersion:"HTTP/1.1",headers:[{name:"Content-Type",value:m.URL_ENCODED},{name:"Accept",value:m.JSON}],queryString:[],postData:{mimeType:m.URL_ENCODED,text:"",params:[{name:"grant_type",value:"client_credentials"},{name:"client_id",value:s.client_id||"YOUR_CLIENT_ID"},{name:"client_secret",value:s.client_secret||"YOUR_CLIENT_SECRET"},a.length?{name:"scope",value:a.join(" ")}:void 0].filter(B)},cookies:[],headersSize:-1,bodySize:-1,securityOAuth2ExtraCalls:[]}}function V(t,a){if(t){if(ce(t))return Object.keys(t).length>0&&Object.keys(a).length===0?t:L(t,a,{arrayMerge:z});try{return L(JSON.parse(t),a,{arrayMerge:z})}catch{return!1}}return!1}function Y(t,a=""){const s=[];for(const[c,i]of Object.entries(t)){const r=a?`${a}[${c}]`:c;if(typeof i=="object"&&i!==null)s.push(...Y(i,r));else{const o=Array.isArray(t)&&typeof i=="string"&&a?a:r;s.push({name:o,value:String(i)})}}return s}function B(t){return t!==void 0}function Oe(t){return t.charAt(0).toUpperCase()+t.slice(1)}function ge(t,a){if(!t||typeof t!="object"||!a||typeof a!="object")return t;const s=JSON.parse(JSON.stringify(t));function c(i,r){if(!(!i||!r||typeof i!="object"||typeof r!="object")&&i.properties){for(const o in i.properties)if(r[o]!==void 0){const u=i.properties[o],n=r[o];if(u.type==="object"&&typeof n=="object"&&!Array.isArray(n))c(u,n);else if(u.type==="array"&&Array.isArray(n)&&n.length>0){const d=n[0];u.items&&u.items.properties&&c(u.items,d)}else u.example=n}}}return c(s,a),s}export{Oe as capitalizeFirst,Ue as getCodeSample,V as getDataRequest,B as isDefined,v as safeSample};
@@ -1,5 +1,8 @@
1
1
  import type { OpenAPIServerVariable } from '../../../../types/index.js';
2
2
  import { VariableType } from './constants.js';
3
+ interface VariableDeclarationOptions {
4
+ hasVariableInterpolation: boolean;
5
+ }
3
6
  /**
4
7
  * Helper object to format and aggragate lines of code.
5
8
  * Lines are aggregated in a `code` array, and need to be joined to obtain a proper code snippet.
@@ -17,7 +20,7 @@ export declare class CodeBuilder {
17
20
  langOptions: {
18
21
  stringLiteral: (t: string) => string;
19
22
  variableWrapperFn: (variableName: string, variableValue?: OpenAPIServerVariable | string) => string;
20
- variableDeclaration: (v: string) => string;
23
+ variableDeclaration: (v: string, options?: VariableDeclarationOptions) => string;
21
24
  joinSymbol: string;
22
25
  urlFieldName: string;
23
26
  rawName: boolean;
@@ -81,3 +84,4 @@ export declare class CodeBuilder {
81
84
  */
82
85
  var(name: string, type?: VariableType): string;
83
86
  }
87
+ export {};