@redocly/openapi-docs 3.10.0-next.3 → 3.10.0-next.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/redocly-openapi-docs.min.js +1107 -1107
- package/lib/components/PropertyDetails/Examples.js +1 -1
- package/lib/components/PropertyDetails/styled.d.ts +0 -1
- package/lib/components/PropertyDetails/styled.js +2 -2
- package/lib/components/RequestSamples/useCodeSamples.d.ts +1 -1
- package/lib/components/RequestSamples/useCodeSamples.js +1 -1
- package/lib/components/Samples/ExampleSwitch.d.ts +2 -1
- package/lib/components/Samples/ExampleSwitch.js +1 -1
- package/lib/components/ServerListDropdown/ServerListDropdown.js +1 -1
- package/lib/hooks/useOtelTelemetry.d.ts +1 -1
- package/lib/models/operation.js +1 -1
- package/lib/models/types.d.ts +29 -7
- package/lib/services/code-samples/generator.js +1 -1
- package/lib/types/open-api.d.ts +3 -0
- package/lib/utils/configure-helpers.d.ts +11 -0
- package/lib/utils/configure-helpers.js +2 -0
- package/lib/utils/index.d.ts +1 -0
- package/lib/utils/index.js +1 -1
- package/lib/utils/openapi.js +1 -1
- package/lib/utils/replaceVariables.d.ts +2 -2
- package/lib/utils/replaceVariables.js +1 -1
- package/lib-esm/components/PropertyDetails/Examples.js +1 -1
- package/lib-esm/components/PropertyDetails/styled.d.ts +0 -1
- package/lib-esm/components/PropertyDetails/styled.js +1 -1
- package/lib-esm/components/RequestSamples/useCodeSamples.d.ts +1 -1
- package/lib-esm/components/RequestSamples/useCodeSamples.js +1 -1
- package/lib-esm/components/Samples/ExampleSwitch.d.ts +2 -1
- package/lib-esm/components/Samples/ExampleSwitch.js +1 -1
- package/lib-esm/components/ServerListDropdown/ServerListDropdown.js +1 -1
- package/lib-esm/hooks/useOtelTelemetry.d.ts +1 -1
- package/lib-esm/models/operation.js +1 -1
- package/lib-esm/models/types.d.ts +29 -7
- package/lib-esm/services/code-samples/generator.js +1 -1
- package/lib-esm/types/open-api.d.ts +3 -0
- package/lib-esm/utils/configure-helpers.d.ts +11 -0
- package/lib-esm/utils/configure-helpers.js +2 -0
- package/lib-esm/utils/index.d.ts +1 -0
- package/lib-esm/utils/index.js +1 -1
- package/lib-esm/utils/openapi.js +1 -1
- package/lib-esm/utils/replaceVariables.d.ts +2 -2
- package/lib-esm/utils/replaceVariables.js +1 -1
- package/package.json +3 -3
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Examples=Examples,exports.getSerializedValue=getSerializedValue;const jsx_runtime_1=require("react/jsx-runtime"),common_1=require("../common"),utils_1=require("../../utils"),styled_1=require("./styled"),hooks_1=require("../../hooks");function Examples({field:e}){const
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Examples=Examples,exports.getSerializedValue=getSerializedValue;const jsx_runtime_1=require("react/jsx-runtime"),common_1=require("../common"),utils_1=require("../../utils"),styled_1=require("./styled"),hooks_1=require("../../hooks"),Markdown_1=require("../Markdown");function Examples({field:e}){const r=(0,hooks_1.useTranslate)();return e.examples?(0,jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment,{children:[(0,jsx_runtime_1.jsxs)(common_1.FieldLabel,{children:[" ",r("openapi.examples","Examples"),": "]}),(0,jsx_runtime_1.jsx)(styled_1.ExamplesList,{children:Object.entries(e.examples).map((([r,s])=>{const i=(0,utils_1.normalizeText)(s.description);return(0,jsx_runtime_1.jsxs)(styled_1.ExampleWrap,{children:[(0,jsx_runtime_1.jsxs)(styled_1.ExampleSummary,{children:[(0,utils_1.normalizeText)(s.summary)||r," "]}),i&&(0,jsx_runtime_1.jsx)(Markdown_1.Markdown,{source:i}),(0,jsx_runtime_1.jsx)(common_1.ExampleValue,{children:getSerializedValue(e,s.value)})]},r)}))})]}):null}function getSerializedValue(e,r){return e.in?(0,utils_1.tryDecodeURIComponent)((0,utils_1.serializeParameterValue)(e,r)):r}
|
|
2
2
|
//# sourceMappingURL=Examples.js.map
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
export declare const DescriptionEnumsBlock: import("styled-components").StyledComponent<"main", any, import("@redocly/theme").MarkdownProps, never>;
|
|
2
2
|
export declare const TypeWrapper: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
3
|
-
export declare const ExampleDescription: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
4
3
|
export declare const ExampleSummary: import("styled-components").StyledComponent<"label", any, {}, never>;
|
|
5
4
|
export declare const ExampleWrap: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
6
5
|
export declare const ExamplesList: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.FieldDescriptionWrapper=exports.ExamplesList=exports.ExampleWrap=exports.ExampleSummary=exports.
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.FieldDescriptionWrapper=exports.ExamplesList=exports.ExampleWrap=exports.ExampleSummary=exports.TypeWrapper=exports.DescriptionEnumsBlock=void 0;const styled_components_1=__importDefault(require("styled-components")),theme_1=require("@redocly/theme");exports.DescriptionEnumsBlock=(0,styled_components_1.default)(theme_1.Markdown)`
|
|
2
2
|
table.md {
|
|
3
3
|
margin: var(--spacing-xs) 0 0;
|
|
4
4
|
}
|
|
5
5
|
`,exports.TypeWrapper=styled_components_1.default.div`
|
|
6
6
|
line-height: 20px;
|
|
7
|
-
`,exports.
|
|
7
|
+
`,exports.ExampleSummary=styled_components_1.default.label`
|
|
8
8
|
display: block;
|
|
9
9
|
font-size: inherit;
|
|
10
10
|
margin-bottom: 0.2em;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Unstable_ExternalCodeSample } from '../../services';
|
|
2
2
|
import type { OperationModel } from '../../models';
|
|
3
3
|
import type { OpenAPIXCodeSample } from '../../types';
|
|
4
|
-
export declare function useCodeSamples({ payload, isWebhook, definitionSamples, pointer, }: OperationModel): {
|
|
4
|
+
export declare function useCodeSamples({ payload, isWebhook, definitionSamples, pointer, envVariables, }: OperationModel): {
|
|
5
5
|
samples: Array<{
|
|
6
6
|
key: string;
|
|
7
7
|
title: string;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.useCodeSamples=useCodeSamples;const jotai_1=require("jotai"),services_1=require("../../services"),store_1=require("../../jotai/store"),operation_1=require("../../jotai/operation"),app_1=require("../../jotai/app"),hooks_1=require("../../hooks");function useCodeSamples({payload:e,isWebhook:a,definitionSamples:t,pointer:o}){var
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.useCodeSamples=useCodeSamples;const jotai_1=require("jotai"),services_1=require("../../services"),store_1=require("../../jotai/store"),operation_1=require("../../jotai/operation"),app_1=require("../../jotai/app"),hooks_1=require("../../hooks");function useCodeSamples({payload:e,isWebhook:a,definitionSamples:t,pointer:o,envVariables:s}){var n,r;const{parser:l,options:{codeSamples:i,generatedSamplesMaxDepth:p}}=(0,jotai_1.useAtomValue)(store_1.globalStoreAtom),u=(0,jotai_1.useAtomValue)(app_1.activeMimeNameAtom),g=(0,jotai_1.useAtomValue)((0,operation_1.operationStore)(o)),{languages:c}=(0,jotai_1.useAtomValue)(app_1.languageAtom),[m]=(0,jotai_1.useAtomValue)(app_1.environmentAtom),d=(0,hooks_1.useTranslate)(),v=new Map(null==c?void 0:c.map((({key:e,order:a})=>[e,a]))),_=applyEnvironments(t.filter((e=>v.has((0,app_1.getLangKey)(e)))),s,m),b=new Set(_.map(app_1.getLangKey));let j=[];if(!a){j=createCodeSamples((null===(n=i.languages)||void 0===n?void 0:n.filter((({lang:e,label:a})=>"Payload"!==e&&!b.has((0,app_1.getLangKey)({lang:e,label:a})))))||[],i,l.definition,p,g,m,d,u)}const O=[..._,...j],h=null===(r=null==c?void 0:c.find((({lang:a})=>a===(null==e?void 0:e.lang))))||void 0===r?void 0:r.title,y=e&&(0,app_1.getLangKey)({label:h,lang:e.lang});e&&y&&v.has(y)&&O.push(Object.assign(Object.assign({},e),{label:h,order:v.get(y)}));const f=O.map((e=>{var a;const t=null!==(a=e.label)&&void 0!==a?a:e.lang;return Object.assign({key:(0,app_1.getLangKey)(e),title:t,order:"number"==typeof v.get(t.toLowerCase())?v.get(t.toLowerCase()):9999},e)})).sort(((e,a)=>e.order-a.order));return{samples:f}}function createCodeSamples(e,{skipOptionalParameters:a,withOAuth2Call:t},o,s,n,r,l,i){return e.map((({lang:e,label:p,options:u})=>({lang:e,label:p,get:p=>(0,services_1.getCodeSample)(Object.assign(Object.assign({},p),{lang:e,options:Object.assign(Object.assign({},u),{skipOptionalParameters:a,withOAuth2Call:t,spec:o,generatedPayloadSamplesMaxDepth:s,store:n,activeMimeName:i}),environment:r,translate:l}))})))}function applyEnvironments(e,a,t){var o;if(!a||!e.length)return e;const s=null==t?void 0:t.server;let n=Object.assign({},a.values||{});return s&&(null===(o=a.serverValues)||void 0===o?void 0:o[s])&&(n=Object.assign(Object.assign({},n),a.serverValues[s])),0===Object.keys(n).length?e:e.map((e=>{const a=Object.assign({},e);return"source"in a&&"string"==typeof a.source&&(a.source=a.source.replace(/\{\{([^}]+)\}\}/g,((e,a)=>void 0!==n[a]?n[a]:e))),a}))}
|
|
2
2
|
//# sourceMappingURL=useCodeSamples.js.map
|
|
@@ -9,5 +9,6 @@ export interface ExampleSwitchOptions {
|
|
|
9
9
|
export interface ExampleSwitchProps extends ExampleSwitchOptions {
|
|
10
10
|
examples: ExampleModelsMap;
|
|
11
11
|
onChange: (key: string) => void;
|
|
12
|
+
className?: string;
|
|
12
13
|
}
|
|
13
|
-
export declare const ExampleSwitch: ({ exampleKey, examples, onChange, }: ExampleSwitchProps) => ReactElement | null;
|
|
14
|
+
export declare const ExampleSwitch: ({ exampleKey, examples, onChange, className, }: ExampleSwitchProps) => ReactElement | null;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.ExampleSwitch=void 0;const jsx_runtime_1=require("react/jsx-runtime"),react_1=require("react"),common_1=require("../common"),SelectOrLabel_1=require("../SelectOrLabel"),utils_1=require("../../utils"),hooks_1=require("../../hooks"),ExampleSwitch=({exampleKey:e,examples:t,onChange:l})=>{var r;const
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.ExampleSwitch=void 0;const jsx_runtime_1=require("react/jsx-runtime"),react_1=require("react"),common_1=require("../common"),SelectOrLabel_1=require("../SelectOrLabel"),utils_1=require("../../utils"),hooks_1=require("../../hooks"),ExampleSwitch=({exampleKey:e,examples:t,onChange:l,className:a})=>{var r;const s=(0,hooks_1.useOtelTelemetry)(),i=Object.keys(t),o=e?i.indexOf(e):0,[c,m]=(0,react_1.useState)(o>-1?o:0);(0,react_1.useEffect)((()=>m(o>-1?o:0)),[e,o]);const n=i.map(((e,l)=>({value:(0,utils_1.normalizeText)(t[e].summary)||e,idx:l})));return n.length<2?null:(0,jsx_runtime_1.jsx)(common_1.Container,{"data-testid":"example-switch",className:a,children:(0,jsx_runtime_1.jsx)(SelectOrLabel_1.SelectOrLabel,{Select:common_1.Select,Label:common_1.MimeLabel,variant:"dark",fullWidth:!0,options:n,value:null===(r=n[c])||void 0===r?void 0:r.value,onChange:({idx:e})=>{s.send("openapi_docs.examples_switcher.clicked",{example:i[e],number_of_examples:i.length}),m(e),l(i[e])}})})};exports.ExampleSwitch=ExampleSwitch;
|
|
2
2
|
//# sourceMappingURL=ExampleSwitch.js.map
|
|
@@ -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"),common_1=require("../common"),styled_1=require("./styled"),PanelItem_1=require("../PanelItem"),services_1=require("../../services"),
|
|
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"),common_1=require("../common"),styled_1=require("./styled"),PanelItem_1=require("../PanelItem"),services_1=require("../../services"),app_1=require("../../jotai/app"),hooks_1=require("../../hooks"),environments_1=require("../../utils/environments"),ServerListDropdown=({operation:e,className:r})=>{const t=(0,hooks_1.useOtelTelemetry)(),[[s],n]=(0,jotai_1.useAtom)(app_1.environmentAtom),o=(0,hooks_1.useActiveWithFallback)(e.servers.map((e=>Object.assign(Object.assign({},e),{key:e.url}))),s.server),i=(0,react_1.useCallback)((e=>{e.stopPropagation()}),[]),a=(0,react_1.useCallback)((r=>()=>{1!==e.servers.length&&(n({environment:(0,environments_1.getServerEnvName)(r)}),t.send("openapi_docs.switch_servers.clicked",{server:(0,environments_1.getServerEnvName)(r)}))}),[e.servers.length,n,t]),_=(0,react_1.useMemo)((()=>e.servers.map((r=>{const t=(0,services_1.joinWithSeparator)(r.url,e.path);return(0,jsx_runtime_1.jsx)(styled_1.StyledDropdownMenuItem,{onAction:a(r),children:(0,jsx_runtime_1.jsx)(PanelItem_1.PanelItem,{header:r.description,title:t,actions:[(0,jsx_runtime_1.jsx)(styled_1.StyledCopyButton,{data:t,toasterPlacement:"left",onCopyClick:i},t)],active:r.url===o,withCheckmark:!0})},t)}))),[e.servers,e.path,a,i,o]);return(0,jsx_runtime_1.jsx)(theme_1.Dropdown,{className:r,trigger:(0,jsx_runtime_1.jsxs)(styled_1.PathWrapper,{variant:"ghost",children:[(0,jsx_runtime_1.jsx)(common_1.HttpVerb,{color:e.httpVerb,children:e.httpVerb}),(0,jsx_runtime_1.jsx)(styled_1.Path,{children:e.path})]}),withArrow:!0,children:(0,jsx_runtime_1.jsx)(theme_1.DropdownMenu,{children:_})})};exports.ServerListDropdown=ServerListDropdown;
|
|
2
2
|
//# sourceMappingURL=ServerListDropdown.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export declare function useOtelTelemetry(): {
|
|
2
|
-
send(action: "error" | "page.viewed" | "search.ai.query" | "search.query" | "search.result.clicked" | "openapi_docs.viewed" | "openapi_docs.performance_metrics" | "openapi_docs.download_definition.clicked" | "openapi_docs.select_language.clicked" | "openapi_docs.expand_collapse_all.clicked" | "openapi_docs.copy_code_snippet.clicked" | "openapi_docs.switch_servers.clicked" | "openapi_docs.examples_switcher.clicked" | "openapi_docs.try_it.opened" | "asyncapi_docs.performance_metrics" | "asyncapi_docs.viewed" | "asyncapi_docs.switch_message.clicked" | "asyncapi_docs.switch_example.clicked" | "asyncapi_docs.message.clicked", data: unknown): void;
|
|
2
|
+
send(action: "error" | "page.viewed" | "search.ai.query" | "search.query" | "feedback.sent" | "search.result.clicked" | "openapi_docs.viewed" | "openapi_docs.performance_metrics" | "openapi_docs.download_definition.clicked" | "openapi_docs.select_language.clicked" | "openapi_docs.expand_collapse_all.clicked" | "openapi_docs.copy_code_snippet.clicked" | "openapi_docs.switch_servers.clicked" | "openapi_docs.examples_switcher.clicked" | "openapi_docs.try_it.opened" | "asyncapi_docs.performance_metrics" | "asyncapi_docs.viewed" | "asyncapi_docs.switch_message.clicked" | "asyncapi_docs.switch_example.clicked" | "asyncapi_docs.message.clicked", data: unknown): void;
|
|
3
3
|
};
|
package/lib/models/operation.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.isPayloadSample=isPayloadSample,exports.getOperation=getOperation,exports.mergeInMockServer=mergeInMockServer;const theme_1=require("@redocly/theme"),config_1=require("@redocly/config"),utils_1=require("../utils"),callback_1=require("./callback"),field_1=require("./field"),request_1=require("./request"),security_1=require("./security"),response_1=require("./response"),operation_1=require("../services/menu/operation");function isPayloadSample(e){return"Payload"===e.lang&&"requestBodyContent"in e}function getOperation(e,
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.isPayloadSample=isPayloadSample,exports.getOperation=getOperation,exports.mergeInMockServer=mergeInMockServer;const theme_1=require("@redocly/theme"),config_1=require("@redocly/config"),utils_1=require("../utils"),callback_1=require("./callback"),field_1=require("./field"),request_1=require("./request"),security_1=require("./security"),response_1=require("./response"),operation_1=require("../services/menu/operation");function isPayloadSample(e){return"Payload"===e.lang&&"requestBodyContent"in e}function getOperation(e,r,t,s,i,o,a){var n,l,u;const p=r.isWebhook,c={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:p,isCallback:Boolean(null==o?void 0:o.isCallback),isEvent:(null==o?void 0:o.isCallback)||p,name:(0,utils_1.getOperationName)(r),defaultExampleName:r.defaultSampleName,[config_1.REDOCLY_TEAMS_RBAC]:r[config_1.REDOCLY_TEAMS_RBAC]||(null==t?void 0:t[config_1.REDOCLY_TEAMS_RBAC]),type:"operation",callbackId:null==o?void 0:o.id,href:i,get callbacks(){return Object.keys(r.callbacks||[]).map((o=>{var n;return(0,callback_1.getCallback)(e,o,null===(n=r.callbacks)||void 0===n?void 0:n[o],c.pointer,s,i,t,a)}))},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:c.isEvent,operation:c})))},get parameters(){return processParameters(e,r,c,s,v)}};if(null==o?void 0:o.isCallback)c.security=(0,security_1.getSecurity)(r.security,e),c.servers=(0,utils_1.normalizeServers)("",r.servers||r.pathServers||[]),c.id=(0,theme_1.removeLeadingSlash)(i);else{c.id=(0,utils_1.getOperationId)(r,t),c.href=c.href||(0,operation_1.getHref)(c),c.security=(0,security_1.getSecurity)(r.security||e.definition.security,e);const i=r.servers||((null===(n=r.pathServers)||void 0===n?void 0:n.length)?r.pathServers:null)||e.definition.servers||[];c.servers=(0,utils_1.normalizeServers)(e.definitionUrl,mergeInMockServer(i,s.mockServer))}s.showExtensions&&(c.extensions=(0,utils_1.extractExtensions)(r,s.showExtensions)),c.requestBody=r.requestBody?(0,request_1.getRequestBody)({parser:e,infoOrRef:r.requestBody,options:s,operation:c,isEvent:c.isEvent}):void 0;const d=null===(l=c.requestBody)||void 0===l?void 0:l.content;c.payload={lang:"Payload",source:"",requestBodyContent:(null==d?void 0:d.hasSample)?d:void 0},c.definitionSamples=r["x-codeSamples"]||[],c.badges=(null===(u=r["x-badges"])||void 0===u?void 0:u.map((({name:e,color:r,position:t})=>({name:e,color:r||"var(--color-info-base)",position:t||"after"}))))||[],c.hasSamples=(null==d?void 0:d.hasSample)||c.definitionSamples.length>0,c.hideReplay=!0===r["x-hideReplay"];const m={userClaims:a,operation:{operationId:c.operationId,name:c.name,path:c.path,href:c.href,method:c.httpVerb},servers:c.servers},v=((0,theme_1.configure)(m)||{}).requestValues||{};return(0,utils_1.updateOperationWithRequestValues)(c,v),c}function processParameters(e,r,t,s,i){let o=(0,utils_1.mergeParams)(e,r.pathParameters,r.parameters,{pathPointer:utils_1.JsonPointer.dirName(t.pointer),operationPointer:t.pointer}).map((({paramOrRef:r,pointer:o})=>{const a=(0,field_1.getField)(e,r,o,s,{operation:t,type:"request"});return(0,utils_1.updateParametersWithUserValues)(a,i),a}));return s.sortRequiredPropsFirst&&(o=(0,utils_1.sortByRequired)(o)),(0,utils_1.sortByDeprecated)(o)}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
|
package/lib/models/types.d.ts
CHANGED
|
@@ -5,17 +5,22 @@ import type { OpenAPIParser } from '../services/OpenAPIParser';
|
|
|
5
5
|
import type { Options } from '../services/config-options';
|
|
6
6
|
import type { ExtendedOpenAPIOperation, MenuItemGroupType, MenuItemType, MergedOpenAPISchema, Unstable_ExternalCodeSample } from '../services/types';
|
|
7
7
|
export type ContentItemModel = GroupModel | OperationMenuItem;
|
|
8
|
-
export interface
|
|
9
|
-
id: string;
|
|
10
|
-
sectionId: string;
|
|
11
|
-
scopes: string[];
|
|
8
|
+
export interface SecurityCredentials {
|
|
12
9
|
'x-defaultClientId'?: string;
|
|
13
10
|
'x-defaultClientSecret'?: string;
|
|
14
11
|
'x-defaultUsername'?: string;
|
|
15
12
|
'x-defaultPassword'?: string;
|
|
16
|
-
'x-
|
|
17
|
-
|
|
18
|
-
|
|
13
|
+
'x-defaultAccessToken'?: string;
|
|
14
|
+
'x-defaultTokenType'?: string;
|
|
15
|
+
scopes?: string[];
|
|
16
|
+
}
|
|
17
|
+
export interface ExtendedOpenAPISecurityScheme extends OpenAPISecurityScheme, SecurityCredentials {
|
|
18
|
+
id: string;
|
|
19
|
+
sectionId: string;
|
|
20
|
+
scopes: string[];
|
|
21
|
+
serverUrl?: string;
|
|
22
|
+
serverValues?: {
|
|
23
|
+
[serverUrl: string]: SecurityCredentials;
|
|
19
24
|
};
|
|
20
25
|
}
|
|
21
26
|
export interface SecurityRequirement {
|
|
@@ -53,6 +58,12 @@ export type ExampleModel = {
|
|
|
53
58
|
encoding?: {
|
|
54
59
|
[field: string]: OpenAPIEncoding;
|
|
55
60
|
};
|
|
61
|
+
serverValues?: {
|
|
62
|
+
[serverUrl: string]: {
|
|
63
|
+
value: any;
|
|
64
|
+
rawValue: any;
|
|
65
|
+
};
|
|
66
|
+
};
|
|
56
67
|
};
|
|
57
68
|
export type MediaTypeModel = {
|
|
58
69
|
examples?: {
|
|
@@ -111,6 +122,11 @@ export type FieldModel = {
|
|
|
111
122
|
fieldFullPath?: string;
|
|
112
123
|
deps: Deps;
|
|
113
124
|
absolutePointer?: string;
|
|
125
|
+
serverValues?: {
|
|
126
|
+
[serverUrl: string]: {
|
|
127
|
+
example?: string;
|
|
128
|
+
};
|
|
129
|
+
};
|
|
114
130
|
[REDOCLY_TEAMS_RBAC]?: Record<string, string>;
|
|
115
131
|
};
|
|
116
132
|
export type CallbackModel = {
|
|
@@ -155,6 +171,12 @@ export type OperationModel = {
|
|
|
155
171
|
parameters: FieldModel[];
|
|
156
172
|
responses: ResponseModel[];
|
|
157
173
|
callbacks: CallbackModel[];
|
|
174
|
+
envVariables?: {
|
|
175
|
+
values?: Record<string, string>;
|
|
176
|
+
serverValues?: {
|
|
177
|
+
[serverUrl: string]: Record<string, string>;
|
|
178
|
+
};
|
|
179
|
+
};
|
|
158
180
|
};
|
|
159
181
|
export type GroupModel = {
|
|
160
182
|
id: string;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,a,s){void 0===s&&(s=a);var r=Object.getOwnPropertyDescriptor(t,a);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[a]}}),Object.defineProperty(e,s,r)}:function(e,t,a,s){void 0===s&&(s=a),e[s]=t[a]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),__importStar=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)"default"!==a&&Object.prototype.hasOwnProperty.call(e,a)&&__createBinding(t,e,a);return __setModuleDefault(t,e),t},__importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getCodeSample=getCodeSample,exports.getDataRequest=getDataRequest,exports.isDefined=isDefined,exports.capitalizeFirst=capitalizeFirst;const Sampler=__importStar(require("openapi-sampler")),deepmerge_1=__importDefault(require("deepmerge")),theme_1=require("@redocly/theme"),utils_1=require("../../utils"),utils_2=require("../utils"),constants_1=require("../../constants"),httpsnippet_1=require("./httpsnippet"),mediaContent_1=require("../../models/mediaContent"),string_utility_1=__importDefault(require("./httpsnippet/helpers/string-utility"));function getSelectedSecurityScheme(e,t){return e.find((e=>{const a=e.schemes.map((e=>e.id));return(0,utils_1.areArraysEqual)(a,t||[])}))}function mapOperationToHAR(e,{exampleName:t="",skipOptionalParameters:a=!1,withOAuth2Call:s=!1,spec:r,generatedPayloadSamplesMaxDepth:i=8,pathParams:n={},properties:o={},activeMimeName:l=""},{environment:u,requestValues:c,activeSecuritySchemeIds:p}){var d,m,_;const f=u.server,h=e.servers.find((e=>e.url===f))||e.servers[0],y=getSelectedSecurityScheme(e.security,p),{securityHeaders:g,securityCookies:O,securityQueries:v,securityOAuth2ExtraCalls:S,basicAuth:T}=getSecurityData(y||(null===(d=e.security)||void 0===d?void 0:d[0]),s,u),b=(null===(m=null==e?void 0:e.requestBody)||void 0===m?void 0:m.content)&&(0,mediaContent_1.getActiveMediaType)(e.requestBody.content,l),C={skipNonRequired:a,skipReadOnly:!0,maxSampleDepth:i,quiet:!0},k=c;let j=!1;const D=e.parameters.filter((e=>"header"===e.in)).filter((e=>!(a&&!e.required))).map((e=>{var t;return{name:e.name,value:(null===(t=k.header)||void 0===t?void 0:t[e.name])||(0,utils_1.getParameterValue)("header",e.name)||e.example||(0,utils_1.serializeParameterValue)(e,Sampler.sample(e.schema.rawSchema,C,r))}})).map((e=>((null==b?void 0:b.name)&&"content-type"===e.name.toLowerCase()&&(j=!0,e.value=b.name),e))).concat(g);!j&&(null==b?void 0:b.name)&&D.unshift({name:"Content-Type",value:null==b?void 0:b.name});const E=e.parameters.filter((e=>"cookie"===e.in)).filter((e=>!(a&&!e.required))).map((e=>utils_1.queryString.parse((0,utils_1.serializeParameterValue)(e,e.example||Sampler.sample(e.schema.rawSchema,C,r))))).reduce(((e,t)=>{var a;for(const[s,r]of Object.entries(t))e.push({name:s,value:String((null===(a=k.cookie)||void 0===a?void 0:a[s])||r)});return e}),[]).concat(O),q=e.parameters.filter((e=>"query"===e.in)).filter((e=>!(a&&!e.required))).map((e=>utils_1.queryString.parse((0,utils_1.serializeParameterValue)(e,e.example||Sampler.sample(e.schema.rawSchema,C,r))))).reduce(((e,t)=>{var a,s,r;for(const[i,n]of Object.entries(t))e.push({name:i,value:(0,utils_1.isArrayOfObjects)(null===(a=k.query)||void 0===a?void 0:a[i])&&JSON.stringify((0,utils_1.deleteEmptyArrayItem)(null===(s=k.query)||void 0===s?void 0:s[i]))||String((null===(r=k.query)||void 0===r?void 0:r[i])||n)});return e}),[]).concat(v),P=`${null==h?void 0:h.url.replace(/\/$/,"")}/${e.path.replace(/^\//,"")}`,w=e.parameters.filter((e=>"path"===e.in)).reduce(((e,t)=>{var a;const{in:s,name:r}=t;return e[r]=(null===(a=k.path)||void 0===a?void 0:a[r])||t.example||n[r]||(0,utils_1.getParameterValue)(s,r),e}),{}),A=null===(_=null==b?void 0:b.examples)||void 0===_?void 0:_[t],x=(null==b?void 0:b.examples)||{},[M]=Object.values(x),R=null==b?void 0:b.name.toLowerCase(),N=(null==k?void 0:k.body)||(null==A?void 0:A.value)||(null==M?void 0:M.value)||(null==b?void 0:b.schema)&&Sampler.sample(null==b?void 0:b.schema.rawSchema,Object.assign(Object.assign({},C),{format:R===constants_1.MediaTypes.XML?"xml":"json"}),r);let H="",U=[];switch((0,utils_2.normalizeMimeType)(R)){case constants_1.MediaTypes.JSON:H=JSON.stringify(getDataRequest(N,o));break;case constants_1.MediaTypes.XML:H=N;break;case constants_1.MediaTypes.URL_ENCODED:case constants_1.MediaTypes.MULTIPART:H=utils_1.queryString.stringify(getDataRequest(N,o)),U=objectToHarParams(getDataRequest(N,o));break;default:H=String(N||"")}const $=H?{mimeType:(null==b?void 0:b.name)||constants_1.MediaTypes.OCTET_STREAM,text:H,params:U}:void 0,z=e.responses.map((e=>e.code));return{method:e.httpVerb,url:P,httpVersion:"HTTP/1.1",cookies:E,headers:D,queryString:q,postData:$,headersSize:-1,bodySize:-1,securityOAuth2ExtraCalls:S,basicAuth:T,pathParameters:w,serverVariables:u,allResponseCodes:z}}const defaultOptions={withImports:!0,withComments:!1},langToSnippetConfig={curl:{code:"shell",defaultTarget:"curl",defaultOptions:Object.assign(Object.assign({},defaultOptions),{short:!0})},JavaScript:{code:"javascript",defaultTarget:"fetch",defaultOptions:Object.assign(Object.assign({},defaultOptions),{withImports:!1})},"Node.js":{code:"node",defaultTarget:"fetch",defaultOptions:Object.assign({},defaultOptions)},Python:{code:"python",defaultTarget:"requests",defaultOptions:Object.assign({},defaultOptions)},"Java8+Apache":{code:"java8",defaultTarget:"apachehttp",defaultOptions:Object.assign({},defaultOptions)},Java:{code:"java",defaultTarget:"httpclient",defaultOptions:Object.assign({},defaultOptions)},"C#":{code:"csharp",defaultTarget:"httpclient",defaultOptions:Object.assign({},defaultOptions)},"C#+Newtonsoft":{code:"csharpNewtonsoft",defaultTarget:"httpclient",defaultOptions:Object.assign({},defaultOptions)},Go:{code:"go",defaultTarget:"http.DefaultClient",defaultOptions:Object.assign({},defaultOptions)},PHP:{code:"php",defaultTarget:"curl",defaultOptions:Object.assign({},defaultOptions)},Ruby:{code:"ruby",defaultTarget:"net::http",defaultOptions:Object.assign({},defaultOptions)},R:{code:"r",defaultTarget:"httr",defaultOptions:Object.assign({},defaultOptions)}};function getCodeSample({lang:e,operation:t,exampleName:a,pathParams:s,properties:r,options:i={},environment:n,translate:o}){try{const{skipOptionalParameters:l,withOAuth2Call:u,spec:c,generatedPayloadSamplesMaxDepth:p,store:d,activeMimeName:m}=i,_=mapOperationToHAR(t,{exampleName:a,pathParams:s,properties:r,skipOptionalParameters:l,withOAuth2Call:u,spec:c,generatedPayloadSamplesMaxDepth:p,activeMimeName:m},{environment:n,requestValues:d.requestValues,activeSecuritySchemeIds:d.activeSecuritySchemeIds}),f=new httpsnippet_1.HTTPSnippet(_);return langToSnippetConfig[e]?f.convert(langToSnippetConfig[e].code,langToSnippetConfig[e].defaultTarget,Object.assign(Object.assign({},langToSnippetConfig[e].defaultOptions),i)):o("openapi.unsupportedLanguage","Language is not supported.")}catch(e){return console.error(e),o("openapi.failedToGenerateCodeSample","Failed to generate code sample.")}}function getSecurityData(e,t,a){var s,r,i,n,o;const l={securityHeaders:[],securityCookies:[],securityQueries:[],securityOAuth2ExtraCalls:[],basicAuth:void 0};for(const u of(null==e?void 0:e.schemes)||[]){const e=(0,utils_1.getSecurityDetails)(u.id,a),c={access_token:u["x-defaultAccessToken"],token_type:u["x-defaultTokenType"],client_id:u["x-defaultClientId"],client_secret:u["x-defaultClientSecret"]},p=u["x-defaultUsername"],d=u["x-defaultPassword"];switch(u.type){case"openIdConnect":null===(s=l.securityHeaders)||void 0===s||s.push({name:"Authorization",value:c.access_token?`${c.token_type||"Bearer"} ${c.access_token}`:e.token?`${c.token_type||e.token.token_type||"Bearer"} ${e.token.access_token}`:"Bearer <YOUR_TOKEN_HERE>"});break;case"oauth2":{const a=c.access_token?`${c.token_type||"Bearer"} ${c.access_token}`:e.token?`${e.token.token_type||"Bearer"} ${e.token.access_token}`:"Bearer <YOUR_TOKEN_HERE>";u.flows.clientCredentials&&t?l.securityOAuth2ExtraCalls.push(getOAuth2ClientCredsCallHar(u.flows.clientCredentials,u.scopes,Object.assign(Object.assign({},e),{client_id:c.client_id||e.client_id,client_secret:c.client_secret||e.client_secret}))):u.flows.password&&t&&l.securityOAuth2ExtraCalls.push(getOAuth2PasswordCallHar(u.flows.password,u.scopes,Object.assign(Object.assign({},e),{client_id:c.client_id||e.client_id,client_secret:c.client_secret||e.client_secret}))),null===(r=l.securityHeaders)||void 0===r||r.push({name:"Authorization",value:a});break}case"apiKey":{const t=c.access_token||e.raw||"YOUR_API_KEY_HERE";"header"===u.in&&(null===(i=l.securityHeaders)||void 0===i||i.push({name:u.name,value:t})),"cookie"===u.in&&l.securityCookies.push({name:u.name,value:t}),"query"===u.in&&l.securityQueries.push({name:u.name,value:t});break}case"http":if("basic"===u.scheme)l.basicAuth={username:p||e.username||`<${string_utility_1.default.toSnakeCase("Username")}>`,password:d||e.password||`<${string_utility_1.default.toSnakeCase("Password")}>`};else{const t=(null==c?void 0:c.access_token)||(null===(n=e.token)||void 0===n?void 0:n.access_token)||`<YOUR_${u.bearerFormat||"TOKEN"}_HERE>`;null===(o=l.securityHeaders)||void 0===o||o.push({name:"Authorization",value:`${capitalizeFirst(u.scheme||"bearer")} ${t}`})}}}return l}function getOAuth2PasswordCallHar(e,t,a){return{method:"POST",url:e.tokenUrl,httpVersion:"HTTP/1.1",headers:[{name:"Content-Type",value:constants_1.MediaTypes.URL_ENCODED},{name:"Accept",value:constants_1.MediaTypes.JSON}],queryString:[],postData:{mimeType:constants_1.MediaTypes.URL_ENCODED,text:"",params:[{name:"grant_type",value:"password"},{name:"client_id",value:a.client_id||"YOUR_CLIENT_ID"},{name:"client_secret",value:a.client_secret||"YOUR_CLIENT_SECRET"},{name:"username",value:a.username||"<username>"},{name:"password",value:a.password||"<password>"},t.length?{name:"scope",value:t.join(" ")}:void 0].filter(isDefined)},cookies:[],headersSize:-1,bodySize:-1,securityOAuth2ExtraCalls:[]}}function getOAuth2ClientCredsCallHar(e,t,a){return{method:"POST",url:e.tokenUrl,httpVersion:"HTTP/1.1",headers:[{name:"Content-Type",value:constants_1.MediaTypes.URL_ENCODED},{name:"Accept",value:constants_1.MediaTypes.JSON}],queryString:[],postData:{mimeType:constants_1.MediaTypes.URL_ENCODED,text:"",params:[{name:"grant_type",value:"client_credentials"},{name:"client_id",value:a.client_id||"YOUR_CLIENT_ID"},{name:"client_secret",value:a.client_secret||"YOUR_CLIENT_SECRET"},t.length?{name:"scope",value:t.join(" ")}:void 0].filter(isDefined)},cookies:[],headersSize:-1,bodySize:-1,securityOAuth2ExtraCalls:[]}}function getDataRequest(e,t){if(e){if((0,theme_1.isObject)(e))return Object.keys(e).length>0&&0===Object.keys(t).length?e:(0,deepmerge_1.default)(e,t,{arrayMerge:utils_2.arrayMergeStrategy});try{return(0,deepmerge_1.default)(JSON.parse(e),t,{arrayMerge:utils_2.arrayMergeStrategy})}catch(e){return!1}}return!1}function objectToHarParams(e,t=""){const a=[];for(const[s,r]of Object.entries(e)){const i=t?`${t}[${s}]`:s;if("object"==typeof r&&null!==r)a.push(...objectToHarParams(r,i));else{const s=Array.isArray(e)&&"string"==typeof r&&t?t:i;a.push({name:s,value:String(r)})}}return a}function isDefined(e){return void 0!==e}function capitalizeFirst(e){return e.charAt(0).toUpperCase()+e.slice(1)}
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,a,s){void 0===s&&(s=a);var r=Object.getOwnPropertyDescriptor(t,a);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[a]}}),Object.defineProperty(e,s,r)}:function(e,t,a,s){void 0===s&&(s=a),e[s]=t[a]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),__importStar=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)"default"!==a&&Object.prototype.hasOwnProperty.call(e,a)&&__createBinding(t,e,a);return __setModuleDefault(t,e),t},__importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getCodeSample=getCodeSample,exports.getDataRequest=getDataRequest,exports.isDefined=isDefined,exports.capitalizeFirst=capitalizeFirst;const Sampler=__importStar(require("openapi-sampler")),deepmerge_1=__importDefault(require("deepmerge")),theme_1=require("@redocly/theme"),utils_1=require("../../utils"),utils_2=require("../utils"),constants_1=require("../../constants"),httpsnippet_1=require("./httpsnippet"),mediaContent_1=require("../../models/mediaContent"),string_utility_1=__importDefault(require("./httpsnippet/helpers/string-utility"));function getSelectedSecurityScheme(e,t){return e.find((e=>{const a=e.schemes.map((e=>e.id));return(0,utils_1.areArraysEqual)(a,t||[])}))}function mapOperationToHAR(e,{exampleName:t="",skipOptionalParameters:a=!1,withOAuth2Call:s=!1,spec:r,generatedPayloadSamplesMaxDepth:i=8,pathParams:n={},properties:l={},activeMimeName:o=""},{environment:u,requestValues:c,activeSecuritySchemeIds:d}){var p,m,v,f,_,h,y,g;const O=u.server,S=e.servers.find((e=>e.url===O))||e.servers[0],b=getSelectedSecurityScheme(e.security,d),{securityHeaders:T,securityCookies:C,securityQueries:j,securityOAuth2ExtraCalls:k,basicAuth:x}=getSecurityData(b||(null===(p=e.security)||void 0===p?void 0:p[0]),s,u),E=(null===(m=null==e?void 0:e.requestBody)||void 0===m?void 0:m.content)&&(0,mediaContent_1.getActiveMediaType)(e.requestBody.content,o),D={skipNonRequired:a,skipReadOnly:!0,maxSampleDepth:i,quiet:!0},A=c;let w=!1;const P=e.parameters.filter((e=>"header"===e.in)).filter((e=>!(a&&!e.required))).map((e=>{var t,a,s;return{name:e.name,value:(null===(t=A.header)||void 0===t?void 0:t[e.name])||(0,utils_1.getParameterValue)("header",e.name)||(null===(s=null===(a=e.serverValues)||void 0===a?void 0:a[O])||void 0===s?void 0:s.example)||e.example||(0,utils_1.serializeParameterValue)(e,Sampler.sample(e.schema.rawSchema,D,r))}})).map((e=>((null==E?void 0:E.name)&&"content-type"===e.name.toLowerCase()&&(w=!0,e.value=E.name),e))).concat(T);!w&&(null==E?void 0:E.name)&&P.unshift({name:"Content-Type",value:null==E?void 0:E.name});const q=e.parameters.filter((e=>"cookie"===e.in)).filter((e=>!(a&&!e.required))).map((e=>{var t,a;return utils_1.queryString.parse((0,utils_1.serializeParameterValue)(e,(null===(a=null===(t=e.serverValues)||void 0===t?void 0:t[O])||void 0===a?void 0:a.example)||e.example||Sampler.sample(e.schema.rawSchema,D,r)))})).reduce(((e,t)=>{var a;for(const[s,r]of Object.entries(t))e.push({name:s,value:String((null===(a=A.cookie)||void 0===a?void 0:a[s])||r)});return e}),[]).concat(C),M=e.parameters.filter((e=>"query"===e.in)).filter((e=>!(a&&!e.required))).map((e=>{var t,a;return utils_1.queryString.parse((0,utils_1.serializeParameterValue)(e,(null===(a=null===(t=e.serverValues)||void 0===t?void 0:t[O])||void 0===a?void 0:a.example)||e.example||Sampler.sample(e.schema.rawSchema,D,r)))})).reduce(((e,t)=>{var a,s,r;for(const[i,n]of Object.entries(t))e.push({name:i,value:(0,utils_1.isArrayOfObjects)(null===(a=A.query)||void 0===a?void 0:a[i])&&JSON.stringify((0,utils_1.deleteEmptyArrayItem)(null===(s=A.query)||void 0===s?void 0:s[i]))||String((null===(r=A.query)||void 0===r?void 0:r[i])||n)});return e}),[]).concat(j),R=`${null==S?void 0:S.url.replace(/\/$/,"")}/${e.path.replace(/^\//,"")}`,N=e.parameters.filter((e=>"path"===e.in)).reduce(((e,t)=>{var a,s,r;const{in:i,name:l}=t;return e[l]=(null===(a=A.path)||void 0===a?void 0:a[l])||(null===(r=null===(s=t.serverValues)||void 0===s?void 0:s[O])||void 0===r?void 0:r.example)||t.example||n[l]||(0,utils_1.getParameterValue)(i,l),e}),{}),H=null==E?void 0:E.name.toLowerCase(),U=H===constants_1.MediaTypes.MULTIPART||H===constants_1.MediaTypes.URL_ENCODED,V=U?null===(v=null==E?void 0:E.formExamples)||void 0===v?void 0:v[t]:null===(f=null==E?void 0:E.examples)||void 0===f?void 0:f[t],I=U?(null==E?void 0:E.formExamples)||{}:(null==E?void 0:E.examples)||{},[L]=Object.values(I),$=(null===(h=null===(_=null==V?void 0:V.serverValues)||void 0===_?void 0:_[O])||void 0===h?void 0:h.value)||(null===(g=null===(y=null==L?void 0:L.serverValues)||void 0===y?void 0:y[O])||void 0===g?void 0:g.value),z=e=>{var t;return e&&"object"==typeof e&&(null===(t=null==E?void 0:E.schema)||void 0===t?void 0:t.rawSchema)?Sampler.sample(populateXmlSchemaFields(E.schema.rawSchema,e),Object.assign(Object.assign({},D),{format:"xml"}),r):null},B=(()=>{if(null==A?void 0:A.body)return A.body;if(H!==constants_1.MediaTypes.XML)return $||(null==V?void 0:V.value)||(null==L?void 0:L.value)||(null==E?void 0:E.schema)&&Sampler.sample(E.schema.rawSchema,Object.assign(Object.assign({},D),{format:"json"}),r);{const e=z($)||z(null==V?void 0:V.value)||z(null==L?void 0:L.value);if(e)return e;if(null==E?void 0:E.schema)return Sampler.sample(E.schema.rawSchema,Object.assign(Object.assign({},D),{format:"xml"}),r)}return""})();let J="",Y=[];switch((0,utils_2.normalizeMimeType)(H)){case constants_1.MediaTypes.JSON:J=JSON.stringify(getDataRequest(B,l));break;case constants_1.MediaTypes.XML:J=B;break;case constants_1.MediaTypes.URL_ENCODED:case constants_1.MediaTypes.MULTIPART:J=utils_1.queryString.stringify(getDataRequest(B,l)),Y=objectToHarParams(getDataRequest(B,l));break;default:J=String(B||"")}const F=J?{mimeType:(null==E?void 0:E.name)||constants_1.MediaTypes.OCTET_STREAM,text:J,params:Y}:void 0,K=e.responses.map((e=>e.code));return{method:e.httpVerb,url:R,httpVersion:"HTTP/1.1",cookies:q,headers:P,queryString:M,postData:F,headersSize:-1,bodySize:-1,securityOAuth2ExtraCalls:k,basicAuth:x,pathParameters:N,serverVariables:u,allResponseCodes:K}}const defaultOptions={withImports:!0,withComments:!1},langToSnippetConfig={curl:{code:"shell",defaultTarget:"curl",defaultOptions:Object.assign(Object.assign({},defaultOptions),{short:!0})},JavaScript:{code:"javascript",defaultTarget:"fetch",defaultOptions:Object.assign(Object.assign({},defaultOptions),{withImports:!1})},"Node.js":{code:"node",defaultTarget:"fetch",defaultOptions:Object.assign({},defaultOptions)},Python:{code:"python",defaultTarget:"requests",defaultOptions:Object.assign({},defaultOptions)},"Java8+Apache":{code:"java8",defaultTarget:"apachehttp",defaultOptions:Object.assign({},defaultOptions)},Java:{code:"java",defaultTarget:"httpclient",defaultOptions:Object.assign({},defaultOptions)},"C#":{code:"csharp",defaultTarget:"httpclient",defaultOptions:Object.assign({},defaultOptions)},"C#+Newtonsoft":{code:"csharpNewtonsoft",defaultTarget:"httpclient",defaultOptions:Object.assign({},defaultOptions)},Go:{code:"go",defaultTarget:"http.DefaultClient",defaultOptions:Object.assign({},defaultOptions)},PHP:{code:"php",defaultTarget:"curl",defaultOptions:Object.assign({},defaultOptions)},Ruby:{code:"ruby",defaultTarget:"net::http",defaultOptions:Object.assign({},defaultOptions)},R:{code:"r",defaultTarget:"httr",defaultOptions:Object.assign({},defaultOptions)}};function getCodeSample({lang:e,operation:t,exampleName:a,pathParams:s,properties:r,options:i={},environment:n,translate:l}){try{const{skipOptionalParameters:o,withOAuth2Call:u,spec:c,generatedPayloadSamplesMaxDepth:d,store:p,activeMimeName:m}=i,v=mapOperationToHAR(t,{exampleName:a,pathParams:s,properties:r,skipOptionalParameters:o,withOAuth2Call:u,spec:c,generatedPayloadSamplesMaxDepth:d,activeMimeName:m},{environment:n,requestValues:p.requestValues,activeSecuritySchemeIds:p.activeSecuritySchemeIds}),f=new httpsnippet_1.HTTPSnippet(v);return langToSnippetConfig[e]?f.convert(langToSnippetConfig[e].code,langToSnippetConfig[e].defaultTarget,Object.assign(Object.assign({},langToSnippetConfig[e].defaultOptions),i)):l("openapi.unsupportedLanguage","Language is not supported.")}catch(e){return console.error(e),l("openapi.failedToGenerateCodeSample","Failed to generate code sample.")}}function getSecurityData(e,t,a){var s,r,i,n,l;const o={securityHeaders:[],securityCookies:[],securityQueries:[],securityOAuth2ExtraCalls:[],basicAuth:void 0},u=null==a?void 0:a.server;for(const c of(null==e?void 0:e.schemes)||[]){const e=(0,utils_1.getSecurityDetails)(c.id,a),d=u&&c.serverValues&&c.serverValues[u],p={access_token:(null==d?void 0:d["x-defaultAccessToken"])||c["x-defaultAccessToken"],token_type:(null==d?void 0:d["x-defaultTokenType"])||c["x-defaultTokenType"],client_id:(null==d?void 0:d["x-defaultClientId"])||c["x-defaultClientId"],client_secret:(null==d?void 0:d["x-defaultClientSecret"])||c["x-defaultClientSecret"]},m=(null==d?void 0:d["x-defaultUsername"])||c["x-defaultUsername"],v=(null==d?void 0:d["x-defaultPassword"])||c["x-defaultPassword"],f=d&&"scopes"in d?d.scopes||[]:c.scopes||[];switch(c.type){case"openIdConnect":null===(s=o.securityHeaders)||void 0===s||s.push({name:"Authorization",value:p.access_token?`${p.token_type||"Bearer"} ${p.access_token}`:e.token?`${p.token_type||e.token.token_type||"Bearer"} ${e.token.access_token}`:"Bearer <YOUR_TOKEN_HERE>"});break;case"oauth2":{const a=p.access_token?`${p.token_type||"Bearer"} ${p.access_token}`:e.token?`${e.token.token_type||"Bearer"} ${e.token.access_token}`:"Bearer <YOUR_TOKEN_HERE>";c.flows.clientCredentials&&t?o.securityOAuth2ExtraCalls.push(getOAuth2ClientCredsCallHar(c.flows.clientCredentials,f,Object.assign(Object.assign({},e),{client_id:p.client_id||e.client_id,client_secret:p.client_secret||e.client_secret}))):c.flows.password&&t&&o.securityOAuth2ExtraCalls.push(getOAuth2PasswordCallHar(c.flows.password,f,Object.assign(Object.assign({},e),{client_id:p.client_id||e.client_id,client_secret:p.client_secret||e.client_secret}))),null===(r=o.securityHeaders)||void 0===r||r.push({name:"Authorization",value:a});break}case"apiKey":{const t=p.access_token||e.raw||"YOUR_API_KEY_HERE";"header"===c.in&&(null===(i=o.securityHeaders)||void 0===i||i.push({name:c.name,value:t})),"cookie"===c.in&&o.securityCookies.push({name:c.name,value:t}),"query"===c.in&&o.securityQueries.push({name:c.name,value:t});break}case"http":if("basic"===c.scheme)o.basicAuth={username:m||e.username||`<${string_utility_1.default.toSnakeCase("Username")}>`,password:v||e.password||`<${string_utility_1.default.toSnakeCase("Password")}>`};else{const t=(null==p?void 0:p.access_token)||(null===(n=e.token)||void 0===n?void 0:n.access_token)||`<YOUR_${c.bearerFormat||"TOKEN"}_HERE>`;null===(l=o.securityHeaders)||void 0===l||l.push({name:"Authorization",value:`${capitalizeFirst(c.scheme||"bearer")} ${t}`})}}}return o}function getOAuth2PasswordCallHar(e,t,a){return{method:"POST",url:e.tokenUrl,httpVersion:"HTTP/1.1",headers:[{name:"Content-Type",value:constants_1.MediaTypes.URL_ENCODED},{name:"Accept",value:constants_1.MediaTypes.JSON}],queryString:[],postData:{mimeType:constants_1.MediaTypes.URL_ENCODED,text:"",params:[{name:"grant_type",value:"password"},{name:"client_id",value:a.client_id||"YOUR_CLIENT_ID"},{name:"client_secret",value:a.client_secret||"YOUR_CLIENT_SECRET"},{name:"username",value:a.username||"<username>"},{name:"password",value:a.password||"<password>"},t.length?{name:"scope",value:t.join(" ")}:void 0].filter(isDefined)},cookies:[],headersSize:-1,bodySize:-1,securityOAuth2ExtraCalls:[]}}function getOAuth2ClientCredsCallHar(e,t,a){return{method:"POST",url:e.tokenUrl,httpVersion:"HTTP/1.1",headers:[{name:"Content-Type",value:constants_1.MediaTypes.URL_ENCODED},{name:"Accept",value:constants_1.MediaTypes.JSON}],queryString:[],postData:{mimeType:constants_1.MediaTypes.URL_ENCODED,text:"",params:[{name:"grant_type",value:"client_credentials"},{name:"client_id",value:a.client_id||"YOUR_CLIENT_ID"},{name:"client_secret",value:a.client_secret||"YOUR_CLIENT_SECRET"},t.length?{name:"scope",value:t.join(" ")}:void 0].filter(isDefined)},cookies:[],headersSize:-1,bodySize:-1,securityOAuth2ExtraCalls:[]}}function getDataRequest(e,t){if(e){if((0,theme_1.isObject)(e))return Object.keys(e).length>0&&0===Object.keys(t).length?e:(0,deepmerge_1.default)(e,t,{arrayMerge:utils_2.arrayMergeStrategy});try{return(0,deepmerge_1.default)(JSON.parse(e),t,{arrayMerge:utils_2.arrayMergeStrategy})}catch(e){return!1}}return!1}function objectToHarParams(e,t=""){const a=[];for(const[s,r]of Object.entries(e)){const i=t?`${t}[${s}]`:s;if("object"==typeof r&&null!==r)a.push(...objectToHarParams(r,i));else{const s=Array.isArray(e)&&"string"==typeof r&&t?t:i;a.push({name:s,value:String(r)})}}return a}function isDefined(e){return void 0!==e}function capitalizeFirst(e){return e.charAt(0).toUpperCase()+e.slice(1)}function populateXmlSchemaFields(e,t){if(!e||"object"!=typeof e||!t||"object"!=typeof t)return e;const a=JSON.parse(JSON.stringify(e));return function e(t,a){if(t&&a&&"object"==typeof t&&"object"==typeof a&&t.properties)for(const s in t.properties)if(void 0!==a[s]){const r=t.properties[s],i=a[s];if("object"!==r.type||"object"!=typeof i||Array.isArray(i))if("array"===r.type&&Array.isArray(i)&&i.length>0){const t=i[0];r.items&&r.items.properties&&e(r.items,t)}else r.example=i;else e(r,i)}}(a,t),a}
|
|
2
2
|
//# sourceMappingURL=generator.js.map
|
package/lib/types/open-api.d.ts
CHANGED
|
@@ -47,6 +47,9 @@ export interface OpenAPIServer extends ParsedDescription {
|
|
|
47
47
|
description?: string;
|
|
48
48
|
variables?: OpenAPIServerVariables;
|
|
49
49
|
}
|
|
50
|
+
export type OpenAPIServerWithVariables = Omit<OpenAPIServer, 'url'> & {
|
|
51
|
+
url: string | Record<string, unknown>;
|
|
52
|
+
};
|
|
50
53
|
export interface OpenAPIServerVariables {
|
|
51
54
|
[name: string]: OpenAPIServerVariable;
|
|
52
55
|
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { OperationModel, SecurityCredentials, FieldModel } from '../models/types';
|
|
2
|
+
import type { ConfigureRequestValues, ConfigureServerRequestValues, SecurityDetails } from '@redocly/theme';
|
|
3
|
+
export declare function updateOperationWithRequestValues(operation: OperationModel, userDefinedRequestValues: ConfigureRequestValues | ConfigureServerRequestValues): void;
|
|
4
|
+
export declare function updateParametersWithUserValues(param: FieldModel, userDefinedRequestValues?: ConfigureRequestValues | ConfigureServerRequestValues): void;
|
|
5
|
+
export declare function updateRequestBodyWithUserValues(operation: OperationModel, userDefinedRequestValues: ConfigureRequestValues, serverUrl?: string): OperationModel | undefined;
|
|
6
|
+
export declare function updateSecurityWithUserValues(operation: OperationModel, securityValues?: SecurityDetails, serverUrl?: string): void;
|
|
7
|
+
export declare function updateOperationWithServerUserValues(operation: OperationModel, serverRequestValues: ConfigureServerRequestValues): void;
|
|
8
|
+
export declare function updateEnvVariablesWithUserValues(operation: OperationModel, environmentValues?: Record<string, string>, serverUrl?: string): void;
|
|
9
|
+
export declare function isDirectRequestValues(value: any): value is ConfigureRequestValues;
|
|
10
|
+
export declare function updateObjectProperties(original: any, updates: any): any;
|
|
11
|
+
export declare function createSecurityUpdates(scheme: any, securityValues: SecurityDetails): SecurityCredentials;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.updateOperationWithRequestValues=updateOperationWithRequestValues,exports.updateParametersWithUserValues=updateParametersWithUserValues,exports.updateRequestBodyWithUserValues=updateRequestBodyWithUserValues,exports.updateSecurityWithUserValues=updateSecurityWithUserValues,exports.updateOperationWithServerUserValues=updateOperationWithServerUserValues,exports.updateEnvVariablesWithUserValues=updateEnvVariablesWithUserValues,exports.isDirectRequestValues=isDirectRequestValues,exports.updateObjectProperties=updateObjectProperties,exports.createSecurityUpdates=createSecurityUpdates;const theme_1=require("@redocly/theme");function updateOperationWithRequestValues(e,t){if(0!==Object.keys(t).length)if(isDirectRequestValues(t))updateRequestBodyWithUserValues(e,t),updateSecurityWithUserValues(e,t.security),updateEnvVariablesWithUserValues(e,t.envVariables);else{updateOperationWithServerUserValues(e,t)}}function updateParametersWithUserValues(e,t){var s;if(!t)return;const{in:r,name:a}=e;if(isDirectRequestValues(t)){const u=t,i={header:u.headers,query:u.query,path:u.path,cookie:u.cookie};r&&(null===(s=i[r])||void 0===s?void 0:s[a])&&(e.example=i[r][a])}else Object.entries(t).forEach((([t,s])=>{var u;const i=s;if(!i)return;const l={header:i.headers,query:i.query,path:i.path,cookie:i.cookie};r&&(null===(u=l[r])||void 0===u?void 0:u[a])&&(e.serverValues||(e.serverValues={}),e.serverValues[t]={example:l[r][a]})}))}function updateRequestBodyWithUserValues(e,t,s){if(!e.requestBody||!(null==t?void 0:t.body))return;const r=e.requestBody.content;if(!(null==r?void 0:r.mediaTypes))return;const a=(e,r)=>{e[r]&&Object.keys(e[r]).forEach((a=>{var u,i;const l=null===(i=null===(u=e[r])||void 0===u?void 0:u[a])||void 0===i?void 0:i.value;let n;if(n=(0,theme_1.isObject)(l)?updateObjectProperties(l,t.body):t.body,n)if(s){const t=e[r][a];t.serverValues||(t.serverValues={}),t.serverValues[s]={value:n,rawValue:n},e[r][a]=Object.assign(Object.assign({},t),{mime:e.name})}else e[r][a]={value:n,rawValue:n,mime:e.name}}))};for(const e of r.mediaTypes)a(e,"examples"),a(e,"formExamples");return e}function updateSecurityWithUserValues(e,t,s){t&&e.security.length&&e.security.forEach((e=>{s?e.schemes.forEach((e=>{e.serverValues||(e.serverValues={});const r=createSecurityUpdates(e,t);e.serverValues[s]=r})):e.schemes.forEach((e=>{const s=createSecurityUpdates(e,t);Object.assign(e,s)}))}))}function updateOperationWithServerUserValues(e,t){e.servers.forEach((s=>{if(t[s.url]){const r=t[s.url];r&&(updateRequestBodyWithUserValues(e,r,s.url),updateSecurityWithUserValues(e,r.security,s.url),updateEnvVariablesWithUserValues(e,r.envVariables,s.url))}}))}function updateEnvVariablesWithUserValues(e,t,s){t&&0!==Object.keys(t).length&&(e.envVariables||(e.envVariables={}),s?(e.envVariables.serverValues||(e.envVariables.serverValues={}),e.envVariables.serverValues[s]=Object.assign(Object.assign({},e.envVariables.serverValues[s]),t)):e.envVariables.values=Object.assign(Object.assign({},e.envVariables.values),t))}function isDirectRequestValues(e){return!(!e||"object"!=typeof e)&&("headers"in e||"body"in e||"query"in e||"path"in e||"cookie"in e||"security"in e||"envVariables"in e)}function updateObjectProperties(e,t){if(!e||"object"!=typeof e)return t;if(Array.isArray(e)&&Array.isArray(t)){if(e.length>0&&"object"==typeof e[0]&&null!==e[0]){const s=Object.keys(e[0]),r=t.filter((e=>"object"==typeof e&&null!==e&&(s.some((t=>t in e))&&Object.keys(e).every((e=>s.includes(e))))));return r.length>0?r:e}return t}const s=Array.isArray(e)?[...e]:Object.assign({},e);for(const[r,a]of Object.entries(t))r in e&&(Array.isArray(e[r])||"object"==typeof a&&null!==a&&"object"==typeof e[r]?s[r]=updateObjectProperties(e[r],a):s[r]=a);return s}function createSecurityUpdates(e,t){var s,r,a;const u={"x-defaultAccessToken":null===(s=t.token)||void 0===s?void 0:s.access_token,"x-defaultTokenType":(null===(r=t.token)||void 0===r?void 0:r.token_type)||"Bearer","x-defaultClientId":t.client_id,"x-defaultClientSecret":t.client_secret,scopes:t.scopes||e.scopes};return"http"===e.type&&"basic"===e.scheme?(u["x-defaultUsername"]=t.username,u["x-defaultPassword"]=t.password,delete u["x-defaultAccessToken"],delete u["x-defaultTokenType"]):"oauth2"!==e.type||(null===(a=t.token)||void 0===a?void 0:a.access_token)||(delete u["x-defaultAccessToken"],delete u["x-defaultTokenType"]),u}
|
|
2
|
+
//# sourceMappingURL=configure-helpers.js.map
|
package/lib/utils/index.d.ts
CHANGED
package/lib/utils/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,r,t,o){void 0===o&&(o=t);var p=Object.getOwnPropertyDescriptor(r,t);p&&!("get"in p?!r.__esModule:p.writable||p.configurable)||(p={enumerable:!0,get:function(){return r[t]}}),Object.defineProperty(e,o,p)}:function(e,r,t,o){void 0===o&&(o=t),e[o]=r[t]}),__exportStar=this&&this.__exportStar||function(e,r){for(var t in e)"default"===t||Object.prototype.hasOwnProperty.call(r,t)||__createBinding(r,e,t)};Object.defineProperty(exports,"__esModule",{value:!0}),__exportStar(require("./JsonPointer"),exports),__exportStar(require("./openapi"),exports),__exportStar(require("./helpers"),exports),__exportStar(require("./dom"),exports),__exportStar(require("./debug"),exports),__exportStar(require("./sort"),exports),__exportStar(require("./argValuesHelpers"),exports),__exportStar(require("./theme-helpers"),exports),__exportStar(require("./debounce"),exports),__exportStar(require("./security-details"),exports),__exportStar(require("./session-storage"),exports),__exportStar(require("./local-storage"),exports),__exportStar(require("./parameters"),exports),__exportStar(require("./string"),exports),__exportStar(require("./test-utils"),exports),__exportStar(require("./compose"),exports),__exportStar(require("./saveTextBeforeHeading"),exports),__exportStar(require("./path"),exports),__exportStar(require("./queryString"),exports),__exportStar(require("./isMobile"),exports),__exportStar(require("./replaceVariables"),exports),__exportStar(require("./areArraysEqual"),exports);
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,r,t,o){void 0===o&&(o=t);var p=Object.getOwnPropertyDescriptor(r,t);p&&!("get"in p?!r.__esModule:p.writable||p.configurable)||(p={enumerable:!0,get:function(){return r[t]}}),Object.defineProperty(e,o,p)}:function(e,r,t,o){void 0===o&&(o=t),e[o]=r[t]}),__exportStar=this&&this.__exportStar||function(e,r){for(var t in e)"default"===t||Object.prototype.hasOwnProperty.call(r,t)||__createBinding(r,e,t)};Object.defineProperty(exports,"__esModule",{value:!0}),__exportStar(require("./JsonPointer"),exports),__exportStar(require("./openapi"),exports),__exportStar(require("./helpers"),exports),__exportStar(require("./dom"),exports),__exportStar(require("./debug"),exports),__exportStar(require("./sort"),exports),__exportStar(require("./argValuesHelpers"),exports),__exportStar(require("./theme-helpers"),exports),__exportStar(require("./debounce"),exports),__exportStar(require("./security-details"),exports),__exportStar(require("./session-storage"),exports),__exportStar(require("./local-storage"),exports),__exportStar(require("./parameters"),exports),__exportStar(require("./string"),exports),__exportStar(require("./test-utils"),exports),__exportStar(require("./compose"),exports),__exportStar(require("./saveTextBeforeHeading"),exports),__exportStar(require("./path"),exports),__exportStar(require("./queryString"),exports),__exportStar(require("./isMobile"),exports),__exportStar(require("./replaceVariables"),exports),__exportStar(require("./areArraysEqual"),exports),__exportStar(require("./configure-helpers"),exports);
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/lib/utils/openapi.js
CHANGED
|
@@ -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.shortenHTTPVerb=void 0,exports.isStatusCode=isStatusCode,exports.getStatusCodeType=getStatusCodeType,exports.isOperationName=isOperationName,exports.getOperationName=getOperationName,exports.getOperationId=getOperationId,exports.detectType=detectType,exports.isPrimitiveType=isPrimitiveType,exports.isJsonLike=isJsonLike,exports.isXmlLike=isXmlLike,exports.isFormUrlEncoded=isFormUrlEncoded,exports.isMultipartFormData=isMultipartFormData,exports.urlFormEncodePayload=urlFormEncodePayload,exports.serializeQueryParameter=serializeQueryParameter,exports.serializeParameterValueWithMime=serializeParameterValueWithMime,exports.serializeParameterValue=serializeParameterValue,exports.langFromMime=langFromMime,exports.isNamedDefinition=isNamedDefinition,exports.getDefinitionName=getDefinitionName,exports.humanizeNumberRange=humanizeNumberRange,exports.humanizeConstraints=humanizeConstraints,exports.sortByRequired=sortByRequired,exports.sortByDeprecated=sortByDeprecated,exports.mergeParams=mergeParams,exports.normalizeServers=normalizeServers,exports.isRedocExtension=isRedocExtension,exports.extractExtensions=extractExtensions,exports.pluralizeType=pluralizeType,exports.getContentWithLegacyExamples=getContentWithLegacyExamples;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"),string_1=require("./string");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}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}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(e["x-complex"])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 isXmlLike(e){return-1!==(null==e?void 0:e.search(/xml/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(0,string_1.tryDecodeURIComponent)(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"}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 sortByDeprecated(e){return e.sort(((e,r)=>Number(e.deprecated)-Number(r.deprecated)))}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}))}const shortenHTTPVerb=e=>({delete:"del",options:"opts"}[e]||e);function isRedocExtension(e){return e in{"x-circular-ref":!0,"x-complex":!0,"x-parentRefs":!0,"x-refsStack":!0,"x-codeSamples":!0,"x-displayName":!0,"x-examples":!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-hideReplay":!0,"x-feedback":!0,"x-badges":!0,"x-assertionType":!0,"x-rbac":!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;
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.shortenHTTPVerb=void 0,exports.isStatusCode=isStatusCode,exports.getStatusCodeType=getStatusCodeType,exports.isOperationName=isOperationName,exports.getOperationName=getOperationName,exports.getOperationId=getOperationId,exports.detectType=detectType,exports.isPrimitiveType=isPrimitiveType,exports.isJsonLike=isJsonLike,exports.isXmlLike=isXmlLike,exports.isFormUrlEncoded=isFormUrlEncoded,exports.isMultipartFormData=isMultipartFormData,exports.urlFormEncodePayload=urlFormEncodePayload,exports.serializeQueryParameter=serializeQueryParameter,exports.serializeParameterValueWithMime=serializeParameterValueWithMime,exports.serializeParameterValue=serializeParameterValue,exports.langFromMime=langFromMime,exports.isNamedDefinition=isNamedDefinition,exports.getDefinitionName=getDefinitionName,exports.humanizeNumberRange=humanizeNumberRange,exports.humanizeConstraints=humanizeConstraints,exports.sortByRequired=sortByRequired,exports.sortByDeprecated=sortByDeprecated,exports.mergeParams=mergeParams,exports.normalizeServers=normalizeServers,exports.isRedocExtension=isRedocExtension,exports.extractExtensions=extractExtensions,exports.pluralizeType=pluralizeType,exports.getContentWithLegacyExamples=getContentWithLegacyExamples;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"),string_1=require("./string"),replaceVariables_1=require("./replaceVariables");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}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}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(e["x-complex"])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 isXmlLike(e){return-1!==(null==e?void 0:e.search(/xml/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(0,string_1.tryDecodeURIComponent)(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:a=!0}=r[t]||{};switch(n){case"form":return serializeFormValue(t,a,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 a="";"label"===r?a=".":"matrix"===r&&(a=";");const o="__redoc_param_name__";return url_template_1.default.parse(`{${a}${o}${n}}`).expand({[o]: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:a}=e;if(a)switch(e.in){case"path":case"header":return serializeParameterValueWithMime(r,a);case"cookie":case"query":return`${t}=${serializeParameterValueWithMime(r,a)}`;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"}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,a="number"==typeof e.exclusiveMinimum||e.exclusiveMinimum,o="number"==typeof e.exclusiveMaximum||e.exclusiveMaximum;return void 0!==i&&void 0!==n?`${a?"( ":"[ "}${i} .. ${n}${o?" )":" ]"}`:void 0!==n?`${o?"< ":"<= "}${n}`:void 0!==i?`${a?"> ":">= "}${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 a=humanizeMultipleOfConstraint(e.multipleOf);void 0!==a&&r.push(a);const o=humanizeNumberRange(e);return void 0!==o&&r.push(o),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 sortByDeprecated(e){return e.sort(((e,r)=>Number(e.deprecated)-Number(r.deprecated)))}function mergeParams(e,r=[],t=[],{pathPointer:i,operationPointer:n}){const a={};t.forEach((r=>{({resolved:r}=e.deref(r)),a[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)),!a[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=>{const r=(0,replaceVariables_1.replaceVariables)(e);return Object.assign(Object.assign({},e),{url:(i=r,(0,helpers_1.resolveUrl)(t,i)),description:e.description||""});var i}))}const shortenHTTPVerb=e=>({delete:"del",options:"opts"}[e]||e);function isRedocExtension(e){return e in{"x-circular-ref":!0,"x-complex":!0,"x-parentRefs":!0,"x-refsStack":!0,"x-codeSamples":!0,"x-displayName":!0,"x-examples":!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-hideReplay":!0,"x-feedback":!0,"x-badges":!0,"x-assertionType":!0,"x-rbac":!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;
|
|
2
2
|
//# sourceMappingURL=openapi.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare function replaceVariables(server:
|
|
1
|
+
import type { OpenAPIServerWithVariables } from '../types';
|
|
2
|
+
export declare function replaceVariables(server: OpenAPIServerWithVariables): string;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";function
|
|
1
|
+
"use strict";function resolveStringUrl(e,r){return r?e.replace(/\{([^}]+)\}/g,((e,l)=>{var t,n;return null!==(n=null===(t=r[l])||void 0===t?void 0:t.default)&&void 0!==n?n:`{${l}}`})):e}function resolveObjectUrl(e,r){var l,t;const[n]=Object.keys(e);return null!==(t=null===(l=null==r?void 0:r[n])||void 0===l?void 0:l.default)&&void 0!==t?t:""}function replaceVariables(e){const{url:r,variables:l}=e;return"string"==typeof r?resolveStringUrl(r,l):resolveObjectUrl(r,l)}Object.defineProperty(exports,"__esModule",{value:!0}),exports.replaceVariables=replaceVariables;
|
|
2
2
|
//# sourceMappingURL=replaceVariables.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as _jsxs,jsx as _jsx,Fragment as _Fragment}from"react/jsx-runtime";import{ExampleValue,FieldLabel}from"../common";import{tryDecodeURIComponent,normalizeText,serializeParameterValue}from"../../utils";import{ExampleWrap,ExamplesList,ExampleSummary
|
|
1
|
+
import{jsxs as _jsxs,jsx as _jsx,Fragment as _Fragment}from"react/jsx-runtime";import{ExampleValue,FieldLabel}from"../common";import{tryDecodeURIComponent,normalizeText,serializeParameterValue}from"../../utils";import{ExampleWrap,ExamplesList,ExampleSummary}from"./styled";import{useTranslate}from"../../hooks";import{Markdown}from"../Markdown";export function Examples({field:e}){const r=useTranslate();return e.examples?_jsxs(_Fragment,{children:[_jsxs(FieldLabel,{children:[" ",r("openapi.examples","Examples"),": "]}),_jsx(ExamplesList,{children:Object.entries(e.examples).map((([r,a])=>{const m=normalizeText(a.description);return _jsxs(ExampleWrap,{children:[_jsxs(ExampleSummary,{children:[normalizeText(a.summary)||r," "]}),m&&_jsx(Markdown,{source:m}),_jsx(ExampleValue,{children:getSerializedValue(e,a.value)})]},r)}))})]}):null}export function getSerializedValue(e,r){return e.in?tryDecodeURIComponent(serializeParameterValue(e,r)):r}
|
|
2
2
|
//# sourceMappingURL=Examples.js.map
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
export declare const DescriptionEnumsBlock: import("styled-components").StyledComponent<"main", any, import("@redocly/theme").MarkdownProps, never>;
|
|
2
2
|
export declare const TypeWrapper: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
3
|
-
export declare const ExampleDescription: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
4
3
|
export declare const ExampleSummary: import("styled-components").StyledComponent<"label", any, {}, never>;
|
|
5
4
|
export declare const ExampleWrap: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
6
5
|
export declare const ExamplesList: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
@@ -4,7 +4,7 @@ import styled from"styled-components";import{Markdown as MarkdownWrapper}from"@r
|
|
|
4
4
|
}
|
|
5
5
|
`;export const TypeWrapper=styled.div`
|
|
6
6
|
line-height: 20px;
|
|
7
|
-
`;export const
|
|
7
|
+
`;export const ExampleSummary=styled.label`
|
|
8
8
|
display: block;
|
|
9
9
|
font-size: inherit;
|
|
10
10
|
margin-bottom: 0.2em;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Unstable_ExternalCodeSample } from '../../services';
|
|
2
2
|
import type { OperationModel } from '../../models';
|
|
3
3
|
import type { OpenAPIXCodeSample } from '../../types';
|
|
4
|
-
export declare function useCodeSamples({ payload, isWebhook, definitionSamples, pointer, }: OperationModel): {
|
|
4
|
+
export declare function useCodeSamples({ payload, isWebhook, definitionSamples, pointer, envVariables, }: OperationModel): {
|
|
5
5
|
samples: Array<{
|
|
6
6
|
key: string;
|
|
7
7
|
title: string;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{useAtomValue}from"jotai";import{getCodeSample}from"../../services";import{globalStoreAtom}from"../../jotai/store";import{operationStore}from"../../jotai/operation";import{environmentAtom,getLangKey,languageAtom,activeMimeNameAtom}from"../../jotai/app";import{useTranslate}from"../../hooks";export function useCodeSamples({payload:e,isWebhook:a,definitionSamples:t,pointer:o}){var l,
|
|
1
|
+
import{useAtomValue}from"jotai";import{getCodeSample}from"../../services";import{globalStoreAtom}from"../../jotai/store";import{operationStore}from"../../jotai/operation";import{environmentAtom,getLangKey,languageAtom,activeMimeNameAtom}from"../../jotai/app";import{useTranslate}from"../../hooks";export function useCodeSamples({payload:e,isWebhook:a,definitionSamples:t,pointer:o,envVariables:n}){var l,s;const{parser:r,options:{codeSamples:i,generatedSamplesMaxDepth:g}}=useAtomValue(globalStoreAtom),m=useAtomValue(activeMimeNameAtom),p=useAtomValue(operationStore(o)),{languages:u}=useAtomValue(languageAtom),[c]=useAtomValue(environmentAtom),d=useTranslate(),v=new Map(null==u?void 0:u.map((({key:e,order:a})=>[e,a]))),b=applyEnvironments(t.filter((e=>v.has(getLangKey(e)))),n,c),f=new Set(b.map(getLangKey));let j=[];if(!a){j=createCodeSamples((null===(l=i.languages)||void 0===l?void 0:l.filter((({lang:e,label:a})=>"Payload"!==e&&!f.has(getLangKey({lang:e,label:a})))))||[],i,r.definition,g,p,c,d,m)}const y=[...b,...j],A=null===(s=null==u?void 0:u.find((({lang:a})=>a===(null==e?void 0:e.lang))))||void 0===s?void 0:s.title,O=e&&getLangKey({label:A,lang:e.lang});e&&O&&v.has(O)&&y.push(Object.assign(Object.assign({},e),{label:A,order:v.get(O)}));const h=y.map((e=>{var a;const t=null!==(a=e.label)&&void 0!==a?a:e.lang;return Object.assign({key:getLangKey(e),title:t,order:"number"==typeof v.get(t.toLowerCase())?v.get(t.toLowerCase()):9999},e)})).sort(((e,a)=>e.order-a.order));return{samples:h}}function createCodeSamples(e,{skipOptionalParameters:a,withOAuth2Call:t},o,n,l,s,r,i){return e.map((({lang:e,label:g,options:m})=>({lang:e,label:g,get:g=>getCodeSample(Object.assign(Object.assign({},g),{lang:e,options:Object.assign(Object.assign({},m),{skipOptionalParameters:a,withOAuth2Call:t,spec:o,generatedPayloadSamplesMaxDepth:n,store:l,activeMimeName:i}),environment:s,translate:r}))})))}function applyEnvironments(e,a,t){var o;if(!a||!e.length)return e;const n=null==t?void 0:t.server;let l=Object.assign({},a.values||{});return n&&(null===(o=a.serverValues)||void 0===o?void 0:o[n])&&(l=Object.assign(Object.assign({},l),a.serverValues[n])),0===Object.keys(l).length?e:e.map((e=>{const a=Object.assign({},e);return"source"in a&&"string"==typeof a.source&&(a.source=a.source.replace(/\{\{([^}]+)\}\}/g,((e,a)=>void 0!==l[a]?l[a]:e))),a}))}
|
|
2
2
|
//# sourceMappingURL=useCodeSamples.js.map
|
|
@@ -9,5 +9,6 @@ export interface ExampleSwitchOptions {
|
|
|
9
9
|
export interface ExampleSwitchProps extends ExampleSwitchOptions {
|
|
10
10
|
examples: ExampleModelsMap;
|
|
11
11
|
onChange: (key: string) => void;
|
|
12
|
+
className?: string;
|
|
12
13
|
}
|
|
13
|
-
export declare const ExampleSwitch: ({ exampleKey, examples, onChange, }: ExampleSwitchProps) => ReactElement | null;
|
|
14
|
+
export declare const ExampleSwitch: ({ exampleKey, examples, onChange, className, }: ExampleSwitchProps) => ReactElement | null;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as _jsx}from"react/jsx-runtime";import{useState,useEffect}from"react";import{MimeLabel,Container,Select}from"../common";import{SelectOrLabel}from"../SelectOrLabel";import{normalizeText}from"../../utils";import{useOtelTelemetry}from"../../hooks";export const ExampleSwitch=({exampleKey:e,examples:t,onChange:l})=>{var
|
|
1
|
+
import{jsx as _jsx}from"react/jsx-runtime";import{useState,useEffect}from"react";import{MimeLabel,Container,Select}from"../common";import{SelectOrLabel}from"../SelectOrLabel";import{normalizeText}from"../../utils";import{useOtelTelemetry}from"../../hooks";export const ExampleSwitch=({exampleKey:e,examples:t,onChange:l,className:a})=>{var m;const r=useOtelTelemetry(),o=Object.keys(t),s=e?o.indexOf(e):0,[i,n]=useState(s>-1?s:0);useEffect((()=>n(s>-1?s:0)),[e,s]);const c=o.map(((e,l)=>({value:normalizeText(t[e].summary)||e,idx:l})));return c.length<2?null:_jsx(Container,{"data-testid":"example-switch",className:a,children:_jsx(SelectOrLabel,{Select:Select,Label:MimeLabel,variant:"dark",fullWidth:!0,options:c,value:null===(m=c[i])||void 0===m?void 0:m.value,onChange:({idx:e})=>{r.send("openapi_docs.examples_switcher.clicked",{example:o[e],number_of_examples:o.length}),n(e),l(o[e])}})})};
|
|
2
2
|
//# sourceMappingURL=ExampleSwitch.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import{useMemo,useCallback}from"react";import{Dropdown,DropdownMenu}from"@redocly/theme";import{useAtom}from"jotai";import{HttpVerb}from"../common";import{PathWrapper,Path,StyledCopyButton,StyledDropdownMenuItem}from"./styled";import{PanelItem}from"../PanelItem";import{joinWithSeparator}from"../../services";import{
|
|
1
|
+
import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import{useMemo,useCallback}from"react";import{Dropdown,DropdownMenu}from"@redocly/theme";import{useAtom}from"jotai";import{HttpVerb}from"../common";import{PathWrapper,Path,StyledCopyButton,StyledDropdownMenuItem}from"./styled";import{PanelItem}from"../PanelItem";import{joinWithSeparator}from"../../services";import{environmentAtom}from"../../jotai/app";import{useActiveWithFallback,useOtelTelemetry}from"../../hooks";import{getServerEnvName}from"../../utils/environments";export const ServerListDropdown=({operation:e,className:r})=>{const t=useOtelTelemetry(),[[o],s]=useAtom(environmentAtom),n=useActiveWithFallback(e.servers.map((e=>Object.assign(Object.assign({},e),{key:e.url}))),o.server),a=useCallback((e=>{e.stopPropagation()}),[]),i=useCallback((r=>()=>{1!==e.servers.length&&(s({environment:getServerEnvName(r)}),t.send("openapi_docs.switch_servers.clicked",{server:getServerEnvName(r)}))}),[e.servers.length,s,t]),m=useMemo((()=>e.servers.map((r=>{const t=joinWithSeparator(r.url,e.path);return _jsx(StyledDropdownMenuItem,{onAction:i(r),children:_jsx(PanelItem,{header:r.description,title:t,actions:[_jsx(StyledCopyButton,{data:t,toasterPlacement:"left",onCopyClick:a},t)],active:r.url===n,withCheckmark:!0})},t)}))),[e.servers,e.path,i,a,n]);return _jsx(Dropdown,{className:r,trigger:_jsxs(PathWrapper,{variant:"ghost",children:[_jsx(HttpVerb,{color:e.httpVerb,children:e.httpVerb}),_jsx(Path,{children:e.path})]}),withArrow:!0,children:_jsx(DropdownMenu,{children:m})})};
|
|
2
2
|
//# sourceMappingURL=ServerListDropdown.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export declare function useOtelTelemetry(): {
|
|
2
|
-
send(action: "error" | "page.viewed" | "search.ai.query" | "search.query" | "search.result.clicked" | "openapi_docs.viewed" | "openapi_docs.performance_metrics" | "openapi_docs.download_definition.clicked" | "openapi_docs.select_language.clicked" | "openapi_docs.expand_collapse_all.clicked" | "openapi_docs.copy_code_snippet.clicked" | "openapi_docs.switch_servers.clicked" | "openapi_docs.examples_switcher.clicked" | "openapi_docs.try_it.opened" | "asyncapi_docs.performance_metrics" | "asyncapi_docs.viewed" | "asyncapi_docs.switch_message.clicked" | "asyncapi_docs.switch_example.clicked" | "asyncapi_docs.message.clicked", data: unknown): void;
|
|
2
|
+
send(action: "error" | "page.viewed" | "search.ai.query" | "search.query" | "feedback.sent" | "search.result.clicked" | "openapi_docs.viewed" | "openapi_docs.performance_metrics" | "openapi_docs.download_definition.clicked" | "openapi_docs.select_language.clicked" | "openapi_docs.expand_collapse_all.clicked" | "openapi_docs.copy_code_snippet.clicked" | "openapi_docs.switch_servers.clicked" | "openapi_docs.examples_switcher.clicked" | "openapi_docs.try_it.opened" | "asyncapi_docs.performance_metrics" | "asyncapi_docs.viewed" | "asyncapi_docs.switch_message.clicked" | "asyncapi_docs.switch_example.clicked" | "asyncapi_docs.message.clicked", data: unknown): void;
|
|
3
3
|
};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{configure,
|
|
1
|
+
import{configure,removeLeadingSlash}from"@redocly/theme";import{REDOCLY_TEAMS_RBAC}from"@redocly/config";import{extractExtensions,getOperationId,getOperationName,getStatusCodeType,getValueFromMdParsedExtension,isStatusCode,JsonPointer,mergeParams,normalizeServers,sortByDeprecated,sortByRequired,updateOperationWithRequestValues,updateParametersWithUserValues}from"../utils";import{getCallback}from"./callback";import{getField}from"./field";import{getRequestBody}from"./request";import{getSecurity}from"./security";import{getResponse}from"./response";import{getHref}from"../services/menu/operation";export function isPayloadSample(e){return"Payload"===e.lang&&"requestBodyContent"in e}export function getOperation(e,r,t,o,s,a,i){var n,l,p;const d=r.isWebhook,u={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:d,isCallback:Boolean(null==a?void 0:a.isCallback),isEvent:(null==a?void 0:a.isCallback)||d,name:getOperationName(r),defaultExampleName:r.defaultSampleName,[REDOCLY_TEAMS_RBAC]:r[REDOCLY_TEAMS_RBAC]||(null==t?void 0:t[REDOCLY_TEAMS_RBAC]),type:"operation",callbackId:null==a?void 0:a.id,href:s,get callbacks(){return Object.keys(r.callbacks||[]).map((a=>{var n;return getCallback(e,a,null===(n=r.callbacks)||void 0===n?void 0:n[a],u.pointer,o,s,t,i)}))},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:u.isEvent,operation:u})))},get parameters(){return processParameters(e,r,u,o,f)}};if(null==a?void 0:a.isCallback)u.security=getSecurity(r.security,e),u.servers=normalizeServers("",r.servers||r.pathServers||[]),u.id=removeLeadingSlash(s);else{u.id=getOperationId(r,t),u.href=u.href||getHref(u),u.security=getSecurity(r.security||e.definition.security,e);const s=r.servers||((null===(n=r.pathServers)||void 0===n?void 0:n.length)?r.pathServers:null)||e.definition.servers||[];u.servers=normalizeServers(e.definitionUrl,mergeInMockServer(s,o.mockServer))}o.showExtensions&&(u.extensions=extractExtensions(r,o.showExtensions)),u.requestBody=r.requestBody?getRequestBody({parser:e,infoOrRef:r.requestBody,options:o,operation:u,isEvent:u.isEvent}):void 0;const c=null===(l=u.requestBody)||void 0===l?void 0:l.content;u.payload={lang:"Payload",source:"",requestBodyContent:(null==c?void 0:c.hasSample)?c:void 0},u.definitionSamples=r["x-codeSamples"]||[],u.badges=(null===(p=r["x-badges"])||void 0===p?void 0:p.map((({name:e,color:r,position:t})=>({name:e,color:r||"var(--color-info-base)",position:t||"after"}))))||[],u.hasSamples=(null==c?void 0:c.hasSample)||u.definitionSamples.length>0,u.hideReplay=!0===r["x-hideReplay"];const m={userClaims:i,operation:{operationId:u.operationId,name:u.name,path:u.path,href:u.href,method:u.httpVerb},servers:u.servers},f=(configure(m)||{}).requestValues||{};return updateOperationWithRequestValues(u,f),u}function processParameters(e,r,t,o,s){let a=mergeParams(e,r.pathParameters,r.parameters,{pathPointer:JsonPointer.dirName(t.pointer),operationPointer:t.pointer}).map((({paramOrRef:r,pointer:a})=>{const i=getField(e,r,a,o,{operation:t,type:"request"});return updateParametersWithUserValues(i,s),i}));return o.sortRequiredPropsFirst&&(a=sortByRequired(a)),sortByDeprecated(a)}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
|