@redocly/openapi-docs 3.0.0-alpha.70 → 3.0.0-alpha.72.beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/console.redocly-openapi-docs.min.js +73 -73
- package/dist/oauth2-redirect.js +1 -1
- package/dist/redocly-openapi-docs.min.js +1095 -1095
- package/lib/components/ApiInfo/ApiInfo.js +1 -1
- package/lib/components/ContentItems/ContentItems.js +1 -1
- package/lib/components/DiscriminatorDropdown/DiscriminatorDropdown.js +1 -1
- package/lib/components/Download/DownloadButtonWithLabel.js +1 -1
- package/lib/components/Endpoint/Endpoint.js +1 -1
- package/lib/components/Fields/EnumValues.js +1 -1
- package/lib/components/Fields/Extensions.js +2 -2
- package/lib/components/Fields/Field.js +1 -1
- package/lib/components/Fields/FieldDetails.js +1 -1
- package/lib/components/Markdown/Markdown.js +1 -1
- package/lib/components/MediaTypeSwitch/MediaTypesSwitch.js +1 -1
- package/lib/components/OperationItem/OperationItem.js +2 -2
- package/lib/components/PageFooter/PageFooter.js +1 -1
- package/lib/components/PayloadSamples/ExampleValue.js +1 -1
- package/lib/components/PayloadSamples/PayloadSamples.js +1 -1
- package/lib/components/RedoclyOpenAPIDocs/Providers.d.ts +1 -2
- package/lib/components/RedoclyOpenAPIDocs/Providers.js +1 -1
- package/lib/components/RedoclyOpenAPIDocs/RedoclyOpenAPIDocs.js +1 -1
- package/lib/components/RequestSamples/RequestSamples.js +1 -1
- package/lib/components/RequestSamples/useCodeSamples.js +1 -1
- package/lib/components/ResponseSamples/ResponseSamples.js +1 -1
- package/lib/components/Responses/OperationResponseList.js +1 -1
- package/lib/components/Samples/SamplesTabs.js +1 -1
- package/lib/components/Samples/use-example-key.js +1 -1
- package/lib/components/Schema/ObjectSchema.js +1 -1
- package/lib/components/Schema/OneOfSchema.js +1 -1
- package/lib/components/Schema/Schema.js +1 -1
- package/lib/components/SchemaDefinition/SchemaDefinition.js +1 -1
- package/lib/components/Search/MenuItemSearch.js +1 -1
- package/lib/components/Search/utils.js +1 -1
- package/lib/components/SectionContent/SectionContent.js +1 -1
- package/lib/components/SecurityRequirement/SecurityDefs.js +1 -1
- package/lib/components/SecurityRequirement/SecurityRequirement.js +1 -1
- package/lib/components/SideMenu/Actions.js +1 -1
- package/lib/components/SideMenu/MenuItems.js +1 -1
- package/lib/components/SideMenu/MenuOperationItemContent.js +2 -2
- package/lib/components/SideMenu/SideMenu.js +1 -1
- package/lib/components/StickySidebar/StickyResponsiveSidebar.js +2 -2
- package/lib/components/Tabs/CollapsingTabs/CollapsingTabs.js +1 -1
- package/lib/components/Tabs/CollapsingTabs/CollapsingTabsBase.js +1 -1
- package/lib/components/TagItems/TagItems.js +1 -1
- package/lib/components/VersionSwitcher.d.ts +1 -1
- package/lib/components/common/linkify.js +1 -1
- package/lib/components/common/perfect-scrollbar.js +2 -2
- package/lib/components/pluggable/RedocExample.js +1 -1
- package/lib/components/pluggable/RedocRequestBody.js +1 -1
- package/lib/components/pluggable/RedocResponse.js +1 -1
- package/lib/components/pluggable/RedocSchema.js +1 -1
- package/lib/components/rightPanel/AuthPanel/AuthPanel.js +1 -1
- package/lib/components/rightPanel/Console/Console.js +1 -1
- package/lib/components/rightPanel/Console/ConsoleWrapper.js +1 -1
- package/lib/components/rightPanel/Console/Request.js +1 -1
- package/lib/components/rightPanel/OAuth2Flow/OAuth2Flow.js +1 -1
- package/lib/components/rightPanel/RequestBody/RequestBody.js +1 -1
- package/lib/components/rightPanel/RequestBodyForm.js +1 -1
- package/lib/components/rightPanel/ResponseBody.js +1 -1
- package/lib/components/rightPanel/ResponseHeadersList.js +1 -1
- package/lib/components/rightPanel/ServersDropdown/ServersDropdown.js +1 -1
- package/lib/components/rightPanel/utils.js +1 -1
- package/lib/events/codeSampleCopy.js +1 -1
- package/lib/hoc/types.d.ts +1 -1
- package/lib/hoc/withStore.js +1 -1
- package/lib/hooks/useActivateExample.js +1 -1
- package/lib/hooks/useContentItems.js +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.js +1 -1
- package/lib/jotai/app.d.ts +38 -0
- package/lib/jotai/app.js +2 -0
- package/lib/jotai/nexus.d.ts +5 -0
- package/lib/jotai/nexus.js +2 -0
- package/lib/jotai/operation.d.ts +15 -0
- package/lib/jotai/operation.js +2 -0
- package/lib/{recoil → jotai}/store.d.ts +6 -4
- package/lib/jotai/store.js +2 -0
- package/lib/models/mediaContent.js +1 -1
- package/lib/services/Options/normalizeOptions.js +1 -1
- package/lib/services/Options/types.d.ts +3 -3
- package/lib/services/menu/builder.js +1 -1
- package/lib/services/menu/markdown.js +1 -1
- package/lib/services/search/DeepSearchStore.js +1 -1
- package/lib/services/types.d.ts +2 -2
- package/lib/standalone.d.ts +1 -1
- package/lib/standalone.js +1 -1
- package/lib/types/open-api.d.ts +4 -1
- package/lib/utils/saveTextBeforeHeading.js +1 -1
- package/lib-esm/components/ApiInfo/ApiInfo.js +1 -1
- package/lib-esm/components/ContentItems/ContentItems.js +1 -1
- package/lib-esm/components/DiscriminatorDropdown/DiscriminatorDropdown.js +1 -1
- package/lib-esm/components/Download/DownloadButtonWithLabel.js +1 -1
- package/lib-esm/components/Endpoint/Endpoint.js +1 -1
- package/lib-esm/components/Fields/EnumValues.js +1 -1
- package/lib-esm/components/Fields/Extensions.js +2 -2
- package/lib-esm/components/Fields/Field.js +1 -1
- package/lib-esm/components/Fields/FieldDetails.js +1 -1
- package/lib-esm/components/Markdown/Markdown.js +1 -1
- package/lib-esm/components/MediaTypeSwitch/MediaTypesSwitch.js +1 -1
- package/lib-esm/components/OperationItem/OperationItem.js +2 -2
- package/lib-esm/components/PageFooter/PageFooter.js +1 -1
- package/lib-esm/components/PayloadSamples/ExampleValue.js +1 -1
- package/lib-esm/components/PayloadSamples/PayloadSamples.js +1 -1
- package/lib-esm/components/RedoclyOpenAPIDocs/Providers.d.ts +1 -2
- package/lib-esm/components/RedoclyOpenAPIDocs/Providers.js +1 -1
- package/lib-esm/components/RedoclyOpenAPIDocs/RedoclyOpenAPIDocs.js +1 -1
- package/lib-esm/components/RequestSamples/RequestSamples.js +1 -1
- package/lib-esm/components/RequestSamples/useCodeSamples.js +1 -1
- package/lib-esm/components/ResponseSamples/ResponseSamples.js +1 -1
- package/lib-esm/components/Responses/OperationResponseList.js +1 -1
- package/lib-esm/components/Samples/SamplesTabs.js +1 -1
- package/lib-esm/components/Samples/use-example-key.js +1 -1
- package/lib-esm/components/Schema/ObjectSchema.js +1 -1
- package/lib-esm/components/Schema/OneOfSchema.js +1 -1
- package/lib-esm/components/Schema/Schema.js +1 -1
- package/lib-esm/components/SchemaDefinition/SchemaDefinition.js +1 -1
- package/lib-esm/components/Search/MenuItemSearch.js +1 -1
- package/lib-esm/components/Search/utils.js +1 -1
- package/lib-esm/components/SectionContent/SectionContent.js +1 -1
- package/lib-esm/components/SecurityRequirement/SecurityDefs.js +1 -1
- package/lib-esm/components/SecurityRequirement/SecurityRequirement.js +1 -1
- package/lib-esm/components/SideMenu/Actions.js +1 -1
- package/lib-esm/components/SideMenu/MenuItems.js +1 -1
- package/lib-esm/components/SideMenu/MenuOperationItemContent.js +2 -2
- package/lib-esm/components/SideMenu/SideMenu.js +1 -1
- package/lib-esm/components/StickySidebar/StickyResponsiveSidebar.js +2 -2
- package/lib-esm/components/Tabs/CollapsingTabs/CollapsingTabs.js +1 -1
- package/lib-esm/components/Tabs/CollapsingTabs/CollapsingTabsBase.js +1 -1
- package/lib-esm/components/TagItems/TagItems.js +1 -1
- package/lib-esm/components/VersionSwitcher.d.ts +1 -1
- package/lib-esm/components/common/linkify.js +1 -1
- package/lib-esm/components/common/perfect-scrollbar.js +2 -2
- package/lib-esm/components/pluggable/RedocExample.js +1 -1
- package/lib-esm/components/pluggable/RedocRequestBody.js +1 -1
- package/lib-esm/components/pluggable/RedocResponse.js +1 -1
- package/lib-esm/components/pluggable/RedocSchema.js +1 -1
- package/lib-esm/components/rightPanel/AuthPanel/AuthPanel.js +1 -1
- package/lib-esm/components/rightPanel/Console/Console.js +1 -1
- package/lib-esm/components/rightPanel/Console/ConsoleWrapper.js +1 -1
- package/lib-esm/components/rightPanel/Console/Request.js +1 -1
- package/lib-esm/components/rightPanel/OAuth2Flow/OAuth2Flow.js +1 -1
- package/lib-esm/components/rightPanel/RequestBody/RequestBody.js +1 -1
- package/lib-esm/components/rightPanel/RequestBodyForm.js +1 -1
- package/lib-esm/components/rightPanel/ResponseBody.js +1 -1
- package/lib-esm/components/rightPanel/ResponseHeadersList.js +1 -1
- package/lib-esm/components/rightPanel/ServersDropdown/ServersDropdown.js +1 -1
- package/lib-esm/components/rightPanel/utils.js +1 -1
- package/lib-esm/events/codeSampleCopy.js +1 -1
- package/lib-esm/hoc/types.d.ts +1 -1
- package/lib-esm/hoc/withStore.js +1 -1
- package/lib-esm/hooks/useActivateExample.js +1 -1
- package/lib-esm/hooks/useContentItems.js +1 -1
- package/lib-esm/index.d.ts +1 -1
- package/lib-esm/index.js +1 -1
- package/lib-esm/jotai/app.d.ts +38 -0
- package/lib-esm/jotai/app.js +2 -0
- package/lib-esm/jotai/nexus.d.ts +5 -0
- package/lib-esm/jotai/nexus.js +2 -0
- package/lib-esm/jotai/operation.d.ts +15 -0
- package/lib-esm/jotai/operation.js +2 -0
- package/lib-esm/{recoil → jotai}/store.d.ts +6 -4
- package/lib-esm/jotai/store.js +2 -0
- package/lib-esm/models/mediaContent.js +1 -1
- package/lib-esm/services/Options/normalizeOptions.js +1 -1
- package/lib-esm/services/Options/types.d.ts +3 -3
- package/lib-esm/services/menu/builder.js +1 -1
- package/lib-esm/services/menu/markdown.js +1 -1
- package/lib-esm/services/search/DeepSearchStore.js +1 -1
- package/lib-esm/services/types.d.ts +2 -2
- package/lib-esm/standalone.d.ts +1 -1
- package/lib-esm/standalone.js +1 -1
- package/lib-esm/types/open-api.d.ts +4 -1
- package/lib-esm/utils/saveTextBeforeHeading.js +1 -1
- package/package.json +4 -4
- package/lib/recoil/app.d.ts +0 -36
- package/lib/recoil/app.js +0 -2
- package/lib/recoil/nexus.d.ts +0 -6
- package/lib/recoil/nexus.js +0 -2
- package/lib/recoil/operation.d.ts +0 -11
- package/lib/recoil/operation.js +0 -2
- package/lib/recoil/store.js +0 -2
- package/lib-esm/recoil/app.d.ts +0 -36
- package/lib-esm/recoil/app.js +0 -2
- package/lib-esm/recoil/nexus.d.ts +0 -6
- package/lib-esm/recoil/nexus.js +0 -2
- package/lib-esm/recoil/operation.d.ts +0 -11
- package/lib-esm/recoil/operation.js +0 -2
- package/lib-esm/recoil/store.js +0 -2
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import React,{memo,useRef}from"react";import{
|
|
1
|
+
import React,{memo,useRef}from"react";import{useAtomValue}from"jotai";import{RedocAttribution}from"./styled";import{MenuItems}from"./MenuItems";import{PerfectScrollbarWrap}from"../common";import{globalOptionsAtom}from"../../jotai/store";import{useMenuItems}from"./hooks";const SideMenuComponent=({items:e,className:t})=>{const{sidebarLinks:o,whiteLabel:r,pagination:n}=useAtomValue(globalOptionsAtom),m=useRef(),a=useMenuItems({items:e,pagination:n});return React.createElement(PerfectScrollbarWrap,{updateFn:e=>{m.current=e},className:t,options:{wheelPropagation:!1}},React.createElement(MenuItems,{items:a,root:!0,linksBefore:null==o?void 0:o.beforeInfo,linksAfter:null==o?void 0:o.end}),r&&React.createElement(RedocAttribution,null,React.createElement("a",{href:"https://redoc.ly",target:"_blank",rel:"noreferrer"},"Powered by Redocly")))};export const SideMenu=memo(SideMenuComponent);
|
|
2
2
|
//# sourceMappingURL=SideMenu.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React,{memo,useEffect,useRef,useState}from"react";import styled,{css}from"styled-components";import{MobileSidebarButton,MobileSidebarIcon,useMount,useUnmount}from"@redocly/theme";import{
|
|
1
|
+
import React,{memo,useEffect,useRef,useState}from"react";import styled,{css}from"styled-components";import{MobileSidebarButton,MobileSidebarIcon,useMount,useUnmount}from"@redocly/theme";import{useAtom}from"jotai";import{useLocation}from"react-router-dom";import{IS_BROWSER}from"../../utils";import{isSidebarOpenedAtom}from"../../jotai/app";import{Actions}from"../SideMenu/Actions";let Stickyfill;IS_BROWSER&&(Stickyfill=require("stickyfill"));const stickyfill=Stickyfill&&Stickyfill(),StyledStickySidebar=styled.div`
|
|
2
2
|
overflow: hidden;
|
|
3
3
|
flex-direction: column;
|
|
4
4
|
backface-visibility: hidden;
|
|
@@ -35,5 +35,5 @@ import React,{memo,useEffect,useRef,useState}from"react";import styled,{css}from
|
|
|
35
35
|
display: none;
|
|
36
36
|
}
|
|
37
37
|
`}
|
|
38
|
-
`;function StickyResponsiveSidebarComponent({scrollYOffset:e,hideFab:t,className:i,children:o,collapsedSidebar:
|
|
38
|
+
`;function StickyResponsiveSidebarComponent({scrollYOffset:e,hideFab:t,className:i,children:o,collapsedSidebar:a}){const[r,s]=useState("0px"),l=useRef(null),n=useLocation(),[c,d]=useAtom(isSidebarOpenedAtom);useEffect((()=>{n.hash&&d(!1)}),[n.pathname,n.hash,d]),useMount((()=>{stickyfill&&stickyfill.add(l.current);const t=e();s(`${t}px`)})),useUnmount((()=>{stickyfill&&stickyfill.remove(l.current)}));return React.createElement(React.Fragment,null,React.createElement(StyledStickySidebar,{open:c,className:i,offsetTop:r,style:{top:r},ref:l,collapsedSidebar:a},a||c?o:null,React.createElement(Actions,null)),!t&&React.createElement(FloatingButton,{opened:c,onClick:()=>{d(!c)}},React.createElement(MobileSidebarIcon,null)))}export const StickyResponsiveSidebar=memo(StickyResponsiveSidebarComponent);
|
|
39
39
|
//# sourceMappingURL=StickyResponsiveSidebar.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var __rest=this&&this.__rest||function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(o=Object.getOwnPropertySymbols(e);a<o.length;a++)t.indexOf(o[a])<0&&Object.prototype.propertyIsEnumerable.call(e,o[a])&&(n[o[a]]=e[o[a]])}return n};import React,{memo,useCallback,useEffect,useState}from"react";import{
|
|
1
|
+
var __rest=this&&this.__rest||function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(o=Object.getOwnPropertySymbols(e);a<o.length;a++)t.indexOf(o[a])<0&&Object.prototype.propertyIsEnumerable.call(e,o[a])&&(n[o[a]]=e[o[a]])}return n};import React,{memo,useCallback,useEffect,useState}from"react";import{useAtom}from"jotai";import{CollapsingTabsBase}from"./CollapsingTabsBase";import{operationStore}from"../../../jotai/operation";function getActiveIndexFromOperation(e,t,n){var o;if(!t)return-1;if("number"==typeof n&&n>0){return hasActiveExampleName(null===(o=e[n])||void 0===o?void 0:o.content,t)?n:getActiveIndexFromOperation(e,t)}return e.findIndex((({content:e})=>hasActiveExampleName(e,t)))}function hasActiveExampleName(e,t){return!!(null==e?void 0:e.mediaTypes.find((e=>Object.keys(e.examples||[]).includes(t||""))))}function CollapsingTabsComponent(e){var{children:t}=e,n=__rest(e,["children"]);const{operation:{pointer:o,responses:a},tabs:i}=n,[r,s]=useAtom(operationStore(o)),[l,c]=useState(0);function p(e){s((t=>Object.assign(Object.assign({},t),{activeResponseTab:e})))}useEffect((()=>{const e=i.findIndex((e=>e.title===(null==r?void 0:r.activeResponseTab)));c(e)}),[i,null==r?void 0:r.activeResponseTab,c]);const m=null==r?void 0:r.activeExampleName;useEffect((()=>{const e=getActiveIndexFromOperation(a,m,l);e>-1&&i[e]&&(c(e),p(i[e].title))}),[m]);const u=useCallback((e=>{l!==e&&(c(e),p(i[e].title))}),[l]);return React.createElement(CollapsingTabsBase,Object.assign({},n,{activeIndex:l,onChange:u}),t)}export const CollapsingTabs=memo(CollapsingTabsComponent);
|
|
2
2
|
//# sourceMappingURL=CollapsingTabs.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import React,{memo,useCallback,useEffect,useMemo,useState}from"react";import{Tabs}from"react-tabs";import{
|
|
1
|
+
import React,{memo,useCallback,useEffect,useMemo,useState}from"react";import{Tabs}from"react-tabs";import{useAtomValue}from"jotai";import{CollapsingDropdown}from"../../common/Dropdown";import{CollapsingTabList}from"./CollapsingTabList";import{CollapsingTab}from"./CollapsingTab";import{globalOptionsAtom}from"../../../jotai/store";function CollapsingTabsBaseComponent({tabs:e,children:o,hidden:t,activeIndex:a,onChange:l}){const{samplesTabsMaxCount:n}=useAtomValue(globalOptionsAtom),s=useMemo((()=>e.slice(n).map((({title:e},o)=>({idx:o,value:e})))),[e,n]),i=`${s.length} more`,[m,p]=useState(i),r=useCallback((()=>{var o;const t=a>=n;m!==i&&m===e[a].title||!t?m===i||t||p(i):p(null===(o=e[a])||void 0===o?void 0:o.title)}),[a,n,m,i,e]);useEffect((()=>{setTimeout(r,0)}),[a,n,r]);return React.createElement(Tabs,{selectedIndex:a,onSelect:l},React.createElement(CollapsingTabList,{hidden:t},e.map(((e,o)=>React.createElement(CollapsingTab,{key:null==e?void 0:e.key,disabled:o>=n},null==e?void 0:e.title))),s.length?React.createElement(CollapsingDropdown,{options:s,onChange:e=>{l(n+e.idx)},placeholder:i,value:m,active:a>=n}):null),o)}export const CollapsingTabsBase=memo(CollapsingTabsBaseComponent);
|
|
2
2
|
//# sourceMappingURL=CollapsingTabsBase.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import React,{useMemo}from"react";import{OpenApiHeader}from"@redocly/theme";import{
|
|
1
|
+
import React,{useMemo}from"react";import{OpenApiHeader}from"@redocly/theme";import{useAtomValue}from"jotai";import{Pagination}from"../../services";import{ContentItem}from"../ContentItem";import{MiddlePanelWrapper}from"../Panel";import{PageFooter}from"../PageFooter";import{SectionContent}from"../SectionContent";import{globalOptionsAtom}from"../../jotai/store";import{RenderHook}from"../RenderHook";export function TagItems({tag:e,nextSectionLink:t,pagination:o,showNextButton:n}){const{hooks:{MiddlePanelHeader:r}}=useAtomValue(globalOptionsAtom),a=useMemo((()=>{const e=React.createElement(PageFooter,{showNextButton:n,pagination:o,nextSectionLink:t});return e?React.createElement(MiddlePanelWrapper,null,e):null}),[t,o,n]),i=useMemo((()=>OpenApiHeader||r?React.createElement(MiddlePanelWrapper,null,r?React.createElement(RenderHook,{Hook:r,props:void 0}):React.createElement(OpenApiHeader,null)):null),[r]);return React.createElement(React.Fragment,null,i,React.createElement(ContentItem,{key:e.id,item:e,withChildren:o!==Pagination.Item}),o===Pagination.Item&&React.createElement(SectionContent,{hideFooterAndHeader:!0,items:e.items||[],pagination:o,showNextButton:!1}),a)}
|
|
2
2
|
//# sourceMappingURL=TagItems.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import type { DropdownOption } from './common/Dropdown';
|
|
3
|
-
import type { OpenAPIDefinitionVersion } from '../
|
|
3
|
+
import type { OpenAPIDefinitionVersion } from '../jotai/store';
|
|
4
4
|
export interface VersionSwitcherProps {
|
|
5
5
|
onChange: (o: DropdownOption) => void;
|
|
6
6
|
versions: OpenAPIDefinitionVersion[];
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React from"react";import styled from"styled-components";import{
|
|
1
|
+
import React from"react";import styled from"styled-components";import{useAtomValue}from"jotai";import{AnchorIcon}from"@redocly/theme";import{Link as LinkRouter}from"react-router-dom";import{globalOptionsAtom}from"../../jotai/store";export function Link(e){var t;const{routingBasePath:o,hooks:r,onDeepLinkClick:n}=useAtomValue(globalOptionsAtom),i=e.security?null===(t=null==r?void 0:r.replaceSecurityLink)||void 0===t?void 0:t.call(r,{securityRequirementId:e.to}):e.to,a=n&&{onClick:e=>{e.preventDefault(),n(o+i)}};return i?React.createElement(LinkRouter,Object.assign({id:e.id,className:e.className||"",to:(null==i?void 0:i.startsWith("#"))?i:o+i},a),e.children):e.children?React.createElement("span",{className:e.className}," ",e.children," "):null}export const StyledShareLink=styled(Link)`
|
|
2
2
|
position: absolute;
|
|
3
3
|
transform: translateX(-100%);
|
|
4
4
|
padding-right: var(--heading-anchor-offset-right);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var __rest=this&&this.__rest||function(e,t){var r={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(r[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var l=0;for(o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(r[o[l]]=e[o[l]])}return r};import styled,{createGlobalStyle}from"styled-components";import*as PerfectScrollbarNamespace from"perfect-scrollbar";import React,{Component}from"react";import{
|
|
1
|
+
var __rest=this&&this.__rest||function(e,t){var r={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(r[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var l=0;for(o=Object.getOwnPropertySymbols(e);l<o.length;l++)t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(r[o[l]]=e[o[l]])}return r};import styled,{createGlobalStyle}from"styled-components";import*as PerfectScrollbarNamespace from"perfect-scrollbar";import React,{Component}from"react";import{useAtomValue}from"jotai";import{IS_BROWSER}from"../../utils";import{globalOptionsAtom}from"../../jotai/store";let psStyles="";IS_BROWSER&&(psStyles=require("perfect-scrollbar/css/perfect-scrollbar.css"),psStyles="function"==typeof psStyles.toString&&psStyles.toString()||"",psStyles="[object Object]"===psStyles?"":psStyles);const PerfectScrollbarConstructor=PerfectScrollbarNamespace.default||PerfectScrollbarNamespace,PSStyling=createGlobalStyle`${psStyles}`,StyledScrollWrapper=styled.div`
|
|
2
2
|
position: relative;
|
|
3
|
-
`;export class PerfectScrollbar extends Component{constructor(){super(...arguments),Object.defineProperty(this,"_container",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"inst",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"handleRef",{enumerable:!0,configurable:!0,writable:!0,value:e=>{this._container=e}})}componentDidMount(){const e=this._container.parentElement&&this._container.parentElement.scrollTop||0;this.inst=new PerfectScrollbarConstructor(this._container,this.props.options||{}),this._container.scrollTo&&this._container.scrollTo(0,e)}componentDidUpdate(){this.inst.update()}componentWillUnmount(){this.inst.destroy()}render(){const{children:e,updateFn:t,className:r=""}=this.props;return t&&t(this.componentDidUpdate.bind(this)),React.createElement(React.Fragment,null,psStyles&&React.createElement(PSStyling,null),React.createElement(StyledScrollWrapper,{className:`scrollbar-container ${r}`,ref:this.handleRef},e))}}export function PerfectScrollbarWrap(e){var{children:t}=e,r=__rest(e,["children"]);const{nativeScrollbars:o}=
|
|
3
|
+
`;export class PerfectScrollbar extends Component{constructor(){super(...arguments),Object.defineProperty(this,"_container",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"inst",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"handleRef",{enumerable:!0,configurable:!0,writable:!0,value:e=>{this._container=e}})}componentDidMount(){const e=this._container.parentElement&&this._container.parentElement.scrollTop||0;this.inst=new PerfectScrollbarConstructor(this._container,this.props.options||{}),this._container.scrollTo&&this._container.scrollTo(0,e)}componentDidUpdate(){this.inst.update()}componentWillUnmount(){this.inst.destroy()}render(){const{children:e,updateFn:t,className:r=""}=this.props;return t&&t(this.componentDidUpdate.bind(this)),React.createElement(React.Fragment,null,psStyles&&React.createElement(PSStyling,null),React.createElement(StyledScrollWrapper,{className:`scrollbar-container ${r}`,ref:this.handleRef},e))}}export function PerfectScrollbarWrap(e){var{children:t}=e,r=__rest(e,["children"]);const{nativeScrollbars:o}=useAtomValue(globalOptionsAtom);return o?React.createElement("div",{style:{overflow:"auto",overscrollBehavior:"contain",msOverflowStyle:"-ms-autohiding-scrollbar"}},t):React.createElement(PerfectScrollbar,Object.assign({},r),t)}
|
|
4
4
|
//# sourceMappingURL=perfect-scrollbar.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import React from"react";import{
|
|
1
|
+
import React from"react";import{useAtomValue}from"jotai";import{getExamples}from"../../models";import{Row}from"../common";import{ExamplesWrap}from"./styled.components";import{Example}from"../PayloadSamples";import{globalStoreAtom}from"../../jotai/store";import{layoutAtom}from"../../jotai/app";export const RedocExample=({pointer:e,mimeType:o,encoding:m})=>{const{parser:t}=useAtomValue(globalStoreAtom),a=useAtomValue(layoutAtom),r=getExamples({parser:t,infoOrRef:{$ref:e},mime:o,encoding:m});return React.createElement(Row,{layout:a},React.createElement(ExamplesWrap,null,React.createElement(Example,{example:r,mimeType:o})))};
|
|
2
2
|
//# sourceMappingURL=RedocExample.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import React from"react";import{
|
|
1
|
+
import React from"react";import{useAtomValue}from"jotai";import{getRequestBody,getOperation}from"../../models";import{Row,SamplesMiddlePanel,SamplesPanel}from"../common";import{SamplesWrap,FullWidthPanel}from"./styled.components";import{PayloadSamples}from"../PayloadSamples";import{BodyContent}from"../Parameters";import{globalStoreAtom}from"../../jotai/store";import{layoutAtom}from"../../jotai/app";export const RedocRequestBody=({pointer:e,hideSamples:t})=>{const{options:o,parser:a}=useAtomValue(globalStoreAtom),r=useAtomValue(layoutAtom),l=getOperation(a,{pointer:e,pathName:"",httpVerb:"",pathParameters:[],pathServers:[],isWebhook:!1,responses:{}},void 0,o,""),{content:m,description:n,required:p}=getRequestBody({parser:a,infoOrRef:{$ref:e},options:o,operation:l})||{},s=t?FullWidthPanel:SamplesMiddlePanel;return React.createElement(Row,{layout:r},React.createElement(s,null,m&&React.createElement(BodyContent,{content:m,description:n,required:p})),!t&&React.createElement(SamplesPanel,null,React.createElement(SamplesWrap,null,m&&React.createElement(PayloadSamples,{content:m})))||React.createElement("span",null))};
|
|
2
2
|
//# sourceMappingURL=RedocRequestBody.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import React from"react";import{
|
|
1
|
+
import React from"react";import{useAtomValue}from"jotai";import{getOperation,getResponse}from"../../models";import{Row,SamplesMiddlePanel,SamplesPanel}from"../common";import{FullWidthPanel,SamplesWrap}from"./styled.components";import{ResponseDetails}from"../Responses";import{PayloadSamples}from"../PayloadSamples";import{globalStoreAtom}from"../../jotai/store";import{layoutAtom}from"../../jotai/app";export const RedocResponse=({pointer:e,hideSamples:t})=>{const{options:o,parser:a}=useAtomValue(globalStoreAtom),r=useAtomValue(layoutAtom),l=getOperation(a,{pointer:e,pathName:"",httpVerb:"",pathParameters:[],pathServers:[],isWebhook:!1,responses:{}},void 0,o,""),s=getResponse({parser:a,code:"default",defaultAsError:!1,infoOrRef:{$ref:e},options:o,operation:l});s.description=s.summary;const m=t?FullWidthPanel:SamplesMiddlePanel;return React.createElement(Row,{layout:r},React.createElement(m,{style:{paddingBottom:"20px"}},React.createElement(ResponseDetails,{response:s})),!t&&s.content&&React.createElement(SamplesPanel,null,React.createElement(SamplesWrap,null,React.createElement(PayloadSamples,{content:s.content})))||React.createElement("span",null))};
|
|
2
2
|
//# sourceMappingURL=RedocResponse.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import React from"react";import{
|
|
1
|
+
import React from"react";import{useAtomValue}from"jotai";import{getSchema}from"../../models";import{Row}from"../common";import{FullWidthPanel}from"./styled.components";import{Schema}from"../Schema";import{globalStoreAtom}from"../../jotai/store";export const RedocSchema=({pointer:e,schema:o})=>{const{options:t,parser:m}=useAtomValue(globalStoreAtom),r=getSchema({parser:m,schemaOrRef:o||{$ref:e},pointer:e||"",options:t,deps:{operation:{pointer:"RedocSchema"}}});return React.createElement(Row,null,React.createElement(FullWidthPanel,null,React.createElement(Schema,{schema:r})))};
|
|
2
2
|
//# sourceMappingURL=RedocSchema.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import React,{Fragment,useEffect,useState}from"react";import{
|
|
1
|
+
import React,{Fragment,useEffect,useState}from"react";import{useAtomValue}from"jotai";import{TryItSecurityApps}from"@redocly/theme";import{escapeFormId,fromSessionStorage,getSecurityDetailsOptions,toSessionStorage}from"../../../utils";import{TryItDropdown}from"../styled";import{FormControl,FormLabel,FormWrapper}from"../../common/form";import{FormDropdown,FormTextField}from"../../common/TextField";import{OpenIDConnect,Error}from"../OpenIDConnect";import{fromCookie,requiredValidator}from"../utils";import{OAuth2Flow}from"../OAuth2Flow";import{l}from"../../../services";import OAuth2TokenInputComponent from"../OAuth2TokenInput";import{globalStoreAtom}from"../../../jotai/store";export const AuthPanel=({securityDefaults:e,operation:t,activeServer:o,authCorsProxyUrl:a,form:r,formApi:i})=>{var n,s;const[u,m]=useState(0),{parser:c}=useAtomValue(globalStoreAtom);useEffect((()=>{const e=t.security.map((e=>e.schemes.map((e=>e.id)).join(" and "))),o=fromSessionStorage("securityRequirementName"),a=e.findIndex((e=>e===o));m(a<0?0:a)}),[t]);const d=t.security,p=d.map((e=>e.schemes.map((e=>e.id)).join(" and "))).filter(Boolean).map(((e,t)=>({value:e,idx:t})));if(0===p.length)return React.createElement(Error,{message:"Cannot find security schema in the definition"});const f=d[u],h=escapeFormId(f.schemes[0].id);return React.createElement(React.Fragment,null,React.createElement(FormWrapper,null,p.length>1&&React.createElement(FormControl,null,React.createElement(FormLabel,null," Security scheme: "),React.createElement(TryItDropdown,{variant:"dark",fullWidth:!0,options:p,value:p[u].value,onChange:e=>{m(e.idx),toSessionStorage("securityRequirementName",e.value)}}))||null,React.createElement(TryItSecurityApps,{apiId:null===(s=null===(n=null==c?void 0:c.definition.info)||void 0===n?void 0:n["x-metadata"])||void 0===s?void 0:s.apiId,value:i.getValue(`auth.${h}`),onChange:e=>{i.setValue(`auth.${h}`,e)}}),d[u].schemes.map((t=>{var n,s,u,m,c,d,p;const f=escapeFormId(t.id);if("apiKey"===t.type){const o=getSecurityDetailsOptions(f,""),a={field:`auth.${f}`,fullWidth:!0,initialValue:fromCookie(t)||fromSessionStorage(`auth.${f}`)||(null==e?void 0:e[f]),initValue:fromCookie(t)||fromSessionStorage(`auth.${f}`)||(null==e?void 0:e[f]),validate:requiredValidator,validateOnBlur:!0,validateOnChange:!0};return React.createElement(FormControl,{key:f},React.createElement(FormLabel,null," ",t.name,": "),o?React.createElement(FormDropdown,Object.assign({},a,{options:o})):React.createElement(FormTextField,Object.assign({},a,{type:"password",panel:"try-it","data-cy":"apiKey-auth-password"})))}if("http"===t.type){if("basic"===t.scheme){const t=getSecurityDetailsOptions(f,"username"),o={field:`auth.${f}.username`,fullWidth:!0,initialValue:fromSessionStorage(`auth.${f}.username`)||(null===(n=null==e?void 0:e[f])||void 0===n?void 0:n.username),initValue:fromSessionStorage(`auth.${f}.username`)||(null===(s=null==e?void 0:e[f])||void 0===s?void 0:s.username),validate:requiredValidator,validateOnBlur:!0,validateOnChange:!0};return React.createElement(Fragment,{key:f},React.createElement(FormControl,null,React.createElement(FormLabel,null," ",l("tryItAuthBasicUsername"),": "),t?React.createElement(FormDropdown,Object.assign({},o,{options:t})):React.createElement(FormTextField,Object.assign({},o,{panel:"try-it"}))),React.createElement(FormControl,null,React.createElement(FormLabel,null," ",l("tryItAuthBasicPassword"),": "),React.createElement(FormTextField,{type:"password","data-cy":"http-auth-password",fullWidth:!0,field:`auth.${f}.password`,initialValue:fromSessionStorage(`auth.${f}.password`)||(null===(u=null==e?void 0:e[f])||void 0===u?void 0:u.password)||"",validateOnBlur:!0,validateOnChange:!0,panel:"try-it"})))}if("bearer"===t.scheme){const t=getSecurityDetailsOptions(f,""),o={field:`auth.${f}`,fullWidth:!0,initialValue:fromSessionStorage(`auth.${f}`)||(null==e?void 0:e[f]),initValue:fromSessionStorage(`auth.${f}`)||(null==e?void 0:e[f]),validate:requiredValidator,validateOnBlur:!0,validateOnChange:!0};return React.createElement(Fragment,{key:f},React.createElement(FormControl,null,React.createElement(FormLabel,null," Bearer Token: "),t?React.createElement(FormDropdown,Object.assign({},o,{options:t})):React.createElement(FormTextField,Object.assign({},o,{type:"password",placeholder:"(without 'Bearer')",panel:"try-it"}))))}}else{if("oauth2"===t.type&&t.flows&&t.flows.clientCredentials)return React.createElement(OAuth2TokenInputComponent,{key:f,flow:t.flows.clientCredentials,server:o,authCorsProxyUrl:a,id:f,form:r,formApi:i,clientId:t.flows.clientCredentials["x-defaultClientId"]||t["x-defaultClientId"],defaultValues:null==e?void 0:e[f]});if("oauth2"===t.type&&t.flows&&t.flows.implicit)return React.createElement(OAuth2Flow,{key:f,authorizationUrl:t.flows.implicit.authorizationUrl,authCorsProxyUrl:a,scopes:Object.keys((null===(c=null===(m=null==t?void 0:t.flows)||void 0===m?void 0:m.implicit)||void 0===c?void 0:c.scopes)||{}),server:o,id:f,form:r,formApi:i,clientId:t.flows.implicit["x-defaultClientId"]||t["x-defaultClientId"],flow:"implicit",defaultValues:null==e?void 0:e[f]});if("oauth2"===t.type&&t.flows&&t.flows.authorizationCode)return React.createElement(OAuth2Flow,{key:f,authorizationUrl:t.flows.authorizationCode.authorizationUrl,tokenUrl:t.flows.authorizationCode.tokenUrl,authCorsProxyUrl:a,scopes:Object.keys((null===(d=t.flows.authorizationCode)||void 0===d?void 0:d.scopes)||{}),server:o,id:f,form:r,formApi:i,clientId:t.flows.authorizationCode["x-defaultClientId"]||t["x-defaultClientId"],flow:"authorizationCode",tokenEndpointAuthMethod:t.flows.authorizationCode["x-tokenEndpointAuthMethod"],usePkce:t.flows.authorizationCode["x-usePkce"],defaultValues:null==e?void 0:e[f]});if("oauth2"===t.type){let t=fromSessionStorage(`auth.${f}.token`)||JSON.stringify(null===(p=null==e?void 0:e[f])||void 0===p?void 0:p.token);return t=t?JSON.parse(t):{},React.createElement(Fragment,{key:f},React.createElement(FormControl,null,React.createElement(FormLabel,null," Access Token Type: "),React.createElement(FormTextField,{fullWidth:!0,field:`auth.${f}.token.token_type`,initialValue:t.token_type||"Bearer",panel:"try-it"})),React.createElement(FormControl,null,React.createElement(FormLabel,null," Access Token: "),React.createElement(FormTextField,{type:"password",fullWidth:!0,field:`auth.${f}.token.access_token`,validate:requiredValidator,initialValue:t.access_token,validateOnBlur:!0,validateOnChange:!0,panel:"try-it"})))}if("openIdConnect"===t.type)return React.createElement(OpenIDConnect,{key:f,server:o,authCorsProxyUrl:a,id:f,form:r,formApi:i,scheme:t,clientId:t["x-defaultClientId"],defaultValues:null==e?void 0:e[f]})}}))),React.createElement("small",null,React.createElement("strong",null,"Note"),": Your credentials will be saved until the end of the browser session"))};
|
|
2
2
|
//# sourceMappingURL=AuthPanel.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var __awaiter=this&&this.__awaiter||function(e,t,o,r){return new(o||(o=Promise))((function(s,n){function a(e){try{l(r.next(e))}catch(e){n(e)}}function i(e){try{l(r.throw(e))}catch(e){n(e)}}function l(e){var t;e.done?s(e.value):(t=e.value,t instanceof o?t:new o((function(e){e(t)}))).then(a,i)}l((r=r.apply(e,t||[])).next())}))},__rest=this&&this.__rest||function(e,t){var o={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(o[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var s=0;for(r=Object.getOwnPropertySymbols(e);s<r.length;s++)t.indexOf(r[s])<0&&Object.prototype.propertyIsEnumerable.call(e,r[s])&&(o[r[s]]=e[r[s]])}return o};import{execute}from"swagger-client/es/execute/index";import React,{useEffect,useState,useRef,useCallback,memo}from"react";import{useMount}from"@redocly/theme";import{
|
|
1
|
+
var __awaiter=this&&this.__awaiter||function(e,t,o,r){return new(o||(o=Promise))((function(s,n){function a(e){try{l(r.next(e))}catch(e){n(e)}}function i(e){try{l(r.throw(e))}catch(e){n(e)}}function l(e){var t;e.done?s(e.value):(t=e.value,t instanceof o?t:new o((function(e){e(t)}))).then(a,i)}l((r=r.apply(e,t||[])).next())}))},__rest=this&&this.__rest||function(e,t){var o={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(o[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var s=0;for(r=Object.getOwnPropertySymbols(e);s<r.length;s++)t.indexOf(r[s])<0&&Object.prototype.propertyIsEnumerable.call(e,r[s])&&(o[r[s]]=e[r[s]])}return o};import{execute}from"swagger-client/es/execute/index";import React,{useEffect,useState,useRef,useCallback,memo}from"react";import{useMount}from"@redocly/theme";import{useAtomValue,useAtom}from"jotai";import{dereferenceDefinitionForTryIt}from"./shallowCopyForTryIt";import{unescapeFormId}from"../../../utils/string";import{StyledCodeHeader}from"../../Panel";import{isFileUploadMime}from"../../common/FileUpload/helper";import{AnalyticsEventType}from"../../../events";import{getDefaultOrStoredVariables,getFileNameFromHeaders,getParameters,makeRequestInterceptor,unescapeQueryParams,updateStorage}from"../utils";import{ResponsePanel}from"../ResponsePanel";import{ConsoleTabs}from"../ConsoleTabs";import{ActionPanel}from"../ActionPanel";import{Request}from"./Request";import{CloseButton,ConsoleBody}from"../styled";import{ConsoleWrapper}from"./ConsoleWrapper";import{usePrevious}from"../../../hooks";import{globalStoreAtom}from"../../../jotai/store";import{getActiveMediaType}from"../../../models";import{operationStore}from"../../../jotai/operation";function normalizeUrlProtocol(e){return e.startsWith("//")?"https:"+e:e}function ConsoleComponent({operation:e,onResponse:t,className:o,rootElement:r,properties:s,mergeExampleBody:n,securityDefaults:a,onClose:i}){let l=useRef();const[c,u]=useAtom(operationStore(e.pointer)),[p,d]=useState(c.activeServer||e.activeServer),[m,v]=useState(0),[y,h]=useState(!1),[f,g]=useState(!1),[b,O]=useState({values:{path:getParameters(e.parameters,"path"),cookie:getParameters(e.parameters,"cookie"),header:getParameters(e.parameters,"header"),query:getParameters(e.parameters,"query")}}),[S,j]=useState(),[C,P]=useState(),[R,I]=useState(),[T,A]=useState(),q=usePrevious(e),{parser:w,options:E}=useAtomValue(globalStoreAtom),_=useCallback(((e,t=e.getState())=>{var{values:o}=t,r=__rest(t,["values"]);l.current=e,setTimeout((()=>{O(Object.assign(Object.assign({},r),{values:Object.assign(Object.assign({},o),{query:unescapeQueryParams(o.query||{})})}))}),0)}),[]),k=useCallback((e=>{var{values:t}=e,o=__rest(e,["values"]);const r=Object.assign(Object.assign({},o),{values:Object.assign(Object.assign({},t),{query:unescapeQueryParams(t.query||{})})});u((e=>Object.assign(Object.assign({},e),{requestValues:JSON.parse(JSON.stringify(t))}))),O(r),updateStorage(r)}),[u]),F=useCallback((e=>{v(e)}),[]),x=useCallback((e=>{d(e),u((t=>Object.assign(Object.assign({},t),{activeServer:e})))}),[u]),V=useCallback((()=>__awaiter(this,void 0,void 0,(function*(){var o,r,s,n,a,i,c,u,d,m,y,f,O,j,C,R,T;const{values:q,invalid:w}=(null===(o=null==l?void 0:l.current)||void 0===o?void 0:o.getState())||b||{};if(null===(r=l.current)||void 0===r||r.submitForm(),w)return g(!0),setTimeout((()=>g(!1)),1e3),void(null===(n=null===(s=E.events)||void 0===s?void 0:s.tryItSent)||void 0===n||n.call(s,{eventType:AnalyticsEventType.TryItSent,resource:"Redocly_OperationTryIt",action:"ValidationFailed",operationId:e.operationId,operationPath:e.path,operationHttpVerb:e.httpVerb,operationSummary:e.description}));const{servers:_,requestBody:k}=e,F=k&&k.content&&(null===(a=getActiveMediaType(k.content))||void 0===a?void 0:a.name)||"";let x=q.body;if(/json/.test(F))try{x=JSON.parse(x)}catch(e){console.error(e)}h(!0);const V=S,B=(e.httpVerb||"").toLowerCase();if(!_)throw console.error("Servers are not specified in your OpenAPI file. You can't use Try It Out console without specifying servers. If you use OpenAPI 2, make sure you configured host and basepath"),new Error("Servers are not specified");const D=_.find((e=>p.url.endsWith(e.url.endsWith("/")?e.url.substring(0,e.url.length-1):e.url))),N=Date.now();let M,U=q.auth;if(q.auth){const e=Object.keys(q.auth)[0],t=unescapeFormId(e);M=Object.assign(Object.assign({},V),{components:Object.assign(Object.assign({},null==V?void 0:V.components),{securitySchemes:Object.assign(Object.assign({},null===(i=null==V?void 0:V.components)||void 0===i?void 0:i.securitySchemes),{[t]:Object.assign(Object.assign({},null===(u=null===(c=null==V?void 0:V.components)||void 0===c?void 0:c.securitySchemes)||void 0===u?void 0:u[t]),{type:"openIdConnect"===(null===(y=null===(m=null===(d=null==V?void 0:V.components)||void 0===d?void 0:d.securitySchemes)||void 0===m?void 0:m[t])||void 0===y?void 0:y.type)?"oauth2":(null===(O=null===(f=null==V?void 0:V.components)||void 0===f?void 0:f.securitySchemes)||void 0===O?void 0:O[t]).type})})})}),U=Object.assign(Object.assign({},U),{[t]:U[e]})}else M=Object.assign({},V);M.servers=_;const H=E.corsProxyUrl;H&&_.length&&(M.servers=_.map((e=>Object.assign(Object.assign({},e),{url:H+normalizeUrlProtocol(e.url)}))),M.paths=Object.assign(Object.assign({},M.paths),{[e.path]:Object.assign(Object.assign({},M.paths[e.path]),{[B]:Object.assign(Object.assign({},M.paths[e.path][B]),{servers:void 0}),servers:void 0})}));const W=(null==k?void 0:k.content)&&(null===(j=getActiveMediaType(k.content))||void 0===j?void 0:j.name)||null;if(W&&x&&isFileUploadMime(W)){const e=Object.values(x);x=e.length>1?e:e[0]}const z={server:H?H+normalizeUrlProtocol(D.url):D.url,serverVariables:getDefaultOrStoredVariables(D),spec:M,pathName:e.path,method:e.httpVerb,parameters:Object.assign(Object.assign(Object.assign(Object.assign({},q.path),q.query),q.header),q.cookie),securities:{authorized:U},requestBody:x,requestContentType:W,responseContentType:(null===(C=q.header)||void 0===C?void 0:C.Accept)||null,requestInterceptor:makeRequestInterceptor(E,e,null==U?void 0:U.Authorization)};try{const o=yield execute(z),r=null==o?void 0:o.data;r instanceof Blob&&(isFileUploadMime(r.type)&&(o.fileInfo={rawData:r,fileName:getFileNameFromHeaders(o.headers)}),o.data=yield r.text()),null==t||t({request:z,response:o}),A(o),I(void 0)}catch(e){e&&e.response&&e.response.data instanceof Blob&&(e.response.data=yield e.response.data.text(),null==t||t({request:z,response:e.response})),A(void 0),I(e)}finally{h(!1),v(1),P(Date.now()-N),null===(T=null===(R=E.events)||void 0===R?void 0:R.tryItSent)||void 0===T||T.call(R,{eventType:AnalyticsEventType.TryItSent,resource:"Redocly_OperationTryIt",action:"Sent",operationId:e.operationId,operationPath:e.path,operationHttpVerb:e.httpVerb,operationSummary:e.description})}}))),[p.url,b,t,e,E,S]);useMount((()=>__awaiter(this,void 0,void 0,(function*(){var t;const o=yield dereferenceDefinitionForTryIt(e,w.definition);j(o),null===(t=l.current)||void 0===t||t.setValues({})})))),useEffect((()=>{q&&q!==e&&(A(void 0),I(void 0),v(0))}),[e,q]);const B=!(!T&&!R);return React.createElement(ConsoleWrapper,{shaking:f,className:o,rootElement:r},React.createElement(StyledCodeHeader,null,React.createElement(ConsoleTabs,{active:m,hasResponse:B,onChange:F}),i&&React.createElement(CloseButton,{onClick:i}," ✕ ")),React.createElement(ConsoleBody,{hidden:0!==m,"data-cy":"console-request-body"},React.createElement(Request,{operation:e,properties:s,mergeExampleBody:n,securityDefaults:a,form:b,resolvedRawSpec:S,server:p,formApi:l.current,setFormApi:_,handleChange:k,handleServerChange:x})),React.createElement(ConsoleBody,{hidden:1!==m,"data-cy":"console-response-body"},React.createElement(ResponsePanel,{response:T,error:R,time:C})),React.createElement(ActionPanel,{hasResponse:B,params:b.values,operation:e,loading:y,execute:V}))}export const Console=memo(ConsoleComponent);
|
|
2
2
|
//# sourceMappingURL=Console.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import React,{memo}from"react";import{
|
|
1
|
+
import React,{memo}from"react";import{useAtomValue}from"jotai";import{ConsoleWrap}from"../styled";import{useDimensions}from"../../../hooks";import{globalOptionsAtom}from"../../../jotai/store";function ConsoleWrapperComponent({shaking:o,className:e,children:t,rootElement:s}){const[r]=useDimensions(s),n=useAtomValue(globalOptionsAtom);return React.createElement(ConsoleWrap,{scrollYOffset:n.scrollYOffset,shaking:o,className:e,"data-cy":"console",fullWidth:null==r?void 0:r.width},t)}export const ConsoleWrapper=memo(ConsoleWrapperComponent);
|
|
2
2
|
//# sourceMappingURL=ConsoleWrapper.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import React,{memo}from"react";import{Form,useField}from"informed";import{
|
|
1
|
+
import React,{memo}from"react";import{Form,useField}from"informed";import{useAtomValue}from"jotai";import{OpenApiTryItSecurityPanel}from"@redocly/theme";import{requiredValidator}from"../utils";import{JsonPointer}from"../../../utils";import{OAuth2}from"../../../services/OAuth2";import{l}from"../../../services";import{Accordion}from"../../Panel";import{ServersDropdown}from"../ServersDropdown";import{TryItPanel}from"../TryItPanel";import{RequestBody}from"../RequestBody";import{OperationParameters}from"../../OperationParameters";import{AuthPanel}from"../AuthPanel";import{globalOptionsAtom}from"../../../jotai/store";import{RenderHook}from"../../RenderHook";function RequestComponent({operation:e,properties:r,mergeExampleBody:t,securityDefaults:o,form:a,resolvedRawSpec:n,server:i,formApi:s,setFormApi:u,handleChange:m,handleServerChange:d}){const c=a.errors||{},p=c.path||c.cookie||c.header||c.query,{hooks:y,authCorsProxyUrl:h}=useAtomValue(globalOptionsAtom),v=n&&JsonPointer.get(n,e.pointer);let f=a.values&&a.values.auth&&Object.keys(a.values.auth)[0];f&&a.values.auth[f]||(f=void 0),!f||void 0===a.values.auth[f].token&&void 0===a.values.auth[f].client_id&&void 0===a.values.auth[f].client_secret||a.values.auth[f].token&&a.values.auth[f].token.access_token||(f=void 0),f&&null!=a.values.auth[f].username&&(a.values.auth[f].username&&a.values.auth[f].password||(f=void 0));const R=e.parameters||[];return!n&&React.createElement(React.Fragment,null,"Loading...")||React.createElement(Form,{onChange:m,getApi:u,style:{flex:1,display:"flex",flexDirection:"column",margin:0}},React.createElement(ServersDropdown,{operation:e,onChange:d}),React.createElement(Accordion,{initialActiveIdx:e.security.length&&f?1:0},e.security.length&&s&&React.createElement(TryItPanel,{header:l("tryItAuth"),"data-cy":"security-trigger",error:!f&&!!c.auth,success:!!f,renderChildrenHidden:!0},OpenApiTryItSecurityPanel||(null==y?void 0:y.ReplaceTryItSecurityPanel)?React.createElement(AuthPanelWrapper,{field:"auth",validate:requiredValidator},(r=>React.createElement(RenderHook,{Hook:OpenApiTryItSecurityPanel||(null==y?void 0:y.ReplaceTryItSecurityPanel),props:{server:i,operation:e,onChange:r,OAuth2:OAuth2}}))):React.createElement(AuthPanel,{formApi:s,form:a,operation:e,activeServer:i.url,authCorsProxyUrl:h,securityDefaults:o}))||null,e.requestBody&&s&&React.createElement(TryItPanel,{header:l("tryItBody"),"data-cy":"body-trigger",error:!!c.body,renderChildrenHidden:!0},React.createElement(RequestBody,{validate:allowBodyErrors,formApi:s,body:e.requestBody,pointer:e.pointer,id:e.id,resolvedBody:null==v?void 0:v.requestBody,properties:r,mergeExampleBody:t}))||null,R.length&&React.createElement(TryItPanel,{header:l("tryItParameters"),"data-cy":"parameters-trigger",error:p,renderChildrenHidden:!0},React.createElement(OperationParameters,{operation:e,values:a.values,errors:a.errors||{}}))||null))}function AuthPanelWrapper(e){const{fieldApi:r,render:t,userProps:o}=useField(Object.assign({},e)),{setValue:a}=r,{children:n}=o;return t(React.createElement(React.Fragment,null,n(a)))}function allowBodyErrors(){}export const Request=memo(RequestComponent);
|
|
2
2
|
//# sourceMappingURL=Request.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var __awaiter=this&&this.__awaiter||function(e,t,o,l){return new(o||(o=Promise))((function(n,r){function a(e){try{c(l.next(e))}catch(e){r(e)}}function i(e){try{c(l.throw(e))}catch(e){r(e)}}function c(e){var t;e.done?n(e.value):(t=e.value,t instanceof o?t:new o((function(e){e(t)}))).then(a,i)}c((l=l.apply(e,t||[])).next())}))};import React,{useEffect,useState}from"react";import{Button}from"@redocly/theme";import{
|
|
1
|
+
var __awaiter=this&&this.__awaiter||function(e,t,o,l){return new(o||(o=Promise))((function(n,r){function a(e){try{c(l.next(e))}catch(e){r(e)}}function i(e){try{c(l.throw(e))}catch(e){r(e)}}function c(e){var t;e.done?n(e.value):(t=e.value,t instanceof o?t:new o((function(e){e(t)}))).then(a,i)}c((l=l.apply(e,t||[])).next())}))};import React,{useEffect,useState}from"react";import{Button}from"@redocly/theme";import{useAtomValue}from"jotai";import{ButtonsWrapper,PkceOptionsWrapper,PkceDetails}from"./styled";import{LinearProgress}from"../../common/LinearProgress";import{FormControl,FormLabel,FormError,FormWrapper}from"../../common/form";import{FormDropdown,FormTextField,TextField}from"../../common/TextField";import{Checkbox}from"../../common/Checkbox";import{OAuth2,deriveCodeChallenge}from"../../../services/OAuth2";import{fromSessionStorage,getSecurityDetailsOptions}from"../../../utils";import{isEmptyObject,randString}from"../../../services/utils";import{getOAuth2TokenEndpointAuthHeader,normalizeUrlProtocol,validateTokenEndpointMethod}from"../utils";import Scope from"../Scope";import{Error}from"./Error";import{globalOptionsAtom}from"../../../jotai/store";function requiredValidator(e){if(!e)return"Field is required"}export const OAuth2Flow=({usePkce:e,form:t,id:o,formApi:l,flow:n,tokenUrl:r,authCorsProxyUrl:a,tokenEndpointAuthMethod:i,server:c,scopes:u,authorizationUrl:d,defaultValues:s,clientId:m})=>{var p,h,f,v;const{oAuth2RedirectURI:g,routingBasePath:E}=useAtomValue(globalOptionsAtom),[k,C]=useState(null),[R,F]=useState(!1),[S,y]=useState(!1),[O,b]=useState(void 0),[_,A]=useState(void 0),[x,W]=useState(void 0),P=(null===(h=null===(p=t.values)||void 0===p?void 0:p.auth)||void 0===h?void 0:h[o])||{},T=(null===(v=null===(f=t.errors)||void 0===f?void 0:f.auth)||void 0===v?void 0:v[o])||{},V=void 0!==O&&_!==x?{label:"sync",onClick:()=>{O&&A(x)}}:void 0;useEffect((()=>{if(e){const e=randString(43);deriveCodeChallenge(e).then((t=>{b(e),A(t),W(t)}))}}),[e]);const w=()=>{l.setValue(`auth.${o}.token`,"")};if(!d)return React.createElement(FormError,null,"No flow info");let z=fromSessionStorage(`auth.${o}.token`)||JSON.stringify(null==s?void 0:s.token);z=z?JSON.parse(z):"";const B=getSecurityDetailsOptions(o,"client_id"),U={field:`auth.${o}.client_id`,fullWidth:!0,initialValue:fromSessionStorage(`auth.${o}.client_id`)||m||(null==s?void 0:s.client_id),initValue:fromSessionStorage(`auth.${o}.client_id`)||m||(null==s?void 0:s.client_id),placeholder:"Your OAuth2 app Client ID",validate:requiredValidator,validateOnBlur:!0,validateOnChange:!0};return React.createElement("div",null,React.createElement(FormWrapper,null,React.createElement(FormControl,null,React.createElement(FormLabel,null," Client ID: "),B?React.createElement(FormDropdown,Object.assign({},U,{options:B})):React.createElement(FormTextField,Object.assign({},U,{"data-cy":"client-id-input",panel:"try-it"}))),"authorizationCode"===n&&React.createElement(React.Fragment,null,(!(null==e?void 0:e.hideClientSecretInput)||!e)&&React.createElement(FormControl,null,React.createElement(FormLabel,null,"Client Secret:"),React.createElement(FormTextField,{type:"password",fullWidth:!0,field:`auth.${o}.client_secret`,initialValue:fromSessionStorage(`auth.${o}.client_secret`)||(null==s?void 0:s.client_secret),validateOnBlur:!0,validateOnChange:!0,panel:"try-it","data-cy":"client-secret-input"})),e&&!e.disableManualConfiguration&&React.createElement(PkceOptionsWrapper,null,React.createElement(Checkbox,{id:"pkce-opitons-toggle",label:"Configure PKCE manually",checked:S,onChange:()=>{y((e=>!e))},"data-cy":"pkce-options-toggle"}),S&&React.createElement(PkceDetails,null,React.createElement(FormControl,null,React.createElement(FormLabel,null,"Code Verifier"),React.createElement(TextField,{fullWidth:!0,value:O,onChange:({target:{value:e}})=>__awaiter(void 0,void 0,void 0,(function*(){const t=yield deriveCodeChallenge(e);b(e),W(t)})),panel:"try-it","data-cy":"code-verifier-input"})),React.createElement(FormControl,null,React.createElement(FormLabel,null,"Code Challenge"),React.createElement(TextField,{fullWidth:!0,value:_,onChange:({target:{value:e}})=>{A(e)},inputActionButton:V,panel:"try-it","data-cy":"code-challenge-input"}))))),React.createElement(FormTextField,{fullWidth:!0,field:`auth.${o}.token`,type:"hidden",initialValue:z,panel:"try-it"}),React.createElement(Scope,{id:o,scopes:u}),P.token&&P.token.access_token?React.createElement(FormControl,null,React.createElement(FormLabel,null," Access Token: "),React.createElement(TextField,{disabled:!0,type:"password",fullWidth:!0,value:P.token.access_token,panel:"try-it"})):null),React.createElement(ButtonsWrapper,null,P.token&&P.token.access_token?React.createElement(Button,{fullWidth:!0,onClick:()=>{w(),C(null)}},"Log out"):R?React.createElement(React.Fragment,null,React.createElement(Button,{fullWidth:!0,onClick:()=>{F(!1),C(null),OAuth2.clearRedirectData(n)}},"Cancel"),React.createElement(LinearProgress,null)):React.createElement(Button,{fullWidth:!0,disabled:!isEmptyObject(T),onClick:()=>{(t=>{if(!t)return;if(l.validate(),!isEmptyObject(T))return;F(!0),C(null);const u=a?a+normalizeUrlProtocol(t):t,d=a&&r?a+normalizeUrlProtocol(r):r,s=l.getValue(`auth.${o}.scopes`),m={authorizationUrl:u.startsWith("http")?u:c+u,clientId:P.client_id,scopes:s,redirectUri:g,routingBasePath:E,successCallback:e=>{l.setValue(`auth.${o}.token`,e),F(!1),C(null)},errorCallback:e=>{F(!1),C((null==e?void 0:e.message)||"Failed to retrieve the access token")}};"implicit"===n&&OAuth2.authorizeImplicit(m),validateTokenEndpointMethod(i)?"authorizationCode"===n&&OAuth2.authorizeAuthorizationCode(Object.assign(Object.assign(Object.assign({},m),{tokenUrl:(null==d?void 0:d.startsWith("http"))?d:c+d,clientSecret:P.client_secret,extraHeaders:getOAuth2TokenEndpointAuthHeader({authMethod:i,clientId:P.client_id,clientSecret:P.client_secret})}),e&&{codeVerifier:O,codeChallenge:_})):console.log(`Unsupported token endpoint auth method: ${i}`)})(d)}},"Authorize")),R||k||!P.token||!P.token.access_token&&React.createElement(Error,{loading:R,error:k,token:P.token}))};
|
|
2
2
|
//# sourceMappingURL=OAuth2Flow.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import React,{memo,useCallback,useEffect}from"react";import{
|
|
1
|
+
import React,{memo,useCallback,useEffect}from"react";import{useAtomValue}from"jotai";import{DropdownOrLabel}from"../../DropdownOrLabel";import{MediaTypesSwitch}from"../../MediaTypeSwitch";import{Dropdown}from"../../common";import{RequestMimeLabel}from"../RequestMimeLabel";import{encodeSample,getStorageExampleKey}from"../utils";import{fromSessionStorage}from"../../../utils";import{Body}from"./Body";import{getActiveMediaType}from"../../../models";import{activeMimeNameAtom}from"../../../jotai/app";import{operationStore}from"../../../jotai/operation";function RequestBodyComponent({body:{content:e},formApi:o,resolvedBody:t,properties:r,mergeExampleBody:a,id:m,validate:i,pointer:n}){const p=useAtomValue(activeMimeNameAtom),{examples:l,name:d}=e&&getActiveMediaType(e,p)||{},s=useCallback((o=>{if(!e||!e.hasSample)return"";if(!(null==l?void 0:l[o]))return"";const t=d&&fromSessionStorage(getStorageExampleKey(m,d,o,l)),a=t?JSON.parse(t):null==l?void 0:l[o];return encodeSample(a,r)}),[d,l,m,e,r]),{activeExampleName:c}=useAtomValue(operationStore(n));useEffect((()=>{if(r&&!a)return void o.setValue("body",JSON.stringify(r||{},null,2));const e=getStorageExampleKey(m,d,c,l);o.setValue("body",fromSessionStorage(e)||s(c||""))}),[l,c,d,o,s,m,r,a]);return React.createElement(React.Fragment,null,React.createElement(MediaTypesSwitch,{content:e,renderDropdown:e=>React.createElement(DropdownOrLabel,Object.assign({},e,{variant:"dark",fullWidth:!0,Label:RequestMimeLabel,Dropdown:Dropdown}))},(a=>React.createElement(Body,{mediaType:a,mediaContent:e,resolvedBody:t,id:m,properties:r,getActiveSample:s,formApi:o,validate:i}))))}export const RequestBody=memo(RequestBodyComponent);
|
|
2
2
|
//# sourceMappingURL=RequestBody.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React,{memo,useEffect}from"react";import styled from"styled-components";import{
|
|
1
|
+
import React,{memo,useEffect}from"react";import styled from"styled-components";import{readAtom}from"../../jotai/nexus";import{isMultipartFileUploadProperty,isRootFileUpload,mimeTypeToAccept}from"../common/FileUpload/helper";import{FormControl,FormLabel}from"../common/form";import{FileUpload}from"../common/FileUpload";import{FormTextField,getInvertedInputStyles}from"../common/TextField";import{DefinitionTypes}from"../../models";import{MediaTypes}from"../../constants";import{useExampleKey}from"../Samples";import{operationStore}from"../../jotai/operation";import{normalizeText}from"../../utils";function RequestBodyFormComponent({mediaType:e,onChange:o,formApi:t}){var l;const n=e.examples||{},{exampleKey:m}=useExampleKey(e.operation,n),a=null===(l=n[m])||void 0===l?void 0:l.rawValue,i=getRequestBodyFormFields(e);useEffect((()=>t&&i.forEach((e=>{var o,l;const n=null==a?void 0:a[e.name],m=null!==(l=null!==(o=e.example)&&void 0!==o?o:null==n?void 0:n.example)&&void 0!==l?l:n,i="object"==typeof m?JSON.stringify(m):m;void 0!==m&&t.setValue("body."+e.name,`${i}`)}))),[m]);const r=e.schema||{};return isRootFileUpload(r,e.name)?React.createElement(FileFormControlWrapper,null,React.createElement(FormControl,null,React.createElement(StyledFileUpload,{fullWidth:!0,id:`body.${e.name}`,name:`body.${e.name}`,accept:mimeTypeToAccept(e.name),schema:r,contentName:e.name,onChange:o}))):r.type===DefinitionTypes.OBJECT||i?React.createElement(FileFormControlWrapper,null,i.map((t=>{const l=t.schema||{contentMediaType:"",type:"",description:""},n=e.name===MediaTypes.MULTIPART&&isMultipartFileUploadProperty(l),m=l.contentMediaType||"",a=n?React.createElement(StyledFileUpload,{fullWidth:!0,id:"body."+t.name,name:"body."+t.name,accept:mimeTypeToAccept(m),multiple:"array"===l.type,schema:l,contentName:t.name,onChange:o}):React.createElement(FormTextField,{fullWidth:!0,id:"body."+t.name,field:"body."+t.name,placeholder:normalizeText(l.description)||t.name,panel:"try-it"});return React.createElement(FormControl,{key:t.name},React.createElement(FormLabel,null,t.name,":"),a)}))):(console.warn(`Invalid schema for request body and mime type: "${e.name}"`,r),null)}export const RequestBodyForm=memo(RequestBodyFormComponent);export function getRequestBodyFormFields(e){var o,t,l,n,m,a;const{activeOneOf:i}=readAtom(operationStore(e.operation.pointer)),r=null!==(t=i[(null===(o=e.schema)||void 0===o?void 0:o.pointer)||""])&&void 0!==t?t:0;return((null===(n=null===(l=e.schema)||void 0===l?void 0:l.oneOf)||void 0===n?void 0:n.length)?(null===(m=e.schema)||void 0===m?void 0:m.oneOf[r].fields)||[]:(null===(a=e.schema)||void 0===a?void 0:a.fields)||[]).filter((e=>!e.schema.readOnly))}const FileFormControlWrapper=styled.div`
|
|
2
2
|
> div {
|
|
3
3
|
margin-top: 10px;
|
|
4
4
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import*as React from"react";import{JsonViewer,CodeBlock,CodeBlockContainer}from"@redocly/theme";import{
|
|
1
|
+
import*as React from"react";import{JsonViewer,CodeBlock,CodeBlockContainer}from"@redocly/theme";import{useAtomValue}from"jotai";import{langFromMime}from"../../utils";import{ResponseHeader}from"./styled";import{SourceCodeWithFile}from"../SourceCodeWithFile";import{globalOptionsAtom}from"../../jotai/store";export function ResponseBody({response:e}){const{jsonSampleExpandLevel:o}=useAtomValue(globalOptionsAtom);return React.createElement(React.Fragment,null,React.createElement(ResponseHeader,null," Body: "),getResponseBody(e,o))}function getResponseBody(e,o){return e.body?React.createElement(JsonViewer,{data:e.body,jsonSampleExpandLevel:o}):e.fileInfo?React.createElement(SourceCodeWithFile,{fileInfo:e.fileInfo}):null!==e.data?e.data?React.createElement(CodeBlock,{lang:langFromMime(e.headers["Content-Type"]||"text/plain"),source:e.data,header:{controls:{copy:{}}}}):React.createElement(CodeBlockContainer,{withControls:!0},React.createElement("i",null,"(no content)")):null}
|
|
2
2
|
//# sourceMappingURL=ResponseBody.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React,{useState}from"react";import styled from"styled-components";import{
|
|
1
|
+
import React,{useState}from"react";import styled from"styled-components";import{useAtomValue}from"jotai";import{CodeBlockContainer}from"@redocly/theme";import{ResponseHeader}from"./styled";import{globalOptionsAtom}from"../../jotai/store";export function ResponseHeadersList({headers:e}){const t=useAtomValue(globalOptionsAtom),[o,a]=useState(!0),{maxResponseHeadersToShowInTryIt:r}=t,l=Object.keys(e),n=!!r&&l.length>r,s=n&&o?[...l].splice(0,r):[...l];return React.createElement(React.Fragment,null,React.createElement(ResponseHeader,null," Headers: "),React.createElement(CodeBlockContainer,{withControls:!0},s.map((t=>React.createElement("div",{key:t},React.createElement(HeaderName,null,t,":"),React.createElement("code",null,e[t])))),n&&React.createElement(StyledShowMoreLabel,{onClick:()=>{a(!o)}},o?"Show more...":"Hide headers")))}const HeaderName=styled.strong`
|
|
2
2
|
text-transform: capitalize;
|
|
3
3
|
display: inline-block;
|
|
4
4
|
padding-right: 5px;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React,{memo,useState}from"react";import styled from"styled-components";import{useMount}from"@redocly/theme";import{
|
|
1
|
+
import React,{memo,useState}from"react";import styled from"styled-components";import{useMount}from"@redocly/theme";import{useAtomValue}from"jotai";import{globalOptionsAtom}from"../../../jotai/store";import{fromSessionStorage,normalizeText,toSessionStorage}from"../../../utils";import{FormControl,FormLabel}from"../../common/form";import{expandDefaultServerVariables,expandVariables,getServerWithVariables,getDefaultOrStoredVariables,updateVariablesStorage}from"../utils";import ServerVariable from"../ServerVariable";import{TryItDropdown}from"../styled";import{createServerSwitchEvent}from"../../../events";function ServersDropdownComponent({operation:e,onChange:r}){const{events:t}=useAtomValue(globalOptionsAtom),{servers:o}=e,a=fromSessionStorage("serverUrl"),n=o.findIndex((e=>e.url===a)),[l,s]=useState(n<0?0:n),[i,m]=useState({});useMount((()=>{const e=getServerWithVariables(o,l);r(e),m(e.variables)}));const v=o.map(((e,r)=>({idx:r,serverUrl:e.url,value:`\n ${expandDefaultServerVariables(expandVariables(e.url,i),e.variables)}\n - ${normalizeText(e.description)||"Default"}\n `}))),u=Object.keys(i);return React.createElement(ServerDropdownWrap,{"data-cy":"console-target-server"},React.createElement(FormLabel,{htmlFor:"server"},"Target server: "),React.createElement(FormControl,null,React.createElement(TryItDropdown,{variant:"dark",value:v[l].value,options:v,fullWidth:!0,onChange:({serverUrl:a=""})=>{var n;const l=o.find((e=>e.url===a)),i=o.findIndex((e=>e.url===a)),v=getDefaultOrStoredVariables(l);r({url:a,variables:v}),toSessionStorage("serverUrl",a),s(i),m(v);const u=createServerSwitchEvent({operation:e,serverUrl:a});null===(n=t.targetServerSwitch)||void 0===n||n.call(t,u)}})),null==u?void 0:u.map((e=>{var t;const a=null===(t=o[l].variables)||void 0===t?void 0:t[e];if(a)return React.createElement(ServerVariable,{key:e,name:e,value:i[e],defaultValue:a.default,onChange:t=>((e,t)=>{const a=o[l],n=t||""===t?t:getDefaultOrStoredVariables(a)[e],s=Object.assign(Object.assign({},i),{[e]:n});m(s),updateVariablesStorage(e,n),r(Object.assign(Object.assign({},a),{variables:s}))})(e,t),variableEnum:a.enum,description:a.description})})))}export const ServersDropdown=memo(ServersDropdownComponent);const ServerDropdownWrap=styled.div`
|
|
2
2
|
margin-bottom: 20px;
|
|
3
3
|
`;
|
|
4
4
|
//# sourceMappingURL=ServersDropdown.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import merge from"deepmerge";import{
|
|
1
|
+
import merge from"deepmerge";import{readAtom}from"../../jotai/nexus";import{MediaTypes}from"../../constants";import{arrayMergeStrategy}from"../../services/utils";import{fromSessionStorage,getParameterValue,setParameterValue,setSecurityDetails,toSessionStorage,unescapeFormId}from"../../utils";import{operationStore}from"../../jotai/operation";export function normalizeUrlProtocol(e){return e.startsWith("//")?"https:"+e:e}export function updateStorage(e){if(e.values.auth)for(const t of Object.keys(e.values.auth)){const r=e.values.auth[t];setSecurityDetails(t,r)}updateParameterStorage(e)}function updateParameterStorage(e){var t;for(const r of["path","query","header","cookie"])if(null===(t=e.values)||void 0===t?void 0:t[r])for(const t of Object.keys(e.values[r]))setParameterValue(r,t,e.values[r][t])}export const getParameters=(e,t)=>e.filter((e=>e.in===t)).reduce(((e,t)=>{const{in:r,name:o}=t;return e[o]=getParameterValue(r||"",o),e}),{});const pathTemplateRegExp=/(?:{)(\w+)(?:})/g;export function getServerWithVariables(e,t=0){const r=e[t],o=getDefaultOrStoredVariables(r);return Object.assign(Object.assign({},r),{variables:o})}export function getInitialServerWithVariables(e){const t=fromSessionStorage("serverUrl"),r=e.find((e=>e.url===t))||e[0],o=getDefaultOrStoredVariables(r);return Object.assign(Object.assign({},r),{variables:o})}export function expandVariables(e,t={}){return e.replace(pathTemplateRegExp,((e,r)=>t[r]||e))}export function expandDefaultServerVariables(e,t={}){return e.replace(pathTemplateRegExp,((e,r)=>t[r]&&t[r].default||e))}export function getDefaultOrStoredVariables(e){if(!(null==e?void 0:e.variables))return{};const t=fromSessionStorage("variables"),r=t&&JSON.parse(t)||{},o={};return Object.entries(e.variables||{}).forEach((([e,t])=>{o[e]=r[e]||t.default||""})),o}export function updateVariablesStorage(e,t){const r=fromSessionStorage("variables"),o=r&&JSON.parse(r)||{};toSessionStorage("variables",JSON.stringify(Object.assign(Object.assign({},o),{[e]:t})))}export function unescapeQueryParams(e){return Object.entries(e).reduce(((e,[t,r])=>(e[unescapeFormId(t)]=r,e)),{})}export function getFileNameFromHeaders(e){const t="filename=";for(const[r,o]of Object.entries(e))if("content-disposition"===r.toLowerCase()){const e=o.split(";").find((e=>e.trim().startsWith(t)));if(e)return e.split(t)[1]}return""}export const makeRequestInterceptor=({requestInterceptor:e,sendXUserAgentInTryIt:t,disableTryItRequestUrlEncoding:r},o,a)=>n=>{var i,s;const{requestValues:u}=readAtom(operationStore(o.pointer));r&&(n=Object.assign(Object.assign({},n),{url:decodeURIComponent(n.url)})),t&&(n.headers["X-User-Agent"]="Redocly Try it API console");const c=(null===(i=null==u?void 0:u.header)||void 0===i?void 0:i.authorization)||(null===(s=null==u?void 0:u.header)||void 0===s?void 0:s.Authorization);return!a&&c&&(n.headers.Authorization=c),e?e(n,o):n};export function requiredValidator(e){if(!e)return"Field is required"}const getCookie=e=>{const t=document.cookie.match("\\b"+e+"=([^;]*)\\b");return t?t[1]:void 0};export function fromCookie(e){if("cookie"===e.in)return getCookie(e.name||"")}export const validateTokenEndpointMethod=e=>{if(!e)return!0;const t=Array.isArray(e)?e:[e];return!(t.length&&!t.includes("none")&&!t.includes("client_secret_basic"))};export const getOAuth2TokenEndpointAuthHeader=({authMethod:e,clientId:t,clientSecret:r})=>"client_secret_basic"===e||Array.isArray(e)&&e.includes("client_secret_basic")?{Authorization:`Basic ${btoa(t+":"+r)}`}:{};export function encodeSample(e,t){if(!e)return"";if(e.mime===MediaTypes.URL_ENCODED)return e.value;const r=e.value,o=t?merge(r,t,{arrayMerge:arrayMergeStrategy}):r;return JSON.stringify(o,null,2)}export const getStorageExampleKey=(e,t="",r,o)=>{let a=e+"_"+t;return r&&o&&Object.keys(o).includes(r)&&(a+="_"+r),a};
|
|
2
2
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{readAtom}from"../jotai/nexus";import{createTrackingEvent}from"./creator";import{AnalyticsEventType}from"./types";import{activeMimeNameAtom}from"../jotai/app";import{operationStore}from"../jotai/operation";const codeSampleCopyEvent=createTrackingEvent(AnalyticsEventType.CodeSampleCopied);export const createCodeSampleCopyEvent=({operation:e,type:o,lang:t="",label:a=""})=>{const{activeExampleName:p}=readAtom(operationStore(e.pointer));return codeSampleCopyEvent({resource:"Redocly_CodeSample",action:"CodeSampleCopied",operationId:e.id,operationPath:e.path,operationHttpVerb:e.httpVerb,operationSummary:e.name,exampleId:p||e.activeExampleName,exampleMimeType:readAtom(activeMimeNameAtom),label:a,lang:t,type:o})};
|
|
2
2
|
//# sourceMappingURL=codeSampleCopy.js.map
|
package/lib-esm/hoc/types.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { LayoutVariant } from '@redocly/theme';
|
|
2
2
|
import type { DropdownOption } from '../components/common';
|
|
3
|
-
import type { OpenAPIDefinitionVersion } from '../
|
|
3
|
+
import type { OpenAPIDefinitionVersion } from '../jotai/store';
|
|
4
4
|
import type { Options } from '../services/Options/types';
|
|
5
5
|
import type { RouterType } from '../types';
|
|
6
6
|
import type { OpenAPIParser } from '../services/OpenAPIParser';
|
package/lib-esm/hoc/withStore.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var __rest=this&&this.__rest||function(e
|
|
1
|
+
var __rest=this&&this.__rest||function(o,e){var t={};for(var l in o)Object.prototype.hasOwnProperty.call(o,l)&&e.indexOf(l)<0&&(t[l]=o[l]);if(null!=o&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(l=Object.getOwnPropertySymbols(o);a<l.length;a++)e.indexOf(l[a])<0&&Object.prototype.propertyIsEnumerable.call(o,l[a])&&(t[l[a]]=o[l[a]])}return t};import React,{useEffect,useCallback}from"react";import{useAtom,useAtomValue}from"jotai";import{useNavigate,useLocation}from"react-router-dom";import{activeVersionIdxAtom,layoutAtom,showRightPanelToggleAtom,collapsedSidebarAtom,versionPathAtom}from"../jotai/app";import{globalStore}from"../jotai/store";import{IS_BROWSER}from"../utils/dom";export function withStore(o){return e=>{var{portalOptions:t}=e,l=__rest(e,["portalOptions"]);const[a,r]=useAtom(layoutAtom),[i,s]=useAtom(showRightPanelToggleAtom),[n,u]=useAtom(collapsedSidebarAtom),{options:c,versions:m}=useAtomValue(globalStore);useEffect((()=>{(null==t?void 0:t.layout)&&r(t.layout)}),[null==t?void 0:t.layout,r]),useEffect((()=>{"boolean"==typeof(null==t?void 0:t.collapsedSidebar)&&u(t.collapsedSidebar)}),[null==t?void 0:t.collapsedSidebar,u]),useEffect((()=>{"boolean"==typeof(null==t?void 0:t.showRightPanelToggle)&&s(t.showRightPanelToggle)}),[null==t?void 0:t.showRightPanelToggle,s]);const[p,d]=useAtom(activeVersionIdxAtom),[f,g]=useAtom(versionPathAtom),h=useNavigate(),v=useLocation(),b=useCallback((({idx:o})=>{if(void 0!==o){const e=m[o].id;if(IS_BROWSER&&e){const{hash:o,pathname:t,search:l}=v;h(`${t}${l}${o}`.replace(f,e))}d(o)}}),[v,h,d,f,m]),{parser:A}=(null==m?void 0:m[p])||{};return useEffect((()=>{(null==A?void 0:A.versionPath)&&g(A.versionPath)}),[null==A?void 0:A.versionPath,g]),A&&m.length?React.createElement(o,Object.assign({},l,{options:c,versions:m,layout:a,showRightPanelToggle:i,activeVersionIdx:p,onChangeActiveVersion:b,collapsedSidebar:n,parser:A})):null}}
|
|
2
2
|
//# sourceMappingURL=withStore.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{useCallback}from"react";import{
|
|
1
|
+
import{useCallback}from"react";import{useSetAtom}from"jotai";import{getActiveMediaType}from"../models";import{operationStore}from"../jotai/operation";export function useActivateExample(e){const i=useSetAtom(operationStore((null==e?void 0:e.operation.pointer)||"no_operation_pointer")),o=e?getActiveMediaType(e):void 0;return useCallback((e=>{var t,a,n;if(o)if(o.examples&&(null===(t=o.schema)||void 0===t?void 0:t.oneOf)&&Object.keys(o.examples).includes(e)){const t=null===(n=null===(a=o.schema)||void 0===a?void 0:a.oneOf)||void 0===n?void 0:n.findIndex((i=>i.title===e));i(-1===t?i=>Object.assign(Object.assign({},i),{activeExampleName:e}):e=>{var i,a,n,s;return Object.assign(Object.assign({},e),{activeOneOf:Object.assign(Object.assign({},e.activeOneOf),{[(null===(i=o.schema)||void 0===i?void 0:i.pointer)||""]:t}),activeExampleName:(null===(s=null===(n=null===(a=o.schema)||void 0===a?void 0:a.oneOf)||void 0===n?void 0:n[t])||void 0===s?void 0:s.title)||e.activeExampleName})})}else i((i=>Object.assign(Object.assign({},i),{activeExampleName:e})))}),[o,i])}
|
|
2
2
|
//# sourceMappingURL=useActivateExample.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{useEffect,useMemo}from"react";import{
|
|
1
|
+
import{useEffect,useMemo}from"react";import{useSetAtom}from"jotai";import{buildContentItems,Pagination}from"../services";import{flatMenuItemsAtom}from"../jotai/app";import{getLink}from"../components/SideMenu/MenuItem";import{isRootItem}from"../components/ContentItems/helpers";export const useContentItems=({options:t,parser:e})=>{const{contentItems:o,flatItems:n}=useMemo((()=>buildContentItems(e,t)),[t,e]),m=useSetAtom(flatMenuItemsAtom),{pagination:s}=t;return useEffect((()=>{m(flattenMenuItems(o,s))}),[o,s,m]),{flatItems:n,contentItems:o}};function flattenMenuItems(t,e,o=[]){return t.forEach((t=>{const n=getLink(t,e);let m=isRootItem(t);switch(e){case Pagination.Item:m=Boolean(n&&["tag","operation","schema"].includes(t.type));break;case Pagination.Section:m=Boolean(n&&["tag","schema"].includes(t.type))}m&&o.push({id:t.id,href:n,name:t.name}),t.items&&flattenMenuItems(t.items,e,o)})),o}
|
|
2
2
|
//# sourceMappingURL=useContentItems.js.map
|
package/lib-esm/index.d.ts
CHANGED
|
@@ -13,4 +13,4 @@ export { JsonPointer } from './utils/JsonPointer';
|
|
|
13
13
|
export { isOperationName } from './utils/openapi';
|
|
14
14
|
export { OpenAPIParser } from './services';
|
|
15
15
|
export { buildContentItems, normalizeOptions } from './services';
|
|
16
|
-
export
|
|
16
|
+
export declare function useOpenapiDocsOptions(): import("./services").Options;
|
package/lib-esm/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export{getOperation}from"./models/operation";export{Console}from"./components/rightPanel/Console";export{RequestSamples}from"./components/RequestSamples";export{PullRight,RedocResponse,RedocSchema,RedocExample,RedocRequestBody}from"./components/pluggable";export{RedoclyOpenAPIDocs,RedoclyOpenAPIDocsStandalone,ThemeProviders,AppProvider,StoreProvider,getMarkdownHeaderId}from"./components/RedoclyOpenAPIDocs";export{JsonPointer}from"./utils/JsonPointer";export{isOperationName}from"./utils/openapi";export{OpenAPIParser}from"./services";export{buildContentItems,normalizeOptions}from"./services";export{
|
|
1
|
+
import{useAtomValue}from"jotai";import{globalOptionsAtom}from"./jotai/store";export{getOperation}from"./models/operation";export{Console}from"./components/rightPanel/Console";export{RequestSamples}from"./components/RequestSamples";export{PullRight,RedocResponse,RedocSchema,RedocExample,RedocRequestBody}from"./components/pluggable";export{RedoclyOpenAPIDocs,RedoclyOpenAPIDocsStandalone,ThemeProviders,AppProvider,StoreProvider,getMarkdownHeaderId}from"./components/RedoclyOpenAPIDocs";export{JsonPointer}from"./utils/JsonPointer";export{isOperationName}from"./utils/openapi";export{OpenAPIParser}from"./services";export{buildContentItems,normalizeOptions}from"./services";export function useOpenapiDocsOptions(){return useAtomValue(globalOptionsAtom)}
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { LayoutVariant } from '@redocly/theme';
|
|
2
|
+
import type { CodeSampleConfig } from '../services';
|
|
3
|
+
import type { MenuLink } from '../types';
|
|
4
|
+
export type AppSessionStore = {
|
|
5
|
+
showRightPanelToggle: boolean;
|
|
6
|
+
collapsedSidebar: boolean;
|
|
7
|
+
activeVersionIdx: number;
|
|
8
|
+
versionPath: string;
|
|
9
|
+
};
|
|
10
|
+
export type AppLocalStore = {
|
|
11
|
+
layout: LayoutVariant;
|
|
12
|
+
activeSampleLanguage: CodeSampleConfig['lang'] | string;
|
|
13
|
+
};
|
|
14
|
+
export type AppStore = {
|
|
15
|
+
isSidebarOpened: boolean;
|
|
16
|
+
activeMimeName: string;
|
|
17
|
+
menuNextLinks: MenuLink[];
|
|
18
|
+
};
|
|
19
|
+
export declare const appStore: import("jotai").PrimitiveAtom<AppStore> & {
|
|
20
|
+
init: AppStore;
|
|
21
|
+
};
|
|
22
|
+
export declare const isSidebarOpenedAtom: import("jotai").WritableAtom<boolean, boolean[], void>;
|
|
23
|
+
export declare const activeMimeNameAtom: import("jotai").WritableAtom<string, string[], void>;
|
|
24
|
+
export declare const flatMenuItemsAtom: import("jotai").WritableAtom<MenuLink[], MenuLink[][], void>;
|
|
25
|
+
/**
|
|
26
|
+
* appLocalStore saved to local storage
|
|
27
|
+
*/
|
|
28
|
+
export declare const appLocalStore: import("jotai").WritableAtom<AppLocalStore, [AppLocalStore | typeof import("jotai/utils").RESET | ((prev: AppLocalStore) => AppLocalStore | typeof import("jotai/utils").RESET)], void>;
|
|
29
|
+
export declare const layoutAtom: import("jotai").WritableAtom<LayoutVariant, LayoutVariant[], void>;
|
|
30
|
+
export declare const activeSampleLanguageAtom: import("jotai").WritableAtom<string, string[], void>;
|
|
31
|
+
/**
|
|
32
|
+
* appSessionStore saved to session storage
|
|
33
|
+
*/
|
|
34
|
+
export declare const appSessionStore: import("jotai").WritableAtom<AppSessionStore, [AppSessionStore | typeof import("jotai/utils").RESET | ((prev: AppSessionStore) => AppSessionStore | typeof import("jotai/utils").RESET)], void>;
|
|
35
|
+
export declare const showRightPanelToggleAtom: import("jotai").WritableAtom<boolean, boolean[], void>;
|
|
36
|
+
export declare const collapsedSidebarAtom: import("jotai").WritableAtom<boolean, boolean[], void>;
|
|
37
|
+
export declare const activeVersionIdxAtom: import("jotai").WritableAtom<number, number[], void>;
|
|
38
|
+
export declare const versionPathAtom: import("jotai").WritableAtom<string, string[], void>;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{atom}from"jotai";import{atomWithStorage,createJSONStorage}from"jotai/utils";import{LayoutVariant}from"@redocly/theme";import{IS_BROWSER}from"../utils/dom";export const appStore=atom({isSidebarOpened:!0,activeMimeName:"",menuNextLinks:[]});export const isSidebarOpenedAtom=atom((e=>e(appStore).isSidebarOpened),((e,t,o)=>{const a=e(appStore);t(appStore,Object.assign(Object.assign({},a),{isSidebarOpened:o}))}));export const activeMimeNameAtom=atom((e=>e(appStore).activeMimeName),((e,t,o)=>{const a=e(appStore);t(appStore,Object.assign(Object.assign({},a),{activeMimeName:o}))}));export const flatMenuItemsAtom=atom((e=>e(appStore).menuNextLinks),((e,t,o)=>{const a=e(appStore);t(appStore,Object.assign(Object.assign({},a),{menuNextLinks:o}))}));export const appLocalStore=atomWithStorage("appLocalStore",{layout:LayoutVariant.THREE_PANEL,activeSampleLanguage:""});export const layoutAtom=atom((e=>e(appLocalStore).layout),((e,t,o=LayoutVariant.STACKED)=>{const a=e(appLocalStore);t(appLocalStore,Object.assign(Object.assign({},a),{layout:o}))}));export const activeSampleLanguageAtom=atom((e=>e(appLocalStore).activeSampleLanguage),((e,t,o)=>{const a=e(appLocalStore);t(appLocalStore,Object.assign(Object.assign({},a),{activeSampleLanguage:o}))}));export const appSessionStore=atomWithStorage("appSessionStore",{showRightPanelToggle:!0,collapsedSidebar:!1,activeVersionIdx:0,versionPath:""},IS_BROWSER?createJSONStorage((()=>sessionStorage)):void 0);export const showRightPanelToggleAtom=atom((e=>e(appSessionStore).showRightPanelToggle),((e,t,o)=>{const a=e(appSessionStore);t(appSessionStore,Object.assign(Object.assign({},a),{showRightPanelToggle:o}))}));export const collapsedSidebarAtom=atom((e=>e(appSessionStore).collapsedSidebar),((e,t,o)=>{const a=e(appSessionStore);t(appSessionStore,Object.assign(Object.assign({},a),{collapsedSidebar:o}))}));export const activeVersionIdxAtom=atom((e=>e(appSessionStore).activeVersionIdx),((e,t,o)=>{const a=e(appSessionStore);t(appSessionStore,Object.assign(Object.assign({},a),{activeVersionIdx:o}))}));export const versionPathAtom=atom((e=>e(appSessionStore).versionPath),((e,t,o)=>{const a=e(appSessionStore);o&&t(appSessionStore,Object.assign(Object.assign({},a),{versionPath:o}))}));
|
|
2
|
+
//# sourceMappingURL=app.js.map
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Server } from '../types/server';
|
|
2
|
+
export type OperationStore = {
|
|
3
|
+
activeExampleName?: string;
|
|
4
|
+
activeOneOf: {
|
|
5
|
+
[pointer: string]: number;
|
|
6
|
+
};
|
|
7
|
+
activeServer?: Server;
|
|
8
|
+
requestValues: {
|
|
9
|
+
[field: string]: any;
|
|
10
|
+
};
|
|
11
|
+
activeResponseTab: string;
|
|
12
|
+
};
|
|
13
|
+
export declare const operationStore: import("jotai/vanilla/utils/atomFamily").AtomFamily<any, import("jotai").PrimitiveAtom<OperationStore> & {
|
|
14
|
+
init: OperationStore;
|
|
15
|
+
}>;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{atom}from"jotai";import{atomFamily}from"jotai/utils";import deepEqual from"fast-deep-equal";export const operationStore=atomFamily((e=>atom({activeExampleName:void 0,activeOneOf:{[e]:0},activeServer:void 0,requestValues:{},activeResponseTab:"200"})),deepEqual);
|
|
2
|
+
//# sourceMappingURL=operation.js.map
|