@redocly/openapi-docs 3.0.0-alpha.59 → 3.0.0-alpha.61

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. package/dist/console.redocly-openapi-docs.min.js +158 -217
  2. package/dist/oauth2-redirect.js +1 -1
  3. package/dist/redocly-openapi-docs.min.js +5876 -4953
  4. package/lib/components/Callbacks/CallbackSummary.js +1 -1
  5. package/lib/components/Download/DownloadButtonWithLabel.js +6 -14
  6. package/lib/components/DropdownOrLabel/DropdownOrLabel.js +3 -3
  7. package/lib/components/Endpoint/Summary.js +1 -1
  8. package/lib/components/Endpoint/styled.js +5 -4
  9. package/lib/components/Fields/Examples.js +1 -1
  10. package/lib/components/Fields/FieldDetails.js +1 -1
  11. package/lib/components/NextSectionButton/NextSectionButton.js +1 -1
  12. package/lib/components/Panel/CodeHeader.js +5 -2
  13. package/lib/components/Panel/CodePanel.js +1 -5
  14. package/lib/components/Parameters/ParametersGroup.js +1 -1
  15. package/lib/components/RedoclyOpenAPIDocs/styled.js +2 -2
  16. package/lib/components/Search/styled.js +3 -1
  17. package/lib/components/SecurityRequirement/RequirementElement.js +1 -1
  18. package/lib/components/SecurityRequirement/SecurityRequirement.js +1 -1
  19. package/lib/components/SideMenu/MenuItem.js +1 -1
  20. package/lib/components/SideMenu/MenuOperationItemContent.js +1 -1
  21. package/lib/components/SourceCodeWithFile/SourceCodeWithFile.js +1 -1
  22. package/lib/components/StickySidebar/StickyResponsiveSidebar.js +2 -2
  23. package/lib/components/Tabs/CollapsingTabs/CollapsingTabList.js +10 -2
  24. package/lib/components/Tabs/Tab.js +8 -12
  25. package/lib/components/common/CheckboxList.js +3 -3
  26. package/lib/components/common/Dropdown/Dropdown.js +3 -3
  27. package/lib/components/common/Dropdown/styled.js +11 -23
  28. package/lib/components/common/Dropdown/types.d.ts +0 -1
  29. package/lib/components/common/Fields/fields-layout.js +3 -3
  30. package/lib/components/common/Fields/fields.d.ts +1 -0
  31. package/lib/components/common/Fields/fields.js +11 -7
  32. package/lib/components/common/form.js +4 -4
  33. package/lib/components/common/headers.js +1 -1
  34. package/lib/components/common/panels.js +1 -1
  35. package/lib/components/icons/LinkIcon.js +1 -1
  36. package/lib/components/pluggable/styled.components.js +1 -0
  37. package/lib/components/rightPanel/ActionPanel.js +1 -1
  38. package/lib/components/rightPanel/CodemirrorInput/styled.js +14 -10
  39. package/lib/components/rightPanel/ConsoleTabs/styled.js +6 -16
  40. package/lib/components/rightPanel/OAuth2Flow/OAuth2Flow.js +1 -1
  41. package/lib/components/rightPanel/ParameterArray.js +1 -1
  42. package/lib/components/rightPanel/ResponsePanel.js +1 -1
  43. package/lib/components/rightPanel/TryItPanel.js +3 -3
  44. package/lib/components/rightPanel/styled.d.ts +0 -1
  45. package/lib/components/rightPanel/styled.js +6 -26
  46. package/lib/components/shared/HttpVerb.d.ts +2 -6
  47. package/lib/components/shared/HttpVerb.js +2 -3
  48. package/lib/components/shared/MimeLabel.js +4 -5
  49. package/lib/components/shared/NoSampleLabel.js +1 -1
  50. package/lib/services/OAuth2.js +1 -1
  51. package/lib/services/code-samples/generator.js +1 -1
  52. package/lib/services/code-samples/httpsnippet/index.js +1 -1
  53. package/lib/services/history/helpers.js +1 -1
  54. package/lib/utils/index.d.ts +1 -0
  55. package/lib/utils/index.js +1 -1
  56. package/lib/utils/queryString.d.ts +9 -0
  57. package/lib/utils/queryString.js +2 -0
  58. package/lib-esm/components/Callbacks/CallbackSummary.js +1 -1
  59. package/lib-esm/components/Download/DownloadButtonWithLabel.js +6 -14
  60. package/lib-esm/components/DropdownOrLabel/DropdownOrLabel.js +1 -1
  61. package/lib-esm/components/Endpoint/Summary.js +1 -1
  62. package/lib-esm/components/Endpoint/styled.js +5 -4
  63. package/lib-esm/components/Fields/Examples.js +1 -1
  64. package/lib-esm/components/Fields/FieldDetails.js +1 -1
  65. package/lib-esm/components/NextSectionButton/NextSectionButton.js +1 -1
  66. package/lib-esm/components/Panel/CodeHeader.js +5 -2
  67. package/lib-esm/components/Panel/CodePanel.js +1 -5
  68. package/lib-esm/components/Parameters/ParametersGroup.js +1 -1
  69. package/lib-esm/components/RedoclyOpenAPIDocs/styled.js +2 -2
  70. package/lib-esm/components/Search/styled.js +3 -1
  71. package/lib-esm/components/SecurityRequirement/RequirementElement.js +1 -1
  72. package/lib-esm/components/SecurityRequirement/SecurityRequirement.js +1 -1
  73. package/lib-esm/components/SideMenu/MenuItem.js +1 -1
  74. package/lib-esm/components/SideMenu/MenuOperationItemContent.js +2 -2
  75. package/lib-esm/components/SourceCodeWithFile/SourceCodeWithFile.js +1 -1
  76. package/lib-esm/components/StickySidebar/StickyResponsiveSidebar.js +3 -3
  77. package/lib-esm/components/Tabs/CollapsingTabs/CollapsingTabList.js +9 -1
  78. package/lib-esm/components/Tabs/Tab.js +7 -11
  79. package/lib-esm/components/common/CheckboxList.js +3 -3
  80. package/lib-esm/components/common/Dropdown/Dropdown.js +2 -2
  81. package/lib-esm/components/common/Dropdown/styled.js +10 -22
  82. package/lib-esm/components/common/Dropdown/types.d.ts +0 -1
  83. package/lib-esm/components/common/Fields/fields-layout.js +2 -2
  84. package/lib-esm/components/common/Fields/fields.d.ts +1 -0
  85. package/lib-esm/components/common/Fields/fields.js +8 -4
  86. package/lib-esm/components/common/form.js +4 -4
  87. package/lib-esm/components/common/headers.js +1 -1
  88. package/lib-esm/components/common/panels.js +1 -1
  89. package/lib-esm/components/icons/LinkIcon.js +1 -1
  90. package/lib-esm/components/pluggable/styled.components.js +1 -0
  91. package/lib-esm/components/rightPanel/ActionPanel.js +1 -1
  92. package/lib-esm/components/rightPanel/CodemirrorInput/styled.js +14 -10
  93. package/lib-esm/components/rightPanel/ConsoleTabs/styled.js +5 -15
  94. package/lib-esm/components/rightPanel/OAuth2Flow/OAuth2Flow.js +1 -1
  95. package/lib-esm/components/rightPanel/ParameterArray.js +1 -1
  96. package/lib-esm/components/rightPanel/ResponsePanel.js +2 -2
  97. package/lib-esm/components/rightPanel/TryItPanel.js +3 -3
  98. package/lib-esm/components/rightPanel/styled.d.ts +0 -1
  99. package/lib-esm/components/rightPanel/styled.js +2 -22
  100. package/lib-esm/components/shared/HttpVerb.d.ts +2 -6
  101. package/lib-esm/components/shared/HttpVerb.js +2 -3
  102. package/lib-esm/components/shared/MimeLabel.js +3 -4
  103. package/lib-esm/components/shared/NoSampleLabel.js +1 -1
  104. package/lib-esm/services/OAuth2.js +1 -1
  105. package/lib-esm/services/code-samples/generator.js +1 -1
  106. package/lib-esm/services/code-samples/httpsnippet/index.js +1 -1
  107. package/lib-esm/services/history/helpers.js +1 -1
  108. package/lib-esm/utils/index.d.ts +1 -0
  109. package/lib-esm/utils/index.js +1 -1
  110. package/lib-esm/utils/queryString.d.ts +9 -0
  111. package/lib-esm/utils/queryString.js +2 -0
  112. package/package.json +2 -3
@@ -5,7 +5,7 @@ import React from"react";import styled from"styled-components";const LinkIconInt
5
5
  color: var(--link-text-color);
6
6
  &:active,
7
7
  &:visited {
8
- color: var(--text-color);
8
+ color: var(--link-visited-text-color);
9
9
  }
10
10
  `;
11
11
  //# sourceMappingURL=LinkIcon.js.map
@@ -1,6 +1,7 @@
1
1
  import styled from"styled-components";import{SamplesMiddlePanel}from"../common/panels";export const SamplesWrap=styled.div`
2
2
  padding: calc(var(--spacing-unit) * 4);
3
3
  border-radius: var(--panel-border-radius);
4
+ border: var(--panel-samples-border);
4
5
  background-color: var(--panel-samples-background-color);
5
6
  `;export const ExamplesWrap=styled(SamplesWrap)`
6
7
  width: 100%;
@@ -1,4 +1,4 @@
1
- import React,{memo}from"react";import styled from"styled-components";import{serializeParameterValue}from"../../utils";import{CodeHeader}from"../Panel";import{Path,PathWrapper,TryItButton}from"../Endpoint";import{HttpVerb}from"../shared";import{expandVariables}from"./utils";function formatPath(e,t,r){const n=t.path||{},a=t.query||{},o=Object.keys(a);let i=expandVariables(e,n);return o.length&&(i+="?"+o.map((e=>{if(!a[e])return"";const t=(e=>r.find((t=>t.name===e&&"query"===t.in)))(e);return t?serializeParameterValue(t,a[e]):`${e}=${encodeURIComponent(a[e])}`})).filter(Boolean).join("&")),i}export const ActionPanelComponent=({loading:e,operation:t,hasResponse:r,execute:n,params:a={}})=>React.createElement(CodeHeader,null,React.createElement(PathWrapper,null,React.createElement(HttpVerb,{type:t.httpVerb},t.httpVerb),React.createElement(Path,{wrap:"true"},formatPath(t.path,a,t.parameters))),React.createElement(SendButton,{"data-cy":"send-button",color:"primary",blinking:e,onClick:()=>!e&&n()},e?"Sending...":r?"Resend":"Send"));const SendButton=styled(TryItButton)`
1
+ import React,{memo}from"react";import styled from"styled-components";import{serializeParameterValue}from"../../utils";import{CodeHeader}from"../Panel";import{Path,PathWrapper,TryItButton}from"../Endpoint";import{HttpVerb}from"../shared";import{expandVariables}from"./utils";function formatPath(e,t,r){const n=t.path||{},a=t.query||{},o=Object.keys(a);let i=expandVariables(e,n);return o.length&&(i+="?"+o.map((e=>{if(!a[e])return"";const t=(e=>r.find((t=>t.name===e&&"query"===t.in)))(e);return t?serializeParameterValue(t,a[e]):`${e}=${encodeURIComponent(a[e])}`})).filter(Boolean).join("&")),i}export const ActionPanelComponent=({loading:e,operation:t,hasResponse:r,execute:n,params:a={}})=>React.createElement(CodeHeader,null,React.createElement(PathWrapper,null,React.createElement(HttpVerb,{color:t.httpVerb},t.httpVerb),React.createElement(Path,{wrap:"true"},formatPath(t.path,a,t.parameters))),React.createElement(SendButton,{"data-cy":"send-button",color:"primary",blinking:e,onClick:()=>!e&&n()},e?"Sending...":r?"Resend":"Send"));const SendButton=styled(TryItButton)`
2
2
  width: var(--panel-try-it-action-button-width);
3
3
  `;export const ActionPanel=memo(ActionPanelComponent);
4
4
  //# sourceMappingURL=ActionPanel.js.map
@@ -1,10 +1,13 @@
1
1
  import{createGlobalStyle}from"styled-components";export const CodeMirrorStyles=createGlobalStyle`
2
2
  .cm-s-material.CodeMirror {
3
- background-color: var(--panel-samples-controls-background-color)!important;
4
- color: var(--text-color-inverse)!important;
5
- font-family: var(--code-font-family);
6
- line-height: 18px;
7
- padding: 10px;
3
+ background-color: var(--bg-overlay) !important;
4
+ color: var(--code-block-text-color) !important;
5
+ font-family: var(--code-block-font-family);
6
+ font-weight: var(--code-block-font-weight);
7
+ font-size: var(--code-block-font-size);
8
+ line-height: var(--code-block-line-height);
9
+ padding: var(--code-block-padding);
10
+ white-space: var(--code-wrap, pre);
8
11
  }
9
12
 
10
13
  .CodeMirror-lint-mark-error {
@@ -12,10 +15,6 @@ import{createGlobalStyle}from"styled-components";export const CodeMirrorStyles=c
12
15
  background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAGCAYAAAD+Bd/7AAAAVUlEQVR42mNgQAL/GRjigPg/EP8FYntkCX4gtoVKgvE/BoabcEVAhj6S5DUgfgFl/wFJ2gPxL6iuT1DF+kD2R5AYA5KRj6CS/FAMYvszIBltz4AFAAD9fz0YtLg13wAAAABJRU5ErkJggg==') !important;
13
16
  }
14
17
 
15
- .cm-s-material.CodeMirror-focused div.CodeMirror-selected {
16
- background: rgba(255, 255, 255, 0.3) !important;
17
- }
18
-
19
18
  .cm-s-material .CodeMirror-code .cm-string.cm-property {
20
19
  color: var(--code-block-tokens-property-string-color);
21
20
  }
@@ -25,12 +24,17 @@ import{createGlobalStyle}from"styled-components";export const CodeMirrorStyles=c
25
24
  }
26
25
 
27
26
  .cm-s-material .CodeMirror-code .cm-atom {
28
- color: var(--text-color-inverse);
27
+ color: var(--text-secondary);
29
28
  }
30
29
 
31
30
  div .cm-s-material .CodeMirror-matchingbracket {
32
31
  outline: 1px solid grey;
33
32
  text-decoration: none;
33
+ color: var(--color-gold-8) !important;
34
+ }
35
+
36
+ div .cm-s-material .CodeMirror-nonmatchingbracket {
37
+ color: var(--color-red-8) !important;
34
38
  }
35
39
 
36
40
  .react-codemirror2 {
@@ -13,34 +13,24 @@ import styled,{css}from"styled-components";export const TabsWrap=styled.div`
13
13
  color: var(--panel-try-it-tabs-text-color);
14
14
  min-width: 80px;
15
15
  min-height: 30px;
16
- border-radius: var(--border-radius);
16
+ border-radius: var(--border-radius-lg);
17
17
  font-size: var(--panel-try-it-tabs-font-size);
18
18
  font-family: var(--panel-try-it-tabs-font-family);
19
19
  font-weight: var(--panel-try-it-tabs-font-weight);
20
20
  padding: 0 10px;
21
- border-bottom: 4px solid var(--panel-try-it-tabs-border-color);
22
-
23
- &:first-child {
24
- border-radius: var(--border-radius) 0 0 var(--border-radius);
25
- }
26
-
27
- &:last-child {
28
- border-radius: 0 var(--border-radius) var(--border-radius) 0;
29
- }
30
21
 
31
22
  &:hover:not(:disabled) {
32
- border-color: var(--panel-try-it-tabs-hover-border-color);
33
23
  background-color: var(--panel-try-it-tabs-hover-background-color);
24
+ color: var(--panel-try-it-tabs-hover-text-color);
34
25
  }
35
26
 
36
- ${({active:r})=>r&&css`
37
- border-color: var(--panel-try-it-tabs-active-border-color);
27
+ ${({active:t})=>t&&css`
38
28
  background-color: var(--panel-try-it-tabs-active-background-color);
29
+ color: var(--panel-try-it-tabs-active-text-color);
39
30
  `||""}
40
31
 
41
- ${({disabled:r})=>r&&css`
32
+ ${({disabled:t})=>t&&css`
42
33
  cursor: default;
43
- border-color: var(--panel-try-it-tabs-disables-border-color)
44
34
  background-color: var(--panel-try-it-tabs-disabled-background-color);
45
35
  color: var(--panel-try-it-tabs-disabled-text-color);
46
36
  `||""}
@@ -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{useRecoilValue}from"recoil";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{globalOptionsSelector}from"../../../recoil/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}=useRecoilValue(globalOptionsSelector),[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,color:"secondary",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}))};
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{useRecoilValue}from"recoil";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{globalOptionsSelector}from"../../../recoil/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}=useRecoilValue(globalOptionsSelector),[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
@@ -14,7 +14,7 @@ import React from"react";import styled from"styled-components";import{FormLabel}
14
14
  span {
15
15
  cursor: pointer;
16
16
  margin-left: auto;
17
- color: var(--text-color-secondary);
17
+ color: var(--text-secondary);
18
18
  &:hover {
19
19
  color: #fff;
20
20
  }
@@ -5,7 +5,7 @@ import React from"react";import styled from"styled-components";import{ResponseBo
5
5
  margin-right: 20px;
6
6
  padding: 2px 0;
7
7
  text-align: center;
8
- color: var(--text-color-inverse);
8
+ color: var(--text-primary);
9
9
  `,ResponseBadge=styled(ResponseBadgeBase)`
10
10
  color: ${({code:e})=>e>=200&&e<300?"var(--response-success-text-color)":e>=300&&e<400?"var(--response-redirect-text-color)":e>400?"var(--response-error-text-color)":"var(--response-info-text-color)"};
11
11
  `,ErrorHeader=styled.header`
@@ -14,5 +14,5 @@ import React from"react";import styled from"styled-components";import{ResponseBo
14
14
  `,ErrorDetails=styled.code`
15
15
  border-left: 3px solid #ff4040;
16
16
  padding-left: 5px;
17
- `;export const ResponsePanel=({error:e,response:t,time:n})=>{const r=t||e&&e.response,s=r&&r.data&&r.data.length||0;let a;return a=s>1e6?(s/1e6).toFixed(2)+" MB":s>1e3?(s/1e3).toFixed(2)+" KB":s+" B",e&&!e.response||!r?React.createElement(React.Fragment,null,React.createElement(ErrorHeader,null," Could not get any response "),React.createElement(ErrorDetails,null,e&&e.message||"Unknown error"),React.createElement("br",null),React.createElement(ErrorHeader,null," Why this might have happened:"),React.createElement("div",null," - CORS is misconfigured on the server"),React.createElement("div",null," - The server couldn't send a response"),React.createElement("div",null," - No internet access"),React.createElement("div",null," - Documentation issue - contact API owner"),React.createElement("div",null," - Misconfigured security definition")):r?React.createElement(React.Fragment,null,React.createElement(ResponseBadges,null,React.createElement(ResponseBadge,{code:r.status},React.createElement("span",null," Status: "),r.status," ",r.statusText),React.createElement(ResponseBadgeBase,null,React.createElement("span",null," Time: "),n,"ms"),React.createElement(ResponseBadgeBase,null,React.createElement("span",null," Size: "),a)),React.createElement("div",null,React.createElement(ResponseHeadersList,{headers:r.headers}),React.createElement(ResponseBody,{response:r}))):React.createElement(React.Fragment,null,"Something went wrong")};
17
+ `;export const ResponsePanel=({error:e,response:t,time:n})=>{const r=t||e&&e.response,a=r&&r.data&&r.data.length||0;let s;return s=a>1e6?(a/1e6).toFixed(2)+" MB":a>1e3?(a/1e3).toFixed(2)+" KB":a+" B",e&&!e.response||!r?React.createElement(React.Fragment,null,React.createElement(ErrorHeader,null," Could not get any response "),React.createElement(ErrorDetails,null,e&&e.message||"Unknown error"),React.createElement("br",null),React.createElement(ErrorHeader,null," Why this might have happened:"),React.createElement("div",null," - CORS is misconfigured on the server"),React.createElement("div",null," - The server couldn't send a response"),React.createElement("div",null," - No internet access"),React.createElement("div",null," - Documentation issue - contact API owner"),React.createElement("div",null," - Misconfigured security definition")):r?React.createElement(React.Fragment,null,React.createElement(ResponseBadges,null,React.createElement(ResponseBadge,{code:r.status},React.createElement("span",null," Status: "),r.status," ",r.statusText),React.createElement(ResponseBadgeBase,null,React.createElement("span",null," Time: "),n,"ms"),React.createElement(ResponseBadgeBase,null,React.createElement("span",null," Size: "),s)),React.createElement("div",null,React.createElement(ResponseHeadersList,{headers:r.headers}),React.createElement(ResponseBody,{response:r}))):React.createElement(React.Fragment,null,"Something went wrong")};
18
18
  //# sourceMappingURL=ResponsePanel.js.map
@@ -1,13 +1,13 @@
1
- var __rest=this&&this.__rest||function(e,r){var t={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&r.indexOf(o)<0&&(t[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(o=Object.getOwnPropertySymbols(e);a<o.length;a++)r.indexOf(o[a])<0&&Object.prototype.propertyIsEnumerable.call(e,o[a])&&(t[o[a]]=e[o[a]])}return t};import*as React from"react";import styled from"styled-components";import{PanelHeaderTitle,PanelHeader,Panel,PanelBody,ShelfIcon}from"@redocly/theme";import{Trigger}from"../Panel";import{CrossIcon,LockIcon}from"../icons";export function TryItPanel(e){var{header:r,error:t,success:o}=e,a=__rest(e,["header","error","success"]);return React.createElement(StyledTryItPanel,Object.assign({className:"panel-try-it-nested"},a,{header:({toggle:e,expanded:n=!1})=>React.createElement(PanelHeader,{onClick:e,expanded:n,"data-cy":a["data-cy"]},React.createElement(Trigger,null,React.createElement(PanelHeaderTitle,null,r),React.createElement(ShelfIcon,{direction:n?"down":"right"})),t&&React.createElement(CrossIcon,{size:"14px",color:"--color-error-500"})||null,o&&React.createElement(LockIcon,{size:"14px",color:"--color-success-500"})||null)}))}const StyledTryItPanel=styled(Panel)`
1
+ var __rest=this&&this.__rest||function(e,r){var t={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&r.indexOf(o)<0&&(t[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(o=Object.getOwnPropertySymbols(e);a<o.length;a++)r.indexOf(o[a])<0&&Object.prototype.propertyIsEnumerable.call(e,o[a])&&(t[o[a]]=e[o[a]])}return t};import*as React from"react";import styled from"styled-components";import{PanelHeaderTitle,PanelHeader,Panel,PanelBody,ShelfIcon}from"@redocly/theme";import{Trigger}from"../Panel";import{CrossIcon,LockIcon}from"../icons";export function TryItPanel(e){var{header:r,error:t,success:o}=e,a=__rest(e,["header","error","success"]);return React.createElement(StyledTryItPanel,Object.assign({className:"panel-try-it-nested"},a,{header:({toggle:e,expanded:n=!1})=>React.createElement(PanelHeader,{onClick:e,expanded:n,"data-cy":a["data-cy"]},React.createElement(Trigger,null,React.createElement(PanelHeaderTitle,null,r),React.createElement(ShelfIcon,{direction:n?"down":"right"})),t&&React.createElement(CrossIcon,{size:"14px",color:"--color-error"})||null,o&&React.createElement(LockIcon,{size:"14px",color:"--color-success"})||null)}))}const StyledTryItPanel=styled(Panel)`
2
2
  ${PanelHeader} {
3
3
  border: 1px solid
4
- ${({error:e})=>e?"var(--color-error-300)":"var(--panel-try-it-nested-heading-border-color)"};
4
+ ${({error:e})=>e?"var(--color-error-border)":"var(--panel-try-it-nested-heading-border-color)"};
5
5
  padding: 10px;
6
6
  }
7
7
 
8
8
  ${PanelBody} {
9
9
  border: 1px solid
10
- ${({error:e})=>e?"var(--color-error-300)":"var(--panel-try-it-nested-body-border-color)"};
10
+ ${({error:e})=>e?"var(--color-error-border)":"var(--panel-try-it-nested-body-border-color)"};
11
11
  border-top: 0;
12
12
  }
13
13
  `;
@@ -8,7 +8,6 @@ export declare const ConsoleWrap: import("styled-components").StyledComponent<"d
8
8
  }, never>;
9
9
  export declare const ConsoleBody: import("styled-components").StyledComponent<"div", any, {}, never>;
10
10
  export declare const CloseButton: import("styled-components").StyledComponent<"span", any, {}, never>;
11
- export declare const invertedInputStyles: import("styled-components").FlattenSimpleInterpolation;
12
11
  export declare const TryItDropdown: import("styled-components").StyledComponent<import("react").NamedExoticComponent<DropdownProps>, any, DropdownProps & {
13
12
  fullWidth?: boolean | undefined;
14
13
  variant?: "dark" | "light" | undefined;
@@ -41,8 +41,7 @@ import styled,{css,keyframes}from"styled-components";import{Dropdown}from"../com
41
41
  margin-bottom: 10px;
42
42
  ${({shaking:o})=>o&&shakeAnimation};
43
43
  > div:last-child {
44
- border-top-left-radius: 0;
45
- border-top-right-radius: 0;
44
+ border-radius: 0 0 var(--panel-border-radius) var(--panel-border-radius);
46
45
  }
47
46
  `;export const ConsoleBody=styled.div`
48
47
  flex: 1;
@@ -56,26 +55,7 @@ import styled,{css,keyframes}from"styled-components";import{Dropdown}from"../com
56
55
  cursor: pointer;
57
56
  font-size: 18px;
58
57
  font-weight: bold;
59
- color: var(--text-color-inverse);
60
- `;export const invertedInputStyles=css`
61
- border: none;
62
- outline: none;
63
- padding: 8px;
64
- border-radius: var(--border-radius);
65
- background-color: var(--panel-try-it-input-background-color);
66
- color: var(--panel-try-it-input-text-color);
67
- font-family: var(--code-font-family);
68
- font-size: var(--font-size-base);
69
- border: var(--panel-try-it-input-border);
70
-
71
- &::placeholder {
72
- opacity: 0.6;
73
- color: var(--text-color-inverse);
74
- }
75
-
76
- &:-webkit-autofill {
77
- background-color: var(--panel-samples-background-color);
78
- }
58
+ color: var(--text-secondary);
79
59
  `;export const TryItDropdown=styled(Dropdown)`
80
60
  .dropdown-select,
81
61
  label {
@@ -1,6 +1,2 @@
1
- export declare const HttpVerb: import("styled-components").StyledComponent<"span", any, {
2
- className: `operation-type ${string}`;
3
- 'data-component-name': string;
4
- } & {
5
- type: string;
6
- }, "className" | "data-component-name">;
1
+ import { Tag } from '@redocly/theme';
2
+ export declare const HttpVerb: import("styled-components").StyledComponent<typeof Tag, any, {}, never>;
@@ -1,5 +1,4 @@
1
- import styled from"styled-components";import{OperationBadge}from"@redocly/theme";export const HttpVerb=styled(OperationBadge)`
2
- display: inline-block;
3
- padding: 0 8px;
1
+ import styled from"styled-components";import{Tag}from"@redocly/theme";export const HttpVerb=styled(Tag)`
2
+ text-transform: uppercase;
4
3
  `;
5
4
  //# sourceMappingURL=HttpVerb.js.map
@@ -1,13 +1,12 @@
1
1
  import styled from"styled-components";export const MimeLabel=styled.div`
2
2
  background-color: var(--panel-samples-dropdown-background-color);
3
- color: var(---panel-samples-dropdown-color);
3
+ color: var(--panel-samples-text-color);
4
4
  font-family: var(--code-font-family);
5
5
  margin-bottom: 0;
6
6
  height: 36px;
7
7
  padding: var(--docs-dropdown-padding);
8
- font-size: 14px;
9
- line-height: 16px;
8
+ font-size: var(--code-font-size);
10
9
  border: var(--panel-samples-dropdown-border);
11
- border-radius: var(--border-radius);
10
+ border-radius: var(--panel-border-radius);
12
11
  `;
13
12
  //# sourceMappingURL=MimeLabel.js.map
@@ -4,7 +4,7 @@ import styled from"styled-components";export const NoSampleLabel=styled.div`
4
4
  `;export const WarnMessage=styled.div`
5
5
  font-size: 12px;
6
6
  padding-bottom: 10px;
7
- color: var(--color-warning-500);
7
+ color: var(--color-warning);
8
8
  font-family: var(--code-font-family);
9
9
  `;
10
10
  //# sourceMappingURL=NoSampleLabel.js.map
@@ -1,2 +1,2 @@
1
- var __awaiter=this&&this.__awaiter||function(e,t,a,r){return new(a||(a=Promise))((function(i,c){function s(e){try{n(r.next(e))}catch(e){c(e)}}function o(e){try{n(r.throw(e))}catch(e){c(e)}}function n(e){var t;e.done?i(e.value):(t=e.value,t instanceof a?t:new a((function(e){e(t)}))).then(s,o)}n((r=r.apply(e,t||[])).next())}))};import qs from"query-string";import{base64UrlEncode,encodeState,sha256}from"./utils";const DEFAULT_OAUTH2_REDIRECT_PAGE="/oauth2-redirect.html";export class OAuth2{static authorizeImplicit({authorizationUrl:e,clientId:t,scopes:a,extraParams:r={},routingBasePath:i,redirectUri:c,successCallback:s,errorCallback:o}){const n=encodeState({date:(new Date).toString()}),l=new URL(e),d="/"===i?"":i,h=`${window.location.origin}${d}/oauth2-redirect.html`;l.searchParams.set("client_id",t),l.searchParams.set("redirect_uri",c||h),l.searchParams.set("response_type","token"),l.searchParams.set("state",n),Array.isArray(a)&&l.searchParams.set("scope",a.join(" "));for(const e in r)l.searchParams.set(e,r[e]);window.redirectOAuth2={flow:"implicit",data:{authorizationUrl:e,clientId:t,scopes:a},state:n,successCallback:e=>{s(e),OAuth2.clearRedirectData("implicit")},errorCallback:e=>{o(e),OAuth2.clearRedirectData("implicit")}},window.open(l.toString())}static authorizeAuthorizationCode({authorizationUrl:e,tokenUrl:t,clientId:a,clientSecret:r,codeVerifier:i,codeChallenge:c,scopes:s,extraParams:o={},extraHeaders:n={},routingBasePath:l,redirectUri:d,successCallback:h,errorCallback:u}){const p=new URL(e),w="/"===l?"":l,_=`${window.location.origin}${w}/oauth2-redirect.html`,m=encodeState({date:(new Date).toString()});p.searchParams.set("client_id",a),p.searchParams.set("redirect_uri",d||_),p.searchParams.set("response_type","code"),p.searchParams.set("state",m),Array.isArray(s)&&p.searchParams.set("scope",s.join(" ")),c&&(p.searchParams.set("code_challenge",c),p.searchParams.set("code_challenge_method","S256"));for(const e in o)p.searchParams.set(e,o[e]);window.redirectOAuth2={flow:"authorizationCode",data:{authorizationUrl:e,clientId:a,scopes:s},state:m,successCallback:({auth_code:e})=>__awaiter(this,void 0,void 0,(function*(){try{const c=yield fetch(t,{method:"POST",headers:Object.assign({"Content-Type":"application/x-www-form-urlencoded;charset=UTF-8"},n),body:qs.stringify(Object.assign(Object.assign(Object.assign({client_id:a,client_secret:r},i&&{code_verifier:i}),{code:e,grant_type:"authorization_code",redirect_uri:d||_}),o))});yield handleResponseCallback(c,h,u)}catch(e){u(e)}OAuth2.clearRedirectData("authorizationCode")})),errorCallback:e=>{u(e),OAuth2.clearRedirectData("authorizationCode")}},window.open(p.toString())}static clearRedirectData(e){window.redirectOAuth2={flow:e,data:{authorizationUrl:"",clientId:"",scopes:[]},state:"",successCallback:()=>{},errorCallback:()=>{}}}static authorizeClientCredentials({tokenUrl:e,clientId:t,clientSecret:a,scopes:r=[],extraParams:i={},extraHeaders:c={},successCallback:s,errorCallback:o}){return __awaiter(this,void 0,void 0,(function*(){try{const n=JSON.parse(JSON.stringify(Object.assign({client_id:t,client_secret:a,grant_type:"client_credentials",scope:Array.isArray(r)&&r.length?r.join(" "):void 0},i))),l=yield fetch(e,{method:"POST",headers:Object.assign({"Content-Type":"application/x-www-form-urlencoded;charset=UTF-8"},c),body:qs.stringify(n)});yield handleResponseCallback(l,s,o)}catch(e){o(e)}}))}}export const oauth2Instance=new OAuth2;function handleResponseCallback(e,t,a){return __awaiter(this,void 0,void 0,(function*(){if(e.ok){const a=yield e.json();t(a)}else a(new Error((e.headers.get("Content-Type")||"").indexOf("json")>-1?JSON.stringify(yield e.json()):yield e.text()))}))}export function deriveCodeChallenge(e){return __awaiter(this,void 0,void 0,(function*(){return base64UrlEncode(yield sha256(e))}))}
1
+ var __awaiter=this&&this.__awaiter||function(e,t,a,r){return new(a||(a=Promise))((function(i,c){function s(e){try{n(r.next(e))}catch(e){c(e)}}function o(e){try{n(r.throw(e))}catch(e){c(e)}}function n(e){var t;e.done?i(e.value):(t=e.value,t instanceof a?t:new a((function(e){e(t)}))).then(s,o)}n((r=r.apply(e,t||[])).next())}))};import{queryString}from"../utils";import{base64UrlEncode,encodeState,sha256}from"./utils";const DEFAULT_OAUTH2_REDIRECT_PAGE="/oauth2-redirect.html";export class OAuth2{static authorizeImplicit({authorizationUrl:e,clientId:t,scopes:a,extraParams:r={},routingBasePath:i,redirectUri:c,successCallback:s,errorCallback:o}){const n=encodeState({date:(new Date).toString()}),l=new URL(e),d="/"===i?"":i,h=`${window.location.origin}${d}/oauth2-redirect.html`;l.searchParams.set("client_id",t),l.searchParams.set("redirect_uri",c||h),l.searchParams.set("response_type","token"),l.searchParams.set("state",n),Array.isArray(a)&&l.searchParams.set("scope",a.join(" "));for(const e in r)l.searchParams.set(e,r[e]);window.redirectOAuth2={flow:"implicit",data:{authorizationUrl:e,clientId:t,scopes:a},state:n,successCallback:e=>{s(e),OAuth2.clearRedirectData("implicit")},errorCallback:e=>{o(e),OAuth2.clearRedirectData("implicit")}},window.open(l.toString())}static authorizeAuthorizationCode({authorizationUrl:e,tokenUrl:t,clientId:a,clientSecret:r,codeVerifier:i,codeChallenge:c,scopes:s,extraParams:o={},extraHeaders:n={},routingBasePath:l,redirectUri:d,successCallback:h,errorCallback:u}){const p=new URL(e),w="/"===l?"":l,y=`${window.location.origin}${w}/oauth2-redirect.html`,_=encodeState({date:(new Date).toString()});p.searchParams.set("client_id",a),p.searchParams.set("redirect_uri",d||y),p.searchParams.set("response_type","code"),p.searchParams.set("state",_),Array.isArray(s)&&p.searchParams.set("scope",s.join(" ")),c&&(p.searchParams.set("code_challenge",c),p.searchParams.set("code_challenge_method","S256"));for(const e in o)p.searchParams.set(e,o[e]);window.redirectOAuth2={flow:"authorizationCode",data:{authorizationUrl:e,clientId:a,scopes:s},state:_,successCallback:({auth_code:e})=>__awaiter(this,void 0,void 0,(function*(){try{const c=yield fetch(t,{method:"POST",headers:Object.assign({"Content-Type":"application/x-www-form-urlencoded;charset=UTF-8"},n),body:queryString.stringify(Object.assign(Object.assign(Object.assign({client_id:a,client_secret:r},i&&{code_verifier:i}),{code:e,grant_type:"authorization_code",redirect_uri:d||y}),o))});yield handleResponseCallback(c,h,u)}catch(e){u(e)}OAuth2.clearRedirectData("authorizationCode")})),errorCallback:e=>{u(e),OAuth2.clearRedirectData("authorizationCode")}},window.open(p.toString())}static clearRedirectData(e){window.redirectOAuth2={flow:e,data:{authorizationUrl:"",clientId:"",scopes:[]},state:"",successCallback:()=>{},errorCallback:()=>{}}}static authorizeClientCredentials({tokenUrl:e,clientId:t,clientSecret:a,scopes:r=[],extraParams:i={},extraHeaders:c={},successCallback:s,errorCallback:o}){return __awaiter(this,void 0,void 0,(function*(){try{const n=JSON.parse(JSON.stringify(Object.assign({client_id:t,client_secret:a,grant_type:"client_credentials",scope:Array.isArray(r)&&r.length?r.join(" "):void 0},i))),l=yield fetch(e,{method:"POST",headers:Object.assign({"Content-Type":"application/x-www-form-urlencoded;charset=UTF-8"},c),body:queryString.stringify(n)});yield handleResponseCallback(l,s,o)}catch(e){o(e)}}))}}export const oauth2Instance=new OAuth2;function handleResponseCallback(e,t,a){return __awaiter(this,void 0,void 0,(function*(){if(e.ok){const a=yield e.json();t(a)}else a(new Error((e.headers.get("Content-Type")||"").indexOf("json")>-1?JSON.stringify(yield e.json()):yield e.text()))}))}export function deriveCodeChallenge(e){return __awaiter(this,void 0,void 0,(function*(){return base64UrlEncode(yield sha256(e))}))}
2
2
  //# sourceMappingURL=OAuth2.js.map
@@ -1,2 +1,2 @@
1
- import qs from"query-string";import*as Sampler from"openapi-sampler";import merge from"deepmerge";import{deleteEmptyArrayItem,isArrayOfObjects,serializeParameterValue,getSecurityDetails,getParameterValue}from"../../utils";import{normalizeMimeType,arrayMergeStrategy}from"../utils";import{MediaTypes}from"../../constants";import{l}from"../labels";import{HTTPSnippet}from"./httpsnippet";import StringUtility from"./httpsnippet/helpers/string-utility";import{getActiveMediaType}from"../../models/mediaContent";function mapOperationToHAR(e,{exampleName:t="",skipOptionalParameters:a=!1,withOAuth2Call:r=!1,spec:i,generatedPayloadSamplesMaxDepth:s=8,pathParams:n={},properties:o={}},{activeServer:l,requestValues:u}){var p,c,d,m;const{securityHeaders:h,securityCookies:y,securityQueries:v,securityOAuth2ExtraCalls:f,basicAuth:g}=getSecurityData(null===(p=e.security)||void 0===p?void 0:p[0],r),O=(null===(c=null==e?void 0:e.requestBody)||void 0===c?void 0:c.content)&&getActiveMediaType(e.requestBody.content),T={skipNonRequired:a,skipReadOnly:!0,maxSampleDepth:s},S={path:null==u?void 0:u.path,cookie:null==u?void 0:u.cookie,header:null==u?void 0:u.header,query:null==u?void 0:u.query,body:null==u?void 0:u.body};let C=!1;const b=e.parameters.filter((e=>"header"===e.in)).filter((e=>!(a&&!e.required))).map((e=>{var t;return{name:e.name,value:(null===(t=S.header)||void 0===t?void 0:t[e.name])||getParameterValue("header",e.name)||serializeParameterValue(e,Sampler.sample(e.schema.rawSchema,T,i))}})).map((e=>((null==O?void 0:O.name)&&"content-type"===e.name.toLowerCase()&&(C=!0,e.value=O.name),e))).concat(h);!C&&(null==O?void 0:O.name)&&b.unshift({name:"Content-Type",value:null==O?void 0:O.name});const E=e.parameters.filter((e=>"cookie"===e.in)).filter((e=>!(a&&!e.required))).map((e=>qs.parse(serializeParameterValue(e,Sampler.sample(e.schema.rawSchema,T,i))))).reduce(((e,t)=>{var a;for(const[r,i]of Object.entries(t))e.push({name:r,value:String((null===(a=S.cookie)||void 0===a?void 0:a[r])||i)});return e}),[]).concat(y),A=e.parameters.filter((e=>"query"===e.in)).filter((e=>!(a&&!e.required))).map((e=>qs.parse(serializeParameterValue(e,Sampler.sample(e.schema.rawSchema,T,i))))).reduce(((e,t)=>{var a,r,i;for(const[s,n]of Object.entries(t))e.push({name:s,value:isArrayOfObjects(null===(a=S.query)||void 0===a?void 0:a[s])&&JSON.stringify(deleteEmptyArrayItem(null===(r=S.query)||void 0===r?void 0:r[s]))||String((null===(i=S.query)||void 0===i?void 0:i[s])||n)});return e}),[]).concat(v),_=`${null===(d=l||e.activeServer)||void 0===d?void 0:d.url.replace(/\/$/,"")}/${e.path.replace(/^\//,"")}`,P=e.parameters.filter((e=>"path"===e.in)).reduce(((e,t)=>{var a;const{in:r,name:i}=t;return e[i]=(null===(a=S.path)||void 0===a?void 0:a[i])||n[i]||getParameterValue(r,i),e}),{}),R=null===(m=null==O?void 0:O.examples)||void 0===m?void 0:m[t],w=(null==O?void 0:O.examples)||{},[D]=Object.values(w),j=S.body||(null==R?void 0:R.value)||(null==D?void 0:D.value)||(null==O?void 0:O.schema)&&Sampler.sample(null==O?void 0:O.schema.rawSchema,T,i),k=null==O?void 0:O.name.toLowerCase();let q="",M=[];switch(normalizeMimeType(k)){case MediaTypes.JSON:q=JSON.stringify(getDataRequest(j,o));break;case MediaTypes.URL_ENCODED:case MediaTypes.MULTIPART:q=qs.stringify(getDataRequest(j,o)),M=objectToHarParams(getDataRequest(j,o));break;default:q=String(j||"")}const H=q?{mimeType:(null==O?void 0:O.name)||MediaTypes.OCTET_STREAM,text:q,params:M}:void 0,N=e.responses.map((e=>e.code));return{method:e.httpVerb,url:_,httpVersion:"HTTP/1.1",cookies:E,headers:b,queryString:A,postData:H,headersSize:-1,bodySize:-1,securityOAuth2ExtraCalls:f,basicAuth:g,pathParameters:P,serverVariables:(null==l?void 0:l.variables)||e.activeServer.variables,allResponseCodes:N}}const defaultOptions={withImports:!0,withComments:!1},langToSnippetConfig={curl:{code:"shell",defaultTarget:"curl",defaultOptions:Object.assign(Object.assign({},defaultOptions),{short:!0})},JavaScript:{code:"javascript",defaultTarget:"fetch",defaultOptions:Object.assign(Object.assign({},defaultOptions),{withImports:!1})},"Node.js":{code:"node",defaultTarget:"fetch",defaultOptions:Object.assign({},defaultOptions)},Python:{code:"python",defaultTarget:"requests",defaultOptions:Object.assign({},defaultOptions)},"Java8+Apache":{code:"java8",defaultTarget:"apachehttp",defaultOptions:Object.assign({},defaultOptions)},Java:{code:"java",defaultTarget:"httpclient",defaultOptions:Object.assign({},defaultOptions)},"C#":{code:"csharp",defaultTarget:"httpclient",defaultOptions:Object.assign({},defaultOptions)},Go:{code:"go",defaultTarget:"http.DefaultClient",defaultOptions:Object.assign({},defaultOptions)},PHP:{code:"php",defaultTarget:"curl",defaultOptions:Object.assign({},defaultOptions)},Ruby:{code:"ruby",defaultTarget:"net::http",defaultOptions:Object.assign({},defaultOptions)},R:{code:"r",defaultTarget:"httr",defaultOptions:Object.assign({},defaultOptions)}};export function getCodeSample({lang:e,operation:t,exampleName:a,pathParams:r,properties:i,options:s={}}){try{const{skipOptionalParameters:n,withOAuth2Call:o,spec:l,generatedPayloadSamplesMaxDepth:u,store:p}=s,c=mapOperationToHAR(t,{exampleName:a,pathParams:r,properties:i,skipOptionalParameters:n,withOAuth2Call:o,spec:l,generatedPayloadSamplesMaxDepth:u},p),d=new HTTPSnippet(c);return langToSnippetConfig[e]?d.convert(langToSnippetConfig[e].code,langToSnippetConfig[e].defaultTarget,Object.assign(Object.assign({},langToSnippetConfig[e].defaultOptions),s)):"Language is not supported."}catch(e){return console.error(e),"Failed to generate code sample."}}function getSecurityData(e,t){var a,r,i,s;const n={securityHeaders:[],securityCookies:[],securityQueries:[],securityOAuth2ExtraCalls:[],basicAuth:void 0};for(const o of(null==e?void 0:e.schemes)||[]){const e=getSecurityDetails(o.id);switch(o.type){case"openIdConnect":null===(a=n.securityHeaders)||void 0===a||a.push({name:"Authorization",value:"Bearer <YOUR_TOKEN_HERE>"});break;case"oauth2":{const a=e.token?`${e.token.token_type||"Bearer"} ${e.token.access_token}`:"Bearer <YOUR_TOKEN_HERE>";o.flows.clientCredentials&&t?n.securityOAuth2ExtraCalls.push(getOAuth2ClientCredsCallHar(o.flows.clientCredentials,o.scopes,e)):o.flows.password&&t&&n.securityOAuth2ExtraCalls.push(getOAuth2PasswordCallHar(o.flows.password,o.scopes,e)),null===(r=n.securityHeaders)||void 0===r||r.push({name:"Authorization",value:a});break}case"apiKey":{const t=e.raw||"YOUR_API_KEY_HERE";"header"===o.in&&(null===(i=n.securityHeaders)||void 0===i||i.push({name:o.name,value:t})),"cookie"===o.in&&n.securityCookies.push({name:o.name,value:t}),"query"===o.in&&n.securityQueries.push({name:o.name,value:t});break}case"http":"basic"===o.scheme?n.basicAuth={username:e.username||`<${StringUtility.toSnakeCase(l("tryItAuthBasicUsername"))}>`,password:e.password||`<${StringUtility.toSnakeCase(l("tryItAuthBasicPassword"))}>`}:null===(s=n.securityHeaders)||void 0===s||s.push({name:"Authorization",value:`${capitalizeFirst(o.scheme||"bearer")} <YOUR_${o.bearerFormat||"TOKEN"}_HERE>`})}}return n}function getOAuth2PasswordCallHar(e,t,a){return{method:"POST",url:e.tokenUrl,httpVersion:"HTTP/1.1",headers:[{name:"Content-Type",value:MediaTypes.URL_ENCODED},{name:"Accept",value:MediaTypes.JSON}],queryString:[],postData:{mimeType:MediaTypes.URL_ENCODED,text:"",params:[{name:"grant_type",value:"password"},{name:"client_id",value:a.client_id||"YOUR_CLIENT_ID"},{name:"client_secret",value:a.client_secret||"YOUR_CLIENT_SECRET"},{name:"username",value:a.username||"<username>"},{name:"password",value:a.password||"<password>"},t.length?{name:"scope",value:t.join(" ")}:void 0].filter(isDefined)},cookies:[],headersSize:-1,bodySize:-1,securityOAuth2ExtraCalls:[]}}function getOAuth2ClientCredsCallHar(e,t,a){return{method:"POST",url:e.tokenUrl,httpVersion:"HTTP/1.1",headers:[{name:"Content-Type",value:MediaTypes.URL_ENCODED},{name:"Accept",value:MediaTypes.JSON}],queryString:[],postData:{mimeType:MediaTypes.URL_ENCODED,text:"",params:[{name:"grant_type",value:"client_credentials"},{name:"client_id",value:a.client_id||"YOUR_CLIENT_ID"},{name:"client_secret",value:a.client_secret||"YOUR_CLIENT_SECRET"},t.length?{name:"scope",value:t.join(" ")}:void 0].filter(isDefined)},cookies:[],headersSize:-1,bodySize:-1,securityOAuth2ExtraCalls:[]}}function getDataRequest(e,t){if(e){if("object"==typeof e)return merge(e,t,{arrayMerge:arrayMergeStrategy});try{return merge(JSON.parse(e),t,{arrayMerge:arrayMergeStrategy})}catch(e){return!1}}return!1}function objectToHarParams(e){const t=[];for(const[a,r]of Object.entries(e))t.push({name:a,value:String(r)});return t}export function isDefined(e){return void 0!==e}export function capitalizeFirst(e){return e.charAt(0).toUpperCase()+e.slice(1)}
1
+ import*as Sampler from"openapi-sampler";import merge from"deepmerge";import{deleteEmptyArrayItem,isArrayOfObjects,serializeParameterValue,getSecurityDetails,getParameterValue,queryString}from"../../utils";import{normalizeMimeType,arrayMergeStrategy}from"../utils";import{MediaTypes}from"../../constants";import{l}from"../labels";import{HTTPSnippet}from"./httpsnippet";import StringUtility from"./httpsnippet/helpers/string-utility";import{getActiveMediaType}from"../../models/mediaContent";function mapOperationToHAR(e,{exampleName:t="",skipOptionalParameters:a=!1,withOAuth2Call:r=!1,spec:i,generatedPayloadSamplesMaxDepth:s=8,pathParams:n={},properties:o={}},{activeServer:l,requestValues:u}){var p,c,d,m;const{securityHeaders:h,securityCookies:y,securityQueries:v,securityOAuth2ExtraCalls:g,basicAuth:f}=getSecurityData(null===(p=e.security)||void 0===p?void 0:p[0],r),O=(null===(c=null==e?void 0:e.requestBody)||void 0===c?void 0:c.content)&&getActiveMediaType(e.requestBody.content),T={skipNonRequired:a,skipReadOnly:!0,maxSampleDepth:s},S={path:null==u?void 0:u.path,cookie:null==u?void 0:u.cookie,header:null==u?void 0:u.header,query:null==u?void 0:u.query,body:null==u?void 0:u.body};let C=!1;const b=e.parameters.filter((e=>"header"===e.in)).filter((e=>!(a&&!e.required))).map((e=>{var t;return{name:e.name,value:(null===(t=S.header)||void 0===t?void 0:t[e.name])||getParameterValue("header",e.name)||serializeParameterValue(e,Sampler.sample(e.schema.rawSchema,T,i))}})).map((e=>((null==O?void 0:O.name)&&"content-type"===e.name.toLowerCase()&&(C=!0,e.value=O.name),e))).concat(h);!C&&(null==O?void 0:O.name)&&b.unshift({name:"Content-Type",value:null==O?void 0:O.name});const E=e.parameters.filter((e=>"cookie"===e.in)).filter((e=>!(a&&!e.required))).map((e=>queryString.parse(serializeParameterValue(e,Sampler.sample(e.schema.rawSchema,T,i))))).reduce(((e,t)=>{var a;for(const[r,i]of Object.entries(t))e.push({name:r,value:String((null===(a=S.cookie)||void 0===a?void 0:a[r])||i)});return e}),[]).concat(y),A=e.parameters.filter((e=>"query"===e.in)).filter((e=>!(a&&!e.required))).map((e=>queryString.parse(serializeParameterValue(e,Sampler.sample(e.schema.rawSchema,T,i))))).reduce(((e,t)=>{var a,r,i;for(const[s,n]of Object.entries(t))e.push({name:s,value:isArrayOfObjects(null===(a=S.query)||void 0===a?void 0:a[s])&&JSON.stringify(deleteEmptyArrayItem(null===(r=S.query)||void 0===r?void 0:r[s]))||String((null===(i=S.query)||void 0===i?void 0:i[s])||n)});return e}),[]).concat(v),_=`${null===(d=l||e.activeServer)||void 0===d?void 0:d.url.replace(/\/$/,"")}/${e.path.replace(/^\//,"")}`,P=e.parameters.filter((e=>"path"===e.in)).reduce(((e,t)=>{var a;const{in:r,name:i}=t;return e[i]=(null===(a=S.path)||void 0===a?void 0:a[i])||n[i]||getParameterValue(r,i),e}),{}),R=null===(m=null==O?void 0:O.examples)||void 0===m?void 0:m[t],w=(null==O?void 0:O.examples)||{},[D]=Object.values(w),j=S.body||(null==R?void 0:R.value)||(null==D?void 0:D.value)||(null==O?void 0:O.schema)&&Sampler.sample(null==O?void 0:O.schema.rawSchema,T,i),k=null==O?void 0:O.name.toLowerCase();let q="",M=[];switch(normalizeMimeType(k)){case MediaTypes.JSON:q=JSON.stringify(getDataRequest(j,o));break;case MediaTypes.URL_ENCODED:case MediaTypes.MULTIPART:q=queryString.stringify(getDataRequest(j,o)),M=objectToHarParams(getDataRequest(j,o));break;default:q=String(j||"")}const H=q?{mimeType:(null==O?void 0:O.name)||MediaTypes.OCTET_STREAM,text:q,params:M}:void 0,N=e.responses.map((e=>e.code));return{method:e.httpVerb,url:_,httpVersion:"HTTP/1.1",cookies:E,headers:b,queryString:A,postData:H,headersSize:-1,bodySize:-1,securityOAuth2ExtraCalls:g,basicAuth:f,pathParameters:P,serverVariables:(null==l?void 0:l.variables)||e.activeServer.variables,allResponseCodes:N}}const defaultOptions={withImports:!0,withComments:!1},langToSnippetConfig={curl:{code:"shell",defaultTarget:"curl",defaultOptions:Object.assign(Object.assign({},defaultOptions),{short:!0})},JavaScript:{code:"javascript",defaultTarget:"fetch",defaultOptions:Object.assign(Object.assign({},defaultOptions),{withImports:!1})},"Node.js":{code:"node",defaultTarget:"fetch",defaultOptions:Object.assign({},defaultOptions)},Python:{code:"python",defaultTarget:"requests",defaultOptions:Object.assign({},defaultOptions)},"Java8+Apache":{code:"java8",defaultTarget:"apachehttp",defaultOptions:Object.assign({},defaultOptions)},Java:{code:"java",defaultTarget:"httpclient",defaultOptions:Object.assign({},defaultOptions)},"C#":{code:"csharp",defaultTarget:"httpclient",defaultOptions:Object.assign({},defaultOptions)},Go:{code:"go",defaultTarget:"http.DefaultClient",defaultOptions:Object.assign({},defaultOptions)},PHP:{code:"php",defaultTarget:"curl",defaultOptions:Object.assign({},defaultOptions)},Ruby:{code:"ruby",defaultTarget:"net::http",defaultOptions:Object.assign({},defaultOptions)},R:{code:"r",defaultTarget:"httr",defaultOptions:Object.assign({},defaultOptions)}};export function getCodeSample({lang:e,operation:t,exampleName:a,pathParams:r,properties:i,options:s={}}){try{const{skipOptionalParameters:n,withOAuth2Call:o,spec:l,generatedPayloadSamplesMaxDepth:u,store:p}=s,c=mapOperationToHAR(t,{exampleName:a,pathParams:r,properties:i,skipOptionalParameters:n,withOAuth2Call:o,spec:l,generatedPayloadSamplesMaxDepth:u},p),d=new HTTPSnippet(c);return langToSnippetConfig[e]?d.convert(langToSnippetConfig[e].code,langToSnippetConfig[e].defaultTarget,Object.assign(Object.assign({},langToSnippetConfig[e].defaultOptions),s)):"Language is not supported."}catch(e){return console.error(e),"Failed to generate code sample."}}function getSecurityData(e,t){var a,r,i,s;const n={securityHeaders:[],securityCookies:[],securityQueries:[],securityOAuth2ExtraCalls:[],basicAuth:void 0};for(const o of(null==e?void 0:e.schemes)||[]){const e=getSecurityDetails(o.id);switch(o.type){case"openIdConnect":null===(a=n.securityHeaders)||void 0===a||a.push({name:"Authorization",value:"Bearer <YOUR_TOKEN_HERE>"});break;case"oauth2":{const a=e.token?`${e.token.token_type||"Bearer"} ${e.token.access_token}`:"Bearer <YOUR_TOKEN_HERE>";o.flows.clientCredentials&&t?n.securityOAuth2ExtraCalls.push(getOAuth2ClientCredsCallHar(o.flows.clientCredentials,o.scopes,e)):o.flows.password&&t&&n.securityOAuth2ExtraCalls.push(getOAuth2PasswordCallHar(o.flows.password,o.scopes,e)),null===(r=n.securityHeaders)||void 0===r||r.push({name:"Authorization",value:a});break}case"apiKey":{const t=e.raw||"YOUR_API_KEY_HERE";"header"===o.in&&(null===(i=n.securityHeaders)||void 0===i||i.push({name:o.name,value:t})),"cookie"===o.in&&n.securityCookies.push({name:o.name,value:t}),"query"===o.in&&n.securityQueries.push({name:o.name,value:t});break}case"http":"basic"===o.scheme?n.basicAuth={username:e.username||`<${StringUtility.toSnakeCase(l("tryItAuthBasicUsername"))}>`,password:e.password||`<${StringUtility.toSnakeCase(l("tryItAuthBasicPassword"))}>`}:null===(s=n.securityHeaders)||void 0===s||s.push({name:"Authorization",value:`${capitalizeFirst(o.scheme||"bearer")} <YOUR_${o.bearerFormat||"TOKEN"}_HERE>`})}}return n}function getOAuth2PasswordCallHar(e,t,a){return{method:"POST",url:e.tokenUrl,httpVersion:"HTTP/1.1",headers:[{name:"Content-Type",value:MediaTypes.URL_ENCODED},{name:"Accept",value:MediaTypes.JSON}],queryString:[],postData:{mimeType:MediaTypes.URL_ENCODED,text:"",params:[{name:"grant_type",value:"password"},{name:"client_id",value:a.client_id||"YOUR_CLIENT_ID"},{name:"client_secret",value:a.client_secret||"YOUR_CLIENT_SECRET"},{name:"username",value:a.username||"<username>"},{name:"password",value:a.password||"<password>"},t.length?{name:"scope",value:t.join(" ")}:void 0].filter(isDefined)},cookies:[],headersSize:-1,bodySize:-1,securityOAuth2ExtraCalls:[]}}function getOAuth2ClientCredsCallHar(e,t,a){return{method:"POST",url:e.tokenUrl,httpVersion:"HTTP/1.1",headers:[{name:"Content-Type",value:MediaTypes.URL_ENCODED},{name:"Accept",value:MediaTypes.JSON}],queryString:[],postData:{mimeType:MediaTypes.URL_ENCODED,text:"",params:[{name:"grant_type",value:"client_credentials"},{name:"client_id",value:a.client_id||"YOUR_CLIENT_ID"},{name:"client_secret",value:a.client_secret||"YOUR_CLIENT_SECRET"},t.length?{name:"scope",value:t.join(" ")}:void 0].filter(isDefined)},cookies:[],headersSize:-1,bodySize:-1,securityOAuth2ExtraCalls:[]}}function getDataRequest(e,t){if(e){if("object"==typeof e)return merge(e,t,{arrayMerge:arrayMergeStrategy});try{return merge(JSON.parse(e),t,{arrayMerge:arrayMergeStrategy})}catch(e){return!1}}return!1}function objectToHarParams(e){const t=[];for(const[a,r]of Object.entries(e))t.push({name:a,value:String(r)});return t}export function isDefined(e){return void 0!==e}export function capitalizeFirst(e){return e.charAt(0).toUpperCase()+e.slice(1)}
2
2
  //# sourceMappingURL=generator.js.map
@@ -1,2 +1,2 @@
1
- import qs from"query-string";import*as url from"url";import{normalizeMimeType,unescapeServerVariables}from"../../utils";import{MediaTypes}from"../../../constants";import targets from"./targets";import reducer from"./helpers/reducer";export class HTTPSnippet{constructor(e){Object.defineProperty(this,"request",{enumerable:!0,configurable:!0,writable:!0,value:void 0});const r=Object.assign({},e);this.request=this.prepare(Object.assign(Object.assign({},r),{httpVersion:r.httpVersion||"HTTP/1.1",queryString:r.queryString||[],headers:r.headers||[],cookies:r.cookies||[],postData:r.postData?Object.assign(Object.assign({},r.postData),{jsonObj:void 0,paramsObj:void 0}):void 0,bodySize:0,headersSize:0,queryObj:{},headersObj:{},cookiesObj:{},allHeaders:{},uriObj:{},fullUrl:"",pathParameters:r.pathParameters||{},serverVariables:r.serverVariables||{}}))}prepare(e){var r;if(e.queryString&&e.queryString.length&&(e.queryObj=e.queryString.reduce(reducer,{})),e.headers&&e.headers.length){const r=/^HTTP\/2/;e.headersObj=e.headers.reduce((function(t,a){let s=a.name;return e.httpVersion.match(r)&&(s=s.toLowerCase()),t[s]=a.value,t}),{})}e.cookies&&e.cookies.length&&(e.cookiesObj=e.cookies.reduceRight((function(e,r){return e[r.name]=r.value,e}),{}));const t=e.cookies.map((function(e){return encodeURIComponent(e.name)+"="+encodeURIComponent(e.value)}));if(t.length&&(e.allHeaders.cookie=t.join("; ")),e.postData)switch(normalizeMimeType(e.postData.mimeType)){case"multipart/mixed":case"multipart/related":case MediaTypes.MULTIPART:case"multipart/alternative":break;case MediaTypes.URL_ENCODED:(null===(r=e.postData)||void 0===r?void 0:r.params)?(e.postData.paramsObj=e.postData.params.reduce(reducer,{}),e.postData.text=qs.stringify(e.postData.paramsObj)):e.postData.text="";break;case"text/json":case"text/x-json":case MediaTypes.JSON:case"application/x-json":if(e.postData.text)try{e.postData.jsonObj=JSON.parse(e.postData.text)}catch(r){e.postData.mimeType="text/plain"}}return e.allHeaders=Object.assign(e.allHeaders,e.headersObj),e.uriObj=url.parse(e.url,!0,!0),e.queryObj=Object.assign(e.queryObj,e.uriObj.query),e.uriObj.query=null,e.uriObj.search=null,e.uriObj.path=e.uriObj.pathname=unescapeServerVariables(e.uriObj.pathname),e.url=unescapeServerVariables(url.format(e.uriObj)),e.uriObj.query=e.queryObj,e.uriObj.search=qs.stringify(e.queryObj),e.uriObj.search&&(e.uriObj.path=e.uriObj.pathname+"?"+e.uriObj.search),e.fullUrl=unescapeServerVariables(url.format(e.uriObj)),e}convert(e,r,t){!t&&r&&(t=r);const a=this._matchTarget(e,r);if(a){const s=a(this.request,t,{target:e,client:r});return 1===s.length?s[0]:s}throw new Error("Can not match target")}_matchTarget(e,r){return!!Object.prototype.hasOwnProperty.call(targets,e)&&("string"==typeof r&&"function"==typeof targets[e][r]?targets[e][r]:targets[e][targets[e].info.default])}}
1
+ import*as url from"url";import{normalizeMimeType,unescapeServerVariables}from"../../utils";import{MediaTypes}from"../../../constants";import targets from"./targets";import reducer from"./helpers/reducer";import{queryString}from"../../../utils";export class HTTPSnippet{constructor(e){Object.defineProperty(this,"request",{enumerable:!0,configurable:!0,writable:!0,value:void 0});const r=Object.assign({},e);this.request=this.prepare(Object.assign(Object.assign({},r),{httpVersion:r.httpVersion||"HTTP/1.1",queryString:r.queryString||[],headers:r.headers||[],cookies:r.cookies||[],postData:r.postData?Object.assign(Object.assign({},r.postData),{jsonObj:void 0,paramsObj:void 0}):void 0,bodySize:0,headersSize:0,queryObj:{},headersObj:{},cookiesObj:{},allHeaders:{},uriObj:{},fullUrl:"",pathParameters:r.pathParameters||{},serverVariables:r.serverVariables||{}}))}prepare(e){var r;if(e.queryString&&e.queryString.length&&(e.queryObj=e.queryString.reduce(reducer,{})),e.headers&&e.headers.length){const r=/^HTTP\/2/;e.headersObj=e.headers.reduce((function(t,a){let s=a.name;return e.httpVersion.match(r)&&(s=s.toLowerCase()),t[s]=a.value,t}),{})}e.cookies&&e.cookies.length&&(e.cookiesObj=e.cookies.reduceRight((function(e,r){return e[r.name]=r.value,e}),{}));const t=e.cookies.map((function(e){return encodeURIComponent(e.name)+"="+encodeURIComponent(e.value)}));if(t.length&&(e.allHeaders.cookie=t.join("; ")),e.postData)switch(normalizeMimeType(e.postData.mimeType)){case"multipart/mixed":case"multipart/related":case MediaTypes.MULTIPART:case"multipart/alternative":break;case MediaTypes.URL_ENCODED:(null===(r=e.postData)||void 0===r?void 0:r.params)?(e.postData.paramsObj=e.postData.params.reduce(reducer,{}),e.postData.text=queryString.stringify(e.postData.paramsObj)):e.postData.text="";break;case"text/json":case"text/x-json":case MediaTypes.JSON:case"application/x-json":if(e.postData.text)try{e.postData.jsonObj=JSON.parse(e.postData.text)}catch(r){e.postData.mimeType="text/plain"}}return e.allHeaders=Object.assign(e.allHeaders,e.headersObj),e.uriObj=url.parse(e.url,!0,!0),e.queryObj=Object.assign(e.queryObj,e.uriObj.query),e.uriObj.query=null,e.uriObj.search=null,e.uriObj.path=e.uriObj.pathname=unescapeServerVariables(e.uriObj.pathname),e.url=unescapeServerVariables(url.format(e.uriObj)),e.uriObj.query=e.queryObj,e.uriObj.search=queryString.stringify(e.queryObj),e.uriObj.search&&(e.uriObj.path=e.uriObj.pathname+"?"+e.uriObj.search),e.fullUrl=unescapeServerVariables(url.format(e.uriObj)),e}convert(e,r,t){!t&&r&&(t=r);const a=this._matchTarget(e,r);if(a){const s=a(this.request,t,{target:e,client:r});return 1===s.length?s[0]:s}throw new Error("Can not match target")}_matchTarget(e,r){return!!Object.prototype.hasOwnProperty.call(targets,e)&&("string"==typeof r&&"function"==typeof targets[e][r]?targets[e][r]:targets[e][targets[e].info.default])}}
2
2
  //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
- import qs from"query-string";import{getActiveMediaType}from"../../models/mediaContent";export function isSameHash(e,o){return e===o||"#"+e===o||e==="#"+o}function getContentTypeName(e){var o,n,t,i,d,s,p,r,l,v,a,u,c;if(!e.in)return"request"===e.deps.type&&(null===(t=null===(n=null===(o=e.deps.operation)||void 0===o?void 0:o.requestBody)||void 0===n?void 0:n.content)||void 0===t?void 0:t.mediaTypes)?(null===(s=null===(d=null===(i=e.deps.operation)||void 0===i?void 0:i.requestBody)||void 0===d?void 0:d.content)||void 0===s?void 0:s.mediaTypes.length)>1?(null===(r=null===(p=e.deps.operation)||void 0===p?void 0:p.requestBody)||void 0===r?void 0:r.content)&&getActiveMediaType(e.deps.operation.requestBody.content).name:void 0:"response"===e.deps.type&&(null===(v=null===(l=e.deps.response)||void 0===l?void 0:l.content)||void 0===v?void 0:v.mediaTypes)&&(null===(u=null===(a=e.deps.response)||void 0===a?void 0:a.content)||void 0===u?void 0:u.mediaTypes.length)>1?(null===(c=e.deps.response)||void 0===c?void 0:c.content)&&getActiveMediaType(e.deps.response.content).name:void 0}export function constructFieldDeepFragment(e){var o,n;if(!e)return"";const t={t:e.deps.type,in:e.in||e.deps.in,c:"response"===e.deps.type?null===(o=e.deps.response)||void 0===o?void 0:o.code:void 0,cb:(null===(n=e.deps.operation)||void 0===n?void 0:n.isCallback)?e.deps.operation.callbackId:void 0,ct:getContentTypeName(e),path:e.fieldFullPath};return qs.stringify(t,{encode:!1,sort:!1})}export function joinWithSeparator(e="",o="",n="/"){return e.endsWith(n)&&(e=e.slice(0,-n.length)),o.startsWith(n)&&(o=o.slice(n.length)),e&&o?e+n+o:e+o}
1
+ import{queryString}from"../../utils";import{getActiveMediaType}from"../../models/mediaContent";export function isSameHash(e,o){return e===o||"#"+e===o||e==="#"+o}function getContentTypeName(e){var o,n,t,i,d,s,p,r,l,v,u,a,c;if(!e.in)return"request"===e.deps.type&&(null===(t=null===(n=null===(o=e.deps.operation)||void 0===o?void 0:o.requestBody)||void 0===n?void 0:n.content)||void 0===t?void 0:t.mediaTypes)?(null===(s=null===(d=null===(i=e.deps.operation)||void 0===i?void 0:i.requestBody)||void 0===d?void 0:d.content)||void 0===s?void 0:s.mediaTypes.length)>1?(null===(r=null===(p=e.deps.operation)||void 0===p?void 0:p.requestBody)||void 0===r?void 0:r.content)&&getActiveMediaType(e.deps.operation.requestBody.content).name:void 0:"response"===e.deps.type&&(null===(v=null===(l=e.deps.response)||void 0===l?void 0:l.content)||void 0===v?void 0:v.mediaTypes)&&(null===(a=null===(u=e.deps.response)||void 0===u?void 0:u.content)||void 0===a?void 0:a.mediaTypes.length)>1?(null===(c=e.deps.response)||void 0===c?void 0:c.content)&&getActiveMediaType(e.deps.response.content).name:void 0}export function constructFieldDeepFragment(e){var o,n;if(!e)return"";const t={t:e.deps.type,in:e.in||e.deps.in,c:"response"===e.deps.type?null===(o=e.deps.response)||void 0===o?void 0:o.code:void 0,cb:(null===(n=e.deps.operation)||void 0===n?void 0:n.isCallback)?e.deps.operation.callbackId:void 0,ct:getContentTypeName(e),path:e.fieldFullPath};return queryString.stringify(t,{encode:!1,sort:!1})}export function joinWithSeparator(e="",o="",n="/"){return e.endsWith(n)&&(e=e.slice(0,-n.length)),o.startsWith(n)&&(o=o.slice(n.length)),e&&o?e+n+o:e+o}
2
2
  //# sourceMappingURL=helpers.js.map
@@ -19,3 +19,4 @@ export * from './typeGuards';
19
19
  export * from './compose';
20
20
  export * from './saveTextBeforeHeading';
21
21
  export * from './path';
22
+ export * from './queryString';
@@ -1,2 +1,2 @@
1
- export*from"./JsonPointer";export*from"./openapi";export*from"./helpers";export*from"./highlight";export*from"./dom";export*from"./debug";export*from"./sort";export*from"./argValuesHelpers";export*from"./media-css";export*from"./theme-helpers";export*from"./debounce";export*from"./security-details";export*from"./session-storage";export*from"./local-storage";export*from"./parameters";export*from"./string";export*from"./test-utils";export*from"./typeGuards";export*from"./compose";export*from"./saveTextBeforeHeading";export*from"./path";
1
+ export*from"./JsonPointer";export*from"./openapi";export*from"./helpers";export*from"./highlight";export*from"./dom";export*from"./debug";export*from"./sort";export*from"./argValuesHelpers";export*from"./media-css";export*from"./theme-helpers";export*from"./debounce";export*from"./security-details";export*from"./session-storage";export*from"./local-storage";export*from"./parameters";export*from"./string";export*from"./test-utils";export*from"./typeGuards";export*from"./compose";export*from"./saveTextBeforeHeading";export*from"./path";export*from"./queryString";
2
2
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,9 @@
1
+ declare class QueryString {
2
+ parse(query: string): Record<string, any>;
3
+ stringify(params: Record<string, any>, options?: {
4
+ encode?: boolean;
5
+ sort?: boolean;
6
+ }): string;
7
+ }
8
+ declare const queryString: QueryString;
9
+ export { queryString };
@@ -0,0 +1,2 @@
1
+ class QueryString{parse(n){const o={};if(!n)return o;const e=n.startsWith("?")?n.substring(1).split("&"):n.split("&");for(const n of e){const[e,t]=n.split("=");if(e&&t){const n=decodeURIComponent(e),s=decodeURIComponent(t);if(n in o)Array.isArray(o[n])?o[n].push(s):o[n]=[o[n],s];else{const e=[",","|"].find((n=>s.includes(n)));o[n]=e?s.split(e):s}}}return o}stringify(n,o={encode:!0,sort:!0}){const e=[];for(const[t,s]of Object.entries(n))if(Object.prototype.hasOwnProperty.call(n,t)){const n=o.encode?encodeURIComponent(t):t;if(Array.isArray(s)){for(const t of s)if(t){const s=o.encode?encodeURIComponent(t):t;e.push(`${n}=${s}`)}}else if(s){const t=o.encode?encodeURIComponent(s):s;e.push(`${n}=${t}`)}}return o.sort&&e.sort(),e.join("&")}}const queryString=new QueryString;export{queryString};
2
+ //# sourceMappingURL=queryString.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@redocly/openapi-docs",
3
- "version": "3.0.0-alpha.59",
3
+ "version": "3.0.0-alpha.61",
4
4
  "description": "Redocly OpenAPI Docs",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib-esm/index.js",
@@ -44,7 +44,6 @@
44
44
  "path-browserify": "^1.0.1",
45
45
  "perfect-scrollbar": "^1.5.5",
46
46
  "prismjs": "^1.22.0",
47
- "query-string": "^6.13.6",
48
47
  "react-codemirror2-react-17": "1.0.0",
49
48
  "react-router-dom": "^6.10.0",
50
49
  "react-tabs": "^3.1.1",
@@ -116,7 +115,7 @@
116
115
  "webpack-cli": "^5.1.4",
117
116
  "webpack-dev-server": "^4.15.1",
118
117
  "workerize-loader": "github:redocly/workerize-loader#webpack-5-dist",
119
- "@redocly/theme": "0.18.6"
118
+ "@redocly/theme": "0.19.9"
120
119
  },
121
120
  "scripts": {
122
121
  "start": "webpack serve --mode=development --hot",