@redocly/openapi-docs 3.4.19 → 3.5.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/redocly-openapi-docs.min.js +1173 -1163
- package/lib/components/OperationItem/OperationItem.js +1 -1
- package/lib/components/OperationItem/_tests_/OperationItem.test.js +1 -1
- package/lib/components/OperationItem/_tests_/__mocks__/mock-intersection-observer.d.ts +15 -0
- package/lib/components/OperationItem/_tests_/__mocks__/mock-intersection-observer.js +2 -0
- package/lib/components/PayloadSamples/PayloadSamples.js +1 -1
- package/lib/components/Replay/utils.js +1 -1
- package/lib/hooks/index.d.ts +1 -0
- package/lib/hooks/index.js +1 -1
- package/lib/hooks/useIsContentVisible.d.ts +8 -0
- package/lib/hooks/useIsContentVisible.js +2 -0
- package/lib/models/mediaType.js +1 -1
- package/lib/models/operation.d.ts +1 -1
- package/lib/models/operation.js +1 -1
- package/lib/services/code-samples/generator.js +1 -1
- package/lib/types/open-api.d.ts +8 -0
- package/lib-esm/components/OperationItem/OperationItem.js +1 -1
- package/lib-esm/components/OperationItem/_tests_/OperationItem.test.js +1 -1
- package/lib-esm/components/OperationItem/_tests_/__mocks__/mock-intersection-observer.d.ts +15 -0
- package/lib-esm/components/OperationItem/_tests_/__mocks__/mock-intersection-observer.js +2 -0
- package/lib-esm/components/PayloadSamples/PayloadSamples.js +1 -1
- package/lib-esm/components/Replay/utils.js +1 -1
- package/lib-esm/hooks/index.d.ts +1 -0
- package/lib-esm/hooks/index.js +1 -1
- package/lib-esm/hooks/useIsContentVisible.d.ts +8 -0
- package/lib-esm/hooks/useIsContentVisible.js +2 -0
- package/lib-esm/models/mediaType.js +1 -1
- package/lib-esm/models/operation.d.ts +1 -1
- package/lib-esm/models/operation.js +1 -1
- package/lib-esm/services/code-samples/generator.js +1 -1
- package/lib-esm/types/open-api.d.ts +8 -0
- package/package.json +5 -5
- package/lib/utils/convertExamplesFormat.d.ts +0 -2
- package/lib/utils/convertExamplesFormat.js +0 -2
- package/lib-esm/utils/convertExamplesFormat.d.ts +0 -2
- package/lib-esm/utils/convertExamplesFormat.js +0 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.OperationItem=void 0;const jsx_runtime_1=require("react/jsx-runtime"),react_1=require("react"),styled_components_1=__importDefault(require("styled-components")),jotai_1=require("jotai"),theme_1=require("@redocly/theme"),common_1=require("../common"),Callbacks_1=require("../Callbacks"),CallbackSamples_1=require("../CallbackSamples"),RequestSamples_1=require("../RequestSamples"),Responses_1=require("../Responses"),ResponseSamples_1=require("../ResponseSamples"),services_1=require("../../services"),app_1=require("../../jotai/app"),store_1=require("../../jotai/store"),operation_1=require("../../models/operation"),RenderHook_1=require("../RenderHook"),OperationItemTitle_1=require("../common/OperationItemTitle"),LinkToField_1=require("../common/LinkToField"),RequestDetails_1=require("../Request/RequestDetails"),Badges_1=require("../common/Badges"),hooks_1=require("../../hooks");function OperationItemComponent({item:{operationDefinition:e,parent:t,href:s}}){var a,
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.OperationItem=void 0;const jsx_runtime_1=require("react/jsx-runtime"),react_1=require("react"),react_router_dom_1=require("react-router-dom"),styled_components_1=__importDefault(require("styled-components")),jotai_1=require("jotai"),theme_1=require("@redocly/theme"),common_1=require("../common"),Callbacks_1=require("../Callbacks"),CallbackSamples_1=require("../CallbackSamples"),RequestSamples_1=require("../RequestSamples"),Responses_1=require("../Responses"),ResponseSamples_1=require("../ResponseSamples"),services_1=require("../../services"),app_1=require("../../jotai/app"),store_1=require("../../jotai/store"),operation_1=require("../../models/operation"),RenderHook_1=require("../RenderHook"),OperationItemTitle_1=require("../common/OperationItemTitle"),LinkToField_1=require("../common/LinkToField"),RequestDetails_1=require("../Request/RequestDetails"),Badges_1=require("../common/Badges"),hooks_1=require("../../hooks"),utils_1=require("../../utils");function OperationItemComponent({item:{operationDefinition:e,parent:t,href:s}}){var a,o;const i=(0,react_router_dom_1.useLocation)(),n=(0,react_1.useMemo)((()=>!theme_1.IS_BROWSER||"undefined"!=typeof window||(0,utils_1.pathIncludesLink)(i,e.operationId)),[i,e.operationId]),{isVisible:r,targetRef:l}=(0,hooks_1.useIsContentVisible)({defaultVisible:n}),_=(0,hooks_1.useTranslate)(),{parser:d,options:p}=(0,jotai_1.useAtomValue)(store_1.globalStoreAtom),m=(0,jotai_1.useAtomValue)(app_1.layoutAtom),[u,c]=(0,react_1.useState)(),{unstable_hooks:x,feedback:j}=p,k=(0,react_1.useMemo)((()=>(0,operation_1.getOperation)(d,e,t,p,s,void 0,r)),[s,r,e,p,t,d]),{name:h,deprecated:b,isWebhook:S,badges:R}=k||{},g=m===theme_1.LayoutVariant.STACKED,f=(null==j?void 0:j.type)||"sentiment",q=!0!==(null==j?void 0:j.hide),[v,O]=(0,react_1.useState)(null),y=(0,react_1.useCallback)((e=>{u!==e&&c(e)}),[u]),C=(0,react_1.useMemo)((()=>q?(0,jsx_runtime_1.jsx)(FeedbackWrapper,{children:(0,jsx_runtime_1.jsx)(theme_1.Feedback,{type:f,settings:j.settings,path:(0,services_1.joinWithSeparator)(p.routingBasePath,k.href)})}):null),[q,f,j.settings,p.routingBasePath,k.href]);return(0,jsx_runtime_1.jsxs)(OperationRow,{layout:m,ref:l,children:[(0,jsx_runtime_1.jsx)(OperationSubRowStyled,{layout:m,children:(0,jsx_runtime_1.jsxs)(common_1.SamplesMiddlePanel,{isStacked:g,children:[(0,jsx_runtime_1.jsx)(RenderHook_1.RenderHook,{Hook:theme_1.BeforeOpenApiOperation||(null==x?void 0:x.BeforeOperation),props:{operation:k}}),(0,jsx_runtime_1.jsxs)(OperationItemTitle_1.Heading,{"data-testid":"operation-item-header",children:[(0,jsx_runtime_1.jsx)(common_1.ShareLink,{to:s,"aria-label":`link to ${h}`}),(0,jsx_runtime_1.jsx)(common_1.CustomBadges,{badges:R,children:h}),b&&(0,jsx_runtime_1.jsx)(Badges_1.StyledBadge,{deprecated:!0,children:_("openapi.badges.deprecated","Deprecated")}),S&&(0,jsx_runtime_1.jsx)(Badges_1.StyledBadge,{children:_("openapi.badges.webhook","Webhook")})]})]})}),(0,jsx_runtime_1.jsxs)(OperationSubRowStyled,{layout:m,children:[(0,jsx_runtime_1.jsx)(common_1.SamplesMiddlePanel,{isStacked:g,children:(0,jsx_runtime_1.jsx)(RequestDetails_1.RequestDetails,{operation:k,translate:_})}),r&&(0,jsx_runtime_1.jsx)(OperationSamplesPanel,{isStacked:g,"data-testid":"samples-block",className:"panel-container-request-samples",children:(0,jsx_runtime_1.jsx)(RequestSamples_1.RequestSamples,{operation:k})})]}),(0,jsx_runtime_1.jsxs)(OperationSubRowStyled,{layout:m,children:[(0,jsx_runtime_1.jsx)(common_1.SamplesMiddlePanel,{isStacked:g,children:(null===(a=k.responses)||void 0===a?void 0:a.length)?(0,jsx_runtime_1.jsx)(Responses_1.OperationResponseList,{responses:k.responses,operationId:k.id,operationPointer:k.pointer,callbackId:k.callbackId,activeResponseTab:u,onTabChange:y}):null}),r&&(0,jsx_runtime_1.jsx)(OperationSamplesPanel,{isStacked:g,"data-testid":"samples-block",className:"panel-container-response-samples",children:(0,jsx_runtime_1.jsx)(ResponseSamples_1.ResponseSamples,{operation:k,activeResponseTab:u,onTabChange:y})})]}),(0,jsx_runtime_1.jsxs)(OperationSubRowStyled,{layout:m,children:[(0,jsx_runtime_1.jsxs)(common_1.SamplesMiddlePanel,{isStacked:g,children:[(null===(o=k.callbacks)||void 0===o?void 0:o.length)?(0,jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment,{children:[(0,jsx_runtime_1.jsxs)(OperationItemTitle_1.Title,{children:[(0,jsx_runtime_1.jsx)(LinkToField_1.LinkToField,{to:(0,services_1.makeDeepLink)(k.id,"callbacks")}),_("openapi.callbacks","Callbacks")]}),(0,jsx_runtime_1.jsx)(Callbacks_1.CallbacksList,{callbacks:k.callbacks,onExpand:O,selectedCallback:v})]}):null,(0,jsx_runtime_1.jsx)(RenderHook_1.RenderHook,{Hook:theme_1.AfterOpenApiOperation||(null==x?void 0:x.AfterOperation),props:{operation:k}})]}),v?(0,jsx_runtime_1.jsx)(OperationSamplesPanel,{isStacked:g,"data-testid":"samples-block",children:(0,jsx_runtime_1.jsx)(CallbackSamples_1.CallbackSamples,{callback:v,translate:_})}):null]}),(0,jsx_runtime_1.jsx)(OperationSubRowStyled,{layout:m,children:(0,jsx_runtime_1.jsx)(common_1.SamplesMiddlePanel,{isStacked:g,fullWidth:!0,children:C})})]})}exports.OperationItem=(0,react_1.memo)(OperationItemComponent);const OperationSamplesPanel=(0,styled_components_1.default)(common_1.SamplesPanel)`
|
|
2
2
|
margin-left: auto;
|
|
3
3
|
--code-block-padding: var(--spacing-xs) 0 var(--spacing-xs) 20px;
|
|
4
4
|
`,FeedbackWrapper=styled_components_1.default.div`
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const jsx_runtime_1=require("react/jsx-runtime"),react_1=require("@testing-library/react"),react_router_dom_1=require("react-router-dom"),OperationItem_1=require("../OperationItem"),services_1=require("../../../services"),petstore_json_1=__importDefault(require("./fixtures/petstore.json")),operationDefinition_json_1=__importDefault(require("./fixtures/operationDefinition.json")),app_1=require("../../../jotai/app"),store_1=require("../../../jotai/store");jest.mock("jotai",(()=>Object.assign(Object.assign({},jest.requireActual("jotai")),{useAtomValue:jest.fn((e=>e===store_1.globalStoreAtom?{parser:{definition:petstore_json_1.default},options:(0,services_1.normalizeOptions)({codeSamples:{languages:[{lang:"curl",label:"curl"}]}})}:e===app_1.environmentAtom?[{},""]:{})),useAtom:jest.fn((e=>e===app_1.environmentAtom?[[{server:{}}],jest.fn()]:[{activeOneOf:{"/paths/~1pet/post":0},requestValues:{},request:{expandedFields:{}},response:{expandedFields:{}},activeLanguage:"curl"},jest.fn()]))}))),describe("OperationItem",(()=>{it("should render badges with correct position",(()=>{const{getByTestId:e}=(0,react_1.render)((0,jsx_runtime_1.jsx)(OperationItem_1.OperationItem,{item:{operationDefinition:operationDefinition_json_1.default,parent:void 0,href:"test"}}),{wrapper:react_router_dom_1.BrowserRouter}),t=e("operation-item-header").childNodes;expect(t[1].textContent).toBe("Alpha"),expect(t[3].textContent).toBe("Beta"),expect(t[4].textContent).toBe("Gamma")}))}));
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const jsx_runtime_1=require("react/jsx-runtime"),react_1=require("@testing-library/react"),react_router_dom_1=require("react-router-dom"),OperationItem_1=require("../OperationItem"),services_1=require("../../../services"),petstore_json_1=__importDefault(require("./fixtures/petstore.json")),operationDefinition_json_1=__importDefault(require("./fixtures/operationDefinition.json")),app_1=require("../../../jotai/app"),store_1=require("../../../jotai/store"),mock_intersection_observer_1=require("./__mocks__/mock-intersection-observer");jest.mock("jotai",(()=>Object.assign(Object.assign({},jest.requireActual("jotai")),{useAtomValue:jest.fn((e=>e===store_1.globalStoreAtom?{parser:{definition:petstore_json_1.default},options:(0,services_1.normalizeOptions)({codeSamples:{languages:[{lang:"curl",label:"curl"}]}})}:e===app_1.environmentAtom?[{},""]:{})),useAtom:jest.fn((e=>e===app_1.environmentAtom?[[{server:{}}],jest.fn()]:[{activeOneOf:{"/paths/~1pet/post":0},requestValues:{},request:{expandedFields:{}},response:{expandedFields:{}},activeLanguage:"curl"},jest.fn()]))}))),describe("OperationItem",(()=>{beforeAll((()=>{window.IntersectionObserver=mock_intersection_observer_1.MockIntersectionObserver})),it("should render badges with correct position",(()=>{const{getByTestId:e}=(0,react_1.render)((0,jsx_runtime_1.jsx)(OperationItem_1.OperationItem,{item:{operationDefinition:operationDefinition_json_1.default,parent:void 0,href:"test"}}),{wrapper:react_router_dom_1.BrowserRouter}),t=e("operation-item-header").childNodes;expect(t[1].textContent).toBe("Alpha"),expect(t[3].textContent).toBe("Beta"),expect(t[4].textContent).toBe("Gamma")}))}));
|
|
2
2
|
//# sourceMappingURL=OperationItem.test.js.map
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare class MockIntersectionObserver {
|
|
2
|
+
readonly root: Element | Document | null;
|
|
3
|
+
readonly rootMargin: string;
|
|
4
|
+
readonly thresholds: ReadonlyArray<number>;
|
|
5
|
+
private viewPort;
|
|
6
|
+
private entries;
|
|
7
|
+
private readonly callback;
|
|
8
|
+
constructor(callback: IntersectionObserverCallback, options?: IntersectionObserverInit);
|
|
9
|
+
private intersect;
|
|
10
|
+
isInViewPort(target: HTMLElement): boolean;
|
|
11
|
+
observe(target: HTMLElement): void;
|
|
12
|
+
unobserve(target: HTMLElement): void;
|
|
13
|
+
disconnect(): void;
|
|
14
|
+
takeRecords(): any[];
|
|
15
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.MockIntersectionObserver=void 0;class MockIntersectionObserver{constructor(e,t){Object.defineProperty(this,"root",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"rootMargin",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"thresholds",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"viewPort",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"entries",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"callback",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"intersect",{enumerable:!0,configurable:!0,writable:!0,value:()=>{this.entries.map((e=>{e.isIntersecting=this.isInViewPort(e.target)})),this.callback(this.entries,this)}}),this.viewPort=(null==t?void 0:t.root)?t.root:window,this.entries=[],this.root=null,this.rootMargin="0px",this.thresholds=[1],this.callback=e,this.viewPort.addEventListener("scroll",this.intersect)}isInViewPort(e){return"toc-0"!==e.id}observe(e){this.entries.push({isIntersecting:!1,target:e})}unobserve(e){this.entries=this.entries.filter((t=>t.target!==e))}disconnect(){this.viewPort.removeEventListener("scroll",this.intersect),this.entries=[]}takeRecords(){return this.entries}}exports.MockIntersectionObserver=MockIntersectionObserver;
|
|
2
|
+
//# sourceMappingURL=mock-intersection-observer.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var __rest=this&&this.__rest||function(e,t){var r={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.indexOf(a)<0&&(r[a]=e[a]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(a=Object.getOwnPropertySymbols(e);o<a.length;o++)t.indexOf(a[o])<0&&Object.prototype.propertyIsEnumerable.call(e,a[o])&&(r[a[o]]=e[a[o]])}return r};Object.defineProperty(exports,"__esModule",{value:!0}),exports.PayloadSamples=void 0;const jsx_runtime_1=require("react/jsx-runtime"),react_1=require("react"),jotai_1=require("jotai"),SelectOrLabel_1=require("../SelectOrLabel"),MediaTypeSwitch_1=require("../MediaTypeSwitch"),common_1=require("../common"),MediaTypeSamples_1=require("./MediaTypeSamples"),styled_1=require("./styled"),app_1=require("../../jotai/app"),hooks_1=require("../../hooks")
|
|
1
|
+
"use strict";var __rest=this&&this.__rest||function(e,t){var r={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.indexOf(a)<0&&(r[a]=e[a]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(a=Object.getOwnPropertySymbols(e);o<a.length;o++)t.indexOf(a[o])<0&&Object.prototype.propertyIsEnumerable.call(e,a[o])&&(r[a[o]]=e[a[o]])}return r};Object.defineProperty(exports,"__esModule",{value:!0}),exports.PayloadSamples=void 0;const jsx_runtime_1=require("react/jsx-runtime"),react_1=require("react"),jotai_1=require("jotai"),SelectOrLabel_1=require("../SelectOrLabel"),MediaTypeSwitch_1=require("../MediaTypeSwitch"),common_1=require("../common"),MediaTypeSamples_1=require("./MediaTypeSamples"),styled_1=require("./styled"),app_1=require("../../jotai/app"),hooks_1=require("../../hooks");function PayloadSamplesComponent(e){var{onlyDefaultMimeType:t,content:r}=e,a=__rest(e,["onlyDefaultMimeType","content"]);const o=(0,hooks_1.useActivateExample)(r),l=(0,jotai_1.useAtomValue)(app_1.activeMimeNameAtom),s=t&&l,i=(0,hooks_1.useTranslate)(),n=(0,react_1.useCallback)((e=>s?null:(0,jsx_runtime_1.jsx)(styled_1.SelectWrapper,{children:(0,jsx_runtime_1.jsx)(SelectOrLabel_1.SelectOrLabel,Object.assign({Label:common_1.MimeLabel,Select:common_1.Select,variant:"dark",fullWidth:!0},e))})),[s]),p=e=>o(e);return r?(0,jsx_runtime_1.jsx)(MediaTypeSwitch_1.MediaTypesSwitch,{content:r,renderSelect:n,children:e=>(0,jsx_runtime_1.jsx)(MediaTypeSamples_1.MediaTypeSamples,Object.assign({mediaType:e},a,{onChange:p}),"samples")}):(0,jsx_runtime_1.jsx)(styled_1.StyledCodeBlock,{lang:"text",source:i("openapi.noRequestPayload","No request payload"),header:{controls:!1}})}exports.PayloadSamples=(0,react_1.memo)(PayloadSamplesComponent);
|
|
2
2
|
//# sourceMappingURL=PayloadSamples.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.convertOperationToReplayValue=convertOperationToReplayValue,exports.convertRequestSecurity=convertRequestSecurity;const theme_1=require("@redocly/theme");function convertOperationToReplayValue(e,n,
|
|
1
|
+
"use strict";var __rest=this&&this.__rest||function(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.indexOf(a)<0&&(n[a]=e[a]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(a=Object.getOwnPropertySymbols(e);r<a.length;r++)t.indexOf(a[r])<0&&Object.prototype.propertyIsEnumerable.call(e,a[r])&&(n[a[r]]=e[a[r]])}return n};Object.defineProperty(exports,"__esModule",{value:!0}),exports.convertOperationToReplayValue=convertOperationToReplayValue,exports.convertRequestSecurity=convertRequestSecurity;const theme_1=require("@redocly/theme");function convertOperationToReplayValue(e,t,n,a){var r,i;const o=(null==a?void 0:a.activeMimeName)||"application/json";return{name:e.name,method:e.httpVerb,parameters:convertParameters(e.parameters,null==n?void 0:n.requestValues),body:convertRequestBody(e.requestBody,t,(null===(r=null==n?void 0:n.requestValues)||void 0===r?void 0:r.body)?{activeExampleName:null==n?void 0:n.activeExampleName,[o]:null===(i=null==n?void 0:n.requestValues)||void 0===i?void 0:i.body}:{activeExampleName:null==n?void 0:n.activeExampleName}),path:e.path,servers:e.servers,security:convertRequestSecurity(e.security)}}function convertParameters(e,t){const n=new Set,a=e.map((e=>{var a;return n.add(e.in+":"+e.name),{name:e.name,in:e.in,required:e.required,description:e.description,example:(null===(a=null==t?void 0:t[String(e.in)])||void 0===a?void 0:a[e.name])||e.example,schema:e.schema}}));for(const[e,r]of Object.entries(t||{}))for(const[t,i]of Object.entries(r||{}))n.has(e+":"+t)||a.push({name:t,in:e,required:!1,description:"",example:String(i),schema:void 0});return a}function getInputType({type:e,format:t,enum:n}){return"string"!==e||"binary"!==t&&"base64"!==t?"object"===e?"multiline":n.length>0?"select":"text":"file"}function getFieldExamples(e,t){var n,a,r,i,o;const l=(null===(n=e[0])||void 0===n?void 0:n.example)||(null===(a=e[0])||void 0===a?void 0:a.examples);if(l)return l;if(null===(r=e.schema)||void 0===r?void 0:r.example)return e.schema.example;const m=(null===(i=null==t?void 0:t.default)||void 0===i?void 0:i.value)||(null===(o=null==t?void 0:t.default)||void 0===o?void 0:o.rawValue);return(null==m?void 0:m[e.name])?(0,theme_1.isPrimitive)(null==m?void 0:m[e.name])?String(null==m?void 0:m[e.name]):JSON.stringify(null==m?void 0:m[e.name]):""}function convertRequestBody(e,t,n){var a;if(!e||!(null===(a=e.content)||void 0===a?void 0:a.mediaTypes)){if(!n)return;const{activeExampleName:e}=n,t=__rest(n,["activeExampleName"]);return{activeExampleName:e,mediaTypes:Object.fromEntries(Object.entries(t).map((([e,t])=>[e,{name:e,examples:{default:{value:t}},schema:{},parameters:[]}])))}}return{required:e.required,activeExampleName:null==n?void 0:n.activeExampleName,mediaTypes:e.content.mediaTypes.reduce(((e,a)=>{var r,i;const o=a.schema,l=(null==n?void 0:n[a.name])?{default:{value:null==n?void 0:n[a.name],rawValue:null==n?void 0:n[a.name],mime:a.name}}:a.examples||a.formExamples;return e[a.name]={name:a.name,examples:l,schema:getBodySchema(null===(r=a.schema)||void 0===r?void 0:r.rawSchema,t),parameters:null===(i=null==o?void 0:o.fields)||void 0===i?void 0:i.map((e=>({inputType:getInputType(e.schema),name:e.name,example:getFieldExamples(e,l)})))},e}),{})}}function getBodySchema(e,t){if(e&&t)return Object.assign(Object.assign({},e),{components:(null==t?void 0:t.components)||{}})}function convertRequestSecurity(e){if(e)return e.map((({schemes:e})=>e.map((e=>({id:e.id,type:e.type,in:e.in,openIdConnectUrl:e.openIdConnectUrl,scopes:e.scopes,scheme:e.scheme,name:e.name,flows:e.flows})))))}
|
|
2
2
|
//# sourceMappingURL=utils.js.map
|
package/lib/hooks/index.d.ts
CHANGED
|
@@ -6,3 +6,4 @@ export { useContentItems } from './useContentItems';
|
|
|
6
6
|
export { useActiveWithFallback } from './useActiveWithFallback';
|
|
7
7
|
export { useUppercase2LowercaseRedirect } from './useUppercase2LowercaseRedirect';
|
|
8
8
|
export { useTranslate } from './useTranslate';
|
|
9
|
+
export { useIsContentVisible } from './useIsContentVisible';
|
package/lib/hooks/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.useTranslate=exports.useUppercase2LowercaseRedirect=exports.useActiveWithFallback=exports.useContentItems=exports.useRouter=exports.useActivateExample=exports.usePrevious=exports.useDimensions=void 0;var useDimensions_1=require("./useDimensions");Object.defineProperty(exports,"useDimensions",{enumerable:!0,get:function(){return useDimensions_1.useDimensions}});var usePrevious_1=require("./usePrevious");Object.defineProperty(exports,"usePrevious",{enumerable:!0,get:function(){return usePrevious_1.usePrevious}});var useActivateExample_1=require("./useActivateExample");Object.defineProperty(exports,"useActivateExample",{enumerable:!0,get:function(){return useActivateExample_1.useActivateExample}});var useRouter_1=require("./useRouter");Object.defineProperty(exports,"useRouter",{enumerable:!0,get:function(){return useRouter_1.useRouter}});var useContentItems_1=require("./useContentItems");Object.defineProperty(exports,"useContentItems",{enumerable:!0,get:function(){return useContentItems_1.useContentItems}});var useActiveWithFallback_1=require("./useActiveWithFallback");Object.defineProperty(exports,"useActiveWithFallback",{enumerable:!0,get:function(){return useActiveWithFallback_1.useActiveWithFallback}});var useUppercase2LowercaseRedirect_1=require("./useUppercase2LowercaseRedirect");Object.defineProperty(exports,"useUppercase2LowercaseRedirect",{enumerable:!0,get:function(){return useUppercase2LowercaseRedirect_1.useUppercase2LowercaseRedirect}});var useTranslate_1=require("./useTranslate");Object.defineProperty(exports,"useTranslate",{enumerable:!0,get:function(){return useTranslate_1.useTranslate}});
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.useIsContentVisible=exports.useTranslate=exports.useUppercase2LowercaseRedirect=exports.useActiveWithFallback=exports.useContentItems=exports.useRouter=exports.useActivateExample=exports.usePrevious=exports.useDimensions=void 0;var useDimensions_1=require("./useDimensions");Object.defineProperty(exports,"useDimensions",{enumerable:!0,get:function(){return useDimensions_1.useDimensions}});var usePrevious_1=require("./usePrevious");Object.defineProperty(exports,"usePrevious",{enumerable:!0,get:function(){return usePrevious_1.usePrevious}});var useActivateExample_1=require("./useActivateExample");Object.defineProperty(exports,"useActivateExample",{enumerable:!0,get:function(){return useActivateExample_1.useActivateExample}});var useRouter_1=require("./useRouter");Object.defineProperty(exports,"useRouter",{enumerable:!0,get:function(){return useRouter_1.useRouter}});var useContentItems_1=require("./useContentItems");Object.defineProperty(exports,"useContentItems",{enumerable:!0,get:function(){return useContentItems_1.useContentItems}});var useActiveWithFallback_1=require("./useActiveWithFallback");Object.defineProperty(exports,"useActiveWithFallback",{enumerable:!0,get:function(){return useActiveWithFallback_1.useActiveWithFallback}});var useUppercase2LowercaseRedirect_1=require("./useUppercase2LowercaseRedirect");Object.defineProperty(exports,"useUppercase2LowercaseRedirect",{enumerable:!0,get:function(){return useUppercase2LowercaseRedirect_1.useUppercase2LowercaseRedirect}});var useTranslate_1=require("./useTranslate");Object.defineProperty(exports,"useTranslate",{enumerable:!0,get:function(){return useTranslate_1.useTranslate}});var useIsContentVisible_1=require("./useIsContentVisible");Object.defineProperty(exports,"useIsContentVisible",{enumerable:!0,get:function(){return useIsContentVisible_1.useIsContentVisible}});
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.useIsContentVisible=useIsContentVisible;const react_1=require("react"),theme_1=require("@redocly/theme");function useIsContentVisible({defaultVisible:e=!0}){const[t,r]=(0,react_1.useState)(e),n=(0,react_1.useRef)(null);return(0,theme_1.useMount)((()=>{const e=new IntersectionObserver((([e])=>{t||r(e.isIntersecting)}),{root:null,rootMargin:theme_1.IS_BROWSER&&"undefined"==typeof window?"200px":"50px",threshold:.01});return(null==n?void 0:n.current)&&e.observe(n.current),()=>{n.current&&e.unobserve(n.current)}})),{isVisible:t,targetRef:n}}
|
|
2
|
+
//# sourceMappingURL=useIsContentVisible.js.map
|
package/lib/models/mediaType.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,a
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,i,a){void 0===a&&(a=i);var r=Object.getOwnPropertyDescriptor(t,i);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[i]}}),Object.defineProperty(e,a,r)}:function(e,t,i,a){void 0===a&&(a=i),e[a]=t[i]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),__importStar=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var i in e)"default"!==i&&Object.prototype.hasOwnProperty.call(e,i)&&__createBinding(t,e,i);return __setModuleDefault(t,e),t};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getMediaType=getMediaType;const Sampler=__importStar(require("openapi-sampler")),schema_1=require("./schema"),utils_1=require("../utils"),example_1=require("./example");function generateExamples({parser:e,info:{encoding:t,schema:i},schema:a,mime:r,options:{isRequestType:n,onlyRequiredInSamples:s,generatedSamplesMaxDepth:o,format:l="json"}}){const p={skipReadOnly:n,skipWriteOnly:!n,skipNonRequired:n&&s,maxSampleDepth:o,quiet:!0,format:l};let m={};if(a&&a.oneOf)for(const i of a.oneOf){const n=Sampler.sample(i.rawSchema,p,e.definition);a.discriminatorProp&&"object"==typeof n&&n&&n[a.discriminatorProp]&&(n[a.discriminatorProp]=i.title),m[i.title]=(0,example_1.getExamples)({parser:e,infoOrRef:{value:n},mime:r,encoding:t})}else m=a?{default:(0,example_1.getExamples)({parser:e,infoOrRef:{value:Sampler.sample(i,p,e.definition)},mime:r,encoding:t})}:{default:{value:null,rawValue:"null"}};return m}function getMediaType(e,t,i,a,r,{operation:n,type:s,response:o,absolutePointer:l=""}){let p,m;const u=a.schema&&(0,schema_1.getSchema)({parser:e,schemaOrRef:a.schema,pointer:"",absolutePointer:utils_1.JsonPointer.join(l,["content",t,"schema"]),options:r,deps:{operation:n,type:s,response:o}}),{onlyRequiredInSamples:c,generatedSamplesMaxDepth:d}=r,{encoding:f,examples:_,example:g}=a;return r.unstable_skipSamples||(void 0!==_?p=(0,utils_1.mapValues)(_,(i=>(0,example_1.getExamples)({parser:e,infoOrRef:i,mime:t,encoding:f}))):void 0!==g?p={default:(0,example_1.getExamples)({parser:e,infoOrRef:{value:e.deref(g).resolved},mime:t,encoding:f})}:(0,utils_1.isJsonLike)(t)||(0,utils_1.isXmlLike)(t)?p=generateExamples({parser:e,info:a,schema:u,mime:t,options:{isRequestType:i,onlyRequiredInSamples:c,generatedSamplesMaxDepth:d,format:(0,utils_1.isXmlLike)(t)?"xml":"json"}}):((0,utils_1.isFormUrlEncoded)(t)||(0,utils_1.isMultipartFormData)(t))&&(m=generateExamples({parser:e,info:a,schema:u,mime:t,options:{isRequestType:i,onlyRequiredInSamples:c,generatedSamplesMaxDepth:d}}))),{examples:p,schema:u,name:t,isRequestType:i,formExamples:m,onlyRequiredInSamples:c,operation:n}}
|
|
2
2
|
//# sourceMappingURL=mediaType.js.map
|
|
@@ -15,5 +15,5 @@ export interface Callback {
|
|
|
15
15
|
id?: string;
|
|
16
16
|
}
|
|
17
17
|
export declare function isPayloadSample(sample: XPayloadSample | OpenAPIXCodeSample | Unstable_ExternalCodeSample): sample is XPayloadSample;
|
|
18
|
-
export declare function getOperation(parser: OpenAPIParser, operationDefinition: ExtendedOpenAPIOperation, parent: GroupModel | undefined, options: Options, href: string, callback?: Callback): OperationModel;
|
|
18
|
+
export declare function getOperation(parser: OpenAPIParser, operationDefinition: ExtendedOpenAPIOperation, parent: GroupModel | undefined, options: Options, href: string, callback?: Callback, isVisible?: boolean): OperationModel;
|
|
19
19
|
export declare function mergeInMockServer(servers: OpenAPIServer[], mockServerOptions: Options['mockServer']): OpenAPIServer[];
|
package/lib/models/operation.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.isPayloadSample=isPayloadSample,exports.getOperation=getOperation,exports.mergeInMockServer=mergeInMockServer;const theme_1=require("@redocly/theme"),config_1=require("@redocly/config"),utils_1=require("../utils"),callback_1=require("./callback"),field_1=require("./field"),request_1=require("./request"),security_1=require("./security"),response_1=require("./response"),operation_1=require("../services/menu/operation");function isPayloadSample(e){return"Payload"===e.lang&&"requestBodyContent"in e}function getOperation(e,r,t,i,o,s){var a,
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.isPayloadSample=isPayloadSample,exports.getOperation=getOperation,exports.mergeInMockServer=mergeInMockServer;const theme_1=require("@redocly/theme"),config_1=require("@redocly/config"),utils_1=require("../utils"),callback_1=require("./callback"),field_1=require("./field"),request_1=require("./request"),security_1=require("./security"),response_1=require("./response"),operation_1=require("../services/menu/operation");function isPayloadSample(e){return"Payload"===e.lang&&"requestBodyContent"in e}function getOperation(e,r,t,i,o,s,n=!0){var a,l;const u=r.isWebhook,p={operationDefinition:r,parent:t,pointer:r.pointer,description:n?(0,utils_1.getValueFromMdParsedExtension)(r,"description"):"",externalDocs:r.externalDocs,deprecated:!!r.deprecated,httpVerb:r.httpVerb,operationId:r.operationId,path:r.pathName,isWebhook:u,isCallback:Boolean(null==s?void 0:s.isCallback),isEvent:(null==s?void 0:s.isCallback)||u,name:(0,utils_1.getOperationName)(r),defaultExampleName:r.defaultSampleName,[config_1.REDOCLY_TEAMS_RBAC]:r[config_1.REDOCLY_TEAMS_RBAC]||(null==t?void 0:t[config_1.REDOCLY_TEAMS_RBAC]),type:"operation",callbackId:null==s?void 0:s.id,href:o,get callbacks(){return n?Object.keys(r.callbacks||[]).map((s=>{var n;return(0,callback_1.getCallback)(e,s,null===(n=r.callbacks)||void 0===n?void 0:n[s],p.pointer,i,o,t)})):[]},get responses(){let t=!1;return n?Object.keys(r.responses||[]).filter((e=>"default"===e||("success"===(0,utils_1.getStatusCodeType)(e)&&(t=!0),(0,utils_1.isStatusCode)(e)))).map((o=>(0,response_1.getResponse)({parser:e,code:o,defaultAsError:t,infoOrRef:r.responses[o],options:i,isEvent:p.isEvent,operation:p}))):[]},get parameters(){if(!n)return[];let t=(0,utils_1.mergeParams)(e,r.pathParameters,r.parameters,{pathPointer:utils_1.JsonPointer.dirName(p.pointer),operationPointer:p.pointer}).map((({paramOrRef:r,pointer:t})=>(0,field_1.getField)(e,r,t,i,{operation:p,type:"request"})));return i.sortRequiredPropsFirst&&(t=(0,utils_1.sortByRequired)(t)),(0,utils_1.sortByDeprecated)(t)}};(null==s?void 0:s.isCallback)?(p.security=(0,security_1.getSecurity)(r.security,e),p.servers=(0,utils_1.normalizeServers)("",r.servers||r.pathServers||[]),p.id=(0,theme_1.removeLeadingSlash)(o)):(p.id=(0,utils_1.getOperationId)(r,t),p.href=p.href||(0,operation_1.getHref)(p),p.security=n?(0,security_1.getSecurity)(r.security||e.definition.security,e):[],p.servers=n?(0,utils_1.normalizeServers)(e.definitionUrl,mergeInMockServer(r.servers||r.pathServers||e.definition.servers||[],i.mockServer)):[]),i.showExtensions&&(p.extensions=(0,utils_1.extractExtensions)(r,i.showExtensions)),p.requestBody=n&&r.requestBody?(0,request_1.getRequestBody)({parser:e,infoOrRef:r.requestBody,options:i,operation:p,isEvent:p.isEvent}):void 0;const c=null===(a=p.requestBody)||void 0===a?void 0:a.content;return p.payload={lang:"Payload",source:"",requestBodyContent:(null==c?void 0:c.hasSample)?c:void 0},p.definitionSamples=r["x-codeSamples"]||[],p.badges=(null===(l=r["x-badges"])||void 0===l?void 0:l.map((({name:e,color:r,position:t})=>({name:e,color:r||"var(--color-info-base)",position:t||"after"}))))||[],p.hasSamples=(null==c?void 0:c.hasSample)||p.definitionSamples.length>0,p.hideReplay=!0===r["x-hideReplay"],p}function mergeInMockServer(e,r){if(!r)return e;const t={url:r.url,description:r.description};switch(r.position){case"first":return[t,...e];case"last":return[...e,t];case"replace":return[t];default:return e}}
|
|
2
2
|
//# sourceMappingURL=operation.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,a,r){void 0===r&&(r=a);var s=Object.getOwnPropertyDescriptor(t,a);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[a]}}),Object.defineProperty(e,r,s)}:function(e,t,a,r){void 0===r&&(r=a),e[r]=t[a]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),__importStar=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)"default"!==a&&Object.prototype.hasOwnProperty.call(e,a)&&__createBinding(t,e,a);return __setModuleDefault(t,e),t},__importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getCodeSample=getCodeSample,exports.getDataRequest=getDataRequest,exports.isDefined=isDefined,exports.capitalizeFirst=capitalizeFirst;const Sampler=__importStar(require("openapi-sampler")),deepmerge_1=__importDefault(require("deepmerge")),jstoxml_1=require("jstoxml"),theme_1=require("@redocly/theme"),utils_1=require("../../utils"),utils_2=require("../utils"),constants_1=require("../../constants"),httpsnippet_1=require("./httpsnippet"),mediaContent_1=require("../../models/mediaContent"),string_utility_1=__importDefault(require("./httpsnippet/helpers/string-utility"));function getSelectedSecurityScheme(e,t){return e.find((e=>{const a=e.schemes.map((e=>e.id));return(0,utils_1.areArraysEqual)(a,t||[])}))}function mapOperationToHAR(e,{exampleName:t="",skipOptionalParameters:a=!1,withOAuth2Call:r=!1,spec:s,generatedPayloadSamplesMaxDepth:i=8,pathParams:n={},properties:o={}},{environment:l,requestValues:u,activeSecuritySchemeIds:c}){var p,d,m;const h=l.server,f=e.servers.find((e=>e.url===h))||e.servers[0],_=getSelectedSecurityScheme(e.security,c),{securityHeaders:g,securityCookies:y,securityQueries:v,securityOAuth2ExtraCalls:O,basicAuth:S}=getSecurityData(_||(null===(p=e.security)||void 0===p?void 0:p[0]),r,l),T=(null===(d=null==e?void 0:e.requestBody)||void 0===d?void 0:d.content)&&(0,mediaContent_1.getActiveMediaType)(e.requestBody.content),b={skipNonRequired:a,skipReadOnly:!0,maxSampleDepth:i,quiet:!0},C=u;let j=!1;const D=e.parameters.filter((e=>"header"===e.in)).filter((e=>!(a&&!e.required))).map((e=>{var t;return{name:e.name,value:(null===(t=C.header)||void 0===t?void 0:t[e.name])||(0,utils_1.getParameterValue)("header",e.name)||(0,utils_1.serializeParameterValue)(e,Sampler.sample(e.schema.rawSchema,b,s))}})).map((e=>((null==T?void 0:T.name)&&"content-type"===e.name.toLowerCase()&&(j=!0,e.value=T.name),e))).concat(g);!j&&(null==T?void 0:T.name)&&D.unshift({name:"Content-Type",value:null==T?void 0:T.name});const E=e.parameters.filter((e=>"cookie"===e.in)).filter((e=>!(a&&!e.required))).map((e=>utils_1.queryString.parse((0,utils_1.serializeParameterValue)(e,Sampler.sample(e.schema.rawSchema,b,s))))).reduce(((e,t)=>{var a;for(const[r,s]of Object.entries(t))e.push({name:r,value:String((null===(a=C.cookie)||void 0===a?void 0:a[r])||s)});return e}),[]).concat(y),q=e.parameters.filter((e=>"query"===e.in)).filter((e=>!(a&&!e.required))).map((e=>utils_1.queryString.parse((0,utils_1.serializeParameterValue)(e,Sampler.sample(e.schema.rawSchema,b,s))))).reduce(((e,t)=>{var a,r,s;for(const[i,n]of Object.entries(t))e.push({name:i,value:(0,utils_1.isArrayOfObjects)(null===(a=C.query)||void 0===a?void 0:a[i])&&JSON.stringify((0,utils_1.deleteEmptyArrayItem)(null===(r=C.query)||void 0===r?void 0:r[i]))||String((null===(s=C.query)||void 0===s?void 0:s[i])||n)});return e}),[]).concat(v),k=`${null==f?void 0:f.url.replace(/\/$/,"")}/${e.path.replace(/^\//,"")}`,P=e.parameters.filter((e=>"path"===e.in)).reduce(((e,t)=>{var a;const{in:r,name:s}=t;return e[s]=(null===(a=C.path)||void 0===a?void 0:a[s])||n[s]||(0,utils_1.getParameterValue)(r,s),e}),{}),w=null===(m=null==T?void 0:T.examples)||void 0===m?void 0:m[t],R=(null==T?void 0:T.examples)||{},[A]=Object.values(R),M=(null==C?void 0:C.body)||(null==w?void 0:w.value)||(null==A?void 0:A.value)||(null==T?void 0:T.schema)&&Sampler.sample(null==T?void 0:T.schema.rawSchema,b,s),x=null==T?void 0:T.name.toLowerCase();let N="",H=[];switch((0,utils_2.normalizeMimeType)(x)){case constants_1.MediaTypes.JSON:N=JSON.stringify(getDataRequest(M,o));break;case constants_1.MediaTypes.XML:N="object"==typeof M?(0,jstoxml_1.toXML)(getDataRequest(M,o),{indent:" "}):M;break;case constants_1.MediaTypes.URL_ENCODED:case constants_1.MediaTypes.MULTIPART:N=utils_1.queryString.stringify(getDataRequest(M,o)),H=objectToHarParams(getDataRequest(M,o));break;default:N=String(M||"")}const U=N?{mimeType:(null==T?void 0:T.name)||constants_1.MediaTypes.OCTET_STREAM,text:N,params:H}:void 0,z=e.responses.map((e=>e.code));return{method:e.httpVerb,url:k,httpVersion:"HTTP/1.1",cookies:E,headers:D,queryString:q,postData:U,headersSize:-1,bodySize:-1,securityOAuth2ExtraCalls:O,basicAuth:S,pathParameters:P,serverVariables:l,allResponseCodes:z}}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)},"C#+Newtonsoft":{code:"csharpNewtonsoft",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)}};function getCodeSample({lang:e,operation:t,exampleName:a,pathParams:r,properties:s,options:i={},environment:n,translate:o}){try{const{skipOptionalParameters:l,withOAuth2Call:u,spec:c,generatedPayloadSamplesMaxDepth:p,store:d}=i,m=mapOperationToHAR(t,{exampleName:a,pathParams:r,properties:s,skipOptionalParameters:l,withOAuth2Call:u,spec:c,generatedPayloadSamplesMaxDepth:p},{environment:n,requestValues:d.requestValues,activeSecuritySchemeIds:d.activeSecuritySchemeIds}),h=new httpsnippet_1.HTTPSnippet(m);return langToSnippetConfig[e]?h.convert(langToSnippetConfig[e].code,langToSnippetConfig[e].defaultTarget,Object.assign(Object.assign({},langToSnippetConfig[e].defaultOptions),i)):o("openapi.unsupportedLanguage","Language is not supported.")}catch(e){return console.error(e),o("openapi.failedToGenerateCodeSample","Failed to generate code sample.")}}function getSecurityData(e,t,a){var r,s,i,n,o;const l={securityHeaders:[],securityCookies:[],securityQueries:[],securityOAuth2ExtraCalls:[],basicAuth:void 0};for(const u of(null==e?void 0:e.schemes)||[]){const e=(0,utils_1.getSecurityDetails)(u.id,a);switch(u.type){case"openIdConnect":null===(r=l.securityHeaders)||void 0===r||r.push({name:"Authorization",value:e.token?`${e.token.token_type||"Bearer"} ${e.token.access_token}`:"Bearer <YOUR_TOKEN_HERE>"});break;case"oauth2":{const a=e.token?`${e.token.token_type||"Bearer"} ${e.token.access_token}`:"Bearer <YOUR_TOKEN_HERE>";u.flows.clientCredentials&&t?l.securityOAuth2ExtraCalls.push(getOAuth2ClientCredsCallHar(u.flows.clientCredentials,u.scopes,e)):u.flows.password&&t&&l.securityOAuth2ExtraCalls.push(getOAuth2PasswordCallHar(u.flows.password,u.scopes,e)),null===(s=l.securityHeaders)||void 0===s||s.push({name:"Authorization",value:a});break}case"apiKey":{const t=e.raw||"YOUR_API_KEY_HERE";"header"===u.in&&(null===(i=l.securityHeaders)||void 0===i||i.push({name:u.name,value:t})),"cookie"===u.in&&l.securityCookies.push({name:u.name,value:t}),"query"===u.in&&l.securityQueries.push({name:u.name,value:t});break}case"http":if("basic"===u.scheme)l.basicAuth={username:e.username||`<${string_utility_1.default.toSnakeCase("Username")}>`,password:e.password||`<${string_utility_1.default.toSnakeCase("Password")}>`};else{const t=(null===(n=e.token)||void 0===n?void 0:n.access_token)||`<YOUR_${u.bearerFormat||"TOKEN"}_HERE>`;null===(o=l.securityHeaders)||void 0===o||o.push({name:"Authorization",value:`${capitalizeFirst(u.scheme||"bearer")} ${t}`})}}}return l}function getOAuth2PasswordCallHar(e,t,a){return{method:"POST",url:e.tokenUrl,httpVersion:"HTTP/1.1",headers:[{name:"Content-Type",value:constants_1.MediaTypes.URL_ENCODED},{name:"Accept",value:constants_1.MediaTypes.JSON}],queryString:[],postData:{mimeType:constants_1.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:constants_1.MediaTypes.URL_ENCODED},{name:"Accept",value:constants_1.MediaTypes.JSON}],queryString:[],postData:{mimeType:constants_1.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((0,theme_1.isObject)(e))return Object.keys(e).length>0&&0===Object.keys(t).length?e:(0,deepmerge_1.default)(e,t,{arrayMerge:utils_2.arrayMergeStrategy});try{return(0,deepmerge_1.default)(JSON.parse(e),t,{arrayMerge:utils_2.arrayMergeStrategy})}catch(e){return!1}}return!1}function objectToHarParams(e,t=""){const a=[];for(const[r,s]of Object.entries(e)){const e=t?`${t}[${r}]`:r;"object"==typeof s&&null!==s?a.push(...objectToHarParams(s,e)):a.push({name:e,value:String(s)})}return a}function isDefined(e){return void 0!==e}function capitalizeFirst(e){return e.charAt(0).toUpperCase()+e.slice(1)}
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,a,r){void 0===r&&(r=a);var s=Object.getOwnPropertyDescriptor(t,a);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[a]}}),Object.defineProperty(e,r,s)}:function(e,t,a,r){void 0===r&&(r=a),e[r]=t[a]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),__importStar=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)"default"!==a&&Object.prototype.hasOwnProperty.call(e,a)&&__createBinding(t,e,a);return __setModuleDefault(t,e),t},__importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getCodeSample=getCodeSample,exports.getDataRequest=getDataRequest,exports.isDefined=isDefined,exports.capitalizeFirst=capitalizeFirst;const Sampler=__importStar(require("openapi-sampler")),deepmerge_1=__importDefault(require("deepmerge")),theme_1=require("@redocly/theme"),utils_1=require("../../utils"),utils_2=require("../utils"),constants_1=require("../../constants"),httpsnippet_1=require("./httpsnippet"),mediaContent_1=require("../../models/mediaContent"),string_utility_1=__importDefault(require("./httpsnippet/helpers/string-utility"));function getSelectedSecurityScheme(e,t){return e.find((e=>{const a=e.schemes.map((e=>e.id));return(0,utils_1.areArraysEqual)(a,t||[])}))}function mapOperationToHAR(e,{exampleName:t="",skipOptionalParameters:a=!1,withOAuth2Call:r=!1,spec:s,generatedPayloadSamplesMaxDepth:i=8,pathParams:n={},properties:o={}},{environment:l,requestValues:u,activeSecuritySchemeIds:c}){var p,d,m;const h=l.server,f=e.servers.find((e=>e.url===h))||e.servers[0],_=getSelectedSecurityScheme(e.security,c),{securityHeaders:g,securityCookies:y,securityQueries:O,securityOAuth2ExtraCalls:v,basicAuth:S}=getSecurityData(_||(null===(p=e.security)||void 0===p?void 0:p[0]),r,l),T=(null===(d=null==e?void 0:e.requestBody)||void 0===d?void 0:d.content)&&(0,mediaContent_1.getActiveMediaType)(e.requestBody.content),b={skipNonRequired:a,skipReadOnly:!0,maxSampleDepth:i,quiet:!0},C=u;let j=!1;const D=e.parameters.filter((e=>"header"===e.in)).filter((e=>!(a&&!e.required))).map((e=>{var t;return{name:e.name,value:(null===(t=C.header)||void 0===t?void 0:t[e.name])||(0,utils_1.getParameterValue)("header",e.name)||(0,utils_1.serializeParameterValue)(e,Sampler.sample(e.schema.rawSchema,b,s))}})).map((e=>((null==T?void 0:T.name)&&"content-type"===e.name.toLowerCase()&&(j=!0,e.value=T.name),e))).concat(g);!j&&(null==T?void 0:T.name)&&D.unshift({name:"Content-Type",value:null==T?void 0:T.name});const E=e.parameters.filter((e=>"cookie"===e.in)).filter((e=>!(a&&!e.required))).map((e=>utils_1.queryString.parse((0,utils_1.serializeParameterValue)(e,Sampler.sample(e.schema.rawSchema,b,s))))).reduce(((e,t)=>{var a;for(const[r,s]of Object.entries(t))e.push({name:r,value:String((null===(a=C.cookie)||void 0===a?void 0:a[r])||s)});return e}),[]).concat(y),k=e.parameters.filter((e=>"query"===e.in)).filter((e=>!(a&&!e.required))).map((e=>utils_1.queryString.parse((0,utils_1.serializeParameterValue)(e,Sampler.sample(e.schema.rawSchema,b,s))))).reduce(((e,t)=>{var a,r,s;for(const[i,n]of Object.entries(t))e.push({name:i,value:(0,utils_1.isArrayOfObjects)(null===(a=C.query)||void 0===a?void 0:a[i])&&JSON.stringify((0,utils_1.deleteEmptyArrayItem)(null===(r=C.query)||void 0===r?void 0:r[i]))||String((null===(s=C.query)||void 0===s?void 0:s[i])||n)});return e}),[]).concat(O),q=`${null==f?void 0:f.url.replace(/\/$/,"")}/${e.path.replace(/^\//,"")}`,P=e.parameters.filter((e=>"path"===e.in)).reduce(((e,t)=>{var a;const{in:r,name:s}=t;return e[s]=(null===(a=C.path)||void 0===a?void 0:a[s])||n[s]||(0,utils_1.getParameterValue)(r,s),e}),{}),w=null===(m=null==T?void 0:T.examples)||void 0===m?void 0:m[t],A=(null==T?void 0:T.examples)||{},[R]=Object.values(A),M=null==T?void 0:T.name.toLowerCase(),x=(null==C?void 0:C.body)||(null==w?void 0:w.value)||(null==R?void 0:R.value)||(null==T?void 0:T.schema)&&Sampler.sample(null==T?void 0:T.schema.rawSchema,Object.assign(Object.assign({},b),{format:M===constants_1.MediaTypes.XML?"xml":"json"}),s);let N="",H=[];switch((0,utils_2.normalizeMimeType)(M)){case constants_1.MediaTypes.JSON:N=JSON.stringify(getDataRequest(x,o));break;case constants_1.MediaTypes.XML:N=x;break;case constants_1.MediaTypes.URL_ENCODED:case constants_1.MediaTypes.MULTIPART:N=utils_1.queryString.stringify(getDataRequest(x,o)),H=objectToHarParams(getDataRequest(x,o));break;default:N=String(x||"")}const U=N?{mimeType:(null==T?void 0:T.name)||constants_1.MediaTypes.OCTET_STREAM,text:N,params:H}:void 0,z=e.responses.map((e=>e.code));return{method:e.httpVerb,url:q,httpVersion:"HTTP/1.1",cookies:E,headers:D,queryString:k,postData:U,headersSize:-1,bodySize:-1,securityOAuth2ExtraCalls:v,basicAuth:S,pathParameters:P,serverVariables:l,allResponseCodes:z}}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)},"C#+Newtonsoft":{code:"csharpNewtonsoft",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)}};function getCodeSample({lang:e,operation:t,exampleName:a,pathParams:r,properties:s,options:i={},environment:n,translate:o}){try{const{skipOptionalParameters:l,withOAuth2Call:u,spec:c,generatedPayloadSamplesMaxDepth:p,store:d}=i,m=mapOperationToHAR(t,{exampleName:a,pathParams:r,properties:s,skipOptionalParameters:l,withOAuth2Call:u,spec:c,generatedPayloadSamplesMaxDepth:p},{environment:n,requestValues:d.requestValues,activeSecuritySchemeIds:d.activeSecuritySchemeIds}),h=new httpsnippet_1.HTTPSnippet(m);return langToSnippetConfig[e]?h.convert(langToSnippetConfig[e].code,langToSnippetConfig[e].defaultTarget,Object.assign(Object.assign({},langToSnippetConfig[e].defaultOptions),i)):o("openapi.unsupportedLanguage","Language is not supported.")}catch(e){return console.error(e),o("openapi.failedToGenerateCodeSample","Failed to generate code sample.")}}function getSecurityData(e,t,a){var r,s,i,n,o;const l={securityHeaders:[],securityCookies:[],securityQueries:[],securityOAuth2ExtraCalls:[],basicAuth:void 0};for(const u of(null==e?void 0:e.schemes)||[]){const e=(0,utils_1.getSecurityDetails)(u.id,a);switch(u.type){case"openIdConnect":null===(r=l.securityHeaders)||void 0===r||r.push({name:"Authorization",value:e.token?`${e.token.token_type||"Bearer"} ${e.token.access_token}`:"Bearer <YOUR_TOKEN_HERE>"});break;case"oauth2":{const a=e.token?`${e.token.token_type||"Bearer"} ${e.token.access_token}`:"Bearer <YOUR_TOKEN_HERE>";u.flows.clientCredentials&&t?l.securityOAuth2ExtraCalls.push(getOAuth2ClientCredsCallHar(u.flows.clientCredentials,u.scopes,e)):u.flows.password&&t&&l.securityOAuth2ExtraCalls.push(getOAuth2PasswordCallHar(u.flows.password,u.scopes,e)),null===(s=l.securityHeaders)||void 0===s||s.push({name:"Authorization",value:a});break}case"apiKey":{const t=e.raw||"YOUR_API_KEY_HERE";"header"===u.in&&(null===(i=l.securityHeaders)||void 0===i||i.push({name:u.name,value:t})),"cookie"===u.in&&l.securityCookies.push({name:u.name,value:t}),"query"===u.in&&l.securityQueries.push({name:u.name,value:t});break}case"http":if("basic"===u.scheme)l.basicAuth={username:e.username||`<${string_utility_1.default.toSnakeCase("Username")}>`,password:e.password||`<${string_utility_1.default.toSnakeCase("Password")}>`};else{const t=(null===(n=e.token)||void 0===n?void 0:n.access_token)||`<YOUR_${u.bearerFormat||"TOKEN"}_HERE>`;null===(o=l.securityHeaders)||void 0===o||o.push({name:"Authorization",value:`${capitalizeFirst(u.scheme||"bearer")} ${t}`})}}}return l}function getOAuth2PasswordCallHar(e,t,a){return{method:"POST",url:e.tokenUrl,httpVersion:"HTTP/1.1",headers:[{name:"Content-Type",value:constants_1.MediaTypes.URL_ENCODED},{name:"Accept",value:constants_1.MediaTypes.JSON}],queryString:[],postData:{mimeType:constants_1.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:constants_1.MediaTypes.URL_ENCODED},{name:"Accept",value:constants_1.MediaTypes.JSON}],queryString:[],postData:{mimeType:constants_1.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((0,theme_1.isObject)(e))return Object.keys(e).length>0&&0===Object.keys(t).length?e:(0,deepmerge_1.default)(e,t,{arrayMerge:utils_2.arrayMergeStrategy});try{return(0,deepmerge_1.default)(JSON.parse(e),t,{arrayMerge:utils_2.arrayMergeStrategy})}catch(e){return!1}}return!1}function objectToHarParams(e,t=""){const a=[];for(const[r,s]of Object.entries(e)){const e=t?`${t}[${r}]`:r;"object"==typeof s&&null!==s?a.push(...objectToHarParams(s,e)):a.push({name:e,value:String(s)})}return a}function isDefined(e){return void 0!==e}function capitalizeFirst(e){return e.charAt(0).toUpperCase()+e.slice(1)}
|
|
2
2
|
//# sourceMappingURL=generator.js.map
|
package/lib/types/open-api.d.ts
CHANGED
|
@@ -132,6 +132,13 @@ export interface OpenAPIExample extends ParsedDescriptionWithSummary {
|
|
|
132
132
|
description?: string;
|
|
133
133
|
externalValue?: string;
|
|
134
134
|
}
|
|
135
|
+
export interface XMLObject {
|
|
136
|
+
name?: string;
|
|
137
|
+
namespace?: string;
|
|
138
|
+
prefix?: string;
|
|
139
|
+
attribute?: boolean;
|
|
140
|
+
wrapped?: boolean;
|
|
141
|
+
}
|
|
135
142
|
export interface OpenAPISchema extends ParsedDescription {
|
|
136
143
|
$ref?: string;
|
|
137
144
|
type?: string | string[];
|
|
@@ -183,6 +190,7 @@ export interface OpenAPISchema extends ParsedDescription {
|
|
|
183
190
|
then?: OpenAPISchema;
|
|
184
191
|
prefixItems?: OpenAPISchema[];
|
|
185
192
|
additionalItems?: OpenAPISchema | boolean;
|
|
193
|
+
xml?: XMLObject;
|
|
186
194
|
}
|
|
187
195
|
export interface OpenAPIDiscriminator {
|
|
188
196
|
propertyName: string;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from"react/jsx-runtime";import{memo,useState,useCallback,useMemo}from"react";import styled from"styled-components";import{useAtomValue}from"jotai";import{Feedback,LayoutVariant,BeforeOpenApiOperation,AfterOpenApiOperation}from"@redocly/theme";import{SamplesMiddlePanel,SamplesPanel,ShareLink,Row,CustomBadges}from"../common";import{CallbacksList}from"../Callbacks";import{CallbackSamples}from"../CallbackSamples";import{RequestSamples}from"../RequestSamples";import{OperationResponseList}from"../Responses";import{ResponseSamples}from"../ResponseSamples";import{makeDeepLink,joinWithSeparator}from"../../services";import{layoutAtom}from"../../jotai/app";import{globalStoreAtom}from"../../jotai/store";import{getOperation}from"../../models/operation";import{RenderHook}from"../RenderHook";import{Heading,Title}from"../common/OperationItemTitle";import{LinkToField}from"../common/LinkToField";import{RequestDetails}from"../Request/RequestDetails";import{StyledBadge}from"../common/Badges";import{useTranslate}from"../../hooks";function OperationItemComponent({item:{operationDefinition:e,parent:a,href:o}}){var t,s;const l=useTranslate(),{parser:
|
|
1
|
+
import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from"react/jsx-runtime";import{memo,useState,useCallback,useMemo}from"react";import{useLocation}from"react-router-dom";import styled from"styled-components";import{useAtomValue}from"jotai";import{Feedback,LayoutVariant,BeforeOpenApiOperation,AfterOpenApiOperation,IS_BROWSER}from"@redocly/theme";import{SamplesMiddlePanel,SamplesPanel,ShareLink,Row,CustomBadges}from"../common";import{CallbacksList}from"../Callbacks";import{CallbackSamples}from"../CallbackSamples";import{RequestSamples}from"../RequestSamples";import{OperationResponseList}from"../Responses";import{ResponseSamples}from"../ResponseSamples";import{makeDeepLink,joinWithSeparator}from"../../services";import{layoutAtom}from"../../jotai/app";import{globalStoreAtom}from"../../jotai/store";import{getOperation}from"../../models/operation";import{RenderHook}from"../RenderHook";import{Heading,Title}from"../common/OperationItemTitle";import{LinkToField}from"../common/LinkToField";import{RequestDetails}from"../Request/RequestDetails";import{StyledBadge}from"../common/Badges";import{useTranslate,useIsContentVisible}from"../../hooks";import{pathIncludesLink}from"../../utils";function OperationItemComponent({item:{operationDefinition:e,parent:a,href:o}}){var t,s;const i=useLocation(),l=useMemo((()=>!IS_BROWSER||"undefined"!=typeof window||pathIncludesLink(i,e.operationId)),[i,e.operationId]),{isVisible:n,targetRef:r}=useIsContentVisible({defaultVisible:l}),p=useTranslate(),{parser:d,options:m}=useAtomValue(globalStoreAtom),c=useAtomValue(layoutAtom),[u,k]=useState(),{unstable_hooks:S,feedback:b}=m,h=useMemo((()=>getOperation(d,e,a,m,o,void 0,n)),[o,n,e,m,a,d]),{name:x,deprecated:f,isWebhook:j,badges:g}=h||{},_=c===LayoutVariant.STACKED,R=(null==b?void 0:b.type)||"sentiment",O=!0!==(null==b?void 0:b.hide),[y,v]=useState(null),C=useCallback((e=>{u!==e&&k(e)}),[u]),w=useMemo((()=>O?_jsx(FeedbackWrapper,{children:_jsx(Feedback,{type:R,settings:b.settings,path:joinWithSeparator(m.routingBasePath,h.href)})}):null),[O,R,b.settings,m.routingBasePath,h.href]);return _jsxs(OperationRow,{layout:c,ref:r,children:[_jsx(OperationSubRowStyled,{layout:c,children:_jsxs(SamplesMiddlePanel,{isStacked:_,children:[_jsx(RenderHook,{Hook:BeforeOpenApiOperation||(null==S?void 0:S.BeforeOperation),props:{operation:h}}),_jsxs(Heading,{"data-testid":"operation-item-header",children:[_jsx(ShareLink,{to:o,"aria-label":`link to ${x}`}),_jsx(CustomBadges,{badges:g,children:x}),f&&_jsx(StyledBadge,{deprecated:!0,children:p("openapi.badges.deprecated","Deprecated")}),j&&_jsx(StyledBadge,{children:p("openapi.badges.webhook","Webhook")})]})]})}),_jsxs(OperationSubRowStyled,{layout:c,children:[_jsx(SamplesMiddlePanel,{isStacked:_,children:_jsx(RequestDetails,{operation:h,translate:p})}),n&&_jsx(OperationSamplesPanel,{isStacked:_,"data-testid":"samples-block",className:"panel-container-request-samples",children:_jsx(RequestSamples,{operation:h})})]}),_jsxs(OperationSubRowStyled,{layout:c,children:[_jsx(SamplesMiddlePanel,{isStacked:_,children:(null===(t=h.responses)||void 0===t?void 0:t.length)?_jsx(OperationResponseList,{responses:h.responses,operationId:h.id,operationPointer:h.pointer,callbackId:h.callbackId,activeResponseTab:u,onTabChange:C}):null}),n&&_jsx(OperationSamplesPanel,{isStacked:_,"data-testid":"samples-block",className:"panel-container-response-samples",children:_jsx(ResponseSamples,{operation:h,activeResponseTab:u,onTabChange:C})})]}),_jsxs(OperationSubRowStyled,{layout:c,children:[_jsxs(SamplesMiddlePanel,{isStacked:_,children:[(null===(s=h.callbacks)||void 0===s?void 0:s.length)?_jsxs(_Fragment,{children:[_jsxs(Title,{children:[_jsx(LinkToField,{to:makeDeepLink(h.id,"callbacks")}),p("openapi.callbacks","Callbacks")]}),_jsx(CallbacksList,{callbacks:h.callbacks,onExpand:v,selectedCallback:y})]}):null,_jsx(RenderHook,{Hook:AfterOpenApiOperation||(null==S?void 0:S.AfterOperation),props:{operation:h}})]}),y?_jsx(OperationSamplesPanel,{isStacked:_,"data-testid":"samples-block",children:_jsx(CallbackSamples,{callback:y,translate:p})}):null]}),_jsx(OperationSubRowStyled,{layout:c,children:_jsx(SamplesMiddlePanel,{isStacked:_,fullWidth:!0,children:w})})]})}export const OperationItem=memo(OperationItemComponent);const OperationSamplesPanel=styled(SamplesPanel)`
|
|
2
2
|
margin-left: auto;
|
|
3
3
|
--code-block-padding: var(--spacing-xs) 0 var(--spacing-xs) 20px;
|
|
4
4
|
`,FeedbackWrapper=styled.div`
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as _jsx}from"react/jsx-runtime";import{render}from"@testing-library/react";import{BrowserRouter}from"react-router-dom";import{OperationItem}from"../OperationItem";import{normalizeOptions}from"../../../services";import spec from"./fixtures/petstore.json";import definition from"./fixtures/operationDefinition.json";import{environmentAtom}from"../../../jotai/app";import{globalStoreAtom}from"../../../jotai/store";jest.mock("jotai",(()=>Object.assign(Object.assign({},jest.requireActual("jotai")),{useAtomValue:jest.fn((e=>e===globalStoreAtom?{parser:{definition:spec},options:normalizeOptions({codeSamples:{languages:[{lang:"curl",label:"curl"}]}})}:e===environmentAtom?[{},""]:{})),useAtom:jest.fn((e=>e===environmentAtom?[[{server:{}}],jest.fn()]:[{activeOneOf:{"/paths/~1pet/post":0},requestValues:{},request:{expandedFields:{}},response:{expandedFields:{}},activeLanguage:"curl"},jest.fn()]))}))),describe("OperationItem",(()=>{it("should render badges with correct position",(()=>{const{getByTestId:e}=render(_jsx(OperationItem,{item:{operationDefinition:definition,parent:void 0,href:"test"}}),{wrapper:BrowserRouter}),t=e("operation-item-header").childNodes;expect(t[1].textContent).toBe("Alpha"),expect(t[3].textContent).toBe("Beta"),expect(t[4].textContent).toBe("Gamma")}))}));
|
|
1
|
+
import{jsx as _jsx}from"react/jsx-runtime";import{render}from"@testing-library/react";import{BrowserRouter}from"react-router-dom";import{OperationItem}from"../OperationItem";import{normalizeOptions}from"../../../services";import spec from"./fixtures/petstore.json";import definition from"./fixtures/operationDefinition.json";import{environmentAtom}from"../../../jotai/app";import{globalStoreAtom}from"../../../jotai/store";import{MockIntersectionObserver}from"./__mocks__/mock-intersection-observer";jest.mock("jotai",(()=>Object.assign(Object.assign({},jest.requireActual("jotai")),{useAtomValue:jest.fn((e=>e===globalStoreAtom?{parser:{definition:spec},options:normalizeOptions({codeSamples:{languages:[{lang:"curl",label:"curl"}]}})}:e===environmentAtom?[{},""]:{})),useAtom:jest.fn((e=>e===environmentAtom?[[{server:{}}],jest.fn()]:[{activeOneOf:{"/paths/~1pet/post":0},requestValues:{},request:{expandedFields:{}},response:{expandedFields:{}},activeLanguage:"curl"},jest.fn()]))}))),describe("OperationItem",(()=>{beforeAll((()=>{window.IntersectionObserver=MockIntersectionObserver})),it("should render badges with correct position",(()=>{const{getByTestId:e}=render(_jsx(OperationItem,{item:{operationDefinition:definition,parent:void 0,href:"test"}}),{wrapper:BrowserRouter}),t=e("operation-item-header").childNodes;expect(t[1].textContent).toBe("Alpha"),expect(t[3].textContent).toBe("Beta"),expect(t[4].textContent).toBe("Gamma")}))}));
|
|
2
2
|
//# sourceMappingURL=OperationItem.test.js.map
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare class MockIntersectionObserver {
|
|
2
|
+
readonly root: Element | Document | null;
|
|
3
|
+
readonly rootMargin: string;
|
|
4
|
+
readonly thresholds: ReadonlyArray<number>;
|
|
5
|
+
private viewPort;
|
|
6
|
+
private entries;
|
|
7
|
+
private readonly callback;
|
|
8
|
+
constructor(callback: IntersectionObserverCallback, options?: IntersectionObserverInit);
|
|
9
|
+
private intersect;
|
|
10
|
+
isInViewPort(target: HTMLElement): boolean;
|
|
11
|
+
observe(target: HTMLElement): void;
|
|
12
|
+
unobserve(target: HTMLElement): void;
|
|
13
|
+
disconnect(): void;
|
|
14
|
+
takeRecords(): any[];
|
|
15
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export class MockIntersectionObserver{constructor(e,t){Object.defineProperty(this,"root",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"rootMargin",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"thresholds",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"viewPort",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"entries",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"callback",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"intersect",{enumerable:!0,configurable:!0,writable:!0,value:()=>{this.entries.map((e=>{e.isIntersecting=this.isInViewPort(e.target)})),this.callback(this.entries,this)}}),this.viewPort=(null==t?void 0:t.root)?t.root:window,this.entries=[],this.root=null,this.rootMargin="0px",this.thresholds=[1],this.callback=e,this.viewPort.addEventListener("scroll",this.intersect)}isInViewPort(e){return"toc-0"!==e.id}observe(e){this.entries.push({isIntersecting:!1,target:e})}unobserve(e){this.entries=this.entries.filter((t=>t.target!==e))}disconnect(){this.viewPort.removeEventListener("scroll",this.intersect),this.entries=[]}takeRecords(){return this.entries}}
|
|
2
|
+
//# sourceMappingURL=mock-intersection-observer.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var __rest=this&&this.__rest||function(e,t){var
|
|
1
|
+
var __rest=this&&this.__rest||function(e,t){var a={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(a[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(a[o[r]]=e[o[r]])}return a};import{jsx as _jsx}from"react/jsx-runtime";import{memo,useCallback}from"react";import{useAtomValue}from"jotai";import{SelectOrLabel}from"../SelectOrLabel";import{MediaTypesSwitch}from"../MediaTypeSwitch";import{MimeLabel,Select}from"../common";import{MediaTypeSamples}from"./MediaTypeSamples";import{SelectWrapper,StyledCodeBlock}from"./styled";import{activeMimeNameAtom}from"../../jotai/app";import{useActivateExample,useTranslate}from"../../hooks";function PayloadSamplesComponent(e){var{onlyDefaultMimeType:t,content:a}=e,o=__rest(e,["onlyDefaultMimeType","content"]);const r=useActivateExample(a),l=useAtomValue(activeMimeNameAtom),m=t&&l,p=useTranslate(),s=useCallback((e=>m?null:_jsx(SelectWrapper,{children:_jsx(SelectOrLabel,Object.assign({Label:MimeLabel,Select:Select,variant:"dark",fullWidth:!0},e))})),[m]),i=e=>r(e);return a?_jsx(MediaTypesSwitch,{content:a,renderSelect:s,children:e=>_jsx(MediaTypeSamples,Object.assign({mediaType:e},o,{onChange:i}),"samples")}):_jsx(StyledCodeBlock,{lang:"text",source:p("openapi.noRequestPayload","No request payload"),header:{controls:!1}})}export const PayloadSamples=memo(PayloadSamplesComponent);
|
|
2
2
|
//# sourceMappingURL=PayloadSamples.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{isPrimitive}from"@redocly/theme";export function convertOperationToReplayValue(e,n,a
|
|
1
|
+
var __rest=this&&this.__rest||function(e,n){var t={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&n.indexOf(a)<0&&(t[a]=e[a]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(a=Object.getOwnPropertySymbols(e);i<a.length;i++)n.indexOf(a[i])<0&&Object.prototype.propertyIsEnumerable.call(e,a[i])&&(t[a[i]]=e[a[i]])}return t};import{isPrimitive}from"@redocly/theme";export function convertOperationToReplayValue(e,n,t,a){var i,r;const o=(null==a?void 0:a.activeMimeName)||"application/json";return{name:e.name,method:e.httpVerb,parameters:convertParameters(e.parameters,null==t?void 0:t.requestValues),body:convertRequestBody(e.requestBody,n,(null===(i=null==t?void 0:t.requestValues)||void 0===i?void 0:i.body)?{activeExampleName:null==t?void 0:t.activeExampleName,[o]:null===(r=null==t?void 0:t.requestValues)||void 0===r?void 0:r.body}:{activeExampleName:null==t?void 0:t.activeExampleName}),path:e.path,servers:e.servers,security:convertRequestSecurity(e.security)}}function convertParameters(e,n){const t=new Set,a=e.map((e=>{var a;return t.add(e.in+":"+e.name),{name:e.name,in:e.in,required:e.required,description:e.description,example:(null===(a=null==n?void 0:n[String(e.in)])||void 0===a?void 0:a[e.name])||e.example,schema:e.schema}}));for(const[e,i]of Object.entries(n||{}))for(const[n,r]of Object.entries(i||{}))t.has(e+":"+n)||a.push({name:n,in:e,required:!1,description:"",example:String(r),schema:void 0});return a}function getInputType({type:e,format:n,enum:t}){return"string"!==e||"binary"!==n&&"base64"!==n?"object"===e?"multiline":t.length>0?"select":"text":"file"}function getFieldExamples(e,n){var t,a,i,r,o;const l=(null===(t=e[0])||void 0===t?void 0:t.example)||(null===(a=e[0])||void 0===a?void 0:a.examples);if(l)return l;if(null===(i=e.schema)||void 0===i?void 0:i.example)return e.schema.example;const m=(null===(r=null==n?void 0:n.default)||void 0===r?void 0:r.value)||(null===(o=null==n?void 0:n.default)||void 0===o?void 0:o.rawValue);return(null==m?void 0:m[e.name])?isPrimitive(null==m?void 0:m[e.name])?String(null==m?void 0:m[e.name]):JSON.stringify(null==m?void 0:m[e.name]):""}function convertRequestBody(e,n,t){var a;if(!e||!(null===(a=e.content)||void 0===a?void 0:a.mediaTypes)){if(!t)return;const{activeExampleName:e}=t,n=__rest(t,["activeExampleName"]);return{activeExampleName:e,mediaTypes:Object.fromEntries(Object.entries(n).map((([e,n])=>[e,{name:e,examples:{default:{value:n}},schema:{},parameters:[]}])))}}return{required:e.required,activeExampleName:null==t?void 0:t.activeExampleName,mediaTypes:e.content.mediaTypes.reduce(((e,a)=>{var i,r;const o=a.schema,l=(null==t?void 0:t[a.name])?{default:{value:null==t?void 0:t[a.name],rawValue:null==t?void 0:t[a.name],mime:a.name}}:a.examples||a.formExamples;return e[a.name]={name:a.name,examples:l,schema:getBodySchema(null===(i=a.schema)||void 0===i?void 0:i.rawSchema,n),parameters:null===(r=null==o?void 0:o.fields)||void 0===r?void 0:r.map((e=>({inputType:getInputType(e.schema),name:e.name,example:getFieldExamples(e,l)})))},e}),{})}}function getBodySchema(e,n){if(e&&n)return Object.assign(Object.assign({},e),{components:(null==n?void 0:n.components)||{}})}export function convertRequestSecurity(e){if(e)return e.map((({schemes:e})=>e.map((e=>({id:e.id,type:e.type,in:e.in,openIdConnectUrl:e.openIdConnectUrl,scopes:e.scopes,scheme:e.scheme,name:e.name,flows:e.flows})))))}
|
|
2
2
|
//# sourceMappingURL=utils.js.map
|
package/lib-esm/hooks/index.d.ts
CHANGED
|
@@ -6,3 +6,4 @@ export { useContentItems } from './useContentItems';
|
|
|
6
6
|
export { useActiveWithFallback } from './useActiveWithFallback';
|
|
7
7
|
export { useUppercase2LowercaseRedirect } from './useUppercase2LowercaseRedirect';
|
|
8
8
|
export { useTranslate } from './useTranslate';
|
|
9
|
+
export { useIsContentVisible } from './useIsContentVisible';
|
package/lib-esm/hooks/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export{useDimensions}from"./useDimensions";export{usePrevious}from"./usePrevious";export{useActivateExample}from"./useActivateExample";export{useRouter}from"./useRouter";export{useContentItems}from"./useContentItems";export{useActiveWithFallback}from"./useActiveWithFallback";export{useUppercase2LowercaseRedirect}from"./useUppercase2LowercaseRedirect";export{useTranslate}from"./useTranslate";
|
|
1
|
+
export{useDimensions}from"./useDimensions";export{usePrevious}from"./usePrevious";export{useActivateExample}from"./useActivateExample";export{useRouter}from"./useRouter";export{useContentItems}from"./useContentItems";export{useActiveWithFallback}from"./useActiveWithFallback";export{useUppercase2LowercaseRedirect}from"./useUppercase2LowercaseRedirect";export{useTranslate}from"./useTranslate";export{useIsContentVisible}from"./useIsContentVisible";
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{useRef,useState}from"react";import{IS_BROWSER,useMount}from"@redocly/theme";export function useIsContentVisible({defaultVisible:e=!0}){const[t,r]=useState(e),n=useRef(null);return useMount((()=>{const e=new IntersectionObserver((([e])=>{t||r(e.isIntersecting)}),{root:null,rootMargin:IS_BROWSER&&"undefined"==typeof window?"200px":"50px",threshold:.01});return(null==n?void 0:n.current)&&e.observe(n.current),()=>{n.current&&e.unobserve(n.current)}})),{isVisible:t,targetRef:n}}
|
|
2
|
+
//# sourceMappingURL=useIsContentVisible.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import*as Sampler from"openapi-sampler";import{getSchema}from"./schema";import{isFormUrlEncoded,isJsonLike,isXmlLike,isMultipartFormData,JsonPointer,mapValues}from"../utils";import{getExamples}from"./example";function generateExamples({parser:e,info:{encoding:a,schema:i},schema:s,mime:
|
|
1
|
+
import*as Sampler from"openapi-sampler";import{getSchema}from"./schema";import{isFormUrlEncoded,isJsonLike,isXmlLike,isMultipartFormData,JsonPointer,mapValues}from"../utils";import{getExamples}from"./example";function generateExamples({parser:e,info:{encoding:a,schema:i},schema:s,mime:o,options:{isRequestType:n,onlyRequiredInSamples:r,generatedSamplesMaxDepth:m,format:t="json"}}){const p={skipReadOnly:n,skipWriteOnly:!n,skipNonRequired:n&&r,maxSampleDepth:m,quiet:!0,format:t};let l={};if(s&&s.oneOf)for(const i of s.oneOf){const n=Sampler.sample(i.rawSchema,p,e.definition);s.discriminatorProp&&"object"==typeof n&&n&&n[s.discriminatorProp]&&(n[s.discriminatorProp]=i.title),l[i.title]=getExamples({parser:e,infoOrRef:{value:n},mime:o,encoding:a})}else l=s?{default:getExamples({parser:e,infoOrRef:{value:Sampler.sample(i,p,e.definition)},mime:o,encoding:a})}:{default:{value:null,rawValue:"null"}};return l}export function getMediaType(e,a,i,s,o,{operation:n,type:r,response:m,absolutePointer:t=""}){let p,l;const d=s.schema&&getSchema({parser:e,schemaOrRef:s.schema,pointer:"",absolutePointer:JsonPointer.join(t,["content",a,"schema"]),options:o,deps:{operation:n,type:r,response:m}}),{onlyRequiredInSamples:f,generatedSamplesMaxDepth:u}=o,{encoding:c,examples:g,example:x}=s;return o.unstable_skipSamples||(void 0!==g?p=mapValues(g,(i=>getExamples({parser:e,infoOrRef:i,mime:a,encoding:c}))):void 0!==x?p={default:getExamples({parser:e,infoOrRef:{value:e.deref(x).resolved},mime:a,encoding:c})}:isJsonLike(a)||isXmlLike(a)?p=generateExamples({parser:e,info:s,schema:d,mime:a,options:{isRequestType:i,onlyRequiredInSamples:f,generatedSamplesMaxDepth:u,format:isXmlLike(a)?"xml":"json"}}):(isFormUrlEncoded(a)||isMultipartFormData(a))&&(l=generateExamples({parser:e,info:s,schema:d,mime:a,options:{isRequestType:i,onlyRequiredInSamples:f,generatedSamplesMaxDepth:u}}))),{examples:p,schema:d,name:a,isRequestType:i,formExamples:l,onlyRequiredInSamples:f,operation:n}}
|
|
2
2
|
//# sourceMappingURL=mediaType.js.map
|
|
@@ -15,5 +15,5 @@ export interface Callback {
|
|
|
15
15
|
id?: string;
|
|
16
16
|
}
|
|
17
17
|
export declare function isPayloadSample(sample: XPayloadSample | OpenAPIXCodeSample | Unstable_ExternalCodeSample): sample is XPayloadSample;
|
|
18
|
-
export declare function getOperation(parser: OpenAPIParser, operationDefinition: ExtendedOpenAPIOperation, parent: GroupModel | undefined, options: Options, href: string, callback?: Callback): OperationModel;
|
|
18
|
+
export declare function getOperation(parser: OpenAPIParser, operationDefinition: ExtendedOpenAPIOperation, parent: GroupModel | undefined, options: Options, href: string, callback?: Callback, isVisible?: boolean): OperationModel;
|
|
19
19
|
export declare function mergeInMockServer(servers: OpenAPIServer[], mockServerOptions: Options['mockServer']): OpenAPIServer[];
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{removeLeadingSlash}from"@redocly/theme";import{REDOCLY_TEAMS_RBAC}from"@redocly/config";import{extractExtensions,getOperationId,getOperationName,getStatusCodeType,getValueFromMdParsedExtension,isStatusCode,JsonPointer,mergeParams,normalizeServers,sortByDeprecated,sortByRequired}from"../utils";import{getCallback}from"./callback";import{getField}from"./field";import{getRequestBody}from"./request";import{getSecurity}from"./security";import{getResponse}from"./response";import{getHref}from"../services/menu/operation";export function isPayloadSample(e){return"Payload"===e.lang&&"requestBodyContent"in e}export function getOperation(e,r,t,o,i,s){var
|
|
1
|
+
import{removeLeadingSlash}from"@redocly/theme";import{REDOCLY_TEAMS_RBAC}from"@redocly/config";import{extractExtensions,getOperationId,getOperationName,getStatusCodeType,getValueFromMdParsedExtension,isStatusCode,JsonPointer,mergeParams,normalizeServers,sortByDeprecated,sortByRequired}from"../utils";import{getCallback}from"./callback";import{getField}from"./field";import{getRequestBody}from"./request";import{getSecurity}from"./security";import{getResponse}from"./response";import{getHref}from"../services/menu/operation";export function isPayloadSample(e){return"Payload"===e.lang&&"requestBodyContent"in e}export function getOperation(e,r,t,o,i,s,a=!0){var n,l;const p=r.isWebhook,d={operationDefinition:r,parent:t,pointer:r.pointer,description:a?getValueFromMdParsedExtension(r,"description"):"",externalDocs:r.externalDocs,deprecated:!!r.deprecated,httpVerb:r.httpVerb,operationId:r.operationId,path:r.pathName,isWebhook:p,isCallback:Boolean(null==s?void 0:s.isCallback),isEvent:(null==s?void 0:s.isCallback)||p,name:getOperationName(r),defaultExampleName:r.defaultSampleName,[REDOCLY_TEAMS_RBAC]:r[REDOCLY_TEAMS_RBAC]||(null==t?void 0:t[REDOCLY_TEAMS_RBAC]),type:"operation",callbackId:null==s?void 0:s.id,href:i,get callbacks(){return a?Object.keys(r.callbacks||[]).map((s=>{var a;return getCallback(e,s,null===(a=r.callbacks)||void 0===a?void 0:a[s],d.pointer,o,i,t)})):[]},get responses(){let t=!1;return a?Object.keys(r.responses||[]).filter((e=>"default"===e||("success"===getStatusCodeType(e)&&(t=!0),isStatusCode(e)))).map((i=>getResponse({parser:e,code:i,defaultAsError:t,infoOrRef:r.responses[i],options:o,isEvent:d.isEvent,operation:d}))):[]},get parameters(){if(!a)return[];let t=mergeParams(e,r.pathParameters,r.parameters,{pathPointer:JsonPointer.dirName(d.pointer),operationPointer:d.pointer}).map((({paramOrRef:r,pointer:t})=>getField(e,r,t,o,{operation:d,type:"request"})));return o.sortRequiredPropsFirst&&(t=sortByRequired(t)),sortByDeprecated(t)}};(null==s?void 0:s.isCallback)?(d.security=getSecurity(r.security,e),d.servers=normalizeServers("",r.servers||r.pathServers||[]),d.id=removeLeadingSlash(i)):(d.id=getOperationId(r,t),d.href=d.href||getHref(d),d.security=a?getSecurity(r.security||e.definition.security,e):[],d.servers=a?normalizeServers(e.definitionUrl,mergeInMockServer(r.servers||r.pathServers||e.definition.servers||[],o.mockServer)):[]),o.showExtensions&&(d.extensions=extractExtensions(r,o.showExtensions)),d.requestBody=a&&r.requestBody?getRequestBody({parser:e,infoOrRef:r.requestBody,options:o,operation:d,isEvent:d.isEvent}):void 0;const c=null===(n=d.requestBody)||void 0===n?void 0:n.content;return d.payload={lang:"Payload",source:"",requestBodyContent:(null==c?void 0:c.hasSample)?c:void 0},d.definitionSamples=r["x-codeSamples"]||[],d.badges=(null===(l=r["x-badges"])||void 0===l?void 0:l.map((({name:e,color:r,position:t})=>({name:e,color:r||"var(--color-info-base)",position:t||"after"}))))||[],d.hasSamples=(null==c?void 0:c.hasSample)||d.definitionSamples.length>0,d.hideReplay=!0===r["x-hideReplay"],d}export function mergeInMockServer(e,r){if(!r)return e;const t={url:r.url,description:r.description};switch(r.position){case"first":return[t,...e];case"last":return[...e,t];case"replace":return[t];default:return e}}
|
|
2
2
|
//# sourceMappingURL=operation.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import*as Sampler from"openapi-sampler";import merge from"deepmerge";import{
|
|
1
|
+
import*as Sampler from"openapi-sampler";import merge from"deepmerge";import{isObject}from"@redocly/theme";import{areArraysEqual,serializeParameterValue,getSecurityDetails,getParameterValue,queryString,isArrayOfObjects,deleteEmptyArrayItem}from"../../utils";import{normalizeMimeType,arrayMergeStrategy}from"../utils";import{MediaTypes}from"../../constants";import{HTTPSnippet}from"./httpsnippet";import{getActiveMediaType}from"../../models/mediaContent";import StringUtility from"./httpsnippet/helpers/string-utility";function getSelectedSecurityScheme(e,t){return e.find((e=>{const a=e.schemes.map((e=>e.id));return areArraysEqual(a,t||[])}))}function mapOperationToHAR(e,{exampleName:t="",skipOptionalParameters:a=!1,withOAuth2Call:r=!1,spec:s,generatedPayloadSamplesMaxDepth:i=8,pathParams:n={},properties:o={}},{environment:l,requestValues:u,activeSecuritySchemeIds:p}){var c,d,m;const h=l.server,y=e.servers.find((e=>e.url===h))||e.servers[0],f=getSelectedSecurityScheme(e.security,p),{securityHeaders:g,securityCookies:O,securityQueries:v,securityOAuth2ExtraCalls:S,basicAuth:T}=getSecurityData(f||(null===(c=e.security)||void 0===c?void 0:c[0]),r,l),C=(null===(d=null==e?void 0:e.requestBody)||void 0===d?void 0:d.content)&&getActiveMediaType(e.requestBody.content),b={skipNonRequired:a,skipReadOnly:!0,maxSampleDepth:i,quiet:!0},E=u;let j=!1;const _=e.parameters.filter((e=>"header"===e.in)).filter((e=>!(a&&!e.required))).map((e=>{var t;return{name:e.name,value:(null===(t=E.header)||void 0===t?void 0:t[e.name])||getParameterValue("header",e.name)||serializeParameterValue(e,Sampler.sample(e.schema.rawSchema,b,s))}})).map((e=>((null==C?void 0:C.name)&&"content-type"===e.name.toLowerCase()&&(j=!0,e.value=C.name),e))).concat(g);!j&&(null==C?void 0:C.name)&&_.unshift({name:"Content-Type",value:null==C?void 0:C.name});const k=e.parameters.filter((e=>"cookie"===e.in)).filter((e=>!(a&&!e.required))).map((e=>queryString.parse(serializeParameterValue(e,Sampler.sample(e.schema.rawSchema,b,s))))).reduce(((e,t)=>{var a;for(const[r,s]of Object.entries(t))e.push({name:r,value:String((null===(a=E.cookie)||void 0===a?void 0:a[r])||s)});return e}),[]).concat(O),A=e.parameters.filter((e=>"query"===e.in)).filter((e=>!(a&&!e.required))).map((e=>queryString.parse(serializeParameterValue(e,Sampler.sample(e.schema.rawSchema,b,s))))).reduce(((e,t)=>{var a,r,s;for(const[i,n]of Object.entries(t))e.push({name:i,value:isArrayOfObjects(null===(a=E.query)||void 0===a?void 0:a[i])&&JSON.stringify(deleteEmptyArrayItem(null===(r=E.query)||void 0===r?void 0:r[i]))||String((null===(s=E.query)||void 0===s?void 0:s[i])||n)});return e}),[]).concat(v),P=`${null==y?void 0:y.url.replace(/\/$/,"")}/${e.path.replace(/^\//,"")}`,w=e.parameters.filter((e=>"path"===e.in)).reduce(((e,t)=>{var a;const{in:r,name:s}=t;return e[s]=(null===(a=E.path)||void 0===a?void 0:a[s])||n[s]||getParameterValue(r,s),e}),{}),R=null===(m=null==C?void 0:C.examples)||void 0===m?void 0:m[t],D=(null==C?void 0:C.examples)||{},[q]=Object.values(D),M=null==C?void 0:C.name.toLowerCase(),H=(null==E?void 0:E.body)||(null==R?void 0:R.value)||(null==q?void 0:q.value)||(null==C?void 0:C.schema)&&Sampler.sample(null==C?void 0:C.schema.rawSchema,Object.assign(Object.assign({},b),{format:M===MediaTypes.XML?"xml":"json"}),s);let N="",x=[];switch(normalizeMimeType(M)){case MediaTypes.JSON:N=JSON.stringify(getDataRequest(H,o));break;case MediaTypes.XML:N=H;break;case MediaTypes.URL_ENCODED:case MediaTypes.MULTIPART:N=queryString.stringify(getDataRequest(H,o)),x=objectToHarParams(getDataRequest(H,o));break;default:N=String(H||"")}const U=N?{mimeType:(null==C?void 0:C.name)||MediaTypes.OCTET_STREAM,text:N,params:x}:void 0,z=e.responses.map((e=>e.code));return{method:e.httpVerb,url:P,httpVersion:"HTTP/1.1",cookies:k,headers:_,queryString:A,postData:U,headersSize:-1,bodySize:-1,securityOAuth2ExtraCalls:S,basicAuth:T,pathParameters:w,serverVariables:l,allResponseCodes:z}}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)},"C#+Newtonsoft":{code:"csharpNewtonsoft",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:s,options:i={},environment:n,translate:o}){try{const{skipOptionalParameters:l,withOAuth2Call:u,spec:p,generatedPayloadSamplesMaxDepth:c,store:d}=i,m=mapOperationToHAR(t,{exampleName:a,pathParams:r,properties:s,skipOptionalParameters:l,withOAuth2Call:u,spec:p,generatedPayloadSamplesMaxDepth:c},{environment:n,requestValues:d.requestValues,activeSecuritySchemeIds:d.activeSecuritySchemeIds}),h=new HTTPSnippet(m);return langToSnippetConfig[e]?h.convert(langToSnippetConfig[e].code,langToSnippetConfig[e].defaultTarget,Object.assign(Object.assign({},langToSnippetConfig[e].defaultOptions),i)):o("openapi.unsupportedLanguage","Language is not supported.")}catch(e){return console.error(e),o("openapi.failedToGenerateCodeSample","Failed to generate code sample.")}}function getSecurityData(e,t,a){var r,s,i,n,o;const l={securityHeaders:[],securityCookies:[],securityQueries:[],securityOAuth2ExtraCalls:[],basicAuth:void 0};for(const u of(null==e?void 0:e.schemes)||[]){const e=getSecurityDetails(u.id,a);switch(u.type){case"openIdConnect":null===(r=l.securityHeaders)||void 0===r||r.push({name:"Authorization",value:e.token?`${e.token.token_type||"Bearer"} ${e.token.access_token}`:"Bearer <YOUR_TOKEN_HERE>"});break;case"oauth2":{const a=e.token?`${e.token.token_type||"Bearer"} ${e.token.access_token}`:"Bearer <YOUR_TOKEN_HERE>";u.flows.clientCredentials&&t?l.securityOAuth2ExtraCalls.push(getOAuth2ClientCredsCallHar(u.flows.clientCredentials,u.scopes,e)):u.flows.password&&t&&l.securityOAuth2ExtraCalls.push(getOAuth2PasswordCallHar(u.flows.password,u.scopes,e)),null===(s=l.securityHeaders)||void 0===s||s.push({name:"Authorization",value:a});break}case"apiKey":{const t=e.raw||"YOUR_API_KEY_HERE";"header"===u.in&&(null===(i=l.securityHeaders)||void 0===i||i.push({name:u.name,value:t})),"cookie"===u.in&&l.securityCookies.push({name:u.name,value:t}),"query"===u.in&&l.securityQueries.push({name:u.name,value:t});break}case"http":if("basic"===u.scheme)l.basicAuth={username:e.username||`<${StringUtility.toSnakeCase("Username")}>`,password:e.password||`<${StringUtility.toSnakeCase("Password")}>`};else{const t=(null===(n=e.token)||void 0===n?void 0:n.access_token)||`<YOUR_${u.bearerFormat||"TOKEN"}_HERE>`;null===(o=l.securityHeaders)||void 0===o||o.push({name:"Authorization",value:`${capitalizeFirst(u.scheme||"bearer")} ${t}`})}}}return l}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:[]}}export function getDataRequest(e,t){if(e){if(isObject(e))return Object.keys(e).length>0&&0===Object.keys(t).length?e:merge(e,t,{arrayMerge:arrayMergeStrategy});try{return merge(JSON.parse(e),t,{arrayMerge:arrayMergeStrategy})}catch(e){return!1}}return!1}function objectToHarParams(e,t=""){const a=[];for(const[r,s]of Object.entries(e)){const e=t?`${t}[${r}]`:r;"object"==typeof s&&null!==s?a.push(...objectToHarParams(s,e)):a.push({name:e,value:String(s)})}return a}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
|
|
@@ -132,6 +132,13 @@ export interface OpenAPIExample extends ParsedDescriptionWithSummary {
|
|
|
132
132
|
description?: string;
|
|
133
133
|
externalValue?: string;
|
|
134
134
|
}
|
|
135
|
+
export interface XMLObject {
|
|
136
|
+
name?: string;
|
|
137
|
+
namespace?: string;
|
|
138
|
+
prefix?: string;
|
|
139
|
+
attribute?: boolean;
|
|
140
|
+
wrapped?: boolean;
|
|
141
|
+
}
|
|
135
142
|
export interface OpenAPISchema extends ParsedDescription {
|
|
136
143
|
$ref?: string;
|
|
137
144
|
type?: string | string[];
|
|
@@ -183,6 +190,7 @@ export interface OpenAPISchema extends ParsedDescription {
|
|
|
183
190
|
then?: OpenAPISchema;
|
|
184
191
|
prefixItems?: OpenAPISchema[];
|
|
185
192
|
additionalItems?: OpenAPISchema | boolean;
|
|
193
|
+
xml?: XMLObject;
|
|
186
194
|
}
|
|
187
195
|
export interface OpenAPIDiscriminator {
|
|
188
196
|
propertyName: string;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@redocly/openapi-docs",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.5.0",
|
|
4
4
|
"description": "Redocly OpenAPI Docs",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "lib-esm/index.js",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"jotai": "^2.4.2",
|
|
32
32
|
"json-pointer": "^0.6.2",
|
|
33
33
|
"jstoxml": "^5.0.2",
|
|
34
|
-
"openapi-sampler": "^1.
|
|
34
|
+
"openapi-sampler": "^1.6.0",
|
|
35
35
|
"path-browserify": "^1.0.1",
|
|
36
36
|
"prismjs": "1.29.0",
|
|
37
37
|
"react-router-dom": "^6.21.1",
|
|
@@ -44,8 +44,8 @@
|
|
|
44
44
|
"url": "~0.11.0",
|
|
45
45
|
"url-template": "^2.0.8",
|
|
46
46
|
"util": "~0.12.5",
|
|
47
|
-
"@redocly/config": "0.
|
|
48
|
-
"@redocly/replay": "0.
|
|
47
|
+
"@redocly/config": "0.17.0",
|
|
48
|
+
"@redocly/replay": "0.8.0"
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
51
|
"@testing-library/jest-dom": "6.1.5",
|
|
@@ -93,7 +93,7 @@
|
|
|
93
93
|
"webpack": "5.94.0",
|
|
94
94
|
"webpack-cli": "5.1.4",
|
|
95
95
|
"webpack-dev-server": "5.1.0",
|
|
96
|
-
"@redocly/theme": "0.45.
|
|
96
|
+
"@redocly/theme": "0.45.7"
|
|
97
97
|
},
|
|
98
98
|
"scripts": {
|
|
99
99
|
"start": "webpack serve --mode=development --hot",
|