@redocly/openapi-docs 0.0.0-beta-20240401150337 → 0.0.0-beta-20240403150855

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/dist/redocly-openapi-docs.min.js +1011 -983
  2. package/lib/components/OperationItem/OperationItem.js +4 -1
  3. package/lib/components/OperationItem/_tests_/OperationItem.test.d.ts +1 -0
  4. package/lib/components/OperationItem/_tests_/OperationItem.test.js +2 -0
  5. package/lib/components/PanelItem/styled.js +2 -0
  6. package/lib/components/ServerListDropdown/ServerListDropdown.js +1 -1
  7. package/lib/components/ServerListDropdown/styled.d.ts +12 -0
  8. package/lib/components/ServerListDropdown/styled.js +6 -2
  9. package/lib/components/SideMenu/hooks/useMenuItems.js +1 -1
  10. package/lib/components/common/OperationItemTitle.js +5 -0
  11. package/lib/models/operation.js +1 -1
  12. package/lib/models/types.d.ts +3 -1
  13. package/lib/services/menu/operation.js +1 -1
  14. package/lib/types/open-api.d.ts +6 -0
  15. package/lib/utils/openapi.js +1 -1
  16. package/lib-esm/components/OperationItem/OperationItem.js +5 -2
  17. package/lib-esm/components/OperationItem/_tests_/OperationItem.test.d.ts +1 -0
  18. package/lib-esm/components/OperationItem/_tests_/OperationItem.test.js +2 -0
  19. package/lib-esm/components/PanelItem/styled.js +2 -0
  20. package/lib-esm/components/ServerListDropdown/ServerListDropdown.js +1 -1
  21. package/lib-esm/components/ServerListDropdown/styled.d.ts +12 -0
  22. package/lib-esm/components/ServerListDropdown/styled.js +6 -2
  23. package/lib-esm/components/SideMenu/hooks/useMenuItems.js +1 -1
  24. package/lib-esm/components/common/OperationItemTitle.js +5 -0
  25. package/lib-esm/models/operation.js +1 -1
  26. package/lib-esm/models/types.d.ts +3 -1
  27. package/lib-esm/services/menu/operation.js +1 -1
  28. package/lib-esm/types/open-api.d.ts +6 -0
  29. package/lib-esm/utils/openapi.js +1 -1
  30. package/package.json +4 -4
@@ -1,7 +1,7 @@
1
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"),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
- `;function OperationItemComponent({item:{operationDefinition:e,parent:t,href:s}}){var a,o;const{parser:n,options:i}=(0,jotai_1.useAtomValue)(store_1.globalStoreAtom),r=(0,jotai_1.useAtomValue)(app_1.layoutAtom),[l,p]=(0,react_1.useState)(),{unstable_hooks:_,feedback:m}=i,c=(0,react_1.useMemo)((()=>(0,operation_1.getOperation)(n,e,t,i,s)),[s,e,i,t,n]),{name:u,deprecated:d,isWebhook:x}=c,j=r===theme_1.LayoutVariant.STACKED,k=(null==m?void 0:m.type)||"sentiment",S=!0!==(null==m?void 0:m.hide),[h,b]=(0,react_1.useState)(null),R=(0,react_1.useCallback)((e=>{l!==e&&p(e)}),[l]);return(0,jsx_runtime_1.jsxs)(OperationRow,{layout:r,children:[(0,jsx_runtime_1.jsx)(OperationSubRowStyled,{layout:r,children:(0,jsx_runtime_1.jsxs)(common_1.SamplesMiddlePanel,{isStacked:j,children:[(0,jsx_runtime_1.jsx)(RenderHook_1.RenderHook,{Hook:theme_1.BeforeOpenApiOperation||(null==_?void 0:_.BeforeOperation),props:{operation:c}}),(0,jsx_runtime_1.jsxs)(OperationItemTitle_1.Heading,{children:[(0,jsx_runtime_1.jsx)(common_1.ShareLink,{to:s,"aria-label":`link to ${u}`}),(0,jsx_runtime_1.jsx)(RenderHook_1.RenderHook,{Hook:theme_1.BeforeOpenApiOperationSummary||(null==_?void 0:_.BeforeOperationSummary),props:{operation:c}}),u,(0,jsx_runtime_1.jsx)(RenderHook_1.RenderHook,{Hook:theme_1.AfterOpenApiOperationSummary||(null==_?void 0:_.AfterOperationSummary),props:{operation:c}}),d&&(0,jsx_runtime_1.jsx)(theme_1.Badge,{deprecated:!0,children:"Deprecated"}),x&&(0,jsx_runtime_1.jsx)(theme_1.Badge,{children:"Webhook"})]})]})}),(0,jsx_runtime_1.jsxs)(OperationSubRowStyled,{layout:r,children:[(0,jsx_runtime_1.jsx)(common_1.SamplesMiddlePanel,{isStacked:j,children:(0,jsx_runtime_1.jsx)(RequestDetails_1.RequestDetails,{operation:c})}),(0,jsx_runtime_1.jsx)(OperationSamplesPanel,{isStacked:j,"data-cy":"samples-block",className:"panel-container-request-samples",children:(0,jsx_runtime_1.jsx)(RequestSamples_1.RequestSamples,{operation:c})})]}),(0,jsx_runtime_1.jsxs)(OperationSubRowStyled,{layout:r,children:[(0,jsx_runtime_1.jsx)(common_1.SamplesMiddlePanel,{isStacked:j,children:(null===(a=c.responses)||void 0===a?void 0:a.length)?(0,jsx_runtime_1.jsx)(Responses_1.OperationResponseList,{responses:c.responses,operationId:c.id,operationPointer:c.pointer,callbackId:c.callbackId,activeResponseTab:l,onTabChange:R}):null}),(0,jsx_runtime_1.jsx)(OperationSamplesPanel,{isStacked:j,"data-cy":"samples-block",className:"panel-container-response-samples",children:(0,jsx_runtime_1.jsx)(ResponseSamples_1.ResponseSamples,{operation:c,activeResponseTab:l,onTabChange:R})})]}),(0,jsx_runtime_1.jsxs)(OperationSubRowStyled,{layout:r,children:[(0,jsx_runtime_1.jsxs)(common_1.SamplesMiddlePanel,{isStacked:j,children:[(null===(o=c.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)(c.id,"callbacks")}),"Callbacks"]}),(0,jsx_runtime_1.jsx)(Callbacks_1.CallbacksList,{callbacks:c.callbacks,onExpand:b,selectedCallback:h})]}):null,(0,jsx_runtime_1.jsx)(RenderHook_1.RenderHook,{Hook:theme_1.AfterOpenApiOperation||(null==_?void 0:_.AfterOperation),props:{operation:c}})]}),h?(0,jsx_runtime_1.jsx)(OperationSamplesPanel,{isStacked:j,"data-cy":"samples-block",children:(0,jsx_runtime_1.jsx)(CallbackSamples_1.CallbackSamples,{callback:h})}):null]}),(0,jsx_runtime_1.jsx)(OperationSubRowStyled,{layout:r,children:(0,jsx_runtime_1.jsx)(common_1.SamplesMiddlePanel,{isStacked:j,fullWidth:!0,children:S?(0,jsx_runtime_1.jsx)(FeedbackWrapper,{children:(0,jsx_runtime_1.jsx)(theme_1.Feedback,{type:k,settings:m.settings,path:c.href})}):null})})]})}exports.OperationItem=(0,react_1.memo)(OperationItemComponent);const FeedbackWrapper=styled_components_1.default.div`
4
+ `;function OperationItemComponent({item:{operationDefinition:e,parent:t,href:a}}){var s,n;const{parser:o,options:i}=(0,jotai_1.useAtomValue)(store_1.globalStoreAtom),r=(0,jotai_1.useAtomValue)(app_1.layoutAtom),[l,p]=(0,react_1.useState)(),{unstable_hooks:_,feedback:m}=i,c=(0,react_1.useMemo)((()=>(0,operation_1.getOperation)(o,e,t,i,a)),[a,e,i,t,o]),{name:d,deprecated:u,isWebhook:x,badges:j}=c,k=r===theme_1.LayoutVariant.STACKED,h=(null==m?void 0:m.type)||"sentiment",b=!0!==(null==m?void 0:m.hide),S=j.filter((({position:e})=>"before"===e)),R=j.filter((({position:e})=>"after"===e)),[O,f]=(0,react_1.useState)(null),y=(0,react_1.useCallback)((e=>{l!==e&&p(e)}),[l]);return(0,jsx_runtime_1.jsxs)(OperationRow,{layout:r,children:[(0,jsx_runtime_1.jsx)(OperationSubRowStyled,{layout:r,children:(0,jsx_runtime_1.jsxs)(common_1.SamplesMiddlePanel,{isStacked:k,children:[(0,jsx_runtime_1.jsx)(RenderHook_1.RenderHook,{Hook:theme_1.BeforeOpenApiOperation||(null==_?void 0:_.BeforeOperation),props:{operation:c}}),(0,jsx_runtime_1.jsxs)(OperationItemTitle_1.Heading,{"data-cy":"operation-item-header",children:[(0,jsx_runtime_1.jsx)(common_1.ShareLink,{to:a,"aria-label":`link to ${d}`}),S.map((({name:e,color:t})=>(0,jsx_runtime_1.jsx)(OperationBadge,{color:t,children:e},e))),d,R.map((({name:e,color:t})=>(0,jsx_runtime_1.jsx)(OperationBadge,{color:t,children:e},e))),u&&(0,jsx_runtime_1.jsx)(OperationBadge,{deprecated:!0,children:"Deprecated"}),x&&(0,jsx_runtime_1.jsx)(OperationBadge,{children:"Webhook"})]})]})}),(0,jsx_runtime_1.jsxs)(OperationSubRowStyled,{layout:r,children:[(0,jsx_runtime_1.jsx)(common_1.SamplesMiddlePanel,{isStacked:k,children:(0,jsx_runtime_1.jsx)(RequestDetails_1.RequestDetails,{operation:c})}),(0,jsx_runtime_1.jsx)(OperationSamplesPanel,{isStacked:k,"data-cy":"samples-block",className:"panel-container-request-samples",children:(0,jsx_runtime_1.jsx)(RequestSamples_1.RequestSamples,{operation:c})})]}),(0,jsx_runtime_1.jsxs)(OperationSubRowStyled,{layout:r,children:[(0,jsx_runtime_1.jsx)(common_1.SamplesMiddlePanel,{isStacked:k,children:(null===(s=c.responses)||void 0===s?void 0:s.length)?(0,jsx_runtime_1.jsx)(Responses_1.OperationResponseList,{responses:c.responses,operationId:c.id,operationPointer:c.pointer,callbackId:c.callbackId,activeResponseTab:l,onTabChange:y}):null}),(0,jsx_runtime_1.jsx)(OperationSamplesPanel,{isStacked:k,"data-cy":"samples-block",className:"panel-container-response-samples",children:(0,jsx_runtime_1.jsx)(ResponseSamples_1.ResponseSamples,{operation:c,activeResponseTab:l,onTabChange:y})})]}),(0,jsx_runtime_1.jsxs)(OperationSubRowStyled,{layout:r,children:[(0,jsx_runtime_1.jsxs)(common_1.SamplesMiddlePanel,{isStacked:k,children:[(null===(n=c.callbacks)||void 0===n?void 0:n.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)(c.id,"callbacks")}),"Callbacks"]}),(0,jsx_runtime_1.jsx)(Callbacks_1.CallbacksList,{callbacks:c.callbacks,onExpand:f,selectedCallback:O})]}):null,(0,jsx_runtime_1.jsx)(RenderHook_1.RenderHook,{Hook:theme_1.AfterOpenApiOperation||(null==_?void 0:_.AfterOperation),props:{operation:c}})]}),O?(0,jsx_runtime_1.jsx)(OperationSamplesPanel,{isStacked:k,"data-cy":"samples-block",children:(0,jsx_runtime_1.jsx)(CallbackSamples_1.CallbackSamples,{callback:O})}):null]}),(0,jsx_runtime_1.jsx)(OperationSubRowStyled,{layout:r,children:(0,jsx_runtime_1.jsx)(common_1.SamplesMiddlePanel,{isStacked:k,fullWidth:!0,children:b?(0,jsx_runtime_1.jsx)(FeedbackWrapper,{children:(0,jsx_runtime_1.jsx)(theme_1.Feedback,{type:h,settings:m.settings,path:c.href})}):null})})]})}exports.OperationItem=(0,react_1.memo)(OperationItemComponent);const FeedbackWrapper=styled_components_1.default.div`
5
5
  & > div {
6
6
  flex: 1 1 auto;
7
7
  display: flex;
@@ -18,5 +18,8 @@
18
18
  padding: var(--spacing-base) 0 calc(var(--spacing-xl) + var(--spacing-xs));
19
19
  `,OperationSubRowStyled=(0,styled_components_1.default)(common_1.Row)`
20
20
  margin: calc(var(--spacing-unit) * 2) 0;
21
+ `,OperationBadge=(0,styled_components_1.default)(theme_1.Badge)`
22
+ margin: 0;
23
+ background-color: ${({color:e})=>e};
21
24
  `;
22
25
  //# sourceMappingURL=OperationItem.js.map
@@ -0,0 +1,2 @@
1
+ "use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var o=Object.getOwnPropertyDescriptor(t,r);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,o)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),__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 r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&__createBinding(t,e,r);return __setModuleDefault(t,e),t},__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"),Jotai=__importStar(require("jotai")),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"));jest.mock("jotai",(()=>Object.assign(Object.assign({},jest.requireActual("jotai")),{useAtomValue:jest.fn(),useAtom:jest.fn()}))),jest.spyOn(Jotai,"useAtomValue").mockReturnValue({parser:{definition:petstore_json_1.default},options:(0,services_1.normalizeOptions)({codeSamples:{languages:[{lang:"curl",label:"curl"}]}})}),jest.spyOn(Jotai,"useAtom").mockReturnValue([{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")}))}));
2
+ //# sourceMappingURL=OperationItem.test.js.map
@@ -43,6 +43,8 @@
43
43
  line-height: var(--line-height-base);
44
44
  font-weight: var(--font-weight-medium);
45
45
  `,exports.StyledCheckmarkIcon=(0,styled_components_1.default)(theme_1.CheckmarkIcon)`
46
+ width: 14px;
47
+ height: 14px;
46
48
  position: absolute;
47
49
  left: -18px;
48
50
  bottom: 3px;
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.ServerListDropdown=void 0;const jsx_runtime_1=require("react/jsx-runtime"),react_1=require("react"),theme_1=require("@redocly/theme"),jotai_1=require("jotai"),shared_1=require("../shared"),styled_1=require("./styled"),PanelItem_1=require("../PanelItem"),services_1=require("../../services"),utils_1=require("../../utils"),app_1=require("../../jotai/app"),hooks_1=require("../../hooks"),environments_1=require("../../utils/environments"),ServerListDropdown=({operation:e,className:r})=>{const[t,s]=(0,jotai_1.useAtom)(app_1.environmentAtom),i=(0,hooks_1.useActiveWithFallback)(e.servers.map((e=>Object.assign(Object.assign({},e),{key:e.url}))),t.server),n=(0,react_1.useMemo)((()=>e.servers.map((r=>{const t=(0,utils_1.replaceVariables)(r),n=(0,services_1.joinWithSeparator)(t,e.path);return(0,jsx_runtime_1.jsx)(styled_1.ServerItemWrap,{onClick:()=>(r=>{1!==e.servers.length&&s({environment:(0,environments_1.getServerEnvName)(r)})})(r),children:(0,jsx_runtime_1.jsx)(PanelItem_1.PanelItem,{header:r.description,title:(0,utils_1.replaceVariables)(r),actions:[(0,jsx_runtime_1.jsx)(theme_1.CopyButton,{data:n},n)],active:r.url===i,withCheckmark:!0})},n)}))),[e.servers,e.path,s,i]);return(0,jsx_runtime_1.jsx)(theme_1.Dropdown,{items:n,withArrow:!0,className:r,children:(0,jsx_runtime_1.jsxs)(styled_1.PathWrapper,{children:[(0,jsx_runtime_1.jsx)(shared_1.HttpVerb,{color:e.httpVerb,children:e.httpVerb}),(0,jsx_runtime_1.jsx)(styled_1.Path,{children:e.path})]})})};exports.ServerListDropdown=ServerListDropdown;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.ServerListDropdown=void 0;const jsx_runtime_1=require("react/jsx-runtime"),react_1=require("react"),theme_1=require("@redocly/theme"),jotai_1=require("jotai"),shared_1=require("../shared"),styled_1=require("./styled"),PanelItem_1=require("../PanelItem"),services_1=require("../../services"),utils_1=require("../../utils"),app_1=require("../../jotai/app"),hooks_1=require("../../hooks"),environments_1=require("../../utils/environments"),ServerListDropdown=({operation:e,className:r})=>{const[t,s]=(0,jotai_1.useAtom)(app_1.environmentAtom),i=(0,hooks_1.useActiveWithFallback)(e.servers.map((e=>Object.assign(Object.assign({},e),{key:e.url}))),t.server),n=e=>{e.stopPropagation()},a=(0,react_1.useMemo)((()=>e.servers.map((r=>{const t=(0,utils_1.replaceVariables)(r),a=(0,services_1.joinWithSeparator)(t,e.path);return(0,jsx_runtime_1.jsx)(styled_1.ServerItemWrap,{onClick:()=>(r=>{1!==e.servers.length&&s({environment:(0,environments_1.getServerEnvName)(r)})})(r),children:(0,jsx_runtime_1.jsx)(PanelItem_1.PanelItem,{header:r.description,title:(0,utils_1.replaceVariables)(r),actions:[(0,jsx_runtime_1.jsx)(styled_1.StyledCopyButton,{data:a,toasterPlacement:"left",onCopyClick:n},a)],active:r.url===i,withCheckmark:!0})},a)}))),[e.servers,e.path,s,i]);return(0,jsx_runtime_1.jsx)(theme_1.Dropdown,{items:a,withArrow:!0,className:r,children:(0,jsx_runtime_1.jsxs)(styled_1.PathWrapper,{children:[(0,jsx_runtime_1.jsx)(shared_1.HttpVerb,{color:e.httpVerb,children:e.httpVerb}),(0,jsx_runtime_1.jsx)(styled_1.Path,{children:e.path})]})})};exports.ServerListDropdown=ServerListDropdown;
2
2
  //# sourceMappingURL=ServerListDropdown.js.map
@@ -1,3 +1,15 @@
1
+ /// <reference types="react" />
1
2
  export declare const PathWrapper: import("styled-components").StyledComponent<"div", any, {}, never>;
2
3
  export declare const Path: import("styled-components").StyledComponent<"span", any, {}, never>;
3
4
  export declare const ServerItemWrap: import("styled-components").StyledComponent<"div", any, {}, never>;
5
+ export declare const StyledCopyButton: import("styled-components").StyledComponent<import("react").NamedExoticComponent<{
6
+ data: unknown;
7
+ type?: import("@redocly/theme").ControlItemType | undefined;
8
+ toasterPlacement?: "left" | "right" | "top" | "bottom" | undefined;
9
+ toasterText?: string | undefined;
10
+ toasterDuration?: number | undefined;
11
+ buttonText?: string | undefined;
12
+ onCopyClick?: ((e: import("react").MouseEvent<HTMLElement, MouseEvent>) => void) | undefined;
13
+ dataTestId?: string | undefined;
14
+ className?: string | undefined;
15
+ }>, any, {}, never>;
@@ -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.ServerItemWrap=exports.Path=exports.PathWrapper=void 0;const styled_components_1=__importDefault(require("styled-components")),theme_1=require("@redocly/theme");exports.PathWrapper=styled_components_1.default.div`
1
+ "use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.StyledCopyButton=exports.ServerItemWrap=exports.Path=exports.PathWrapper=void 0;const styled_components_1=__importDefault(require("styled-components")),theme_1=require("@redocly/theme");exports.PathWrapper=styled_components_1.default.div`
2
2
  display: inline-flex;
3
3
  align-items: flex-end;
4
4
  overflow-x: hidden;
@@ -12,9 +12,13 @@
12
12
  font-size: var(--font-size-base);
13
13
  `,exports.ServerItemWrap=styled_components_1.default.div`
14
14
  padding: calc(var(--spacing-unit) * 1.5) var(--spacing-xs) calc(var(--spacing-unit) * 1.5)
15
- var(--spacing-md);
15
+ var(--spacing-lg);
16
16
  @media screen and (max-width: ${theme_1.breakpoints.large}) {
17
17
  max-width: 280px;
18
18
  }
19
+ `,exports.StyledCopyButton=(0,styled_components_1.default)(theme_1.CopyButton)`
20
+ :hover {
21
+ background-color: var(--dropdown-list-item-bg-color-hover);
22
+ }
19
23
  `;
20
24
  //# sourceMappingURL=styled.js.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.useMenuItems=void 0;const theme_1=require("@redocly/theme"),react_1=require("react"),react_router_dom_1=require("react-router-dom"),utils_1=require("../../../utils");function useMenuItems({items:e}){const t=(0,react_router_dom_1.useLocation)(),s=(0,theme_1.useActiveSectionId)(t,!1,!1);return(0,react_1.useMemo)((()=>mapAndSetActiveItems(e,s,t)),[s,e,t])}function mapAndSetActiveItems(e,t="",s){const i=[];return convertOpenAPIDocs2Sidebar({contentItems:e,sidebarItems:i,activeItemId:t,location:s}),i}function isItemActive(e,t="",s){return!!e.href&&(t?e.id===t:(0,utils_1.pathMatchedLink)(s,e.href))}function isSubItemActive(e,t="",s){return(e.items||[]).some((e=>isItemActive(e,t,s)||isSubItemActive(e,t,s)))}function convertOpenAPIDocs2Sidebar(e){const{contentItems:t,sidebarItems:s,activeItemId:i,location:c}=e;let n=!0;for(const r of t){const t=isItemActive(r,i,c),o=isSubItemActive(r,i,c);switch(r.type){case"group":s.push({type:"separator",label:r.name,active:t,hasActiveSubItem:o}),convertOpenAPIDocs2Sidebar(Object.assign(Object.assign({},e),{contentItems:r.items,sidebarItems:s}));break;case"tag":const a={type:"group",label:r.name,items:[],link:r.href,active:t,hasActiveSubItem:o};s.push(a),convertOpenAPIDocs2Sidebar({contentItems:r.items,sidebarItems:a.items||[],activeItemId:i,location:c});break;case"operation":case"schema":r.isWebhook&&n&&(s.push({type:"separator",label:"Webhooks",variant:"secondary"}),n=!1),s.push({type:"link",label:r.name,httpVerb:"schema"===r.type?"schema":r.httpVerb,link:r.href,active:t,hasActiveSubItem:o});break;case"section":if(-1===r.depth)continue;const m={type:r.items.length?"group":"link",label:r.name,link:r.href,items:[],active:t,hasActiveSubItem:o};s.push(m),r.items.length&&convertOpenAPIDocs2Sidebar({contentItems:r.items,sidebarItems:m.items,activeItemId:i,location:c})}}}exports.useMenuItems=useMenuItems;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.useMenuItems=void 0;const theme_1=require("@redocly/theme"),react_1=require("react"),react_router_dom_1=require("react-router-dom"),utils_1=require("../../../utils");function useMenuItems({items:e}){const t=(0,react_router_dom_1.useLocation)(),s=(0,theme_1.useActiveSectionId)(t,!1,!1);return(0,react_1.useMemo)((()=>mapAndSetActiveItems(e,s,t)),[s,e,t])}function mapAndSetActiveItems(e,t="",s){const i=[];return convertOpenAPIDocs2Sidebar({contentItems:e,sidebarItems:i,activeItemId:t,location:s}),i}function isItemActive(e,t="",s){return!!e.href&&(t?e.id===t:(0,utils_1.pathMatchedLink)(s,e.href))}function isSubItemActive(e,t="",s){return(e.items||[]).some((e=>isItemActive(e,t,s)||isSubItemActive(e,t,s)))}function convertOpenAPIDocs2Sidebar(e){const{contentItems:t,sidebarItems:s,activeItemId:i,location:c}=e;let n=!0;for(const a of t){const t=isItemActive(a,i,c),r=isSubItemActive(a,i,c);switch(a.type){case"group":s.push({type:"separator",label:a.name,active:t,hasActiveSubItem:r}),convertOpenAPIDocs2Sidebar(Object.assign(Object.assign({},e),{contentItems:a.items,sidebarItems:s}));break;case"tag":const o={type:"group",label:a.name,items:[],link:a.href,active:t,hasActiveSubItem:r};s.push(o),convertOpenAPIDocs2Sidebar({contentItems:a.items,sidebarItems:o.items||[],activeItemId:i,location:c});break;case"operation":case"schema":a.isWebhook&&n&&(s.push({type:"separator",label:"Webhooks",variant:"secondary"}),n=!1),s.push({type:"link",label:a.name,httpVerb:"schema"===a.type?"schema":a.httpVerb,link:a.href,badges:a.badges,active:t,hasActiveSubItem:r});break;case"section":if(-1===a.depth)continue;const m={type:a.items.length?"group":"link",label:a.name,link:a.href,items:[],active:t,hasActiveSubItem:r};s.push(m),a.items.length&&convertOpenAPIDocs2Sidebar({contentItems:a.items,sidebarItems:m.items,activeItemId:i,location:c})}}}exports.useMenuItems=useMenuItems;
2
2
  //# sourceMappingURL=useMenuItems.js.map
@@ -18,6 +18,11 @@
18
18
  }
19
19
  `,exports.Heading=(0,styled_components_1.default)(theme_1.H2)`
20
20
  position: relative;
21
+ display: flex;
22
+ align-items: center;
23
+ gap: var(--spacing-xs);
24
+ flex-wrap: wrap;
25
+
21
26
  :hover {
22
27
  ${theme_1.LinkIcon} {
23
28
  opacity: 1;
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.mergeInMockServer=exports.getOperation=exports.isPayloadSample=void 0;const theme_1=require("@redocly/theme"),utils_1=require("../utils"),callback_1=require("./callback"),field_1=require("./field"),request_1=require("./request"),security_1=require("./security"),response_1=require("./response");function isPayloadSample(e){return"Payload"===e.lang&&"requestBodyContent"in e}exports.isPayloadSample=isPayloadSample;let isCodeSamplesWarningPrinted=!1;function getOperation(e,r,t,s,i,o){var a;const n=r.isWebhook,l={operationDefinition:r,parent:t,pointer:r.pointer,description:(0,utils_1.getValueFromMdParsedExtension)(r,"description"),externalDocs:r.externalDocs,deprecated:!!r.deprecated,httpVerb:r.httpVerb,operationId:r.operationId,path:r.pathName,isWebhook:n,isCallback:Boolean(null==o?void 0:o.isCallback),isEvent:(null==o?void 0:o.isCallback)||n,name:(0,utils_1.getOperationName)(r),defaultExampleName:r.defaultSampleName,type:"operation",callbackId:null==o?void 0:o.id,href:i,get callbacks(){return Object.keys(r.callbacks||[]).map((o=>{var a;return(0,callback_1.getCallback)(e,o,null===(a=r.callbacks)||void 0===a?void 0:a[o],l.pointer,s,i,t)}))},get responses(){let t=!1;return Object.keys(r.responses||[]).filter((e=>"default"===e||("success"===(0,utils_1.getStatusCodeType)(e)&&(t=!0),(0,utils_1.isStatusCode)(e)))).map((i=>(0,response_1.getResponse)({parser:e,code:i,defaultAsError:t,infoOrRef:r.responses[i],options:s,isEvent:l.isEvent,operation:l})))},get parameters(){let t=(0,utils_1.mergeParams)(e,r.pathParameters,r.parameters,{pathPointer:utils_1.JsonPointer.dirName(l.pointer),operationPointer:l.pointer}).map((({paramOrRef:r,pointer:t})=>(0,field_1.getField)(e,r,t,s,{operation:l,type:"request"})));return s.sortRequiredPropsFirst&&(t=(0,utils_1.sortByRequired)(t)),t}};(null==o?void 0:o.isCallback)?(l.security=(r.security||[]).map((r=>(0,security_1.getSecurityRequirement)({requirement:r,parser:e}))),l.servers=(0,utils_1.normalizeServers)("",r.servers||r.pathServers||[]),l.id=(0,theme_1.removeLeadingSlash)(i)):(l.id=(0,utils_1.getOperationId)(r,t),l.security=(r.security||e.definition.security||[]).map((r=>(0,security_1.getSecurityRequirement)({requirement:r,parser:e}))),l.servers=(0,utils_1.normalizeServers)(e.definitionUrl,mergeInMockServer(r.servers||r.pathServers||e.definition.servers||[],s.mockServer))),s.showVendorExtensions&&(l.extensions=(0,utils_1.extractExtensions)(r,s.showVendorExtensions)),l.requestBody=r.requestBody&&(0,request_1.getRequestBody)({parser:e,infoOrRef:r.requestBody,options:s,operation:l,isEvent:l.isEvent});const p=null===(a=l.requestBody)||void 0===a?void 0:a.content;return l.payload={lang:"Payload",source:"",requestBodyContent:(null==p?void 0:p.hasSample)?p:void 0},l.definitionSamples=r["x-codeSamples"]||r["x-code-samples"]||[],r["x-code-samples"]&&!isCodeSamplesWarningPrinted&&(isCodeSamplesWarningPrinted=!0,console.warn('"x-code-samples" is deprecated. Use "x-codeSamples" instead')),l.hasSamples=(null==p?void 0:p.hasSample)||l.definitionSamples.length>0,l}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}}exports.getOperation=getOperation,exports.mergeInMockServer=mergeInMockServer;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.mergeInMockServer=exports.getOperation=exports.isPayloadSample=void 0;const theme_1=require("@redocly/theme"),utils_1=require("../utils"),callback_1=require("./callback"),field_1=require("./field"),request_1=require("./request"),security_1=require("./security"),response_1=require("./response");function isPayloadSample(e){return"Payload"===e.lang&&"requestBodyContent"in e}exports.isPayloadSample=isPayloadSample;let isCodeSamplesWarningPrinted=!1;function getOperation(e,r,t,s,i,o){var a,n;const l=r.isWebhook,p={operationDefinition:r,parent:t,pointer:r.pointer,description:(0,utils_1.getValueFromMdParsedExtension)(r,"description"),externalDocs:r.externalDocs,deprecated:!!r.deprecated,httpVerb:r.httpVerb,operationId:r.operationId,path:r.pathName,isWebhook:l,isCallback:Boolean(null==o?void 0:o.isCallback),isEvent:(null==o?void 0:o.isCallback)||l,name:(0,utils_1.getOperationName)(r),defaultExampleName:r.defaultSampleName,type:"operation",callbackId:null==o?void 0:o.id,href:i,get callbacks(){return Object.keys(r.callbacks||[]).map((o=>{var a;return(0,callback_1.getCallback)(e,o,null===(a=r.callbacks)||void 0===a?void 0:a[o],p.pointer,s,i,t)}))},get responses(){let t=!1;return Object.keys(r.responses||[]).filter((e=>"default"===e||("success"===(0,utils_1.getStatusCodeType)(e)&&(t=!0),(0,utils_1.isStatusCode)(e)))).map((i=>(0,response_1.getResponse)({parser:e,code:i,defaultAsError:t,infoOrRef:r.responses[i],options:s,isEvent:p.isEvent,operation:p})))},get parameters(){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,s,{operation:p,type:"request"})));return s.sortRequiredPropsFirst&&(t=(0,utils_1.sortByRequired)(t)),t}};(null==o?void 0:o.isCallback)?(p.security=(r.security||[]).map((r=>(0,security_1.getSecurityRequirement)({requirement:r,parser:e}))),p.servers=(0,utils_1.normalizeServers)("",r.servers||r.pathServers||[]),p.id=(0,theme_1.removeLeadingSlash)(i)):(p.id=(0,utils_1.getOperationId)(r,t),p.security=(r.security||e.definition.security||[]).map((r=>(0,security_1.getSecurityRequirement)({requirement:r,parser:e}))),p.servers=(0,utils_1.normalizeServers)(e.definitionUrl,mergeInMockServer(r.servers||r.pathServers||e.definition.servers||[],s.mockServer))),s.showVendorExtensions&&(p.extensions=(0,utils_1.extractExtensions)(r,s.showVendorExtensions)),p.requestBody=r.requestBody&&(0,request_1.getRequestBody)({parser:e,infoOrRef:r.requestBody,options:s,operation:p,isEvent:p.isEvent});const d=null===(a=p.requestBody)||void 0===a?void 0:a.content;return p.payload={lang:"Payload",source:"",requestBodyContent:(null==d?void 0:d.hasSample)?d:void 0},p.definitionSamples=r["x-codeSamples"]||r["x-code-samples"]||[],p.badges=(null===(n=r["x-badges"])||void 0===n?void 0:n.map((({name:e,color:r,position:t})=>({name:e,color:r||"var(--color-info-base)",position:t||"after"}))))||[],r["x-code-samples"]&&!isCodeSamplesWarningPrinted&&(isCodeSamplesWarningPrinted=!0,console.warn('"x-code-samples" is deprecated. Use "x-codeSamples" instead')),p.hasSamples=(null==d?void 0:d.hasSample)||p.definitionSamples.length>0,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}}exports.getOperation=getOperation,exports.mergeInMockServer=mergeInMockServer;
2
2
  //# sourceMappingURL=operation.js.map
@@ -1,5 +1,5 @@
1
1
  import type { Node } from '@markdoc/markdoc';
2
- import type { OpenAPISecurityScheme, OpenAPIEncoding, OpenAPIMediaType, OpenAPIParameterLocation, OpenAPIParameterStyle, OpenAPIExternalDocumentation, OpenAPIServer, OpenAPIXCodeSample, OpenAPISchema, Referenced, OpenAPIInfo } from '../types';
2
+ import type { OpenAPISecurityScheme, OpenAPIEncoding, OpenAPIMediaType, OpenAPIParameterLocation, OpenAPIParameterStyle, OpenAPIExternalDocumentation, OpenAPIServer, OpenAPIXCodeSample, OpenAPIXBadges, OpenAPISchema, Referenced, OpenAPIInfo } from '../types';
3
3
  import type { OpenAPIParser } from '../services/OpenAPIParser';
4
4
  import type { Options } from '../services/config-options';
5
5
  import type { ExtendedOpenAPIOperation, MenuItemGroupType, MenuItemType, MergedOpenAPISchema, Unstable_ExternalCodeSample } from '../services/types';
@@ -141,6 +141,7 @@ export type OperationModel = {
141
141
  requestBodyContent?: MediaContentModel;
142
142
  };
143
143
  definitionSamples: OpenAPIXCodeSample[] | Unstable_ExternalCodeSample[];
144
+ badges: OpenAPIXBadges[];
144
145
  hasSamples: boolean;
145
146
  parameters: FieldModel[];
146
147
  responses: ResponseModel[];
@@ -175,6 +176,7 @@ export type OperationMenuItem = {
175
176
  path: string;
176
177
  isWebhook: boolean;
177
178
  operationId?: string;
179
+ badges?: OpenAPIXBadges[];
178
180
  };
179
181
  export type SchemaModel = {
180
182
  operationPointer: string;
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getHref=exports.getOperationsItems=void 0;const utils_1=require("../../utils");function getOperationsItems(e,t,o){if(0===t.operations.length)return[];const r=[];for(const s of t.operations){const t=(0,utils_1.getOperationId)(s,e),i="operation";r.push({id:t,type:i,parent:e,operationDefinition:s,depth:o,name:(0,utils_1.getOperationName)(s),httpVerb:s.httpVerb,path:s.pathName,items:[],isWebhook:s.isWebhook,operationId:s.operationId,href:getHref({id:t})})}return r.sort(((e,t)=>Number(e.isWebhook)-Number(t.isWebhook)))}function getHref({id:e}){return(0,utils_1.encodeBackSlashes)(`/${e}`.toLowerCase())}exports.getOperationsItems=getOperationsItems,exports.getHref=getHref;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getHref=exports.getOperationsItems=void 0;const utils_1=require("../../utils");function getOperationsItems(e,t,o){if(0===t.operations.length)return[];const r=[];for(const s of t.operations){const t=(0,utils_1.getOperationId)(s,e),i="operation";r.push({id:t,type:i,parent:e,operationDefinition:s,depth:o,name:(0,utils_1.getOperationName)(s),httpVerb:s.httpVerb,path:s.pathName,items:[],isWebhook:s.isWebhook,operationId:s.operationId,badges:s["x-badges"]||[],href:getHref({id:t})})}return r.sort(((e,t)=>Number(e.isWebhook)-Number(t.isWebhook)))}function getHref({id:e}){return(0,utils_1.encodeBackSlashes)(`/${e}`.toLowerCase())}exports.getOperationsItems=getOperationsItems,exports.getHref=getHref;
2
2
  //# sourceMappingURL=operation.js.map
@@ -81,6 +81,11 @@ export interface OpenAPIPath extends Partial<OpenAPIRef>, ParsedDescriptionWithS
81
81
  export interface OpenAPIXCodeSample extends Sample {
82
82
  source: string;
83
83
  }
84
+ export interface OpenAPIXBadges {
85
+ name: string;
86
+ color?: string;
87
+ position?: 'before' | 'after';
88
+ }
84
89
  export interface OpenAPIOperation extends ParsedDescriptionWithSummary {
85
90
  tags?: string[];
86
91
  summary?: string;
@@ -98,6 +103,7 @@ export interface OpenAPIOperation extends ParsedDescriptionWithSummary {
98
103
  servers?: OpenAPIServer[];
99
104
  'x-codeSamples'?: OpenAPIXCodeSample[];
100
105
  'x-code-samples'?: OpenAPIXCodeSample[];
106
+ 'x-badges'?: OpenAPIXBadges[];
101
107
  }
102
108
  export interface OpenAPIParameter extends ParsedDescription {
103
109
  name: string;
@@ -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}),exports.getContentWithLegacyExamples=exports.pluralizeType=exports.extractExtensions=exports.isRedocExtension=exports.shortenHTTPVerb=exports.normalizeServers=exports.mergeParams=exports.sortByRequired=exports.humanizeConstraints=exports.humanizeNumberRange=exports.getDefinitionName=exports.isNamedDefinition=exports.langFromMime=exports.serializeParameterValue=exports.serializeParameterValueWithMime=exports.serializeQueryParameter=exports.urlFormEncodePayload=exports.isMultipartFormData=exports.isFormUrlEncoded=exports.isJsonLike=exports.isPrimitiveType=exports.detectType=exports.getOperationId=exports.getOperationName=exports.isOperationName=exports.getStatusCodeType=exports.isStatusCode=void 0;const path_1=require("path"),url_template_1=__importDefault(require("url-template")),theme_1=require("@redocly/theme"),helpers_1=require("./helpers"),constants_1=require("../constants"),JsonPointer_1=require("./JsonPointer"),services_1=require("../services");function isWildcardStatusCode(e){return"string"==typeof e&&/\dxx/i.test(e)}function isStatusCode(e){return"default"===e||(0,helpers_1.isNumeric)(e)||isWildcardStatusCode(e)}function getStatusCodeType(e,r=!1){if("default"===e)return r?"error":"success";let t="string"==typeof e?parseInt(e,10):e;if(isWildcardStatusCode(e)&&(t*=100),t<100||t>599)throw new Error("invalid HTTP code");let i="success";return t>=300&&t<400?i="redirect":t>=400?i="error":t<200&&(i="info"),i}exports.isStatusCode=isStatusCode,exports.getStatusCodeType=getStatusCodeType;const operationNames={get:!0,post:!0,put:!0,head:!0,patch:!0,delete:!0,options:!0,$ref:!0};function isOperationName(e){return e in operationNames}function getOperationName(e){const{operationId:r,pathName:t}=e,i=(0,helpers_1.normalizeText)((0,helpers_1.getValueFromMdParsedExtension)(e,"description"));return(0,helpers_1.normalizeText)((0,helpers_1.getValueFromMdParsedExtension)(e,"summary"))||r||i&&i.substring(0,50)||t||"<no summary>"}function getOperationId(e,r){var t;return(null==r?void 0:r.id)?(0,services_1.joinWithSeparator)(r.id,(0,helpers_1.sanitizeItemId)(e.operationId?e.operationId:pointerToId(e.pointer))).toLowerCase():(null===(t=e.tags)||void 0===t?void 0:t.length)?(0,helpers_1.sanitizeItemId)(e.operationId?e.operationId:pointerToId(e.pointer)):(0,helpers_1.sanitizeItemId)(e.operationId?(0,services_1.joinWithSeparator)(constants_1.DEFAULT_TAG_SLUG,e.operationId):pointerToId(e.pointer))}function pointerToId(e){return(null==e?void 0:e.startsWith("/"))?e.slice(1,e.length):e}exports.isOperationName=isOperationName,exports.getOperationName=getOperationName,exports.getOperationId=getOperationId;const schemaKeywordTypes={multipleOf:"number",maximum:"number",exclusiveMaximum:"number",minimum:"number",exclusiveMinimum:"number",maxLength:"string",minLength:"string",pattern:"string",contentEncoding:"string",contentMediaType:"string",items:"array",maxItems:"array",minItems:"array",uniqueItems:"array",maxProperties:"object",minProperties:"object",required:"object",additionalProperties:"object",unevaluatedProperties:"object",patternProperties:"object",properties:"object"};function detectType(e){if(void 0!==e.type&&!Array.isArray(e.type))return e.type;const r=Object.keys(schemaKeywordTypes);for(const t of r){const r=schemaKeywordTypes[t];if(void 0!==e[t])return r}return"any"}function isPrimitiveType(e,r=e.type){if(e["x-circular-ref"])return!0;if(void 0!==e.oneOf||void 0!==e.anyOf)return!1;if(e.if&&e.then||e.if&&e.else)return!1;let t=!0;const i=Array.isArray(r);return("object"===r||i&&(null==r?void 0:r.includes("object")))&&(t=void 0!==e.properties?0===Object.keys(e.properties).length:void 0===e.additionalProperties&&void 0===e.unevaluatedProperties&&void 0===e.patternProperties),!Array.isArray(e.items)&&!Array.isArray(e.prefixItems)&&(void 0!==e.items&&"boolean"!=typeof e.items&&("array"===r||i&&(null==r?void 0:r.includes("array")))&&(t=isPrimitiveType(e.items,e.items.type)),t)}function isJsonLike(e){return-1!==e.search(/json/i)}function isFormUrlEncoded(e){return e===constants_1.MediaTypes.URL_ENCODED}function isMultipartFormData(e){return e===constants_1.MediaTypes.MULTIPART}function delimitedEncodeField(e,r,t){return Array.isArray(e)?e.map((e=>e.toString())).join(t):"object"==typeof e?Object.keys(e).map((r=>`${r}${t}${e[r]}`)).join(t):r+"="+e.toString()}function deepObjectEncodeField(e,r){return Array.isArray(e)?(console.warn("deepObject style cannot be used with array value:"+e.toString()),""):"object"==typeof e?Object.keys(e).map((t=>e[t]?`${r}[${t}]=${e[t]}`:void 0)).filter(Boolean).join("&"):(console.warn("deepObject style cannot be used with non-object value:"+e.toString()),"")}function serializeFormValue(e,r,t){const i="__redoc_param_name__",n=r?"*":"";return url_template_1.default.parse(`{?${i}${n}}`).expand({[i]:t}).substring(1).replace(/__redoc_param_name__/g,e)}function serializeSimpleValue(e,r){const t=e?"*":"",i="__redoc_param_name__",n=url_template_1.default.parse(`{${i}${t}}`);return decodeURIComponent(n.expand({[i]:r}))}function urlFormEncodePayload(e,r={}){if(Array.isArray(e))throw new Error("Payload must have fields: "+e.toString());return Object.keys(e).map((t=>{const i=e[t],{style:n="form",explode:o=!0}=r[t]||{};switch(n){case"form":return serializeFormValue(t,o,i);case"spaceDelimited":return delimitedEncodeField(i,t,"%20");case"pipeDelimited":return delimitedEncodeField(i,t,"|");case"deepObject":return deepObjectEncodeField(i,t);default:return console.warn("Incorrect or unsupported encoding style: "+n),""}})).join("&")}function serializePathParameter(e,r,t,i){const n=t?"*":"";let o="";"label"===r?o=".":"matrix"===r&&(o=";");const a="__redoc_param_name__";return url_template_1.default.parse(`{${o}${a}${n}}`).expand({[a]:i}).replace(/__redoc_param_name__/g,e)}function serializeQueryParameter(e,r,t,i){const n=n=>{switch(r){case"form":return serializeFormValue(e,t,n);case"spaceDelimited":return Array.isArray(n)||"object"==typeof n?t?serializeFormValue(e,t,n):delimitedEncodeField(i,e,"%20"):(console.warn("The style spaceDelimited is applicable to arrays or objects"),"");case"pipeDelimited":return Array.isArray(n)||"object"==typeof n?t?serializeFormValue(e,t,n):delimitedEncodeField(i,e,"|"):(console.warn("The style pipeDelimited is applicable to arrays or objects"),"");case"deepObject":return!t||Array.isArray(n)||"object"!=typeof n?(console.warn("The style deepObject is only applicable for objects with explode=true"),""):deepObjectEncodeField(n,e);case"simple":return serializeSimpleValue(t,i);default:return console.warn("Unexpected style for query: "+r),""}};return(0,helpers_1.isArrayOfObjects)(i)&&(i=(0,helpers_1.deleteEmptyArrayItem)(i).map((e=>n(e)))),n(i)}function serializeHeaderParameter(e,r,t){return"simple"===e?serializeSimpleValue(r,t):(console.warn("Unexpected style for header: "+e),"")}function serializeCookieParameter(e,r,t,i){return"form"===r?serializeFormValue(e,t,i):(console.warn("Unexpected style for cookie: "+r),"")}function serializeParameterValueWithMime(e,r){return isJsonLike(r)?JSON.stringify(e):(console.warn(`Parameter serialization as ${r} is not supported`),"")}function serializeParameterValue(e,r){const{name:t,style:i,explode:n=!1,serializationMime:o}=e;if(o)switch(e.in){case"path":case"header":return serializeParameterValueWithMime(r,o);case"cookie":case"query":return`${t}=${serializeParameterValueWithMime(r,o)}`;default:return console.warn("Unexpected parameter location: "+e.in),""}if(!i)return console.warn(`Missing style attribute or content for parameter ${t}`),"";switch(e.in){case"path":return serializePathParameter(t,i,n,r);case"query":return serializeQueryParameter(t,i,n,r);case"header":return serializeHeaderParameter(i,n,r);case"cookie":return serializeCookieParameter(t,i,n,r);default:return console.warn("Unexpected parameter location: "+e.in),""}}function langFromMime(e){return-1!==e.search(/xml/i)?"xml":"clike"}exports.detectType=detectType,exports.isPrimitiveType=isPrimitiveType,exports.isJsonLike=isJsonLike,exports.isFormUrlEncoded=isFormUrlEncoded,exports.isMultipartFormData=isMultipartFormData,exports.urlFormEncodePayload=urlFormEncodePayload,exports.serializeQueryParameter=serializeQueryParameter,exports.serializeParameterValueWithMime=serializeParameterValueWithMime,exports.serializeParameterValue=serializeParameterValue,exports.langFromMime=langFromMime;const DEFINITION_NAME_REGEX=/^#\/components\/(schemas|pathItems)\/([^/]+)$/;function isNamedDefinition(e){return DEFINITION_NAME_REGEX.test(e||"")}function getDefinitionName(e){var r;return null===(r=null==e?void 0:e.match(DEFINITION_NAME_REGEX))||void 0===r?void 0:r.pop()}function humanizeMultipleOfConstraint(e){if(void 0===e)return;const r=e.toString(10);return/^0\.0*1$/.test(r)?`decimal places <= ${r.split(".")[1].length}`:`multiple of ${r}`}function humanizeRangeConstraint(e,r,t){let i;return void 0!==r&&void 0!==t?i=r===t?`= ${r} ${e}`:`[ ${r} .. ${t} ] ${e}`:void 0!==t?i=`<= ${t} ${e}`:void 0!==r&&(i=1===r?"non-empty":`>= ${r} ${e}`),i}function humanizeNumberRange(e){var r,t;const i="number"==typeof e.exclusiveMinimum?Math.min(e.exclusiveMinimum,null!==(r=e.minimum)&&void 0!==r?r:1/0):e.minimum,n="number"==typeof e.exclusiveMaximum?Math.max(e.exclusiveMaximum,null!==(t=e.maximum)&&void 0!==t?t:-1/0):e.maximum,o="number"==typeof e.exclusiveMinimum||e.exclusiveMinimum,a="number"==typeof e.exclusiveMaximum||e.exclusiveMaximum;return void 0!==i&&void 0!==n?`${o?"( ":"[ "}${i} .. ${n}${a?" )":" ]"}`:void 0!==n?`${a?"< ":"<= "}${n}`:void 0!==i?`${o?"> ":">= "}${i}`:void 0}function humanizeConstraints(e){const r=[],t=humanizeRangeConstraint("characters",e.minLength,e.maxLength);void 0!==t&&r.push(t);const i=humanizeRangeConstraint("items",e.minItems,e.maxItems);void 0!==i&&r.push(i);const n=humanizeRangeConstraint(1===e.minProperties&&1===e.maxProperties?"property":"properties",e.minProperties,e.maxProperties);void 0!==n&&r.push(n);const o=humanizeMultipleOfConstraint(e.multipleOf);void 0!==o&&r.push(o);const a=humanizeNumberRange(e);return void 0!==a&&r.push(a),e.uniqueItems&&r.push("unique"),r}function sortByRequired(e,r=[]){const t=[],i=[],n=[];return e.forEach((e=>{e.required?r.includes(e.name)?i.push(e):n.push(e):t.push(e)})),i.sort(((e,t)=>r.indexOf(e.name)-r.indexOf(t.name))),[...i,...n,...t]}function mergeParams(e,r=[],t=[],{pathPointer:i,operationPointer:n}){const o={};t.forEach((r=>{({resolved:r}=e.deref(r)),o[r.name+"_"+r.in]=!0}));return[...r.map(((e,r)=>({paramOrRef:e,pointer:JsonPointer_1.JsonPointer.join(i,["parameters",String(r)])}))).filter((({paramOrRef:r})=>(({resolved:r}=e.deref(r)),!o[r.name+"_"+r.in]))),...t.map(((e,r)=>({paramOrRef:e,pointer:JsonPointer_1.JsonPointer.join(n,["parameters",String(r)])})))]}function normalizeServers(e,r){const t=void 0===e?(0,helpers_1.removeQueryStringAndHash)((()=>{if(!theme_1.IS_BROWSER)return globalThis.SSR_HOSTNAME||"";const e=window.location.href;return e.endsWith(".html")?(0,path_1.dirname)(e):e})()):(0,path_1.dirname)(e);return 0===r.length&&(r=[{url:"/"}]),r.map((e=>{return Object.assign(Object.assign({},e),{url:(r=e.url,(0,helpers_1.resolveUrl)(t,r)),description:e.description||""});var r}))}exports.isNamedDefinition=isNamedDefinition,exports.getDefinitionName=getDefinitionName,exports.humanizeNumberRange=humanizeNumberRange,exports.humanizeConstraints=humanizeConstraints,exports.sortByRequired=sortByRequired,exports.mergeParams=mergeParams,exports.normalizeServers=normalizeServers;const shortenHTTPVerb=e=>({delete:"del",options:"opts"}[e]||e);function isRedocExtension(e){return e in{"x-circular-ref":!0,"x-parentRefs":!0,"x-refsStack":!0,"x-code-samples":!0,"x-codeSamples":!0,"x-displayName":!0,"x-examples":!0,"x-ignoredHeaderParameters":!0,"x-logo":!0,"x-nullable":!0,"x-servers":!0,"x-tagGroups":!0,"x-traitTag":!0,"x-additionalPropertiesName":!0,"x-explicitMappingOnly":!0,"x-enumDescriptions":!0,"x-tokenEndpointAuthMethod":!0,"x-feedback":!0}||e.startsWith("x-parsed-md-")}function extractExtensions(e,r){return Object.keys(e).filter((e=>!0===r?e.startsWith("x-")&&!isRedocExtension(e):e.startsWith("x-")&&r.indexOf(e)>-1)).reduce(((r,t)=>(r[t]=e[t],r)),{})}function pluralizeType(e){return e.split(" or ").map((e=>e.replace(/^(string|object|number|integer|array|boolean)s?( ?.*)/,"$1s$2"))).join(" or ")}function getContentWithLegacyExamples(e){let r=e.content;const t=e["x-examples"],i=e["x-example"];if(t){r=Object.assign({},r);for(const e of Object.keys(t)){const i=t[e];r[e]=Object.assign(Object.assign({},r[e]),{examples:i})}}else if(i){r=Object.assign({},r);for(const e of Object.keys(i)){const t=i[e];r[e]=Object.assign(Object.assign({},r[e]),{example:t})}}return r}exports.shortenHTTPVerb=shortenHTTPVerb,exports.isRedocExtension=isRedocExtension,exports.extractExtensions=extractExtensions,exports.pluralizeType=pluralizeType,exports.getContentWithLegacyExamples=getContentWithLegacyExamples;
1
+ "use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getContentWithLegacyExamples=exports.pluralizeType=exports.extractExtensions=exports.isRedocExtension=exports.shortenHTTPVerb=exports.normalizeServers=exports.mergeParams=exports.sortByRequired=exports.humanizeConstraints=exports.humanizeNumberRange=exports.getDefinitionName=exports.isNamedDefinition=exports.langFromMime=exports.serializeParameterValue=exports.serializeParameterValueWithMime=exports.serializeQueryParameter=exports.urlFormEncodePayload=exports.isMultipartFormData=exports.isFormUrlEncoded=exports.isJsonLike=exports.isPrimitiveType=exports.detectType=exports.getOperationId=exports.getOperationName=exports.isOperationName=exports.getStatusCodeType=exports.isStatusCode=void 0;const path_1=require("path"),url_template_1=__importDefault(require("url-template")),theme_1=require("@redocly/theme"),helpers_1=require("./helpers"),constants_1=require("../constants"),JsonPointer_1=require("./JsonPointer"),services_1=require("../services");function isWildcardStatusCode(e){return"string"==typeof e&&/\dxx/i.test(e)}function isStatusCode(e){return"default"===e||(0,helpers_1.isNumeric)(e)||isWildcardStatusCode(e)}function getStatusCodeType(e,r=!1){if("default"===e)return r?"error":"success";let t="string"==typeof e?parseInt(e,10):e;if(isWildcardStatusCode(e)&&(t*=100),t<100||t>599)throw new Error("invalid HTTP code");let i="success";return t>=300&&t<400?i="redirect":t>=400?i="error":t<200&&(i="info"),i}exports.isStatusCode=isStatusCode,exports.getStatusCodeType=getStatusCodeType;const operationNames={get:!0,post:!0,put:!0,head:!0,patch:!0,delete:!0,options:!0,$ref:!0};function isOperationName(e){return e in operationNames}function getOperationName(e){const{operationId:r,pathName:t}=e,i=(0,helpers_1.normalizeText)((0,helpers_1.getValueFromMdParsedExtension)(e,"description"));return(0,helpers_1.normalizeText)((0,helpers_1.getValueFromMdParsedExtension)(e,"summary"))||r||i&&i.substring(0,50)||t||"<no summary>"}function getOperationId(e,r){var t;return(null==r?void 0:r.id)?(0,services_1.joinWithSeparator)(r.id,(0,helpers_1.sanitizeItemId)(e.operationId?e.operationId:pointerToId(e.pointer))).toLowerCase():(null===(t=e.tags)||void 0===t?void 0:t.length)?(0,helpers_1.sanitizeItemId)(e.operationId?e.operationId:pointerToId(e.pointer)):(0,helpers_1.sanitizeItemId)(e.operationId?(0,services_1.joinWithSeparator)(constants_1.DEFAULT_TAG_SLUG,e.operationId):pointerToId(e.pointer))}function pointerToId(e){return(null==e?void 0:e.startsWith("/"))?e.slice(1,e.length):e}exports.isOperationName=isOperationName,exports.getOperationName=getOperationName,exports.getOperationId=getOperationId;const schemaKeywordTypes={multipleOf:"number",maximum:"number",exclusiveMaximum:"number",minimum:"number",exclusiveMinimum:"number",maxLength:"string",minLength:"string",pattern:"string",contentEncoding:"string",contentMediaType:"string",items:"array",maxItems:"array",minItems:"array",uniqueItems:"array",maxProperties:"object",minProperties:"object",required:"object",additionalProperties:"object",unevaluatedProperties:"object",patternProperties:"object",properties:"object"};function detectType(e){if(void 0!==e.type&&!Array.isArray(e.type))return e.type;const r=Object.keys(schemaKeywordTypes);for(const t of r){const r=schemaKeywordTypes[t];if(void 0!==e[t])return r}return"any"}function isPrimitiveType(e,r=e.type){if(e["x-circular-ref"])return!0;if(void 0!==e.oneOf||void 0!==e.anyOf)return!1;if(e.if&&e.then||e.if&&e.else)return!1;let t=!0;const i=Array.isArray(r);return("object"===r||i&&(null==r?void 0:r.includes("object")))&&(t=void 0!==e.properties?0===Object.keys(e.properties).length:void 0===e.additionalProperties&&void 0===e.unevaluatedProperties&&void 0===e.patternProperties),!Array.isArray(e.items)&&!Array.isArray(e.prefixItems)&&(void 0!==e.items&&"boolean"!=typeof e.items&&("array"===r||i&&(null==r?void 0:r.includes("array")))&&(t=isPrimitiveType(e.items,e.items.type)),t)}function isJsonLike(e){return-1!==e.search(/json/i)}function isFormUrlEncoded(e){return e===constants_1.MediaTypes.URL_ENCODED}function isMultipartFormData(e){return e===constants_1.MediaTypes.MULTIPART}function delimitedEncodeField(e,r,t){return Array.isArray(e)?e.map((e=>e.toString())).join(t):"object"==typeof e?Object.keys(e).map((r=>`${r}${t}${e[r]}`)).join(t):r+"="+e.toString()}function deepObjectEncodeField(e,r){return Array.isArray(e)?(console.warn("deepObject style cannot be used with array value:"+e.toString()),""):"object"==typeof e?Object.keys(e).map((t=>e[t]?`${r}[${t}]=${e[t]}`:void 0)).filter(Boolean).join("&"):(console.warn("deepObject style cannot be used with non-object value:"+e.toString()),"")}function serializeFormValue(e,r,t){const i="__redoc_param_name__",n=r?"*":"";return url_template_1.default.parse(`{?${i}${n}}`).expand({[i]:t}).substring(1).replace(/__redoc_param_name__/g,e)}function serializeSimpleValue(e,r){const t=e?"*":"",i="__redoc_param_name__",n=url_template_1.default.parse(`{${i}${t}}`);return decodeURIComponent(n.expand({[i]:r}))}function urlFormEncodePayload(e,r={}){if(Array.isArray(e))throw new Error("Payload must have fields: "+e.toString());return Object.keys(e).map((t=>{const i=e[t],{style:n="form",explode:o=!0}=r[t]||{};switch(n){case"form":return serializeFormValue(t,o,i);case"spaceDelimited":return delimitedEncodeField(i,t,"%20");case"pipeDelimited":return delimitedEncodeField(i,t,"|");case"deepObject":return deepObjectEncodeField(i,t);default:return console.warn("Incorrect or unsupported encoding style: "+n),""}})).join("&")}function serializePathParameter(e,r,t,i){const n=t?"*":"";let o="";"label"===r?o=".":"matrix"===r&&(o=";");const a="__redoc_param_name__";return url_template_1.default.parse(`{${o}${a}${n}}`).expand({[a]:i}).replace(/__redoc_param_name__/g,e)}function serializeQueryParameter(e,r,t,i){const n=n=>{switch(r){case"form":return serializeFormValue(e,t,n);case"spaceDelimited":return Array.isArray(n)||"object"==typeof n?t?serializeFormValue(e,t,n):delimitedEncodeField(i,e,"%20"):(console.warn("The style spaceDelimited is applicable to arrays or objects"),"");case"pipeDelimited":return Array.isArray(n)||"object"==typeof n?t?serializeFormValue(e,t,n):delimitedEncodeField(i,e,"|"):(console.warn("The style pipeDelimited is applicable to arrays or objects"),"");case"deepObject":return!t||Array.isArray(n)||"object"!=typeof n?(console.warn("The style deepObject is only applicable for objects with explode=true"),""):deepObjectEncodeField(n,e);case"simple":return serializeSimpleValue(t,i);default:return console.warn("Unexpected style for query: "+r),""}};return(0,helpers_1.isArrayOfObjects)(i)&&(i=(0,helpers_1.deleteEmptyArrayItem)(i).map((e=>n(e)))),n(i)}function serializeHeaderParameter(e,r,t){return"simple"===e?serializeSimpleValue(r,t):(console.warn("Unexpected style for header: "+e),"")}function serializeCookieParameter(e,r,t,i){return"form"===r?serializeFormValue(e,t,i):(console.warn("Unexpected style for cookie: "+r),"")}function serializeParameterValueWithMime(e,r){return isJsonLike(r)?JSON.stringify(e):(console.warn(`Parameter serialization as ${r} is not supported`),"")}function serializeParameterValue(e,r){const{name:t,style:i,explode:n=!1,serializationMime:o}=e;if(o)switch(e.in){case"path":case"header":return serializeParameterValueWithMime(r,o);case"cookie":case"query":return`${t}=${serializeParameterValueWithMime(r,o)}`;default:return console.warn("Unexpected parameter location: "+e.in),""}if(!i)return console.warn(`Missing style attribute or content for parameter ${t}`),"";switch(e.in){case"path":return serializePathParameter(t,i,n,r);case"query":return serializeQueryParameter(t,i,n,r);case"header":return serializeHeaderParameter(i,n,r);case"cookie":return serializeCookieParameter(t,i,n,r);default:return console.warn("Unexpected parameter location: "+e.in),""}}function langFromMime(e){return-1!==e.search(/xml/i)?"xml":"clike"}exports.detectType=detectType,exports.isPrimitiveType=isPrimitiveType,exports.isJsonLike=isJsonLike,exports.isFormUrlEncoded=isFormUrlEncoded,exports.isMultipartFormData=isMultipartFormData,exports.urlFormEncodePayload=urlFormEncodePayload,exports.serializeQueryParameter=serializeQueryParameter,exports.serializeParameterValueWithMime=serializeParameterValueWithMime,exports.serializeParameterValue=serializeParameterValue,exports.langFromMime=langFromMime;const DEFINITION_NAME_REGEX=/^#\/components\/(schemas|pathItems)\/([^/]+)$/;function isNamedDefinition(e){return DEFINITION_NAME_REGEX.test(e||"")}function getDefinitionName(e){var r;return null===(r=null==e?void 0:e.match(DEFINITION_NAME_REGEX))||void 0===r?void 0:r.pop()}function humanizeMultipleOfConstraint(e){if(void 0===e)return;const r=e.toString(10);return/^0\.0*1$/.test(r)?`decimal places <= ${r.split(".")[1].length}`:`multiple of ${r}`}function humanizeRangeConstraint(e,r,t){let i;return void 0!==r&&void 0!==t?i=r===t?`= ${r} ${e}`:`[ ${r} .. ${t} ] ${e}`:void 0!==t?i=`<= ${t} ${e}`:void 0!==r&&(i=1===r?"non-empty":`>= ${r} ${e}`),i}function humanizeNumberRange(e){var r,t;const i="number"==typeof e.exclusiveMinimum?Math.min(e.exclusiveMinimum,null!==(r=e.minimum)&&void 0!==r?r:1/0):e.minimum,n="number"==typeof e.exclusiveMaximum?Math.max(e.exclusiveMaximum,null!==(t=e.maximum)&&void 0!==t?t:-1/0):e.maximum,o="number"==typeof e.exclusiveMinimum||e.exclusiveMinimum,a="number"==typeof e.exclusiveMaximum||e.exclusiveMaximum;return void 0!==i&&void 0!==n?`${o?"( ":"[ "}${i} .. ${n}${a?" )":" ]"}`:void 0!==n?`${a?"< ":"<= "}${n}`:void 0!==i?`${o?"> ":">= "}${i}`:void 0}function humanizeConstraints(e){const r=[],t=humanizeRangeConstraint("characters",e.minLength,e.maxLength);void 0!==t&&r.push(t);const i=humanizeRangeConstraint("items",e.minItems,e.maxItems);void 0!==i&&r.push(i);const n=humanizeRangeConstraint(1===e.minProperties&&1===e.maxProperties?"property":"properties",e.minProperties,e.maxProperties);void 0!==n&&r.push(n);const o=humanizeMultipleOfConstraint(e.multipleOf);void 0!==o&&r.push(o);const a=humanizeNumberRange(e);return void 0!==a&&r.push(a),e.uniqueItems&&r.push("unique"),r}function sortByRequired(e,r=[]){const t=[],i=[],n=[];return e.forEach((e=>{e.required?r.includes(e.name)?i.push(e):n.push(e):t.push(e)})),i.sort(((e,t)=>r.indexOf(e.name)-r.indexOf(t.name))),[...i,...n,...t]}function mergeParams(e,r=[],t=[],{pathPointer:i,operationPointer:n}){const o={};t.forEach((r=>{({resolved:r}=e.deref(r)),o[r.name+"_"+r.in]=!0}));return[...r.map(((e,r)=>({paramOrRef:e,pointer:JsonPointer_1.JsonPointer.join(i,["parameters",String(r)])}))).filter((({paramOrRef:r})=>(({resolved:r}=e.deref(r)),!o[r.name+"_"+r.in]))),...t.map(((e,r)=>({paramOrRef:e,pointer:JsonPointer_1.JsonPointer.join(n,["parameters",String(r)])})))]}function normalizeServers(e,r){const t=void 0===e?(0,helpers_1.removeQueryStringAndHash)((()=>{if(!theme_1.IS_BROWSER)return globalThis.SSR_HOSTNAME||"";const e=window.location.href;return e.endsWith(".html")?(0,path_1.dirname)(e):e})()):(0,path_1.dirname)(e);return 0===r.length&&(r=[{url:"/"}]),r.map((e=>{return Object.assign(Object.assign({},e),{url:(r=e.url,(0,helpers_1.resolveUrl)(t,r)),description:e.description||""});var r}))}exports.isNamedDefinition=isNamedDefinition,exports.getDefinitionName=getDefinitionName,exports.humanizeNumberRange=humanizeNumberRange,exports.humanizeConstraints=humanizeConstraints,exports.sortByRequired=sortByRequired,exports.mergeParams=mergeParams,exports.normalizeServers=normalizeServers;const shortenHTTPVerb=e=>({delete:"del",options:"opts"}[e]||e);function isRedocExtension(e){return e in{"x-circular-ref":!0,"x-parentRefs":!0,"x-refsStack":!0,"x-code-samples":!0,"x-codeSamples":!0,"x-displayName":!0,"x-examples":!0,"x-ignoredHeaderParameters":!0,"x-logo":!0,"x-nullable":!0,"x-servers":!0,"x-tagGroups":!0,"x-traitTag":!0,"x-additionalPropertiesName":!0,"x-explicitMappingOnly":!0,"x-enumDescriptions":!0,"x-tokenEndpointAuthMethod":!0,"x-feedback":!0,"x-badges":!0}||e.startsWith("x-parsed-md-")}function extractExtensions(e,r){return Object.keys(e).filter((e=>!0===r?e.startsWith("x-")&&!isRedocExtension(e):e.startsWith("x-")&&r.indexOf(e)>-1)).reduce(((r,t)=>(r[t]=e[t],r)),{})}function pluralizeType(e){return e.split(" or ").map((e=>e.replace(/^(string|object|number|integer|array|boolean)s?( ?.*)/,"$1s$2"))).join(" or ")}function getContentWithLegacyExamples(e){let r=e.content;const t=e["x-examples"],i=e["x-example"];if(t){r=Object.assign({},r);for(const e of Object.keys(t)){const i=t[e];r[e]=Object.assign(Object.assign({},r[e]),{examples:i})}}else if(i){r=Object.assign({},r);for(const e of Object.keys(i)){const t=i[e];r[e]=Object.assign(Object.assign({},r[e]),{example:t})}}return r}exports.shortenHTTPVerb=shortenHTTPVerb,exports.isRedocExtension=isRedocExtension,exports.extractExtensions=extractExtensions,exports.pluralizeType=pluralizeType,exports.getContentWithLegacyExamples=getContentWithLegacyExamples;
2
2
  //# sourceMappingURL=openapi.js.map
@@ -1,7 +1,7 @@
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,BeforeOpenApiOperationSummary,AfterOpenApiOperationSummary,AfterOpenApiOperation,Badge}from"@redocly/theme";import{SamplesMiddlePanel,SamplesPanel,ShareLink,Row}from"../common";import{CallbacksList}from"../Callbacks";import{CallbackSamples}from"../CallbackSamples";import{RequestSamples}from"../RequestSamples";import{OperationResponseList}from"../Responses";import{ResponseSamples}from"../ResponseSamples";import{makeDeepLink}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";const OperationSamplesPanel=styled(SamplesPanel)`
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,Badge}from"@redocly/theme";import{SamplesMiddlePanel,SamplesPanel,ShareLink,Row}from"../common";import{CallbacksList}from"../Callbacks";import{CallbackSamples}from"../CallbackSamples";import{RequestSamples}from"../RequestSamples";import{OperationResponseList}from"../Responses";import{ResponseSamples}from"../ResponseSamples";import{makeDeepLink}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";const OperationSamplesPanel=styled(SamplesPanel)`
2
2
  margin-left: auto;
3
3
  --code-block-padding: var(--spacing-xs) 0 var(--spacing-xs) 20px;
4
- `;function OperationItemComponent({item:{operationDefinition:e,parent:a,href:o}}){var t,s;const{parser:l,options:i}=useAtomValue(globalStoreAtom),n=useAtomValue(layoutAtom),[r,p]=useState(),{unstable_hooks:m,feedback:d}=i,c=useMemo((()=>getOperation(l,e,a,i,o)),[o,e,i,a,l]),{name:u,deprecated:k,isWebhook:S}=c,x=n===LayoutVariant.STACKED,b=(null==d?void 0:d.type)||"sentiment",f=!0!==(null==d?void 0:d.hide),[j,O]=useState(null),h=useCallback((e=>{r!==e&&p(e)}),[r]);return _jsxs(OperationRow,{layout:n,children:[_jsx(OperationSubRowStyled,{layout:n,children:_jsxs(SamplesMiddlePanel,{isStacked:x,children:[_jsx(RenderHook,{Hook:BeforeOpenApiOperation||(null==m?void 0:m.BeforeOperation),props:{operation:c}}),_jsxs(Heading,{children:[_jsx(ShareLink,{to:o,"aria-label":`link to ${u}`}),_jsx(RenderHook,{Hook:BeforeOpenApiOperationSummary||(null==m?void 0:m.BeforeOperationSummary),props:{operation:c}}),u,_jsx(RenderHook,{Hook:AfterOpenApiOperationSummary||(null==m?void 0:m.AfterOperationSummary),props:{operation:c}}),k&&_jsx(Badge,{deprecated:!0,children:"Deprecated"}),S&&_jsx(Badge,{children:"Webhook"})]})]})}),_jsxs(OperationSubRowStyled,{layout:n,children:[_jsx(SamplesMiddlePanel,{isStacked:x,children:_jsx(RequestDetails,{operation:c})}),_jsx(OperationSamplesPanel,{isStacked:x,"data-cy":"samples-block",className:"panel-container-request-samples",children:_jsx(RequestSamples,{operation:c})})]}),_jsxs(OperationSubRowStyled,{layout:n,children:[_jsx(SamplesMiddlePanel,{isStacked:x,children:(null===(t=c.responses)||void 0===t?void 0:t.length)?_jsx(OperationResponseList,{responses:c.responses,operationId:c.id,operationPointer:c.pointer,callbackId:c.callbackId,activeResponseTab:r,onTabChange:h}):null}),_jsx(OperationSamplesPanel,{isStacked:x,"data-cy":"samples-block",className:"panel-container-response-samples",children:_jsx(ResponseSamples,{operation:c,activeResponseTab:r,onTabChange:h})})]}),_jsxs(OperationSubRowStyled,{layout:n,children:[_jsxs(SamplesMiddlePanel,{isStacked:x,children:[(null===(s=c.callbacks)||void 0===s?void 0:s.length)?_jsxs(_Fragment,{children:[_jsxs(Title,{children:[_jsx(LinkToField,{to:makeDeepLink(c.id,"callbacks")}),"Callbacks"]}),_jsx(CallbacksList,{callbacks:c.callbacks,onExpand:O,selectedCallback:j})]}):null,_jsx(RenderHook,{Hook:AfterOpenApiOperation||(null==m?void 0:m.AfterOperation),props:{operation:c}})]}),j?_jsx(OperationSamplesPanel,{isStacked:x,"data-cy":"samples-block",children:_jsx(CallbackSamples,{callback:j})}):null]}),_jsx(OperationSubRowStyled,{layout:n,children:_jsx(SamplesMiddlePanel,{isStacked:x,fullWidth:!0,children:f?_jsx(FeedbackWrapper,{children:_jsx(Feedback,{type:b,settings:d.settings,path:c.href})}):null})})]})}export const OperationItem=memo(OperationItemComponent);const FeedbackWrapper=styled.div`
4
+ `;function OperationItemComponent({item:{operationDefinition:e,parent:a,href:o}}){var t,s;const{parser:l,options:i}=useAtomValue(globalStoreAtom),n=useAtomValue(layoutAtom),[r,p]=useState(),{unstable_hooks:d,feedback:m}=i,c=useMemo((()=>getOperation(l,e,a,i,o)),[o,e,i,a,l]),{name:u,deprecated:k,isWebhook:x,badges:S}=c,b=n===LayoutVariant.STACKED,f=(null==m?void 0:m.type)||"sentiment",j=!0!==(null==m?void 0:m.hide),h=S.filter((({position:e})=>"before"===e)),_=S.filter((({position:e})=>"after"===e)),[g,O]=useState(null),y=useCallback((e=>{r!==e&&p(e)}),[r]);return _jsxs(OperationRow,{layout:n,children:[_jsx(OperationSubRowStyled,{layout:n,children:_jsxs(SamplesMiddlePanel,{isStacked:b,children:[_jsx(RenderHook,{Hook:BeforeOpenApiOperation||(null==d?void 0:d.BeforeOperation),props:{operation:c}}),_jsxs(Heading,{"data-cy":"operation-item-header",children:[_jsx(ShareLink,{to:o,"aria-label":`link to ${u}`}),h.map((({name:e,color:a})=>_jsx(OperationBadge,{color:a,children:e},e))),u,_.map((({name:e,color:a})=>_jsx(OperationBadge,{color:a,children:e},e))),k&&_jsx(OperationBadge,{deprecated:!0,children:"Deprecated"}),x&&_jsx(OperationBadge,{children:"Webhook"})]})]})}),_jsxs(OperationSubRowStyled,{layout:n,children:[_jsx(SamplesMiddlePanel,{isStacked:b,children:_jsx(RequestDetails,{operation:c})}),_jsx(OperationSamplesPanel,{isStacked:b,"data-cy":"samples-block",className:"panel-container-request-samples",children:_jsx(RequestSamples,{operation:c})})]}),_jsxs(OperationSubRowStyled,{layout:n,children:[_jsx(SamplesMiddlePanel,{isStacked:b,children:(null===(t=c.responses)||void 0===t?void 0:t.length)?_jsx(OperationResponseList,{responses:c.responses,operationId:c.id,operationPointer:c.pointer,callbackId:c.callbackId,activeResponseTab:r,onTabChange:y}):null}),_jsx(OperationSamplesPanel,{isStacked:b,"data-cy":"samples-block",className:"panel-container-response-samples",children:_jsx(ResponseSamples,{operation:c,activeResponseTab:r,onTabChange:y})})]}),_jsxs(OperationSubRowStyled,{layout:n,children:[_jsxs(SamplesMiddlePanel,{isStacked:b,children:[(null===(s=c.callbacks)||void 0===s?void 0:s.length)?_jsxs(_Fragment,{children:[_jsxs(Title,{children:[_jsx(LinkToField,{to:makeDeepLink(c.id,"callbacks")}),"Callbacks"]}),_jsx(CallbacksList,{callbacks:c.callbacks,onExpand:O,selectedCallback:g})]}):null,_jsx(RenderHook,{Hook:AfterOpenApiOperation||(null==d?void 0:d.AfterOperation),props:{operation:c}})]}),g?_jsx(OperationSamplesPanel,{isStacked:b,"data-cy":"samples-block",children:_jsx(CallbackSamples,{callback:g})}):null]}),_jsx(OperationSubRowStyled,{layout:n,children:_jsx(SamplesMiddlePanel,{isStacked:b,fullWidth:!0,children:j?_jsx(FeedbackWrapper,{children:_jsx(Feedback,{type:f,settings:m.settings,path:c.href})}):null})})]})}export const OperationItem=memo(OperationItemComponent);const FeedbackWrapper=styled.div`
5
5
  & > div {
6
6
  flex: 1 1 auto;
7
7
  display: flex;
@@ -18,5 +18,8 @@ import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from"react/jsx-runtime";i
18
18
  padding: var(--spacing-base) 0 calc(var(--spacing-xl) + var(--spacing-xs));
19
19
  `,OperationSubRowStyled=styled(Row)`
20
20
  margin: calc(var(--spacing-unit) * 2) 0;
21
+ `,OperationBadge=styled(Badge)`
22
+ margin: 0;
23
+ background-color: ${({color:e})=>e};
21
24
  `;
22
25
  //# sourceMappingURL=OperationItem.js.map
@@ -0,0 +1,2 @@
1
+ import{jsx as _jsx}from"react/jsx-runtime";import*as Jotai from"jotai";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";jest.mock("jotai",(()=>Object.assign(Object.assign({},jest.requireActual("jotai")),{useAtomValue:jest.fn(),useAtom:jest.fn()}))),jest.spyOn(Jotai,"useAtomValue").mockReturnValue({parser:{definition:spec},options:normalizeOptions({codeSamples:{languages:[{lang:"curl",label:"curl"}]}})}),jest.spyOn(Jotai,"useAtom").mockReturnValue([{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")}))}));
2
+ //# sourceMappingURL=OperationItem.test.js.map
@@ -43,6 +43,8 @@ import styled from"styled-components";import{CheckmarkIcon}from"@redocly/theme";
43
43
  line-height: var(--line-height-base);
44
44
  font-weight: var(--font-weight-medium);
45
45
  `;export const StyledCheckmarkIcon=styled(CheckmarkIcon)`
46
+ width: 14px;
47
+ height: 14px;
46
48
  position: absolute;
47
49
  left: -18px;
48
50
  bottom: 3px;
@@ -1,2 +1,2 @@
1
- import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import{useMemo}from"react";import{CopyButton,Dropdown}from"@redocly/theme";import{useAtom}from"jotai";import{HttpVerb}from"../shared";import{PathWrapper,Path,ServerItemWrap}from"./styled";import{PanelItem}from"../PanelItem";import{joinWithSeparator}from"../../services";import{replaceVariables}from"../../utils";import{environmentAtom}from"../../jotai/app";import{useActiveWithFallback}from"../../hooks";import{getServerEnvName}from"../../utils/environments";export const ServerListDropdown=({operation:e,className:r})=>{const[t,o]=useAtom(environmentAtom),s=useActiveWithFallback(e.servers.map((e=>Object.assign(Object.assign({},e),{key:e.url}))),t.server),a=useMemo((()=>e.servers.map((r=>{const t=replaceVariables(r),a=joinWithSeparator(t,e.path);return _jsx(ServerItemWrap,{onClick:()=>(r=>{1!==e.servers.length&&o({environment:getServerEnvName(r)})})(r),children:_jsx(PanelItem,{header:r.description,title:replaceVariables(r),actions:[_jsx(CopyButton,{data:a},a)],active:r.url===s,withCheckmark:!0})},a)}))),[e.servers,e.path,o,s]);return _jsx(Dropdown,{items:a,withArrow:!0,className:r,children:_jsxs(PathWrapper,{children:[_jsx(HttpVerb,{color:e.httpVerb,children:e.httpVerb}),_jsx(Path,{children:e.path})]})})};
1
+ import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import{useMemo}from"react";import{Dropdown}from"@redocly/theme";import{useAtom}from"jotai";import{HttpVerb}from"../shared";import{PathWrapper,Path,ServerItemWrap,StyledCopyButton}from"./styled";import{PanelItem}from"../PanelItem";import{joinWithSeparator}from"../../services";import{replaceVariables}from"../../utils";import{environmentAtom}from"../../jotai/app";import{useActiveWithFallback}from"../../hooks";import{getServerEnvName}from"../../utils/environments";export const ServerListDropdown=({operation:e,className:r})=>{const[t,o]=useAtom(environmentAtom),a=useActiveWithFallback(e.servers.map((e=>Object.assign(Object.assign({},e),{key:e.url}))),t.server),s=e=>{e.stopPropagation()},i=useMemo((()=>e.servers.map((r=>{const t=replaceVariables(r),i=joinWithSeparator(t,e.path);return _jsx(ServerItemWrap,{onClick:()=>(r=>{1!==e.servers.length&&o({environment:getServerEnvName(r)})})(r),children:_jsx(PanelItem,{header:r.description,title:replaceVariables(r),actions:[_jsx(StyledCopyButton,{data:i,toasterPlacement:"left",onCopyClick:s},i)],active:r.url===a,withCheckmark:!0})},i)}))),[e.servers,e.path,o,a]);return _jsx(Dropdown,{items:i,withArrow:!0,className:r,children:_jsxs(PathWrapper,{children:[_jsx(HttpVerb,{color:e.httpVerb,children:e.httpVerb}),_jsx(Path,{children:e.path})]})})};
2
2
  //# sourceMappingURL=ServerListDropdown.js.map
@@ -1,3 +1,15 @@
1
+ /// <reference types="react" />
1
2
  export declare const PathWrapper: import("styled-components").StyledComponent<"div", any, {}, never>;
2
3
  export declare const Path: import("styled-components").StyledComponent<"span", any, {}, never>;
3
4
  export declare const ServerItemWrap: import("styled-components").StyledComponent<"div", any, {}, never>;
5
+ export declare const StyledCopyButton: import("styled-components").StyledComponent<import("react").NamedExoticComponent<{
6
+ data: unknown;
7
+ type?: import("@redocly/theme").ControlItemType | undefined;
8
+ toasterPlacement?: "left" | "right" | "top" | "bottom" | undefined;
9
+ toasterText?: string | undefined;
10
+ toasterDuration?: number | undefined;
11
+ buttonText?: string | undefined;
12
+ onCopyClick?: ((e: import("react").MouseEvent<HTMLElement, MouseEvent>) => void) | undefined;
13
+ dataTestId?: string | undefined;
14
+ className?: string | undefined;
15
+ }>, any, {}, never>;
@@ -1,4 +1,4 @@
1
- import styled from"styled-components";import{breakpoints}from"@redocly/theme";export const PathWrapper=styled.div`
1
+ import styled from"styled-components";import{breakpoints,CopyButton}from"@redocly/theme";export const PathWrapper=styled.div`
2
2
  display: inline-flex;
3
3
  align-items: flex-end;
4
4
  overflow-x: hidden;
@@ -12,9 +12,13 @@ import styled from"styled-components";import{breakpoints}from"@redocly/theme";ex
12
12
  font-size: var(--font-size-base);
13
13
  `;export const ServerItemWrap=styled.div`
14
14
  padding: calc(var(--spacing-unit) * 1.5) var(--spacing-xs) calc(var(--spacing-unit) * 1.5)
15
- var(--spacing-md);
15
+ var(--spacing-lg);
16
16
  @media screen and (max-width: ${breakpoints.large}) {
17
17
  max-width: 280px;
18
18
  }
19
+ `;export const StyledCopyButton=styled(CopyButton)`
20
+ :hover {
21
+ background-color: var(--dropdown-list-item-bg-color-hover);
22
+ }
19
23
  `;
20
24
  //# sourceMappingURL=styled.js.map
@@ -1,2 +1,2 @@
1
- import{useActiveSectionId}from"@redocly/theme";import{useMemo}from"react";import{useLocation}from"react-router-dom";import{pathMatchedLink}from"../../../utils";export function useMenuItems({items:e}){const t=useLocation(),i=useActiveSectionId(t,!1,!1);return useMemo((()=>mapAndSetActiveItems(e,i,t)),[i,e,t])}function mapAndSetActiveItems(e,t="",i){const s=[];return convertOpenAPIDocs2Sidebar({contentItems:e,sidebarItems:s,activeItemId:t,location:i}),s}function isItemActive(e,t="",i){return!!e.href&&(t?e.id===t:pathMatchedLink(i,e.href))}function isSubItemActive(e,t="",i){return(e.items||[]).some((e=>isItemActive(e,t,i)||isSubItemActive(e,t,i)))}function convertOpenAPIDocs2Sidebar(e){const{contentItems:t,sidebarItems:i,activeItemId:s,location:c}=e;let n=!0;for(const o of t){const t=isItemActive(o,s,c),a=isSubItemActive(o,s,c);switch(o.type){case"group":i.push({type:"separator",label:o.name,active:t,hasActiveSubItem:a}),convertOpenAPIDocs2Sidebar(Object.assign(Object.assign({},e),{contentItems:o.items,sidebarItems:i}));break;case"tag":const m={type:"group",label:o.name,items:[],link:o.href,active:t,hasActiveSubItem:a};i.push(m),convertOpenAPIDocs2Sidebar({contentItems:o.items,sidebarItems:m.items||[],activeItemId:s,location:c});break;case"operation":case"schema":o.isWebhook&&n&&(i.push({type:"separator",label:"Webhooks",variant:"secondary"}),n=!1),i.push({type:"link",label:o.name,httpVerb:"schema"===o.type?"schema":o.httpVerb,link:o.href,active:t,hasActiveSubItem:a});break;case"section":if(-1===o.depth)continue;const r={type:o.items.length?"group":"link",label:o.name,link:o.href,items:[],active:t,hasActiveSubItem:a};i.push(r),o.items.length&&convertOpenAPIDocs2Sidebar({contentItems:o.items,sidebarItems:r.items,activeItemId:s,location:c})}}}
1
+ import{useActiveSectionId}from"@redocly/theme";import{useMemo}from"react";import{useLocation}from"react-router-dom";import{pathMatchedLink}from"../../../utils";export function useMenuItems({items:e}){const t=useLocation(),s=useActiveSectionId(t,!1,!1);return useMemo((()=>mapAndSetActiveItems(e,s,t)),[s,e,t])}function mapAndSetActiveItems(e,t="",s){const i=[];return convertOpenAPIDocs2Sidebar({contentItems:e,sidebarItems:i,activeItemId:t,location:s}),i}function isItemActive(e,t="",s){return!!e.href&&(t?e.id===t:pathMatchedLink(s,e.href))}function isSubItemActive(e,t="",s){return(e.items||[]).some((e=>isItemActive(e,t,s)||isSubItemActive(e,t,s)))}function convertOpenAPIDocs2Sidebar(e){const{contentItems:t,sidebarItems:s,activeItemId:i,location:c}=e;let n=!0;for(const o of t){const t=isItemActive(o,i,c),a=isSubItemActive(o,i,c);switch(o.type){case"group":s.push({type:"separator",label:o.name,active:t,hasActiveSubItem:a}),convertOpenAPIDocs2Sidebar(Object.assign(Object.assign({},e),{contentItems:o.items,sidebarItems:s}));break;case"tag":const m={type:"group",label:o.name,items:[],link:o.href,active:t,hasActiveSubItem:a};s.push(m),convertOpenAPIDocs2Sidebar({contentItems:o.items,sidebarItems:m.items||[],activeItemId:i,location:c});break;case"operation":case"schema":o.isWebhook&&n&&(s.push({type:"separator",label:"Webhooks",variant:"secondary"}),n=!1),s.push({type:"link",label:o.name,httpVerb:"schema"===o.type?"schema":o.httpVerb,link:o.href,badges:o.badges,active:t,hasActiveSubItem:a});break;case"section":if(-1===o.depth)continue;const r={type:o.items.length?"group":"link",label:o.name,link:o.href,items:[],active:t,hasActiveSubItem:a};s.push(r),o.items.length&&convertOpenAPIDocs2Sidebar({contentItems:o.items,sidebarItems:r.items,activeItemId:i,location:c})}}}
2
2
  //# sourceMappingURL=useMenuItems.js.map
@@ -18,6 +18,11 @@ import styled from"styled-components";import{LinkIcon,H2}from"@redocly/theme";ex
18
18
  }
19
19
  `;export const Heading=styled(H2)`
20
20
  position: relative;
21
+ display: flex;
22
+ align-items: center;
23
+ gap: var(--spacing-xs);
24
+ flex-wrap: wrap;
25
+
21
26
  :hover {
22
27
  ${LinkIcon} {
23
28
  opacity: 1;
@@ -1,2 +1,2 @@
1
- import{removeLeadingSlash}from"@redocly/theme";import{extractExtensions,getOperationId,getOperationName,getStatusCodeType,getValueFromMdParsedExtension,isStatusCode,JsonPointer,mergeParams,normalizeServers,sortByRequired}from"../utils";import{getCallback}from"./callback";import{getField}from"./field";import{getRequestBody}from"./request";import{getSecurityRequirement}from"./security";import{getResponse}from"./response";export function isPayloadSample(e){return"Payload"===e.lang&&"requestBodyContent"in e}let isCodeSamplesWarningPrinted=!1;export function getOperation(e,r,t,o,s,i){var n;const a=r.isWebhook,l={operationDefinition:r,parent:t,pointer:r.pointer,description:getValueFromMdParsedExtension(r,"description"),externalDocs:r.externalDocs,deprecated:!!r.deprecated,httpVerb:r.httpVerb,operationId:r.operationId,path:r.pathName,isWebhook:a,isCallback:Boolean(null==i?void 0:i.isCallback),isEvent:(null==i?void 0:i.isCallback)||a,name:getOperationName(r),defaultExampleName:r.defaultSampleName,type:"operation",callbackId:null==i?void 0:i.id,href:s,get callbacks(){return Object.keys(r.callbacks||[]).map((i=>{var n;return getCallback(e,i,null===(n=r.callbacks)||void 0===n?void 0:n[i],l.pointer,o,s,t)}))},get responses(){let t=!1;return Object.keys(r.responses||[]).filter((e=>"default"===e||("success"===getStatusCodeType(e)&&(t=!0),isStatusCode(e)))).map((s=>getResponse({parser:e,code:s,defaultAsError:t,infoOrRef:r.responses[s],options:o,isEvent:l.isEvent,operation:l})))},get parameters(){let t=mergeParams(e,r.pathParameters,r.parameters,{pathPointer:JsonPointer.dirName(l.pointer),operationPointer:l.pointer}).map((({paramOrRef:r,pointer:t})=>getField(e,r,t,o,{operation:l,type:"request"})));return o.sortRequiredPropsFirst&&(t=sortByRequired(t)),t}};(null==i?void 0:i.isCallback)?(l.security=(r.security||[]).map((r=>getSecurityRequirement({requirement:r,parser:e}))),l.servers=normalizeServers("",r.servers||r.pathServers||[]),l.id=removeLeadingSlash(s)):(l.id=getOperationId(r,t),l.security=(r.security||e.definition.security||[]).map((r=>getSecurityRequirement({requirement:r,parser:e}))),l.servers=normalizeServers(e.definitionUrl,mergeInMockServer(r.servers||r.pathServers||e.definition.servers||[],o.mockServer))),o.showVendorExtensions&&(l.extensions=extractExtensions(r,o.showVendorExtensions)),l.requestBody=r.requestBody&&getRequestBody({parser:e,infoOrRef:r.requestBody,options:o,operation:l,isEvent:l.isEvent});const p=null===(n=l.requestBody)||void 0===n?void 0:n.content;return l.payload={lang:"Payload",source:"",requestBodyContent:(null==p?void 0:p.hasSample)?p:void 0},l.definitionSamples=r["x-codeSamples"]||r["x-code-samples"]||[],r["x-code-samples"]&&!isCodeSamplesWarningPrinted&&(isCodeSamplesWarningPrinted=!0,console.warn('"x-code-samples" is deprecated. Use "x-codeSamples" instead')),l.hasSamples=(null==p?void 0:p.hasSample)||l.definitionSamples.length>0,l}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}}
1
+ import{removeLeadingSlash}from"@redocly/theme";import{extractExtensions,getOperationId,getOperationName,getStatusCodeType,getValueFromMdParsedExtension,isStatusCode,JsonPointer,mergeParams,normalizeServers,sortByRequired}from"../utils";import{getCallback}from"./callback";import{getField}from"./field";import{getRequestBody}from"./request";import{getSecurityRequirement}from"./security";import{getResponse}from"./response";export function isPayloadSample(e){return"Payload"===e.lang&&"requestBodyContent"in e}let isCodeSamplesWarningPrinted=!1;export function getOperation(e,r,t,o,s,i){var a,n;const l=r.isWebhook,p={operationDefinition:r,parent:t,pointer:r.pointer,description:getValueFromMdParsedExtension(r,"description"),externalDocs:r.externalDocs,deprecated:!!r.deprecated,httpVerb:r.httpVerb,operationId:r.operationId,path:r.pathName,isWebhook:l,isCallback:Boolean(null==i?void 0:i.isCallback),isEvent:(null==i?void 0:i.isCallback)||l,name:getOperationName(r),defaultExampleName:r.defaultSampleName,type:"operation",callbackId:null==i?void 0:i.id,href:s,get callbacks(){return Object.keys(r.callbacks||[]).map((i=>{var a;return getCallback(e,i,null===(a=r.callbacks)||void 0===a?void 0:a[i],p.pointer,o,s,t)}))},get responses(){let t=!1;return Object.keys(r.responses||[]).filter((e=>"default"===e||("success"===getStatusCodeType(e)&&(t=!0),isStatusCode(e)))).map((s=>getResponse({parser:e,code:s,defaultAsError:t,infoOrRef:r.responses[s],options:o,isEvent:p.isEvent,operation:p})))},get parameters(){let t=mergeParams(e,r.pathParameters,r.parameters,{pathPointer:JsonPointer.dirName(p.pointer),operationPointer:p.pointer}).map((({paramOrRef:r,pointer:t})=>getField(e,r,t,o,{operation:p,type:"request"})));return o.sortRequiredPropsFirst&&(t=sortByRequired(t)),t}};(null==i?void 0:i.isCallback)?(p.security=(r.security||[]).map((r=>getSecurityRequirement({requirement:r,parser:e}))),p.servers=normalizeServers("",r.servers||r.pathServers||[]),p.id=removeLeadingSlash(s)):(p.id=getOperationId(r,t),p.security=(r.security||e.definition.security||[]).map((r=>getSecurityRequirement({requirement:r,parser:e}))),p.servers=normalizeServers(e.definitionUrl,mergeInMockServer(r.servers||r.pathServers||e.definition.servers||[],o.mockServer))),o.showVendorExtensions&&(p.extensions=extractExtensions(r,o.showVendorExtensions)),p.requestBody=r.requestBody&&getRequestBody({parser:e,infoOrRef:r.requestBody,options:o,operation:p,isEvent:p.isEvent});const d=null===(a=p.requestBody)||void 0===a?void 0:a.content;return p.payload={lang:"Payload",source:"",requestBodyContent:(null==d?void 0:d.hasSample)?d:void 0},p.definitionSamples=r["x-codeSamples"]||r["x-code-samples"]||[],p.badges=(null===(n=r["x-badges"])||void 0===n?void 0:n.map((({name:e,color:r,position:t})=>({name:e,color:r||"var(--color-info-base)",position:t||"after"}))))||[],r["x-code-samples"]&&!isCodeSamplesWarningPrinted&&(isCodeSamplesWarningPrinted=!0,console.warn('"x-code-samples" is deprecated. Use "x-codeSamples" instead')),p.hasSamples=(null==d?void 0:d.hasSample)||p.definitionSamples.length>0,p}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,5 +1,5 @@
1
1
  import type { Node } from '@markdoc/markdoc';
2
- import type { OpenAPISecurityScheme, OpenAPIEncoding, OpenAPIMediaType, OpenAPIParameterLocation, OpenAPIParameterStyle, OpenAPIExternalDocumentation, OpenAPIServer, OpenAPIXCodeSample, OpenAPISchema, Referenced, OpenAPIInfo } from '../types';
2
+ import type { OpenAPISecurityScheme, OpenAPIEncoding, OpenAPIMediaType, OpenAPIParameterLocation, OpenAPIParameterStyle, OpenAPIExternalDocumentation, OpenAPIServer, OpenAPIXCodeSample, OpenAPIXBadges, OpenAPISchema, Referenced, OpenAPIInfo } from '../types';
3
3
  import type { OpenAPIParser } from '../services/OpenAPIParser';
4
4
  import type { Options } from '../services/config-options';
5
5
  import type { ExtendedOpenAPIOperation, MenuItemGroupType, MenuItemType, MergedOpenAPISchema, Unstable_ExternalCodeSample } from '../services/types';
@@ -141,6 +141,7 @@ export type OperationModel = {
141
141
  requestBodyContent?: MediaContentModel;
142
142
  };
143
143
  definitionSamples: OpenAPIXCodeSample[] | Unstable_ExternalCodeSample[];
144
+ badges: OpenAPIXBadges[];
144
145
  hasSamples: boolean;
145
146
  parameters: FieldModel[];
146
147
  responses: ResponseModel[];
@@ -175,6 +176,7 @@ export type OperationMenuItem = {
175
176
  path: string;
176
177
  isWebhook: boolean;
177
178
  operationId?: string;
179
+ badges?: OpenAPIXBadges[];
178
180
  };
179
181
  export type SchemaModel = {
180
182
  operationPointer: string;
@@ -1,2 +1,2 @@
1
- import{encodeBackSlashes,getOperationId,getOperationName}from"../../utils";export function getOperationsItems(e,t,o){if(0===t.operations.length)return[];const r=[];for(const n of t.operations){const t=getOperationId(n,e),i="operation";r.push({id:t,type:i,parent:e,operationDefinition:n,depth:o,name:getOperationName(n),httpVerb:n.httpVerb,path:n.pathName,items:[],isWebhook:n.isWebhook,operationId:n.operationId,href:getHref({id:t})})}return r.sort(((e,t)=>Number(e.isWebhook)-Number(t.isWebhook)))}export function getHref({id:e}){return encodeBackSlashes(`/${e}`.toLowerCase())}
1
+ import{encodeBackSlashes,getOperationId,getOperationName}from"../../utils";export function getOperationsItems(e,t,o){if(0===t.operations.length)return[];const r=[];for(const n of t.operations){const t=getOperationId(n,e),i="operation";r.push({id:t,type:i,parent:e,operationDefinition:n,depth:o,name:getOperationName(n),httpVerb:n.httpVerb,path:n.pathName,items:[],isWebhook:n.isWebhook,operationId:n.operationId,badges:n["x-badges"]||[],href:getHref({id:t})})}return r.sort(((e,t)=>Number(e.isWebhook)-Number(t.isWebhook)))}export function getHref({id:e}){return encodeBackSlashes(`/${e}`.toLowerCase())}
2
2
  //# sourceMappingURL=operation.js.map
@@ -81,6 +81,11 @@ export interface OpenAPIPath extends Partial<OpenAPIRef>, ParsedDescriptionWithS
81
81
  export interface OpenAPIXCodeSample extends Sample {
82
82
  source: string;
83
83
  }
84
+ export interface OpenAPIXBadges {
85
+ name: string;
86
+ color?: string;
87
+ position?: 'before' | 'after';
88
+ }
84
89
  export interface OpenAPIOperation extends ParsedDescriptionWithSummary {
85
90
  tags?: string[];
86
91
  summary?: string;
@@ -98,6 +103,7 @@ export interface OpenAPIOperation extends ParsedDescriptionWithSummary {
98
103
  servers?: OpenAPIServer[];
99
104
  'x-codeSamples'?: OpenAPIXCodeSample[];
100
105
  'x-code-samples'?: OpenAPIXCodeSample[];
106
+ 'x-badges'?: OpenAPIXBadges[];
101
107
  }
102
108
  export interface OpenAPIParameter extends ParsedDescription {
103
109
  name: string;
@@ -1,2 +1,2 @@
1
- import{dirname}from"path";import UrlTemplate from"url-template";import{IS_BROWSER}from"@redocly/theme";import{deleteEmptyArrayItem,isArrayOfObjects,isNumeric,removeQueryStringAndHash,resolveUrl,sanitizeItemId,normalizeText,getValueFromMdParsedExtension}from"./helpers";import{DEFAULT_TAG_SLUG,MediaTypes}from"../constants";import{JsonPointer}from"./JsonPointer";import{joinWithSeparator}from"../services";function isWildcardStatusCode(e){return"string"==typeof e&&/\dxx/i.test(e)}export function isStatusCode(e){return"default"===e||isNumeric(e)||isWildcardStatusCode(e)}export function getStatusCodeType(e,r=!1){if("default"===e)return r?"error":"success";let t="string"==typeof e?parseInt(e,10):e;if(isWildcardStatusCode(e)&&(t*=100),t<100||t>599)throw new Error("invalid HTTP code");let i="success";return t>=300&&t<400?i="redirect":t>=400?i="error":t<200&&(i="info"),i}const operationNames={get:!0,post:!0,put:!0,head:!0,patch:!0,delete:!0,options:!0,$ref:!0};export function isOperationName(e){return e in operationNames}export function getOperationName(e){const{operationId:r,pathName:t}=e,i=normalizeText(getValueFromMdParsedExtension(e,"description"));return normalizeText(getValueFromMdParsedExtension(e,"summary"))||r||i&&i.substring(0,50)||t||"<no summary>"}export function getOperationId(e,r){var t;return(null==r?void 0:r.id)?joinWithSeparator(r.id,sanitizeItemId(e.operationId?e.operationId:pointerToId(e.pointer))).toLowerCase():(null===(t=e.tags)||void 0===t?void 0:t.length)?sanitizeItemId(e.operationId?e.operationId:pointerToId(e.pointer)):sanitizeItemId(e.operationId?joinWithSeparator(DEFAULT_TAG_SLUG,e.operationId):pointerToId(e.pointer))}function pointerToId(e){return(null==e?void 0:e.startsWith("/"))?e.slice(1,e.length):e}const schemaKeywordTypes={multipleOf:"number",maximum:"number",exclusiveMaximum:"number",minimum:"number",exclusiveMinimum:"number",maxLength:"string",minLength:"string",pattern:"string",contentEncoding:"string",contentMediaType:"string",items:"array",maxItems:"array",minItems:"array",uniqueItems:"array",maxProperties:"object",minProperties:"object",required:"object",additionalProperties:"object",unevaluatedProperties:"object",patternProperties:"object",properties:"object"};export function detectType(e){if(void 0!==e.type&&!Array.isArray(e.type))return e.type;const r=Object.keys(schemaKeywordTypes);for(const t of r){const r=schemaKeywordTypes[t];if(void 0!==e[t])return r}return"any"}export function isPrimitiveType(e,r=e.type){if(e["x-circular-ref"])return!0;if(void 0!==e.oneOf||void 0!==e.anyOf)return!1;if(e.if&&e.then||e.if&&e.else)return!1;let t=!0;const i=Array.isArray(r);return("object"===r||i&&(null==r?void 0:r.includes("object")))&&(t=void 0!==e.properties?0===Object.keys(e.properties).length:void 0===e.additionalProperties&&void 0===e.unevaluatedProperties&&void 0===e.patternProperties),!Array.isArray(e.items)&&!Array.isArray(e.prefixItems)&&(void 0!==e.items&&"boolean"!=typeof e.items&&("array"===r||i&&(null==r?void 0:r.includes("array")))&&(t=isPrimitiveType(e.items,e.items.type)),t)}export function isJsonLike(e){return-1!==e.search(/json/i)}export function isFormUrlEncoded(e){return e===MediaTypes.URL_ENCODED}export function isMultipartFormData(e){return e===MediaTypes.MULTIPART}function delimitedEncodeField(e,r,t){return Array.isArray(e)?e.map((e=>e.toString())).join(t):"object"==typeof e?Object.keys(e).map((r=>`${r}${t}${e[r]}`)).join(t):r+"="+e.toString()}function deepObjectEncodeField(e,r){return Array.isArray(e)?(console.warn("deepObject style cannot be used with array value:"+e.toString()),""):"object"==typeof e?Object.keys(e).map((t=>e[t]?`${r}[${t}]=${e[t]}`:void 0)).filter(Boolean).join("&"):(console.warn("deepObject style cannot be used with non-object value:"+e.toString()),"")}function serializeFormValue(e,r,t){const i="__redoc_param_name__",n=r?"*":"";return UrlTemplate.parse(`{?${i}${n}}`).expand({[i]:t}).substring(1).replace(/__redoc_param_name__/g,e)}function serializeSimpleValue(e,r){const t=e?"*":"",i="__redoc_param_name__",n=UrlTemplate.parse(`{${i}${t}}`);return decodeURIComponent(n.expand({[i]:r}))}export function urlFormEncodePayload(e,r={}){if(Array.isArray(e))throw new Error("Payload must have fields: "+e.toString());return Object.keys(e).map((t=>{const i=e[t],{style:n="form",explode:o=!0}=r[t]||{};switch(n){case"form":return serializeFormValue(t,o,i);case"spaceDelimited":return delimitedEncodeField(i,t,"%20");case"pipeDelimited":return delimitedEncodeField(i,t,"|");case"deepObject":return deepObjectEncodeField(i,t);default:return console.warn("Incorrect or unsupported encoding style: "+n),""}})).join("&")}function serializePathParameter(e,r,t,i){const n=t?"*":"";let o="";"label"===r?o=".":"matrix"===r&&(o=";");const a="__redoc_param_name__";return UrlTemplate.parse(`{${o}${a}${n}}`).expand({[a]:i}).replace(/__redoc_param_name__/g,e)}export function serializeQueryParameter(e,r,t,i){const n=n=>{switch(r){case"form":return serializeFormValue(e,t,n);case"spaceDelimited":return Array.isArray(n)||"object"==typeof n?t?serializeFormValue(e,t,n):delimitedEncodeField(i,e,"%20"):(console.warn("The style spaceDelimited is applicable to arrays or objects"),"");case"pipeDelimited":return Array.isArray(n)||"object"==typeof n?t?serializeFormValue(e,t,n):delimitedEncodeField(i,e,"|"):(console.warn("The style pipeDelimited is applicable to arrays or objects"),"");case"deepObject":return!t||Array.isArray(n)||"object"!=typeof n?(console.warn("The style deepObject is only applicable for objects with explode=true"),""):deepObjectEncodeField(n,e);case"simple":return serializeSimpleValue(t,i);default:return console.warn("Unexpected style for query: "+r),""}};return isArrayOfObjects(i)&&(i=deleteEmptyArrayItem(i).map((e=>n(e)))),n(i)}function serializeHeaderParameter(e,r,t){return"simple"===e?serializeSimpleValue(r,t):(console.warn("Unexpected style for header: "+e),"")}function serializeCookieParameter(e,r,t,i){return"form"===r?serializeFormValue(e,t,i):(console.warn("Unexpected style for cookie: "+r),"")}export function serializeParameterValueWithMime(e,r){return isJsonLike(r)?JSON.stringify(e):(console.warn(`Parameter serialization as ${r} is not supported`),"")}export function serializeParameterValue(e,r){const{name:t,style:i,explode:n=!1,serializationMime:o}=e;if(o)switch(e.in){case"path":case"header":return serializeParameterValueWithMime(r,o);case"cookie":case"query":return`${t}=${serializeParameterValueWithMime(r,o)}`;default:return console.warn("Unexpected parameter location: "+e.in),""}if(!i)return console.warn(`Missing style attribute or content for parameter ${t}`),"";switch(e.in){case"path":return serializePathParameter(t,i,n,r);case"query":return serializeQueryParameter(t,i,n,r);case"header":return serializeHeaderParameter(i,n,r);case"cookie":return serializeCookieParameter(t,i,n,r);default:return console.warn("Unexpected parameter location: "+e.in),""}}export function langFromMime(e){return-1!==e.search(/xml/i)?"xml":"clike"}const DEFINITION_NAME_REGEX=/^#\/components\/(schemas|pathItems)\/([^/]+)$/;export function isNamedDefinition(e){return DEFINITION_NAME_REGEX.test(e||"")}export function getDefinitionName(e){var r;return null===(r=null==e?void 0:e.match(DEFINITION_NAME_REGEX))||void 0===r?void 0:r.pop()}function humanizeMultipleOfConstraint(e){if(void 0===e)return;const r=e.toString(10);return/^0\.0*1$/.test(r)?`decimal places <= ${r.split(".")[1].length}`:`multiple of ${r}`}function humanizeRangeConstraint(e,r,t){let i;return void 0!==r&&void 0!==t?i=r===t?`= ${r} ${e}`:`[ ${r} .. ${t} ] ${e}`:void 0!==t?i=`<= ${t} ${e}`:void 0!==r&&(i=1===r?"non-empty":`>= ${r} ${e}`),i}export function humanizeNumberRange(e){var r,t;const i="number"==typeof e.exclusiveMinimum?Math.min(e.exclusiveMinimum,null!==(r=e.minimum)&&void 0!==r?r:1/0):e.minimum,n="number"==typeof e.exclusiveMaximum?Math.max(e.exclusiveMaximum,null!==(t=e.maximum)&&void 0!==t?t:-1/0):e.maximum,o="number"==typeof e.exclusiveMinimum||e.exclusiveMinimum,a="number"==typeof e.exclusiveMaximum||e.exclusiveMaximum;return void 0!==i&&void 0!==n?`${o?"( ":"[ "}${i} .. ${n}${a?" )":" ]"}`:void 0!==n?`${a?"< ":"<= "}${n}`:void 0!==i?`${o?"> ":">= "}${i}`:void 0}export function humanizeConstraints(e){const r=[],t=humanizeRangeConstraint("characters",e.minLength,e.maxLength);void 0!==t&&r.push(t);const i=humanizeRangeConstraint("items",e.minItems,e.maxItems);void 0!==i&&r.push(i);const n=humanizeRangeConstraint(1===e.minProperties&&1===e.maxProperties?"property":"properties",e.minProperties,e.maxProperties);void 0!==n&&r.push(n);const o=humanizeMultipleOfConstraint(e.multipleOf);void 0!==o&&r.push(o);const a=humanizeNumberRange(e);return void 0!==a&&r.push(a),e.uniqueItems&&r.push("unique"),r}export function sortByRequired(e,r=[]){const t=[],i=[],n=[];return e.forEach((e=>{e.required?r.includes(e.name)?i.push(e):n.push(e):t.push(e)})),i.sort(((e,t)=>r.indexOf(e.name)-r.indexOf(t.name))),[...i,...n,...t]}export function mergeParams(e,r=[],t=[],{pathPointer:i,operationPointer:n}){const o={};t.forEach((r=>{({resolved:r}=e.deref(r)),o[r.name+"_"+r.in]=!0}));return[...r.map(((e,r)=>({paramOrRef:e,pointer:JsonPointer.join(i,["parameters",String(r)])}))).filter((({paramOrRef:r})=>(({resolved:r}=e.deref(r)),!o[r.name+"_"+r.in]))),...t.map(((e,r)=>({paramOrRef:e,pointer:JsonPointer.join(n,["parameters",String(r)])})))]}export function normalizeServers(e,r){const t=void 0===e?removeQueryStringAndHash((()=>{if(!IS_BROWSER)return globalThis.SSR_HOSTNAME||"";const e=window.location.href;return e.endsWith(".html")?dirname(e):e})()):dirname(e);return 0===r.length&&(r=[{url:"/"}]),r.map((e=>{return Object.assign(Object.assign({},e),{url:(r=e.url,resolveUrl(t,r)),description:e.description||""});var r}))}export const shortenHTTPVerb=e=>({delete:"del",options:"opts"}[e]||e);export function isRedocExtension(e){return e in{"x-circular-ref":!0,"x-parentRefs":!0,"x-refsStack":!0,"x-code-samples":!0,"x-codeSamples":!0,"x-displayName":!0,"x-examples":!0,"x-ignoredHeaderParameters":!0,"x-logo":!0,"x-nullable":!0,"x-servers":!0,"x-tagGroups":!0,"x-traitTag":!0,"x-additionalPropertiesName":!0,"x-explicitMappingOnly":!0,"x-enumDescriptions":!0,"x-tokenEndpointAuthMethod":!0,"x-feedback":!0}||e.startsWith("x-parsed-md-")}export function extractExtensions(e,r){return Object.keys(e).filter((e=>!0===r?e.startsWith("x-")&&!isRedocExtension(e):e.startsWith("x-")&&r.indexOf(e)>-1)).reduce(((r,t)=>(r[t]=e[t],r)),{})}export function pluralizeType(e){return e.split(" or ").map((e=>e.replace(/^(string|object|number|integer|array|boolean)s?( ?.*)/,"$1s$2"))).join(" or ")}export function getContentWithLegacyExamples(e){let r=e.content;const t=e["x-examples"],i=e["x-example"];if(t){r=Object.assign({},r);for(const e of Object.keys(t)){const i=t[e];r[e]=Object.assign(Object.assign({},r[e]),{examples:i})}}else if(i){r=Object.assign({},r);for(const e of Object.keys(i)){const t=i[e];r[e]=Object.assign(Object.assign({},r[e]),{example:t})}}return r}
1
+ import{dirname}from"path";import UrlTemplate from"url-template";import{IS_BROWSER}from"@redocly/theme";import{deleteEmptyArrayItem,isArrayOfObjects,isNumeric,removeQueryStringAndHash,resolveUrl,sanitizeItemId,normalizeText,getValueFromMdParsedExtension}from"./helpers";import{DEFAULT_TAG_SLUG,MediaTypes}from"../constants";import{JsonPointer}from"./JsonPointer";import{joinWithSeparator}from"../services";function isWildcardStatusCode(e){return"string"==typeof e&&/\dxx/i.test(e)}export function isStatusCode(e){return"default"===e||isNumeric(e)||isWildcardStatusCode(e)}export function getStatusCodeType(e,r=!1){if("default"===e)return r?"error":"success";let t="string"==typeof e?parseInt(e,10):e;if(isWildcardStatusCode(e)&&(t*=100),t<100||t>599)throw new Error("invalid HTTP code");let i="success";return t>=300&&t<400?i="redirect":t>=400?i="error":t<200&&(i="info"),i}const operationNames={get:!0,post:!0,put:!0,head:!0,patch:!0,delete:!0,options:!0,$ref:!0};export function isOperationName(e){return e in operationNames}export function getOperationName(e){const{operationId:r,pathName:t}=e,i=normalizeText(getValueFromMdParsedExtension(e,"description"));return normalizeText(getValueFromMdParsedExtension(e,"summary"))||r||i&&i.substring(0,50)||t||"<no summary>"}export function getOperationId(e,r){var t;return(null==r?void 0:r.id)?joinWithSeparator(r.id,sanitizeItemId(e.operationId?e.operationId:pointerToId(e.pointer))).toLowerCase():(null===(t=e.tags)||void 0===t?void 0:t.length)?sanitizeItemId(e.operationId?e.operationId:pointerToId(e.pointer)):sanitizeItemId(e.operationId?joinWithSeparator(DEFAULT_TAG_SLUG,e.operationId):pointerToId(e.pointer))}function pointerToId(e){return(null==e?void 0:e.startsWith("/"))?e.slice(1,e.length):e}const schemaKeywordTypes={multipleOf:"number",maximum:"number",exclusiveMaximum:"number",minimum:"number",exclusiveMinimum:"number",maxLength:"string",minLength:"string",pattern:"string",contentEncoding:"string",contentMediaType:"string",items:"array",maxItems:"array",minItems:"array",uniqueItems:"array",maxProperties:"object",minProperties:"object",required:"object",additionalProperties:"object",unevaluatedProperties:"object",patternProperties:"object",properties:"object"};export function detectType(e){if(void 0!==e.type&&!Array.isArray(e.type))return e.type;const r=Object.keys(schemaKeywordTypes);for(const t of r){const r=schemaKeywordTypes[t];if(void 0!==e[t])return r}return"any"}export function isPrimitiveType(e,r=e.type){if(e["x-circular-ref"])return!0;if(void 0!==e.oneOf||void 0!==e.anyOf)return!1;if(e.if&&e.then||e.if&&e.else)return!1;let t=!0;const i=Array.isArray(r);return("object"===r||i&&(null==r?void 0:r.includes("object")))&&(t=void 0!==e.properties?0===Object.keys(e.properties).length:void 0===e.additionalProperties&&void 0===e.unevaluatedProperties&&void 0===e.patternProperties),!Array.isArray(e.items)&&!Array.isArray(e.prefixItems)&&(void 0!==e.items&&"boolean"!=typeof e.items&&("array"===r||i&&(null==r?void 0:r.includes("array")))&&(t=isPrimitiveType(e.items,e.items.type)),t)}export function isJsonLike(e){return-1!==e.search(/json/i)}export function isFormUrlEncoded(e){return e===MediaTypes.URL_ENCODED}export function isMultipartFormData(e){return e===MediaTypes.MULTIPART}function delimitedEncodeField(e,r,t){return Array.isArray(e)?e.map((e=>e.toString())).join(t):"object"==typeof e?Object.keys(e).map((r=>`${r}${t}${e[r]}`)).join(t):r+"="+e.toString()}function deepObjectEncodeField(e,r){return Array.isArray(e)?(console.warn("deepObject style cannot be used with array value:"+e.toString()),""):"object"==typeof e?Object.keys(e).map((t=>e[t]?`${r}[${t}]=${e[t]}`:void 0)).filter(Boolean).join("&"):(console.warn("deepObject style cannot be used with non-object value:"+e.toString()),"")}function serializeFormValue(e,r,t){const i="__redoc_param_name__",n=r?"*":"";return UrlTemplate.parse(`{?${i}${n}}`).expand({[i]:t}).substring(1).replace(/__redoc_param_name__/g,e)}function serializeSimpleValue(e,r){const t=e?"*":"",i="__redoc_param_name__",n=UrlTemplate.parse(`{${i}${t}}`);return decodeURIComponent(n.expand({[i]:r}))}export function urlFormEncodePayload(e,r={}){if(Array.isArray(e))throw new Error("Payload must have fields: "+e.toString());return Object.keys(e).map((t=>{const i=e[t],{style:n="form",explode:o=!0}=r[t]||{};switch(n){case"form":return serializeFormValue(t,o,i);case"spaceDelimited":return delimitedEncodeField(i,t,"%20");case"pipeDelimited":return delimitedEncodeField(i,t,"|");case"deepObject":return deepObjectEncodeField(i,t);default:return console.warn("Incorrect or unsupported encoding style: "+n),""}})).join("&")}function serializePathParameter(e,r,t,i){const n=t?"*":"";let o="";"label"===r?o=".":"matrix"===r&&(o=";");const a="__redoc_param_name__";return UrlTemplate.parse(`{${o}${a}${n}}`).expand({[a]:i}).replace(/__redoc_param_name__/g,e)}export function serializeQueryParameter(e,r,t,i){const n=n=>{switch(r){case"form":return serializeFormValue(e,t,n);case"spaceDelimited":return Array.isArray(n)||"object"==typeof n?t?serializeFormValue(e,t,n):delimitedEncodeField(i,e,"%20"):(console.warn("The style spaceDelimited is applicable to arrays or objects"),"");case"pipeDelimited":return Array.isArray(n)||"object"==typeof n?t?serializeFormValue(e,t,n):delimitedEncodeField(i,e,"|"):(console.warn("The style pipeDelimited is applicable to arrays or objects"),"");case"deepObject":return!t||Array.isArray(n)||"object"!=typeof n?(console.warn("The style deepObject is only applicable for objects with explode=true"),""):deepObjectEncodeField(n,e);case"simple":return serializeSimpleValue(t,i);default:return console.warn("Unexpected style for query: "+r),""}};return isArrayOfObjects(i)&&(i=deleteEmptyArrayItem(i).map((e=>n(e)))),n(i)}function serializeHeaderParameter(e,r,t){return"simple"===e?serializeSimpleValue(r,t):(console.warn("Unexpected style for header: "+e),"")}function serializeCookieParameter(e,r,t,i){return"form"===r?serializeFormValue(e,t,i):(console.warn("Unexpected style for cookie: "+r),"")}export function serializeParameterValueWithMime(e,r){return isJsonLike(r)?JSON.stringify(e):(console.warn(`Parameter serialization as ${r} is not supported`),"")}export function serializeParameterValue(e,r){const{name:t,style:i,explode:n=!1,serializationMime:o}=e;if(o)switch(e.in){case"path":case"header":return serializeParameterValueWithMime(r,o);case"cookie":case"query":return`${t}=${serializeParameterValueWithMime(r,o)}`;default:return console.warn("Unexpected parameter location: "+e.in),""}if(!i)return console.warn(`Missing style attribute or content for parameter ${t}`),"";switch(e.in){case"path":return serializePathParameter(t,i,n,r);case"query":return serializeQueryParameter(t,i,n,r);case"header":return serializeHeaderParameter(i,n,r);case"cookie":return serializeCookieParameter(t,i,n,r);default:return console.warn("Unexpected parameter location: "+e.in),""}}export function langFromMime(e){return-1!==e.search(/xml/i)?"xml":"clike"}const DEFINITION_NAME_REGEX=/^#\/components\/(schemas|pathItems)\/([^/]+)$/;export function isNamedDefinition(e){return DEFINITION_NAME_REGEX.test(e||"")}export function getDefinitionName(e){var r;return null===(r=null==e?void 0:e.match(DEFINITION_NAME_REGEX))||void 0===r?void 0:r.pop()}function humanizeMultipleOfConstraint(e){if(void 0===e)return;const r=e.toString(10);return/^0\.0*1$/.test(r)?`decimal places <= ${r.split(".")[1].length}`:`multiple of ${r}`}function humanizeRangeConstraint(e,r,t){let i;return void 0!==r&&void 0!==t?i=r===t?`= ${r} ${e}`:`[ ${r} .. ${t} ] ${e}`:void 0!==t?i=`<= ${t} ${e}`:void 0!==r&&(i=1===r?"non-empty":`>= ${r} ${e}`),i}export function humanizeNumberRange(e){var r,t;const i="number"==typeof e.exclusiveMinimum?Math.min(e.exclusiveMinimum,null!==(r=e.minimum)&&void 0!==r?r:1/0):e.minimum,n="number"==typeof e.exclusiveMaximum?Math.max(e.exclusiveMaximum,null!==(t=e.maximum)&&void 0!==t?t:-1/0):e.maximum,o="number"==typeof e.exclusiveMinimum||e.exclusiveMinimum,a="number"==typeof e.exclusiveMaximum||e.exclusiveMaximum;return void 0!==i&&void 0!==n?`${o?"( ":"[ "}${i} .. ${n}${a?" )":" ]"}`:void 0!==n?`${a?"< ":"<= "}${n}`:void 0!==i?`${o?"> ":">= "}${i}`:void 0}export function humanizeConstraints(e){const r=[],t=humanizeRangeConstraint("characters",e.minLength,e.maxLength);void 0!==t&&r.push(t);const i=humanizeRangeConstraint("items",e.minItems,e.maxItems);void 0!==i&&r.push(i);const n=humanizeRangeConstraint(1===e.minProperties&&1===e.maxProperties?"property":"properties",e.minProperties,e.maxProperties);void 0!==n&&r.push(n);const o=humanizeMultipleOfConstraint(e.multipleOf);void 0!==o&&r.push(o);const a=humanizeNumberRange(e);return void 0!==a&&r.push(a),e.uniqueItems&&r.push("unique"),r}export function sortByRequired(e,r=[]){const t=[],i=[],n=[];return e.forEach((e=>{e.required?r.includes(e.name)?i.push(e):n.push(e):t.push(e)})),i.sort(((e,t)=>r.indexOf(e.name)-r.indexOf(t.name))),[...i,...n,...t]}export function mergeParams(e,r=[],t=[],{pathPointer:i,operationPointer:n}){const o={};t.forEach((r=>{({resolved:r}=e.deref(r)),o[r.name+"_"+r.in]=!0}));return[...r.map(((e,r)=>({paramOrRef:e,pointer:JsonPointer.join(i,["parameters",String(r)])}))).filter((({paramOrRef:r})=>(({resolved:r}=e.deref(r)),!o[r.name+"_"+r.in]))),...t.map(((e,r)=>({paramOrRef:e,pointer:JsonPointer.join(n,["parameters",String(r)])})))]}export function normalizeServers(e,r){const t=void 0===e?removeQueryStringAndHash((()=>{if(!IS_BROWSER)return globalThis.SSR_HOSTNAME||"";const e=window.location.href;return e.endsWith(".html")?dirname(e):e})()):dirname(e);return 0===r.length&&(r=[{url:"/"}]),r.map((e=>{return Object.assign(Object.assign({},e),{url:(r=e.url,resolveUrl(t,r)),description:e.description||""});var r}))}export const shortenHTTPVerb=e=>({delete:"del",options:"opts"}[e]||e);export function isRedocExtension(e){return e in{"x-circular-ref":!0,"x-parentRefs":!0,"x-refsStack":!0,"x-code-samples":!0,"x-codeSamples":!0,"x-displayName":!0,"x-examples":!0,"x-ignoredHeaderParameters":!0,"x-logo":!0,"x-nullable":!0,"x-servers":!0,"x-tagGroups":!0,"x-traitTag":!0,"x-additionalPropertiesName":!0,"x-explicitMappingOnly":!0,"x-enumDescriptions":!0,"x-tokenEndpointAuthMethod":!0,"x-feedback":!0,"x-badges":!0}||e.startsWith("x-parsed-md-")}export function extractExtensions(e,r){return Object.keys(e).filter((e=>!0===r?e.startsWith("x-")&&!isRedocExtension(e):e.startsWith("x-")&&r.indexOf(e)>-1)).reduce(((r,t)=>(r[t]=e[t],r)),{})}export function pluralizeType(e){return e.split(" or ").map((e=>e.replace(/^(string|object|number|integer|array|boolean)s?( ?.*)/,"$1s$2"))).join(" or ")}export function getContentWithLegacyExamples(e){let r=e.content;const t=e["x-examples"],i=e["x-example"];if(t){r=Object.assign({},r);for(const e of Object.keys(t)){const i=t[e];r[e]=Object.assign(Object.assign({},r[e]),{examples:i})}}else if(i){r=Object.assign({},r);for(const e of Object.keys(i)){const t=i[e];r[e]=Object.assign(Object.assign({},r[e]),{example:t})}}return r}
2
2
  //# sourceMappingURL=openapi.js.map